From 3d39f2c88a07a14ce53fafccd4fd2cb6b0423b61 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 14:10:20 +0200 Subject: [PATCH 01/66] feat(diffView): add autoFocus setting for diff view tab behavior --- .gitignore | 3 + package.json | 5 + src/integrations/editor/DiffViewProvider.ts | 21 ++- .../editor/__tests__/DiffViewProvider.test.ts | 142 +++++++++--------- 4 files changed, 94 insertions(+), 77 deletions(-) diff --git a/.gitignore b/.gitignore index 1277732969..fbb492c98b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ logs # Vite development .vite-port + +# JetBrains IDEs +.idea \ No newline at end of file diff --git a/package.json b/package.json index b73e3610ea..aca566561d 100644 --- a/package.json +++ b/package.json @@ -313,6 +313,11 @@ "type": "string", "default": "", "description": "%settings.customStoragePath.description%" + }, + "roo-cline.diffView.autoFocus": { + "type": "boolean", + "default": true, + "description": "Automatically focus the diff tab when showing file changes. If false, the diff tab will open in the background." } } } diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 0bf494854a..d3df32a7ba 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -270,6 +270,8 @@ export class DiffViewProvider { throw new Error("No file path set") } const uri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) + // Read user setting for diffView.autoFocus + const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffView.autoFocus", true) // If this diff editor is already open (ie if a previous write file was interrupted) then we should activate that instead of opening a new diff const diffTab = vscode.window.tabGroups.all .flatMap((group) => group.tabs) @@ -280,8 +282,22 @@ export class DiffViewProvider { arePathsEqual(tab.input.modified.fsPath, uri.fsPath), ) if (diffTab && diffTab.input instanceof vscode.TabInputTextDiff) { - const editor = await vscode.window.showTextDocument(diffTab.input.modified) - return editor + // Only focus if autoFocus is true + if (autoFocus) { + const editor = await vscode.window.showTextDocument(diffTab.input.modified) + return editor + } + // Try to find the editor without focusing + const editor = vscode.window.visibleTextEditors.find((ed) => + arePathsEqual(ed.document.uri.fsPath, uri.fsPath), + ) + if (editor) return editor + // Otherwise, open without focusing + await vscode.window.showTextDocument(diffTab.input.modified, { preview: false, preserveFocus: true }) + const newEditor = vscode.window.visibleTextEditors.find((ed) => + arePathsEqual(ed.document.uri.fsPath, uri.fsPath), + ) + if (newEditor) return newEditor } // Open new diff editor return new Promise((resolve, reject) => { @@ -300,6 +316,7 @@ export class DiffViewProvider { }), uri, `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)`, + { viewColumn: vscode.ViewColumn.Beside, preserveFocus: !autoFocus }, ) // This may happen on very slow machines ie project idx setTimeout(() => { diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index 8de10a6613..a66495c5da 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -1,96 +1,88 @@ -import { DiffViewProvider } from "../DiffViewProvider" +// @jest-environment node import * as vscode from "vscode" +import { DiffViewProvider } from "../DiffViewProvider" -// Mock vscode jest.mock("vscode", () => ({ + ...jest.requireActual("vscode"), workspace: { - applyEdit: jest.fn(), + getConfiguration: jest.fn(), }, window: { - createTextEditorDecorationType: jest.fn(), + tabGroups: { all: [] }, + visibleTextEditors: [], + onDidChangeActiveTextEditor: jest.fn(), + showTextDocument: jest.fn(), }, - WorkspaceEdit: jest.fn().mockImplementation(() => ({ - replace: jest.fn(), - delete: jest.fn(), - })), - Range: jest.fn(), - Position: jest.fn(), - Selection: jest.fn(), - TextEditorRevealType: { - InCenter: 2, + commands: { + executeCommand: jest.fn(), }, -})) - -// Mock DecorationController -jest.mock("../DecorationController", () => ({ - DecorationController: jest.fn().mockImplementation(() => ({ - setActiveLine: jest.fn(), - updateOverlayAfterLine: jest.fn(), - clear: jest.fn(), - })), + Uri: { + file: jest.requireActual("vscode").Uri.file, + parse: jest.requireActual("vscode").Uri.parse, + }, + ViewColumn: { Beside: 2 }, + TextEditorRevealType: { AtTop: 1, InCenter: 2 }, + Position: jest.requireActual("vscode").Position, + Range: jest.requireActual("vscode").Range, + Selection: jest.requireActual("vscode").Selection, })) describe("DiffViewProvider", () => { - let diffViewProvider: DiffViewProvider - const mockCwd = "/mock/cwd" - let mockWorkspaceEdit: { replace: jest.Mock; delete: jest.Mock } + const cwd = "/mock" + const relPath = "file.txt" + let provider: DiffViewProvider beforeEach(() => { jest.clearAllMocks() - mockWorkspaceEdit = { - replace: jest.fn(), - delete: jest.fn(), - } - ;(vscode.WorkspaceEdit as jest.Mock).mockImplementation(() => mockWorkspaceEdit) - - diffViewProvider = new DiffViewProvider(mockCwd) - // Mock the necessary properties and methods - ;(diffViewProvider as any).relPath = "test.txt" - ;(diffViewProvider as any).activeDiffEditor = { - document: { - uri: { fsPath: `${mockCwd}/test.txt` }, - getText: jest.fn(), - lineCount: 10, - }, - selection: { - active: { line: 0, character: 0 }, - anchor: { line: 0, character: 0 }, - }, - edit: jest.fn().mockResolvedValue(true), - revealRange: jest.fn(), - } - ;(diffViewProvider as any).activeLineController = { setActiveLine: jest.fn(), clear: jest.fn() } - ;(diffViewProvider as any).fadedOverlayController = { updateOverlayAfterLine: jest.fn(), clear: jest.fn() } + provider = new DiffViewProvider(cwd) + provider["relPath"] = relPath + provider["editType"] = "modify" + provider["originalContent"] = "original" }) - describe("update method", () => { - it("should preserve empty last line when original content has one", async () => { - ;(diffViewProvider as any).originalContent = "Original content\n" - await diffViewProvider.update("New content", true) - - expect(mockWorkspaceEdit.replace).toHaveBeenCalledWith( - expect.anything(), - expect.anything(), - "New content\n", - ) - }) - - it("should not add extra newline when accumulated content already ends with one", async () => { - ;(diffViewProvider as any).originalContent = "Original content\n" - await diffViewProvider.update("New content\n", true) - - expect(mockWorkspaceEdit.replace).toHaveBeenCalledWith( - expect.anything(), - expect.anything(), - "New content\n", - ) + it("should pass preserveFocus: false when autoFocus is true", async () => { + ;(vscode.workspace.getConfiguration as jest.Mock).mockReturnValue({ + get: () => true, }) + const executeCommand = vscode.commands.executeCommand as jest.Mock + executeCommand.mockResolvedValue(undefined) + const promise = provider["openDiffEditor"]() + // Simulate editor activation + setTimeout(() => { + const fakeEditor = { document: { uri: { fsPath: "/mock/file.txt" } } } + const cb = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls[0][0] + cb(fakeEditor) + }, 10) + await promise + expect(executeCommand).toHaveBeenCalledWith( + "vscode.diff", + expect.anything(), + expect.anything(), + expect.anything(), + expect.objectContaining({ preserveFocus: false }), + ) + }) - it("should not add newline when original content does not end with one", async () => { - ;(diffViewProvider as any).originalContent = "Original content" - await diffViewProvider.update("New content", true) - - expect(mockWorkspaceEdit.replace).toHaveBeenCalledWith(expect.anything(), expect.anything(), "New content") + it("should pass preserveFocus: true when autoFocus is false", async () => { + ;(vscode.workspace.getConfiguration as jest.Mock).mockReturnValue({ + get: () => false, }) + const executeCommand = vscode.commands.executeCommand as jest.Mock + executeCommand.mockResolvedValue(undefined) + const promise = provider["openDiffEditor"]() + // Simulate editor activation + setTimeout(() => { + const fakeEditor = { document: { uri: { fsPath: "/mock/file.txt" } } } + const cb = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls[0][0] + cb(fakeEditor) + }, 10) + await promise + expect(executeCommand).toHaveBeenCalledWith( + "vscode.diff", + expect.anything(), + expect.anything(), + expect.anything(), + expect.objectContaining({ preserveFocus: true }), + ) }) }) From 53eb305711b02a9ea39a464da57a77add8514d3a Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 15:29:02 +0200 Subject: [PATCH 02/66] feat(diffViewWebUI): add diffViewAutoFocus setting and control --- src/core/webview/webviewMessageHandler.ts | 5 + src/exports/roo-code.d.ts | 2 + src/exports/types.ts | 2 + src/schemas/index.ts | 4 + src/shared/ExtensionMessage.ts | 1 + src/shared/WebviewMessage.ts | 1 + .../settings/DiffSettingsControl.tsx | 94 ++++++++++++++----- .../src/components/settings/SettingsView.tsx | 2 + 8 files changed, 90 insertions(+), 21 deletions(-) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index cee8ec7618..da8a68f2c9 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -46,6 +46,11 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await provider.contextProxy.setValue(key, value) switch (message.type) { + case "diffViewAutoFocus": + const diffViewAutoFocus = message.bool ?? true + await updateGlobalState("diffViewAutoFocus", diffViewAutoFocus) + await provider.postStateToWebview() + break case "webviewDidLaunch": // Load custom modes first const customModes = await provider.customModesManager.getCustomModes() diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts index 386c983cc8..e272c47c7e 100644 --- a/src/exports/roo-code.d.ts +++ b/src/exports/roo-code.d.ts @@ -126,6 +126,7 @@ type ProviderSettings = { reasoningEffort?: ("low" | "medium" | "high") | undefined promptCachingEnabled?: boolean | undefined diffEnabled?: boolean | undefined + diffViewAutoFocus?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -225,6 +226,7 @@ type GlobalSettings = { terminalCompressProgressBar?: boolean | undefined rateLimitSeconds?: number | undefined diffEnabled?: boolean | undefined + diffViewAutoFocus?: boolean | undefined fuzzyMatchThreshold?: number | undefined experiments?: | { diff --git a/src/exports/types.ts b/src/exports/types.ts index 330f9c8c21..67a37216c1 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -127,6 +127,7 @@ type ProviderSettings = { reasoningEffort?: ("low" | "medium" | "high") | undefined promptCachingEnabled?: boolean | undefined diffEnabled?: boolean | undefined + diffViewAutoFocus?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -228,6 +229,7 @@ type GlobalSettings = { terminalCompressProgressBar?: boolean | undefined rateLimitSeconds?: number | undefined diffEnabled?: boolean | undefined + diffViewAutoFocus?: boolean | undefined fuzzyMatchThreshold?: number | undefined experiments?: | { diff --git a/src/schemas/index.ts b/src/schemas/index.ts index c6e34fe395..8fa2c8eb6a 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -431,6 +431,7 @@ export const providerSettingsSchema = z.object({ reasoningEffort: reasoningEffortsSchema.optional(), promptCachingEnabled: z.boolean().optional(), diffEnabled: z.boolean().optional(), + diffViewAutoFocus: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), @@ -522,6 +523,7 @@ const providerSettingsRecord: ProviderSettingsRecord = { reasoningEffort: undefined, promptCachingEnabled: undefined, diffEnabled: undefined, + diffViewAutoFocus: undefined, fuzzyMatchThreshold: undefined, modelTemperature: undefined, rateLimitSeconds: undefined, @@ -593,6 +595,7 @@ export const globalSettingsSchema = z.object({ rateLimitSeconds: z.number().optional(), diffEnabled: z.boolean().optional(), + diffViewAutoFocus: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), @@ -671,6 +674,7 @@ const globalSettingsRecord: GlobalSettingsRecord = { rateLimitSeconds: undefined, diffEnabled: undefined, + diffViewAutoFocus: undefined, fuzzyMatchThreshold: undefined, experiments: undefined, diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 0b61dcaa0a..55543ecb42 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -153,6 +153,7 @@ export type ExtensionState = Pick< | "terminalZdotdir" | "terminalCompressProgressBar" | "diffEnabled" + | "diffViewAutoFocus" | "fuzzyMatchThreshold" // | "experiments" // Optional in GlobalSettings, required here. | "language" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index ad922f2c04..8cd5bd3018 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -11,6 +11,7 @@ export type AudioType = "notification" | "celebration" | "progress_loop" export interface WebviewMessage { type: + | "diffViewAutoFocus" | "apiConfiguration" | "deleteMultipleTasksWithIds" | "currentApiConfigName" diff --git a/webview-ui/src/components/settings/DiffSettingsControl.tsx b/webview-ui/src/components/settings/DiffSettingsControl.tsx index 16bc2e7241..fea9a89bcd 100644 --- a/webview-ui/src/components/settings/DiffSettingsControl.tsx +++ b/webview-ui/src/components/settings/DiffSettingsControl.tsx @@ -3,14 +3,69 @@ import { Slider } from "@/components/ui" import { useAppTranslation } from "@/i18n/TranslationContext" import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" +type DiffSettingsControlField = "diffEnabled" | "fuzzyMatchThreshold" | "diffViewAutoFocus" + interface DiffSettingsControlProps { diffEnabled?: boolean + diffViewAutoFocus?: boolean fuzzyMatchThreshold?: number - onChange: (field: "diffEnabled" | "fuzzyMatchThreshold", value: any) => void + onChange: (field: DiffSettingsControlField, value: any) => void +} + +interface DiffCheckAutoFocusControlProps { + diffViewAutoFocus: boolean + onChange: (e: any) => void +} + +interface DiffPrecisionMatchControlProps { + fuzzyMatchThreshold: number + onValueChange: (newValue: number[]) => void +} + +const DiffViewAutoFocusControl: React.FC = ({ diffViewAutoFocus, onChange }) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.diff.autoFocus.label")} + +
+ {t("settings:advanced.diff.autoFocus.description")} +
+
+ ) +} + +const DiffPrecisionMatchControl: React.FC = ({ + fuzzyMatchThreshold, + onValueChange, +}) => { + const { t } = useAppTranslation() + return ( +
+
+ +
+ + {Math.round(fuzzyMatchThreshold * 100)}% +
+
+ {t("settings:advanced.diff.matchPrecision.description")} +
+
+
+ ) } export const DiffSettingsControl: React.FC = ({ diffEnabled = true, + diffViewAutoFocus = true, fuzzyMatchThreshold = 1.0, onChange, }) => { @@ -30,6 +85,13 @@ export const DiffSettingsControl: React.FC = ({ [onChange], ) + const handleDiffViewAutoFocusChange = useCallback( + (e: any) => { + onChange("diffViewAutoFocus", e.target.checked) + }, + [onChange], + ) + return (
@@ -42,26 +104,16 @@ export const DiffSettingsControl: React.FC = ({
{diffEnabled && ( -
-
- -
- - {Math.round(fuzzyMatchThreshold * 100)}% -
-
- {t("settings:advanced.diff.matchPrecision.description")} -
-
-
+ <> + + + )}
) diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index fc36ac5a90..f0886c3956 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -109,6 +109,7 @@ const SettingsView = forwardRef(({ onDone, t browserToolEnabled, browserViewportSize, enableCheckpoints, + diffViewAutoFocus, diffEnabled, experiments, fuzzyMatchThreshold, @@ -231,6 +232,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "ttsSpeed", value: ttsSpeed }) vscode.postMessage({ type: "soundVolume", value: soundVolume }) vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) + vscode.postMessage({ type: "diffViewAutoFocus", bool: diffViewAutoFocus }) vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) From a1831be62b9d54ec0b199e5bf2b41282e5c68ad5 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 16:06:35 +0200 Subject: [PATCH 03/66] feat(diffView): add autoFocus labels and descriptions for multiple languages --- src/i18n/locales/ca/common.json | 4 +++- src/i18n/locales/de/common.json | 4 +++- src/i18n/locales/en/common.json | 4 +++- src/i18n/locales/es/common.json | 4 +++- src/i18n/locales/fr/common.json | 4 +++- src/i18n/locales/hi/common.json | 4 +++- src/i18n/locales/it/common.json | 4 +++- src/i18n/locales/ja/common.json | 4 +++- src/i18n/locales/ko/common.json | 4 +++- src/i18n/locales/pl/common.json | 4 +++- src/i18n/locales/pt-BR/common.json | 4 +++- src/i18n/locales/ru/common.json | 4 +++- src/i18n/locales/tr/common.json | 4 +++- src/i18n/locales/vi/common.json | 4 +++- src/i18n/locales/zh-CN/common.json | 4 +++- src/i18n/locales/zh-TW/common.json | 4 +++- 16 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 633b90ec3d..368392d97b 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -88,6 +88,8 @@ "prompt_custom_path": "Introdueix una ruta d'emmagatzematge personalitzada per a l'historial de converses o deixa-ho buit per utilitzar la ubicació predeterminada", "path_placeholder": "D:\\RooCodeStorage", "enter_absolute_path": "Introdueix una ruta completa (p. ex. D:\\RooCodeStorage o /home/user/storage)", - "enter_valid_path": "Introdueix una ruta vàlida" + "enter_valid_path": "Introdueix una ruta vàlida", + "diff.autoFocus.label": "Enfoca automàticament la pestanya de diferències en mostrar canvis d'arxius", + "diff.autoFocus.description": "Si està desactivat, la pestanya de diferències s'obrirà en segon pla i no prendrà el focus." } } diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index ceda64bad7..86562a8e90 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Was soll Roo tun?", - "task_placeholder": "Gib deine Aufgabe hier ein" + "task_placeholder": "Gib deine Aufgabe hier ein", + "diff.autoFocus.label": "Diff-Tab beim Anzeigen von Dateiänderungen automatisch fokussieren", + "diff.autoFocus.description": "Wenn deaktiviert, wird der Diff-Tab im Hintergrund geöffnet und stiehlt nicht den Fokus." } } diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index ecd5a4c413..0405e83db3 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "What should Roo do?", - "task_placeholder": "Type your task here" + "task_placeholder": "Type your task here", + "diff.autoFocus.label": "Automatically focus the diff tab when showing file changes", + "diff.autoFocus.description": "If disabled, the diff tab will open in the background instead of stealing focus." } } diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index 2bfb43055a..dd4330e74b 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "¿Qué debe hacer Roo?", - "task_placeholder": "Escribe tu tarea aquí" + "task_placeholder": "Escribe tu tarea aquí", + "diff.autoFocus.label": "Enfocar automáticamente la pestaña de diferencias al mostrar cambios de archivos", + "diff.autoFocus.description": "Si está desactivado, la pestaña de diferencias se abrirá en segundo plano y no tomará el foco." } } diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 7399432c6a..979b743875 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Que doit faire Roo ?", - "task_placeholder": "Écris ta tâche ici" + "task_placeholder": "Écris ta tâche ici", + "diff.autoFocus.label": "Mettre automatiquement le focus sur l’onglet de comparaison lors de l’affichage des modifications de fichiers", + "diff.autoFocus.description": "Si désactivé, l’onglet de comparaison s’ouvrira en arrière-plan sans prendre le focus." } } diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index bf5421eff8..c75bb5f520 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Roo को क्या करना है?", - "task_placeholder": "अपना कार्य यहाँ लिखें" + "task_placeholder": "अपना कार्य यहाँ लिखें", + "diff.autoFocus.label": "फ़ाइल परिवर्तनों को दिखाते समय डिफ टैब को स्वचालित रूप से फोकस करें", + "diff.autoFocus.description": "यदि अक्षम है, तो डिफ टैब पृष्ठभूमि में खुलेगा और फोकस नहीं लेगा।" } } diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 69e2c2123f..4747ab03df 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Cosa deve fare Roo?", - "task_placeholder": "Scrivi il tuo compito qui" + "task_placeholder": "Scrivi il tuo compito qui", + "diff.autoFocus.label": "Metti automaticamente a fuoco la scheda diff quando vengono mostrati cambiamenti ai file", + "diff.autoFocus.description": "Se disabilitato, la scheda diff si aprirà in background senza prendere il focus." } } diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index 6f40c8e03d..bd706f1771 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Rooにどんなことをさせますか?", - "task_placeholder": "タスクをここに入力してください" + "task_placeholder": "タスクをここに入力してください", + "diff.autoFocus.label": "ファイル変更を表示する際に差分タブを自動的にフォーカスする", + "diff.autoFocus.description": "無効にすると、差分タブはバックグラウンドで開き、フォーカスを奪いません。" } } diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index 9026315da2..da49b5e05c 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Roo에게 무엇을 시킬까요?", - "task_placeholder": "여기에 작업을 입력하세요" + "task_placeholder": "여기에 작업을 입력하세요", + "diff.autoFocus.label": "파일 변경을 표시할 때 Diff 탭을 자동으로 포커스", + "diff.autoFocus.description": "비활성화하면 Diff 탭이 백그라운드에서 열리고 포커스를 빼앗지 않습니다." } } diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index 49f51cefff..a64d1e92f8 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Co ma zrobić Roo?", - "task_placeholder": "Wpisz swoje zadanie tutaj" + "task_placeholder": "Wpisz swoje zadanie tutaj", + "diff.autoFocus.label": "Automatycznie ustaw fokus na zakładce różnic przy wyświetlaniu zmian w plikach", + "diff.autoFocus.description": "Jeśli wyłączone, zakładka różnic otworzy się w tle i nie przejmie fokusu." } } diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 80112a91ab..11d1d67755 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -88,6 +88,8 @@ "prompt_custom_path": "Digite o caminho de armazenamento personalizado para o histórico de conversas, deixe em branco para usar o local padrão", "path_placeholder": "D:\\RooCodeStorage", "enter_absolute_path": "Por favor, digite um caminho absoluto (ex: D:\\RooCodeStorage ou /home/user/storage)", - "enter_valid_path": "Por favor, digite um caminho válido" + "enter_valid_path": "Por favor, digite um caminho válido", + "diff.autoFocus.label": "Focar automaticamente a aba de diferenças ao mostrar alterações de arquivos", + "diff.autoFocus.description": "Se desativado, a aba de diferenças será aberta em segundo plano e não tomará o foco." } } diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index 80829e138c..7a317a4a4e 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Что должен сделать Roo?", - "task_placeholder": "Введите вашу задачу здесь" + "task_placeholder": "Введите вашу задачу здесь", + "diff.autoFocus.label": "Автоматически фокусировать вкладку сравнения при показе изменений файлов", + "diff.autoFocus.description": "Если отключено, вкладка сравнения откроется в фоновом режиме и не будет забирать фокус." } } diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 61b8e12fb5..3d0d5692ec 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Roo ne yapsın?", - "task_placeholder": "Görevini buraya yaz" + "task_placeholder": "Görevini buraya yaz", + "diff.autoFocus.label": "Dosya değişiklikleri gösterildiğinde diff sekmesine otomatik odaklan", + "diff.autoFocus.description": "Devre dışı bırakılırsa, diff sekmesi arka planda açılır ve odağı almaz." } } diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index 8945e9e098..377f1b703b 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "Bạn muốn Roo làm gì?", - "task_placeholder": "Nhập nhiệm vụ của bạn ở đây" + "task_placeholder": "Nhập nhiệm vụ của bạn ở đây", + "diff.autoFocus.label": "Tự động chuyển tiêu điểm sang tab so sánh khi hiển thị thay đổi tệp", + "diff.autoFocus.description": "Nếu tắt, tab so sánh sẽ mở ở chế độ nền và không chiếm tiêu điểm." } } diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 2fc49c9b37..05a1f94354 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "让Roo做什么?", - "task_placeholder": "在这里输入任务" + "task_placeholder": "在这里输入任务", + "diff.autoFocus.label": "在显示文件更改时自动聚焦差异标签页", + "diff.autoFocus.description": "禁用后,差异标签页将在后台打开,不会抢占焦点。" } } diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index a51cfa0e9a..951052ff5e 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -88,6 +88,8 @@ }, "input": { "task_prompt": "讓 Roo 做什麼?", - "task_placeholder": "在這裡輸入工作" + "task_placeholder": "在這裡輸入工作", + "diff.autoFocus.label": "顯示檔案變更時自動聚焦差異分頁", + "diff.autoFocus.description": "若停用,差異分頁將在背景開啟且不會搶奪焦點。" } } From 5ba577d6a96281afe1eabb383beb70ae3fdddc5d Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 16:57:51 +0200 Subject: [PATCH 04/66] refactor(diffView): re-add autoFocus labels and descriptions from multiple languages --- src/i18n/locales/ca/common.json | 4 +--- src/i18n/locales/de/common.json | 4 +--- src/i18n/locales/en/common.json | 4 +--- src/i18n/locales/es/common.json | 4 +--- src/i18n/locales/fr/common.json | 4 +--- src/i18n/locales/it/common.json | 4 +--- src/i18n/locales/ja/common.json | 4 +--- src/i18n/locales/ko/common.json | 4 +--- src/i18n/locales/pl/common.json | 4 +--- src/i18n/locales/pt-BR/common.json | 4 +--- src/i18n/locales/ru/common.json | 4 +--- src/i18n/locales/tr/common.json | 4 +--- src/i18n/locales/vi/common.json | 4 +--- src/i18n/locales/zh-CN/common.json | 4 +--- src/i18n/locales/zh-TW/common.json | 4 +--- webview-ui/src/i18n/locales/ca/settings.json | 4 ++++ webview-ui/src/i18n/locales/de/settings.json | 4 ++++ webview-ui/src/i18n/locales/en/settings.json | 4 ++++ webview-ui/src/i18n/locales/es/settings.json | 4 ++++ webview-ui/src/i18n/locales/fr/settings.json | 4 ++++ webview-ui/src/i18n/locales/hi/settings.json | 4 ++++ webview-ui/src/i18n/locales/it/settings.json | 4 ++++ webview-ui/src/i18n/locales/ja/settings.json | 4 ++++ webview-ui/src/i18n/locales/ko/settings.json | 4 ++++ webview-ui/src/i18n/locales/pl/settings.json | 4 ++++ webview-ui/src/i18n/locales/pt-BR/settings.json | 4 ++++ webview-ui/src/i18n/locales/ru/settings.json | 4 ++++ webview-ui/src/i18n/locales/tr/settings.json | 4 ++++ webview-ui/src/i18n/locales/vi/settings.json | 4 ++++ webview-ui/src/i18n/locales/zh-CN/settings.json | 4 ++++ webview-ui/src/i18n/locales/zh-TW/settings.json | 4 ++++ 31 files changed, 79 insertions(+), 45 deletions(-) diff --git a/src/i18n/locales/ca/common.json b/src/i18n/locales/ca/common.json index 368392d97b..633b90ec3d 100644 --- a/src/i18n/locales/ca/common.json +++ b/src/i18n/locales/ca/common.json @@ -88,8 +88,6 @@ "prompt_custom_path": "Introdueix una ruta d'emmagatzematge personalitzada per a l'historial de converses o deixa-ho buit per utilitzar la ubicació predeterminada", "path_placeholder": "D:\\RooCodeStorage", "enter_absolute_path": "Introdueix una ruta completa (p. ex. D:\\RooCodeStorage o /home/user/storage)", - "enter_valid_path": "Introdueix una ruta vàlida", - "diff.autoFocus.label": "Enfoca automàticament la pestanya de diferències en mostrar canvis d'arxius", - "diff.autoFocus.description": "Si està desactivat, la pestanya de diferències s'obrirà en segon pla i no prendrà el focus." + "enter_valid_path": "Introdueix una ruta vàlida" } } diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json index 86562a8e90..ceda64bad7 100644 --- a/src/i18n/locales/de/common.json +++ b/src/i18n/locales/de/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Was soll Roo tun?", - "task_placeholder": "Gib deine Aufgabe hier ein", - "diff.autoFocus.label": "Diff-Tab beim Anzeigen von Dateiänderungen automatisch fokussieren", - "diff.autoFocus.description": "Wenn deaktiviert, wird der Diff-Tab im Hintergrund geöffnet und stiehlt nicht den Fokus." + "task_placeholder": "Gib deine Aufgabe hier ein" } } diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index 0405e83db3..ecd5a4c413 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "What should Roo do?", - "task_placeholder": "Type your task here", - "diff.autoFocus.label": "Automatically focus the diff tab when showing file changes", - "diff.autoFocus.description": "If disabled, the diff tab will open in the background instead of stealing focus." + "task_placeholder": "Type your task here" } } diff --git a/src/i18n/locales/es/common.json b/src/i18n/locales/es/common.json index dd4330e74b..2bfb43055a 100644 --- a/src/i18n/locales/es/common.json +++ b/src/i18n/locales/es/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "¿Qué debe hacer Roo?", - "task_placeholder": "Escribe tu tarea aquí", - "diff.autoFocus.label": "Enfocar automáticamente la pestaña de diferencias al mostrar cambios de archivos", - "diff.autoFocus.description": "Si está desactivado, la pestaña de diferencias se abrirá en segundo plano y no tomará el foco." + "task_placeholder": "Escribe tu tarea aquí" } } diff --git a/src/i18n/locales/fr/common.json b/src/i18n/locales/fr/common.json index 979b743875..7399432c6a 100644 --- a/src/i18n/locales/fr/common.json +++ b/src/i18n/locales/fr/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Que doit faire Roo ?", - "task_placeholder": "Écris ta tâche ici", - "diff.autoFocus.label": "Mettre automatiquement le focus sur l’onglet de comparaison lors de l’affichage des modifications de fichiers", - "diff.autoFocus.description": "Si désactivé, l’onglet de comparaison s’ouvrira en arrière-plan sans prendre le focus." + "task_placeholder": "Écris ta tâche ici" } } diff --git a/src/i18n/locales/it/common.json b/src/i18n/locales/it/common.json index 4747ab03df..69e2c2123f 100644 --- a/src/i18n/locales/it/common.json +++ b/src/i18n/locales/it/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Cosa deve fare Roo?", - "task_placeholder": "Scrivi il tuo compito qui", - "diff.autoFocus.label": "Metti automaticamente a fuoco la scheda diff quando vengono mostrati cambiamenti ai file", - "diff.autoFocus.description": "Se disabilitato, la scheda diff si aprirà in background senza prendere il focus." + "task_placeholder": "Scrivi il tuo compito qui" } } diff --git a/src/i18n/locales/ja/common.json b/src/i18n/locales/ja/common.json index bd706f1771..6f40c8e03d 100644 --- a/src/i18n/locales/ja/common.json +++ b/src/i18n/locales/ja/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Rooにどんなことをさせますか?", - "task_placeholder": "タスクをここに入力してください", - "diff.autoFocus.label": "ファイル変更を表示する際に差分タブを自動的にフォーカスする", - "diff.autoFocus.description": "無効にすると、差分タブはバックグラウンドで開き、フォーカスを奪いません。" + "task_placeholder": "タスクをここに入力してください" } } diff --git a/src/i18n/locales/ko/common.json b/src/i18n/locales/ko/common.json index da49b5e05c..9026315da2 100644 --- a/src/i18n/locales/ko/common.json +++ b/src/i18n/locales/ko/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Roo에게 무엇을 시킬까요?", - "task_placeholder": "여기에 작업을 입력하세요", - "diff.autoFocus.label": "파일 변경을 표시할 때 Diff 탭을 자동으로 포커스", - "diff.autoFocus.description": "비활성화하면 Diff 탭이 백그라운드에서 열리고 포커스를 빼앗지 않습니다." + "task_placeholder": "여기에 작업을 입력하세요" } } diff --git a/src/i18n/locales/pl/common.json b/src/i18n/locales/pl/common.json index a64d1e92f8..49f51cefff 100644 --- a/src/i18n/locales/pl/common.json +++ b/src/i18n/locales/pl/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Co ma zrobić Roo?", - "task_placeholder": "Wpisz swoje zadanie tutaj", - "diff.autoFocus.label": "Automatycznie ustaw fokus na zakładce różnic przy wyświetlaniu zmian w plikach", - "diff.autoFocus.description": "Jeśli wyłączone, zakładka różnic otworzy się w tle i nie przejmie fokusu." + "task_placeholder": "Wpisz swoje zadanie tutaj" } } diff --git a/src/i18n/locales/pt-BR/common.json b/src/i18n/locales/pt-BR/common.json index 11d1d67755..80112a91ab 100644 --- a/src/i18n/locales/pt-BR/common.json +++ b/src/i18n/locales/pt-BR/common.json @@ -88,8 +88,6 @@ "prompt_custom_path": "Digite o caminho de armazenamento personalizado para o histórico de conversas, deixe em branco para usar o local padrão", "path_placeholder": "D:\\RooCodeStorage", "enter_absolute_path": "Por favor, digite um caminho absoluto (ex: D:\\RooCodeStorage ou /home/user/storage)", - "enter_valid_path": "Por favor, digite um caminho válido", - "diff.autoFocus.label": "Focar automaticamente a aba de diferenças ao mostrar alterações de arquivos", - "diff.autoFocus.description": "Se desativado, a aba de diferenças será aberta em segundo plano e não tomará o foco." + "enter_valid_path": "Por favor, digite um caminho válido" } } diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json index 7a317a4a4e..80829e138c 100644 --- a/src/i18n/locales/ru/common.json +++ b/src/i18n/locales/ru/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Что должен сделать Roo?", - "task_placeholder": "Введите вашу задачу здесь", - "diff.autoFocus.label": "Автоматически фокусировать вкладку сравнения при показе изменений файлов", - "diff.autoFocus.description": "Если отключено, вкладка сравнения откроется в фоновом режиме и не будет забирать фокус." + "task_placeholder": "Введите вашу задачу здесь" } } diff --git a/src/i18n/locales/tr/common.json b/src/i18n/locales/tr/common.json index 3d0d5692ec..61b8e12fb5 100644 --- a/src/i18n/locales/tr/common.json +++ b/src/i18n/locales/tr/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Roo ne yapsın?", - "task_placeholder": "Görevini buraya yaz", - "diff.autoFocus.label": "Dosya değişiklikleri gösterildiğinde diff sekmesine otomatik odaklan", - "diff.autoFocus.description": "Devre dışı bırakılırsa, diff sekmesi arka planda açılır ve odağı almaz." + "task_placeholder": "Görevini buraya yaz" } } diff --git a/src/i18n/locales/vi/common.json b/src/i18n/locales/vi/common.json index 377f1b703b..8945e9e098 100644 --- a/src/i18n/locales/vi/common.json +++ b/src/i18n/locales/vi/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Bạn muốn Roo làm gì?", - "task_placeholder": "Nhập nhiệm vụ của bạn ở đây", - "diff.autoFocus.label": "Tự động chuyển tiêu điểm sang tab so sánh khi hiển thị thay đổi tệp", - "diff.autoFocus.description": "Nếu tắt, tab so sánh sẽ mở ở chế độ nền và không chiếm tiêu điểm." + "task_placeholder": "Nhập nhiệm vụ của bạn ở đây" } } diff --git a/src/i18n/locales/zh-CN/common.json b/src/i18n/locales/zh-CN/common.json index 05a1f94354..2fc49c9b37 100644 --- a/src/i18n/locales/zh-CN/common.json +++ b/src/i18n/locales/zh-CN/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "让Roo做什么?", - "task_placeholder": "在这里输入任务", - "diff.autoFocus.label": "在显示文件更改时自动聚焦差异标签页", - "diff.autoFocus.description": "禁用后,差异标签页将在后台打开,不会抢占焦点。" + "task_placeholder": "在这里输入任务" } } diff --git a/src/i18n/locales/zh-TW/common.json b/src/i18n/locales/zh-TW/common.json index 951052ff5e..a51cfa0e9a 100644 --- a/src/i18n/locales/zh-TW/common.json +++ b/src/i18n/locales/zh-TW/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "讓 Roo 做什麼?", - "task_placeholder": "在這裡輸入工作", - "diff.autoFocus.label": "顯示檔案變更時自動聚焦差異分頁", - "diff.autoFocus.description": "若停用,差異分頁將在背景開啟且不會搶奪焦點。" + "task_placeholder": "在這裡輸入工作" } } diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 91ed2326c1..f5a77f0697 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Precisió de coincidència", "description": "Aquest control lliscant controla amb quina precisió han de coincidir les seccions de codi en aplicar diffs. Valors més baixos permeten coincidències més flexibles però augmenten el risc de reemplaçaments incorrectes. Utilitzeu valors per sota del 100% amb extrema precaució." + }, + "autoFocus": { + "label": "Enfoca automàticament la pestanya de diferències en mostrar canvis d'arxius", + "description": "Si està desactivat, la pestanya de diferències s'obrirà en segon pla i no prendrà el focus." } } }, diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 3db3f0b4d4..cdc8c08d2a 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Übereinstimmungsgenauigkeit", "description": "Dieser Schieberegler steuert, wie genau Codeabschnitte beim Anwenden von Diffs übereinstimmen müssen. Niedrigere Werte ermöglichen flexiblere Übereinstimmungen, erhöhen aber das Risiko falscher Ersetzungen. Verwende Werte unter 100% mit äußerster Vorsicht." + }, + "autoFocus": { + "label": "Diff-Tab beim Anzeigen von Dateiänderungen automatisch fokussieren", + "description": "Wenn deaktiviert, wird der Diff-Tab im Hintergrund geöffnet und stiehlt nicht den Fokus." } } }, diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index fe58533483..4008638110 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Match precision", "description": "This slider controls how precisely code sections must match when applying diffs. Lower values allow more flexible matching but increase the risk of incorrect replacements. Use values below 100% with extreme caution." + }, + "autoFocus": { + "label": "Automatically focus the diff tab when showing file changes", + "description": "If disabled, the diff tab will open in the background instead of stealing focus." } } }, diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 882f171aba..92f0734a67 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Precisión de coincidencia", "description": "Este control deslizante controla cuán precisamente deben coincidir las secciones de código al aplicar diffs. Valores más bajos permiten coincidencias más flexibles pero aumentan el riesgo de reemplazos incorrectos. Use valores por debajo del 100% con extrema precaución." + }, + "autoFocus": { + "label": "Enfocar automáticamente la pestaña de diferencias al mostrar cambios de archivos", + "description": "Si está desactivado, la pestaña de diferencias se abrirá en segundo plano y no tomará el foco." } } }, diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 00abf194d1..73907e3f7b 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Précision de correspondance", "description": "Ce curseur contrôle la précision avec laquelle les sections de code doivent correspondre lors de l'application des diffs. Des valeurs plus basses permettent des correspondances plus flexibles mais augmentent le risque de remplacements incorrects. Utilisez des valeurs inférieures à 100 % avec une extrême prudence." + }, + "autoFocus": { + "label": "Mettre automatiquement le focus sur l’onglet de comparaison lors de l’affichage des modifications de fichiers", + "description": "Si désactivé, l’onglet de comparaison s’ouvrira en arrière-plan sans prendre le focus." } } }, diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 2d4b527bb6..17a780851b 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "मिलान सटीकता", "description": "यह स्लाइडर नियंत्रित करता है कि diffs लागू करते समय कोड अनुभागों को कितनी सटीकता से मेल खाना चाहिए। निम्न मान अधिक लचीले मिलान की अनुमति देते हैं लेकिन गलत प्रतिस्थापन का जोखिम बढ़ाते हैं। 100% से नीचे के मानों का उपयोग अत्यधिक सावधानी के साथ करें।" + }, + "autoFocus": { + "label": "फ़ाइल परिवर्तनों को दिखाते समय डिफ टैब को स्वचालित रूप से फोकस करें", + "description": "यदि अक्षम है, तो डिफ टैब पृष्ठभूमि में खुलेगा और फोकस नहीं लेगा।" } } }, diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 8b6f068b90..981495d3c5 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Precisione corrispondenza", "description": "Questo cursore controlla quanto precisamente le sezioni di codice devono corrispondere quando si applicano i diff. Valori più bassi consentono corrispondenze più flessibili ma aumentano il rischio di sostituzioni errate. Usa valori inferiori al 100% con estrema cautela." + }, + "autoFocus": { + "label": "Metti automaticamente a fuoco la scheda diff quando vengono mostrati cambiamenti ai file", + "description": "Se disabilitato, la scheda diff si aprirà in background senza prendere il focus." } } }, diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 0eee0902a4..8f1bb6c269 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "マッチ精度", "description": "このスライダーは、diffを適用する際にコードセクションがどれだけ正確に一致する必要があるかを制御します。低い値はより柔軟なマッチングを可能にしますが、誤った置換のリスクが高まります。100%未満の値は細心の注意を払って使用してください。" + }, + "autoFocus": { + "label": "ファイル変更を表示する際に差分タブを自動的にフォーカスする", + "description": "無効にすると、差分タブはバックグラウンドで開き、フォーカスを奪いません。" } } }, diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index db1ed2d3c8..a98f86f41e 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "일치 정확도", "description": "이 슬라이더는 diff를 적용할 때 코드 섹션이 얼마나 정확하게 일치해야 하는지 제어합니다. 낮은 값은 더 유연한 일치를 허용하지만 잘못된 교체 위험이 증가합니다. 100% 미만의 값은 극도로 주의해서 사용하세요." + }, + "autoFocus": { + "label": "파일 변경을 표시할 때 Diff 탭을 자동으로 포커스", + "description": "비활성화하면 Diff 탭이 백그라운드에서 열리고 포커스를 빼앗지 않습니다." } } }, diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index fbc1b375e0..0d03e6812b 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Precyzja dopasowania", "description": "Ten suwak kontroluje, jak dokładnie sekcje kodu muszą pasować podczas stosowania różnic. Niższe wartości umożliwiają bardziej elastyczne dopasowywanie, ale zwiększają ryzyko nieprawidłowych zamian. Używaj wartości poniżej 100% z najwyższą ostrożnością." + }, + "autoFocus": { + "label": "Automatycznie ustaw fokus na zakładce różnic przy wyświetlaniu zmian w plikach", + "description": "Jeśli wyłączone, zakładka różnic otworzy się w tle i nie przejmie fokusu." } } }, diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index d8d683f847..162646da36 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Precisão de correspondência", "description": "Este controle deslizante controla quão precisamente as seções de código devem corresponder ao aplicar diffs. Valores mais baixos permitem correspondências mais flexíveis, mas aumentam o risco de substituições incorretas. Use valores abaixo de 100% com extrema cautela." + }, + "autoFocus": { + "label": "Focar automaticamente a aba de diferenças ao mostrar alterações de arquivos", + "description": "Se desativado, a aba de diferenças será aberta em segundo plano e não tomará o foco." } } }, diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 85e0432e15..96bc3d9e6d 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Точность совпадения", "description": "Этот ползунок управляет точностью совпадения секций кода при применении диффов. Меньшие значения позволяют более гибкое совпадение, но увеличивают риск неверной замены. Используйте значения ниже 100% с осторожностью." + }, + "autoFocus": { + "label": "Автоматически фокусировать вкладку сравнения при показе изменений файлов", + "description": "Если отключено, вкладка сравнения откроется в фоновом режиме и не будет забирать фокус." } } }, diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index ffd586bf02..8b0aa71769 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Eşleşme hassasiyeti", "description": "Bu kaydırıcı, diff'ler uygulanırken kod bölümlerinin ne kadar hassas bir şekilde eşleşmesi gerektiğini kontrol eder. Daha düşük değerler daha esnek eşleşmeye izin verir ancak yanlış değiştirme riskini artırır. %100'ün altındaki değerleri son derece dikkatli kullanın." + }, + "autoFocus": { + "label": "Dosya değişiklikleri gösterildiğinde diff sekmesine otomatik odaklan", + "description": "Devre dışı bırakılırsa, diff sekmesi arka planda açılır ve odağı almaz." } } }, diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 1ef5674335..11c226063d 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "Độ chính xác khớp", "description": "Thanh trượt này kiểm soát mức độ chính xác các phần mã phải khớp khi áp dụng diff. Giá trị thấp hơn cho phép khớp linh hoạt hơn nhưng tăng nguy cơ thay thế không chính xác. Sử dụng giá trị dưới 100% với sự thận trọng cao." + }, + "autoFocus": { + "label": "Tự động chuyển tiêu điểm sang tab so sánh khi hiển thị thay đổi tệp", + "description": "Nếu tắt, tab so sánh sẽ mở ở chế độ nền và không chiếm tiêu điểm." } } }, diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 7ecfa8024c..a58a3890e6 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "匹配精度", "description": "控制代码匹配的精确程度。数值越低匹配越宽松(容错率高但风险大),建议保持100%以确保安全。" + }, + "autoFocus": { + "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 32b9f70976..5a5d435a46 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -371,6 +371,10 @@ "matchPrecision": { "label": "比對精確度", "description": "此滑桿控制套用差異時程式碼區段的比對精確度。較低的數值允許更彈性的比對,但也會增加錯誤取代的風險。使用低於 100% 的數值時請特別謹慎。" + }, + "autoFocus": { + "label": "顯示檔案變更時自動聚焦差異分頁", + "description": "若停用,差異分頁將在背景開啟且不會搶奪焦點。" } } }, From 742cc69597808fda1f98107efba9c82468823ee0 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 20:07:37 +0200 Subject: [PATCH 05/66] feat(diffView): implement diffViewAutoFocus setting and update related components --- package-lock.json | 1 - package.json | 2 +- src/core/webview/ClineProvider.ts | 3 +++ src/core/webview/webviewMessageHandler.ts | 4 ++++ webview-ui/src/components/settings/ApiOptions.tsx | 1 + .../src/components/settings/SettingsView.tsx | 15 ++++++++++++++- webview-ui/src/context/ExtensionStateContext.tsx | 2 ++ 7 files changed, 25 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca5891871d..4910afc7d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17049,7 +17049,6 @@ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", diff --git a/package.json b/package.json index aca566561d..ee034bb84a 100644 --- a/package.json +++ b/package.json @@ -314,7 +314,7 @@ "default": "", "description": "%settings.customStoragePath.description%" }, - "roo-cline.diffView.autoFocus": { + "roo-cline.diffViewAutoFocus": { "type": "boolean", "default": true, "description": "Automatically focus the diff tab when showing file changes. If false, the diff tab will open in the background." diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index ca9b63d4ae..3fce7e3d6b 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1153,6 +1153,7 @@ export class ClineProvider extends EventEmitter implements ttsEnabled, ttsSpeed, diffEnabled, + diffViewAutoFocus, enableCheckpoints, taskHistory, soundVolume, @@ -1231,6 +1232,7 @@ export class ClineProvider extends EventEmitter implements ttsEnabled: ttsEnabled ?? false, ttsSpeed: ttsSpeed ?? 1.0, diffEnabled: diffEnabled ?? true, + diffViewAutoFocus: diffViewAutoFocus ?? true, enableCheckpoints: enableCheckpoints ?? true, shouldShowAnnouncement: telemetrySetting !== "unset" && lastShownAnnouncementId !== this.latestAnnouncementId, @@ -1328,6 +1330,7 @@ export class ClineProvider extends EventEmitter implements ttsEnabled: stateValues.ttsEnabled ?? false, ttsSpeed: stateValues.ttsSpeed ?? 1.0, diffEnabled: stateValues.diffEnabled ?? true, + diffViewAutoFocus: stateValues.diffViewAutoFocus ?? false, enableCheckpoints: stateValues.enableCheckpoints ?? true, soundVolume: stateValues.soundVolume, browserViewportSize: stateValues.browserViewportSize ?? "900x600", diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index da8a68f2c9..2bc82edebb 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -48,6 +48,10 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We switch (message.type) { case "diffViewAutoFocus": const diffViewAutoFocus = message.bool ?? true + await provider.context.globalState.update("diffViewAutoFocus", diffViewAutoFocus) + // Also update workspace settings + const currentConfig = vscode.workspace.getConfiguration("roo-cline") + await currentConfig.update("diffViewAutoFocus", diffViewAutoFocus, vscode.ConfigurationTarget.Global) await updateGlobalState("diffViewAutoFocus", diffViewAutoFocus) await provider.postStateToWebview() break diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index 12b66ae0d7..7e1f58ed53 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -1852,6 +1852,7 @@ const ApiOptions = ({ <> setApiConfigurationField(field, value)} /> diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index f0886c3956..d49ad28415 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -181,8 +181,21 @@ const SettingsView = forwardRef(({ onDone, t return prevState } + const newState: ExtensionStateContextType = { + ...prevState, + apiConfiguration: { ...prevState.apiConfiguration, [field]: value }, + } + // Update the field in root state for sync + if (field === "diffEnabled") { + newState.diffEnabled = value as boolean // type is boolean + } else if (field === "diffViewAutoFocus") { + newState.diffViewAutoFocus = value as boolean // type is boolean + } else if (field === "fuzzyMatchThreshold") { + newState.fuzzyMatchThreshold = value as number // type is number + } + setChangeDetected(true) - return { ...prevState, apiConfiguration: { ...prevState.apiConfiguration, [field]: value } } + return newState }) }, [], diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index f3a1f69969..a78eed99a4 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -48,6 +48,7 @@ export interface ExtensionStateContextType extends ExtensionState { setTtsEnabled: (value: boolean) => void setTtsSpeed: (value: number) => void setDiffEnabled: (value: boolean) => void + setDiffViewAutoFocus: (value: boolean) => void setEnableCheckpoints: (value: boolean) => void setBrowserViewportSize: (value: string) => void setFuzzyMatchThreshold: (value: number) => void @@ -291,6 +292,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setTtsEnabled: (value) => setState((prevState) => ({ ...prevState, ttsEnabled: value })), setTtsSpeed: (value) => setState((prevState) => ({ ...prevState, ttsSpeed: value })), setDiffEnabled: (value) => setState((prevState) => ({ ...prevState, diffEnabled: value })), + setDiffViewAutoFocus: (value) => setState((prevState) => ({ ...prevState, diffViewAutoFocus: value })), setEnableCheckpoints: (value) => setState((prevState) => ({ ...prevState, enableCheckpoints: value })), setBrowserViewportSize: (value: string) => setState((prevState) => ({ ...prevState, browserViewportSize: value })), From 629fbad22bfecf1e02a2625d692109712f7e0872 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 20:33:01 +0200 Subject: [PATCH 06/66] feat(diffView): update diff editor behavior to use rightUri and enhance autoFocus handling --- src/integrations/editor/DiffViewProvider.ts | 41 ++++++++++++--------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index d3df32a7ba..a3255053d0 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -1,4 +1,5 @@ import * as vscode from "vscode" +import { TextDocumentShowOptions, ViewColumn } from "vscode" import * as path from "path" import * as fs from "fs/promises" import { createDirectoriesForFile } from "../../utils/fs" @@ -269,9 +270,10 @@ export class DiffViewProvider { if (!this.relPath) { throw new Error("No file path set") } - const uri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) + // right uri = the file path + const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) // Read user setting for diffView.autoFocus - const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffView.autoFocus", true) + const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) // If this diff editor is already open (ie if a previous write file was interrupted) then we should activate that instead of opening a new diff const diffTab = vscode.window.tabGroups.all .flatMap((group) => group.tabs) @@ -279,7 +281,7 @@ export class DiffViewProvider { (tab) => tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME && - arePathsEqual(tab.input.modified.fsPath, uri.fsPath), + arePathsEqual(tab.input.modified.fsPath, rightUri.fsPath), ) if (diffTab && diffTab.input instanceof vscode.TabInputTextDiff) { // Only focus if autoFocus is true @@ -289,35 +291,40 @@ export class DiffViewProvider { } // Try to find the editor without focusing const editor = vscode.window.visibleTextEditors.find((ed) => - arePathsEqual(ed.document.uri.fsPath, uri.fsPath), + arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), ) if (editor) return editor // Otherwise, open without focusing - await vscode.window.showTextDocument(diffTab.input.modified, { preview: false, preserveFocus: true }) + await vscode.window.showTextDocument(diffTab.input.modified, { + preview: false, + preserveFocus: true, + viewColumn: ViewColumn.Beside, + }) const newEditor = vscode.window.visibleTextEditors.find((ed) => - arePathsEqual(ed.document.uri.fsPath, uri.fsPath), + arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), ) if (newEditor) return newEditor } // Open new diff editor return new Promise((resolve, reject) => { - const fileName = path.basename(uri.fsPath) + const fileName = path.basename(rightUri.fsPath) const fileExists = this.editType === "modify" const disposable = vscode.window.onDidChangeActiveTextEditor((editor) => { - if (editor && arePathsEqual(editor.document.uri.fsPath, uri.fsPath)) { + if (editor && arePathsEqual(editor.document.uri.fsPath, rightUri.fsPath)) { disposable.dispose() resolve(editor) } }) - vscode.commands.executeCommand( - "vscode.diff", - vscode.Uri.parse(`${DIFF_VIEW_URI_SCHEME}:${fileName}`).with({ - query: Buffer.from(this.originalContent ?? "").toString("base64"), - }), - uri, - `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)`, - { viewColumn: vscode.ViewColumn.Beside, preserveFocus: !autoFocus }, - ) + const leftUri = vscode.Uri.parse(`${DIFF_VIEW_URI_SCHEME}:${fileName}`).with({ + query: Buffer.from(this.originalContent ?? "").toString("base64"), + }) + const title = `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)` + const textDocumentShowOptions: TextDocumentShowOptions = { + preview: false, + preserveFocus: !autoFocus, + viewColumn: ViewColumn.Beside, + } + vscode.commands.executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) // This may happen on very slow machines ie project idx setTimeout(() => { disposable.dispose() From 4d0e9e0251f4b762edd9ab4acf69973d2a2b8cb5 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 21:29:25 +0200 Subject: [PATCH 07/66] feat(diffView): refactor diff editor opening logic and improve autoFocus handling --- src/integrations/editor/DiffViewProvider.ts | 84 ++++++++++++--------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index a3255053d0..0578479eaa 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -266,12 +266,7 @@ export class DiffViewProvider { } } - private async openDiffEditor(): Promise { - if (!this.relPath) { - throw new Error("No file path set") - } - // right uri = the file path - const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) + private async getEditorFromDiffTab(uri: vscode.Uri): Promise { // Read user setting for diffView.autoFocus const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) // If this diff editor is already open (ie if a previous write file was interrupted) then we should activate that instead of opening a new diff @@ -281,40 +276,49 @@ export class DiffViewProvider { (tab) => tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME && - arePathsEqual(tab.input.modified.fsPath, rightUri.fsPath), - ) - if (diffTab && diffTab.input instanceof vscode.TabInputTextDiff) { - // Only focus if autoFocus is true - if (autoFocus) { - const editor = await vscode.window.showTextDocument(diffTab.input.modified) - return editor - } - // Try to find the editor without focusing - const editor = vscode.window.visibleTextEditors.find((ed) => - arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), + arePathsEqual(tab.input.modified.fsPath, uri.fsPath), ) - if (editor) return editor - // Otherwise, open without focusing - await vscode.window.showTextDocument(diffTab.input.modified, { - preview: false, - preserveFocus: true, - viewColumn: ViewColumn.Beside, - }) - const newEditor = vscode.window.visibleTextEditors.find((ed) => - arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), - ) - if (newEditor) return newEditor + if (!(diffTab && diffTab.input instanceof vscode.TabInputTextDiff)) { + return null + } + // Only focus if autoFocus is true + if (autoFocus) { + const editor = await vscode.window.showTextDocument(diffTab.input.modified) + return editor + } + // Try to find the editor without focusing + const editor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath)) + if (editor) return editor + // Otherwise, open without focusing + await vscode.window.showTextDocument(diffTab.input.modified, { + preview: false, + preserveFocus: true, + viewColumn: ViewColumn.Beside, + }) + const newEditor = vscode.window.visibleTextEditors.find((ed) => + arePathsEqual(ed.document.uri.fsPath, uri.fsPath), + ) + if (newEditor) return newEditor + return null + } + + private async openDiffEditor(): Promise { + if (!this.relPath) { + throw new Error("No file path set") + } + // right uri = the file path + const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) + // Read user setting for diffView.autoFocus + const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + const editor = await this.getEditorFromDiffTab(rightUri) + if (editor) { + return editor } // Open new diff editor return new Promise((resolve, reject) => { const fileName = path.basename(rightUri.fsPath) const fileExists = this.editType === "modify" - const disposable = vscode.window.onDidChangeActiveTextEditor((editor) => { - if (editor && arePathsEqual(editor.document.uri.fsPath, rightUri.fsPath)) { - disposable.dispose() - resolve(editor) - } - }) + const leftUri = vscode.Uri.parse(`${DIFF_VIEW_URI_SCHEME}:${fileName}`).with({ query: Buffer.from(this.originalContent ?? "").toString("base64"), }) @@ -324,10 +328,18 @@ export class DiffViewProvider { preserveFocus: !autoFocus, viewColumn: ViewColumn.Beside, } - vscode.commands.executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) + vscode.commands + .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) + .then(() => { + // If autoFocus is true, we should have already resolved the editor + // If autoFocus is false, we need to wait for the editor to be opened and find it + const editor = vscode.window.visibleTextEditors.find((ed) => + arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), + ) + if (editor) resolve(editor) + }) // This may happen on very slow machines ie project idx setTimeout(() => { - disposable.dispose() reject(new Error("Failed to open diff editor, please try again...")) }, 10_000) }) From dab08ab9087bae02c5e75efc601ef00091c69e39 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 21:54:25 +0200 Subject: [PATCH 08/66] feat(changeset): add changeset --- .changeset/large-snakes-suffer.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/large-snakes-suffer.md diff --git a/.changeset/large-snakes-suffer.md b/.changeset/large-snakes-suffer.md new file mode 100644 index 0000000000..b215b70adc --- /dev/null +++ b/.changeset/large-snakes-suffer.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Added an editable setting to allow users to preserve focus on the tab they are in while roo code is opening new tabs to do what it has to do. From 84dc391e8530ab2ed956d582b9f6af053f0686c8 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 22:13:52 +0200 Subject: [PATCH 09/66] test(diffView): add mock for createTextEditorDecorationType and verify editor activation calls --- .../editor/__tests__/DiffViewProvider.test.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index a66495c5da..cf94d3094f 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -12,6 +12,7 @@ jest.mock("vscode", () => ({ visibleTextEditors: [], onDidChangeActiveTextEditor: jest.fn(), showTextDocument: jest.fn(), + createTextEditorDecorationType: jest.fn(), // Add this mock }, commands: { executeCommand: jest.fn(), @@ -49,9 +50,8 @@ describe("DiffViewProvider", () => { const promise = provider["openDiffEditor"]() // Simulate editor activation setTimeout(() => { - const fakeEditor = { document: { uri: { fsPath: "/mock/file.txt" } } } - const cb = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls[0][0] - cb(fakeEditor) + const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls + expect(calls).toEqual([]) }, 10) await promise expect(executeCommand).toHaveBeenCalledWith( @@ -72,9 +72,8 @@ describe("DiffViewProvider", () => { const promise = provider["openDiffEditor"]() // Simulate editor activation setTimeout(() => { - const fakeEditor = { document: { uri: { fsPath: "/mock/file.txt" } } } - const cb = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls[0][0] - cb(fakeEditor) + const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls + expect(calls).toEqual([]) }, 10) await promise expect(executeCommand).toHaveBeenCalledWith( From 04889b7d53bc979e14eca9ab1f7ee8d17ccdc760 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 25 Apr 2025 22:28:53 +0200 Subject: [PATCH 10/66] test(diffView): add mock for createTextEditorDecorationType and verify editor activation calls --- src/integrations/editor/DiffViewProvider.ts | 6 +++- .../editor/__tests__/DiffViewProvider.test.ts | 28 ++++++++++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 0578479eaa..e57d4f9340 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -336,7 +336,11 @@ export class DiffViewProvider { const editor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), ) - if (editor) resolve(editor) + if (editor) { + resolve(editor) + } else { + reject(new Error("Failed to open diff editor, please try again...")) + } }) // This may happen on very slow machines ie project idx setTimeout(() => { diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index cf94d3094f..fe06ff8800 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -12,14 +12,22 @@ jest.mock("vscode", () => ({ visibleTextEditors: [], onDidChangeActiveTextEditor: jest.fn(), showTextDocument: jest.fn(), - createTextEditorDecorationType: jest.fn(), // Add this mock + createTextEditorDecorationType: jest.fn(), }, commands: { executeCommand: jest.fn(), }, Uri: { - file: jest.requireActual("vscode").Uri.file, - parse: jest.requireActual("vscode").Uri.parse, + ...jest.requireActual("vscode").Uri, + parse: jest.fn((value: string) => ({ + scheme: "file", + path: value, + with: jest.fn((options) => ({ + ...options, + scheme: options.scheme || "file", + path: options.path || value, + })), + })), }, ViewColumn: { Beside: 2 }, TextEditorRevealType: { AtTop: 1, InCenter: 2 }, @@ -52,8 +60,11 @@ describe("DiffViewProvider", () => { setTimeout(() => { const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls expect(calls).toEqual([]) - }, 10) - await promise + }, 1_000) + await promise.catch((error) => { + // this is expected to fail because the editor is not activated, we just want to test the command + console.error("Error:", error) + }) expect(executeCommand).toHaveBeenCalledWith( "vscode.diff", expect.anything(), @@ -74,8 +85,11 @@ describe("DiffViewProvider", () => { setTimeout(() => { const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls expect(calls).toEqual([]) - }, 10) - await promise + }, 1_000) + await promise.catch((error) => { + // this is expected to fail because the editor is not activated, we just want to test the command + console.error("Error:", error) + }) expect(executeCommand).toHaveBeenCalledWith( "vscode.diff", expect.anything(), From 5f86d92aa704aa7c3a5f738f2b46e4750c9430f3 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 26 Apr 2025 22:06:30 +0200 Subject: [PATCH 11/66] feat(diffView): enhance autoFocus handling for diff view and improve tab closing logic --- src/integrations/editor/DiffViewProvider.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index e57d4f9340..2497066807 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -156,8 +156,12 @@ export class DiffViewProvider { if (updatedDocument.isDirty) { await updatedDocument.save() } + const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + + if (autoFocus) { + await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { preview: false }) + } - await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { preview: false }) await this.closeAllDiffViews() /* @@ -261,7 +265,7 @@ export class DiffViewProvider { for (const tab of tabs) { // trying to close dirty views results in save popup if (!tab.isDirty) { - await vscode.window.tabGroups.close(tab) + await vscode.window.tabGroups.close(tab, true) } } } From 87051041be3eac57dd353229c2beec6817f89ed5 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 27 Apr 2025 11:28:26 +0200 Subject: [PATCH 12/66] feat(diffView): streamline editor fetching un open diff editor --- src/integrations/editor/DiffViewProvider.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 2497066807..4f922e6a3b 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -312,8 +312,6 @@ export class DiffViewProvider { } // right uri = the file path const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) - // Read user setting for diffView.autoFocus - const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) const editor = await this.getEditorFromDiffTab(rightUri) if (editor) { return editor @@ -327,6 +325,8 @@ export class DiffViewProvider { query: Buffer.from(this.originalContent ?? "").toString("base64"), }) const title = `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)` + // Read user setting for diffView.autoFocus + const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, preserveFocus: !autoFocus, @@ -337,14 +337,13 @@ export class DiffViewProvider { .then(() => { // If autoFocus is true, we should have already resolved the editor // If autoFocus is false, we need to wait for the editor to be opened and find it - const editor = vscode.window.visibleTextEditors.find((ed) => - arePathsEqual(ed.document.uri.fsPath, rightUri.fsPath), - ) - if (editor) { - resolve(editor) - } else { - reject(new Error("Failed to open diff editor, please try again...")) - } + this.getEditorFromDiffTab(rightUri).then((editor) => { + if (editor) { + resolve(editor) + } else { + reject(new Error("Failed to open diff editor, please try again...")) + } + }) }) // This may happen on very slow machines ie project idx setTimeout(() => { From 936fec19475b227d5deddd2aa8a2ddef4da2cd2b Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Wed, 30 Apr 2025 21:25:27 +0200 Subject: [PATCH 13/66] feat(diffView): enhance diff editor opening to respect view column settings --- src/core/tools/applyDiffTool.ts | 5 +++- src/core/tools/insertContentTool.ts | 5 +++- src/core/tools/searchAndReplaceTool.ts | 5 +++- src/core/tools/writeToFileTool.ts | 8 ++++-- src/core/webview/ClineProvider.ts | 12 +++++++++ src/integrations/editor/DiffViewProvider.ts | 25 +++++++++++++------ .../editor/__tests__/DiffViewProvider.test.ts | 4 +-- 7 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/core/tools/applyDiffTool.ts b/src/core/tools/applyDiffTool.ts index 590040f2ba..caab8819f8 100644 --- a/src/core/tools/applyDiffTool.ts +++ b/src/core/tools/applyDiffTool.ts @@ -12,6 +12,7 @@ import { addLineNumbers } from "../../integrations/misc/extract-text" import { RecordSource } from "../context-tracking/FileContextTrackerTypes" import { telemetryService } from "../../services/telemetry/TelemetryService" import { unescapeHtmlEntities } from "../../utils/text-normalization" +import { ViewColumn } from "vscode" export async function applyDiffTool( cline: Cline, @@ -138,7 +139,9 @@ export async function applyDiffTool( // Show diff view before asking for approval cline.diffViewProvider.editType = "modify" - await cline.diffViewProvider.open(relPath) + const clineRef = cline.providerRef.deref() + const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Beside + await cline.diffViewProvider.open(relPath, viewColumn) await cline.diffViewProvider.update(diffResult.content, true) await cline.diffViewProvider.scrollToFirstDiff() diff --git a/src/core/tools/insertContentTool.ts b/src/core/tools/insertContentTool.ts index 8e6c5fc89e..8f59a19098 100644 --- a/src/core/tools/insertContentTool.ts +++ b/src/core/tools/insertContentTool.ts @@ -10,6 +10,7 @@ import { ClineSayTool } from "../../shared/ExtensionMessage" import { RecordSource } from "../context-tracking/FileContextTrackerTypes" import { fileExistsAtPath } from "../../utils/fs" import { insertGroups } from "../diff/insert-groups" +import { ViewColumn } from "vscode" export async function insertContentTool( cline: Cline, @@ -97,7 +98,9 @@ export async function insertContentTool( if (!cline.diffViewProvider.isEditing) { await cline.ask("tool", JSON.stringify(sharedMessageProps), true).catch(() => {}) // First open with original content - await cline.diffViewProvider.open(relPath) + const clineRef = cline.providerRef.deref() + const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Beside + await cline.diffViewProvider.open(relPath, viewColumn) await cline.diffViewProvider.update(fileContent, false) cline.diffViewProvider.scrollToFirstDiff() await delay(200) diff --git a/src/core/tools/searchAndReplaceTool.ts b/src/core/tools/searchAndReplaceTool.ts index 7a503b5f1e..d11c981060 100644 --- a/src/core/tools/searchAndReplaceTool.ts +++ b/src/core/tools/searchAndReplaceTool.ts @@ -11,6 +11,7 @@ import { ClineSayTool } from "../../shared/ExtensionMessage" import { getReadablePath } from "../../utils/path" import { fileExistsAtPath } from "../../utils/fs" import { RecordSource } from "../context-tracking/FileContextTrackerTypes" +import { ViewColumn } from "vscode" /** * Tool for performing search and replace operations on files @@ -190,7 +191,9 @@ export async function searchAndReplaceTool( // Show changes in diff view if (!cline.diffViewProvider.isEditing) { await cline.ask("tool", JSON.stringify(sharedMessageProps), true).catch(() => {}) - await cline.diffViewProvider.open(validRelPath) + const clineRef = cline.providerRef.deref() + const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Beside + await cline.diffViewProvider.open(validRelPath, viewColumn) await cline.diffViewProvider.update(fileContent, false) cline.diffViewProvider.scrollToFirstDiff() await delay(200) diff --git a/src/core/tools/writeToFileTool.ts b/src/core/tools/writeToFileTool.ts index a23aea9714..3b99179441 100644 --- a/src/core/tools/writeToFileTool.ts +++ b/src/core/tools/writeToFileTool.ts @@ -84,7 +84,9 @@ export async function writeToFileTool( // update editor if (!cline.diffViewProvider.isEditing) { // open the editor and prepare to stream content in - await cline.diffViewProvider.open(relPath) + const clineRef = cline.providerRef.deref() + const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Beside + await cline.diffViewProvider.open(relPath, viewColumn) } // editor is open, stream content in @@ -150,7 +152,9 @@ export async function writeToFileTool( // show gui message before showing edit animation const partialMessage = JSON.stringify(sharedMessageProps) await cline.ask("tool", partialMessage, true).catch(() => {}) // sending true for partial even though it's not a partial, cline shows the edit row before the content is streamed into the editor - await cline.diffViewProvider.open(relPath) + const clineRef = cline.providerRef.deref() + const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Beside + await cline.diffViewProvider.open(relPath, viewColumn) } await cline.diffViewProvider.update( diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 3fce7e3d6b..b840b68d20 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1527,4 +1527,16 @@ export class ClineProvider extends EventEmitter implements return properties } + + // add getter for view + public getViewColumn(): vscode.ViewColumn { + const isViewPanel = this.view?.viewType === "roo-cline.TabPanelProvider" + if (!isViewPanel) { + return vscode.ViewColumn.Beside + } + // If the view is a WebviewPanel, return its viewColumn. + // This property is only set if the webview is in one of the editor view columns. + // Therefore, we can safely return it or default to beside. + return (this.view as vscode.WebviewPanel).viewColumn ?? vscode.ViewColumn.Beside + } } diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 4f922e6a3b..9f603f89c7 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -28,7 +28,12 @@ export class DiffViewProvider { constructor(private cwd: string) {} - async open(relPath: string): Promise { + /** + * Opens a diff editor for the given relative path, optionally in a specific viewColumn. + * @param relPath The relative file path to open. + * @param viewColumn (Optional) The VSCode editor group to open the diff in. + */ + async open(relPath: string, viewColumn: ViewColumn): Promise { this.relPath = relPath const fileExists = this.editType === "modify" const absolutePath = path.resolve(this.cwd, relPath) @@ -72,7 +77,7 @@ export class DiffViewProvider { } this.documentWasOpen = true } - this.activeDiffEditor = await this.openDiffEditor() + this.activeDiffEditor = await this.openDiffEditor(viewColumn) this.fadedOverlayController = new DecorationController("fadedOverlay", this.activeDiffEditor) this.activeLineController = new DecorationController("activeLine", this.activeDiffEditor) // Apply faded overlay to all lines initially @@ -270,7 +275,7 @@ export class DiffViewProvider { } } - private async getEditorFromDiffTab(uri: vscode.Uri): Promise { + private async getEditorFromDiffTab(uri: vscode.Uri, viewColumn: ViewColumn): Promise { // Read user setting for diffView.autoFocus const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) // If this diff editor is already open (ie if a previous write file was interrupted) then we should activate that instead of opening a new diff @@ -297,7 +302,7 @@ export class DiffViewProvider { await vscode.window.showTextDocument(diffTab.input.modified, { preview: false, preserveFocus: true, - viewColumn: ViewColumn.Beside, + viewColumn: viewColumn, }) const newEditor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath), @@ -306,13 +311,17 @@ export class DiffViewProvider { return null } - private async openDiffEditor(): Promise { + /** + * Opens the diff editor, optionally in a specific viewColumn. + * @param viewColumn (Optional) The VSCode editor group to open the diff in. + */ + private async openDiffEditor(viewColumn: ViewColumn): Promise { if (!this.relPath) { throw new Error("No file path set") } // right uri = the file path const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) - const editor = await this.getEditorFromDiffTab(rightUri) + const editor = await this.getEditorFromDiffTab(rightUri, viewColumn) if (editor) { return editor } @@ -330,14 +339,14 @@ export class DiffViewProvider { const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, preserveFocus: !autoFocus, - viewColumn: ViewColumn.Beside, + viewColumn: viewColumn ?? ViewColumn.Beside, } vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) .then(() => { // If autoFocus is true, we should have already resolved the editor // If autoFocus is false, we need to wait for the editor to be opened and find it - this.getEditorFromDiffTab(rightUri).then((editor) => { + this.getEditorFromDiffTab(rightUri, viewColumn).then((editor) => { if (editor) { resolve(editor) } else { diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index fe06ff8800..300868ee7f 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -55,7 +55,7 @@ describe("DiffViewProvider", () => { }) const executeCommand = vscode.commands.executeCommand as jest.Mock executeCommand.mockResolvedValue(undefined) - const promise = provider["openDiffEditor"]() + const promise = provider["openDiffEditor"](vscode.ViewColumn.Beside) // Simulate editor activation setTimeout(() => { const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls @@ -80,7 +80,7 @@ describe("DiffViewProvider", () => { }) const executeCommand = vscode.commands.executeCommand as jest.Mock executeCommand.mockResolvedValue(undefined) - const promise = provider["openDiffEditor"]() + const promise = provider["openDiffEditor"](vscode.ViewColumn.Beside) // Simulate editor activation setTimeout(() => { const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls From 8644484ad8288eccaf16a1abde14c7b1a76a8041 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Thu, 1 May 2025 20:33:08 +0200 Subject: [PATCH 14/66] feat(diffView): update view column handling to default to Active for diff editor --- src/core/webview/ClineProvider.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index b840b68d20..d33f0d98de 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1532,11 +1532,13 @@ export class ClineProvider extends EventEmitter implements public getViewColumn(): vscode.ViewColumn { const isViewPanel = this.view?.viewType === "roo-cline.TabPanelProvider" if (!isViewPanel) { + // If the view is not a WebviewPanel, return Beside. + // This is necessary to ensure that the view is always opened beside the current active editor not stealing focus. return vscode.ViewColumn.Beside } // If the view is a WebviewPanel, return its viewColumn. // This property is only set if the webview is in one of the editor view columns. // Therefore, we can safely return it or default to beside. - return (this.view as vscode.WebviewPanel).viewColumn ?? vscode.ViewColumn.Beside + return (this.view as vscode.WebviewPanel).viewColumn ?? vscode.ViewColumn.Active } } From 151452ace1351dbd4241de8f8f4c6710152e565f Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Thu, 1 May 2025 20:33:40 +0200 Subject: [PATCH 15/66] feat(diffView): update default view column to Active for diff editor across tools --- src/core/tools/applyDiffTool.ts | 2 +- src/core/tools/insertContentTool.ts | 2 +- src/core/tools/searchAndReplaceTool.ts | 2 +- src/core/tools/writeToFileTool.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/tools/applyDiffTool.ts b/src/core/tools/applyDiffTool.ts index caab8819f8..da052d5a73 100644 --- a/src/core/tools/applyDiffTool.ts +++ b/src/core/tools/applyDiffTool.ts @@ -140,7 +140,7 @@ export async function applyDiffTool( // Show diff view before asking for approval cline.diffViewProvider.editType = "modify" const clineRef = cline.providerRef.deref() - const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Beside + const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Active await cline.diffViewProvider.open(relPath, viewColumn) await cline.diffViewProvider.update(diffResult.content, true) await cline.diffViewProvider.scrollToFirstDiff() diff --git a/src/core/tools/insertContentTool.ts b/src/core/tools/insertContentTool.ts index 8f59a19098..b3b46955fd 100644 --- a/src/core/tools/insertContentTool.ts +++ b/src/core/tools/insertContentTool.ts @@ -99,7 +99,7 @@ export async function insertContentTool( await cline.ask("tool", JSON.stringify(sharedMessageProps), true).catch(() => {}) // First open with original content const clineRef = cline.providerRef.deref() - const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Beside + const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Active await cline.diffViewProvider.open(relPath, viewColumn) await cline.diffViewProvider.update(fileContent, false) cline.diffViewProvider.scrollToFirstDiff() diff --git a/src/core/tools/searchAndReplaceTool.ts b/src/core/tools/searchAndReplaceTool.ts index d11c981060..59c0babcb9 100644 --- a/src/core/tools/searchAndReplaceTool.ts +++ b/src/core/tools/searchAndReplaceTool.ts @@ -192,7 +192,7 @@ export async function searchAndReplaceTool( if (!cline.diffViewProvider.isEditing) { await cline.ask("tool", JSON.stringify(sharedMessageProps), true).catch(() => {}) const clineRef = cline.providerRef.deref() - const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Beside + const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Active await cline.diffViewProvider.open(validRelPath, viewColumn) await cline.diffViewProvider.update(fileContent, false) cline.diffViewProvider.scrollToFirstDiff() diff --git a/src/core/tools/writeToFileTool.ts b/src/core/tools/writeToFileTool.ts index 3b99179441..21c5866f4c 100644 --- a/src/core/tools/writeToFileTool.ts +++ b/src/core/tools/writeToFileTool.ts @@ -153,7 +153,7 @@ export async function writeToFileTool( const partialMessage = JSON.stringify(sharedMessageProps) await cline.ask("tool", partialMessage, true).catch(() => {}) // sending true for partial even though it's not a partial, cline shows the edit row before the content is streamed into the editor const clineRef = cline.providerRef.deref() - const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Beside + const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Active await cline.diffViewProvider.open(relPath, viewColumn) } From 6fb64b1798248d4e3ee828be54666a55bd62ed9a Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Thu, 1 May 2025 20:34:35 +0200 Subject: [PATCH 16/66] feat(diffView): implement focus handling for previous editor when autoFocus is disabled --- src/integrations/editor/DiffViewProvider.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 9f603f89c7..d44cebe883 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -336,13 +336,29 @@ export class DiffViewProvider { const title = `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)` // Read user setting for diffView.autoFocus const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + const previousEditorDocument = vscode.window.activeTextEditor?.document const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, preserveFocus: !autoFocus, - viewColumn: viewColumn ?? ViewColumn.Beside, + viewColumn: viewColumn, } vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) + .then(() => { + // If autoFocus is true, we don't need to do anything + if (autoFocus) { + return + } + // if there is no previous editor, we don't need to do anything + if (!previousEditorDocument) { + return + } + // if there is, we need to focus it + vscode.window.showTextDocument(previousEditorDocument, { + preview: false, + preserveFocus: true, + }) + }) .then(() => { // If autoFocus is true, we should have already resolved the editor // If autoFocus is false, we need to wait for the editor to be opened and find it From 6be9b12b76c5e30579c4a19f28497d5ce7a31034 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 2 May 2025 17:53:27 +0200 Subject: [PATCH 17/66] feat(diffView): refactor openDiffEditor to use default view column and use previous editor selection when reopening --- src/integrations/editor/DiffViewProvider.ts | 98 +++++++++++++------ .../editor/__tests__/DiffViewProvider.test.ts | 4 +- 2 files changed, 69 insertions(+), 33 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index d44cebe883..5234e062ed 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -9,6 +9,7 @@ import { DecorationController } from "./DecorationController" import * as diff from "diff" import { diagnosticsToProblemsString, getNewDiagnostics } from "../diagnostics" import stripBom from "strip-bom" +import { ClineProvider } from "../../core/webview/ClineProvider" export const DIFF_VIEW_URI_SCHEME = "cline-diff" @@ -25,15 +26,37 @@ export class DiffViewProvider { private activeLineController?: DecorationController private streamedLines: string[] = [] private preDiagnostics: [vscode.Uri, vscode.Diagnostic[]][] = [] + private rooOpenedTabs: Set = new Set() + private preserveFocus: boolean = false + private autoFocus: boolean = true + private viewColumn: ViewColumn = ViewColumn.Active constructor(private cwd: string) {} + async initialize(viewColumn: ViewColumn) { + const provider = ClineProvider.getVisibleInstance() + const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + const autoApproval = + (provider?.getValue("autoApprovalEnabled") && provider?.getValue("alwaysAllowWrite")) ?? false + // If autoApproval is enabled, we want to preserve focus if autoFocus is disabled + // AutoApproval is enabled when the user has set "alwaysAllowWrite" and "autoApprovalEnabled" to true + // AutoFocus is enabled when the user has set "diffView.autoFocus" to true, this is the default. + // If autoFocus is disabled, we want to preserve focus on the diff editor we are working on. + this.preserveFocus = autoApproval && !autoFocus + this.autoFocus = autoFocus + this.viewColumn = viewColumn + // Track currently visible editors and active editor for focus restoration and tab cleanup + this.rooOpenedTabs.clear() + } + /** * Opens a diff editor for the given relative path, optionally in a specific viewColumn. * @param relPath The relative file path to open. * @param viewColumn (Optional) The VSCode editor group to open the diff in. */ async open(relPath: string, viewColumn: ViewColumn): Promise { + await this.initialize(viewColumn) + // Set the edit type based on the file existence this.relPath = relPath const fileExists = this.editType === "modify" const absolutePath = path.resolve(this.cwd, relPath) @@ -77,7 +100,11 @@ export class DiffViewProvider { } this.documentWasOpen = true } - this.activeDiffEditor = await this.openDiffEditor(viewColumn) + this.activeDiffEditor = await this.openDiffEditor() + // Track the diff editor tab as opened by Roo + if (this.activeDiffEditor) { + this.rooOpenedTabs.add(this.activeDiffEditor.document.uri.toString()) + } this.fadedOverlayController = new DecorationController("fadedOverlay", this.activeDiffEditor) this.activeLineController = new DecorationController("activeLine", this.activeDiffEditor) // Apply faded overlay to all lines initially @@ -86,6 +113,18 @@ export class DiffViewProvider { this.streamedLines = [] } + /** + * Opens a file editor and tracks it as opened by Roo if not already open. + */ + private async showAndTrackEditor(uri: vscode.Uri, options: vscode.TextDocumentShowOptions = {}) { + const alreadyOpen = vscode.window.visibleTextEditors.some((ed) => ed.document.uri.toString() === uri.toString()) + const editor = await vscode.window.showTextDocument(uri, options) + if (!alreadyOpen) { + this.rooOpenedTabs.add(uri.toString()) + } + return editor + } + async update(accumulatedContent: string, isFinal: boolean) { if (!this.relPath || !this.activeLineController || !this.fadedOverlayController) { throw new Error("Required values not set") @@ -161,14 +200,10 @@ export class DiffViewProvider { if (updatedDocument.isDirty) { await updatedDocument.save() } - const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) - - if (autoFocus) { + if (this.autoFocus) { await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { preview: false }) } - await this.closeAllDiffViews() - /* Getting diagnostics before and after the file edit is a better approach than automatically tracking problems in real-time. This method ensures we only @@ -264,8 +299,10 @@ export class DiffViewProvider { .flatMap((tg) => tg.tabs) .filter( (tab) => - tab.input instanceof vscode.TabInputTextDiff && - tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME, + (tab.input instanceof vscode.TabInputTextDiff && + tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) || + // close if in rooOpenedTabs + (tab.input instanceof vscode.TabInputText && this.rooOpenedTabs.has(tab.input.uri.toString())), ) for (const tab of tabs) { // trying to close dirty views results in save popup @@ -275,9 +312,7 @@ export class DiffViewProvider { } } - private async getEditorFromDiffTab(uri: vscode.Uri, viewColumn: ViewColumn): Promise { - // Read user setting for diffView.autoFocus - const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + private async getEditorFromDiffTab(uri: vscode.Uri): Promise { // If this diff editor is already open (ie if a previous write file was interrupted) then we should activate that instead of opening a new diff const diffTab = vscode.window.tabGroups.all .flatMap((group) => group.tabs) @@ -291,18 +326,21 @@ export class DiffViewProvider { return null } // Only focus if autoFocus is true - if (autoFocus) { - const editor = await vscode.window.showTextDocument(diffTab.input.modified) + if (this.autoFocus) { + const editor = await this.showAndTrackEditor(diffTab.input.modified, { + viewColumn: vscode.ViewColumn.Active, + preserveFocus: this.preserveFocus, + }) return editor } // Try to find the editor without focusing const editor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath)) if (editor) return editor // Otherwise, open without focusing - await vscode.window.showTextDocument(diffTab.input.modified, { + await this.showAndTrackEditor(diffTab.input.modified, { preview: false, - preserveFocus: true, - viewColumn: viewColumn, + preserveFocus: this.preserveFocus, + viewColumn: this.viewColumn, }) const newEditor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath), @@ -313,15 +351,14 @@ export class DiffViewProvider { /** * Opens the diff editor, optionally in a specific viewColumn. - * @param viewColumn (Optional) The VSCode editor group to open the diff in. */ - private async openDiffEditor(viewColumn: ViewColumn): Promise { + private async openDiffEditor(): Promise { if (!this.relPath) { throw new Error("No file path set") } // right uri = the file path const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) - const editor = await this.getEditorFromDiffTab(rightUri, viewColumn) + const editor = await this.getEditorFromDiffTab(rightUri) if (editor) { return editor } @@ -334,35 +371,34 @@ export class DiffViewProvider { query: Buffer.from(this.originalContent ?? "").toString("base64"), }) const title = `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)` - // Read user setting for diffView.autoFocus - const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) - const previousEditorDocument = vscode.window.activeTextEditor?.document + const previousEditor = vscode.window.activeTextEditor const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, - preserveFocus: !autoFocus, - viewColumn: viewColumn, + preserveFocus: this.preserveFocus, + viewColumn: this.viewColumn, } vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) .then(() => { + // Track the diff tab as opened by Roo + this.rooOpenedTabs.add(rightUri.toString()) // If autoFocus is true, we don't need to do anything - if (autoFocus) { + if (this.autoFocus) { return } // if there is no previous editor, we don't need to do anything - if (!previousEditorDocument) { + if (!previousEditor) { return } // if there is, we need to focus it - vscode.window.showTextDocument(previousEditorDocument, { + vscode.window.showTextDocument(previousEditor.document, { preview: false, - preserveFocus: true, + preserveFocus: this.preserveFocus, + selection: previousEditor.selection, }) }) .then(() => { - // If autoFocus is true, we should have already resolved the editor - // If autoFocus is false, we need to wait for the editor to be opened and find it - this.getEditorFromDiffTab(rightUri, viewColumn).then((editor) => { + this.getEditorFromDiffTab(rightUri).then((editor) => { if (editor) { resolve(editor) } else { diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index 300868ee7f..fe06ff8800 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -55,7 +55,7 @@ describe("DiffViewProvider", () => { }) const executeCommand = vscode.commands.executeCommand as jest.Mock executeCommand.mockResolvedValue(undefined) - const promise = provider["openDiffEditor"](vscode.ViewColumn.Beside) + const promise = provider["openDiffEditor"]() // Simulate editor activation setTimeout(() => { const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls @@ -80,7 +80,7 @@ describe("DiffViewProvider", () => { }) const executeCommand = vscode.commands.executeCommand as jest.Mock executeCommand.mockResolvedValue(undefined) - const promise = provider["openDiffEditor"](vscode.ViewColumn.Beside) + const promise = provider["openDiffEditor"]() // Simulate editor activation setTimeout(() => { const calls = (vscode.window.onDidChangeActiveTextEditor as jest.Mock).mock.calls From 5fb1ec7f58e5049292f473e4d79357eb5059e1c0 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 4 May 2025 18:55:00 +0200 Subject: [PATCH 18/66] feat(diffView): finalize view col and re-focus behavior --- src/core/tools/writeToFileTool.ts | 2 +- src/core/webview/ClineProvider.ts | 6 ------ src/integrations/editor/DiffViewProvider.ts | 8 +++----- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/core/tools/writeToFileTool.ts b/src/core/tools/writeToFileTool.ts index 21c5866f4c..9bca6f03fd 100644 --- a/src/core/tools/writeToFileTool.ts +++ b/src/core/tools/writeToFileTool.ts @@ -85,7 +85,7 @@ export async function writeToFileTool( if (!cline.diffViewProvider.isEditing) { // open the editor and prepare to stream content in const clineRef = cline.providerRef.deref() - const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Beside + const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Active await cline.diffViewProvider.open(relPath, viewColumn) } diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index d33f0d98de..f860740729 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1530,12 +1530,6 @@ export class ClineProvider extends EventEmitter implements // add getter for view public getViewColumn(): vscode.ViewColumn { - const isViewPanel = this.view?.viewType === "roo-cline.TabPanelProvider" - if (!isViewPanel) { - // If the view is not a WebviewPanel, return Beside. - // This is necessary to ensure that the view is always opened beside the current active editor not stealing focus. - return vscode.ViewColumn.Beside - } // If the view is a WebviewPanel, return its viewColumn. // This property is only set if the webview is in one of the editor view columns. // Therefore, we can safely return it or default to beside. diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 5234e062ed..27d188d1ab 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -327,10 +327,7 @@ export class DiffViewProvider { } // Only focus if autoFocus is true if (this.autoFocus) { - const editor = await this.showAndTrackEditor(diffTab.input.modified, { - viewColumn: vscode.ViewColumn.Active, - preserveFocus: this.preserveFocus, - }) + const editor = await this.showAndTrackEditor(diffTab.input.modified) return editor } // Try to find the editor without focusing @@ -393,7 +390,8 @@ export class DiffViewProvider { // if there is, we need to focus it vscode.window.showTextDocument(previousEditor.document, { preview: false, - preserveFocus: this.preserveFocus, + // we need to force focus here now, because we want to restore the previous selection + preserveFocus: false, selection: previousEditor.selection, }) }) From e19bbadd0d8bd23aa61d80652bfc9da14f0ebab2 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 4 May 2025 19:03:01 +0200 Subject: [PATCH 19/66] feat(diffView): restore functionality to open the finished edited file in saveChanges --- src/integrations/editor/DiffViewProvider.ts | 23 +++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 27d188d1ab..674e42a59e 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -200,10 +200,21 @@ export class DiffViewProvider { if (updatedDocument.isDirty) { await updatedDocument.save() } - if (this.autoFocus) { - await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { preview: false }) + const previousEditor = vscode.window.activeTextEditor + const textDocumentShowOptions: TextDocumentShowOptions = { + preview: false, + preserveFocus: this.preserveFocus, + viewColumn: this.viewColumn, + } + await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), textDocumentShowOptions) + if (!this.autoFocus && previousEditor) { + await vscode.window.showTextDocument(previousEditor.document, { + preview: false, + preserveFocus: false, + selection: previousEditor.selection, + }) } - await this.closeAllDiffViews() + await this.closeAllRooOpenedViews() /* Getting diagnostics before and after the file edit is a better approach than automatically tracking problems in real-time. This method ensures we only @@ -262,7 +273,7 @@ export class DiffViewProvider { if (updatedDocument.isDirty) { await updatedDocument.save() } - await this.closeAllDiffViews() + await this.closeAllRooOpenedViews() await fs.unlink(absolutePath) // Remove only the directories we created, in reverse order for (let i = this.createdDirs.length - 1; i >= 0; i--) { @@ -287,14 +298,14 @@ export class DiffViewProvider { preview: false, }) } - await this.closeAllDiffViews() + await this.closeAllRooOpenedViews() } // edit is done await this.reset() } - private async closeAllDiffViews() { + private async closeAllRooOpenedViews() { const tabs = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) .filter( From 6b2e8a4b16b59504acebdc77a28d9201f8d271aa Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 4 May 2025 21:10:05 +0200 Subject: [PATCH 20/66] feat(diffView): add autoCloseRooTabs setting to manage automatic closing of Roo tabs --- package.json | 5 +++ src/core/webview/ClineProvider.ts | 3 ++ src/core/webview/webviewMessageHandler.ts | 10 ++++++ src/exports/roo-code.d.ts | 2 ++ src/exports/types.ts | 2 ++ src/i18n/locales/hi/common.json | 4 +-- src/integrations/editor/DiffViewProvider.ts | 11 ++++-- src/schemas/index.ts | 4 +++ src/shared/ExtensionMessage.ts | 1 + src/shared/WebviewMessage.ts | 1 + .../src/components/settings/ApiOptions.tsx | 1 + .../settings/DiffSettingsControl.tsx | 34 ++++++++++++++++++- .../src/components/settings/SettingsView.tsx | 4 +++ .../src/context/ExtensionStateContext.tsx | 2 ++ webview-ui/src/i18n/locales/ca/settings.json | 4 +++ webview-ui/src/i18n/locales/de/settings.json | 4 +++ webview-ui/src/i18n/locales/en/settings.json | 4 +++ webview-ui/src/i18n/locales/es/settings.json | 4 +++ webview-ui/src/i18n/locales/fr/settings.json | 8 +++-- webview-ui/src/i18n/locales/hi/settings.json | 4 +++ webview-ui/src/i18n/locales/it/settings.json | 4 +++ webview-ui/src/i18n/locales/ja/settings.json | 4 +++ webview-ui/src/i18n/locales/ko/settings.json | 4 +++ webview-ui/src/i18n/locales/pl/settings.json | 4 +++ .../src/i18n/locales/pt-BR/settings.json | 4 +++ webview-ui/src/i18n/locales/ru/settings.json | 4 +++ webview-ui/src/i18n/locales/tr/settings.json | 4 +++ webview-ui/src/i18n/locales/vi/settings.json | 4 +++ .../src/i18n/locales/zh-CN/settings.json | 4 +++ .../src/i18n/locales/zh-TW/settings.json | 4 +++ 30 files changed, 144 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index ee034bb84a..17317fae4d 100644 --- a/package.json +++ b/package.json @@ -318,6 +318,11 @@ "type": "boolean", "default": true, "description": "Automatically focus the diff tab when showing file changes. If false, the diff tab will open in the background." + }, + "roo-cline.autoCloseRooTabs": { + "type": "boolean", + "default": false, + "description": "%roo-cline.autoCloseRooTabs.description%" } } } diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index f860740729..46025ca278 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1154,6 +1154,7 @@ export class ClineProvider extends EventEmitter implements ttsSpeed, diffEnabled, diffViewAutoFocus, + autoCloseRooTabs, enableCheckpoints, taskHistory, soundVolume, @@ -1233,6 +1234,7 @@ export class ClineProvider extends EventEmitter implements ttsSpeed: ttsSpeed ?? 1.0, diffEnabled: diffEnabled ?? true, diffViewAutoFocus: diffViewAutoFocus ?? true, + autoCloseRooTabs: autoCloseRooTabs ?? false, enableCheckpoints: enableCheckpoints ?? true, shouldShowAnnouncement: telemetrySetting !== "unset" && lastShownAnnouncementId !== this.latestAnnouncementId, @@ -1331,6 +1333,7 @@ export class ClineProvider extends EventEmitter implements ttsSpeed: stateValues.ttsSpeed ?? 1.0, diffEnabled: stateValues.diffEnabled ?? true, diffViewAutoFocus: stateValues.diffViewAutoFocus ?? false, + autoCloseRooTabs: stateValues.autoCloseRooTabs ?? false, enableCheckpoints: stateValues.enableCheckpoints ?? true, soundVolume: stateValues.soundVolume, browserViewportSize: stateValues.browserViewportSize ?? "900x600", diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 2bc82edebb..abf65116f6 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -55,6 +55,16 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await updateGlobalState("diffViewAutoFocus", diffViewAutoFocus) await provider.postStateToWebview() break + case "autoCloseRooTabs": + const autoCloseRooTabs = message.bool ?? false + await provider.context.globalState.update("autoCloseRooTabs", autoCloseRooTabs) + // Also update workspace settings + await vscode.workspace + .getConfiguration("roo-cline") + .update("autoCloseRooTabs", autoCloseRooTabs, vscode.ConfigurationTarget.Global) + await updateGlobalState("autoCloseRooTabs", autoCloseRooTabs) + await provider.postStateToWebview() + break case "webviewDidLaunch": // Load custom modes first const customModes = await provider.customModesManager.getCustomModes() diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts index e272c47c7e..f68bd5eaa3 100644 --- a/src/exports/roo-code.d.ts +++ b/src/exports/roo-code.d.ts @@ -127,6 +127,7 @@ type ProviderSettings = { promptCachingEnabled?: boolean | undefined diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined + autoCloseRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -227,6 +228,7 @@ type GlobalSettings = { rateLimitSeconds?: number | undefined diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined + autoCloseRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined experiments?: | { diff --git a/src/exports/types.ts b/src/exports/types.ts index 67a37216c1..25f89303cc 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -128,6 +128,7 @@ type ProviderSettings = { promptCachingEnabled?: boolean | undefined diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined + autoCloseRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -230,6 +231,7 @@ type GlobalSettings = { rateLimitSeconds?: number | undefined diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined + autoCloseRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined experiments?: | { diff --git a/src/i18n/locales/hi/common.json b/src/i18n/locales/hi/common.json index c75bb5f520..bf5421eff8 100644 --- a/src/i18n/locales/hi/common.json +++ b/src/i18n/locales/hi/common.json @@ -88,8 +88,6 @@ }, "input": { "task_prompt": "Roo को क्या करना है?", - "task_placeholder": "अपना कार्य यहाँ लिखें", - "diff.autoFocus.label": "फ़ाइल परिवर्तनों को दिखाते समय डिफ टैब को स्वचालित रूप से फोकस करें", - "diff.autoFocus.description": "यदि अक्षम है, तो डिफ टैब पृष्ठभूमि में खुलेगा और फोकस नहीं लेगा।" + "task_placeholder": "अपना कार्य यहाँ लिखें" } } diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 674e42a59e..15f61680e8 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -306,14 +306,21 @@ export class DiffViewProvider { } private async closeAllRooOpenedViews() { + const autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) + if (!autoCloseTabs) { + return + } + const tabs = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) .filter( (tab) => (tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) || - // close if in rooOpenedTabs - (tab.input instanceof vscode.TabInputText && this.rooOpenedTabs.has(tab.input.uri.toString())), + // close if in rooOpenedTabs and autoCloseTabs is enabled + (autoCloseTabs && + tab.input instanceof vscode.TabInputText && + this.rooOpenedTabs.has(tab.input.uri.toString())), ) for (const tab of tabs) { // trying to close dirty views results in save popup diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 8fa2c8eb6a..6f5f90e2b0 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -432,6 +432,7 @@ export const providerSettingsSchema = z.object({ promptCachingEnabled: z.boolean().optional(), diffEnabled: z.boolean().optional(), diffViewAutoFocus: z.boolean().optional(), + autoCloseRooTabs: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), @@ -524,6 +525,7 @@ const providerSettingsRecord: ProviderSettingsRecord = { promptCachingEnabled: undefined, diffEnabled: undefined, diffViewAutoFocus: undefined, + autoCloseRooTabs: undefined, fuzzyMatchThreshold: undefined, modelTemperature: undefined, rateLimitSeconds: undefined, @@ -596,6 +598,7 @@ export const globalSettingsSchema = z.object({ rateLimitSeconds: z.number().optional(), diffEnabled: z.boolean().optional(), diffViewAutoFocus: z.boolean().optional(), + autoCloseRooTabs: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), @@ -675,6 +678,7 @@ const globalSettingsRecord: GlobalSettingsRecord = { rateLimitSeconds: undefined, diffEnabled: undefined, diffViewAutoFocus: undefined, + autoCloseRooTabs: undefined, fuzzyMatchThreshold: undefined, experiments: undefined, diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 55543ecb42..fdff3d197b 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -154,6 +154,7 @@ export type ExtensionState = Pick< | "terminalCompressProgressBar" | "diffEnabled" | "diffViewAutoFocus" + | "autoCloseRooTabs" | "fuzzyMatchThreshold" // | "experiments" // Optional in GlobalSettings, required here. | "language" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 8cd5bd3018..250ade3bc7 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -12,6 +12,7 @@ export type AudioType = "notification" | "celebration" | "progress_loop" export interface WebviewMessage { type: | "diffViewAutoFocus" + | "autoCloseRooTabs" | "apiConfiguration" | "deleteMultipleTasksWithIds" | "currentApiConfigName" diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index 7e1f58ed53..47c4f00fa9 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -1853,6 +1853,7 @@ const ApiOptions = ({ setApiConfigurationField(field, value)} /> diff --git a/webview-ui/src/components/settings/DiffSettingsControl.tsx b/webview-ui/src/components/settings/DiffSettingsControl.tsx index fea9a89bcd..d23dbcdd40 100644 --- a/webview-ui/src/components/settings/DiffSettingsControl.tsx +++ b/webview-ui/src/components/settings/DiffSettingsControl.tsx @@ -3,11 +3,12 @@ import { Slider } from "@/components/ui" import { useAppTranslation } from "@/i18n/TranslationContext" import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" -type DiffSettingsControlField = "diffEnabled" | "fuzzyMatchThreshold" | "diffViewAutoFocus" +type DiffSettingsControlField = "diffEnabled" | "fuzzyMatchThreshold" | "diffViewAutoFocus" | "autoCloseRooTabs" interface DiffSettingsControlProps { diffEnabled?: boolean diffViewAutoFocus?: boolean + autoCloseRooTabs?: boolean fuzzyMatchThreshold?: number onChange: (field: DiffSettingsControlField, value: any) => void } @@ -17,6 +18,11 @@ interface DiffCheckAutoFocusControlProps { onChange: (e: any) => void } +interface DiffCheckAutoCloseControlProps { + autoCloseRooTabs: boolean + onChange: (e: any) => void +} + interface DiffPrecisionMatchControlProps { fuzzyMatchThreshold: number onValueChange: (newValue: number[]) => void @@ -36,6 +42,20 @@ const DiffViewAutoFocusControl: React.FC = ({ di ) } +const DiffViewAutoCloseControl: React.FC = ({ autoCloseRooTabs, onChange }) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.diff.autoClose.label")} + +
+ {t("settings:advanced.diff.autoClose.description")} +
+
+ ) +} + const DiffPrecisionMatchControl: React.FC = ({ fuzzyMatchThreshold, onValueChange, @@ -66,6 +86,7 @@ const DiffPrecisionMatchControl: React.FC = ({ export const DiffSettingsControl: React.FC = ({ diffEnabled = true, diffViewAutoFocus = true, + autoCloseRooTabs = false, fuzzyMatchThreshold = 1.0, onChange, }) => { @@ -92,6 +113,13 @@ export const DiffSettingsControl: React.FC = ({ [onChange], ) + const handleAutoCloseRooTabsChange = useCallback( + (e: any) => { + onChange("autoCloseRooTabs", e.target.checked) + }, + [onChange], + ) + return (
@@ -113,6 +141,10 @@ export const DiffSettingsControl: React.FC = ({ diffViewAutoFocus={diffViewAutoFocus} onChange={handleDiffViewAutoFocusChange} /> + )}
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index d49ad28415..2547dbd5f1 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -110,6 +110,7 @@ const SettingsView = forwardRef(({ onDone, t browserViewportSize, enableCheckpoints, diffViewAutoFocus, + autoCloseRooTabs, diffEnabled, experiments, fuzzyMatchThreshold, @@ -190,6 +191,8 @@ const SettingsView = forwardRef(({ onDone, t newState.diffEnabled = value as boolean // type is boolean } else if (field === "diffViewAutoFocus") { newState.diffViewAutoFocus = value as boolean // type is boolean + } else if (field === "autoCloseRooTabs") { + newState.autoCloseRooTabs = value as boolean // type is boolean } else if (field === "fuzzyMatchThreshold") { newState.fuzzyMatchThreshold = value as number // type is number } @@ -246,6 +249,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "soundVolume", value: soundVolume }) vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) vscode.postMessage({ type: "diffViewAutoFocus", bool: diffViewAutoFocus }) + vscode.postMessage({ type: "autoCloseRooTabs", bool: autoCloseRooTabs }) vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index a78eed99a4..d40169c2f9 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -49,6 +49,7 @@ export interface ExtensionStateContextType extends ExtensionState { setTtsSpeed: (value: number) => void setDiffEnabled: (value: boolean) => void setDiffViewAutoFocus: (value: boolean) => void + setAutoCloseRooTabs: (value: boolean) => void setEnableCheckpoints: (value: boolean) => void setBrowserViewportSize: (value: string) => void setFuzzyMatchThreshold: (value: number) => void @@ -293,6 +294,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setTtsSpeed: (value) => setState((prevState) => ({ ...prevState, ttsSpeed: value })), setDiffEnabled: (value) => setState((prevState) => ({ ...prevState, diffEnabled: value })), setDiffViewAutoFocus: (value) => setState((prevState) => ({ ...prevState, diffViewAutoFocus: value })), + setAutoCloseRooTabs: (value) => setState((prevState) => ({ ...prevState, autoCloseRooTabs: value })), setEnableCheckpoints: (value) => setState((prevState) => ({ ...prevState, enableCheckpoints: value })), setBrowserViewportSize: (value: string) => setState((prevState) => ({ ...prevState, browserViewportSize: value })), diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index f5a77f0697..4ceca3403f 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Enfoca automàticament la pestanya de diferències en mostrar canvis d'arxius", "description": "Si està desactivat, la pestanya de diferències s'obrirà en segon pla i no prendrà el focus." + }, + "autoClose": { + "label": "Tanca automàticament les pestanyes de Roo", + "description": "Quan està activat, Roo tancarà automàticament les pestanyes que hagi obert (com les vistes de diferències i els fitxers oberts) quan una tasca que impliqui modificació de fitxers es completi o es reverteixi." } } }, diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index cdc8c08d2a..f0e5e7964f 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Diff-Tab beim Anzeigen von Dateiänderungen automatisch fokussieren", "description": "Wenn deaktiviert, wird der Diff-Tab im Hintergrund geöffnet und stiehlt nicht den Fokus." + }, + "autoClose": { + "label": "Roo-Tabs automatisch schließen", + "description": "Wenn aktiviert, schließt Roo automatisch alle Tabs, die es selbst geöffnet hat (wie Diff-Ansichten und geöffnete Dateien), wenn eine Aufgabe mit Dateiänderungen abgeschlossen oder zurückgesetzt wird." } } }, diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 4008638110..655bf93a87 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Automatically focus the diff tab when showing file changes", "description": "If disabled, the diff tab will open in the background instead of stealing focus." + }, + "autoClose": { + "label": "Automatically close Roo tabs", + "description": "When enabled, Roo will automatically close any tabs it has opened itself (like diff views, opened files) when a task involving file modification is completed or reverted." } } }, diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 92f0734a67..fffc7f499a 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Enfocar automáticamente la pestaña de diferencias al mostrar cambios de archivos", "description": "Si está desactivado, la pestaña de diferencias se abrirá en segundo plano y no tomará el foco." + }, + "autoClose": { + "label": "Cerrar automáticamente las pestañas de Roo", + "description": "Cuando está habilitado, Roo cerrará automáticamente las pestañas que haya abierto (como vistas de diferencias y archivos abiertos) cuando una tarea que involucre modificación de archivos se complete o se revierta." } } }, diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 73907e3f7b..1293dfc7d4 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -373,8 +373,12 @@ "description": "Ce curseur contrôle la précision avec laquelle les sections de code doivent correspondre lors de l'application des diffs. Des valeurs plus basses permettent des correspondances plus flexibles mais augmentent le risque de remplacements incorrects. Utilisez des valeurs inférieures à 100 % avec une extrême prudence." }, "autoFocus": { - "label": "Mettre automatiquement le focus sur l’onglet de comparaison lors de l’affichage des modifications de fichiers", - "description": "Si désactivé, l’onglet de comparaison s’ouvrira en arrière-plan sans prendre le focus." + "label": "Mettre automatiquement le focus sur l'onglet de comparaison lors de l'affichage des modifications de fichiers", + "description": "Si désactivé, l'onglet de comparaison s'ouvrira en arrière-plan sans prendre le focus." + }, + "autoClose": { + "label": "Fermer automatiquement les onglets Roo", + "description": "Lorsqu'activé, Roo fermera automatiquement les onglets qu'il a ouverts (vues de différences, fichiers ouverts) lorsqu'une tâche impliquant une modification de fichiers est terminée ou annulée." } } }, diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 17a780851b..adf11e45ab 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "फ़ाइल परिवर्तनों को दिखाते समय डिफ टैब को स्वचालित रूप से फोकस करें", "description": "यदि अक्षम है, तो डिफ टैब पृष्ठभूमि में खुलेगा और फोकस नहीं लेगा।" + }, + "autoClose": { + "label": "Roo टैब स्वचालित रूप से बंद करें", + "description": "जब सक्षम किया जाता है, तो Roo उन सभी टैब को स्वचालित रूप से बंद कर देगा जिन्हें इसने खोला है (जैसे डिफ व्यू और खुली फ़ाइलें) जब फ़ाइल संशोधन वाला कार्य पूरा हो जाता है या वापस लिया जाता है।" } } }, diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 981495d3c5..c2bd664b88 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Metti automaticamente a fuoco la scheda diff quando vengono mostrati cambiamenti ai file", "description": "Se disabilitato, la scheda diff si aprirà in background senza prendere il focus." + }, + "autoClose": { + "label": "Chiudi automaticamente le schede Roo", + "description": "Quando abilitato, Roo chiuderà automaticamente le schede che ha aperto (come viste diff e file aperti) quando un'attività che coinvolge la modifica di file viene completata o annullata." } } }, diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 8f1bb6c269..46fd5cc5dc 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "ファイル変更を表示する際に差分タブを自動的にフォーカスする", "description": "無効にすると、差分タブはバックグラウンドで開き、フォーカスを奪いません。" + }, + "autoClose": { + "label": "Rooのタブを自動的に閉じる", + "description": "有効にすると、ファイルの変更を含むタスクが完了または取り消された時に、Rooが開いたタブ(差分ビューや開いたファイルなど)を自動的に閉じます。" } } }, diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index a98f86f41e..e566786548 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "파일 변경을 표시할 때 Diff 탭을 자동으로 포커스", "description": "비활성화하면 Diff 탭이 백그라운드에서 열리고 포커스를 빼앗지 않습니다." + }, + "autoClose": { + "label": "Roo 탭 자동 닫기", + "description": "활성화 시 Roo는 파일 수정이 포함된 작업이 완료되거나 취소될 때 자동으로 열었던 탭(차이점 보기, 열린 파일 등)을 닫습니다." } } }, diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 0d03e6812b..97d75fe2a3 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Automatycznie ustaw fokus na zakładce różnic przy wyświetlaniu zmian w plikach", "description": "Jeśli wyłączone, zakładka różnic otworzy się w tle i nie przejmie fokusu." + }, + "autoClose": { + "label": "Automatycznie zamykaj karty Roo", + "description": "Gdy włączone, Roo automatycznie zamknie karty, które otworzyło (takie jak widoki różnic i otwarte pliki), gdy zadanie obejmujące modyfikację plików zostanie zakończone lub cofnięte." } } }, diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 162646da36..511cefcdc7 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Focar automaticamente a aba de diferenças ao mostrar alterações de arquivos", "description": "Se desativado, a aba de diferenças será aberta em segundo plano e não tomará o foco." + }, + "autoClose": { + "label": "Fechar automaticamente as abas do Roo", + "description": "Quando ativado, o Roo fechará automaticamente as abas que abriu (como visualizações de diferenças e arquivos abertos) quando uma tarefa que envolve modificação de arquivos é concluída ou revertida." } } }, diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 96bc3d9e6d..72eeaa641e 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Автоматически фокусировать вкладку сравнения при показе изменений файлов", "description": "Если отключено, вкладка сравнения откроется в фоновом режиме и не будет забирать фокус." + }, + "autoClose": { + "label": "Автоматически закрывать вкладки Roo", + "description": "Если включено, Roo будет автоматически закрывать открытые им вкладки (такие как просмотр изменений и открытые файлы), когда задача, включающая модификацию файлов, завершается или отменяется." } } }, diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 8b0aa71769..2df85f1fd8 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Dosya değişiklikleri gösterildiğinde diff sekmesine otomatik odaklan", "description": "Devre dışı bırakılırsa, diff sekmesi arka planda açılır ve odağı almaz." + }, + "autoClose": { + "label": "Roo'nun açtığı sekmeleri otomatik kapat", + "description": "Etkinleştirildiğinde, Roo dosya değişikliği içeren bir görev tamamlandığında veya geri alındığında açtığı sekmeleri (ör. diff görünümleri, açılan dosyalar) otomatik olarak kapatacaktır." } } }, diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 11c226063d..7414c97f50 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "Tự động chuyển tiêu điểm sang tab so sánh khi hiển thị thay đổi tệp", "description": "Nếu tắt, tab so sánh sẽ mở ở chế độ nền và không chiếm tiêu điểm." + }, + "autoClose": { + "label": "Tự động đóng các tab Roo", + "description": "Khi bật, Roo sẽ tự động đóng các tab nó đã mở (như chế độ xem diff, các tệp đã mở) khi một tác vụ liên quan đến sửa đổi tệp hoàn thành hoặc được hoàn tác." } } }, diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index a58a3890e6..d3c5b27c6e 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "在显示文件更改时自动聚焦差异标签页", "description": "禁用后,差异标签页将在后台打开,不会抢占焦点。" + }, + "autoClose": { + "label": "自动关闭Roo打开的标签页", + "description": "启用后,Roo会在涉及文件修改的任务完成或回退时自动关闭它自己打开的标签页(如差异视图、打开的文件)。" } } }, diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 5a5d435a46..f55f857131 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -375,6 +375,10 @@ "autoFocus": { "label": "顯示檔案變更時自動聚焦差異分頁", "description": "若停用,差異分頁將在背景開啟且不會搶奪焦點。" + }, + "autoClose": { + "label": "自動關閉 Roo 開啟的分頁", + "description": "啟用後,Roo 會在涉及檔案修改的任務完成或復原時,自動關閉它開啟的分頁(如差異檢視、開啟的檔案)。" } } }, From aa87e05472b511ade2db46dbbc93c0495197b57e Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 4 May 2025 21:19:31 +0200 Subject: [PATCH 21/66] fix(diffView): set default view column to -1 for proper initialization --- src/integrations/editor/DiffViewProvider.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 15f61680e8..6707acecf6 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -29,7 +29,8 @@ export class DiffViewProvider { private rooOpenedTabs: Set = new Set() private preserveFocus: boolean = false private autoFocus: boolean = true - private viewColumn: ViewColumn = ViewColumn.Active + // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined + private viewColumn: ViewColumn = -1 // ViewColumn.Active constructor(private cwd: string) {} From 1d2c965849cb070e983c6fe4885ee0ac0b568958 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 4 May 2025 21:26:09 +0200 Subject: [PATCH 22/66] fix(diffView): remove unnecessary check for autoCloseRooTabs in closeAllRooOpenedViews --- src/integrations/editor/DiffViewProvider.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 6707acecf6..2194926643 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -308,9 +308,6 @@ export class DiffViewProvider { private async closeAllRooOpenedViews() { const autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) - if (!autoCloseTabs) { - return - } const tabs = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) From fedddae03fd9b9bef7f99969c90a74a46b16b705 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 4 May 2025 22:10:52 +0200 Subject: [PATCH 23/66] feat(diffView): add autoCloseTabs setting to manage tab closure behavior --- src/integrations/editor/DiffViewProvider.ts | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 2194926643..7046d08924 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -29,6 +29,7 @@ export class DiffViewProvider { private rooOpenedTabs: Set = new Set() private preserveFocus: boolean = false private autoFocus: boolean = true + private autoCloseTabs: boolean = false // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined private viewColumn: ViewColumn = -1 // ViewColumn.Active @@ -37,6 +38,7 @@ export class DiffViewProvider { async initialize(viewColumn: ViewColumn) { const provider = ClineProvider.getVisibleInstance() const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + const autoApproval = (provider?.getValue("autoApprovalEnabled") && provider?.getValue("alwaysAllowWrite")) ?? false // If autoApproval is enabled, we want to preserve focus if autoFocus is disabled @@ -45,6 +47,7 @@ export class DiffViewProvider { // If autoFocus is disabled, we want to preserve focus on the diff editor we are working on. this.preserveFocus = autoApproval && !autoFocus this.autoFocus = autoFocus + this.autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) this.viewColumn = viewColumn // Track currently visible editors and active editor for focus restoration and tab cleanup this.rooOpenedTabs.clear() @@ -102,10 +105,6 @@ export class DiffViewProvider { this.documentWasOpen = true } this.activeDiffEditor = await this.openDiffEditor() - // Track the diff editor tab as opened by Roo - if (this.activeDiffEditor) { - this.rooOpenedTabs.add(this.activeDiffEditor.document.uri.toString()) - } this.fadedOverlayController = new DecorationController("fadedOverlay", this.activeDiffEditor) this.activeLineController = new DecorationController("activeLine", this.activeDiffEditor) // Apply faded overlay to all lines initially @@ -118,9 +117,8 @@ export class DiffViewProvider { * Opens a file editor and tracks it as opened by Roo if not already open. */ private async showAndTrackEditor(uri: vscode.Uri, options: vscode.TextDocumentShowOptions = {}) { - const alreadyOpen = vscode.window.visibleTextEditors.some((ed) => ed.document.uri.toString() === uri.toString()) const editor = await vscode.window.showTextDocument(uri, options) - if (!alreadyOpen) { + if (this.autoCloseTabs && !this.documentWasOpen) { this.rooOpenedTabs.add(uri.toString()) } return editor @@ -307,8 +305,6 @@ export class DiffViewProvider { } private async closeAllRooOpenedViews() { - const autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) - const tabs = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) .filter( @@ -316,7 +312,7 @@ export class DiffViewProvider { (tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) || // close if in rooOpenedTabs and autoCloseTabs is enabled - (autoCloseTabs && + (this.autoCloseTabs && tab.input instanceof vscode.TabInputText && this.rooOpenedTabs.has(tab.input.uri.toString())), ) @@ -393,8 +389,10 @@ export class DiffViewProvider { vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) .then(() => { - // Track the diff tab as opened by Roo - this.rooOpenedTabs.add(rightUri.toString()) + if (this.autoCloseTabs && !this.documentWasOpen) { + // If the diff tab is not already open, add it to the set + this.rooOpenedTabs.add(rightUri.toString()) + } // If autoFocus is true, we don't need to do anything if (this.autoFocus) { return From 14267350355b1a2976bb716cc1c87decd5a8a208 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Wed, 7 May 2025 01:13:47 +0200 Subject: [PATCH 24/66] feat(diffView): enhance auto-focus behavior and manage user interactions --- src/integrations/editor/DiffViewProvider.ts | 177 ++++++++++++++++---- 1 file changed, 144 insertions(+), 33 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 7046d08924..8952457a19 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode" -import { TextDocumentShowOptions, ViewColumn } from "vscode" +import { TextDocument, TextDocumentShowOptions, ViewColumn } from "vscode" import * as path from "path" import * as fs from "fs/promises" import { createDirectoriesForFile } from "../../utils/fs" @@ -27,32 +27,144 @@ export class DiffViewProvider { private streamedLines: string[] = [] private preDiagnostics: [vscode.Uri, vscode.Diagnostic[]][] = [] private rooOpenedTabs: Set = new Set() - private preserveFocus: boolean = false - private autoFocus: boolean = true + private preserveFocus: boolean | undefined = undefined + private autoApproval: boolean | undefined = undefined + private autoFocus: boolean | undefined = undefined private autoCloseTabs: boolean = false // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined private viewColumn: ViewColumn = -1 // ViewColumn.Active + private userInteractionListeners: vscode.Disposable[] = [] + private suppressInteractionFlag: boolean = false constructor(private cwd: string) {} - async initialize(viewColumn: ViewColumn) { + private async initialize(viewColumn: ViewColumn) { const provider = ClineProvider.getVisibleInstance() - const autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) - - const autoApproval = - (provider?.getValue("autoApprovalEnabled") && provider?.getValue("alwaysAllowWrite")) ?? false // If autoApproval is enabled, we want to preserve focus if autoFocus is disabled // AutoApproval is enabled when the user has set "alwaysAllowWrite" and "autoApprovalEnabled" to true // AutoFocus is enabled when the user has set "diffView.autoFocus" to true, this is the default. // If autoFocus is disabled, we want to preserve focus on the diff editor we are working on. - this.preserveFocus = autoApproval && !autoFocus - this.autoFocus = autoFocus + // we have to check for null values for the first initialization + if (this.autoApproval === undefined) { + this.autoApproval = + (provider?.getValue("autoApprovalEnabled") && provider?.getValue("alwaysAllowWrite")) ?? false + } + if (this.autoFocus === undefined) { + this.autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + } + this.preserveFocus = this.autoApproval && !this.autoFocus this.autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) this.viewColumn = viewColumn // Track currently visible editors and active editor for focus restoration and tab cleanup this.rooOpenedTabs.clear() } + private async showTextDocumentSafe({ + uri, + textDocument, + options, + }: { + uri?: vscode.Uri + textDocument?: TextDocument + options?: TextDocumentShowOptions + }) { + this.suppressInteractionFlag = true + // If the uri is already open, we want to focus it + if (uri) { + const editor = await vscode.window.showTextDocument(uri, options) + this.suppressInteractionFlag = false + return editor + } + // If the textDocument is already open, we want to focus it + if (textDocument) { + const editor = await vscode.window.showTextDocument(textDocument, options) + this.suppressInteractionFlag = false + return editor + } + // If the textDocument is not open and not able to be opened, we just reset the suppressInteractionFlag + this.suppressInteractionFlag = false + return null + } + + /** + * Resets the auto-focus listeners to prevent memory leaks. + * This is called when the diff editor is closed or when the user interacts with other editors. + */ + private resetAutoFocusListeners() { + this.userInteractionListeners.forEach((listener) => listener.dispose()) + this.userInteractionListeners = [] + } + + /** + * Disables auto-focus on the diff editor after user interaction. + * This is to prevent the diff editor from stealing focus when the user interacts with other editors or tabs. + */ + private disableAutoFocusAfterUserInteraction() { + this.resetAutoFocusListeners() + // first reset listeners if they exist + this.userInteractionListeners.forEach((listener) => listener.dispose()) + this.userInteractionListeners = [] + // if auto approval is disabled or auto focus is disabled, we don't need to add listeners + if (!this.autoApproval || !this.autoFocus) { + return + } + // then add new listeners + const changeTextEditorSelectionListener = vscode.window.onDidChangeTextEditorSelection((_e) => { + // If the change was done programmatically, or if there is actually no editor or the user did not allow auto approval, we don't want to suppress focus + if (this.suppressInteractionFlag) { + // If the user is interacting with the diff editor, we don't want to suppress focus + // If the user is interacting with another editor, we want to suppress focus + return + } + // Consider this a "user interaction" + this.preserveFocus = true + this.autoFocus = false + // remove the listeners since we don't need them anymore + this.resetAutoFocusListeners() + }, this) + const changeActiveTextEditorListener = vscode.window.onDidChangeActiveTextEditor((editor) => { + // If the change was done programmatically, or if there is actually no editor or the user did not allow auto approval, we don't want to suppress focus + if (this.suppressInteractionFlag || !editor) { + // If the user is interacting with the diff editor, we don't want to suppress focus + // If the user is interacting with another editor, we want to suppress focus + return + } + // Consider this a "user interaction" + this.preserveFocus = true + this.autoFocus = false + // remove the listeners since we don't need them anymore + this.resetAutoFocusListeners() + }, this) + const changeTabListener = vscode.window.tabGroups.onDidChangeTabs((_e) => { + // Some tab was added/removed/changed + // If the change was done programmatically, or the user did not allow auto approval, we don't want to suppress focus + if (this.suppressInteractionFlag) { + return + } + this.preserveFocus = true + this.autoFocus = false + // remove the listeners since we don't need them anymore + this.resetAutoFocusListeners() + }, this) + const changeTabGroupListener = vscode.window.tabGroups.onDidChangeTabGroups((_e) => { + // Tab group layout changed (e.g., split view) + // If the change was done programmatically, or the user did not allow auto approval, we don't want to suppress focus + if (this.suppressInteractionFlag) { + return + } + this.preserveFocus = true + this.autoFocus = false + // remove the listeners since we don't need them anymore + this.resetAutoFocusListeners() + }, this) + this.userInteractionListeners.push( + changeTextEditorSelectionListener, + changeActiveTextEditorListener, + changeTabListener, + changeTabGroupListener, + ) + } + /** * Opens a diff editor for the given relative path, optionally in a specific viewColumn. * @param relPath The relative file path to open. @@ -60,6 +172,7 @@ export class DiffViewProvider { */ async open(relPath: string, viewColumn: ViewColumn): Promise { await this.initialize(viewColumn) + this.disableAutoFocusAfterUserInteraction() // Set the edit type based on the file existence this.relPath = relPath const fileExists = this.editType === "modify" @@ -117,7 +230,7 @@ export class DiffViewProvider { * Opens a file editor and tracks it as opened by Roo if not already open. */ private async showAndTrackEditor(uri: vscode.Uri, options: vscode.TextDocumentShowOptions = {}) { - const editor = await vscode.window.showTextDocument(uri, options) + const editor = await this.showTextDocumentSafe({ uri, options }) if (this.autoCloseTabs && !this.documentWasOpen) { this.rooOpenedTabs.add(uri.toString()) } @@ -193,26 +306,11 @@ export class DiffViewProvider { if (!this.relPath || !this.newContent || !this.activeDiffEditor) { return { newProblemsMessage: undefined, userEdits: undefined, finalContent: undefined } } - const absolutePath = path.resolve(this.cwd, this.relPath) const updatedDocument = this.activeDiffEditor.document const editedContent = updatedDocument.getText() if (updatedDocument.isDirty) { await updatedDocument.save() } - const previousEditor = vscode.window.activeTextEditor - const textDocumentShowOptions: TextDocumentShowOptions = { - preview: false, - preserveFocus: this.preserveFocus, - viewColumn: this.viewColumn, - } - await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), textDocumentShowOptions) - if (!this.autoFocus && previousEditor) { - await vscode.window.showTextDocument(previousEditor.document, { - preview: false, - preserveFocus: false, - selection: previousEditor.selection, - }) - } await this.closeAllRooOpenedViews() /* Getting diagnostics before and after the file edit is a better approach than @@ -293,8 +391,11 @@ export class DiffViewProvider { await updatedDocument.save() console.log(`File ${absolutePath} has been reverted to its original content.`) if (this.documentWasOpen) { - await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { - preview: false, + await this.showTextDocumentSafe({ + uri: vscode.Uri.file(absolutePath), + options: { + preview: false, + }, }) } await this.closeAllRooOpenedViews() @@ -386,9 +487,13 @@ export class DiffViewProvider { preserveFocus: this.preserveFocus, viewColumn: this.viewColumn, } + // set interaction flag to true to prevent autoFocus from being triggered + this.suppressInteractionFlag = true vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) .then(() => { + // set interaction flag to false to allow autoFocus to be triggered + this.suppressInteractionFlag = false if (this.autoCloseTabs && !this.documentWasOpen) { // If the diff tab is not already open, add it to the set this.rooOpenedTabs.add(rightUri.toString()) @@ -402,11 +507,14 @@ export class DiffViewProvider { return } // if there is, we need to focus it - vscode.window.showTextDocument(previousEditor.document, { - preview: false, - // we need to force focus here now, because we want to restore the previous selection - preserveFocus: false, - selection: previousEditor.selection, + this.showTextDocumentSafe({ + textDocument: previousEditor.document, + options: { + preview: false, + preserveFocus: false, + selection: previousEditor.selection, + viewColumn: previousEditor.viewColumn, + }, }) }) .then(() => { @@ -479,5 +587,8 @@ export class DiffViewProvider { this.activeLineController = undefined this.streamedLines = [] this.preDiagnostics = [] + this.rooOpenedTabs.clear() + this.autoCloseTabs = false + this.resetAutoFocusListeners() } } From ee10d10079380036cbb008047c84ccdfa8275e37 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 9 May 2025 11:18:04 +0200 Subject: [PATCH 25/66] feat(settings): streamline JSON structure and add auto-focus and auto-close options for diff tabs in NL --- webview-ui/src/i18n/locales/nl/settings.json | 51 ++++++-------------- 1 file changed, 16 insertions(+), 35 deletions(-) diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index e812d78f26..f47e5eb79c 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -141,10 +141,7 @@ "label": "Computergebruik", "description": "Kan dit model met een browser werken? (bijv. Claude 3.7 Sonnet)." }, - "promptCache": { - "label": "Prompt caching", - "description": "Kan dit model prompts cachen?" - }, + "promptCache": { "label": "Prompt caching", "description": "Kan dit model prompts cachen?" }, "pricing": { "input": { "label": "Invoerprijs", @@ -165,16 +162,8 @@ }, "resetDefaults": "Standaardwaarden herstellen" }, - "rateLimitSeconds": { - "label": "Snelheidslimiet", - "description": "Minimale tijd tussen API-verzoeken." - }, - "reasoningEffort": { - "label": "Model redeneervermogen", - "high": "Hoog", - "medium": "Middel", - "low": "Laag" - }, + "rateLimitSeconds": { "label": "Snelheidslimiet", "description": "Minimale tijd tussen API-verzoeken." }, + "reasoningEffort": { "label": "Model redeneervermogen", "high": "Hoog", "medium": "Middel", "low": "Laag" }, "setReasoningLevel": "Redeneervermogen inschakelen" }, "header": { @@ -237,10 +226,7 @@ "label": "Modus", "description": "Automatisch tussen verschillende modi schakelen zonder goedkeuring" }, - "subtasks": { - "label": "Subtaken", - "description": "Subtaken aanmaken en afronden zonder goedkeuring" - }, + "subtasks": { "label": "Subtaken", "description": "Subtaken aanmaken en afronden zonder goedkeuring" }, "execute": { "label": "Uitvoeren", "description": "Automatisch toegestane terminalcommando's uitvoeren zonder goedkeuring", @@ -318,10 +304,7 @@ } }, "terminal": { - "basic": { - "label": "Terminalinstellingen: Basis", - "description": "Basis terminalinstellingen" - }, + "basic": { "label": "Terminalinstellingen: Basis", "description": "Basis terminalinstellingen" }, "advanced": { "label": "Terminalinstellingen: Geavanceerd", "description": "De volgende opties vereisen mogelijk een herstart van de terminal om de instelling toe te passen." @@ -391,6 +374,14 @@ "matchPrecision": { "label": "Matchnauwkeurigheid", "description": "Deze schuifregelaar bepaalt hoe nauwkeurig codeblokken moeten overeenkomen bij het toepassen van diffs. Lagere waarden laten flexibelere matching toe maar verhogen het risico op verkeerde vervangingen. Gebruik waarden onder 100% met uiterste voorzichtigheid." + }, + "autoFocus": { + "label": "Diff-tabblad automatisch focussen bij het tonen van bestandswijzigingen", + "description": "Indien uitgeschakeld, wordt het diff-tabblad op de achtergrond geopend zonder de focus over te nemen." + }, + "autoClose": { + "label": "Door Roo geopende tabbladen automatisch sluiten", + "description": "Indien ingeschakeld, sluit Roo automatisch alle tabbladen die het zelf heeft geopend (zoals diff-weergaven, geopende bestanden) wanneer een taak met bestandswijzigingen wordt voltooid of teruggedraaid." } } }, @@ -462,16 +453,9 @@ "label": "Anonieme fout- en gebruiksrapportage toestaan", "description": "Help Roo Code te verbeteren door anonieme gebruiksgegevens en foutmeldingen te verzenden. Er worden nooit code, prompts of persoonlijke gegevens verzonden. Zie ons privacybeleid voor meer informatie." }, - "settings": { - "import": "Importeren", - "export": "Exporteren", - "reset": "Resetten" - } - }, - "thinkingBudget": { - "maxTokens": "Max tokens", - "maxThinkingTokens": "Max denk-tokens" + "settings": { "import": "Importeren", "export": "Exporteren", "reset": "Resetten" } }, + "thinkingBudget": { "maxTokens": "Max tokens", "maxThinkingTokens": "Max denk-tokens" }, "validation": { "apiKey": "Je moet een geldige API-sleutel opgeven.", "awsRegion": "Je moet een regio kiezen om Amazon Bedrock te gebruiken.", @@ -514,8 +498,5 @@ "lmStudioUrl": "Standaard: http://localhost:1234", "geminiUrl": "Standaard: https://generativelanguage.googleapis.com" }, - "labels": { - "customArn": "Aangepaste ARN", - "useCustomArn": "Aangepaste ARN gebruiken..." - } + "labels": { "customArn": "Aangepaste ARN", "useCustomArn": "Aangepaste ARN gebruiken..." } } From 927760cda1ce9788c4fa38a57dce9b570e8ab166 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 9 May 2025 12:00:44 +0200 Subject: [PATCH 26/66] feat(diffView): refactor diff view reset methods to include listeners and run in initiateTaskLoop --- src/core/task/Task.ts | 23 +++++-------------- src/core/tools/applyDiffTool.ts | 4 ++-- src/core/tools/insertContentTool.ts | 6 ++--- src/core/tools/searchAndReplaceTool.ts | 10 ++++----- src/core/tools/writeToFileTool.ts | 8 +++---- src/integrations/editor/DiffViewProvider.ts | 25 +++++++++------------ 6 files changed, 30 insertions(+), 46 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 05c9785452..f4e9fff454 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -572,13 +572,7 @@ export class Task extends EventEmitter { console.log(`[subtasks] task ${this.taskId}.${this.instanceId} starting`) - await this.initiateTaskLoop([ - { - type: "text", - text: `\n${task}\n`, - }, - ...imageBlocks, - ]) + await this.initiateTaskLoop([{ type: "text", text: `\n${task}\n` }, ...imageBlocks]) } public async resumePausedTask(lastMessage: string) { @@ -593,12 +587,7 @@ export class Task extends EventEmitter { await this.addToApiConversationHistory({ role: "user", - content: [ - { - type: "text", - text: `[new_task completed] Result: ${lastMessage}`, - }, - ], + content: [{ type: "text", text: `[new_task completed] Result: ${lastMessage}` }], }) } catch (error) { this.providerRef @@ -900,6 +889,9 @@ export class Task extends EventEmitter { private async initiateTaskLoop(userContent: Anthropic.Messages.ContentBlockParam[]): Promise { // Kicks off the checkpoints initialization process in the background. getCheckpointService(this) + // Lets track if the user is interacting with the editor after we start our task loop. + this.diffViewProvider.initialize() + this.diffViewProvider.disableAutoFocusAfterUserInteraction() let nextUserContent = userContent let includeFileDetails = true @@ -1480,10 +1472,7 @@ export class Task extends EventEmitter { // Convert image blocks to text descriptions. // Note: We can't access the actual image content/url due to API limitations, // but we can indicate that an image was present in the conversation. - return { - type: "text", - text: "[Referenced image in conversation]", - } + return { type: "text", text: "[Referenced image in conversation]" } } return block }) diff --git a/src/core/tools/applyDiffTool.ts b/src/core/tools/applyDiffTool.ts index 5f6b0b23f5..3efb10b2ea 100644 --- a/src/core/tools/applyDiffTool.ts +++ b/src/core/tools/applyDiffTool.ts @@ -207,13 +207,13 @@ export async function applyDiffTool( ) } - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } } catch (error) { await handleError("applying diff", error) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } } diff --git a/src/core/tools/insertContentTool.ts b/src/core/tools/insertContentTool.ts index 8a9e622d09..a339a81937 100644 --- a/src/core/tools/insertContentTool.ts +++ b/src/core/tools/insertContentTool.ts @@ -144,7 +144,7 @@ export async function insertContentTool( pushToolResult( `The content was successfully inserted in ${relPath.toPosix()} at line ${lineNumber}.${newProblemsMessage}`, ) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } @@ -168,9 +168,9 @@ export async function insertContentTool( `${newProblemsMessage}`, ) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() } catch (error) { handleError("insert content", error) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() } } diff --git a/src/core/tools/searchAndReplaceTool.ts b/src/core/tools/searchAndReplaceTool.ts index 0ef564807d..21088502d1 100644 --- a/src/core/tools/searchAndReplaceTool.ts +++ b/src/core/tools/searchAndReplaceTool.ts @@ -184,7 +184,7 @@ export async function searchAndReplaceTool( const diff = formatResponse.createPrettyPatch(validRelPath, fileContent, newContent) if (!diff) { pushToolResult(`No changes needed for '${relPath}'`) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } @@ -210,7 +210,7 @@ export async function searchAndReplaceTool( if (!didApprove) { await cline.diffViewProvider.revertChanges() pushToolResult("Changes were rejected by the user.") - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } @@ -225,7 +225,7 @@ export async function searchAndReplaceTool( if (!userEdits) { pushToolResult(`The content was successfully replaced in ${relPath}.${newProblemsMessage}`) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } @@ -253,10 +253,10 @@ export async function searchAndReplaceTool( // Record successful tool usage and cleanup cline.recordToolUsage("search_and_replace") - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() } catch (error) { handleError("search and replace", error) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() } } diff --git a/src/core/tools/writeToFileTool.ts b/src/core/tools/writeToFileTool.ts index 95057fb2a3..76b233e381 100644 --- a/src/core/tools/writeToFileTool.ts +++ b/src/core/tools/writeToFileTool.ts @@ -101,7 +101,7 @@ export async function writeToFileTool( cline.consecutiveMistakeCount++ cline.recordToolError("write_to_file") pushToolResult(await cline.sayAndCreateMissingParamError("write_to_file", "path")) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } @@ -109,7 +109,7 @@ export async function writeToFileTool( cline.consecutiveMistakeCount++ cline.recordToolError("write_to_file") pushToolResult(await cline.sayAndCreateMissingParamError("write_to_file", "content")) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } @@ -246,13 +246,13 @@ export async function writeToFileTool( pushToolResult(`The content was successfully saved to ${relPath.toPosix()}.${newProblemsMessage}`) } - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } } catch (error) { await handleError("writing file", error) - await cline.diffViewProvider.reset() + await cline.diffViewProvider.resetWithListeners() return } } diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 8952457a19..035b18ef16 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -38,7 +38,7 @@ export class DiffViewProvider { constructor(private cwd: string) {} - private async initialize(viewColumn: ViewColumn) { + public async initialize() { const provider = ClineProvider.getVisibleInstance() // If autoApproval is enabled, we want to preserve focus if autoFocus is disabled // AutoApproval is enabled when the user has set "alwaysAllowWrite" and "autoApprovalEnabled" to true @@ -54,7 +54,6 @@ export class DiffViewProvider { } this.preserveFocus = this.autoApproval && !this.autoFocus this.autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) - this.viewColumn = viewColumn // Track currently visible editors and active editor for focus restoration and tab cleanup this.rooOpenedTabs.clear() } @@ -99,11 +98,8 @@ export class DiffViewProvider { * Disables auto-focus on the diff editor after user interaction. * This is to prevent the diff editor from stealing focus when the user interacts with other editors or tabs. */ - private disableAutoFocusAfterUserInteraction() { + public disableAutoFocusAfterUserInteraction() { this.resetAutoFocusListeners() - // first reset listeners if they exist - this.userInteractionListeners.forEach((listener) => listener.dispose()) - this.userInteractionListeners = [] // if auto approval is disabled or auto focus is disabled, we don't need to add listeners if (!this.autoApproval || !this.autoFocus) { return @@ -171,7 +167,7 @@ export class DiffViewProvider { * @param viewColumn (Optional) The VSCode editor group to open the diff in. */ async open(relPath: string, viewColumn: ViewColumn): Promise { - await this.initialize(viewColumn) + this.viewColumn = viewColumn this.disableAutoFocusAfterUserInteraction() // Set the edit type based on the file existence this.relPath = relPath @@ -391,18 +387,13 @@ export class DiffViewProvider { await updatedDocument.save() console.log(`File ${absolutePath} has been reverted to its original content.`) if (this.documentWasOpen) { - await this.showTextDocumentSafe({ - uri: vscode.Uri.file(absolutePath), - options: { - preview: false, - }, - }) + await this.showTextDocumentSafe({ uri: vscode.Uri.file(absolutePath), options: { preview: false } }) } await this.closeAllRooOpenedViews() } // edit is done - await this.reset() + this.resetWithListeners() } private async closeAllRooOpenedViews() { @@ -576,7 +567,7 @@ export class DiffViewProvider { } // close editor if open? - async reset() { + reset() { this.editType = undefined this.isEditing = false this.originalContent = undefined @@ -589,6 +580,10 @@ export class DiffViewProvider { this.preDiagnostics = [] this.rooOpenedTabs.clear() this.autoCloseTabs = false + } + + resetWithListeners() { + this.reset() this.resetAutoFocusListeners() } } From 945666bc37c315cd01a795b7588ddf801ff0f4a5 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Fri, 9 May 2025 19:01:20 +0200 Subject: [PATCH 27/66] feat(diffView): fix diffViewProvider config tests (ugly for now) --- .../editor/__tests__/DiffViewProvider.test.ts | 71 ++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index fe06ff8800..a5facefce5 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -5,7 +5,14 @@ import { DiffViewProvider } from "../DiffViewProvider" jest.mock("vscode", () => ({ ...jest.requireActual("vscode"), workspace: { - getConfiguration: jest.fn(), + // mock vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + getConfiguration: jest.fn(() => ({ + get: jest.fn((key: string) => { + if (key === "diffViewAutoFocus") return true + if (key === "autoCloseRooTabs") return true + return undefined + }), + })), }, window: { tabGroups: { all: [] }, @@ -36,6 +43,21 @@ jest.mock("vscode", () => ({ Selection: jest.requireActual("vscode").Selection, })) +// mock cline provider +jest.mock("../../../core/webview/ClineProvider", () => ({ + __esModule: true, + ClineProvider: { + // This is the inner ClineProvider object/class + getVisibleInstance: jest.fn(() => ({ + getValue: jest.fn((key: string) => { + if (key === "autoApprovalEnabled") return true + if (key === "alwaysAllowWrite") return true + return undefined + }), + })), + }, +})) + describe("DiffViewProvider", () => { const cwd = "/mock" const relPath = "file.txt" @@ -55,6 +77,7 @@ describe("DiffViewProvider", () => { }) const executeCommand = vscode.commands.executeCommand as jest.Mock executeCommand.mockResolvedValue(undefined) + await provider["initialize"]() const promise = provider["openDiffEditor"]() // Simulate editor activation setTimeout(() => { @@ -70,7 +93,7 @@ describe("DiffViewProvider", () => { expect.anything(), expect.anything(), expect.anything(), - expect.objectContaining({ preserveFocus: false }), + expect.objectContaining({ preserveFocus: false, preview: false, viewColumn: -1 }), ) }) @@ -80,6 +103,48 @@ describe("DiffViewProvider", () => { }) const executeCommand = vscode.commands.executeCommand as jest.Mock executeCommand.mockResolvedValue(undefined) + // mock correct values for autoFocus false + jest.mock("vscode", () => ({ + ...jest.requireActual("vscode"), + workspace: { + // mock vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + getConfiguration: jest.fn(() => ({ + get: jest.fn((key: string) => { + if (key === "diffViewAutoFocus") return false + if (key === "autoCloseRooTabs") return true + return undefined + }), + })), + }, + window: { + tabGroups: { all: [] }, + visibleTextEditors: [], + onDidChangeActiveTextEditor: jest.fn(), + showTextDocument: jest.fn(), + createTextEditorDecorationType: jest.fn(), + }, + commands: { + executeCommand: jest.fn(), + }, + Uri: { + ...jest.requireActual("vscode").Uri, + parse: jest.fn((value: string) => ({ + scheme: "file", + path: value, + with: jest.fn((options) => ({ + ...options, + scheme: options.scheme || "file", + path: options.path || value, + })), + })), + }, + ViewColumn: { Beside: 2 }, + TextEditorRevealType: { AtTop: 1, InCenter: 2 }, + Position: jest.requireActual("vscode").Position, + Range: jest.requireActual("vscode").Range, + Selection: jest.requireActual("vscode").Selection, + })) + await provider["initialize"]() const promise = provider["openDiffEditor"]() // Simulate editor activation setTimeout(() => { @@ -95,7 +160,7 @@ describe("DiffViewProvider", () => { expect.anything(), expect.anything(), expect.anything(), - expect.objectContaining({ preserveFocus: true }), + expect.objectContaining({ preserveFocus: true, preview: false, viewColumn: -1 }), ) }) }) From 7629191372fc4125f2f7602d9de2699e147cead0 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 11 May 2025 19:21:03 +0200 Subject: [PATCH 28/66] feat(view): enhance view column handling for multiple windows and WebviewPanels --- src/core/webview/ClineProvider.ts | 18 ++++++++++++++++- src/integrations/editor/DiffViewProvider.ts | 22 +++++++++++---------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 0ebe11532f..15372c6b56 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1535,9 +1535,25 @@ export class ClineProvider extends EventEmitter implements // add getter for view public getViewColumn(): vscode.ViewColumn { + // we can only check tabgroups, as there is no official api to check if there are multiple torn windows + const multipleWindows = vscode.window.tabGroups.all.length > 1 + // if there's only one active window, use vscodes native ability to chose the view column etc without losing focus + if (!multipleWindows) { + // If there are no other windows, return the active view column + return vscode.ViewColumn.Active + } + // If there are multiple windows, we need to check if the view is a WebviewPanel + const isViewPanel = this.view?.viewType === "roo-cline.TabPanelProvider" + if (!isViewPanel) { + // If the view is not a WebviewPanel, return 1. 1 is the default view column of the editor. + // Non default values can only be found in WebviewPanel. + return vscode.ViewColumn.One + } // If the view is a WebviewPanel, return its viewColumn. // This property is only set if the webview is in one of the editor view columns. // Therefore, we can safely return it or default to beside. - return (this.view as vscode.WebviewPanel).viewColumn ?? vscode.ViewColumn.Active + const viewColumn = (this.view as vscode.WebviewPanel).viewColumn + // If the view is not a WebviewPanel, return the default view column, which is 1. This + return viewColumn ?? vscode.ViewColumn.Active } } diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 035b18ef16..846b490732 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -497,16 +497,18 @@ export class DiffViewProvider { if (!previousEditor) { return } - // if there is, we need to focus it - this.showTextDocumentSafe({ - textDocument: previousEditor.document, - options: { - preview: false, - preserveFocus: false, - selection: previousEditor.selection, - viewColumn: previousEditor.viewColumn, - }, - }) + // if this happens in a window different from the active one, we need to show the document + if (this.viewColumn !== ViewColumn.Active) { + this.showTextDocumentSafe({ + textDocument: previousEditor.document, + options: { + preview: false, + preserveFocus: false, + selection: previousEditor.selection, + viewColumn: previousEditor.viewColumn, + }, + }) + } }) .then(() => { this.getEditorFromDiffTab(rightUri).then((editor) => { From f4ab14d6de920589ed05e65f00329c9fd9eaedf0 Mon Sep 17 00:00:00 2001 From: seedlord Date: Tue, 13 May 2025 04:04:33 +0200 Subject: [PATCH 29/66] fix: comment out tab closing logic in DiffViewProvider --- src/integrations/editor/DiffViewProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 846b490732..2ea177999c 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -209,7 +209,7 @@ export class DiffViewProvider { ) for (const tab of tabs) { if (!tab.isDirty) { - await vscode.window.tabGroups.close(tab) + //await vscode.window.tabGroups.close(tab) } this.documentWasOpen = true } From 479986577c94aca2ec832130d3e546f542c20cc6 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Wed, 14 May 2025 18:04:06 +0200 Subject: [PATCH 30/66] fix(exports): add exports/types.ts change leftovers from merge --- src/exports/types.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/exports/types.ts b/src/exports/types.ts index 6c4e653b58..4dfa7e2ea5 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -601,6 +601,8 @@ type IpcMessage = includeMaxTokens?: boolean | undefined reasoningEffort?: ("low" | "medium" | "high") | undefined diffEnabled?: boolean | undefined + diffViewAutoFocus?: boolean | undefined + autoCloseRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -1065,6 +1067,8 @@ type TaskCommand = includeMaxTokens?: boolean | undefined reasoningEffort?: ("low" | "medium" | "high") | undefined diffEnabled?: boolean | undefined + diffViewAutoFocus?: boolean | undefined + autoCloseRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined From f2627fead6a767c4324390b9826d2bb9f1caf4c1 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Thu, 15 May 2025 11:17:57 +0200 Subject: [PATCH 31/66] fix(settings): update autoFocus description for clarity and consistency --- webview-ui/src/i18n/locales/ca/settings.json | 2 +- webview-ui/src/i18n/locales/de/settings.json | 2 +- webview-ui/src/i18n/locales/en/settings.json | 2 +- webview-ui/src/i18n/locales/es/settings.json | 2 +- webview-ui/src/i18n/locales/fr/settings.json | 2 +- webview-ui/src/i18n/locales/hi/settings.json | 2 +- webview-ui/src/i18n/locales/it/settings.json | 2 +- webview-ui/src/i18n/locales/ja/settings.json | 2 +- webview-ui/src/i18n/locales/ko/settings.json | 2 +- webview-ui/src/i18n/locales/nl/settings.json | 2 +- webview-ui/src/i18n/locales/pl/settings.json | 2 +- webview-ui/src/i18n/locales/pt-BR/settings.json | 2 +- webview-ui/src/i18n/locales/ru/settings.json | 2 +- webview-ui/src/i18n/locales/tr/settings.json | 2 +- webview-ui/src/i18n/locales/vi/settings.json | 2 +- webview-ui/src/i18n/locales/zh-CN/settings.json | 2 +- webview-ui/src/i18n/locales/zh-TW/settings.json | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 6d34fdbb4a..be46cd026b 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Enfoca automàticament la pestanya de diferències en mostrar canvis d'arxius", - "description": "Si està desactivat, la pestanya de diferències s'obrirà en segon pla i no prendrà el focus." + "description": "Si aquesta opció està desactivada, la pestanya de diferències s'obrirà en segon pla i no prendrà el focus. Això només s'aplica si 'autoApprovalEnabled' i 'autoApprovalEnabled' estan activats." }, "autoClose": { "label": "Tanca automàticament les pestanyes de Roo", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index d911590f50..ba4f76e241 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Diff-Tab beim Anzeigen von Dateiänderungen automatisch fokussieren", - "description": "Wenn deaktiviert, wird der Diff-Tab im Hintergrund geöffnet und stiehlt nicht den Fokus." + "description": "Wenn diese Option deaktiviert ist, wird der Diff-Tab im Hintergrund geöffnet und stiehlt nicht den Fokus. Dies gilt nur, wenn sowohl 'autoApprovalEnabled' als auch 'autoApprovalEnabled' aktiviert sind." }, "autoClose": { "label": "Roo-Tabs automatisch schließen", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 43bd2eb569..0b1771d42c 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Automatically focus the diff tab when showing file changes", - "description": "If disabled, the diff tab will open in the background instead of stealing focus." + "description": "If disabled, the diff tab will open in the background instead of stealing focus. This only applies if 'autoApprovalEnabled' and 'autoApprovalEnabled'" }, "autoClose": { "label": "Automatically close Roo tabs", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 43589e7799..c13f11c08f 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Enfocar automáticamente la pestaña de diferencias al mostrar cambios de archivos", - "description": "Si está desactivado, la pestaña de diferencias se abrirá en segundo plano y no tomará el foco." + "description": "Si está desactivado, la pestaña de diferencias se abrirá en segundo plano y no tomará el foco. Esto solo se aplica si 'autoApprovalEnabled' y 'autoApprovalEnabled' están activados." }, "autoClose": { "label": "Cerrar automáticamente las pestañas de Roo", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 0c469ada48..5c3984e20f 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Mettre automatiquement le focus sur l'onglet de comparaison lors de l'affichage des modifications de fichiers", - "description": "Si désactivé, l'onglet de comparaison s'ouvrira en arrière-plan sans prendre le focus." + "description": "Si cette option est désactivée, l’onglet de comparaison s’ouvrira en arrière-plan sans prendre le focus. Ceci ne s’applique que si 'autoApprovalEnabled' et 'autoApprovalEnabled' sont activés." }, "autoClose": { "label": "Fermer automatiquement les onglets Roo", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 6aef588b3e..03d7d93a16 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "फ़ाइल परिवर्तनों को दिखाते समय डिफ टैब को स्वचालित रूप से फोकस करें", - "description": "यदि अक्षम है, तो डिफ टैब पृष्ठभूमि में खुलेगा और फोकस नहीं लेगा।" + "description": "यदि यह विकल्प अक्षम है, तो डिफ टैब पृष्ठभूमि में खुलेगा और फोकस नहीं लेगा। यह केवल तब लागू होता है जब 'autoApprovalEnabled' और 'autoApprovalEnabled' सक्षम हैं।" }, "autoClose": { "label": "Roo टैब स्वचालित रूप से बंद करें", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 8b8acd04bd..ab64d40423 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Metti automaticamente a fuoco la scheda diff quando vengono mostrati cambiamenti ai file", - "description": "Se disabilitato, la scheda diff si aprirà in background senza prendere il focus." + "description": "Se questa opzione è disabilitata, la scheda diff si aprirà in background senza prendere il focus. Questo vale solo se 'autoApprovalEnabled' e 'autoApprovalEnabled' sono abilitati." }, "autoClose": { "label": "Chiudi automaticamente le schede Roo", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 5b6c57d597..d948c663e2 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "ファイル変更を表示する際に差分タブを自動的にフォーカスする", - "description": "無効にすると、差分タブはバックグラウンドで開き、フォーカスを奪いません。" + "description": "このオプションが無効の場合、差分タブはバックグラウンドで開き、フォーカスを奪いません。これは「autoApprovalEnabled」と「autoApprovalEnabled」が有効な場合にのみ適用されます。" }, "autoClose": { "label": "Rooのタブを自動的に閉じる", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index fbdb343e15..86b3c8251a 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "파일 변경을 표시할 때 Diff 탭을 자동으로 포커스", - "description": "비활성화하면 Diff 탭이 백그라운드에서 열리고 포커스를 빼앗지 않습니다." + "description": "이 옵션이 비활성화되면 Diff 탭이 백그라운드에서 열리고 포커스를 빼앗지 않습니다. 이는 'autoApprovalEnabled'와 'autoApprovalEnabled'가 모두 활성화된 경우에만 적용됩니다." }, "autoClose": { "label": "Roo 탭 자동 닫기", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index d2b7987fc6..bf941179c4 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Diff-tabblad automatisch focussen bij het tonen van bestandswijzigingen", - "description": "Indien uitgeschakeld, wordt het diff-tabblad op de achtergrond geopend zonder de focus over te nemen." + "description": "Als deze optie is uitgeschakeld, wordt het diff-tabblad op de achtergrond geopend zonder de focus over te nemen. Dit geldt alleen als 'autoApprovalEnabled' en 'autoApprovalEnabled' zijn ingeschakeld." }, "autoClose": { "label": "Door Roo geopende tabbladen automatisch sluiten", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 7a4ac30991..69445c7b84 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Automatycznie ustaw fokus na zakładce różnic przy wyświetlaniu zmian w plikach", - "description": "Jeśli wyłączone, zakładka różnic otworzy się w tle i nie przejmie fokusu." + "description": "Jeśli ta opcja jest wyłączona, zakładka różnic otworzy się w tle i nie przejmie fokusu. Dotyczy to tylko sytuacji, gdy 'autoApprovalEnabled' i 'autoApprovalEnabled' są włączone." }, "autoClose": { "label": "Automatycznie zamykaj karty Roo", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 23e9fbf3bc..f1b857b42a 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Focar automaticamente a aba de diferenças ao mostrar alterações de arquivos", - "description": "Se desativado, a aba de diferenças será aberta em segundo plano e não tomará o foco." + "description": "Se esta opção estiver desativada, a aba de diferenças será aberta em segundo plano e não tomará o foco. Isso só se aplica se 'autoApprovalEnabled' e 'autoApprovalEnabled' estiverem ativados." }, "autoClose": { "label": "Fechar automaticamente as abas do Roo", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 809320dd27..eff4f58a62 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Автоматически фокусировать вкладку сравнения при показе изменений файлов", - "description": "Если отключено, вкладка сравнения откроется в фоновом режиме и не будет забирать фокус." + "description": "Если эта опция отключена, вкладка сравнения откроется в фоновом режиме и не будет забирать фокус. Это применяется только если включены оба параметра 'autoApprovalEnabled' и 'autoApprovalEnabled'." }, "autoClose": { "label": "Автоматически закрывать вкладки Roo", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 34f0e246b9..bb740e4952 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Dosya değişiklikleri gösterildiğinde diff sekmesine otomatik odaklan", - "description": "Devre dışı bırakılırsa, diff sekmesi arka planda açılır ve odağı almaz." + "description": "Bu seçenek devre dışı bırakılırsa, diff sekmesi arka planda açılır ve odağı almaz. Bu yalnızca 'autoApprovalEnabled' ve 'autoApprovalEnabled' etkinse geçerlidir." }, "autoClose": { "label": "Roo'nun açtığı sekmeleri otomatik kapat", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index cab8540eb6..b607b521bc 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "Tự động chuyển tiêu điểm sang tab so sánh khi hiển thị thay đổi tệp", - "description": "Nếu tắt, tab so sánh sẽ mở ở chế độ nền và không chiếm tiêu điểm." + "description": "Nếu tùy chọn này bị tắt, tab so sánh sẽ mở ở chế độ nền và không chiếm tiêu điểm. Điều này chỉ áp dụng nếu cả hai tùy chọn 'autoApprovalEnabled' đều được bật." }, "autoClose": { "label": "Tự động đóng các tab Roo", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index b5179064f2..4a9d8660dc 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "在显示文件更改时自动聚焦差异标签页", - "description": "禁用后,差异标签页将在后台打开,不会抢占焦点。" + "description": "如果此选项被禁用,差异标签页将在后台打开,不会抢占焦点。仅当 'autoApprovalEnabled' 和 'autoApprovalEnabled' 都启用时才适用。" }, "autoClose": { "label": "自动关闭Roo打开的标签页", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index f8fb68b6b8..2b6a98dd5a 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -394,7 +394,7 @@ }, "autoFocus": { "label": "顯示檔案變更時自動聚焦差異分頁", - "description": "若停用,差異分頁將在背景開啟且不會搶奪焦點。" + "description": "若停用,差異分頁將在背景開啟且不會搶奪焦點。僅當 'autoApprovalEnabled' 和 'autoApprovalEnabled' 都啟用時才適用。" }, "autoClose": { "label": "自動關閉 Roo 開啟的分頁", From a5ceddce70853a541dcadd4b9232cc4d09aedb0a Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 17 May 2025 11:08:51 +0200 Subject: [PATCH 32/66] fix(diff-view): streamline tab closing logic in DiffViewProvider --- src/integrations/editor/DiffViewProvider.ts | 24 +++++++-------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index ebb613b618..d56a10acc3 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -211,22 +211,14 @@ export class DiffViewProvider { // If the file was already open, close it (must happen after showing the // diff view since if it's the only tab the column will close). - this.documentWasOpen = false - - // Close the tab if it's open (it's already saved above). - const tabs = vscode.window.tabGroups.all - .map((tg) => tg.tabs) - .flat() - .filter( - (tab) => tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath), - ) - - for (const tab of tabs) { - if (!tab.isDirty) { - await vscode.window.tabGroups.close(tab) - } - this.documentWasOpen = true - } + this.documentWasOpen = + vscode.window.tabGroups.all + .map((tg) => tg.tabs) + .flat() + .filter( + (tab) => + tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath), + ).length > 0 this.activeDiffEditor = await this.openDiffEditor() this.fadedOverlayController = new DecorationController("fadedOverlay", this.activeDiffEditor) From 3d7e84496cfb3c0253261934d69ca6906576dd51 Mon Sep 17 00:00:00 2001 From: seedlord Date: Mon, 19 May 2025 04:32:47 +0200 Subject: [PATCH 33/66] Add 'autoCloseAllRooTabs' setting to enhance tab management functionality - Introduced new setting 'autoCloseAllRooTabs' to allow automatic closure of all Roo-touched tabs during file modification tasks. - Updated relevant configuration files, types, and UI components to support the new setting. - Enhanced existing logic in the DiffViewProvider to respect the new auto-close behavior. --- package.json | 5 + package.nls.json | 4 +- src/core/webview/webviewMessageHandler.ts | 10 + src/exports/roo-code.d.ts | 4 + src/exports/types.ts | 4 + src/integrations/editor/DiffViewProvider.ts | 261 ++++++++++++++++-- src/schemas/index.ts | 4 + src/shared/ExtensionMessage.ts | 1 + src/shared/WebviewMessage.ts | 1 + .../src/components/settings/ApiOptions.tsx | 1 + .../settings/DiffSettingsControl.tsx | 52 +++- .../src/components/settings/SettingsView.tsx | 4 + .../src/context/ExtensionStateContext.tsx | 2 + webview-ui/src/i18n/locales/en/settings.json | 10 +- 14 files changed, 330 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index 12b9a5f4d6..b610969ef5 100644 --- a/package.json +++ b/package.json @@ -323,6 +323,11 @@ "type": "boolean", "default": false, "description": "%roo-cline.autoCloseRooTabs.description%" + }, + "roo-cline.autoCloseAllRooTabs": { + "type": "boolean", + "default": false, + "description": "%roo-cline.autoCloseAllRooTabs.description%" } } } diff --git a/package.nls.json b/package.nls.json index 4bcb49723a..663d558c15 100644 --- a/package.nls.json +++ b/package.nls.json @@ -27,5 +27,7 @@ "settings.vsCodeLmModelSelector.description": "Settings for VSCode Language Model API", "settings.vsCodeLmModelSelector.vendor.description": "The vendor of the language model (e.g. copilot)", "settings.vsCodeLmModelSelector.family.description": "The family of the language model (e.g. gpt-4)", - "settings.customStoragePath.description": "Custom storage path. Leave empty to use the default location. Supports absolute paths (e.g. 'D:\\RooCodeStorage')" + "settings.customStoragePath.description": "Custom storage path. Leave empty to use the default location. Supports absolute paths (e.g. 'D:\\RooCodeStorage')", + "roo-cline.autoCloseRooTabs.description": "When enabled, Roo will automatically close tabs for files that were newly created or were not already open before Roo modified them. Tabs for files that were already open will remain open.", + "roo-cline.autoCloseAllRooTabs.description": "When enabled (and 'Automatically close newly created or previously unopened Roo tabs' is also enabled), Roo will close all tabs it interacted with during a file modification task, including those that were already open before the task started." } diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index ed3de1a073..85141cee04 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -65,6 +65,16 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await updateGlobalState("autoCloseRooTabs", autoCloseRooTabs) await provider.postStateToWebview() break + case "autoCloseAllRooTabs": // Added new setting + const autoCloseAllRooTabs = message.bool ?? false + await provider.context.globalState.update("autoCloseAllRooTabs", autoCloseAllRooTabs) + // Also update workspace settings + await vscode.workspace + .getConfiguration("roo-cline") + .update("autoCloseAllRooTabs", autoCloseAllRooTabs, vscode.ConfigurationTarget.Global) + await updateGlobalState("autoCloseAllRooTabs", autoCloseAllRooTabs) + await provider.postStateToWebview() + break case "webviewDidLaunch": // Load custom modes first const customModes = await provider.customModesManager.getCustomModes() diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts index bb788b13db..3df70e5979 100644 --- a/src/exports/roo-code.d.ts +++ b/src/exports/roo-code.d.ts @@ -99,6 +99,7 @@ type GlobalSettings = { diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined experiments?: | { @@ -230,6 +231,7 @@ type ProviderSettings = { diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -616,6 +618,7 @@ type IpcMessage = diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -1082,6 +1085,7 @@ type TaskCommand = diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined diff --git a/src/exports/types.ts b/src/exports/types.ts index 69d8cba2cd..d27e7c891d 100644 --- a/src/exports/types.ts +++ b/src/exports/types.ts @@ -99,6 +99,7 @@ type GlobalSettings = { diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined experiments?: | { @@ -234,6 +235,7 @@ type ProviderSettings = { diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -630,6 +632,7 @@ type IpcMessage = diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined @@ -1098,6 +1101,7 @@ type TaskCommand = diffEnabled?: boolean | undefined diffViewAutoFocus?: boolean | undefined autoCloseRooTabs?: boolean | undefined + autoCloseAllRooTabs?: boolean | undefined fuzzyMatchThreshold?: number | undefined modelTemperature?: (number | null) | undefined rateLimitSeconds?: number | undefined diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index d56a10acc3..e94ab0f126 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -34,6 +34,7 @@ export class DiffViewProvider { private autoApproval: boolean | undefined = undefined private autoFocus: boolean | undefined = undefined private autoCloseTabs: boolean = false + private autoCloseAllRooTabs: boolean = false // Added new setting // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined private viewColumn: ViewColumn = -1 // ViewColumn.Active private userInteractionListeners: vscode.Disposable[] = [] @@ -57,6 +58,9 @@ export class DiffViewProvider { } this.preserveFocus = this.autoApproval && !this.autoFocus this.autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) + this.autoCloseAllRooTabs = vscode.workspace + .getConfiguration("roo-cline") + .get("autoCloseAllRooTabs", false) // Read new setting // Track currently visible editors and active editor for focus restoration and tab cleanup this.rooOpenedTabs.clear() } @@ -178,6 +182,13 @@ export class DiffViewProvider { const absolutePath = path.resolve(this.cwd, relPath) this.isEditing = true + // Track the URI of the actual file that will be part of the diff. + // This ensures that if VS Code opens a tab for it during vscode.diff, + // we can identify it as a "Roo-opened" tab for cleanup. + const fileUriForDiff = vscode.Uri.file(absolutePath) + this.rooOpenedTabs.add(fileUriForDiff.toString()) + console.log(`Roo Debug: Added to rooOpenedTabs in open(): ${fileUriForDiff.toString()}`) + // If the file is already open, ensure it's not dirty before getting its // contents. if (fileExists) { @@ -234,9 +245,9 @@ export class DiffViewProvider { */ private async showAndTrackEditor(uri: vscode.Uri, options: vscode.TextDocumentShowOptions = {}) { const editor = await this.showTextDocumentSafe({ uri, options }) - if (this.autoCloseTabs && !this.documentWasOpen) { - this.rooOpenedTabs.add(uri.toString()) - } + // Always track tabs opened by Roo, regardless of autoCloseTabs setting or if the document was already open. + // The decision to close will be made in closeAllRooOpenedViews based on settings. + this.rooOpenedTabs.add(uri.toString()) return editor } @@ -328,8 +339,59 @@ export class DiffViewProvider { await updatedDocument.save() } + // Add a small delay to allow the isDirty status to update after saving. + await new Promise((resolve) => setTimeout(resolve, 100)) + + // Explicitly save the document in VS Code's model if it's open and dirty, + // especially for newly created files, to ensure VS Code's internal state is synchronized + // before attempting to close tabs. + if (this.editType === "create" && this.relPath) { + try { + const absolutePath = path.resolve(this.cwd, this.relPath) + for (const doc of vscode.workspace.textDocuments) { + if (doc.uri.scheme === "file" && arePathsEqual(doc.uri.fsPath, absolutePath) && doc.isDirty) { + await doc.save() + // Add another small delay after explicit save for newly created file + await new Promise((resolve) => setTimeout(resolve, 100)) + } + } + } catch (saveError) { + console.error("Roo Debug: Error during explicit doc.save() for new file in saveChanges:", saveError) + // Continue execution even if explicit save fails. + } + } + await this.closeAllRooOpenedViews() + // If no auto-close settings are enabled and the document was not open before, + // open the file after the diff is complete. + + // Directly read the current configuration settings to ensure up-to-date values + const currentAutoCloseTabs = vscode.workspace + .getConfiguration("roo-cline") + .get("autoCloseRooTabs", false) + const currentAutoCloseAllRooTabs = vscode.workspace + .getConfiguration("roo-cline") + .get("autoCloseAllRooTabs", false) + + console.log(`Roo Debug: Checking condition to showAndTrackEditor in saveChanges:`) + console.log( + `Roo Debug: !currentAutoCloseTabs (${!currentAutoCloseTabs}) [config value: ${currentAutoCloseTabs}] (this.autoCloseTabs was: ${this.autoCloseTabs})`, + ) + console.log( + `Roo Debug: !currentAutoCloseAllRooTabs (${!currentAutoCloseAllRooTabs}) [config value: ${currentAutoCloseAllRooTabs}] (this.autoCloseAllRooTabs was: ${this.autoCloseAllRooTabs})`, + ) + console.log(`Roo Debug: !this.documentWasOpen (${!this.documentWasOpen}) [raw: ${this.documentWasOpen}]`) + console.log(`Roo Debug: this.editType: ${this.editType}`) + + if (!currentAutoCloseTabs && !currentAutoCloseAllRooTabs && !this.documentWasOpen) { + console.log(`Roo Debug: Condition MET. Calling showAndTrackEditor.`) + const absolutePath = path.resolve(this.cwd, this.relPath!) + await this.showAndTrackEditor(vscode.Uri.file(absolutePath), { preview: false, preserveFocus: true }) + } else { + console.log(`Roo Debug: Condition NOT MET. Skipping showAndTrackEditor.`) + } + // Getting diagnostics before and after the file edit is a better approach than // automatically tracking problems in real-time. This method ensures we only // report new problems that are a direct result of this specific edit. @@ -440,20 +502,166 @@ export class DiffViewProvider { private async closeAllRooOpenedViews() { const tabs = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) - .filter( - (tab) => - (tab.input instanceof vscode.TabInputTextDiff && - tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) || - // close if in rooOpenedTabs and autoCloseTabs is enabled - (this.autoCloseTabs && - tab.input instanceof vscode.TabInputText && - this.rooOpenedTabs.has(tab.input.uri.toString())), - ) + .filter((tab) => { + // Always close DiffView tabs opened by Roo + if ( + tab.input instanceof vscode.TabInputTextDiff && + tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME + ) { + return true + } + + let isRooOpenedTextTab = false + if (tab.input instanceof vscode.TabInputText) { + const currentTabUri = (tab.input as vscode.TabInputText).uri + for (const openedUriString of this.rooOpenedTabs) { + try { + const previouslyOpenedUri = vscode.Uri.parse(openedUriString, true) // true for strict parsing + if (currentTabUri.scheme === "file" && previouslyOpenedUri.scheme === "file") { + if (arePathsEqual(currentTabUri.fsPath, previouslyOpenedUri.fsPath)) { + isRooOpenedTextTab = true + break + } + } else { + if (currentTabUri.toString() === previouslyOpenedUri.toString()) { + isRooOpenedTextTab = true + break + } + } + } catch (e) { + // Log parsing error if necessary, or ignore if a URI in rooOpenedTabs is malformed + console.error(`Roo Debug: Error parsing URI from rooOpenedTabs: ${openedUriString}`, e) + } + } + } + + if (!isRooOpenedTextTab) { + return false // Not a text tab or not identified as opened by Roo + } + + // Directly read the current configuration settings to ensure up-to-date values + // for the filter logic. + const currentConfigAutoCloseTabs = vscode.workspace + .getConfiguration("roo-cline") + .get("autoCloseRooTabs", false) + const currentConfigAutoCloseAllRooTabs = vscode.workspace + .getConfiguration("roo-cline") + .get("autoCloseAllRooTabs", false) + + // Debugging logs for the filter + if (isRooOpenedTextTab && tab.input instanceof vscode.TabInputText) { + // Log only for relevant tabs + console.log( + `Roo Debug Filter: Tab "${tab.label}" (${(tab.input as vscode.TabInputText).uri.fsPath})`, + ) + console.log(`Roo Debug Filter: isRooOpenedTextTab: ${isRooOpenedTextTab}`) + console.log( + `Roo Debug Filter: currentConfigAutoCloseAllRooTabs: ${currentConfigAutoCloseAllRooTabs} (this.autoCloseAllRooTabs was: ${this.autoCloseAllRooTabs})`, + ) + console.log( + `Roo Debug Filter: currentConfigAutoCloseTabs: ${currentConfigAutoCloseTabs} (this.autoCloseTabs was: ${this.autoCloseTabs})`, + ) + console.log( + `Roo Debug Filter: editType: ${this.editType}, documentWasOpen: ${this.documentWasOpen}`, + ) + } + + // Haken 2 (currentConfigAutoCloseAllRooTabs) - takes precedence + if (currentConfigAutoCloseAllRooTabs) { + // This implies Haken 1 is also effectively on + console.log(`Roo Debug Filter: Tab "${tab.label}" closing due to currentConfigAutoCloseAllRooTabs.`) + return true // Close all Roo-opened text tabs + } + + // Only Haken 1 (currentConfigAutoCloseTabs) is on, Haken 2 is off + if (currentConfigAutoCloseTabs) { + const tabUriFsPath = (tab.input as vscode.TabInputText).uri.fsPath + const absolutePathDiffedFile = this.relPath ? path.resolve(this.cwd, this.relPath) : null + + // Guard against null absolutePathDiffedFile if relPath is somehow not set + if (!absolutePathDiffedFile) { + // If we don't know the main diffed file, but Haken 1 is on, + // it's safer to close any tab Roo opened to avoid leaving extras. + console.log( + `Roo Debug Filter: Tab "${tab.label}" closing due to Haken 1 & no absolutePathDiffedFile.`, + ) + return true + } + + const isMainDiffedFileTab = arePathsEqual(tabUriFsPath, absolutePathDiffedFile) + + if (this.editType === "create" && isMainDiffedFileTab) { + console.log( + `Roo Debug Filter: Tab "${tab.label}" closing due to Haken 1 & create & isMainDiffedFileTab.`, + ) + return true // Case: New file, Haken 1 is on -> Close its tab. + } + + if (this.editType === "modify" && isMainDiffedFileTab) { + if (!this.documentWasOpen) { + console.log( + `Roo Debug Filter: Tab "${tab.label}" closing due to Haken 1 & modify & !documentWasOpen & isMainDiffedFileTab.`, + ) + return true // Case: Modified existing file, was not open before, Haken 1 is on -> Close its tab. + } else { + console.log( + `Roo Debug Filter: Tab "${tab.label}" NOT closing (Haken 1, modify, documentWasOpen, isMainDiffedFileTab).`, + ) + return false // Case: Modified existing file, WAS open before, Haken 1 alone does not close it. + } + } + + // If the tab is for a file OTHER than the main diffedFile, but was opened by Roo + if (!isMainDiffedFileTab) { + // This covers scenarios where Roo might open auxiliary files (though less common for single diff). + // If Haken 1 is on, these should also be closed. + console.log( + `Roo Debug Filter: Tab "${tab.label}" closing due to Haken 1 & !isMainDiffedFileTab (auxiliary Roo tab).`, + ) + return true + } + } + console.log(`Roo Debug Filter: Tab "${tab.label}" NOT closing (default fallthrough).`) + return false // Default: do not close if no above condition met + }) for (const tab of tabs) { - // Trying to close dirty views results in save popup. - if (!tab.isDirty) { - await vscode.window.tabGroups.close(tab, true) + // If a tab has made it through the filter, it means one of the auto-close settings + // (autoCloseTabs or autoCloseAllRooTabs) is active and the conditions for closing + // this specific tab are met. Therefore, we should always bypass the dirty check. + // const bypassDirtyCheck = true; // This is implicitly true now. + + // Attempt to find the freshest reference to the tab before closing, + // as the original 'tab' object from the initial flatMap might be stale. + const tabInputToClose = tab.input + const freshTabToClose = vscode.window.tabGroups.all + .flatMap((group) => group.tabs) + .find((t) => t.input === tabInputToClose) + + if (freshTabToClose) { + try { + console.log(`Roo Debug CloseLoop: Attempting to close fresh tab "${freshTabToClose.label}"`) + await vscode.window.tabGroups.close(freshTabToClose, true) // true to bypass dirty check implicitly + } catch (closeError) { + console.error(`Roo Debug CloseLoop: Error closing tab "${freshTabToClose.label}":`, closeError) + } + } else { + // This case should ideally not happen if the tab was in the filtered list. + // It might indicate the tab was closed by another means or its input changed. + console.warn( + `Roo Debug CloseLoop: Tab "${tab.label}" (input: ${JSON.stringify(tab.input)}) intended for closure was not found in the current tab list.`, + ) + // Fallback: Try to close the original tab reference if the fresh one isn't found, + // though this is less likely to succeed if it's genuinely stale. + try { + console.log(`Roo Debug CloseLoop: Attempting to close original (stale?) tab "${tab.label}"`) + await vscode.window.tabGroups.close(tab, true) + } catch (fallbackCloseError) { + console.error( + `Roo Debug CloseLoop: Error closing original tab reference for "${tab.label}":`, + fallbackCloseError, + ) + } } } } @@ -474,11 +682,12 @@ export class DiffViewProvider { if (!(diffTab && diffTab.input instanceof vscode.TabInputTextDiff)) { return null } - // Only focus if autoFocus is true - if (this.autoFocus) { - const editor = await this.showAndTrackEditor(diffTab.input.modified) + // Only open/focus the tab if autoCloseTabs is false, regardless of autoFocus. + if (!this.autoCloseTabs && !this.autoCloseAllRooTabs && !this.documentWasOpen) { + const editor = await this.showAndTrackEditor(diffTab.input.modified, { preserveFocus: !this.autoFocus }) return editor } + // If autoFocus is false, try to find the editor without focusing // Try to find the editor without focusing const editor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath)) if (editor) return editor @@ -504,10 +713,6 @@ export class DiffViewProvider { } // right uri = the file path const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) - const editor = await this.getEditorFromDiffTab(rightUri) - if (editor) { - return editor - } // Open new diff editor. return new Promise((resolve, reject) => { @@ -528,13 +733,14 @@ export class DiffViewProvider { this.suppressInteractionFlag = true vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) - .then(() => { + .then(async () => { + // Add async here // set interaction flag to false to allow autoFocus to be triggered this.suppressInteractionFlag = false - if (this.autoCloseTabs && !this.documentWasOpen) { - // If the diff tab is not already open, add it to the set - this.rooOpenedTabs.add(rightUri.toString()) - } + // Explicitly open and track the editor for the right side of the diff (the actual file) + // to ensure it's in rooOpenedTabs before closeAllRooOpenedViews is called. + await this.showAndTrackEditor(rightUri, { preview: false, preserveFocus: true }) + // this.rooOpenedTabs.add(rightUri.toString()) // showAndTrackEditor already adds it // If autoFocus is true, we don't need to do anything if (this.autoFocus) { return @@ -642,7 +848,6 @@ export class DiffViewProvider { this.streamedLines = [] this.preDiagnostics = [] this.rooOpenedTabs.clear() - this.autoCloseTabs = false } resetWithListeners() { diff --git a/src/schemas/index.ts b/src/schemas/index.ts index dbecf887f9..b75a59d0ca 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -353,6 +353,7 @@ const baseProviderSettingsSchema = z.object({ diffEnabled: z.boolean().optional(), diffViewAutoFocus: z.boolean().optional(), autoCloseRooTabs: z.boolean().optional(), + autoCloseAllRooTabs: z.boolean().optional(), // Added new setting fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), @@ -637,6 +638,7 @@ const providerSettingsRecord: ProviderSettingsRecord = { diffEnabled: undefined, diffViewAutoFocus: undefined, autoCloseRooTabs: undefined, + autoCloseAllRooTabs: undefined, // Added new setting fuzzyMatchThreshold: undefined, modelTemperature: undefined, rateLimitSeconds: undefined, @@ -719,6 +721,7 @@ export const globalSettingsSchema = z.object({ diffEnabled: z.boolean().optional(), diffViewAutoFocus: z.boolean().optional(), autoCloseRooTabs: z.boolean().optional(), + autoCloseAllRooTabs: z.boolean().optional(), // Added new setting fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), @@ -799,6 +802,7 @@ const globalSettingsRecord: GlobalSettingsRecord = { diffEnabled: undefined, diffViewAutoFocus: undefined, autoCloseRooTabs: undefined, + autoCloseAllRooTabs: undefined, // Added new setting fuzzyMatchThreshold: undefined, experiments: undefined, diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index aa8e7d3671..8f1cd12a65 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -158,6 +158,7 @@ export type ExtensionState = Pick< | "diffEnabled" | "diffViewAutoFocus" | "autoCloseRooTabs" + | "autoCloseAllRooTabs" // Added new setting | "fuzzyMatchThreshold" // | "experiments" // Optional in GlobalSettings, required here. | "language" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 414535277d..adb9e2b482 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -13,6 +13,7 @@ export interface WebviewMessage { type: | "diffViewAutoFocus" | "autoCloseRooTabs" + | "autoCloseAllRooTabs" // Added new setting | "apiConfiguration" | "deleteMultipleTasksWithIds" | "currentApiConfigName" diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index d35de6258e..e6a833f1ff 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -476,6 +476,7 @@ const ApiOptions = ({ diffEnabled={apiConfiguration.diffEnabled} diffViewAutoFocus={apiConfiguration.diffViewAutoFocus} autoCloseRooTabs={apiConfiguration.autoCloseRooTabs} + autoCloseAllRooTabs={apiConfiguration.autoCloseAllRooTabs} // Pass new setting fuzzyMatchThreshold={apiConfiguration.fuzzyMatchThreshold} onChange={(field, value) => setApiConfigurationField(field, value)} /> diff --git a/webview-ui/src/components/settings/DiffSettingsControl.tsx b/webview-ui/src/components/settings/DiffSettingsControl.tsx index d23dbcdd40..4d7d487b54 100644 --- a/webview-ui/src/components/settings/DiffSettingsControl.tsx +++ b/webview-ui/src/components/settings/DiffSettingsControl.tsx @@ -3,12 +3,18 @@ import { Slider } from "@/components/ui" import { useAppTranslation } from "@/i18n/TranslationContext" import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" -type DiffSettingsControlField = "diffEnabled" | "fuzzyMatchThreshold" | "diffViewAutoFocus" | "autoCloseRooTabs" +type DiffSettingsControlField = + | "diffEnabled" + | "fuzzyMatchThreshold" + | "diffViewAutoFocus" + | "autoCloseRooTabs" + | "autoCloseAllRooTabs" interface DiffSettingsControlProps { diffEnabled?: boolean diffViewAutoFocus?: boolean autoCloseRooTabs?: boolean + autoCloseAllRooTabs?: boolean // Added new setting fuzzyMatchThreshold?: number onChange: (field: DiffSettingsControlField, value: any) => void } @@ -23,6 +29,13 @@ interface DiffCheckAutoCloseControlProps { onChange: (e: any) => void } +interface DiffCheckAutoCloseAllControlProps { + // Added new component interface + autoCloseAllRooTabs: boolean + disabled: boolean // Added disabled prop + onChange: (e: any) => void +} + interface DiffPrecisionMatchControlProps { fuzzyMatchThreshold: number onValueChange: (newValue: number[]) => void @@ -56,6 +69,25 @@ const DiffViewAutoCloseControl: React.FC = ({ au ) } +const DiffViewAutoCloseAllControl: React.FC = ({ + autoCloseAllRooTabs, + disabled, + onChange, +}) => { + // Added new component + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.diff.autoCloseAll.label")} + +
+ {t("settings:advanced.diff.autoCloseAll.description")} +
+
+ ) +} + const DiffPrecisionMatchControl: React.FC = ({ fuzzyMatchThreshold, onValueChange, @@ -87,6 +119,7 @@ export const DiffSettingsControl: React.FC = ({ diffEnabled = true, diffViewAutoFocus = true, autoCloseRooTabs = false, + autoCloseAllRooTabs = false, // Added new setting fuzzyMatchThreshold = 1.0, onChange, }) => { @@ -116,6 +149,18 @@ export const DiffSettingsControl: React.FC = ({ const handleAutoCloseRooTabsChange = useCallback( (e: any) => { onChange("autoCloseRooTabs", e.target.checked) + // If autoCloseRooTabs is unchecked, also uncheck autoCloseAllRooTabs + if (!e.target.checked) { + onChange("autoCloseAllRooTabs", false) + } + }, + [onChange], + ) + + const handleAutoCloseAllRooTabsChange = useCallback( + // Added new handler + (e: any) => { + onChange("autoCloseAllRooTabs", e.target.checked) }, [onChange], ) @@ -145,6 +190,11 @@ export const DiffSettingsControl: React.FC = ({ autoCloseRooTabs={autoCloseRooTabs} onChange={handleAutoCloseRooTabsChange} /> + )}
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 5050b3d239..35aed21f85 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -133,6 +133,7 @@ const SettingsView = forwardRef(({ onDone, t enableCheckpoints, diffViewAutoFocus, autoCloseRooTabs, + autoCloseAllRooTabs, // Added new setting diffEnabled, experiments, fuzzyMatchThreshold, @@ -214,6 +215,8 @@ const SettingsView = forwardRef(({ onDone, t newState.diffViewAutoFocus = value as boolean // type is boolean } else if (field === "autoCloseRooTabs") { newState.autoCloseRooTabs = value as boolean // type is boolean + } else if (field === "autoCloseAllRooTabs") { + newState.autoCloseAllRooTabs = value as boolean // type is boolean } else if (field === "fuzzyMatchThreshold") { newState.fuzzyMatchThreshold = value as number // type is number } @@ -271,6 +274,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) vscode.postMessage({ type: "diffViewAutoFocus", bool: diffViewAutoFocus }) vscode.postMessage({ type: "autoCloseRooTabs", bool: autoCloseRooTabs }) + vscode.postMessage({ type: "autoCloseAllRooTabs", bool: autoCloseAllRooTabs }) // Send new setting vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 217ecc5bc0..1a1f1f9598 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -52,6 +52,7 @@ export interface ExtensionStateContextType extends ExtensionState { setDiffEnabled: (value: boolean) => void setDiffViewAutoFocus: (value: boolean) => void setAutoCloseRooTabs: (value: boolean) => void + setAutoCloseAllRooTabs: (value: boolean) => void // Added new setter setEnableCheckpoints: (value: boolean) => void setBrowserViewportSize: (value: string) => void setFuzzyMatchThreshold: (value: number) => void @@ -297,6 +298,7 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setDiffEnabled: (value) => setState((prevState) => ({ ...prevState, diffEnabled: value })), setDiffViewAutoFocus: (value) => setState((prevState) => ({ ...prevState, diffViewAutoFocus: value })), setAutoCloseRooTabs: (value) => setState((prevState) => ({ ...prevState, autoCloseRooTabs: value })), + setAutoCloseAllRooTabs: (value) => setState((prevState) => ({ ...prevState, autoCloseAllRooTabs: value })), // Added new setter setEnableCheckpoints: (value) => setState((prevState) => ({ ...prevState, enableCheckpoints: value })), setBrowserViewportSize: (value: string) => setState((prevState) => ({ ...prevState, browserViewportSize: value })), diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 5a2f6b46c0..d3d1c6e3fa 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -396,11 +396,15 @@ }, "autoFocus": { "label": "Automatically focus the diff tab when showing file changes", - "description": "If disabled, the diff tab will open in the background instead of stealing focus. This only applies if 'autoApprovalEnabled' and 'autoApprovalEnabled'" + "description": "If enabled, the diff tab will automatically receive focus when opened. If disabled, it will open in the background. Auto-focus is disabled if you interact with other editors or if automatic approval is not enabled." }, "autoClose": { - "label": "Automatically close Roo tabs", - "description": "When enabled, Roo will automatically close any tabs it has opened itself (like diff views, opened files) when a task involving file modification is completed or reverted." + "label": "Automatically close newly created or previously unopened Roo tabs", + "description": "When enabled, Roo will automatically close tabs for files that were newly created or were not already open before Roo modified them. Tabs for files that were already open will remain open." + }, + "autoCloseAll": { + "label": "Automatically close all Roo-touched tabs", + "description": "When enabled (and the above setting is also enabled), Roo will close all tabs it interacted with during a file modification task, including those that were already open before the task started." } } }, From f6b9efb4ed2c5e9d6989f3daffbd6bee23e701cd Mon Sep 17 00:00:00 2001 From: seedlord Date: Mon, 19 May 2025 22:02:03 +0200 Subject: [PATCH 34/66] Refine diff editor behavior for new files and improve focus handling --- src/integrations/editor/DiffViewProvider.ts | 54 +++++++++------------ 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index e94ab0f126..750f99d994 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -384,7 +384,13 @@ export class DiffViewProvider { console.log(`Roo Debug: !this.documentWasOpen (${!this.documentWasOpen}) [raw: ${this.documentWasOpen}]`) console.log(`Roo Debug: this.editType: ${this.editType}`) - if (!currentAutoCloseTabs && !currentAutoCloseAllRooTabs && !this.documentWasOpen) { + // If no auto-close settings are enabled and the document was not open before OR it's a new file, + // open the file after the diff is complete. + if ( + !currentAutoCloseTabs && + !currentAutoCloseAllRooTabs && + (this.editType === "create" || !this.documentWasOpen) + ) { console.log(`Roo Debug: Condition MET. Calling showAndTrackEditor.`) const absolutePath = path.resolve(this.cwd, this.relPath!) await this.showAndTrackEditor(vscode.Uri.file(absolutePath), { preview: false, preserveFocus: true }) @@ -682,25 +688,14 @@ export class DiffViewProvider { if (!(diffTab && diffTab.input instanceof vscode.TabInputTextDiff)) { return null } - // Only open/focus the tab if autoCloseTabs is false, regardless of autoFocus. - if (!this.autoCloseTabs && !this.autoCloseAllRooTabs && !this.documentWasOpen) { - const editor = await this.showAndTrackEditor(diffTab.input.modified, { preserveFocus: !this.autoFocus }) - return editor - } - // If autoFocus is false, try to find the editor without focusing - // Try to find the editor without focusing + // Removed logic that explicitly opens/focuses the standalone file tab immediately after diff opens. + // The standalone tab should only be opened in saveChanges after approval for new/unopened files. const editor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath)) if (editor) return editor - // Otherwise, open without focusing - await this.showAndTrackEditor(diffTab.input.modified, { - preview: false, - preserveFocus: this.preserveFocus, - viewColumn: this.viewColumn, - }) - const newEditor = vscode.window.visibleTextEditors.find((ed) => - arePathsEqual(ed.document.uri.fsPath, uri.fsPath), - ) - if (newEditor) return newEditor + + // If the editor is not found among visible editors, it means it's not currently open. + // We should not open it here, as it should only be opened in saveChanges after approval. + // Return null to indicate that the editor for the standalone file tab is not available/should not be focused immediately. return null } @@ -726,7 +721,7 @@ export class DiffViewProvider { const previousEditor = vscode.window.activeTextEditor const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, - preserveFocus: this.preserveFocus, + preserveFocus: false, viewColumn: this.viewColumn, } // set interaction flag to true to prevent autoFocus from being triggered @@ -739,8 +734,14 @@ export class DiffViewProvider { this.suppressInteractionFlag = false // Explicitly open and track the editor for the right side of the diff (the actual file) // to ensure it's in rooOpenedTabs before closeAllRooOpenedViews is called. - await this.showAndTrackEditor(rightUri, { preview: false, preserveFocus: true }) - // this.rooOpenedTabs.add(rightUri.toString()) // showAndTrackEditor already adds it + // Removed the explicit showAndTrackEditor call for rightUri as vscode.diff should handle opening. + // This might fix the focus issue with new files. + this.rooOpenedTabs.add(rightUri.toString()) // Ensure rightUri is tracked even if not explicitly shown again + + // Explicitly show the right side of the diff (the actual file) to ensure it gains focus, + // especially for newly created files where VS Code might open a standalone tab. + // Use preserveFocus: false to force focus to this editor. + // If autoFocus is true, we don't need to do anything if (this.autoFocus) { return @@ -750,17 +751,6 @@ export class DiffViewProvider { return } // if this happens in a window different from the active one, we need to show the document - if (this.viewColumn !== ViewColumn.Active) { - this.showTextDocumentSafe({ - textDocument: previousEditor.document, - options: { - preview: false, - preserveFocus: false, - selection: previousEditor.selection, - viewColumn: previousEditor.viewColumn, - }, - }) - } }) .then(() => { this.getEditorFromDiffTab(rightUri).then((editor) => { From 86a721e7031bcf0b524c55533cb16d8b03d4ced9 Mon Sep 17 00:00:00 2001 From: seedlord Date: Tue, 20 May 2025 00:14:22 +0200 Subject: [PATCH 35/66] Refactor diff editor settings handling to dynamically read configuration values and improve focus management --- src/integrations/editor/DiffViewProvider.ts | 146 +++++++++++--------- 1 file changed, 78 insertions(+), 68 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 750f99d994..93603fdb93 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -53,18 +53,23 @@ export class DiffViewProvider { this.autoApproval = (provider?.getValue("autoApprovalEnabled") && provider?.getValue("alwaysAllowWrite")) ?? false } - if (this.autoFocus === undefined) { - this.autoFocus = vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) - } + const settings = await this._readDiffSettings() + this.autoFocus = settings.autoFocus + this.autoCloseTabs = settings.autoCloseRooTabs + this.autoCloseAllRooTabs = settings.autoCloseAllRooTabs this.preserveFocus = this.autoApproval && !this.autoFocus - this.autoCloseTabs = vscode.workspace.getConfiguration("roo-cline").get("autoCloseRooTabs", false) - this.autoCloseAllRooTabs = vscode.workspace - .getConfiguration("roo-cline") - .get("autoCloseAllRooTabs", false) // Read new setting // Track currently visible editors and active editor for focus restoration and tab cleanup this.rooOpenedTabs.clear() } + private async _readDiffSettings() { + const config = vscode.workspace.getConfiguration("roo-cline") + const autoFocus = config.get("diffViewAutoFocus", true) + const autoCloseRooTabs = config.get("autoCloseRooTabs", false) + const autoCloseAllRooTabs = config.get("autoCloseAllRooTabs", false) + return { autoFocus, autoCloseRooTabs, autoCloseAllRooTabs } + } + private async showTextDocumentSafe({ uri, textDocument, @@ -236,7 +241,10 @@ export class DiffViewProvider { this.activeLineController = new DecorationController("activeLine", this.activeDiffEditor) // Apply faded overlay to all lines initially. this.fadedOverlayController.addLines(0, this.activeDiffEditor.document.lineCount) - this.scrollEditorToLine(0) // Will this crash for new files? + // Scroll to the beginning of the diff editor only if autoFocus is enabled. + if (this.autoFocus) { + this.scrollEditorToLine(0) // Will this crash for new files? + } this.streamedLines = [] } @@ -271,9 +279,11 @@ export class DiffViewProvider { } // Place cursor at the beginning of the diff editor to keep it out of - // the way of the stream animation. - const beginningOfDocument = new vscode.Position(0, 0) - diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) + // the way of the stream animation, only if autoFocus is enabled. + if (this.autoFocus) { + const beginningOfDocument = new vscode.Position(0, 0) + diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) + } const endLine = accumulatedLines.length // Replace all content up to the current line with accumulated lines. @@ -282,11 +292,19 @@ export class DiffViewProvider { const contentToReplace = accumulatedLines.slice(0, endLine + 1).join("\n") + "\n" edit.replace(document.uri, rangeToReplace, this.stripAllBOMs(contentToReplace)) await vscode.workspace.applyEdit(edit) + // If autoFocus is disabled, explicitly clear the selection after applying edits + // to prevent the right pane from gaining cursor focus. + if (!this.autoFocus) { + const beginningOfDocument = new vscode.Position(0, 0) + diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) + } // Update decorations. this.activeLineController.setActiveLine(endLine) this.fadedOverlayController.updateOverlayAfterLine(endLine, document.lineCount) - // Scroll to the current line. - this.scrollEditorToLine(endLine) + // Scroll to the current line only if autoFocus is enabled. + if (this.autoFocus) { + this.scrollEditorToLine(endLine) + } // Update the streamedLines with the new accumulated content. this.streamedLines = accumulatedLines @@ -366,20 +384,14 @@ export class DiffViewProvider { // If no auto-close settings are enabled and the document was not open before, // open the file after the diff is complete. - // Directly read the current configuration settings to ensure up-to-date values - const currentAutoCloseTabs = vscode.workspace - .getConfiguration("roo-cline") - .get("autoCloseRooTabs", false) - const currentAutoCloseAllRooTabs = vscode.workspace - .getConfiguration("roo-cline") - .get("autoCloseAllRooTabs", false) + const settings = await this._readDiffSettings() // Dynamically read settings console.log(`Roo Debug: Checking condition to showAndTrackEditor in saveChanges:`) console.log( - `Roo Debug: !currentAutoCloseTabs (${!currentAutoCloseTabs}) [config value: ${currentAutoCloseTabs}] (this.autoCloseTabs was: ${this.autoCloseTabs})`, + `Roo Debug: !settings.autoCloseRooTabs (${!settings.autoCloseRooTabs}) [config value: ${settings.autoCloseRooTabs}] (this.autoCloseTabs was: ${this.autoCloseTabs})`, ) console.log( - `Roo Debug: !currentAutoCloseAllRooTabs (${!currentAutoCloseAllRooTabs}) [config value: ${currentAutoCloseAllRooTabs}] (this.autoCloseAllRooTabs was: ${this.autoCloseAllRooTabs})`, + `Roo Debug: !settings.autoCloseAllRooTabs (${!settings.autoCloseAllRooTabs}) [config value: ${settings.autoCloseAllRooTabs}] (this.autoCloseAllRooTabs was: ${this.autoCloseAllRooTabs})`, ) console.log(`Roo Debug: !this.documentWasOpen (${!this.documentWasOpen}) [raw: ${this.documentWasOpen}]`) console.log(`Roo Debug: this.editType: ${this.editType}`) @@ -387,8 +399,8 @@ export class DiffViewProvider { // If no auto-close settings are enabled and the document was not open before OR it's a new file, // open the file after the diff is complete. if ( - !currentAutoCloseTabs && - !currentAutoCloseAllRooTabs && + !settings.autoCloseRooTabs && + !settings.autoCloseAllRooTabs && (this.editType === "create" || !this.documentWasOpen) ) { console.log(`Roo Debug: Condition MET. Calling showAndTrackEditor.`) @@ -506,6 +518,8 @@ export class DiffViewProvider { } private async closeAllRooOpenedViews() { + const settings = await this._readDiffSettings() // Dynamically read settings + const tabs = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) .filter((tab) => { @@ -545,15 +559,6 @@ export class DiffViewProvider { return false // Not a text tab or not identified as opened by Roo } - // Directly read the current configuration settings to ensure up-to-date values - // for the filter logic. - const currentConfigAutoCloseTabs = vscode.workspace - .getConfiguration("roo-cline") - .get("autoCloseRooTabs", false) - const currentConfigAutoCloseAllRooTabs = vscode.workspace - .getConfiguration("roo-cline") - .get("autoCloseAllRooTabs", false) - // Debugging logs for the filter if (isRooOpenedTextTab && tab.input instanceof vscode.TabInputText) { // Log only for relevant tabs @@ -562,25 +567,25 @@ export class DiffViewProvider { ) console.log(`Roo Debug Filter: isRooOpenedTextTab: ${isRooOpenedTextTab}`) console.log( - `Roo Debug Filter: currentConfigAutoCloseAllRooTabs: ${currentConfigAutoCloseAllRooTabs} (this.autoCloseAllRooTabs was: ${this.autoCloseAllRooTabs})`, + `Roo Debug Filter: settings.autoCloseAllRooTabs: ${settings.autoCloseAllRooTabs} (this.autoCloseAllRooTabs was: ${this.autoCloseAllRooTabs})`, ) console.log( - `Roo Debug Filter: currentConfigAutoCloseTabs: ${currentConfigAutoCloseTabs} (this.autoCloseTabs was: ${this.autoCloseTabs})`, + `Roo Debug Filter: settings.autoCloseRooTabs: ${settings.autoCloseRooTabs} (this.autoCloseTabs was: ${this.autoCloseTabs})`, ) console.log( `Roo Debug Filter: editType: ${this.editType}, documentWasOpen: ${this.documentWasOpen}`, ) } - // Haken 2 (currentConfigAutoCloseAllRooTabs) - takes precedence - if (currentConfigAutoCloseAllRooTabs) { + // Haken 2 (settings.autoCloseAllRooTabs) - takes precedence + if (settings.autoCloseAllRooTabs) { // This implies Haken 1 is also effectively on - console.log(`Roo Debug Filter: Tab "${tab.label}" closing due to currentConfigAutoCloseAllRooTabs.`) + console.log(`Roo Debug Filter: Tab "${tab.label}" closing due to settings.autoCloseAllRooTabs.`) return true // Close all Roo-opened text tabs } - // Only Haken 1 (currentConfigAutoCloseTabs) is on, Haken 2 is off - if (currentConfigAutoCloseTabs) { + // Only Haken 1 (settings.autoCloseRooTabs) is on, Haken 2 is off + if (settings.autoCloseRooTabs) { const tabUriFsPath = (tab.input as vscode.TabInputText).uri.fsPath const absolutePathDiffedFile = this.relPath ? path.resolve(this.cwd, this.relPath) : null @@ -706,6 +711,9 @@ export class DiffViewProvider { if (!this.relPath) { throw new Error("No file path set") } + + const settings = await this._readDiffSettings() // Dynamically read settings + // right uri = the file path const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) @@ -718,10 +726,9 @@ export class DiffViewProvider { query: Buffer.from(this.originalContent ?? "").toString("base64"), }) const title = `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)` - const previousEditor = vscode.window.activeTextEditor const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, - preserveFocus: false, + preserveFocus: settings.autoFocus ? false : true, // Use dynamically read autoFocus viewColumn: this.viewColumn, } // set interaction flag to true to prevent autoFocus from being triggered @@ -729,38 +736,37 @@ export class DiffViewProvider { vscode.commands .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) .then(async () => { - // Add async here // set interaction flag to false to allow autoFocus to be triggered this.suppressInteractionFlag = false - // Explicitly open and track the editor for the right side of the diff (the actual file) - // to ensure it's in rooOpenedTabs before closeAllRooOpenedViews is called. - // Removed the explicit showAndTrackEditor call for rightUri as vscode.diff should handle opening. - // This might fix the focus issue with new files. - this.rooOpenedTabs.add(rightUri.toString()) // Ensure rightUri is tracked even if not explicitly shown again - - // Explicitly show the right side of the diff (the actual file) to ensure it gains focus, - // especially for newly created files where VS Code might open a standalone tab. - // Use preserveFocus: false to force focus to this editor. - - // If autoFocus is true, we don't need to do anything - if (this.autoFocus) { + + // Get the active text editor, which should be the diff editor opened by vscode.diff + const diffEditor = vscode.window.activeTextEditor + + // Ensure we have a valid editor and it's the one we expect (the right side of the diff) + if (!diffEditor || !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath)) { + reject(new Error("Failed to get diff editor after opening.")) return } - // if there is no previous editor, we don't need to do anything - if (!previousEditor) { - return + + this.activeDiffEditor = diffEditor // Assign to activeDiffEditor + + // Ensure rightUri is tracked even if not explicitly shown again + this.rooOpenedTabs.add(rightUri.toString()) + + // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. + if (!settings.autoFocus) { + // Use dynamically read autoFocus + // Add a small delay to allow VS Code to potentially set focus first, + // then clear it. + await new Promise((resolve) => setTimeout(resolve, 50)) + const beginningOfDocument = new vscode.Position(0, 0) + diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) } - // if this happens in a window different from the active one, we need to show the document - }) - .then(() => { - this.getEditorFromDiffTab(rightUri).then((editor) => { - if (editor) { - resolve(editor) - } else { - reject(new Error("Failed to open diff editor, please try again...")) - } - }) + + // Resolve the promise with the diff editor + resolve(diffEditor) }) + // Removed the second .then block that called getEditorFromDiffTab // This may happen on very slow machines ie project idx setTimeout(() => { reject(new Error("Failed to open diff editor, please try again...")) @@ -780,6 +786,10 @@ export class DiffViewProvider { } scrollToFirstDiff() { + // Only scroll to the first diff if autoFocus is enabled. + if (!this.autoFocus) { + return + } if (!this.activeDiffEditor) { return } From ef84af780f34ee7f91ea048e3481f2632e82632c Mon Sep 17 00:00:00 2001 From: seedlord Date: Tue, 20 May 2025 23:59:04 +0200 Subject: [PATCH 36/66] refactor(diff): simplify scrolling behavior by removing autoFocus checks --- src/integrations/editor/DiffViewProvider.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 93603fdb93..3c5509a272 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -301,10 +301,8 @@ export class DiffViewProvider { // Update decorations. this.activeLineController.setActiveLine(endLine) this.fadedOverlayController.updateOverlayAfterLine(endLine, document.lineCount) - // Scroll to the current line only if autoFocus is enabled. - if (this.autoFocus) { - this.scrollEditorToLine(endLine) - } + // Scroll to the current line. + this.scrollEditorToLine(endLine) // Update the streamedLines with the new accumulated content. this.streamedLines = accumulatedLines @@ -786,10 +784,7 @@ export class DiffViewProvider { } scrollToFirstDiff() { - // Only scroll to the first diff if autoFocus is enabled. - if (!this.autoFocus) { - return - } + // Scroll to the first diff. if (!this.activeDiffEditor) { return } From 45249e1614a660058eb685008cd5af392b44ad0c Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Wed, 21 May 2025 22:37:32 +0200 Subject: [PATCH 37/66] refactor(diff): enhance tab closing logic and settings management in DiffViewProvider --- src/integrations/editor/DiffViewProvider.ts | 235 +++++++++----------- 1 file changed, 108 insertions(+), 127 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 49a4f597c9..61777f3d60 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -15,6 +15,12 @@ import { ClineProvider } from "../../core/webview/ClineProvider" export const DIFF_VIEW_URI_SCHEME = "cline-diff" +interface DiffSettings { + autoFocus: boolean + autoCloseRooTabs: boolean + autoCloseAllRooTabs: boolean +} + // TODO: https://github.com/cline/cline/pull/3354 export class DiffViewProvider { editType?: "create" | "modify" @@ -62,7 +68,7 @@ export class DiffViewProvider { this.rooOpenedTabs.clear() } - private async _readDiffSettings() { + private async _readDiffSettings(): Promise { const config = vscode.workspace.getConfiguration("roo-cline") const autoFocus = config.get("diffViewAutoFocus", true) const autoCloseRooTabs = config.get("autoCloseRooTabs", false) @@ -500,151 +506,126 @@ export class DiffViewProvider { this.resetWithListeners() } - private async closeAllRooOpenedViews() { - const settings = await this._readDiffSettings() // Dynamically read settings - - const tabs = vscode.window.tabGroups.all - .flatMap((tg) => tg.tabs) - .filter((tab) => { - // Always close DiffView tabs opened by Roo - if ( - tab.input instanceof vscode.TabInputTextDiff && - tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME - ) { - return true - } + private filterTabsToClose(tab: vscode.Tab, settings: DiffSettings): boolean { + // Always close DiffView tabs opened by Roo + if (tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) { + return true + } - let isRooOpenedTextTab = false - if (tab.input instanceof vscode.TabInputText) { - const currentTabUri = (tab.input as vscode.TabInputText).uri - for (const openedUriString of this.rooOpenedTabs) { - try { - const previouslyOpenedUri = vscode.Uri.parse(openedUriString, true) // true for strict parsing - if (currentTabUri.scheme === "file" && previouslyOpenedUri.scheme === "file") { - if (arePathsEqual(currentTabUri.fsPath, previouslyOpenedUri.fsPath)) { - isRooOpenedTextTab = true - break - } - } else { - if (currentTabUri.toString() === previouslyOpenedUri.toString()) { - isRooOpenedTextTab = true - break - } - } - } catch (e) { - // Log parsing error if necessary, or ignore if a URI in rooOpenedTabs is malformed - console.error(`Roo Debug: Error parsing URI from rooOpenedTabs: ${openedUriString}`, e) + let isRooOpenedTextTab = false + if (tab.input instanceof vscode.TabInputText) { + const currentTabUri = (tab.input as vscode.TabInputText).uri + for (const openedUriString of this.rooOpenedTabs) { + try { + const previouslyOpenedUri = vscode.Uri.parse(openedUriString, true) // true for strict parsing + if (currentTabUri.scheme === "file" && previouslyOpenedUri.scheme === "file") { + if (arePathsEqual(currentTabUri.fsPath, previouslyOpenedUri.fsPath)) { + isRooOpenedTextTab = true + break + } + } else { + if (currentTabUri.toString() === previouslyOpenedUri.toString()) { + isRooOpenedTextTab = true + break } } + } catch (e) { + // Log parsing error if necessary, or ignore if a URI in rooOpenedTabs is malformed + console.error(`Roo Debug: Error parsing URI from rooOpenedTabs: ${openedUriString}`, e) } + } + } - if (!isRooOpenedTextTab) { - return false // Not a text tab or not identified as opened by Roo - } + if (!isRooOpenedTextTab) { + return false // Not a text tab or not identified as opened by Roo + } - // Haken 2 (settings.autoCloseAllRooTabs) - takes precedence - if (settings.autoCloseAllRooTabs) { - // This implies Haken 1 is also effectively on - return true // Close all Roo-opened text tabs - } + // Haken 2 (settings.autoCloseAllRooTabs) - takes precedence + if (settings.autoCloseAllRooTabs) { + // This implies Haken 1 is also effectively on + return true // Close all Roo-opened text tabs + } - // Only Haken 1 (settings.autoCloseRooTabs) is on, Haken 2 is off - if (settings.autoCloseRooTabs) { - const tabUriFsPath = (tab.input as vscode.TabInputText).uri.fsPath - const absolutePathDiffedFile = this.relPath ? path.resolve(this.cwd, this.relPath) : null + // Only Haken 1 (settings.autoCloseRooTabs) is on, Haken 2 is off + if (settings.autoCloseRooTabs) { + const tabUriFsPath = (tab.input as vscode.TabInputText).uri.fsPath + const absolutePathDiffedFile = this.relPath ? path.resolve(this.cwd, this.relPath) : null - // Guard against null absolutePathDiffedFile if relPath is somehow not set - if (!absolutePathDiffedFile) { - // If we don't know the main diffed file, but Haken 1 is on, - // it's safer to close any tab Roo opened to avoid leaving extras. - return true - } + // Guard against null absolutePathDiffedFile if relPath is somehow not set + if (!absolutePathDiffedFile) { + // If we don't know the main diffed file, but Haken 1 is on, + // it's safer to close any tab Roo opened to avoid leaving extras. + return true + } - const isMainDiffedFileTab = arePathsEqual(tabUriFsPath, absolutePathDiffedFile) + const isMainDiffedFileTab = arePathsEqual(tabUriFsPath, absolutePathDiffedFile) - if (this.editType === "create" && isMainDiffedFileTab) { - return true // Case: New file, Haken 1 is on -> Close its tab. - } + if (this.editType === "create" && isMainDiffedFileTab) { + return true // Case: New file, Haken 1 is on -> Close its tab. + } - if (this.editType === "modify" && isMainDiffedFileTab) { - return !this.documentWasOpen - } + if (this.editType === "modify" && isMainDiffedFileTab) { + return !this.documentWasOpen + } - // If the tab is for a file OTHER than the main diffedFile, but was opened by Roo - if (!isMainDiffedFileTab) { - // This covers scenarios where Roo might open auxiliary files (though less common for single diff). - // If Haken 1 is on, these should also be closed. - return true - } - } - return false // Default: do not close if no above condition met - }) + // If the tab is for a file OTHER than the main diffedFile, but was opened by Roo + if (!isMainDiffedFileTab) { + // This covers scenarios where Roo might open auxiliary files (though less common for single diff). + // If Haken 1 is on, these should also be closed. + return true + } + } + return false // Default: do not close if no above condition met + } - for (const tab of tabs) { - // If a tab has made it through the filter, it means one of the auto-close settings - // (autoCloseTabs or autoCloseAllRooTabs) is active and the conditions for closing - // this specific tab are met. Therefore, we should always bypass the dirty check. - // const bypassDirtyCheck = true; // This is implicitly true now. + private async closeTab(tab: vscode.Tab) { + // If a tab has made it through the filter, it means one of the auto-close settings + // (autoCloseTabs or autoCloseAllRooTabs) is active and the conditions for closing + // this specific tab are met. Therefore, we should always bypass the dirty check. + // const bypassDirtyCheck = true; // This is implicitly true now. - // Attempt to find the freshest reference to the tab before closing, - // as the original 'tab' object from the initial flatMap might be stale. - const tabInputToClose = tab.input - const freshTabToClose = vscode.window.tabGroups.all - .flatMap((group) => group.tabs) - .find((t) => t.input === tabInputToClose) + // Attempt to find the freshest reference to the tab before closing, + // as the original 'tab' object from the initial flatMap might be stale. + const tabInputToClose = tab.input + const freshTabToClose = vscode.window.tabGroups.all + .flatMap((group) => group.tabs) + .find((t) => t.input === tabInputToClose) - if (freshTabToClose) { - try { - await vscode.window.tabGroups.close(freshTabToClose, true) // true to bypass dirty check implicitly - } catch (closeError) { - console.error(`Roo Debug CloseLoop: Error closing tab "${freshTabToClose.label}":`, closeError) - } - } else { - // This case should ideally not happen if the tab was in the filtered list. - // It might indicate the tab was closed by another means or its input changed. - console.warn( - `Roo Debug CloseLoop: Tab "${tab.label}" (input: ${JSON.stringify(tab.input)}) intended for closure was not found in the current tab list.`, + if (freshTabToClose) { + try { + await vscode.window.tabGroups.close(freshTabToClose, true) // true to bypass dirty check implicitly + } catch (closeError) { + console.error(`Roo Debug CloseLoop: Error closing tab "${freshTabToClose.label}":`, closeError) + } + } else { + // This case should ideally not happen if the tab was in the filtered list. + // It might indicate the tab was closed by another means or its input changed. + console.warn( + `Roo Debug CloseLoop: Tab "${tab.label}" (input: ${JSON.stringify(tab.input)}) intended for closure was not found in the current tab list.`, + ) + // Fallback: Try to close the original tab reference if the fresh one isn't found, + // though this is less likely to succeed if it's genuinely stale. + try { + console.log(`Roo Debug CloseLoop: Attempting to close original (stale?) tab "${tab.label}"`) + await vscode.window.tabGroups.close(tab, true) + } catch (fallbackCloseError) { + console.error( + `Roo Debug CloseLoop: Error closing original tab reference for "${tab.label}":`, + fallbackCloseError, ) - // Fallback: Try to close the original tab reference if the fresh one isn't found, - // though this is less likely to succeed if it's genuinely stale. - try { - console.log(`Roo Debug CloseLoop: Attempting to close original (stale?) tab "${tab.label}"`) - await vscode.window.tabGroups.close(tab, true) - } catch (fallbackCloseError) { - console.error( - `Roo Debug CloseLoop: Error closing original tab reference for "${tab.label}":`, - fallbackCloseError, - ) - } } } } - private async getEditorFromDiffTab(uri: vscode.Uri): Promise { - // If this diff editor is already open (ie if a previous write file was interrupted) then we should activate that instead of opening a new diff - const diffTab = vscode.window.tabGroups.all - .flatMap((group) => group.tabs) - .find( - (tab) => - tab.input instanceof vscode.TabInputTextDiff && - tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME && - arePathsEqual(tab.input.modified.fsPath, uri.fsPath), - ) - // If this diff editor is already open (ie if a previous write file was - // interrupted) then we should activate that instead of opening a new - // diff. - if (!(diffTab && diffTab.input instanceof vscode.TabInputTextDiff)) { - return null - } - // Removed logic that explicitly opens/focuses the standalone file tab immediately after diff opens. - // The standalone tab should only be opened in saveChanges after approval for new/unopened files. - const editor = vscode.window.visibleTextEditors.find((ed) => arePathsEqual(ed.document.uri.fsPath, uri.fsPath)) - if (editor) return editor - - // If the editor is not found among visible editors, it means it's not currently open. - // We should not open it here, as it should only be opened in saveChanges after approval. - // Return null to indicate that the editor for the standalone file tab is not available/should not be focused immediately. - return null + private async closeAllRooOpenedViews() { + const settings = await this._readDiffSettings() // Dynamically read settings + + const closeOps = vscode.window.tabGroups.all + .flatMap((tg) => tg.tabs) + .filter((tab) => this.filterTabsToClose(tab, settings)) + .map(this.closeTab) + + await Promise.all(closeOps) } /** @@ -671,7 +652,7 @@ export class DiffViewProvider { const title = `${fileName}: ${fileExists ? "Original ↔ Roo's Changes" : "New File"} (Editable)` const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, - preserveFocus: settings.autoFocus ? false : true, // Use dynamically read autoFocus + preserveFocus: !settings.autoFocus, // Use dynamically read autoFocus viewColumn: this.viewColumn, } // set interaction flag to true to prevent autoFocus from being triggered From e239ed0af4199188971f521c791e24f07b69fa34 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Wed, 21 May 2025 22:49:45 +0200 Subject: [PATCH 38/66] feat(settings): add 'autoCloseAll' option to enhance tab management --- webview-ui/src/i18n/locales/ca/settings.json | 4 ++++ webview-ui/src/i18n/locales/de/settings.json | 4 ++++ webview-ui/src/i18n/locales/es/settings.json | 4 ++++ webview-ui/src/i18n/locales/fr/settings.json | 4 ++++ webview-ui/src/i18n/locales/hi/settings.json | 4 ++++ webview-ui/src/i18n/locales/it/settings.json | 4 ++++ webview-ui/src/i18n/locales/ja/settings.json | 4 ++++ webview-ui/src/i18n/locales/ko/settings.json | 4 ++++ webview-ui/src/i18n/locales/nl/settings.json | 4 ++++ webview-ui/src/i18n/locales/pl/settings.json | 4 ++++ webview-ui/src/i18n/locales/pt-BR/settings.json | 4 ++++ webview-ui/src/i18n/locales/ru/settings.json | 4 ++++ webview-ui/src/i18n/locales/tr/settings.json | 4 ++++ webview-ui/src/i18n/locales/vi/settings.json | 4 ++++ webview-ui/src/i18n/locales/zh-CN/settings.json | 4 ++++ webview-ui/src/i18n/locales/zh-TW/settings.json | 4 ++++ 16 files changed, 64 insertions(+) diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index f649d99ec6..3b2539148a 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Tanca automàticament les pestanyes de Roo", "description": "Quan està activat, Roo tancarà automàticament les pestanyes que hagi obert (com les vistes de diferències i els fitxers oberts) quan una tasca que impliqui modificació de fitxers es completi o es reverteixi." + }, + "autoCloseAll": { + "label": "Tancar automàticament totes les pestanyes tocades per Roo", + "description": "Quan està activat (i la configuració anterior també està activada), Roo tancarà totes les pestanyes amb les quals va interactuar durant una tasca de modificació de fitxers, incloses aquelles que ja estaven obertes abans que comencés la tasca." } } }, diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index c67a693ac7..bbece18628 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Roo-Tabs automatisch schließen", "description": "Wenn aktiviert, schließt Roo automatisch alle Tabs, die es selbst geöffnet hat (wie Diff-Ansichten und geöffnete Dateien), wenn eine Aufgabe mit Dateiänderungen abgeschlossen oder zurückgesetzt wird." + }, + "autoCloseAll": { + "label": "Alle von Roo berührten Tabs automatisch schließen", + "description": "Wenn aktiviert (und die obige Einstellung ebenfalls aktiviert ist), schließt Roo alle Tabs, mit denen es während einer Dateiänderungsaufgabe interagiert hat, einschließlich derjenigen, die bereits vor Beginn der Aufgabe geöffnet waren." } } }, diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 2eb9dc38c2..dee49f5c0f 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Cerrar automáticamente las pestañas de Roo", "description": "Cuando está habilitado, Roo cerrará automáticamente las pestañas que haya abierto (como vistas de diferencias y archivos abiertos) cuando una tarea que involucre modificación de archivos se complete o se revierta." + }, + "autoCloseAll": { + "label": "Cerrar automáticamente todas las pestañas tocadas por Roo", + "description": "Cuando está habilitado (y la configuración anterior también está habilitada), Roo cerrará todas las pestañas con las que interactuó durante una tarea de modificación de archivos, incluidas aquellas que ya estaban abiertas antes de que comenzara la tarea." } } }, diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 9d501ceb30..5df860c8d5 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Fermer automatiquement les onglets Roo", "description": "Lorsqu'activé, Roo fermera automatiquement les onglets qu'il a ouverts (vues de différences, fichiers ouverts) lorsqu'une tâche impliquant une modification de fichiers est terminée ou annulée." + }, + "autoCloseAll": { + "label": "Fermer automatiquement tous les onglets touchés par Roo", + "description": "Lorsqu'activé (et que le paramètre ci-dessus est également activé), Roo fermera tous les onglets avec lesquels il a interagi lors d'une tâche de modification de fichier, y compris ceux qui étaient déjà ouverts avant le début de la tâche." } } }, diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index d827239203..60e74e19ee 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Roo टैब स्वचालित रूप से बंद करें", "description": "जब सक्षम किया जाता है, तो Roo उन सभी टैब को स्वचालित रूप से बंद कर देगा जिन्हें इसने खोला है (जैसे डिफ व्यू और खुली फ़ाइलें) जब फ़ाइल संशोधन वाला कार्य पूरा हो जाता है या वापस लिया जाता है।" + }, + "autoCloseAll": { + "label": "Roo द्वारा छुए गए सभी टैब स्वचालित रूप से बंद करें", + "description": "जब सक्षम किया जाता है (और उपरोक्त सेटिंग भी सक्षम है), तो Roo उन सभी टैब को स्वचालित रूप से बंद कर देगा जिनके साथ इसने फ़ाइल संशोधन कार्य के दौरान इंटरैक्ट किया था, जिसमें वे टैब भी शामिल हैं जो कार्य शुरू होने से पहले ही खुले थे।" } } }, diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 667fc459af..0353c05079 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Chiudi automaticamente le schede Roo", "description": "Quando abilitato, Roo chiuderà automaticamente le schede che ha aperto (come viste diff e file aperti) quando un'attività che coinvolge la modifica di file viene completata o annullata." + }, + "autoCloseAll": { + "label": "Chiudi automaticamente tutte le schede toccate da Roo", + "description": "Quando abilitato (e anche l'impostazione precedente è abilitata), Roo chiuderà tutte le schede con cui ha interagito durante un'attività di modifica dei file, incluse quelle che erano già aperte prima dell'inizio dell'attività." } } }, diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index bbc6fab585..c79a05bef6 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Rooのタブを自動的に閉じる", "description": "有効にすると、ファイルの変更を含むタスクが完了または取り消された時に、Rooが開いたタブ(差分ビューや開いたファイルなど)を自動的に閉じます。" + }, + "autoCloseAll": { + "label": "Rooが触れたすべてのタブを自動的に閉じる", + "description": "有効にすると(そして上記の設定も有効になっている場合)、Rooはファイル変更タスク中に操作したすべてのタブ(タスク開始前にすでに開いていたタブを含む)を自動的に閉じます。" } } }, diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index ffadd77101..5f87580b3e 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Roo 탭 자동 닫기", "description": "활성화 시 Roo는 파일 수정이 포함된 작업이 완료되거나 취소될 때 자동으로 열었던 탭(차이점 보기, 열린 파일 등)을 닫습니다." + }, + "autoCloseAll": { + "label": "Roo가 수정한 모든 탭 자동 닫기", + "description": "활성화 시 (그리고 위의 설정도 활성화된 경우), Roo는 파일 수정 작업 중에 상호 작용한 모든 탭(작업 시작 전에 이미 열려 있던 탭 포함)을 자동으로 닫습니다." } } }, diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 36bae1cab3..9708adead8 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Door Roo geopende tabbladen automatisch sluiten", "description": "Indien ingeschakeld, sluit Roo automatisch alle tabbladen die het zelf heeft geopend (zoals diff-weergaven, geopende bestanden) wanneer een taak met bestandswijzigingen wordt voltooid of teruggedraaid." + }, + "autoCloseAll": { + "label": "Sluit automatisch alle tabbladen die door Roo zijn aangeraakt", + "description": "Indien ingeschakeld (en de bovenstaande instelling is ook ingeschakeld), sluit Roo automatisch alle tabbladen waarmee het heeft geïnterageerd tijdens een taak voor bestandsaanpassing, inclusief de tabbladen die al open waren voordat de taak begon." } } }, diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 982682b560..8a057dcc7f 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Automatycznie zamykaj karty Roo", "description": "Gdy włączone, Roo automatycznie zamknie karty, które otworzyło (takie jak widoki różnic i otwarte pliki), gdy zadanie obejmujące modyfikację plików zostanie zakończone lub cofnięte." + }, + "autoCloseAll": { + "label": "Automatycznie zamykaj wszystkie karty dotknięte przez Roo", + "description": "Gdy włączone (i powyższe ustawienie jest również włączone), Roo automatycznie zamknie wszystkie karty, z którymi wchodził w interakcję podczas zadania modyfikacji plików, w tym te, które były już otwarte przed rozpoczęciem zadania." } } }, diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index a7debe4895..70642055c9 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Fechar automaticamente as abas do Roo", "description": "Quando ativado, o Roo fechará automaticamente as abas que abriu (como visualizações de diferenças e arquivos abertos) quando uma tarefa que envolve modificação de arquivos é concluída ou revertida." + }, + "autoCloseAll": { + "label": "Fechar automaticamente todas as abas tocadas pelo Roo", + "description": "Quando ativado (e a configuração acima também está ativada), o Roo fechará automaticamente todas as abas com as quais interagiu durante uma tarefa de modificação de arquivo, incluindo aquelas que já estavam abertas antes do início da tarefa." } } }, diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index c33fcba929..252365c20b 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Автоматически закрывать вкладки Roo", "description": "Если включено, Roo будет автоматически закрывать открытые им вкладки (такие как просмотр изменений и открытые файлы), когда задача, включающая модификацию файлов, завершается или отменяется." + }, + "autoCloseAll": { + "label": "Автоматически закрывать все вкладки, затронутые Roo", + "description": "Если включено (и предыдущая настройка также включена), Roo будет автоматически закрывать все вкладки, с которыми он взаимодействовал во время задачи модификации файлов, включая те, которые были открыты до начала задачи." } } }, diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 10c6814031..af13cbae7b 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Roo'nun açtığı sekmeleri otomatik kapat", "description": "Etkinleştirildiğinde, Roo dosya değişikliği içeren bir görev tamamlandığında veya geri alındığında açtığı sekmeleri (ör. diff görünümleri, açılan dosyalar) otomatik olarak kapatacaktır." + }, + "autoCloseAll": { + "label": "Roo'nun dokunduğu tüm sekmeleri otomatik kapat", + "description": "Etkinleştirildiğinde (ve yukarıdaki ayar da etkinleştirildiğinde), Roo bir dosya değiştirme görevi sırasında etkileşimde bulunduğu tüm sekmeleri (görev başlamadan önce zaten açık olanlar dahil) otomatik olarak kapatır." } } }, diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index c0c0aeaf97..9b5004e5e0 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "Tự động đóng các tab Roo", "description": "Khi bật, Roo sẽ tự động đóng các tab nó đã mở (như chế độ xem diff, các tệp đã mở) khi một tác vụ liên quan đến sửa đổi tệp hoàn thành hoặc được hoàn tác." + }, + "autoCloseAll": { + "label": "Tự động đóng tất cả các tab mà Roo đã chạm vào", + "description": "Khi được bật (và cài đặt ở trên cũng được bật), Roo sẽ tự động đóng tất cả các tab mà nó đã tương tác trong quá trình sửa đổi tệp, bao gồm cả những tab đã mở trước khi tác vụ bắt đầu." } } }, diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index caa85a22db..cf144afdd8 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "自动关闭Roo打开的标签页", "description": "启用后,Roo会在涉及文件修改的任务完成或回退时自动关闭它自己打开的标签页(如差异视图、打开的文件)。" + }, + "autoCloseAll": { + "label": "自动关闭所有Roo操作过的标签页", + "description": "启用后(且上述设置也已启用),Roo将在涉及文件修改的任务完成或回滚时,自动关闭所有在此任务中交互过的标签页,包括任务开始前已打开的标签页。" } } }, diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 2028380067..f93e039375 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -406,6 +406,10 @@ "autoClose": { "label": "自動關閉 Roo 開啟的分頁", "description": "啟用後,Roo 會在涉及檔案修改的任務完成或復原時,自動關閉它開啟的分頁(如差異檢視、開啟的檔案)。" + }, + "autoCloseAll": { + "label": "自動關閉所有 Roo 操作過的分頁", + "description": "啟用後(且上述設定也已啟用),Roo 將在涉及檔案修改的任務完成或復原時,自動關閉所有在此任務中互動過的分頁,包括任務開始前已開啟的分頁。" } } }, From ff13aa2c9c5b62f437da0e3654157846c1478dda Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 25 May 2025 19:07:59 +0200 Subject: [PATCH 39/66] feat(lockfile): add lockfile etc --- pnpm-lock.yaml | 18558 +++++++++++++++++++++++++++++++++++++++++++++ src/package.json | 15 + 2 files changed, 18573 insertions(+) create mode 100644 pnpm-lock.yaml diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000..6d36ecb30f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,18558 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@changesets/cli': + specifier: ^2.27.10 + version: 2.29.4 + '@dotenvx/dotenvx': + specifier: ^1.34.0 + version: 1.44.0 + '@vscode/vsce': + specifier: 3.3.2 + version: 3.3.2 + esbuild: + specifier: ^0.25.0 + version: 0.25.4 + eslint: + specifier: ^9.27.0 + version: 9.27.0(jiti@2.4.2) + husky: + specifier: ^9.1.7 + version: 9.1.7 + knip: + specifier: ^5.44.4 + version: 5.55.1(@types/node@22.15.20)(typescript@5.8.3) + lint-staged: + specifier: ^15.2.11 + version: 15.5.2 + mkdirp: + specifier: ^3.0.1 + version: 3.0.1 + only-allow: + specifier: ^1.2.1 + version: 1.2.1 + ovsx: + specifier: 0.10.2 + version: 0.10.2 + prettier: + specifier: ^3.4.2 + version: 3.5.3 + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + turbo: + specifier: ^2.5.3 + version: 2.5.3 + typescript: + specifier: ^5.4.5 + version: 5.8.3 + + apps/vscode-e2e: + devDependencies: + '@roo-code/config-eslint': + specifier: workspace:^ + version: link:../../packages/config-eslint + '@roo-code/config-typescript': + specifier: workspace:^ + version: link:../../packages/config-typescript + '@roo-code/types': + specifier: ^1.12.0 + version: 1.12.0 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: ^22.14.1 + version: 22.15.20 + '@types/vscode': + specifier: ^1.95.0 + version: 1.100.0 + '@vscode/test-cli': + specifier: ^0.0.10 + version: 0.0.10 + '@vscode/test-electron': + specifier: ^2.4.0 + version: 2.5.2 + glob: + specifier: ^11.0.1 + version: 11.0.2 + mocha: + specifier: ^11.1.0 + version: 11.2.2 + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + typescript: + specifier: 5.8.3 + version: 5.8.3 + + apps/vscode-nightly: + devDependencies: + '@roo-code/build': + specifier: workspace:^ + version: link:../../packages/build + + packages/build: + dependencies: + zod: + specifier: ^3.24.2 + version: 3.24.4 + devDependencies: + '@roo-code/config-eslint': + specifier: workspace:^ + version: link:../config-eslint + '@roo-code/config-typescript': + specifier: workspace:^ + version: link:../config-typescript + '@types/node': + specifier: ^22.15.20 + version: 22.15.20 + vitest: + specifier: ^3.1.3 + version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.20)(jiti@2.4.2)(jsdom@20.0.3)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + + packages/config-eslint: + devDependencies: + '@eslint/js': + specifier: ^9.22.0 + version: 9.27.0 + '@next/eslint-plugin-next': + specifier: ^15.2.1 + version: 15.3.2 + eslint: + specifier: ^9.27.0 + version: 9.27.0(jiti@2.4.2) + eslint-config-prettier: + specifier: ^10.1.1 + version: 10.1.5(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-only-warn: + specifier: ^1.1.0 + version: 1.1.0 + eslint-plugin-react: + specifier: ^7.37.4 + version: 7.37.5(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-turbo: + specifier: ^2.4.4 + version: 2.5.3(eslint@9.27.0(jiti@2.4.2))(turbo@2.5.3) + globals: + specifier: ^16.0.0 + version: 16.1.0 + typescript-eslint: + specifier: ^8.26.0 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + + packages/config-typescript: {} + + src: + dependencies: + '@anthropic-ai/bedrock-sdk': + specifier: ^0.10.2 + version: 0.10.4 + '@anthropic-ai/sdk': + specifier: ^0.37.0 + version: 0.37.0 + '@anthropic-ai/vertex-sdk': + specifier: ^0.7.0 + version: 0.7.0 + '@aws-sdk/client-bedrock-runtime': + specifier: ^3.779.0 + version: 3.808.0 + '@aws-sdk/credential-providers': + specifier: ^3.806.0 + version: 3.808.0 + '@google/genai': + specifier: ^0.13.0 + version: 0.13.0 + '@mistralai/mistralai': + specifier: ^1.3.6 + version: 1.6.0(zod@3.24.4) + '@modelcontextprotocol/sdk': + specifier: ^1.9.0 + version: 1.11.2 + '@vscode/codicons': + specifier: ^0.0.36 + version: 0.0.36 + axios: + specifier: ^1.7.4 + version: 1.9.0 + cheerio: + specifier: ^1.0.0 + version: 1.0.0 + chokidar: + specifier: ^4.0.1 + version: 4.0.3 + clone-deep: + specifier: ^4.0.1 + version: 4.0.1 + default-shell: + specifier: ^2.2.0 + version: 2.2.0 + delay: + specifier: ^6.0.0 + version: 6.0.0 + diff: + specifier: ^5.2.0 + version: 5.2.0 + diff-match-patch: + specifier: ^1.0.5 + version: 1.0.5 + fast-deep-equal: + specifier: ^3.1.3 + version: 3.1.3 + fast-xml-parser: + specifier: ^4.5.1 + version: 4.5.3 + fastest-levenshtein: + specifier: ^1.0.16 + version: 1.0.16 + fzf: + specifier: ^0.5.2 + version: 0.5.2 + get-folder-size: + specifier: ^5.0.0 + version: 5.0.0 + google-auth-library: + specifier: ^9.15.1 + version: 9.15.1 + i18next: + specifier: ^24.2.2 + version: 24.2.3(typescript@5.8.3) + ignore: + specifier: ^7.0.3 + version: 7.0.4 + isbinaryfile: + specifier: ^5.0.2 + version: 5.0.4 + mammoth: + specifier: ^1.8.0 + version: 1.9.0 + monaco-vscode-textmate-theme-converter: + specifier: ^0.1.7 + version: 0.1.7(tslib@2.8.1) + node-cache: + specifier: ^5.1.2 + version: 5.1.2 + node-ipc: + specifier: ^12.0.0 + version: 12.0.0 + openai: + specifier: ^4.78.1 + version: 4.98.0(ws@8.18.2)(zod@3.24.4) + os-name: + specifier: ^6.0.0 + version: 6.0.0 + p-wait-for: + specifier: ^5.0.2 + version: 5.0.2 + pdf-parse: + specifier: ^1.1.1 + version: 1.1.1 + pkce-challenge: + specifier: ^4.1.0 + version: 4.1.0 + posthog-node: + specifier: ^4.7.0 + version: 4.17.1 + pretty-bytes: + specifier: ^6.1.1 + version: 6.1.1 + ps-tree: + specifier: ^1.2.0 + version: 1.2.0 + puppeteer-chromium-resolver: + specifier: ^23.0.0 + version: 23.0.0 + puppeteer-core: + specifier: ^23.4.0 + version: 23.11.1 + reconnecting-eventsource: + specifier: ^1.6.4 + version: 1.6.4 + sanitize-filename: + specifier: ^1.6.3 + version: 1.6.3 + say: + specifier: ^0.16.0 + version: 0.16.0 + serialize-error: + specifier: ^11.0.3 + version: 11.0.3 + simple-git: + specifier: ^3.27.0 + version: 3.27.0 + sound-play: + specifier: ^1.1.0 + version: 1.1.0 + string-similarity: + specifier: ^4.0.4 + version: 4.0.4 + strip-ansi: + specifier: ^7.1.0 + version: 7.1.0 + strip-bom: + specifier: ^5.0.0 + version: 5.0.0 + tiktoken: + specifier: ^1.0.21 + version: 1.0.21 + tmp: + specifier: ^0.2.3 + version: 0.2.3 + tree-sitter-wasms: + specifier: ^0.1.11 + version: 0.1.12 + turndown: + specifier: ^7.2.0 + version: 7.2.0 + vscode-material-icons: + specifier: ^0.1.1 + version: 0.1.1 + web-tree-sitter: + specifier: ^0.22.6 + version: 0.22.6 + workerpool: + specifier: ^9.2.0 + version: 9.2.0 + yaml: + specifier: ^2.8.0 + version: 2.8.0 + zod: + specifier: ^3.24.2 + version: 3.24.4 + devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@roo-code/build': + specifier: workspace:^ + version: link:../packages/build + '@roo-code/config-eslint': + specifier: workspace:^ + version: link:../packages/config-eslint + '@roo-code/config-typescript': + specifier: workspace:^ + version: link:../packages/config-typescript + '@types/clone-deep': + specifier: ^4.0.4 + version: 4.0.4 + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 + '@types/diff': + specifier: ^5.2.1 + version: 5.2.3 + '@types/diff-match-patch': + specifier: ^1.0.36 + version: 1.0.36 + '@types/glob': + specifier: ^8.1.0 + version: 8.1.0 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 + '@types/node': + specifier: 20.x + version: 20.17.47 + '@types/node-cache': + specifier: ^4.1.3 + version: 4.2.5 + '@types/node-ipc': + specifier: ^9.2.3 + version: 9.2.3 + '@types/ps-tree': + specifier: ^1.1.6 + version: 1.1.6 + '@types/string-similarity': + specifier: ^4.0.2 + version: 4.0.2 + '@types/tmp': + specifier: ^0.2.6 + version: 0.2.6 + '@types/turndown': + specifier: ^5.0.5 + version: 5.0.5 + '@types/vscode': + specifier: ^1.84.0 + version: 1.100.0 + '@vscode/test-electron': + specifier: ^2.5.2 + version: 2.5.2 + '@vscode/vsce': + specifier: 3.3.2 + version: 3.3.2 + esbuild: + specifier: ^0.25.0 + version: 0.25.4 + execa: + specifier: ^9.5.2 + version: 9.5.3 + glob: + specifier: ^11.0.1 + version: 11.0.2 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0) + jest-simple-dot-reporter: + specifier: ^1.0.5 + version: 1.0.5 + mkdirp: + specifier: ^3.0.1 + version: 3.0.1 + nock: + specifier: ^14.0.4 + version: 14.0.4 + npm-run-all2: + specifier: ^8.0.1 + version: 8.0.1 + ovsx: + specifier: 0.10.2 + version: 0.10.2 + rimraf: + specifier: ^6.0.1 + version: 6.0.1 + ts-jest: + specifier: ^29.2.5 + version: 29.3.3(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + tsup: + specifier: ^8.4.0 + version: 8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0) + tsx: + specifier: ^4.19.3 + version: 4.19.4 + typescript: + specifier: 5.8.3 + version: 5.8.3 + vitest: + specifier: ^3.1.3 + version: 3.1.3(@types/debug@4.1.12)(@types/node@20.17.47)(jiti@2.4.2)(jsdom@20.0.3)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + zod-to-ts: + specifier: ^1.2.0 + version: 1.2.0(typescript@5.8.3)(zod@3.24.4) + + webview-ui: + dependencies: + '@radix-ui/react-alert-dialog': + specifier: ^1.1.6 + version: 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': + specifier: ^1.1.5 + version: 1.3.1(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collapsible': + specifier: ^1.1.3 + version: 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': + specifier: ^1.1.6 + version: 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.5 + version: 2.1.14(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-icons': + specifier: ^1.3.2 + version: 1.3.2(react@18.3.1) + '@radix-ui/react-popover': + specifier: ^1.1.6 + version: 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': + specifier: ^1.1.5 + version: 1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-progress': + specifier: ^1.1.2 + version: 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-select': + specifier: ^2.1.6 + version: 2.2.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-separator': + specifier: ^1.1.2 + version: 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slider': + specifier: ^1.2.3 + version: 1.3.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': + specifier: ^1.1.2 + version: 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-tooltip': + specifier: ^1.1.8 + version: 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tailwindcss/vite': + specifier: ^4.0.0 + version: 4.1.6(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + '@tanstack/react-query': + specifier: ^5.68.0 + version: 5.76.1(react@18.3.1) + '@vscode/codicons': + specifier: ^0.0.36 + version: 0.0.36 + '@vscode/webview-ui-toolkit': + specifier: ^1.4.0 + version: 1.4.0(react@18.3.1) + axios: + specifier: ^1.7.4 + version: 1.9.0 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cmdk: + specifier: ^1.0.0 + version: 1.1.1(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + debounce: + specifier: ^2.1.1 + version: 2.2.0 + fast-deep-equal: + specifier: ^3.1.3 + version: 3.1.3 + fzf: + specifier: ^0.5.2 + version: 0.5.2 + i18next: + specifier: ^24.2.2 + version: 24.2.3(typescript@5.8.3) + i18next-http-backend: + specifier: ^3.0.2 + version: 3.0.2 + knuth-shuffle-seeded: + specifier: ^1.0.6 + version: 1.0.6 + lucide-react: + specifier: ^0.510.0 + version: 0.510.0(react@18.3.1) + mermaid: + specifier: ^11.4.1 + version: 11.6.0 + posthog-js: + specifier: ^1.227.2 + version: 1.242.1 + pretty-bytes: + specifier: ^6.1.1 + version: 6.1.1 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-i18next: + specifier: ^15.4.1 + version: 15.5.1(i18next@24.2.3(typescript@5.8.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3) + react-markdown: + specifier: ^9.0.3 + version: 9.1.0(@types/react@18.3.21)(react@18.3.1) + react-remark: + specifier: ^2.1.0 + version: 2.1.0(react@18.3.1) + react-textarea-autosize: + specifier: ^8.5.3 + version: 8.5.9(@types/react@18.3.21)(react@18.3.1) + react-use: + specifier: ^17.5.1 + version: 17.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-virtuoso: + specifier: ^4.7.13 + version: 4.12.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-highlight: + specifier: ^7.0.0 + version: 7.0.2 + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 + remove-markdown: + specifier: ^0.6.0 + version: 0.6.2 + shell-quote: + specifier: ^1.8.2 + version: 1.8.2 + shiki: + specifier: ^3.2.1 + version: 3.4.1 + source-map: + specifier: ^0.7.4 + version: 0.7.4 + styled-components: + specifier: ^6.1.13 + version: 6.1.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + tailwindcss: + specifier: ^4.0.0 + version: 4.1.6 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@4.1.6) + unist-util-visit: + specifier: ^5.0.0 + version: 5.0.0 + use-sound: + specifier: ^5.0.0 + version: 5.0.0(react@18.3.1) + vscode-material-icons: + specifier: ^0.1.1 + version: 0.1.1 + vscrui: + specifier: ^0.2.2 + version: 0.2.2(@types/react@18.3.21)(react@18.3.1) + zod: + specifier: ^3.24.2 + version: 3.24.4 + devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@roo-code/config-eslint': + specifier: workspace:^ + version: link:../packages/config-eslint + '@roo-code/config-typescript': + specifier: workspace:^ + version: link:../packages/config-typescript + '@storybook/addon-essentials': + specifier: ^8.5.6 + version: 8.6.12(@types/react@18.3.21)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/blocks': + specifier: ^8.5.6 + version: 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/react': + specifier: ^8.5.6 + version: 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + '@storybook/react-vite': + specifier: ^8.5.6 + version: 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + '@testing-library/jest-dom': + specifier: ^6.6.3 + version: 6.6.3 + '@testing-library/react': + specifier: ^16.2.0 + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.1(@testing-library/dom@10.4.0) + '@types/jest': + specifier: ^27.5.2 + version: 27.5.2 + '@types/node': + specifier: ^18.0.0 + version: 18.19.100 + '@types/react': + specifier: ^18.3.18 + version: 18.3.21 + '@types/react-dom': + specifier: ^18.3.5 + version: 18.3.7(@types/react@18.3.21) + '@types/shell-quote': + specifier: ^1.7.5 + version: 1.7.5 + '@types/testing-library__jest-dom': + specifier: ^5.14.5 + version: 5.14.9 + '@types/vscode-webview': + specifier: ^1.57.5 + version: 1.57.5 + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.4.1(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + identity-obj-proxy: + specifier: ^3.0.0 + version: 3.0.0 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-simple-dot-reporter: + specifier: ^1.0.5 + version: 1.0.5 + storybook: + specifier: ^8.5.6 + version: 8.6.12(prettier@3.5.3) + storybook-dark-mode: + specifier: ^4.0.2 + version: 4.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3)) + ts-jest: + specifier: ^29.2.5 + version: 29.3.3(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0))(typescript@5.8.3) + typescript: + specifier: 5.8.3 + version: 5.8.3 + vite: + specifier: 6.3.5 + version: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + +packages: + + '@adobe/css-tools@4.4.2': + resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@antfu/utils@8.1.1': + resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} + + '@anthropic-ai/bedrock-sdk@0.10.4': + resolution: {integrity: sha512-szduEHbMli6XL934xrraYg5cFuKL/1oMyj/iZuEVjtddQ7eD5cXObzWobsv5mTLWijQmSzMfFD+JAUHDPHlQ/Q==} + + '@anthropic-ai/sdk@0.37.0': + resolution: {integrity: sha512-tHjX2YbkUBwEgg0JZU3EFSSAQPoK4qQR/NFYa8Vtzd5UAyXzZksCw2In69Rml4R/TyHPBfRYaLK35XiOe33pjw==} + + '@anthropic-ai/vertex-sdk@0.7.0': + resolution: {integrity: sha512-zNm3hUXgYmYDTyveIxOyxbcnh5VXFkrLo4bSnG6LAfGzW7k3k2iCNDSVKtR9qZrK2BCid7JtVu7jsEKaZ/9dSw==} + + '@aws-crypto/crc32@3.0.0': + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@4.0.0': + resolution: {integrity: sha512-MHGJyjE7TX9aaqXj7zk2ppnFUOhaDs5sP+HtNS0evOxn72c+5njUmyJmpGd7TfyoDznZlHMmdo/xGUdu2NIjNQ==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + + '@aws-crypto/util@4.0.0': + resolution: {integrity: sha512-2EnmPy2gsFZ6m8bwUQN4jq+IyXV3quHAcwPOS6ZA3k+geujiqI8aRokO2kFJe+idJ/P3v4qWI186rVMo0+zLDQ==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-bedrock-runtime@3.808.0': + resolution: {integrity: sha512-OzjqAlevqurwAPiBGO++90pvpJCyjK6UrQH2av7oTwAwWYpY/wqVCGjch/pkme6G2+o76FjPvUKxfEcBu+5pKQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-cognito-identity@3.808.0': + resolution: {integrity: sha512-M9pdFQ+Efl1O4No6R7uMEOkidKVUiNsmN13EyzuIOGech9g+RF+LgDn3n8+PuC7EIgndQVe6sQ6w39sPQdBkww==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.808.0': + resolution: {integrity: sha512-NxGomD0x9q30LPOXf4x7haOm6l2BJdLEzpiC/bPEXUkf2+4XudMQumMA/hDfErY5hCE19mFAouoO465m3Gl3JQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.808.0': + resolution: {integrity: sha512-+nTmxJVIPtAarGq9Fd/uU2qU/Ngfb9EntT0/kwXdKKMI0wU9fQNWi10xSTVeqOtzWERbQpOJgBAdta+v3W7cng==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-cognito-identity@3.808.0': + resolution: {integrity: sha512-AbsD/qHyQmyZ+CqJNOaGlnwZaXu8HfndfEiLsIJU/dIf9Wbt7ZtsHSAI/x78awxGohDneMZ6c5vuaRGYL7Z04g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.808.0': + resolution: {integrity: sha512-snPRQnwG9PV4kYHQimo1tenf7P974RcdxkHUThzWSxPEV7HpjxTFYNWGlKbOKBhL4AcgeCVeiZ/j+zveF2lEPA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.808.0': + resolution: {integrity: sha512-gNXjlx3BIUeX7QpVqxbjBxG6zm45lC39QvUIo92WzEJd2OTPcR8TU0OTTsgq/lpn2FrKcISj5qXvhWykd41+CA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.808.0': + resolution: {integrity: sha512-Y53CW0pCvFQQEvtVFwExCCMbTg+6NOl8b3YOuZVzPmVmDoW7M1JIn9IScesqoGERXL3VoXny6nYTsZj+vfpp7Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.808.0': + resolution: {integrity: sha512-lASHlXJ6U5Cpnt9Gs+mWaaSmWcEibr1AFGhp+5UNvfyd+UU2Oiwgbo7rYXygmaVDGkbfXEiTkgYtoNOBSddnWQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.808.0': + resolution: {integrity: sha512-ZLqp+xsQUatoo8pMozcfLwf/pwfXeIk0w3n0Lo/rWBgT3RcdECmmPCRcnkYBqxHQyE66aS9HiJezZUwMYPqh6w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.808.0': + resolution: {integrity: sha512-gWZByAokHX+aps1+syIW/hbKUBrjE2RpPRd/RGQvrBbVVgwsJzsHKsW0zy1B6mgARPG6IahmSUMjNkBCVsiAgw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.808.0': + resolution: {integrity: sha512-SsGa1Gfa05aJM/qYOtHmfg0OKKW6Fl6kyMCcai63jWDVDYy0QSHcesnqRayJolISkdsVK6bqoWoFcPxiopcFcg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-providers@3.808.0': + resolution: {integrity: sha512-JJvY/gcet+tFw7dGifhTMJ2jfLXCJBR2Tu2rY/ePi+HVUrR//TnWmcm8qGvT1nWiCQ7w9NEhMlJgqKEIM/MkVQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/eventstream-handler-node@3.804.0': + resolution: {integrity: sha512-LZddQVBUCB86tZtLJRhqiDyIqr4hfRxZCcUp1fZSfpBMcf419lgcFRGWMR3J/kCWHQ0G05aor7fSeoeaxskuNQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-eventstream@3.804.0': + resolution: {integrity: sha512-3lPxZshOJoKSxIMUq8FCiIre+FZ1g/t+O7DHwOMB6EuzJ8lp5QyUeh1wE5iD/gB8VhWZoj90rGIaWCmT8ccEuA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.804.0': + resolution: {integrity: sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.804.0': + resolution: {integrity: sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.804.0': + resolution: {integrity: sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.808.0': + resolution: {integrity: sha512-VckV6l5cf/rL3EtgzSHVTTD4mI0gd8UxDDWbKJsxbQ2bpNPDQG2L1wWGLaolTSzjEJ5f3ijDwQrNDbY9l85Mmg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.808.0': + resolution: {integrity: sha512-NparPojwoBul7XPCasy4psFMJbw7Ys4bz8lVB93ljEUD4VV7mM7zwK27Uhz20B8mBFGmFEoAprPsVymJcK9Vcw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.808.0': + resolution: {integrity: sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.808.0': + resolution: {integrity: sha512-PsfKanHmnyO7FxowXqxbLQ+QjURCdSGxyhUiSdZbfvlvme/wqaMyIoMV/i4jppndksoSdPbW2kZXjzOqhQF+ew==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.804.0': + resolution: {integrity: sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.808.0': + resolution: {integrity: sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.804.0': + resolution: {integrity: sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.804.0': + resolution: {integrity: sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==} + + '@aws-sdk/util-user-agent-node@3.808.0': + resolution: {integrity: sha512-5UmB6u7RBSinXZAVP2iDgqyeVA/odO2SLEcrXaeTCw8ICXEoqF0K+GL36T4iDbzCBOAIugOZ6OcQX5vH3ck5UA==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@azure/abort-controller@2.1.2': + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} + engines: {node: '>=18.0.0'} + + '@azure/core-auth@1.9.0': + resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} + engines: {node: '>=18.0.0'} + + '@azure/core-client@1.9.4': + resolution: {integrity: sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==} + engines: {node: '>=18.0.0'} + + '@azure/core-rest-pipeline@1.20.0': + resolution: {integrity: sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==} + engines: {node: '>=18.0.0'} + + '@azure/core-tracing@1.2.0': + resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} + engines: {node: '>=18.0.0'} + + '@azure/core-util@1.12.0': + resolution: {integrity: sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==} + engines: {node: '>=18.0.0'} + + '@azure/identity@4.9.1': + resolution: {integrity: sha512-986D7Cf1AOwYqSDtO/FnMAyk/Jc8qpftkGsxuehoh4F85MhQ4fICBGX/44+X1y78lN4Sqib3Bsoaoh/FvOGgmg==} + engines: {node: '>=18.0.0'} + + '@azure/logger@1.2.0': + resolution: {integrity: sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==} + engines: {node: '>=18.0.0'} + + '@azure/msal-browser@4.12.0': + resolution: {integrity: sha512-WD1lmVWchg7wn1mI7Tr4v7QPyTwK+8Nuyje3jRpOFENLRLEBsdK8VVdTw3C+TypZmYn4cOAdj3zREnuFXgvfIA==} + engines: {node: '>=0.8.0'} + + '@azure/msal-common@15.6.0': + resolution: {integrity: sha512-EotmBz42apYGjqiIV9rDUdptaMptpTn4TdGf3JfjLvFvinSe9BJ6ywU92K9ky+t/b0ghbeTSe9RfqlgLh8f2jA==} + engines: {node: '>=0.8.0'} + + '@azure/msal-node@3.5.3': + resolution: {integrity: sha512-c5mifzHX5mwm5JqMIlURUyp6LEEdKF1a8lmcNRLBo0lD7zpSYPHupa4jHyhJyg9ccLwszLguZJdk2h3ngnXwNw==} + engines: {node: '>=16'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@braintree/sanitize-url@7.1.1': + resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + + '@changesets/apply-release-plan@7.0.12': + resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + + '@changesets/assemble-release-plan@6.0.8': + resolution: {integrity: sha512-y8+8LvZCkKJdbUlpXFuqcavpzJR80PN0OIfn8HZdwK7Sh6MgLXm4hKY5vu6/NDoKp8lAlM4ERZCqRMLxP4m+MQ==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.29.4': + resolution: {integrity: sha512-VW30x9oiFp/un/80+5jLeWgEU6Btj8IqOgI+X/zAYu4usVOWXjPIK5jSSlt5jsCU7/6Z7AxEkarxBxGUqkAmNg==} + hasBin: true + + '@changesets/config@3.1.1': + resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + + '@changesets/get-release-plan@4.0.12': + resolution: {integrity: sha512-KukdEgaafnyGryUwpHG2kZ7xJquOmWWWk5mmoeQaSvZTWH1DC5D/Sw6ClgGFYtQnOMSQhgoEbDxAbpIIayKH1g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.1': + resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.5': + resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + + '@chevrotain/cst-dts-gen@11.0.3': + resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} + + '@chevrotain/gast@11.0.3': + resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} + + '@chevrotain/regexp-to-ast@11.0.3': + resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} + + '@chevrotain/types@11.0.3': + resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} + + '@chevrotain/utils@11.0.3': + resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + + '@dotenvx/dotenvx@1.44.0': + resolution: {integrity: sha512-18Aa+7KP/L2Kj9lxmT4EJZnsCq/xGIHgzU26rdzsKMhjpeT3YY+qin/dNAnIaVHPZnee7kXpZL55M9htd30r7Q==} + hasBin: true + + '@ecies/ciphers@0.2.3': + resolution: {integrity: sha512-tapn6XhOueMwht3E2UzY0ZZjYokdaw9XtL9kEyjhQ/Fb9vL9xTFbOaI+fV0AWvTpYu4BNloC6getKW6NtSg4mA==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + peerDependencies: + '@noble/ciphers': ^1.0.0 + + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.27.0': + resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.1': + resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.7.0': + resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + + '@floating-ui/dom@1.7.0': + resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@google/genai@0.13.0': + resolution: {integrity: sha512-eaEncWt875H7046T04mOpxpHJUM+jLIljEf+5QctRyOeChylE/nhpwm1bZWTRWoOu/t46R9r+PmgsJFhTpE7tQ==} + engines: {node: '>=18.0.0'} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.3.0': + resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0': + resolution: {integrity: sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@mapbox/hast-util-table-cell-style@0.2.1': + resolution: {integrity: sha512-LyQz4XJIdCdY/+temIhD/Ed0x/p4GAOUycpFSEK2Ads1CPKZy6b7V/2ROEtQiLLQ8soIs0xe/QAoR6kwpyW/yw==} + engines: {node: '>=12'} + + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@mermaid-js/parser@0.4.0': + resolution: {integrity: sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==} + + '@microsoft/fast-element@1.14.0': + resolution: {integrity: sha512-zXvuSOzvsu8zDTy9eby8ix8VqLop2rwKRgp++ZN2kTCsoB3+QJVoaGD2T/Cyso2ViZQFXNpiNCVKfnmxBvmWkQ==} + + '@microsoft/fast-foundation@2.50.0': + resolution: {integrity: sha512-8mFYG88Xea1jZf2TI9Lm/jzZ6RWR8x29r24mGuLojNYqIR2Bl8+hnswoV6laApKdCbGMPKnsAL/O68Q0sRxeVg==} + + '@microsoft/fast-react-wrapper@0.3.25': + resolution: {integrity: sha512-jKzmk2xJV93RL/jEFXEZgBvXlKIY4N4kXy3qrjmBfFpqNi3VjY+oUTWyMnHRMC5EUhIFxD+Y1VD4u9uIPX3jQw==} + peerDependencies: + react: '>=16.9.0' + + '@microsoft/fast-web-utilities@5.4.1': + resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==} + + '@mistralai/mistralai@1.6.0': + resolution: {integrity: sha512-PQwGV3+n7FbE7Dp3Vnd8DAa3ffx6WuVV966Gfmf4QvzwcO3Mvxpz0SnJ/PjaZcsCwApBCZpNyQzvarAKEQLKeQ==} + peerDependencies: + zod: '>= 3' + + '@mixmark-io/domino@2.2.0': + resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==} + + '@modelcontextprotocol/sdk@1.11.2': + resolution: {integrity: sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==} + engines: {node: '>=18'} + + '@mswjs/interceptors@0.38.6': + resolution: {integrity: sha512-qFlpmObPqeUs4u3oFYv/OM/xyX+pNa5TRAjqjvMhbGYlyMhzSrE5UfncL2rUcEeVfD9Gebgff73hPwqcOwJQNA==} + engines: {node: '>=18'} + + '@next/eslint-plugin-next@15.3.2': + resolution: {integrity: sha512-ijVRTXBgnHT33aWnDtmlG+LJD+5vhc9AKTJPquGG5NKXjpKNjc62woIhFtrAcWdBobt8kqjCoaJ0q6sDQoX7aQ==} + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@puppeteer/browsers@2.10.4': + resolution: {integrity: sha512-9DxbZx+XGMNdjBynIs4BRSz+M3iRDeB7qRcAr6UORFLphCIM2x3DXgOucvADiifcqCE4XePFUKcnaAMyGbrDlQ==} + engines: {node: '>=18'} + hasBin: true + + '@puppeteer/browsers@2.6.1': + resolution: {integrity: sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==} + engines: {node: '>=18'} + hasBin: true + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-alert-dialog@1.1.13': + resolution: {integrity: sha512-/uPs78OwxGxslYOG5TKeUsv9fZC0vo376cXSADdKirTmsLJU2au6L3n34c3p6W26rFDDDze/hwy4fYeNd0qdGA==} + 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 + + '@radix-ui/react-arrow@1.1.6': + resolution: {integrity: sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==} + 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 + + '@radix-ui/react-checkbox@1.3.1': + resolution: {integrity: sha512-xTaLKAO+XXMPK/BpVTSaAAhlefmvMSACjIhK9mGsImvX2ljcTDm8VGR1CuS1uYcNdR5J+oiOhoJZc5un6bh3VQ==} + 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 + + '@radix-ui/react-collapsible@1.1.10': + resolution: {integrity: sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==} + 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 + + '@radix-ui/react-collection@1.1.6': + resolution: {integrity: sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==} + 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 + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.13': + resolution: {integrity: sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==} + 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 + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.9': + resolution: {integrity: sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==} + 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 + + '@radix-ui/react-dropdown-menu@2.1.14': + resolution: {integrity: sha512-lzuyNjoWOoaMFE/VC5FnAAYM16JmQA8ZmucOXtlhm2kKR5TSU95YLAueQ4JYuRmUJmBvSqXaVFGIfuukybwZJQ==} + 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 + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.6': + resolution: {integrity: sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==} + 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 + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-menu@2.1.14': + resolution: {integrity: sha512-0zSiBAIFq9GSKoSH5PdEaQeRB3RnEGxC+H2P0egtnKoKKLNBH8VBHyVO6/jskhjAezhOIplyRUj7U2lds9A+Yg==} + 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 + + '@radix-ui/react-popover@1.1.13': + resolution: {integrity: sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==} + 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 + + '@radix-ui/react-popper@1.2.6': + resolution: {integrity: sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==} + 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 + + '@radix-ui/react-portal@1.1.8': + resolution: {integrity: sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==} + 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 + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + 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 + + '@radix-ui/react-primitive@2.1.2': + resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + 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 + + '@radix-ui/react-progress@1.1.6': + resolution: {integrity: sha512-QzN9a36nKk2eZKMf9EBCia35x3TT+SOgZuzQBVIHyRrmYYi73VYBRK3zKwdJ6az/F5IZ6QlacGJBg7zfB85liA==} + 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 + + '@radix-ui/react-roving-focus@1.1.9': + resolution: {integrity: sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==} + 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 + + '@radix-ui/react-select@2.2.4': + resolution: {integrity: sha512-/OOm58Gil4Ev5zT8LyVzqfBcij4dTHYdeyuF5lMHZ2bIp0Lk9oETocYiJ5QC0dHekEQnK6L/FNJCceeb4AkZ6Q==} + 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 + + '@radix-ui/react-separator@1.1.6': + resolution: {integrity: sha512-Izof3lPpbCfTM7WDta+LRkz31jem890VjEvpVRoWQNKpDUMMVffuyq854XPGP1KYGWWmjmYvHvPFeocWhFCy1w==} + 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 + + '@radix-ui/react-slider@1.3.4': + resolution: {integrity: sha512-Cp6hEmQtRJFci285vkdIJ+HCDLTRDk+25VhFwa1fcubywjMUE3PynBgtN5RLudOgSCYMlT4jizCXdmV+8J7Y2w==} + 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 + + '@radix-ui/react-slot@1.2.2': + resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tooltip@1.2.6': + resolution: {integrity: sha512-zYb+9dc9tkoN2JjBDIIPLQtk3gGyz8FMKoqYTb8EMVQ5a5hBcdHPECrsZVI4NpPAUOixhkoqg7Hj5ry5USowfA==} + 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 + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.2': + resolution: {integrity: sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==} + 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 + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} + cpu: [x64] + os: [win32] + + '@roo-code/types@1.12.0': + resolution: {integrity: sha512-djdZ4lzsiOc+umX357JvcSwRlAMm05P+8DU58IFyZERmEh8wkm4TglDuaaRVGtQSHw9YGFikqfruLtZSEb7zJQ==} + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@shikijs/core@3.4.1': + resolution: {integrity: sha512-GCqSd3KXRTKX1sViP7fIyyyf6do2QVg+fTd4IT00ucYCVSKiSN8HbFbfyjGsoZePNKWcQqXe4U4rrz2IVldG5A==} + + '@shikijs/engine-javascript@3.4.1': + resolution: {integrity: sha512-oGvRqN3Bsk+cGzmCb/5Kt/LfD7uyA8vCUUawyqmLti/AYNV7++zIZFEW8JwW5PrpPNWWx9RcZ/chnYLedzlVIQ==} + + '@shikijs/engine-oniguruma@3.4.1': + resolution: {integrity: sha512-p8I5KWgEDUcXRif9JjJUZtNeqCyxZ8xcslecDJMigsqSZfokwqQIsH4aGpdjzmDf8LIWvT+C3TCxnJQVaPmCbQ==} + + '@shikijs/langs@3.4.1': + resolution: {integrity: sha512-v5A5ApJYcrcPLHcwAi0bViUU+Unh67UaXU9gGX3qfr2z3AqlqSZbC00W/3J4+tfGJASzwrWDro2R1er6SsCL1Q==} + + '@shikijs/themes@3.4.1': + resolution: {integrity: sha512-XOJgs55mVVMZtNVJx1NVmdcfXG9HIyZGh7qpCw/Ok5UMjWgkmb8z15TgcmF3ItvHItijiIMl9BLcNO/tFSGl1w==} + + '@shikijs/types@3.4.1': + resolution: {integrity: sha512-4flT+pToGqRBb0UhGqXTV7rCqUS3fhc8z3S2Djc3E5USKhXwadeKGFVNB2rKXfohlrEozNJMtMiZaN8lfdj/ZQ==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@2.2.0': + resolution: {integrity: sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==} + engines: {node: '>=14.0.0'} + + '@smithy/abort-controller@4.0.2': + resolution: {integrity: sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.1.2': + resolution: {integrity: sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.3.3': + resolution: {integrity: sha512-CiJNc0b/WdnttAfQ6uMkxPQ3Z8hG/ba8wF89x9KtBBLDdZk6CX52K4F8hbe94uNbc8LDUuZFtbqfdhM3T21naw==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.0.4': + resolution: {integrity: sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@2.2.0': + resolution: {integrity: sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==} + + '@smithy/eventstream-codec@4.0.2': + resolution: {integrity: sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.0.2': + resolution: {integrity: sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.1.0': + resolution: {integrity: sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@2.2.0': + resolution: {integrity: sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==} + engines: {node: '>=14.0.0'} + + '@smithy/eventstream-serde-node@4.0.2': + resolution: {integrity: sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@2.2.0': + resolution: {integrity: sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==} + engines: {node: '>=14.0.0'} + + '@smithy/eventstream-serde-universal@4.0.2': + resolution: {integrity: sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@2.5.0': + resolution: {integrity: sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==} + + '@smithy/fetch-http-handler@5.0.2': + resolution: {integrity: sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.0.2': + resolution: {integrity: sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.0.2': + resolution: {integrity: sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.0.2': + resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@2.5.1': + resolution: {integrity: sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-endpoint@4.1.6': + resolution: {integrity: sha512-Zdieg07c3ua3ap5ungdcyNnY1OsxmsXXtKDTk28+/YbwIPju0Z1ZX9X5AnkjmDE3+AbqgvhtC/ZuCMSr6VSfPw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.1.7': + resolution: {integrity: sha512-lFIFUJ0E/4I0UaIDY5usNUzNKAghhxO0lDH4TZktXMmE+e4ActD9F154Si0Unc01aCPzcwd+NcOwQw6AfXXRRQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@2.3.0': + resolution: {integrity: sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-serde@4.0.5': + resolution: {integrity: sha512-yREC3q/HXqQigq29xX3hiy6tFi+kjPKXoYUQmwQdgPORLbQ0n6V2Z/Iw9Nnlu66da9fM/WhDtGvYvqwecrCljQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@2.2.0': + resolution: {integrity: sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==} + engines: {node: '>=14.0.0'} + + '@smithy/middleware-stack@4.0.2': + resolution: {integrity: sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@2.3.0': + resolution: {integrity: sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==} + engines: {node: '>=14.0.0'} + + '@smithy/node-config-provider@4.1.1': + resolution: {integrity: sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@2.5.0': + resolution: {integrity: sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==} + engines: {node: '>=14.0.0'} + + '@smithy/node-http-handler@4.0.4': + resolution: {integrity: sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@2.2.0': + resolution: {integrity: sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==} + engines: {node: '>=14.0.0'} + + '@smithy/property-provider@4.0.2': + resolution: {integrity: sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@3.3.0': + resolution: {integrity: sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@5.1.0': + resolution: {integrity: sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@2.2.0': + resolution: {integrity: sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-builder@4.0.2': + resolution: {integrity: sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@2.2.0': + resolution: {integrity: sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==} + engines: {node: '>=14.0.0'} + + '@smithy/querystring-parser@4.0.2': + resolution: {integrity: sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.0.3': + resolution: {integrity: sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@2.4.0': + resolution: {integrity: sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==} + engines: {node: '>=14.0.0'} + + '@smithy/shared-ini-file-loader@4.0.2': + resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@3.1.2': + resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@5.1.0': + resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@2.5.1': + resolution: {integrity: sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==} + engines: {node: '>=14.0.0'} + + '@smithy/smithy-client@4.2.6': + resolution: {integrity: sha512-WEqP0wQ1N/lVS4pwNK1Vk+0i6QIr66cq/xbu1dVy1tM0A0qYwAYyz0JhbquzM5pMa8s89lyDBtoGKxo7iG74GA==} + engines: {node: '>=18.0.0'} + + '@smithy/types@2.12.0': + resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} + engines: {node: '>=14.0.0'} + + '@smithy/types@3.7.2': + resolution: {integrity: sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==} + engines: {node: '>=16.0.0'} + + '@smithy/types@4.2.0': + resolution: {integrity: sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@2.2.0': + resolution: {integrity: sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==} + + '@smithy/url-parser@4.0.2': + resolution: {integrity: sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@2.3.0': + resolution: {integrity: sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.0.14': + resolution: {integrity: sha512-l7QnMX8VcDOH6n/fBRu4zqguSlOBZxFzWqp58dXFSARFBjNlmEDk5G/z4T7BMGr+rI0Pg8MkhmMUfEtHFgpy2g==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.0.14': + resolution: {integrity: sha512-Ujs1gsWDo3m/T63VWBTBmHLTD2UlU6J6FEokLCEp7OZQv45jcjLHoxTwgWsi8ULpsYozvH4MTWkRP+bhwr0vDg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.0.4': + resolution: {integrity: sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@2.2.0': + resolution: {integrity: sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@2.2.0': + resolution: {integrity: sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-middleware@3.0.11': + resolution: {integrity: sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@4.0.2': + resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.0.3': + resolution: {integrity: sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@2.2.0': + resolution: {integrity: sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-stream@4.2.0': + resolution: {integrity: sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@2.2.0': + resolution: {integrity: sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + + '@storybook/addon-actions@8.6.12': + resolution: {integrity: sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-backgrounds@8.6.12': + resolution: {integrity: sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-controls@8.6.12': + resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-docs@8.6.12': + resolution: {integrity: sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-essentials@8.6.12': + resolution: {integrity: sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-highlight@8.6.12': + resolution: {integrity: sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-measure@8.6.12': + resolution: {integrity: sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-outline@8.6.12': + resolution: {integrity: sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-toolbars@8.6.12': + resolution: {integrity: sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/addon-viewport@8.6.12': + resolution: {integrity: sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/blocks@8.6.12': + resolution: {integrity: sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^8.6.12 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.6.12': + resolution: {integrity: sha512-Gju21ud/3Qw4v2vLNaa5SuJECsI9ICNRr2G0UyCCzRvCHg8jpA9lDReu2NqhLDyFIuDG+ZYT38gcaHEUoNQ8KQ==} + peerDependencies: + storybook: ^8.6.12 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + + '@storybook/components@8.6.12': + resolution: {integrity: sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/core-events@8.6.12': + resolution: {integrity: sha512-j2MUlSfYOhTsjlruRWTqSVwYreJGFIsWeqHFAhCdtmXe3qpFBM/LuxTKuaM1uWvs6vEAyGEzDw8+DXwuO6uISg==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/core@8.6.12': + resolution: {integrity: sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + '@storybook/csf-plugin@8.6.12': + resolution: {integrity: sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==} + peerDependencies: + storybook: ^8.6.12 + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.4.0': + resolution: {integrity: sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + + '@storybook/manager-api@8.6.12': + resolution: {integrity: sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/preview-api@8.6.12': + resolution: {integrity: sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/react-dom-shim@8.6.12': + resolution: {integrity: sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + + '@storybook/react-vite@8.6.12': + resolution: {integrity: sha512-UA2Kule99oyFgHdhcuhrRwCKyWu/yMbqbl9U7NwowFHNwWWFjVMMir/AmfShb/H1C1DQ3LqOad6/QwJyPLjP8g==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.12 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + '@storybook/test': + optional: true + + '@storybook/react@8.6.12': + resolution: {integrity: sha512-NzxlHLA5DkDgZM/dMwTYinuzRs6rsUPmlqP+NIv6YaciQ4NGnTYyOC7R/SqI6HHFm8ZZ5eMYvpfiFmhZ9rU+rQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.12 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.12 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/theming@8.6.12': + resolution: {integrity: sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@tailwindcss/node@4.1.6': + resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==} + + '@tailwindcss/oxide-android-arm64@4.1.6': + resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.6': + resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.6': + resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.6': + resolution: {integrity: sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@tanstack/query-core@5.76.0': + resolution: {integrity: sha512-FN375hb8ctzfNAlex5gHI6+WDXTNpe0nbxp/d2YJtnP+IBM6OUm7zcaoCW6T63BawGOYZBbKC0iPvr41TteNVg==} + + '@tanstack/react-query@5.76.1': + resolution: {integrity: sha512-YxdLZVGN4QkT5YT1HKZQWiIlcgauIXEIsMOTSjvyD5wLYK8YVvKZUPAysMqossFJJfDpJW3pFn7WNZuPOqq+fw==} + peerDependencies: + react: ^18 || ^19 + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.6.3': + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.0': + resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/clone-deep@4.0.4': + resolution: {integrity: sha512-vXh6JuuaAha6sqEbJueYdh5zNBPPgG1OYumuz2UvLvriN6ABHDSW8ludREGWJb1MLIzbwZn4q4zUbUCerJTJfA==} + + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.6': + resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/diff-match-patch@1.0.36': + resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} + + '@types/diff@5.2.3': + resolution: {integrity: sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@27.5.2': + resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/js-cookie@2.2.7': + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node-cache@4.2.5': + resolution: {integrity: sha512-faK2Owokboz53g8ooq2dw3iDJ6/HMTCIa2RvMte5WMTiABy+wA558K+iuyRtlR67Un5q9gEKysSDtqZYbSa0Pg==} + deprecated: This is a stub types definition. node-cache provides its own type definitions, so you do not need this installed. + + '@types/node-fetch@2.6.12': + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + + '@types/node-ipc@9.2.3': + resolution: {integrity: sha512-/MvSiF71fYf3+zwqkh/zkVkZj1hl1Uobre9EMFy08mqfJNAmpR0vmPgOUdEIDVgifxHj6G1vYMPLSBLLxoDACQ==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@18.19.100': + resolution: {integrity: sha512-ojmMP8SZBKprc3qGrGk8Ujpo80AXkrP7G2tOT4VWr5jlr5DHjsJF+emXJz+Wm0glmy4Js62oKMdZZ6B9Y+tEcA==} + + '@types/node@20.17.47': + resolution: {integrity: sha512-3dLX0Upo1v7RvUimvxLeXqwrfyKxUINk0EAM83swP2mlSUcwV73sZy8XhNz8bcZ3VbsfQyC/y6jRdL5tgCNpDQ==} + + '@types/node@22.15.20': + resolution: {integrity: sha512-A6BohGFRGHAscJsTslDCA9JG7qSJr/DWUvrvY8yi9IgnGtMxCyat7vvQ//MFa0DnLsyuS3wYTpLdw4Hf+Q5JXw==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/ps-tree@1.1.6': + resolution: {integrity: sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ==} + + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + + '@types/react@18.3.21': + resolution: {integrity: sha512-gXLBtmlcRJeT09/sI4PxVwyrku6SaNUj/6cMubjE6T6XdY1fDmBL7r0nX0jbSZPU/Xr0KuwLLZh6aOYY5d91Xw==} + + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/shell-quote@1.7.5': + resolution: {integrity: sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/string-similarity@4.0.2': + resolution: {integrity: sha512-LkJQ/jsXtCVMK+sKYAmX/8zEq+/46f1PTQw7YtmQwb74jemS1SlNLmARM2Zml9DgdDTWKAtc5L13WorpHPDjDA==} + + '@types/stylis@4.2.5': + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + + '@types/testing-library__jest-dom@5.14.9': + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + + '@types/tmp@0.2.6': + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/turndown@5.0.5': + resolution: {integrity: sha512-TL2IgGgc7B5j78rIccBtlYAnkuv8nUQqhQc+DSYV5j9Be9XOcm/SKOVRuA47xAVI3680Tk9B1d8flK2GWT2+4w==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/vscode-webview@1.57.5': + resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} + + '@types/vscode@1.100.0': + resolution: {integrity: sha512-4uNyvzHoraXEeCamR3+fzcBlh7Afs4Ifjs4epINyUX/jvdk0uzLnwiDY35UKDKnkCHP5Nu3dljl2H8lR6s+rQw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typespec/ts-http-runtime@0.2.2': + resolution: {integrity: sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==} + engines: {node: '>=18.0.0'} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vitejs/plugin-react@4.4.1': + resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + '@vitest/expect@3.1.3': + resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} + + '@vitest/mocker@3.1.3': + resolution: {integrity: sha512-PJbLjonJK82uCWHjzgBJZuR7zmAOrSvKk1QBxrennDIgtH4uK0TB1PvYmc0XBCigxxtiAVPfWtAdy4lpz8SQGQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.1.3': + resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} + + '@vitest/runner@3.1.3': + resolution: {integrity: sha512-Tae+ogtlNfFei5DggOsSUvkIaSuVywujMj6HzR97AHK6XK8i3BuVyIifWAm/sE3a15lF5RH9yQIrbXYuo0IFyA==} + + '@vitest/snapshot@3.1.3': + resolution: {integrity: sha512-XVa5OPNTYUsyqG9skuUkFzAeFnEzDp8hQu7kZ0N25B1+6KjGm4hWLtURyBbsIAOekfWQ7Wuz/N/XXzgYO3deWQ==} + + '@vitest/spy@3.1.3': + resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} + + '@vitest/utils@3.1.3': + resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} + + '@vscode/codicons@0.0.36': + resolution: {integrity: sha512-wsNOvNMMJ2BY8rC2N2MNBG7yOowV3ov8KlvUE/AiVUlHKTfWsw3OgAOQduX7h0Un6GssKD3aoTVH+TF3DSQwKQ==} + + '@vscode/test-cli@0.0.10': + resolution: {integrity: sha512-B0mMH4ia+MOOtwNiLi79XhA+MLmUItIC8FckEuKrVAVriIuSWjt7vv4+bF8qVFiNFe4QRfzPaIZk39FZGWEwHA==} + engines: {node: '>=18'} + hasBin: true + + '@vscode/test-electron@2.5.2': + resolution: {integrity: sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==} + engines: {node: '>=16'} + + '@vscode/vsce-sign-alpine-arm64@2.0.2': + resolution: {integrity: sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==} + cpu: [arm64] + os: [alpine] + + '@vscode/vsce-sign-alpine-x64@2.0.2': + resolution: {integrity: sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==} + cpu: [x64] + os: [alpine] + + '@vscode/vsce-sign-darwin-arm64@2.0.2': + resolution: {integrity: sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==} + cpu: [arm64] + os: [darwin] + + '@vscode/vsce-sign-darwin-x64@2.0.2': + resolution: {integrity: sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==} + cpu: [x64] + os: [darwin] + + '@vscode/vsce-sign-linux-arm64@2.0.2': + resolution: {integrity: sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==} + cpu: [arm64] + os: [linux] + + '@vscode/vsce-sign-linux-arm@2.0.2': + resolution: {integrity: sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==} + cpu: [arm] + os: [linux] + + '@vscode/vsce-sign-linux-x64@2.0.2': + resolution: {integrity: sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==} + cpu: [x64] + os: [linux] + + '@vscode/vsce-sign-win32-arm64@2.0.2': + resolution: {integrity: sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==} + cpu: [arm64] + os: [win32] + + '@vscode/vsce-sign-win32-x64@2.0.2': + resolution: {integrity: sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==} + cpu: [x64] + os: [win32] + + '@vscode/vsce-sign@2.0.5': + resolution: {integrity: sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==} + + '@vscode/vsce@3.3.2': + resolution: {integrity: sha512-XQ4IhctYalSTMwLnMS8+nUaGbU7v99Qm2sOoGfIEf2QC7jpiLXZZMh7NwArEFsKX4gHTJLx0/GqAUlCdC3gKCw==} + engines: {node: '>= 20'} + hasBin: true + + '@vscode/webview-ui-toolkit@1.4.0': + resolution: {integrity: sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==} + deprecated: This package has been deprecated, https://github.com/microsoft/vscode-webview-ui-toolkit/issues/561 + peerDependencies: + react: '>=16.9.0' + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + '@xobotyi/scrollbar-width@1.9.5': + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + + azure-devops-node-api@12.5.0: + resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + + bare-fs@4.1.5: + resolution: {integrity: sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.6.5: + resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + peerDependencies: + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + bare-events: + optional: true + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + bignumber.js@9.3.0: + resolution: {integrity: sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + + body-parser@2.2.0: + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + engines: {node: '>=18'} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c8@9.1.0: + resolution: {integrity: sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==} + engines: {node: '>=14.14.0'} + hasBin: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.0.3: + resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + chromium-bidi@0.11.0: + resolution: {integrity: sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==} + peerDependencies: + devtools-protocol: '*' + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + cockatiel@3.2.1: + resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} + engines: {node: '>=16'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + content-disposition@1.0.0: + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + copyfiles@2.4.1: + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} + hasBin: true + + core-js@3.42.0: + resolution: {integrity: sha512-Sz4PP4ZA+Rq4II21qkNqOEDTDrCvcANId3xpIgB34NDkWc3UduWj2dqEtN9yZIq8Dk3HyPI33x9sqqU5C8sr0g==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.32.0: + resolution: {integrity: sha512-5JHBC9n75kz5851jeklCPmZWcg3hUe6sjqJvyk3+hVqFaKcHwHgxsjeN1yLmggoUc6STbtm9/NQyabQehfjvWQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.11: + resolution: {integrity: sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + debounce@2.2.0: + resolution: {integrity: sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==} + engines: {node: '>=18'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + default-shell@2.2.0: + resolution: {integrity: sha512-sPpMZcVhRQ0nEMDtuMJ+RtCxt7iHPAMBU+I4tAlo5dU1sjRpNax0crj6nR3qKpvVnckaQ9U38enXcwW9nZJeCw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + + delay@6.0.0: + resolution: {integrity: sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==} + engines: {node: '>=16'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + devtools-protocol@0.0.1367902: + resolution: {integrity: sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==} + + diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + + diff-sequences@27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dingbat-to-unicode@1.0.1: + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + dompurify@3.2.5: + resolution: {integrity: sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + duck@0.1.12: + resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + easy-stack@1.0.1: + resolution: {integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==} + engines: {node: '>=6.0.0'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + eciesjs@0.4.14: + resolution: {integrity: sha512-eJAgf9pdv214Hn98FlUzclRMYWF7WfoLlkS9nWMTm1qcCwn6Ad4EGD9lr9HXMBfSrZhYQujRE+p0adPRkctC6A==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + eight-colors@1.3.1: + resolution: {integrity: sha512-7nXPYDeKh6DgJDR/mpt2G7N/hCNSGwwoPVmoI3+4TEwOb07VFN1WMPG0DFf6nMEjrkgdj8Og7l7IaEEk3VE6Zg==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.152: + resolution: {integrity: sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.0: + resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + engines: {node: '>=0.12'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@10.1.5: + resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-only-warn@1.1.0: + resolution: {integrity: sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==} + engines: {node: '>=6'} + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-turbo@2.5.3: + resolution: {integrity: sha512-DlXZd+LgpDlxH/6IsiAXLhy82x0jeJDm0XBEqP6Le08uy0HBQkjCUt7SmXNp8esAtX9RYe6oDClbNbmI1jtK5g==} + peerDependencies: + eslint: '>6.6.0' + turbo: '>2.0.0' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.27.0: + resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-pubsub@5.0.3: + resolution: {integrity: sha512-2QiHxshejKgJrYMzSI9MEHrvhmzxBL+eLyiM5IiyjDBySkgwS2+tdtnO3gbx8pEisu/yOFCIhfCb63gCEu0yBQ==} + engines: {node: '>=13.0.0'} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + execa@9.5.3: + resolution: {integrity: sha512-QFNnTvU3UjgWFy8Ef9iDHvIdcgZ344ebkwYx4/KLbR+CKQA4xBaHzv+iRpp86QfMHP8faFQLh8iOc57215y4Rg==} + engines: {node: ^18.19.0 || >=20.5.0} + + exenv-es6@1.1.1: + resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + + express@5.1.0: + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + engines: {node: '>= 18'} + + exsolve@1.0.5: + resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fast-xml-parser@4.5.3: + resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + hasBin: true + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-package-json@1.2.0: + resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@2.1.0: + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} + engines: {node: '>= 0.8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + formatly@0.2.3: + resolution: {integrity: sha512-WH01vbXEjh9L3bqn5V620xUAWs32CmK4IzWRRY6ep5zpa/mrisL4d9+pRVuETORVDTQw8OycSO1WC68PL51RaA==} + engines: {node: '>=18.3.0'} + hasBin: true + + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + fzf@0.5.2: + resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} + + gauge@5.0.2: + resolution: {integrity: sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + deprecated: This package is no longer supported. + + gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + + gcp-metadata@6.1.1: + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} + engines: {node: '>=14'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-folder-size@5.0.0: + resolution: {integrity: sha512-+fgtvbL83tSDypEK+T411GDBQVQtxv+qtQgbV+HVa/TYubqDhNd5ghH/D6cOHY9iC5/88GtOZB7WI8PXy2A3bg==} + engines: {node: '>=18.11.0'} + hasBin: true + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + get-uri@6.0.4: + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} + engines: {node: '>= 14'} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.2: + resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globals@16.1.0: + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + google-auth-library@9.15.1: + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} + engines: {node: '>=14'} + + google-logging-utils@0.0.2: + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + engines: {node: '>=14'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + + harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-to-hyperscript@9.0.1: + resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + howler@2.2.4: + resolution: {integrity: sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-id@4.1.1: + resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} + hasBin: true + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + + i18next-http-backend@3.0.2: + resolution: {integrity: sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g==} + + i18next@24.2.3: + resolution: {integrity: sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==} + peerDependencies: + typescript: ^5 + peerDependenciesMeta: + typescript: + optional: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + inline-style-prefixer@7.0.1: + resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.1.0: + resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} + engines: {node: 20 || >=22} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-simple-dot-reporter@1.0.5: + resolution: {integrity: sha512-cZLFG/C7k0+WYoIGGuGXKm0vmJiXlWG/m3uCZ4RaMPYxt8lxjdXMLHYkxXaQ7gVWaSPe7uAPCEUcRxthC5xskg==} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + js-message@1.0.7: + resolution: {integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==} + engines: {node: '>=0.6.0'} + + js-queue@2.0.2: + resolution: {integrity: sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==} + engines: {node: '>=1.0.0'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + jwa@1.4.2: + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + + katex@0.16.22: + resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} + hasBin: true + + keytar@7.9.0: + resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + knip@5.55.1: + resolution: {integrity: sha512-NYXjgGrXgMdabUKCP2TlBH/e83m9KnLc1VLyWHUtoRrCEJ/C15YtbafrpTvm3td+jE4VdDPgudvXT1IMtCx8lw==} + engines: {node: '>=18.18.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4' + + knuth-shuffle-seeded@1.0.6: + resolution: {integrity: sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + langium@3.3.1: + resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} + engines: {node: '>=16.0.0'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + lint-staged@15.5.2: + resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} + engines: {node: '>=18.0.0'} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + local-pkg@1.1.1: + resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lop@0.4.2: + resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lowlight@3.3.0: + resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lucide-react@0.510.0: + resolution: {integrity: sha512-p8SQRAMVh7NhsAIETokSqDrc5CHnDLbV29mMnzaXx+Vc/hnqQzwI2r0FMWCcoTXnbw2KEjy48xwpGdEL+ck06Q==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + macos-release@3.3.0: + resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + mammoth@1.9.0: + resolution: {integrity: sha512-F+0NxzankQV9XSUAuVKvkdQK0GbtGGuqVnND9aVf9VSeUA82LQa29GjLqYU6Eez8LHqSJG3eGiDW3224OKdpZg==} + engines: {node: '>=12.0.0'} + hasBin: true + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + marked@15.0.11: + resolution: {integrity: sha512-1BEXAU2euRCG3xwgLVT1y0xbJEld1XOrmRJpUwRCcy7rxhSCwMrmEu9LXoPhHSCJG41V7YcQ2mjKRr5BA3ITIA==} + engines: {node: '>= 18'} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-definitions@4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@10.2.0: + resolution: {integrity: sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + mermaid@11.6.0: + resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime-types@3.0.1: + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + + mocha@10.8.2: + resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} + engines: {node: '>= 14.0.0'} + hasBin: true + + mocha@11.2.2: + resolution: {integrity: sha512-VlSBxrPYHK4YNOEbFdkCxHQbZMoNzBkoPprqtZRW6311EUF/DlSxoycE2e/2NtRk4WKkIXzyrXDTrlikJMWgbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + + monaco-vscode-textmate-theme-converter@0.1.7: + resolution: {integrity: sha512-ZMsq1RPWwOD3pvXD0n+9ddnhfzZoiUMwNIWPNUqYqEiQeH2HjyZ9KYOdt/pqe0kkN8WnYWLrxT9C/SrtIsAu2Q==} + hasBin: true + peerDependencies: + tslib: ^2.0.1 + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nano-css@5.6.2: + resolution: {integrity: sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw==} + peerDependencies: + react: '*' + react-dom: '*' + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + nock@14.0.4: + resolution: {integrity: sha512-86fh+gIKH8H02+y0/HKAOZZXn6OwgzXvl6JYwfjvKkoKxUWz54wIIDU/+w24xzMvk/R8pNVXOrvTubyl+Ml6cg==} + engines: {node: '>=18.20.0 <20 || >=20.12.1'} + + node-abi@3.75.0: + resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} + engines: {node: '>=10'} + + node-addon-api@4.3.0: + resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + + node-cache@5.1.2: + resolution: {integrity: sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==} + engines: {node: '>= 8.0.0'} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-ensure@0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-ipc@12.0.0: + resolution: {integrity: sha512-QHJ2gAJiqA3cM7cQiRjLsfCOBRB0TwQ6axYD4FSllQWipEbP6i7Se1dP8EzPKk5J1nCe27W69eqPmCoKyQ61Vg==} + engines: {node: '>=14'} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + noms@0.0.0: + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-run-all2@8.0.1: + resolution: {integrity: sha512-jkhE0AsELQeCtScrcJ/7mSIdk+ZsnWjvKk3KwE96HZ6+OFVB74XhxQtHT1W6kdUfn92fRnBb29Mz82j9bV2XEQ==} + engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@0.0.4: + resolution: {integrity: sha512-qAMrwuk2xLEutlASoiPiAMW3EN3K96Ka/ilSXYr6qR1zSVXw2j7+yDSqGTC4T9apfLYxM3tLLjKvgPdAUK7kYQ==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.3: + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} + + only-allow@1.2.1: + resolution: {integrity: sha512-M7CJbmv7UCopc0neRKdzfoGWaVZC+xC1925GitKH9EAqYFzX9//25Q7oX4+jw0tiCCj+t5l6VZh8UPH23NZkMA==} + hasBin: true + + open@10.1.2: + resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openai@4.98.0: + resolution: {integrity: sha512-TmDKur1WjxxMPQAtLG5sgBSCJmX7ynTsGmewKzoDwl1fRxtbLOsiR0FA/AOAAtYUmP6azal+MYQuOENfdU+7yg==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.23.8 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + + option@0.2.4: + resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + + os-name@6.0.0: + resolution: {integrity: sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==} + engines: {node: '>=18'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + + ovsx@0.10.2: + resolution: {integrity: sha512-osLwIOz5Uu1ePvYYSjKw05bkCZo2j/ydQLjm3uO7bCfstyFFzmWyzMGTAL3wJpI4qpo1S47Y52+q09h9A2ZRkQ==} + engines: {node: '>= 20'} + hasBin: true + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + p-wait-for@5.0.2: + resolution: {integrity: sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==} + engines: {node: '>=12'} + + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + + package-manager-detector@1.3.0: + resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parse-semver@1.1.1: + resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-to-regexp@8.2.0: + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} + engines: {node: '>=16'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + pdf-parse@1.1.1: + resolution: {integrity: sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A==} + engines: {node: '>=6.8.1'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkce-challenge@4.1.0: + resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} + engines: {node: '>=16.20.0'} + + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.1.0: + resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + posthog-js@1.242.1: + resolution: {integrity: sha512-j2mzw0eukyuw/Qm3tNZ6pfaXmc7eglWj6ftmvR1Lz9GtMr85ndGNXJvIGO+6PBrQW2o0D1G0k/KV93ehta0hFA==} + peerDependencies: + '@rrweb/types': 2.0.0-alpha.17 + rrweb-snapshot: 2.0.0-alpha.17 + peerDependenciesMeta: + '@rrweb/types': + optional: true + rrweb-snapshot: + optional: true + + posthog-node@4.17.1: + resolution: {integrity: sha512-cVlQPOwOPjakUnrueKRCQe1m2Ku+XzKaOos7Tn/zDZkkZFeBT/byP7tbNf7LiwhaBRWFBRowZZb/MsTtSRaorg==} + engines: {node: '>=15.0.0'} + + preact@10.26.6: + resolution: {integrity: sha512-5SRRBinwpwkaD+OqlBDeITlRgvd8I8QlxHJw9AxSdMNV6O+LodN9nUyYGpSF7sadHjs6RzeFShMexC6DbtWr9g==} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + propagate@2.0.1: + resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} + engines: {node: '>= 8'} + + property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + puppeteer-chromium-resolver@23.0.0: + resolution: {integrity: sha512-PbSXK4ERPwp+eYm+SVY5vMWCxsdeJcddwz4avXvDx7kE9DLE+L86Xg027sypw2oan5yi6557brzVsbajcMmy2g==} + + puppeteer-core@23.11.1: + resolution: {integrity: sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==} + engines: {node: '>=18'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + quansync@0.2.10: + resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-docgen-typescript@2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.1.1: + resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} + engines: {node: '>=16.14.0'} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-i18next@15.5.1: + resolution: {integrity: sha512-C8RZ7N7H0L+flitiX6ASjq9p5puVJU1Z8VyL3OgM/QOMRf40BMZX+5TkpxzZVcTmOLPX5zlti4InEX5pFyiVeA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + typescript: ^5 + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + typescript: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-markdown@9.1.0: + resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-remark@2.1.0: + resolution: {integrity: sha512-7dEPxRGQ23sOdvteuRGaQAs9cEOH/BOeCN4CqsJdk3laUDIDYRCWnM6a3z92PzXHUuxIRLXQNZx7SiO0ijUcbw==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16.8' + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-textarea-autosize@8.5.9: + resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} + engines: {node: '>=10'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-universal-interface@0.6.2: + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + + react-use@17.6.0: + resolution: {integrity: sha512-OmedEScUMKFfzn1Ir8dBxiLLSOzhKe/dPZwVxcujweSj45aNM7BEGPb9BEVIgVEqEXx6f3/TsXzwIktNgUR02g==} + peerDependencies: + react: '*' + react-dom: '*' + + react-virtuoso@4.12.7: + resolution: {integrity: sha512-njJp764he6Fi1p89PUW0k2kbyWu9w/y+MwdxmwK2kvdwwzVDbz2c2wMj5xdSruBFVgFTsI7Z85hxZR7aSHBrbQ==} + peerDependencies: + react: '>=16 || >=17 || >= 18 || >= 19' + react-dom: '>=16 || >=17 || >= 18 || >=19' + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-package-json-fast@4.0.0: + resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} + engines: {node: ^18.17.0 || >=20.5.0} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + + reconnecting-eventsource@1.6.4: + resolution: {integrity: sha512-0L3IS3wxcNFApTPPHkcbY8Aya7XZIpYDzhxa8j6QSufVkUN018XJKfh2ZaThLBGP/iN5UTz2yweMhkqr0PKa7A==} + engines: {node: '>=12.0.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + rehype-highlight@7.0.2: + resolution: {integrity: sha512-k158pK7wdC2qL3M5NcZROZ2tR/l7zOzjxXd5VGdcfIyoijjQqpHd3JKtYSBDpDZ38UI2WJWuFAtkMDxmx5kstA==} + + rehype-react@6.2.1: + resolution: {integrity: sha512-f9KIrjktvLvmbGc7si25HepocOg4z0MuNOtweigKzBcDjiGSTGhyz6VSgaV5K421Cq1O+z4/oxRJ5G9owo0KVg==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-parse@9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-rehype@8.1.0: + resolution: {integrity: sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remove-markdown@0.6.2: + resolution: {integrity: sha512-EijDXJZbzpGbQBd852ViUzcqgpMujthM+SAEHiWCMcZonRbZ+xViWKLJA/vrwbDwYdxrs1aFDjpBhcGrZoJRGA==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} + + rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + say@0.16.0: + resolution: {integrity: sha512-yEfncNu3I6lcZ6RIrXgE9DqbrEmvV5uQQ8ReM14u/DodlvJYpveqNphO55RLMSj77b06ZKNif/FLmhzQxcuUXg==} + engines: {node: '>=6.9'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + + seed-random@2.2.0: + resolution: {integrity: sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@1.2.0: + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} + engines: {node: '>= 18'} + + serialize-error@11.0.3: + resolution: {integrity: sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==} + engines: {node: '>=14.16'} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-static@2.2.0: + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} + engines: {node: '>= 18'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + shiki@3.4.1: + resolution: {integrity: sha512-PSnoczt+iWIOB4iRQ+XVPFtTuN1FcmuYzPgUBZTSv5pC6CozssIx2M4O5n4S9gJlUu9A3FxMU0ZPaHflky/6LA==} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-git@3.27.0: + resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + smol-toml@1.3.4: + resolution: {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==} + engines: {node: '>= 18'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.4: + resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sound-play@1.1.0: + resolution: {integrity: sha512-Bd/L0AoCwITFeOnpNLMsfPXrV5GG5NhrC/T6odveahYbhPZkdTnrFXRia9FCC5WBWdUTw1d+yvLBvi4wnD1xOA==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + + stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + storybook-dark-mode@4.0.2: + resolution: {integrity: sha512-zjcwwQ01R5t1VsakA6alc2JDIRVtavryW8J3E3eKLDIlAMcvsgtpxlelWkZs2cuNspk6Z10XzhQVrUWtYc3F0w==} + + storybook@8.6.12: + resolution: {integrity: sha512-Z/nWYEHBTLK1ZBtAWdhxC0l5zf7ioJ7G4+zYqtTdYeb67gTnxNj80gehf8o8QY9L2zA2+eyMRGLC2V5fI7Z3Tw==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + + streamx@2.22.0: + resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} + + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-similarity@4.0.4: + resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-bom@5.0.0: + resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-json-comments@5.0.1: + resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + engines: {node: '>=14.16'} + + strnum@1.1.2: + resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + + strong-type@0.1.6: + resolution: {integrity: sha512-eJe5caH6Pi5oMMeQtIoBPpvNu/s4jiyb63u5tkHNnQXomK+puyQ5i+Z5iTLBr/xUz/pIcps0NSfzzFI34+gAXg==} + engines: {node: '>=12.0.0'} + + strong-type@1.1.0: + resolution: {integrity: sha512-X5Z6riticuH5GnhUyzijfDi1SoXas8ODDyN7K8lJeQK+Jfi4dKdoJGL4CXTskY/ATBcN+rz5lROGn1tAUkOX7g==} + engines: {node: '>=12.21.0'} + + style-to-js@1.1.16: + resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} + + style-to-object@0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + + style-to-object@1.0.8: + resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + + styled-components@6.1.18: + resolution: {integrity: sha512-Mvf3gJFzZCkhjY2Y/Fx9z1m3dxbza0uI9H1CbNZm/jSHCojzJhQ0R7bByrlFJINnMzz/gPulpoFFGymNwrsMcw==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + + stylis@4.3.2: + resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} + + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tabbable@5.3.3: + resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} + + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@4.1.6: + resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + + tar-fs@3.0.8: + resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiktoken@1.0.21: + resolution: {integrity: sha512-/kqtlepLMptX0OgbYD9aMYbM7EFrMZCL7EoHM8Psmg2FuhXoo/bH64KqOiZGGwa6oS9TPdSEDKBnV2LuB8+5vQ==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tree-sitter-wasms@0.1.12: + resolution: {integrity: sha512-N9Jp+dkB23Ul5Gw0utm+3pvG4km4Fxsi2jmtMFg7ivzwqWPlSyrYQIrOmcX+79taVfcHEA+NzP0hl7vXL8DNUQ==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@29.3.3: + resolution: {integrity: sha512-y6jLm19SL4GroiBmHwFK4dSHUfDNmOrJbRfp6QmDIlI9p5tT5Q8ItccB4pTIslCIqOZuQnBwpTR0bQ5eUMYwkw==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsup@8.4.0: + resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + turbo-darwin-64@2.5.3: + resolution: {integrity: sha512-YSItEVBUIvAGPUDpAB9etEmSqZI3T6BHrkBkeSErvICXn3dfqXUfeLx35LfptLDEbrzFUdwYFNmt8QXOwe9yaw==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.5.3: + resolution: {integrity: sha512-5PefrwHd42UiZX7YA9m1LPW6x9YJBDErXmsegCkVp+GjmWrADfEOxpFrGQNonH3ZMj77WZB2PVE5Aw3gA+IOhg==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.5.3: + resolution: {integrity: sha512-M9xigFgawn5ofTmRzvjjLj3Lqc05O8VHKuOlWNUlnHPUltFquyEeSkpQNkE/vpPdOR14AzxqHbhhxtfS4qvb1w==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.5.3: + resolution: {integrity: sha512-auJRbYZ8SGJVqvzTikpg1bsRAsiI9Tk0/SDkA5Xgg0GdiHDH/BOzv1ZjDE2mjmlrO/obr19Dw+39OlMhwLffrw==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.5.3: + resolution: {integrity: sha512-arLQYohuHtIEKkmQSCU9vtrKUg+/1TTstWB9VYRSsz+khvg81eX6LYHtXJfH/dK7Ho6ck+JaEh5G+QrE1jEmCQ==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.5.3: + resolution: {integrity: sha512-3JPn66HAynJ0gtr6H+hjY4VHpu1RPKcEwGATvGUTmLmYSYBQieVlnGDRMMoYN066YfyPqnNGCfhYbXfH92Cm0g==} + cpu: [arm64] + os: [win32] + + turbo@2.5.3: + resolution: {integrity: sha512-iHuaNcq5GZZnr3XDZNuu2LSyCzAOPwDuo5Qt+q64DfsTP1i3T2bKfxJhni2ZQxsvAoxRbuUK5QetJki4qc5aYA==} + hasBin: true + + turndown@7.2.0: + resolution: {integrity: sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typed-query-selector@2.12.0: + resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} + + typed-rest-client@1.8.11: + resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} + + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici@6.21.3: + resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} + engines: {node: '>=18.17'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unified@9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + + unist-builder@2.0.3: + resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-generated@1.1.6: + resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} + + unist-util-is@3.0.0: + resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} + + unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@3.1.0: + resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@2.1.2: + resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} + + unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@1.4.1: + resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + + unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-composed-ref@1.4.0: + resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-isomorphic-layout-effect@1.2.0: + resolution: {integrity: sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-latest@1.3.0: + resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sound@5.0.0: + resolution: {integrity: sha512-MNHT3FFC5HxNCrgZtrnpIMJI2cw/0D2xismcrtyht8BTuF5FhFhb57xO/jlQr2xJaFrc/0btzRQvGyHQwB7PVA==} + peerDependencies: + react: '>=16.8' + + utf8-byte-length@1.0.5: + resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite-node@3.1.3: + resolution: {integrity: sha512-uHV4plJ2IxCl4u1up1FQRrqclylKAogbtBfOTwcuJ28xFi+89PZ57BRh+naIRvH70HPwxy5QHYzg1OrEaC7AbA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.1.3: + resolution: {integrity: sha512-188iM4hAHQ0km23TN/adso1q5hhwKqUpv+Sd6p5sOuh6FhQnRNW3IsiIpvxqahtBabsJ2SLZgmGSpcYK4wQYJw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.3 + '@vitest/ui': 3.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-material-icons@0.1.1: + resolution: {integrity: sha512-GsoEEF8Tbb0yUFQ6N6FPvh11kFkL9F95x0FkKlbbfRQN9eFms67h+L3t6b9cUv58dSn2gu8kEhNfoESVCrz4ag==} + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + vscrui@0.2.2: + resolution: {integrity: sha512-buw2OipqUl7GCBq1mxcAjUwoUsslGzVhdaxDPmEx27xzc3QAJJZHtT30QbakgZVJ1Jb3E6kcsguUIFEGxrgkyQ==} + peerDependencies: + '@types/react': '*' + react: ^17 || ^18 || ^19 + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + web-namespaces@1.1.4: + resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} + + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + + web-tree-sitter@0.22.6: + resolution: {integrity: sha512-hS87TH71Zd6mGAmYCvlgxeGDjqd9GTeqXNqTT+u0Gs51uIozNIaaq/kUAbV/Zf56jb2ZOyG8BxZs2GG9wbLi6Q==} + + web-vitals@4.2.4: + resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + windows-release@6.0.1: + resolution: {integrity: sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==} + engines: {node: '>=18'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + + workerpool@9.2.0: + resolution: {integrity: sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@10.1.1: + resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} + engines: {node: '>=4.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yauzl@3.2.0: + resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} + engines: {node: '>=12'} + + yazl@2.5.1: + resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + + zod-validation-error@3.4.1: + resolution: {integrity: sha512-1KP64yqDPQ3rupxNv7oXhf7KdhHHgaqbKuspVoiN93TT0xrBjql+Svjkdjq/Qh/7GSMmgQs3AfvBT0heE35thw==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.24.4 + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adobe/css-tools@4.4.2': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.3.0 + tinyexec: 1.0.1 + + '@antfu/utils@8.1.1': {} + + '@anthropic-ai/bedrock-sdk@0.10.4': + dependencies: + '@anthropic-ai/sdk': 0.37.0 + '@aws-crypto/sha256-js': 4.0.0 + '@aws-sdk/client-bedrock-runtime': 3.808.0 + '@aws-sdk/credential-providers': 3.808.0 + '@smithy/eventstream-serde-node': 2.2.0 + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/signature-v4': 3.1.2 + '@smithy/smithy-client': 2.5.1 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + transitivePeerDependencies: + - aws-crt + - encoding + + '@anthropic-ai/sdk@0.37.0': + dependencies: + '@types/node': 18.19.100 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.6.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@anthropic-ai/vertex-sdk@0.7.0': + dependencies: + '@anthropic-ai/sdk': 0.37.0 + google-auth-library: 9.15.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@aws-crypto/crc32@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.804.0 + tslib: 1.14.1 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.804.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-locate-window': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@4.0.0': + dependencies: + '@aws-crypto/util': 4.0.0 + '@aws-sdk/types': 3.804.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.804.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@3.0.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/util@4.0.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-bedrock-runtime@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/credential-provider-node': 3.808.0 + '@aws-sdk/eventstream-handler-node': 3.804.0 + '@aws-sdk/middleware-eventstream': 3.804.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.3 + '@smithy/eventstream-serde-browser': 4.0.2 + '@smithy/eventstream-serde-config-resolver': 4.1.0 + '@smithy/eventstream-serde-node': 4.0.2 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.6 + '@smithy/middleware-retry': 4.1.7 + '@smithy/middleware-serde': 4.0.5 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.14 + '@smithy/util-defaults-mode-node': 4.0.14 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-cognito-identity@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/credential-provider-node': 3.808.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.3 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.6 + '@smithy/middleware-retry': 4.1.7 + '@smithy/middleware-serde': 4.0.5 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.14 + '@smithy/util-defaults-mode-node': 4.0.14 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.3 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.6 + '@smithy/middleware-retry': 4.1.7 + '@smithy/middleware-serde': 4.0.5 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.14 + '@smithy/util-defaults-mode-node': 4.0.14 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.808.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/core': 3.3.3 + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/signature-v4': 5.1.0 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + fast-xml-parser: 4.4.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-cognito-identity@3.808.0': + dependencies: + '@aws-sdk/client-cognito-identity': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-env@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/util-stream': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/credential-provider-env': 3.808.0 + '@aws-sdk/credential-provider-http': 3.808.0 + '@aws-sdk/credential-provider-process': 3.808.0 + '@aws-sdk/credential-provider-sso': 3.808.0 + '@aws-sdk/credential-provider-web-identity': 3.808.0 + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.808.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.808.0 + '@aws-sdk/credential-provider-http': 3.808.0 + '@aws-sdk/credential-provider-ini': 3.808.0 + '@aws-sdk/credential-provider-process': 3.808.0 + '@aws-sdk/credential-provider-sso': 3.808.0 + '@aws-sdk/credential-provider-web-identity': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.808.0': + dependencies: + '@aws-sdk/client-sso': 3.808.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/token-providers': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-providers@3.808.0': + dependencies: + '@aws-sdk/client-cognito-identity': 3.808.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/credential-provider-cognito-identity': 3.808.0 + '@aws-sdk/credential-provider-env': 3.808.0 + '@aws-sdk/credential-provider-http': 3.808.0 + '@aws-sdk/credential-provider-ini': 3.808.0 + '@aws-sdk/credential-provider-node': 3.808.0 + '@aws-sdk/credential-provider-process': 3.808.0 + '@aws-sdk/credential-provider-sso': 3.808.0 + '@aws-sdk/credential-provider-web-identity': 3.808.0 + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.3 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/eventstream-handler-node@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/eventstream-codec': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-eventstream@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.808.0': + dependencies: + '@aws-sdk/core': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@smithy/core': 3.3.3 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.808.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.808.0 + '@aws-sdk/middleware-host-header': 3.804.0 + '@aws-sdk/middleware-logger': 3.804.0 + '@aws-sdk/middleware-recursion-detection': 3.804.0 + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/region-config-resolver': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@aws-sdk/util-endpoints': 3.808.0 + '@aws-sdk/util-user-agent-browser': 3.804.0 + '@aws-sdk/util-user-agent-node': 3.808.0 + '@smithy/config-resolver': 4.1.2 + '@smithy/core': 3.3.3 + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/hash-node': 4.0.2 + '@smithy/invalid-dependency': 4.0.2 + '@smithy/middleware-content-length': 4.0.2 + '@smithy/middleware-endpoint': 4.1.6 + '@smithy/middleware-retry': 4.1.7 + '@smithy/middleware-serde': 4.0.5 + '@smithy/middleware-stack': 4.0.2 + '@smithy/node-config-provider': 4.1.1 + '@smithy/node-http-handler': 4.0.4 + '@smithy/protocol-http': 5.1.0 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.14 + '@smithy/util-defaults-mode-node': 4.0.14 + '@smithy/util-endpoints': 3.0.4 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.808.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.808.0': + dependencies: + '@aws-sdk/nested-clients': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.804.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.808.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/types': 4.2.0 + '@smithy/util-endpoints': 3.0.4 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.804.0': + dependencies: + '@aws-sdk/types': 3.804.0 + '@smithy/types': 4.2.0 + bowser: 2.11.0 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.808.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.808.0 + '@aws-sdk/types': 3.804.0 + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.8.1 + + '@azure/abort-controller@2.1.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-auth@1.9.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-client@1.9.4': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.9.0 + '@azure/core-rest-pipeline': 1.20.0 + '@azure/core-tracing': 1.2.0 + '@azure/core-util': 1.12.0 + '@azure/logger': 1.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-rest-pipeline@1.20.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.9.0 + '@azure/core-tracing': 1.2.0 + '@azure/core-util': 1.12.0 + '@azure/logger': 1.2.0 + '@typespec/ts-http-runtime': 0.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-tracing@1.2.0': + dependencies: + tslib: 2.8.1 + + '@azure/core-util@1.12.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@typespec/ts-http-runtime': 0.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/identity@4.9.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.9.0 + '@azure/core-client': 1.9.4 + '@azure/core-rest-pipeline': 1.20.0 + '@azure/core-tracing': 1.2.0 + '@azure/core-util': 1.12.0 + '@azure/logger': 1.2.0 + '@azure/msal-browser': 4.12.0 + '@azure/msal-node': 3.5.3 + open: 10.1.2 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/logger@1.2.0': + dependencies: + '@typespec/ts-http-runtime': 0.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/msal-browser@4.12.0': + dependencies: + '@azure/msal-common': 15.6.0 + + '@azure/msal-common@15.6.0': {} + + '@azure/msal-node@3.5.3': + dependencies: + '@azure/msal-common': 15.6.0 + jsonwebtoken: 9.0.2 + uuid: 8.3.2 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.2': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.1(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/runtime@7.27.1': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.1(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@braintree/sanitize-url@7.1.1': {} + + '@changesets/apply-release-plan@7.0.12': + dependencies: + '@changesets/config': 3.1.1 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.7.2 + + '@changesets/assemble-release-plan@6.0.8': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.2 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.29.4': + dependencies: + '@changesets/apply-release-plan': 7.0.12 + '@changesets/assemble-release-plan': 6.0.8 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.12 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + mri: 1.2.0 + p-limit: 2.3.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.7.2 + spawndamnit: 3.0.1 + term-size: 2.2.1 + + '@changesets/config@3.1.1': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.3': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.7.2 + + '@changesets/get-release-plan@4.0.12': + dependencies: + '@changesets/assemble-release-plan': 6.0.8 + '@changesets/config': 3.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.5 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.1': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 3.14.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.5': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.1 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.1.1 + prettier: 2.8.8 + + '@chevrotain/cst-dts-gen@11.0.3': + dependencies: + '@chevrotain/gast': 11.0.3 + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/gast@11.0.3': + dependencies: + '@chevrotain/types': 11.0.3 + lodash-es: 4.17.21 + + '@chevrotain/regexp-to-ast@11.0.3': {} + + '@chevrotain/types@11.0.3': {} + + '@chevrotain/utils@11.0.3': {} + + '@dotenvx/dotenvx@1.44.0': + dependencies: + commander: 11.1.0 + dotenv: 16.5.0 + eciesjs: 0.4.14 + execa: 5.1.1 + fdir: 6.4.4(picomatch@4.0.2) + ignore: 5.3.2 + object-treeify: 1.1.33 + picomatch: 4.0.2 + which: 4.0.0 + + '@ecies/ciphers@0.2.3(@noble/ciphers@1.3.0)': + dependencies: + '@noble/ciphers': 1.3.0 + + '@emotion/is-prop-valid@1.2.2': + dependencies: + '@emotion/memoize': 0.8.1 + + '@emotion/memoize@0.8.1': {} + + '@emotion/unitless@0.8.1': {} + + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1(supports-color@8.1.1) + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.27.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.1': + dependencies: + '@eslint/core': 0.14.0 + levn: 0.4.1 + + '@floating-ui/core@1.7.0': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.7.0': + dependencies: + '@floating-ui/core': 1.7.0 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.7.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/utils@0.2.9': {} + + '@google/genai@0.13.0': + dependencies: + google-auth-library: 9.15.1 + ws: 8.18.2 + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.3.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@antfu/utils': 8.1.1 + '@iconify/types': 2.0.0 + debug: 4.4.1(supports-color@8.1.1) + globals: 15.15.0 + kolorist: 1.8.0 + local-pkg: 1.1.1 + mlly: 1.7.4 + transitivePeerDependencies: + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.15.20)(babel-plugin-macros@3.1.0) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.15.20 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.15.20 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.27.1 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.20 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + glob: 10.4.5 + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@5.8.3) + vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + optionalDependencies: + typescript: 5.8.3 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.27.1 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.27.1 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@mapbox/hast-util-table-cell-style@0.2.1': + dependencies: + unist-util-visit: 1.4.1 + + '@mdx-js/react@3.1.0(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.3.21 + react: 18.3.1 + + '@mermaid-js/parser@0.4.0': + dependencies: + langium: 3.3.1 + + '@microsoft/fast-element@1.14.0': {} + + '@microsoft/fast-foundation@2.50.0': + dependencies: + '@microsoft/fast-element': 1.14.0 + '@microsoft/fast-web-utilities': 5.4.1 + tabbable: 5.3.3 + tslib: 1.14.1 + + '@microsoft/fast-react-wrapper@0.3.25(react@18.3.1)': + dependencies: + '@microsoft/fast-element': 1.14.0 + '@microsoft/fast-foundation': 2.50.0 + react: 18.3.1 + + '@microsoft/fast-web-utilities@5.4.1': + dependencies: + exenv-es6: 1.1.1 + + '@mistralai/mistralai@1.6.0(zod@3.24.4)': + dependencies: + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + + '@mixmark-io/domino@2.2.0': {} + + '@modelcontextprotocol/sdk@1.11.2': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + transitivePeerDependencies: + - supports-color + + '@mswjs/interceptors@0.38.6': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + + '@next/eslint-plugin-next@15.3.2': + dependencies: + fast-glob: 3.3.1 + + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@puppeteer/browsers@2.10.4': + dependencies: + debug: 4.4.1(supports-color@8.1.1) + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.0.8 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-buffer + - supports-color + + '@puppeteer/browsers@2.6.1': + dependencies: + debug: 4.4.1(supports-color@8.1.1) + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.5.0 + semver: 7.7.2 + tar-fs: 3.0.8 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - bare-buffer + - supports-color + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-alert-dialog@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-arrow@1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-checkbox@1.3.1(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-collapsible@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-collection@1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-context@1.1.2(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-dialog@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.21)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-direction@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-dismissable-layer@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-dropdown-menu@2.1.14(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-menu': 2.1.14(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-focus-guards@1.1.2(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-focus-scope@1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-id@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-menu@2.1.14(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.21)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-popover@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.21)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-popper@1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-portal@1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-presence@1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-primitive@2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-progress@1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-roving-focus@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-select@2.2.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.21)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-separator@1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-slider@1.3.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-slot@1.2.2(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-tooltip@1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-popper': 1.2.6(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-use-size@1.1.1(@types/react@18.3.21)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.21)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + '@radix-ui/react-visually-hidden@1.2.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@radix-ui/rect@1.1.1': {} + + '@rollup/pluginutils@5.1.4(rollup@4.40.2)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.40.2 + + '@rollup/rollup-android-arm-eabi@4.40.2': + optional: true + + '@rollup/rollup-android-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.2': + optional: true + + '@rollup/rollup-darwin-x64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + + '@roo-code/types@1.12.0': + dependencies: + zod: 3.24.4 + + '@sec-ant/readable-stream@0.4.1': {} + + '@shikijs/core@3.4.1': + dependencies: + '@shikijs/types': 3.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.4.1': + dependencies: + '@shikijs/types': 3.4.1 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.3 + + '@shikijs/engine-oniguruma@3.4.1': + dependencies: + '@shikijs/types': 3.4.1 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.4.1': + dependencies: + '@shikijs/types': 3.4.1 + + '@shikijs/themes@3.4.1': + dependencies: + '@shikijs/types': 3.4.1 + + '@shikijs/types@3.4.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@smithy/abort-controller@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/abort-controller@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/config-resolver@4.1.2': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@smithy/core@3.3.3': + dependencies: + '@smithy/middleware-serde': 4.0.5 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-stream': 4.2.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.0.4': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + tslib: 2.8.1 + + '@smithy/eventstream-codec@2.2.0': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.12.0 + '@smithy/util-hex-encoding': 2.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.0.2': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.2.0 + '@smithy/util-hex-encoding': 4.0.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.0.2': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.1.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@2.2.0': + dependencies: + '@smithy/eventstream-serde-universal': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.0.2': + dependencies: + '@smithy/eventstream-serde-universal': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@2.2.0': + dependencies: + '@smithy/eventstream-codec': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.0.2': + dependencies: + '@smithy/eventstream-codec': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@2.5.0': + dependencies: + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.0.2': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/querystring-builder': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/util-base64': 4.0.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.0.2': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@2.5.1': + dependencies: + '@smithy/middleware-serde': 2.3.0 + '@smithy/node-config-provider': 2.3.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + '@smithy/url-parser': 2.2.0 + '@smithy/util-middleware': 2.2.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.1.6': + dependencies: + '@smithy/core': 3.3.3 + '@smithy/middleware-serde': 4.0.5 + '@smithy/node-config-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + '@smithy/url-parser': 4.0.2 + '@smithy/util-middleware': 4.0.2 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.1.7': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/protocol-http': 5.1.0 + '@smithy/service-error-classification': 4.0.3 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-retry': 4.0.3 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-serde@2.3.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.0.5': + dependencies: + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@2.3.0': + dependencies: + '@smithy/property-provider': 2.2.0 + '@smithy/shared-ini-file-loader': 2.4.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.1.1': + dependencies: + '@smithy/property-provider': 4.0.2 + '@smithy/shared-ini-file-loader': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@2.5.0': + dependencies: + '@smithy/abort-controller': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/querystring-builder': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.0.4': + dependencies: + '@smithy/abort-controller': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/querystring-builder': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/property-provider@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/protocol-http@3.3.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.1.0': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + '@smithy/util-uri-escape': 2.2.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.0.3': + dependencies: + '@smithy/types': 4.2.0 + + '@smithy/shared-ini-file-loader@2.4.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/shared-ini-file-loader@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/signature-v4@3.1.2': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/types': 3.7.2 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.1.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.2 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/smithy-client@2.5.1': + dependencies: + '@smithy/middleware-endpoint': 2.5.1 + '@smithy/middleware-stack': 2.2.0 + '@smithy/protocol-http': 3.3.0 + '@smithy/types': 2.12.0 + '@smithy/util-stream': 2.2.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.2.6': + dependencies: + '@smithy/core': 3.3.3 + '@smithy/middleware-endpoint': 4.1.6 + '@smithy/middleware-stack': 4.0.2 + '@smithy/protocol-http': 5.1.0 + '@smithy/types': 4.2.0 + '@smithy/util-stream': 4.2.0 + tslib: 2.8.1 + + '@smithy/types@2.12.0': + dependencies: + tslib: 2.8.1 + + '@smithy/types@3.7.2': + dependencies: + tslib: 2.8.1 + + '@smithy/types@4.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@2.2.0': + dependencies: + '@smithy/querystring-parser': 2.2.0 + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/url-parser@4.0.2': + dependencies: + '@smithy/querystring-parser': 4.0.2 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-base64@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.0.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.0.14': + dependencies: + '@smithy/property-provider': 4.0.2 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + bowser: 2.11.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.0.14': + dependencies: + '@smithy/config-resolver': 4.1.2 + '@smithy/credential-provider-imds': 4.0.4 + '@smithy/node-config-provider': 4.1.1 + '@smithy/property-provider': 4.0.2 + '@smithy/smithy-client': 4.2.6 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.0.4': + dependencies: + '@smithy/node-config-provider': 4.1.1 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@2.2.0': + dependencies: + '@smithy/types': 2.12.0 + tslib: 2.8.1 + + '@smithy/util-middleware@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.8.1 + + '@smithy/util-middleware@4.0.2': + dependencies: + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.0.3': + dependencies: + '@smithy/service-error-classification': 4.0.3 + '@smithy/types': 4.2.0 + tslib: 2.8.1 + + '@smithy/util-stream@2.2.0': + dependencies: + '@smithy/fetch-http-handler': 2.5.0 + '@smithy/node-http-handler': 2.5.0 + '@smithy/types': 2.12.0 + '@smithy/util-base64': 2.3.0 + '@smithy/util-buffer-from': 2.2.0 + '@smithy/util-hex-encoding': 2.2.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.2.0': + dependencies: + '@smithy/fetch-http-handler': 5.0.2 + '@smithy/node-http-handler': 4.0.4 + '@smithy/types': 4.2.0 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.0.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.8.1 + + '@storybook/addon-actions@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.6.12(prettier@3.5.3) + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.6.12(@types/react@18.3.21)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@mdx-js/react': 3.1.0(@types/react@18.3.21)(react@18.3.1) + '@storybook/blocks': 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/csf-plugin': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/react-dom-shim': 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-essentials@8.6.12(@types/react@18.3.21)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/addon-actions': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-backgrounds': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-controls': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-docs': 8.6.12(@types/react@18.3.21)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-highlight': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-measure': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-outline': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-toolbars': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/addon-viewport': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-highlight@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/addon-measure@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@3.5.3) + tiny-invariant: 1.3.3 + + '@storybook/addon-outline@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/addon-viewport@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + memoizerific: 1.11.3 + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/blocks@8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/builder-vite@8.6.12(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@storybook/csf-plugin': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + browser-assert: 1.2.1 + storybook: 8.6.12(prettier@3.5.3) + ts-dedent: 2.2.0 + vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + + '@storybook/components@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/core-events@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/core@8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.25.4 + esbuild-register: 3.6.0(esbuild@0.25.4) + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.11 + semver: 7.7.2 + util: 0.12.5 + ws: 8.18.2 + optionalDependencies: + prettier: 3.5.3 + transitivePeerDependencies: + - bufferutil + - storybook + - supports-color + - utf-8-validate + + '@storybook/csf-plugin@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + unplugin: 1.16.1 + + '@storybook/global@5.0.0': {} + + '@storybook/icons@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/manager-api@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/preview-api@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/react-dom-shim@8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3))': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.6.12(prettier@3.5.3) + + '@storybook/react-vite@8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) + '@storybook/builder-vite': 8.6.12(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + '@storybook/react': 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3) + find-up: 5.0.0 + magic-string: 0.30.17 + react: 18.3.1 + react-docgen: 7.1.1 + react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.10 + storybook: 8.6.12(prettier@3.5.3) + tsconfig-paths: 4.2.0 + vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + + '@storybook/react@8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3))(typescript@5.8.3)': + dependencies: + '@storybook/components': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/preview-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/react-dom-shim': 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3)) + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + storybook: 8.6.12(prettier@3.5.3) + optionalDependencies: + typescript: 5.8.3 + + '@storybook/theming@8.6.12(storybook@8.6.12(prettier@3.5.3))': + dependencies: + storybook: 8.6.12(prettier@3.5.3) + + '@tailwindcss/node@4.1.6': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.6 + + '@tailwindcss/oxide-android-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.6': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + optional: true + + '@tailwindcss/oxide@4.1.6': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-x64': 4.1.6 + '@tailwindcss/oxide-freebsd-x64': 4.1.6 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.6 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.6 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-x64-musl': 4.1.6 + '@tailwindcss/oxide-wasm32-wasi': 4.1.6 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 + + '@tailwindcss/vite@4.1.6(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@tailwindcss/node': 4.1.6 + '@tailwindcss/oxide': 4.1.6 + tailwindcss: 4.1.6 + vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + + '@tanstack/query-core@5.76.0': {} + + '@tanstack/react-query@5.76.1(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.76.0 + react: 18.3.1 + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.27.1 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.6.3': + dependencies: + '@adobe/css-tools': 4.4.2 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.1 + '@testing-library/dom': 10.4.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + '@types/react-dom': 18.3.7(@types/react@18.3.21) + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@tootallnate/once@2.0.0': {} + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + + '@types/clone-deep@4.0.4': {} + + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.6': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.6 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/diff-match-patch@1.0.36': {} + + '@types/diff@5.2.3': {} + + '@types/doctrine@0.0.9': {} + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.7 + + '@types/estree@1.0.7': {} + + '@types/geojson@7946.0.16': {} + + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.15.20 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.15.20 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@27.5.2': + dependencies: + jest-matcher-utils: 27.5.1 + pretty-format: 27.5.1 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/js-cookie@2.2.7': {} + + '@types/jsdom@20.0.1': + dependencies: + '@types/node': 22.15.20 + '@types/tough-cookie': 4.0.5 + parse5: 7.3.0 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.11 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/minimatch@5.1.2': {} + + '@types/mocha@10.0.10': {} + + '@types/ms@2.1.0': {} + + '@types/node-cache@4.2.5': + dependencies: + node-cache: 5.1.2 + + '@types/node-fetch@2.6.12': + dependencies: + '@types/node': 22.15.20 + form-data: 4.0.2 + + '@types/node-ipc@9.2.3': + dependencies: + '@types/node': 22.15.20 + + '@types/node@12.20.55': {} + + '@types/node@18.19.100': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.17.47': + dependencies: + undici-types: 6.19.8 + + '@types/node@22.15.20': + dependencies: + undici-types: 6.21.0 + + '@types/parse-json@4.0.2': + optional: true + + '@types/prop-types@15.7.14': {} + + '@types/ps-tree@1.1.6': {} + + '@types/react-dom@18.3.7(@types/react@18.3.21)': + dependencies: + '@types/react': 18.3.21 + + '@types/react@18.3.21': + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + '@types/resolve@1.20.6': {} + + '@types/shell-quote@1.7.5': {} + + '@types/stack-utils@2.0.3': {} + + '@types/string-similarity@4.0.2': {} + + '@types/stylis@4.2.5': {} + + '@types/testing-library__jest-dom@5.14.9': + dependencies: + '@types/jest': 27.5.2 + + '@types/tmp@0.2.6': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/trusted-types@2.0.7': + optional: true + + '@types/turndown@5.0.5': {} + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/uuid@9.0.8': {} + + '@types/vscode-webview@1.57.5': {} + + '@types/vscode@1.100.0': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.15.20 + optional: true + + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 9.27.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1(supports-color@8.1.1) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.1(supports-color@8.1.1) + eslint: 9.27.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.32.1': {} + + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1(supports-color@8.1.1) + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + eslint-visitor-keys: 4.2.0 + + '@typespec/ts-http-runtime@0.2.2': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@ungap/structured-clone@1.3.0': {} + + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@3.1.3': + dependencies: + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 3.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + + '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 3.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + + '@vitest/pretty-format@3.1.3': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.1.3': + dependencies: + '@vitest/utils': 3.1.3 + pathe: 2.0.3 + + '@vitest/snapshot@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.1.3': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.1.3': + dependencies: + '@vitest/pretty-format': 3.1.3 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + + '@vscode/codicons@0.0.36': {} + + '@vscode/test-cli@0.0.10': + dependencies: + '@types/mocha': 10.0.10 + c8: 9.1.0 + chokidar: 3.6.0 + enhanced-resolve: 5.18.1 + glob: 10.4.5 + minimatch: 9.0.5 + mocha: 10.8.2 + supports-color: 9.4.0 + yargs: 17.7.2 + + '@vscode/test-electron@2.5.2': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + jszip: 3.10.1 + ora: 8.2.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + '@vscode/vsce-sign-alpine-arm64@2.0.2': + optional: true + + '@vscode/vsce-sign-alpine-x64@2.0.2': + optional: true + + '@vscode/vsce-sign-darwin-arm64@2.0.2': + optional: true + + '@vscode/vsce-sign-darwin-x64@2.0.2': + optional: true + + '@vscode/vsce-sign-linux-arm64@2.0.2': + optional: true + + '@vscode/vsce-sign-linux-arm@2.0.2': + optional: true + + '@vscode/vsce-sign-linux-x64@2.0.2': + optional: true + + '@vscode/vsce-sign-win32-arm64@2.0.2': + optional: true + + '@vscode/vsce-sign-win32-x64@2.0.2': + optional: true + + '@vscode/vsce-sign@2.0.5': + optionalDependencies: + '@vscode/vsce-sign-alpine-arm64': 2.0.2 + '@vscode/vsce-sign-alpine-x64': 2.0.2 + '@vscode/vsce-sign-darwin-arm64': 2.0.2 + '@vscode/vsce-sign-darwin-x64': 2.0.2 + '@vscode/vsce-sign-linux-arm': 2.0.2 + '@vscode/vsce-sign-linux-arm64': 2.0.2 + '@vscode/vsce-sign-linux-x64': 2.0.2 + '@vscode/vsce-sign-win32-arm64': 2.0.2 + '@vscode/vsce-sign-win32-x64': 2.0.2 + + '@vscode/vsce@3.3.2': + dependencies: + '@azure/identity': 4.9.1 + '@vscode/vsce-sign': 2.0.5 + azure-devops-node-api: 12.5.0 + chalk: 2.4.2 + cheerio: 1.0.0 + cockatiel: 3.2.1 + commander: 12.1.0 + form-data: 4.0.2 + glob: 11.0.2 + hosted-git-info: 4.1.0 + jsonc-parser: 3.3.1 + leven: 3.1.0 + markdown-it: 14.1.0 + mime: 1.6.0 + minimatch: 3.1.2 + parse-semver: 1.1.1 + read: 1.0.7 + semver: 7.7.2 + tmp: 0.2.3 + typed-rest-client: 1.8.11 + url-join: 4.0.1 + xml2js: 0.5.0 + yauzl: 2.10.0 + yazl: 2.5.1 + optionalDependencies: + keytar: 7.9.0 + transitivePeerDependencies: + - supports-color + + '@vscode/webview-ui-toolkit@1.4.0(react@18.3.1)': + dependencies: + '@microsoft/fast-element': 1.14.0 + '@microsoft/fast-foundation': 2.50.0 + '@microsoft/fast-react-wrapper': 0.3.25(react@18.3.1) + react: 18.3.1 + tslib: 2.8.1 + + '@xmldom/xmldom@0.8.10': {} + + '@xobotyi/scrollbar-width@1.9.5': {} + + abab@2.0.6: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@2.0.0: + dependencies: + mime-types: 3.0.1 + negotiator: 1.0.0 + + acorn-globals@7.0.1: + dependencies: + acorn: 8.14.1 + acorn-walk: 8.3.4 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + agent-base@7.1.3: {} + + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@2.0.0: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + assertion-error@2.0.1: {} + + ast-types@0.13.4: + dependencies: + tslib: 2.8.1 + + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + + async-function@1.0.0: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + azure-devops-node-api@12.5.0: + dependencies: + tunnel: 0.0.6 + typed-rest-client: 1.8.11 + + b4a@1.6.7: {} + + babel-jest@29.7.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.27.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.27.1 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + optional: true + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) + + babel-preset-jest@29.6.3(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + + bail@1.0.5: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + bare-events@2.5.4: + optional: true + + bare-fs@4.1.5: + dependencies: + bare-events: 2.5.4 + bare-path: 3.0.0 + bare-stream: 2.6.5(bare-events@2.5.4) + optional: true + + bare-os@3.6.1: + optional: true + + bare-path@3.0.0: + dependencies: + bare-os: 3.6.1 + optional: true + + bare-stream@2.6.5(bare-events@2.5.4): + dependencies: + streamx: 2.22.0 + optionalDependencies: + bare-events: 2.5.4 + optional: true + + base64-js@1.5.1: {} + + basic-ftp@5.0.5: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + bignumber.js@9.3.0: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + + bluebird@3.4.7: {} + + body-parser@2.2.0: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.1(supports-color@8.1.1) + http-errors: 2.0.0 + iconv-lite: 0.6.3 + on-finished: 2.4.1 + qs: 6.14.0 + raw-body: 3.0.0 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + + boolbase@1.0.0: {} + + bowser@2.11.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-assert@1.2.1: {} + + browser-stdout@1.3.1: {} + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.152 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-crc32@0.2.13: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + bundle-require@5.1.0(esbuild@0.25.4): + dependencies: + esbuild: 0.25.4 + load-tsconfig: 0.2.5 + + bytes@3.1.2: {} + + c8@9.1.0: + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 3.3.1 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.1.7 + test-exclude: 6.0.0 + v8-to-istanbul: 9.3.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + + cac@6.7.14: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + camelize@1.0.1: {} + + caniuse-lite@1.0.30001718: {} + + ccount@2.0.1: {} + + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + char-regex@1.0.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@1.1.4: {} + + character-entities-legacy@3.0.0: {} + + character-entities@1.2.4: {} + + character-entities@2.0.2: {} + + character-reference-invalid@1.1.4: {} + + character-reference-invalid@2.0.1: {} + + chardet@0.7.0: {} + + check-error@2.1.1: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 6.21.3 + whatwg-mimetype: 4.0.0 + + chevrotain-allstar@0.3.1(chevrotain@11.0.3): + dependencies: + chevrotain: 11.0.3 + lodash-es: 4.17.21 + + chevrotain@11.0.3: + dependencies: + '@chevrotain/cst-dts-gen': 11.0.3 + '@chevrotain/gast': 11.0.3 + '@chevrotain/regexp-to-ast': 11.0.3 + '@chevrotain/types': 11.0.3 + '@chevrotain/utils': 11.0.3 + lodash-es: 4.17.21 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@1.1.4: + optional: true + + chownr@3.0.0: {} + + chromium-bidi@0.11.0(devtools-protocol@0.0.1367902): + dependencies: + devtools-protocol: 0.0.1367902 + mitt: 3.0.1 + zod: 3.23.8 + + ci-info@2.0.0: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone@2.1.2: {} + + clsx@2.1.1: {} + + cmdk@1.1.1(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.21)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.7(@types/react@18.3.21))(@types/react@18.3.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + co@4.6.0: {} + + cockatiel@3.2.1: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@1.0.8: {} + + comma-separated-tokens@2.0.3: {} + + commander@11.1.0: {} + + commander@12.1.0: {} + + commander@13.1.0: {} + + commander@4.1.1: {} + + commander@6.2.1: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + consola@3.4.2: {} + + console-control-strings@1.1.0: {} + + content-disposition@1.0.0: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.2.2: {} + + cookie@0.7.2: {} + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + + copyfiles@2.4.1: + dependencies: + glob: 7.2.3 + minimatch: 3.1.2 + mkdirp: 1.0.4 + noms: 0.0.0 + through2: 2.0.5 + untildify: 4.0.0 + yargs: 16.2.0 + + core-js@3.42.0: {} + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + optional: true + + create-jest@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + cross-fetch@4.0.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-color-keywords@1.0.0: {} + + css-in-js-utils@3.1.0: + dependencies: + hyphenate-style-name: 1.1.0 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@6.1.0: {} + + css.escape@1.5.1: {} + + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.1.3: {} + + cytoscape-cose-bilkent@4.1.0(cytoscape@3.32.0): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.32.0 + + cytoscape-fcose@2.2.0(cytoscape@3.32.0): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.32.0 + + cytoscape@3.32.0: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.11: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.21 + + data-uri-to-buffer@6.0.2: {} + + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + date-fns@4.1.0: {} + + dayjs@1.11.13: {} + + debounce@2.2.0: {} + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.1(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + decimal.js@10.5.0: {} + + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + optional: true + + dedent@1.6.0(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 + + deep-eql@5.0.2: {} + + deep-extend@0.6.0: + optional: true + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + default-shell@2.2.0: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + + delay@6.0.0: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + dequal@2.0.3: {} + + detect-indent@6.1.0: {} + + detect-libc@2.0.4: {} + + detect-newline@3.1.0: {} + + detect-node-es@1.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + devtools-protocol@0.0.1367902: {} + + diff-match-patch@1.0.5: {} + + diff-sequences@27.5.1: {} + + diff-sequences@29.6.3: {} + + diff@5.2.0: {} + + dingbat-to-unicode@1.0.1: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + dompurify@3.2.5: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv@16.0.3: {} + + dotenv@16.5.0: {} + + duck@0.1.12: + dependencies: + underscore: 1.13.7 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + easy-stack@1.0.1: {} + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + eciesjs@0.4.14: + dependencies: + '@ecies/ciphers': 0.2.3(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + + ee-first@1.1.1: {} + + eight-colors@1.3.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.152: {} + + emittery@0.13.1: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@2.0.0: {} + + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@4.5.0: {} + + entities@6.0.0: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild-register@3.6.0(esbuild@0.25.4): + dependencies: + debug: 4.4.1(supports-color@8.1.1) + esbuild: 0.25.4 + transitivePeerDependencies: + - supports-color + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@10.1.5(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + + eslint-plugin-only-warn@1.1.0: {} + + eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + + eslint-plugin-react@7.37.5(eslint@9.27.0(jiti@2.4.2)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.27.0(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-plugin-turbo@2.5.3(eslint@9.27.0(jiti@2.4.2))(turbo@2.5.3): + dependencies: + dotenv: 16.0.3 + eslint: 9.27.0(jiti@2.4.2) + turbo: 2.5.3 + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.27.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.27.0 + '@eslint/plugin-kit': 0.3.1 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-pubsub@5.0.3: + dependencies: + copyfiles: 2.4.1 + strong-type: 0.1.6 + + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + + event-target-shim@5.0.1: {} + + eventemitter3@5.0.1: {} + + eventsource-parser@3.0.1: {} + + eventsource@3.0.7: + dependencies: + eventsource-parser: 3.0.1 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + execa@9.5.3: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + + exenv-es6@1.1.1: {} + + exit@0.1.2: {} + + expand-template@2.0.3: + optional: true + + expect-type@1.2.1: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + + express@5.1.0: + dependencies: + accepts: 2.0.0 + body-parser: 2.2.0 + content-disposition: 1.0.0 + content-type: 1.0.5 + cookie: 0.7.2 + cookie-signature: 1.2.2 + debug: 4.4.1(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 2.1.0 + fresh: 2.0.0 + http-errors: 2.0.0 + merge-descriptors: 2.0.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + once: 1.4.0 + parseurl: 1.3.3 + proxy-addr: 2.0.7 + qs: 6.14.0 + range-parser: 1.2.1 + router: 2.2.0 + send: 1.2.0 + serve-static: 2.2.0 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + exsolve@1.0.5: {} + + extend@3.0.2: {} + + extendable-error@0.1.7: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extract-zip@2.0.1: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-shallow-equal@1.0.0: {} + + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.1.2 + + fast-xml-parser@4.5.3: + dependencies: + strnum: 1.1.2 + + fastest-levenshtein@1.0.16: {} + + fastest-stable-stringify@2.0.2: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fd-package-json@1.2.0: + dependencies: + walk-up-path: 3.0.1 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fflate@0.4.8: {} + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@2.1.0: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flat@5.0.2: {} + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data-encoder@1.7.2: {} + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + formatly@0.2.3: + dependencies: + fd-package-json: 1.2.0 + + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + + forwarded@0.2.0: {} + + fresh@2.0.0: {} + + from@0.1.7: {} + + fs-constants@1.0.0: + optional: true + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + fzf@0.5.2: {} + + gauge@5.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 4.1.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gaxios@6.7.1: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + is-stream: 2.0.1 + node-fetch: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + gcp-metadata@6.1.1: + dependencies: + gaxios: 6.7.1 + google-logging-utils: 0.0.2 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-folder-size@5.0.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-uri@6.0.4: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + github-from-package@0.0.0: + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@11.0.2: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.0 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.15.0: {} + + globals@16.1.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + google-auth-library@9.15.1: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1 + gcp-metadata: 6.1.1 + gtoken: 7.1.0 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + google-logging-utils@0.0.2: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gtoken@7.1.0: + dependencies: + gaxios: 6.7.1 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + hachure-fill@0.5.2: {} + + harmony-reflect@1.6.2: {} + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-unicode@2.0.1: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-to-hyperscript@9.0.1: + dependencies: + '@types/unist': 2.0.11 + comma-separated-tokens: 1.0.8 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + style-to-object: 0.3.0 + unist-util-is: 4.1.0 + web-namespaces: 1.1.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.7 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.16 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + he@1.2.0: {} + + highlight.js@11.11.1: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + howler@2.2.4: {} + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-escaper@2.0.2: {} + + html-parse-stringify@3.0.1: + dependencies: + void-elements: 3.1.0 + + html-url-attributes@3.0.1: {} + + html-void-elements@3.0.0: {} + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + human-id@4.1.1: {} + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + human-signals@8.0.1: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + husky@9.1.7: {} + + hyphenate-style-name@1.1.0: {} + + i18next-http-backend@3.0.2: + dependencies: + cross-fetch: 4.0.0 + transitivePeerDependencies: + - encoding + + i18next@24.2.3(typescript@5.8.3): + dependencies: + '@babel/runtime': 7.27.1 + optionalDependencies: + typescript: 5.8.3 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + identity-obj-proxy@3.0.0: + dependencies: + harmony-reflect: 1.6.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.4: {} + + immediate@3.0.6: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: + optional: true + + inline-style-parser@0.1.1: {} + + inline-style-parser@0.2.4: {} + + inline-style-prefixer@7.0.1: + dependencies: + css-in-js-utils: 3.1.0 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + internmap@1.0.1: {} + + internmap@2.0.3: {} + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + ipaddr.js@1.9.1: {} + + is-alphabetical@1.0.4: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@2.0.5: {} + + is-callable@1.2.7: {} + + is-ci@2.0.0: + dependencies: + ci-info: 2.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@1.0.4: {} + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-generator-fn@2.1.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@1.0.4: {} + + is-hexadecimal@2.0.1: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-map@2.0.3: {} + + is-node-process@1.2.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-plain-obj@2.1.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-potential-custom-element-name@1.0.1: {} + + is-promise@4.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isbinaryfile@5.0.4: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + isobject@3.0.1: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.1.0: + dependencies: + '@isaacs/cliui': 8.0.2 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0(babel-plugin-macros@3.1.0): + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.6.0(babel-plugin-macros@3.1.0) + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.19.100 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.47 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@22.15.20)(babel-plugin-macros@3.1.0): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.15.20 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@27.5.1: + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-jsdom@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 22.15.20 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@27.5.1: {} + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.15.20 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@27.5.1: + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-simple-dot-reporter@1.0.5: {} + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/types': 7.27.1 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.20 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.15.20 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@2.4.2: {} + + joycon@3.1.1: {} + + js-cookie@2.2.1: {} + + js-message@1.0.7: {} + + js-queue@2.0.2: + dependencies: + easy-stack: 1.0.1 + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsdoc-type-pratt-parser@4.1.0: {} + + jsdom@20.0.3: + dependencies: + abab: 2.0.6 + acorn: 8.14.1 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.5.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.2 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 7.3.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.18.2 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.0 + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@4.0.0: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.2: + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.2 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + jwa@1.4.2: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.2 + safe-buffer: 5.2.1 + + jws@4.0.0: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + katex@0.16.22: + dependencies: + commander: 8.3.0 + + keytar@7.9.0: + dependencies: + node-addon-api: 4.3.0 + prebuild-install: 7.1.3 + optional: true + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + khroma@2.1.0: {} + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + knip@5.55.1(@types/node@22.15.20)(typescript@5.8.3): + dependencies: + '@nodelib/fs.walk': 1.2.8 + '@types/node': 22.15.20 + enhanced-resolve: 5.18.1 + fast-glob: 3.3.3 + formatly: 0.2.3 + jiti: 2.4.2 + js-yaml: 4.1.0 + minimist: 1.2.8 + picocolors: 1.1.1 + picomatch: 4.0.2 + smol-toml: 1.3.4 + strip-json-comments: 5.0.1 + typescript: 5.8.3 + zod: 3.24.4 + zod-validation-error: 3.4.1(zod@3.24.4) + + knuth-shuffle-seeded@1.0.6: + dependencies: + seed-random: 2.2.0 + + kolorist@1.8.0: {} + + langium@3.3.1: + dependencies: + chevrotain: 11.0.3 + chevrotain-allstar: 0.3.1(chevrotain@11.0.3) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.0.8 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + lint-staged@15.5.2: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.1(supports-color@8.1.1) + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.3.3 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.7.1 + transitivePeerDependencies: + - supports-color + + listr2@8.3.3: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + load-tsconfig@0.2.5: {} + + local-pkg@1.1.1: + dependencies: + mlly: 1.7.4 + pkg-types: 2.1.0 + quansync: 0.2.10 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash.sortby@4.7.0: {} + + lodash.startcase@4.4.0: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-symbols@6.0.0: + dependencies: + chalk: 5.4.1 + is-unicode-supported: 1.3.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lop@0.4.2: + dependencies: + duck: 0.1.12 + option: 0.2.4 + underscore: 1.13.7 + + loupe@3.1.3: {} + + lowlight@3.3.0: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + highlight.js: 11.11.1 + + lru-cache@10.4.3: {} + + lru-cache@11.1.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + lucide-react@0.510.0(react@18.3.1): + dependencies: + react: 18.3.1 + + lz-string@1.5.0: {} + + macos-release@3.3.0: {} + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + mammoth@1.9.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.2 + path-is-absolute: 1.0.1 + underscore: 1.13.7 + xmlbuilder: 10.1.1 + + map-or-similar@1.5.0: {} + + map-stream@0.1.0: {} + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + markdown-table@3.0.4: {} + + marked@15.0.11: {} + + math-intrinsics@1.1.0: {} + + mdast-util-definitions@4.0.0: + dependencies: + unist-util-visit: 2.0.3 + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@0.8.5: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@10.2.0: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + mdast-util-definitions: 4.0.0 + mdurl: 1.0.1 + unist-builder: 2.0.3 + unist-util-generated: 1.1.6 + unist-util-position: 3.1.0 + unist-util-visit: 2.0.3 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@2.0.0: {} + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.14: {} + + mdurl@1.0.1: {} + + mdurl@2.0.0: {} + + media-typer@1.1.0: {} + + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + + memorystream@0.3.1: {} + + merge-descriptors@2.0.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + mermaid@11.6.0: + dependencies: + '@braintree/sanitize-url': 7.1.1 + '@iconify/utils': 2.3.0 + '@mermaid-js/parser': 0.4.0 + '@types/d3': 7.4.3 + cytoscape: 3.32.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.32.0) + cytoscape-fcose: 2.2.0(cytoscape@3.32.0) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.11 + dayjs: 1.11.13 + dompurify: 3.2.5 + katex: 0.16.22 + khroma: 2.1.0 + lodash-es: 4.17.21 + marked: 15.0.11 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + transitivePeerDependencies: + - supports-color + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@2.11.4: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.1(supports-color@8.1.1) + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime-types@3.0.1: + dependencies: + mime-db: 1.54.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + mimic-response@3.1.0: + optional: true + + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mitt@3.0.1: {} + + mkdirp-classic@0.5.3: + optional: true + + mkdirp@1.0.4: {} + + mkdirp@3.0.1: {} + + mlly@1.7.4: + dependencies: + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + mocha@10.8.2: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.4.1(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + + mocha@11.2.2: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.1(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.4.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 17.7.2 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + monaco-vscode-textmate-theme-converter@0.1.7(tslib@2.8.1): + dependencies: + commander: 8.3.0 + fs-extra: 7.0.1 + tslib: 2.8.1 + + mri@1.2.0: {} + + ms@2.1.3: {} + + mute-stream@0.0.8: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nano-css@5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + css-tree: 1.1.3 + csstype: 3.1.3 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 7.0.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + rtl-css-js: 1.16.1 + stacktrace-js: 2.0.2 + stylis: 4.3.6 + + nanoid@3.3.11: {} + + napi-build-utils@2.0.0: + optional: true + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + netmask@2.0.2: {} + + nock@14.0.4: + dependencies: + '@mswjs/interceptors': 0.38.6 + json-stringify-safe: 5.0.1 + propagate: 2.0.1 + + node-abi@3.75.0: + dependencies: + semver: 7.7.2 + optional: true + + node-addon-api@4.3.0: + optional: true + + node-cache@5.1.2: + dependencies: + clone: 2.1.2 + + node-domexception@1.0.0: {} + + node-ensure@0.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-int64@0.4.0: {} + + node-ipc@12.0.0: + dependencies: + event-pubsub: 5.0.3 + js-message: 1.0.7 + js-queue: 2.0.2 + strong-type: 1.1.0 + + node-releases@2.0.19: {} + + noms@0.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.0.34 + + normalize-path@3.0.0: {} + + npm-normalize-package-bin@4.0.0: {} + + npm-run-all2@8.0.1: + dependencies: + ansi-styles: 6.2.1 + cross-spawn: 7.0.6 + memorystream: 0.3.1 + minimatch: 10.0.1 + pidtree: 0.6.0 + read-package-json-fast: 4.0.0 + shell-quote: 1.8.2 + which: 5.0.0 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nwsapi@2.2.20: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object-treeify@1.1.33: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@0.0.4: {} + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.3: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.0.1 + regex-recursion: 6.0.2 + + only-allow@1.2.1: + dependencies: + which-pm-runs: 1.1.0 + + open@10.1.2: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openai@4.98.0(ws@8.18.2)(zod@3.24.4): + dependencies: + '@types/node': 18.19.100 + '@types/node-fetch': 2.6.12 + abort-controller: 3.0.0 + agentkeepalive: 4.6.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + optionalDependencies: + ws: 8.18.2 + zod: 3.24.4 + transitivePeerDependencies: + - encoding + + option@0.2.4: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@8.2.0: + dependencies: + chalk: 5.4.1 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + os-name@6.0.0: + dependencies: + macos-release: 3.3.0 + windows-release: 6.0.1 + + os-tmpdir@1.0.2: {} + + outdent@0.5.0: {} + + outvariant@1.4.3: {} + + ovsx@0.10.2: + dependencies: + '@vscode/vsce': 3.3.2 + commander: 6.2.1 + follow-redirects: 1.15.9 + is-ci: 2.0.0 + leven: 3.1.0 + semver: 7.7.2 + tmp: 0.2.3 + yauzl: 3.2.0 + transitivePeerDependencies: + - debug + - supports-color + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-timeout@6.1.4: {} + + p-try@2.2.0: {} + + p-wait-for@5.0.2: + dependencies: + p-timeout: 6.1.4 + + pac-proxy-agent@7.2.0: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.3 + debug: 4.4.1(supports-color@8.1.1) + get-uri: 6.0.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + package-json-from-dist@1.0.1: {} + + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.10 + + package-manager-detector@1.3.0: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@2.0.0: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.1.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + parse-semver@1.1.1: + dependencies: + semver: 5.7.2 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.0 + + parseurl@1.3.3: {} + + path-data-parser@0.1.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + + path-to-regexp@8.2.0: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + + pdf-parse@1.1.1: + dependencies: + debug: 3.2.7 + node-ensure: 0.0.0 + transitivePeerDependencies: + - supports-color + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pify@4.0.1: {} + + pirates@4.0.7: {} + + pkce-challenge@4.1.0: {} + + pkce-challenge@5.0.0: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 + + pkg-types@2.1.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.5 + pathe: 2.0.3 + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + polished@4.3.1: + dependencies: + '@babel/runtime': 7.27.1 + + possible-typed-array-names@1.1.0: {} + + postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.4.2 + postcss: 8.5.3 + tsx: 4.19.4 + yaml: 2.8.0 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + posthog-js@1.242.1: + dependencies: + core-js: 3.42.0 + fflate: 0.4.8 + preact: 10.26.6 + web-vitals: 4.2.4 + + posthog-node@4.17.1: + dependencies: + axios: 1.9.0 + transitivePeerDependencies: + - debug + + preact@10.26.6: {} + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.0.4 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.75.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.2 + tunnel-agent: 0.6.0 + optional: true + + prelude-ls@1.2.1: {} + + prettier@2.8.8: {} + + prettier@3.5.3: {} + + pretty-bytes@6.1.1: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + progress@2.0.3: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + propagate@2.0.1: {} + + property-information@5.6.0: + dependencies: + xtend: 4.0.2 + + property-information@7.1.0: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-agent@6.5.0: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1(supports-color@8.1.1) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 7.18.3 + pac-proxy-agent: 7.2.0 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + puppeteer-chromium-resolver@23.0.0: + dependencies: + '@puppeteer/browsers': 2.10.4 + eight-colors: 1.3.1 + gauge: 5.0.2 + puppeteer-core: 23.11.1 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - utf-8-validate + + puppeteer-core@23.11.1: + dependencies: + '@puppeteer/browsers': 2.6.1 + chromium-bidi: 0.11.0(devtools-protocol@0.0.1367902) + debug: 4.4.1(supports-color@8.1.1) + devtools-protocol: 0.0.1367902 + typed-query-selector: 2.12.0 + ws: 8.18.2 + transitivePeerDependencies: + - bare-buffer + - bufferutil + - supports-color + - utf-8-validate + + pure-rand@6.1.0: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + quansync@0.2.10: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + + react-docgen-typescript@2.2.2(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + react-docgen@7.1.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.10 + strip-indent: 4.0.0 + transitivePeerDependencies: + - supports-color + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-i18next@15.5.1(i18next@24.2.3(typescript@5.8.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3): + dependencies: + '@babel/runtime': 7.27.1 + html-parse-stringify: 3.0.1 + i18next: 24.2.3(typescript@5.8.3) + react: 18.3.1 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + typescript: 5.8.3 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-markdown@9.1.0(@types/react@18.3.21)(react@18.3.1): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 18.3.21 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 18.3.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react-refresh@0.17.0: {} + + react-remark@2.1.0(react@18.3.1): + dependencies: + react: 18.3.1 + rehype-react: 6.2.1 + remark-parse: 9.0.0 + remark-rehype: 8.1.0 + unified: 9.2.2 + transitivePeerDependencies: + - supports-color + + react-remove-scroll-bar@2.3.8(@types/react@18.3.21)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.21)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.21 + + react-remove-scroll@2.6.3(@types/react@18.3.21)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.21)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.21)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.21)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.21)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + + react-style-singleton@2.2.3(@types/react@18.3.21)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.21 + + react-textarea-autosize@8.5.9(@types/react@18.3.21)(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.1 + react: 18.3.1 + use-composed-ref: 1.4.0(@types/react@18.3.21)(react@18.3.1) + use-latest: 1.3.0(@types/react@18.3.21)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + + react-universal-interface@0.6.2(react@18.3.1)(tslib@2.8.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + + react-use@17.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-universal-interface: 0.6.2(react@18.3.1)(tslib@2.8.1) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.8.1 + + react-virtuoso@4.12.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-package-json-fast@4.0.0: + dependencies: + json-parse-even-better-errors: 4.0.0 + npm-normalize-package-bin: 4.0.0 + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + optional: true + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + reconnecting-eventsource@1.6.4: {} + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + rehype-highlight@7.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-text: 4.0.2 + lowlight: 3.3.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + rehype-react@6.2.1: + dependencies: + '@mapbox/hast-util-table-cell-style': 0.2.1 + hast-to-hyperscript: 9.0.1 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@9.0.0: + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + remark-rehype@8.1.0: + dependencies: + mdast-util-to-hast: 10.2.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remove-markdown@0.6.2: {} + + require-directory@2.1.1: {} + + requires-port@1.0.0: {} + + resize-observer-polyfill@1.5.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rimraf@6.0.1: + dependencies: + glob: 11.0.2 + package-json-from-dist: 1.0.1 + + robust-predicates@3.0.2: {} + + rollup@4.40.2: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 + fsevents: 2.3.3 + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + router@2.2.0: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + depd: 2.0.0 + is-promise: 4.0.0 + parseurl: 1.3.3 + path-to-regexp: 8.2.0 + transitivePeerDependencies: + - supports-color + + rtl-css-js@1.16.1: + dependencies: + '@babel/runtime': 7.27.1 + + run-applescript@7.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rw@1.3.3: {} + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + sanitize-filename@1.6.3: + dependencies: + truncate-utf8-bytes: 1.0.2 + + sax@1.4.1: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + say@0.16.0: + dependencies: + one-time: 0.0.4 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + screenfull@5.2.0: {} + + seed-random@2.2.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + send@1.2.0: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.0 + mime-types: 3.0.1 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-error@11.0.3: + dependencies: + type-fest: 2.19.0 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-static@2.2.0: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-harmonic-interval@1.0.1: {} + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shallowequal@1.1.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + shiki@3.4.1: + dependencies: + '@shikijs/core': 3.4.1 + '@shikijs/engine-javascript': 3.4.1 + '@shikijs/engine-oniguruma': 3.4.1 + '@shikijs/langs': 3.4.1 + '@shikijs/themes': 3.4.1 + '@shikijs/types': 3.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-concat@1.0.1: + optional: true + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + optional: true + + simple-git@3.27.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + smart-buffer@4.2.0: {} + + smol-toml@1.3.4: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1(supports-color@8.1.1) + socks: 2.8.4 + transitivePeerDependencies: + - supports-color + + socks@2.8.4: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + sound-play@1.1.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.6: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + space-separated-tokens@1.1.5: {} + + space-separated-tokens@2.0.2: {} + + spawndamnit@3.0.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + split@0.3.3: + dependencies: + through: 2.3.8 + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: {} + + stack-generator@2.0.10: + dependencies: + stackframe: 1.3.4 + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackback@0.0.2: {} + + stackframe@1.3.4: {} + + stacktrace-gps@3.1.2: + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + + stacktrace-js@2.0.2: + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + + statuses@2.0.1: {} + + std-env@3.9.0: {} + + stdin-discarder@0.2.2: {} + + storybook-dark-mode@4.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.12(prettier@3.5.3)): + dependencies: + '@storybook/components': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/core-events': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/global': 5.0.0 + '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/manager-api': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.5.3)) + fast-deep-equal: 3.1.3 + memoizerific: 1.11.3 + transitivePeerDependencies: + - react + - react-dom + - storybook + + storybook@8.6.12(prettier@3.5.3): + dependencies: + '@storybook/core': 8.6.12(prettier@3.5.3)(storybook@8.6.12(prettier@3.5.3)) + optionalDependencies: + prettier: 3.5.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + + streamx@2.22.0: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + + strict-event-emitter@0.5.1: {} + + string-argv@0.3.2: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-similarity@4.0.4: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-bom@5.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: + optional: true + + strip-json-comments@3.1.1: {} + + strip-json-comments@5.0.1: {} + + strnum@1.1.2: {} + + strong-type@0.1.6: {} + + strong-type@1.1.0: {} + + style-to-js@1.1.16: + dependencies: + style-to-object: 1.0.8 + + style-to-object@0.3.0: + dependencies: + inline-style-parser: 0.1.1 + + style-to-object@1.0.8: + dependencies: + inline-style-parser: 0.2.4 + + styled-components@6.1.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@emotion/is-prop-valid': 1.2.2 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.5 + css-to-react-native: 3.2.0 + csstype: 3.1.3 + postcss: 8.4.49 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + shallowequal: 1.1.0 + stylis: 4.3.2 + tslib: 2.6.2 + + stylis@4.3.2: {} + + stylis@4.3.6: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-color@9.4.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + tabbable@5.3.3: {} + + tailwind-merge@2.6.0: {} + + tailwindcss-animate@1.0.7(tailwindcss@4.1.6): + dependencies: + tailwindcss: 4.1.6 + + tailwindcss@4.1.6: {} + + tapable@2.2.1: {} + + tar-fs@2.1.2: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + optional: true + + tar-fs@3.0.8: + dependencies: + pump: 3.0.2 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 4.1.5 + bare-path: 3.0.0 + transitivePeerDependencies: + - bare-buffer + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.22.0 + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + term-size@2.2.1: {} + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throttle-debounce@3.0.1: {} + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through@2.3.8: {} + + tiktoken@1.0.21: {} + + tiny-invariant@1.3.3: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmp@0.2.3: {} + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toggle-selection@1.0.6: {} + + toidentifier@1.0.1: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tr46@3.0.0: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + tree-sitter-wasms@0.1.12: {} + + trim-lines@3.0.1: {} + + trough@1.0.5: {} + + trough@2.2.0: {} + + truncate-utf8-bytes@1.0.2: + dependencies: + utf8-byte-length: 1.0.5 + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-dedent@2.2.0: {} + + ts-easing@0.2.0: {} + + ts-interface-checker@0.1.13: {} + + ts-jest@29.3.3(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + esbuild: 0.25.4 + + ts-jest@29.3.3(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.4)(jest@29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.17.47)(babel-plugin-macros@3.1.0) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + esbuild: 0.25.4 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.6.2: {} + + tslib@2.8.1: {} + + tsup@8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.8.0): + dependencies: + bundle-require: 5.1.0(esbuild@0.25.4) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.1(supports-color@8.1.1) + esbuild: 0.25.4 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(yaml@2.8.0) + resolve-from: 5.0.0 + rollup: 4.40.2 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.3 + typescript: 5.8.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsx@4.19.4: + dependencies: + esbuild: 0.25.4 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + + tunnel@0.0.6: {} + + turbo-darwin-64@2.5.3: + optional: true + + turbo-darwin-arm64@2.5.3: + optional: true + + turbo-linux-64@2.5.3: + optional: true + + turbo-linux-arm64@2.5.3: + optional: true + + turbo-windows-64@2.5.3: + optional: true + + turbo-windows-arm64@2.5.3: + optional: true + + turbo@2.5.3: + optionalDependencies: + turbo-darwin-64: 2.5.3 + turbo-darwin-arm64: 2.5.3 + turbo-linux-64: 2.5.3 + turbo-linux-arm64: 2.5.3 + turbo-windows-64: 2.5.3 + turbo-windows-arm64: 2.5.3 + + turndown@7.2.0: + dependencies: + '@mixmark-io/domino': 2.2.0 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + type-fest@2.19.0: {} + + type-fest@4.41.0: {} + + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.1 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typed-query-selector@2.12.0: {} + + typed-rest-client@1.8.11: + dependencies: + qs: 6.14.0 + tunnel: 0.0.6 + underscore: 1.13.7 + + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + uc.micro@2.1.0: {} + + ufo@1.6.1: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + underscore@1.13.7: {} + + undici-types@5.26.5: {} + + undici-types@6.19.8: {} + + undici-types@6.21.0: {} + + undici@6.21.3: {} + + unicorn-magic@0.3.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unified@9.2.2: + dependencies: + '@types/unist': 2.0.11 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + + unist-builder@2.0.3: {} + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-generated@1.1.6: {} + + unist-util-is@3.0.0: {} + + unist-util-is@4.1.0: {} + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@3.1.0: {} + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@2.0.3: + dependencies: + '@types/unist': 2.0.11 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@2.1.2: + dependencies: + unist-util-is: 3.0.0 + + unist-util-visit-parents@3.1.1: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 4.1.0 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@1.4.1: + dependencies: + unist-util-visit-parents: 2.1.2 + + unist-util-visit@2.0.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + unpipe@1.0.0: {} + + unplugin@1.16.1: + dependencies: + acorn: 8.14.1 + webpack-virtual-modules: 0.6.2 + + untildify@4.0.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.1: {} + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-callback-ref@1.3.3(@types/react@18.3.21)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.21 + + use-composed-ref@1.4.0(@types/react@18.3.21)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + use-isomorphic-layout-effect@1.2.0(@types/react@18.3.21)(react@18.3.1): + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.21 + + use-latest@1.3.0(@types/react@18.3.21)(react@18.3.1): + dependencies: + react: 18.3.1 + use-isomorphic-layout-effect: 1.2.0(@types/react@18.3.21)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.21 + + use-sidecar@1.1.3(@types/react@18.3.21)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.21 + + use-sound@5.0.0(react@18.3.1): + dependencies: + howler: 2.2.4 + react: 18.3.1 + + utf8-byte-length@1.0.5: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + uuid@11.1.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + vary@1.1.2: {} + + vfile-message@2.0.4: + dependencies: + '@types/unist': 2.0.11 + unist-util-stringify-position: 2.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@4.2.1: + dependencies: + '@types/unist': 2.0.11 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite-node@3.1.3(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + cac: 6.7.14 + debug: 4.4.1(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-node@3.1.3(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + cac: 6.7.14 + debug: 4.4.1(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 18.19.100 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + tsx: 4.19.4 + yaml: 2.8.0 + + vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 20.17.47 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + tsx: 4.19.4 + yaml: 2.8.0 + + vite@6.3.5(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + esbuild: 0.25.4 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.2 + tinyglobby: 0.2.13 + optionalDependencies: + '@types/node': 22.15.20 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + tsx: 4.19.4 + yaml: 2.8.0 + + vitest@3.1.3(@types/debug@4.1.12)(@types/node@20.17.47)(jiti@2.4.2)(jsdom@20.0.3)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.1(supports-color@8.1.1) + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + vite-node: 3.1.3(@types/node@20.17.47)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 20.17.47 + jsdom: 20.0.3 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.20)(jiti@2.4.2)(jsdom@20.0.3)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.1(supports-color@8.1.1) + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.13 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + vite-node: 3.1.3(@types/node@22.15.20)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.4)(yaml@2.8.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 22.15.20 + jsdom: 20.0.3 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + void-elements@3.1.0: {} + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-material-icons@0.1.1: {} + + vscode-uri@3.0.8: {} + + vscrui@0.2.2(@types/react@18.3.21)(react@18.3.1): + dependencies: + '@types/react': 18.3.21 + react: 18.3.1 + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + walk-up-path@3.0.1: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + web-namespaces@1.1.4: {} + + web-streams-polyfill@4.0.0-beta.3: {} + + web-tree-sitter@0.22.6: {} + + web-vitals@4.2.4: {} + + webidl-conversions@3.0.1: {} + + webidl-conversions@4.0.2: {} + + webidl-conversions@7.0.0: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-pm-runs@1.1.0: {} + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@4.0.0: + dependencies: + isexe: 3.1.1 + + which@5.0.0: + dependencies: + isexe: 3.1.1 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + windows-release@6.0.1: + dependencies: + execa: 8.0.1 + + word-wrap@1.2.5: {} + + workerpool@6.5.1: {} + + workerpool@9.2.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.18.2: {} + + xml-name-validator@4.0.0: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@10.1.1: {} + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yallist@5.0.0: {} + + yaml@1.10.2: + optional: true + + yaml@2.7.1: {} + + yaml@2.8.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yauzl@3.2.0: + dependencies: + buffer-crc32: 0.2.13 + pend: 1.2.0 + + yazl@2.5.1: + dependencies: + buffer-crc32: 0.2.13 + + yocto-queue@0.1.0: {} + + yoctocolors@2.1.1: {} + + zod-to-json-schema@3.24.5(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.4): + dependencies: + typescript: 5.8.3 + zod: 3.24.4 + + zod-validation-error@3.4.1(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod@3.23.8: {} + + zod@3.24.4: {} + + zwitch@2.0.4: {} diff --git a/src/package.json b/src/package.json index 536d24af31..8238a89e1c 100644 --- a/src/package.json +++ b/src/package.json @@ -313,6 +313,21 @@ "type": "string", "default": "", "description": "%settings.customStoragePath.description%" + }, + "roo-cline.diffViewAutoFocus": { + "type": "boolean", + "default": false, + "description": "Automatically focus the diff tab when showing file changes. If false, the diff tab will open in the background." + }, + "roo-cline.autoCloseRooTabs": { + "type": "boolean", + "default": false, + "description": "%roo-cline.autoCloseRooTabs.description%" + }, + "roo-cline.autoCloseAllRooTabs": { + "type": "boolean", + "default": false, + "description": "%roo-cline.autoCloseAllRooTabs.description%" } } } From a8341713fb0f0582cc689e20944d7edda6a986c1 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 25 May 2025 21:56:46 +0200 Subject: [PATCH 40/66] feat(diff): enhance focus behavior and tab management after diff operations --- src/integrations/editor/DiffViewProvider.ts | 230 ++++++++++++++++---- 1 file changed, 193 insertions(+), 37 deletions(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index a5485f97cb..c94768d772 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -45,6 +45,7 @@ export class DiffViewProvider { private viewColumn: ViewColumn = -1 // ViewColumn.Active private userInteractionListeners: vscode.Disposable[] = [] private suppressInteractionFlag: boolean = false + private preDiffActiveEditor?: vscode.TextEditor // Store active editor before diff operation constructor(private cwd: string) {} @@ -185,6 +186,9 @@ export class DiffViewProvider { * @param viewColumn (Optional) The VSCode editor group to open the diff in. */ async open(relPath: string, viewColumn: ViewColumn): Promise { + // Store the pre-diff active editor for potential focus restoration + this.preDiffActiveEditor = vscode.window.activeTextEditor + this.viewColumn = viewColumn this.disableAutoFocusAfterUserInteraction() // Set the edit type based on the file existence @@ -253,6 +257,51 @@ export class DiffViewProvider { this.streamedLines = [] } + /** + * Prepares the optimal view column and placement for the diff view. + * For existing open files: Places diff beside the original tab in the same group. + * For new/unopened files: Places at the end of the currently active editor group. + */ + private async prepareDiffViewPlacement(absolutePath: string): Promise { + if (!this.documentWasOpen) { + return Promise.resolve() + } + // For existing files that are currently open, find the original tab + const originalTab = this.findTabForFile(absolutePath) + if (originalTab) { + // Find the tab group containing the original tab + const tabGroup = vscode.window.tabGroups.all.find((group) => group.tabs.some((tab) => tab === originalTab)) + + if (tabGroup) { + const viewColumn = this.viewColumn !== ViewColumn.Active ? tabGroup.viewColumn : this.viewColumn + // Ensure the original tab is active within its group to place diff beside it + await this.showTextDocumentSafe({ + uri: vscode.Uri.file(absolutePath), + options: { + viewColumn: viewColumn, + preserveFocus: true, + preview: false, + }, + }) + // Update viewColumn to match the original file's group + this.viewColumn = viewColumn + } + } + // For new files or unopened files, keep the original viewColumn (active group) + // No additional preparation needed as it will default to end of active group + } + + /** + * Finds the VS Code tab for a given file path. + */ + private findTabForFile(absolutePath: string): vscode.Tab | undefined { + return vscode.window.tabGroups.all + .flatMap((group) => group.tabs) + .find( + (tab) => tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath), + ) + } + /** * Opens a file editor and tracks it as opened by Roo if not already open. */ @@ -384,6 +433,9 @@ export class DiffViewProvider { await this.closeAllRooOpenedViews() + // Implement post-diff focus behavior + await this.handlePostDiffFocus() + // If no auto-close settings are enabled and the document was not open before, // open the file after the diff is complete. @@ -502,11 +554,98 @@ export class DiffViewProvider { await this.closeAllRooOpenedViews() } + // Implement post-diff focus behavior + await this.handlePostDiffFocus() + // Edit is done. this.resetWithListeners() } - private filterTabsToClose(tab: vscode.Tab, settings: DiffSettings): boolean { + /** + * Handles post-diff focus behavior. + * Currently defaults to focusing the edited file (Behavior A). + * Future implementation will support configurable focus behavior. + */ + private async handlePostDiffFocus(): Promise { + if (!this.relPath) { + return + } + + if (this.autoCloseAllRooTabs) { + // Focus on the pre-diff active tab + await this.focusOnPreDiffActiveTab() + return + } + // Focus on the edited file (temporary default) + await this.focusOnEditedFile() + } + + /** + * Focuses on the tab of the file that was just edited. + */ + private async focusOnEditedFile(): Promise { + if (!this.relPath) { + return + } + + try { + const absolutePath = path.resolve(this.cwd, this.relPath) + const fileUri = vscode.Uri.file(absolutePath) + + // Check if the file still exists as a tab + const editedFileTab = this.findTabForFile(absolutePath) + if (editedFileTab) { + // Find the tab group containing the edited file + const tabGroup = vscode.window.tabGroups.all.find((group) => + group.tabs.some((tab) => tab === editedFileTab), + ) + + if (tabGroup) { + // Make the edited file's tab active + await this.showTextDocumentSafe({ + uri: fileUri, + options: { + viewColumn: tabGroup.viewColumn, + preserveFocus: false, + preview: false, + }, + }) + } + } + } catch (error) { + console.error("Roo Debug: Error focusing on edited file:", error) + } + } + + /** + * Restores focus to the tab that was active before the diff operation. + * This method is prepared for future use when configurable focus behavior is implemented. + */ + private async focusOnPreDiffActiveTab(): Promise { + if (!this.preDiffActiveEditor || !this.preDiffActiveEditor.document) { + return + } + + try { + // Check if the pre-diff active editor is still valid and its document is still open + const isDocumentStillOpen = vscode.workspace.textDocuments.some( + (doc) => doc === this.preDiffActiveEditor!.document, + ) + + if (isDocumentStillOpen) { + // Restore focus to the pre-diff active editor + await vscode.window.showTextDocument(this.preDiffActiveEditor.document.uri, { + viewColumn: this.preDiffActiveEditor.viewColumn, + preserveFocus: false, + preview: false, + }) + } + } catch (error) { + console.error("Roo Debug: Error restoring focus to pre-diff active tab:", error) + } + } + + private tabToCloseFilter(tab: vscode.Tab, settings: DiffSettings): boolean { // Always close DiffView tabs opened by Roo if (tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) { return true @@ -622,7 +761,7 @@ export class DiffViewProvider { const closeOps = vscode.window.tabGroups.all .flatMap((tg) => tg.tabs) - .filter((tab) => this.filterTabsToClose(tab, settings)) + .filter((tab) => this.tabToCloseFilter(tab, settings)) .map(this.closeTab) await Promise.all(closeOps) @@ -640,7 +779,6 @@ export class DiffViewProvider { // right uri = the file path const rightUri = vscode.Uri.file(path.resolve(this.cwd, this.relPath)) - // Open new diff editor. return new Promise((resolve, reject) => { const fileName = path.basename(rightUri.fsPath) @@ -657,44 +795,61 @@ export class DiffViewProvider { } // set interaction flag to true to prevent autoFocus from being triggered this.suppressInteractionFlag = true - vscode.commands - .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) - .then(async () => { - // set interaction flag to false to allow autoFocus to be triggered - this.suppressInteractionFlag = false - - // Get the active text editor, which should be the diff editor opened by vscode.diff - const diffEditor = vscode.window.activeTextEditor - - // Ensure we have a valid editor and it's the one we expect (the right side of the diff) - if (!diffEditor || !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath)) { - reject(new Error("Failed to get diff editor after opening.")) - return - } + // Implement improved diff view placement logic + const previousEditor = vscode.window.activeTextEditor + this.prepareDiffViewPlacement(rightUri.fsPath).then(() => { + vscode.commands + .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) + .then(async () => { + // set interaction flag to false to allow autoFocus to be triggered + this.suppressInteractionFlag = false + + // Get the active text editor, which should be the diff editor opened by vscode.diff + const diffEditor = vscode.window.activeTextEditor + + // Ensure we have a valid editor and it's the one we expect (the right side of the diff) + if (!diffEditor || !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath)) { + reject(new Error("Failed to get diff editor after opening.")) + return + } - this.activeDiffEditor = diffEditor // Assign to activeDiffEditor + this.activeDiffEditor = diffEditor // Assign to activeDiffEditor - // Ensure rightUri is tracked even if not explicitly shown again - this.rooOpenedTabs.add(rightUri.toString()) + // Ensure rightUri is tracked even if not explicitly shown again + this.rooOpenedTabs.add(rightUri.toString()) - // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. - if (!settings.autoFocus) { - // Use dynamically read autoFocus - // Add a small delay to allow VS Code to potentially set focus first, - // then clear it. - await new Promise((resolve) => setTimeout(resolve, 50)) - const beginningOfDocument = new vscode.Position(0, 0) - diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) - } + // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. + if (!settings.autoFocus) { + // Use dynamically read autoFocus + // Add a small delay to allow VS Code to potentially set focus first, + // then clear it. + await new Promise((resolve) => setTimeout(resolve, 50)) + const beginningOfDocument = new vscode.Position(0, 0) + diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) + } - // Resolve the promise with the diff editor - resolve(diffEditor) - }) - // Removed the second .then block that called getEditorFromDiffTab - // This may happen on very slow machines ie project idx - setTimeout(() => { - reject(new Error("Failed to open diff editor, please try again...")) - }, 10_000) + // if this happens in a window different from the active one, we need to show the document + if (previousEditor) { + await this.showTextDocumentSafe({ + textDocument: previousEditor.document, + options: { + preview: false, + preserveFocus: false, + selection: previousEditor.selection, + viewColumn: previousEditor.viewColumn, + }, + }) + } + + // Resolve the promise with the diff editor + resolve(diffEditor) + }) + // Removed the second .then block that called getEditorFromDiffTab + // This may happen on very slow machines ie project idx + setTimeout(() => { + reject(new Error("Failed to open diff editor, please try again...")) + }, 10_000) + }) }) } @@ -768,6 +923,7 @@ export class DiffViewProvider { this.streamedLines = [] this.preDiagnostics = [] this.rooOpenedTabs.clear() + this.preDiffActiveEditor = undefined } resetWithListeners() { From bf81452e9359b2a485e4a20a91e53c684b8bae30 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 25 May 2025 22:08:32 +0200 Subject: [PATCH 41/66] feat(diff): implement focus behavior for the last tab in active group on diff view preparation --- src/integrations/editor/DiffViewProvider.ts | 30 ++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index c94768d772..c4c61c3ab5 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -264,7 +264,35 @@ export class DiffViewProvider { */ private async prepareDiffViewPlacement(absolutePath: string): Promise { if (!this.documentWasOpen) { - return Promise.resolve() + // focus the last tab in the active group + const activeGroup = vscode.window.tabGroups.activeTabGroup + if (!(activeGroup && activeGroup.tabs.length > 0)) { + return // No active group or no tabs in the active group, nothing to focus + } + const lastTab = activeGroup.tabs[activeGroup.tabs.length - 1] + if (!lastTab.input) { + return // No input for the last tab, nothing to focus + } + // TabInputText | TabInputCustom | TabInputWebview | TabInputNotebook have an URI, so we can focus it + if ( + !( + lastTab.input instanceof vscode.TabInputText || + lastTab.input instanceof vscode.TabInputCustom || + lastTab.input instanceof vscode.TabInputNotebook + ) + ) { + return // Last tab is not a text input, nothing to focus + } + await this.showTextDocumentSafe({ + uri: lastTab.input.uri, + options: { + viewColumn: activeGroup.viewColumn, + preserveFocus: true, + preview: false, + }, + }) + this.viewColumn = activeGroup.viewColumn // Set viewColumn to the active group + return } // For existing files that are currently open, find the original tab const originalTab = this.findTabForFile(absolutePath) From 8c48cb8f36f025cf5860b3328474b880239b833b Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Tue, 27 May 2025 17:59:36 +0200 Subject: [PATCH 42/66] feat(settings): add new options for diff view auto focus and tab management --- evals/packages/types/src/roo-code-defaults.ts | 3 +++ evals/packages/types/src/roo-code.ts | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/evals/packages/types/src/roo-code-defaults.ts b/evals/packages/types/src/roo-code-defaults.ts index a06e642fd5..3aafed3be6 100644 --- a/evals/packages/types/src/roo-code-defaults.ts +++ b/evals/packages/types/src/roo-code-defaults.ts @@ -45,6 +45,9 @@ export const rooCodeDefaults: RooCodeSettings = { terminalShellIntegrationDisabled: false, diffEnabled: true, + diffViewAutoFocus: false, + autoCloseRooTabs: true, + autoCloseAllRooTabs: true, fuzzyMatchThreshold: 1, enableCheckpoints: false, diff --git a/evals/packages/types/src/roo-code.ts b/evals/packages/types/src/roo-code.ts index b397d37b64..c8c617d4f4 100644 --- a/evals/packages/types/src/roo-code.ts +++ b/evals/packages/types/src/roo-code.ts @@ -1,4 +1,4 @@ -import { z } from "zod" +import { undefined, z } from "zod" import { Equals, Keys, AssertEqual } from "./utils.js" @@ -336,6 +336,9 @@ export type ProviderSettingsEntry = z.infer const genericProviderSettingsSchema = z.object({ includeMaxTokens: z.boolean().optional(), diffEnabled: z.boolean().optional(), + diffViewAutoFocus: z.boolean().optional(), + autoCloseRooTabs: z.boolean().optional(), + autoCloseAllRooTabs: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), @@ -701,6 +704,9 @@ const providerSettingsRecord: ProviderSettingsRecord = { includeMaxTokens: undefined, reasoningEffort: undefined, diffEnabled: undefined, + diffViewAutoFocus: undefined, + autoCloseRooTabs: undefined, + autoCloseAllRooTabs: undefined, fuzzyMatchThreshold: undefined, modelTemperature: undefined, rateLimitSeconds: undefined, @@ -780,6 +786,9 @@ export const globalSettingsSchema = z.object({ rateLimitSeconds: z.number().optional(), diffEnabled: z.boolean().optional(), + diffViewAutoFocus: z.boolean().optional(), + autoCloseRooTabs: z.boolean().optional(), + autoCloseAllRooTabs: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), @@ -858,6 +867,9 @@ const globalSettingsRecord: GlobalSettingsRecord = { rateLimitSeconds: undefined, diffEnabled: undefined, + diffViewAutoFocus: undefined, + autoCloseRooTabs: undefined, + autoCloseAllRooTabs: undefined, fuzzyMatchThreshold: undefined, experiments: undefined, From 43dc92fee9f053837b04437480d83ce2d600b085 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Tue, 27 May 2025 18:04:04 +0200 Subject: [PATCH 43/66] feat(settings): add options for diff view auto focus and tab management --- packages/types/src/global-settings.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index 10b7d6ab18..38dac7bbd3 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -80,6 +80,9 @@ export const globalSettingsSchema = z.object({ rateLimitSeconds: z.number().optional(), diffEnabled: z.boolean().optional(), + diffViewAutoFocus: z.boolean().optional(), + autoCloseRooTabs: z.boolean().optional(), + autoCloseAllRooTabs: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), experiments: experimentsSchema.optional(), @@ -164,6 +167,9 @@ export const GLOBAL_SETTINGS_KEYS = keysOf()([ "rateLimitSeconds", "diffEnabled", + "diffViewAutoFocus", + "autoCloseRooTabs", + "autoCloseAllRooTabs", "fuzzyMatchThreshold", "experiments", From 883f3e93f974ef0f90b9f53e186ab45bdd3dac76 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Tue, 27 May 2025 18:07:27 +0200 Subject: [PATCH 44/66] feat(settings): add options for diff view auto focus and tab management --- packages/types/src/provider-settings.ts | 6 ++++++ webview-ui/src/components/settings/ApiOptions.tsx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 7076361ea5..c4d637e61f 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -55,6 +55,9 @@ export type ProviderSettingsEntry = z.infer const baseProviderSettingsSchema = z.object({ includeMaxTokens: z.boolean().optional(), diffEnabled: z.boolean().optional(), + diffViewAutoFocus: z.boolean().optional(), + autoCloseRooTabs: z.boolean().optional(), + autoCloseAllRooTabs: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), @@ -338,6 +341,9 @@ export const PROVIDER_SETTINGS_KEYS = keysOf()([ // Generic "includeMaxTokens", "diffEnabled", + "diffViewAutoFocus", + "autoCloseRooTabs", + "autoCloseAllRooTabs", "fuzzyMatchThreshold", "modelTemperature", "rateLimitSeconds", diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index 84f77d8d70..a889d32795 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -464,7 +464,7 @@ const ApiOptions = ({ diffEnabled={apiConfiguration.diffEnabled} diffViewAutoFocus={apiConfiguration.diffViewAutoFocus} autoCloseRooTabs={apiConfiguration.autoCloseRooTabs} - autoCloseAllRooTabs={apiConfiguration.autoCloseAllRooTabs} // Pass new setting + autoCloseAllRooTabs={apiConfiguration.autoCloseAllRooTabs} fuzzyMatchThreshold={apiConfiguration.fuzzyMatchThreshold} onChange={(field, value) => setApiConfigurationField(field, value)} /> From e8b93c350326a9fe6d73b8bab8f3dedbf764e182 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 1 Jun 2025 01:21:10 +0200 Subject: [PATCH 45/66] feat(writeToFileTool): update diff view provider to use view column and reset with listeners --- .../tools/__tests__/writeToFileTool.test.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/core/tools/__tests__/writeToFileTool.test.ts b/src/core/tools/__tests__/writeToFileTool.test.ts index 021dd8903d..9602d3c82c 100644 --- a/src/core/tools/__tests__/writeToFileTool.test.ts +++ b/src/core/tools/__tests__/writeToFileTool.test.ts @@ -84,6 +84,8 @@ jest.mock("../../ignore/RooIgnoreController", () => ({ }, })) +const MOCK_VIEW_COLUMN = 1 + describe("writeToFileTool", () => { // Test data const testFilePath = "test/file.txt" @@ -141,6 +143,7 @@ describe("writeToFileTool", () => { finalContent: "final content", }), scrollToFirstDiff: jest.fn(), + resetWithListeners: jest.fn().mockResolvedValue(undefined), } mockCline.api = { getModel: jest.fn().mockReturnValue({ id: "claude-3" }), @@ -152,6 +155,11 @@ describe("writeToFileTool", () => { mockCline.ask = jest.fn().mockResolvedValue(undefined) mockCline.recordToolError = jest.fn() mockCline.sayAndCreateMissingParamError = jest.fn().mockResolvedValue("Missing param error") + mockCline.providerRef = { + deref: jest.fn().mockReturnValue({ + getViewColumn: jest.fn().mockReturnValue(MOCK_VIEW_COLUMN), + }), + } mockAskApproval = jest.fn().mockResolvedValue(true) mockHandleError = jest.fn().mockResolvedValue(undefined) @@ -211,7 +219,7 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { accessAllowed: true }) expect(mockCline.rooIgnoreController.validateAccess).toHaveBeenCalledWith(testFilePath) - expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath) + expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) }) }) @@ -286,7 +294,7 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { fileExists: false }) expect(mockCline.consecutiveMistakeCount).toBe(0) - expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath) + expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith(testContent, true) expect(mockAskApproval).toHaveBeenCalled() expect(mockCline.diffViewProvider.saveChanges).toHaveBeenCalled() @@ -327,7 +335,7 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { isPartial: true }) expect(mockCline.ask).toHaveBeenCalled() - expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath) + expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith(testContent, false) }) }) @@ -365,7 +373,7 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}) expect(mockHandleError).toHaveBeenCalledWith("writing file", expect.any(Error)) - expect(mockCline.diffViewProvider.reset).toHaveBeenCalled() + expect(mockCline.diffViewProvider.resetWithListeners).toHaveBeenCalled() }) it("handles partial streaming errors", async () => { @@ -374,7 +382,7 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { isPartial: true }) expect(mockHandleError).toHaveBeenCalledWith("writing file", expect.any(Error)) - expect(mockCline.diffViewProvider.reset).toHaveBeenCalled() + expect(mockCline.diffViewProvider.resetWithListeners).toHaveBeenCalled() }) }) }) From 2f9b748dc8de6d567f011d42f3539c98d1a3d6c4 Mon Sep 17 00:00:00 2001 From: Felix Anhalt <40368420+felixAnhalt@users.noreply.github.com> Date: Sat, 7 Jun 2025 02:15:29 +0200 Subject: [PATCH 46/66] Apply suggestions from code review Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com> --- src/core/webview/webviewMessageHandler.ts | 2 +- src/shared/ExtensionMessage.ts | 2 +- src/shared/WebviewMessage.ts | 2 +- .../src/components/settings/DiffSettingsControl.tsx | 9 +++------ webview-ui/src/components/settings/SettingsView.tsx | 4 ++-- webview-ui/src/context/ExtensionStateContext.tsx | 2 +- 6 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index d155cd5c28..81b0ddf276 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -68,7 +68,7 @@ export const webviewMessageHandler = async (provider: ClineProvider, message: We await updateGlobalState("autoCloseRooTabs", autoCloseRooTabs) await provider.postStateToWebview() break - case "autoCloseAllRooTabs": // Added new setting + case "autoCloseAllRooTabs": const autoCloseAllRooTabs = message.bool ?? false await provider.context.globalState.update("autoCloseAllRooTabs", autoCloseAllRooTabs) // Also update workspace settings diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 1ce27e34ce..aba6a1b0cc 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -167,7 +167,7 @@ export type ExtensionState = Pick< | "diffEnabled" | "diffViewAutoFocus" | "autoCloseRooTabs" - | "autoCloseAllRooTabs" // Added new setting + | "autoCloseAllRooTabs" | "fuzzyMatchThreshold" // | "experiments" // Optional in GlobalSettings, required here. | "language" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index b365ccc071..145d6f5cfa 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -14,7 +14,7 @@ export interface WebviewMessage { type: | "diffViewAutoFocus" | "autoCloseRooTabs" - | "autoCloseAllRooTabs" // Added new setting + | "autoCloseAllRooTabs" | "apiConfiguration" | "deleteMultipleTasksWithIds" | "currentApiConfigName" diff --git a/webview-ui/src/components/settings/DiffSettingsControl.tsx b/webview-ui/src/components/settings/DiffSettingsControl.tsx index 4d7d487b54..498ad4df68 100644 --- a/webview-ui/src/components/settings/DiffSettingsControl.tsx +++ b/webview-ui/src/components/settings/DiffSettingsControl.tsx @@ -30,9 +30,8 @@ interface DiffCheckAutoCloseControlProps { } interface DiffCheckAutoCloseAllControlProps { - // Added new component interface autoCloseAllRooTabs: boolean - disabled: boolean // Added disabled prop + disabled: boolean onChange: (e: any) => void } @@ -74,7 +73,6 @@ const DiffViewAutoCloseAllControl: React.FC = disabled, onChange, }) => { - // Added new component const { t } = useAppTranslation() return (
@@ -119,7 +117,7 @@ export const DiffSettingsControl: React.FC = ({ diffEnabled = true, diffViewAutoFocus = true, autoCloseRooTabs = false, - autoCloseAllRooTabs = false, // Added new setting + autoCloseAllRooTabs = false, fuzzyMatchThreshold = 1.0, onChange, }) => { @@ -158,7 +156,6 @@ export const DiffSettingsControl: React.FC = ({ ) const handleAutoCloseAllRooTabsChange = useCallback( - // Added new handler (e: any) => { onChange("autoCloseAllRooTabs", e.target.checked) }, @@ -190,7 +187,7 @@ export const DiffSettingsControl: React.FC = ({ autoCloseRooTabs={autoCloseRooTabs} onChange={handleAutoCloseRooTabsChange} /> - (({ onDone, t enableCheckpoints, diffViewAutoFocus, autoCloseRooTabs, - autoCloseAllRooTabs, // Added new setting + autoCloseAllRooTabs, diffEnabled, experiments, fuzzyMatchThreshold, @@ -288,7 +288,7 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) vscode.postMessage({ type: "diffViewAutoFocus", bool: diffViewAutoFocus }) vscode.postMessage({ type: "autoCloseRooTabs", bool: autoCloseRooTabs }) - vscode.postMessage({ type: "autoCloseAllRooTabs", bool: autoCloseAllRooTabs }) // Send new setting + vscode.postMessage({ type: "autoCloseAllRooTabs", bool: autoCloseAllRooTabs }) vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index 657b53ca9e..b495310b65 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -70,7 +70,7 @@ export interface ExtensionStateContextType extends ExtensionState { setDiffEnabled: (value: boolean) => void setDiffViewAutoFocus: (value: boolean) => void setAutoCloseRooTabs: (value: boolean) => void - setAutoCloseAllRooTabs: (value: boolean) => void // Added new setter + setAutoCloseAllRooTabs: (value: boolean) => void setEnableCheckpoints: (value: boolean) => void setBrowserViewportSize: (value: string) => void setFuzzyMatchThreshold: (value: number) => void From 0406afad15d68a977e92f56a206dcdb3b0497660 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 7 Jun 2025 02:27:52 +0200 Subject: [PATCH 47/66] fix(ClineProvider): use tabPanelId to ref tab panels --- src/core/webview/ClineProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 179b6fda2d..46072b0406 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1694,7 +1694,7 @@ export class ClineProvider return vscode.ViewColumn.Active } // If there are multiple windows, we need to check if the view is a WebviewPanel - const isViewPanel = this.view?.viewType === "roo-cline.TabPanelProvider" + const isViewPanel = this.view?.viewType === ClineProvider.tabPanelId if (!isViewPanel) { // If the view is not a WebviewPanel, return 1. 1 is the default view column of the editor. // Non default values can only be found in WebviewPanel. From cdab9aa99d29a64619fb261a1dc3fe81c0bffe83 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 7 Jun 2025 16:19:24 +0200 Subject: [PATCH 48/66] refactor(SettingsView, ExtensionStateContext): streamline state updates for diff settings --- .../src/components/settings/SettingsView.tsx | 31 +++---------------- .../src/context/ExtensionStateContext.tsx | 8 ++--- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 2f9e5c50b2..60e9117e77 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -137,10 +137,6 @@ const SettingsView = forwardRef(({ onDone, t browserToolEnabled, browserViewportSize, enableCheckpoints, - diffViewAutoFocus, - autoCloseRooTabs, - autoCloseAllRooTabs, - diffEnabled, experiments, fuzzyMatchThreshold, maxOpenTabsContext, @@ -215,25 +211,8 @@ const SettingsView = forwardRef(({ onDone, t return prevState } - const newState: ExtensionStateContextType = { - ...prevState, - apiConfiguration: { ...prevState.apiConfiguration, [field]: value }, - } - // Update the field in root state for sync - if (field === "diffEnabled") { - newState.diffEnabled = value as boolean // type is boolean - } else if (field === "diffViewAutoFocus") { - newState.diffViewAutoFocus = value as boolean // type is boolean - } else if (field === "autoCloseRooTabs") { - newState.autoCloseRooTabs = value as boolean // type is boolean - } else if (field === "autoCloseAllRooTabs") { - newState.autoCloseAllRooTabs = value as boolean // type is boolean - } else if (field === "fuzzyMatchThreshold") { - newState.fuzzyMatchThreshold = value as number // type is number - } - setChangeDetected(true) - return newState + return { ...prevState, apiConfiguration: { ...prevState.apiConfiguration, [field]: value } } }) }, [], @@ -285,10 +264,10 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "ttsEnabled", bool: ttsEnabled }) vscode.postMessage({ type: "ttsSpeed", value: ttsSpeed }) vscode.postMessage({ type: "soundVolume", value: soundVolume }) - vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) - vscode.postMessage({ type: "diffViewAutoFocus", bool: diffViewAutoFocus }) - vscode.postMessage({ type: "autoCloseRooTabs", bool: autoCloseRooTabs }) - vscode.postMessage({ type: "autoCloseAllRooTabs", bool: autoCloseAllRooTabs }) + vscode.postMessage({ type: "diffEnabled", bool: apiConfiguration.diffEnabled }) + vscode.postMessage({ type: "diffViewAutoFocus", bool: apiConfiguration.diffViewAutoFocus }) + vscode.postMessage({ type: "autoCloseRooTabs", bool: apiConfiguration.autoCloseRooTabs }) + vscode.postMessage({ type: "autoCloseAllRooTabs", bool: apiConfiguration.autoCloseAllRooTabs }) vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index b495310b65..429d5f8af9 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -345,10 +345,10 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode setSoundVolume: (value) => setState((prevState) => ({ ...prevState, soundVolume: value })), setTtsEnabled: (value) => setState((prevState) => ({ ...prevState, ttsEnabled: value })), setTtsSpeed: (value) => setState((prevState) => ({ ...prevState, ttsSpeed: value })), - setDiffEnabled: (value) => setState((prevState) => ({ ...prevState, diffEnabled: value })), - setDiffViewAutoFocus: (value) => setState((prevState) => ({ ...prevState, diffViewAutoFocus: value })), - setAutoCloseRooTabs: (value) => setState((prevState) => ({ ...prevState, autoCloseRooTabs: value })), - setAutoCloseAllRooTabs: (value) => setState((prevState) => ({ ...prevState, autoCloseAllRooTabs: value })), // Added new setter + setDiffEnabled: (value) => setApiConfiguration({ diffEnabled: value }), + setDiffViewAutoFocus: (value) => setApiConfiguration({ diffViewAutoFocus: value }), + setAutoCloseRooTabs: (value) => setApiConfiguration({ autoCloseRooTabs: value }), + setAutoCloseAllRooTabs: (value) => setApiConfiguration({ autoCloseAllRooTabs: value }), setEnableCheckpoints: (value) => setState((prevState) => ({ ...prevState, enableCheckpoints: value })), setBrowserViewportSize: (value: string) => setState((prevState) => ({ ...prevState, browserViewportSize: value })), From 1a32c82c6cdd22f41bdfd184d92b9bde9f0954f1 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 7 Jun 2025 17:00:36 +0200 Subject: [PATCH 49/66] chore(cleanup): rem random linter changes etc --- src/exports/roo-code.d.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/exports/roo-code.d.ts diff --git a/src/exports/roo-code.d.ts b/src/exports/roo-code.d.ts deleted file mode 100644 index e69de29bb2..0000000000 From 5f05ccef58b02e7447ca20b260edebf1afc55b47 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 7 Jun 2025 17:25:45 +0200 Subject: [PATCH 50/66] feat(UserInteractionProvider): implement user interaction handling for diff editor focus --- src/integrations/editor/DiffViewProvider.ts | 96 +++--------- .../editor/UserInteractionProvider.ts | 121 +++++++++++++++ .../editor/__tests__/DiffViewProvider.test.ts | 80 ++++++++++ .../__tests__/UserInteractionProvider.spec.ts | 146 ++++++++++++++++++ 4 files changed, 371 insertions(+), 72 deletions(-) create mode 100644 src/integrations/editor/UserInteractionProvider.ts create mode 100644 src/integrations/editor/__tests__/UserInteractionProvider.spec.ts diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index d233d5863d..d6219ee72a 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -15,6 +15,7 @@ import { Task } from "../../core/task/Task" import { DecorationController } from "./DecorationController" import { ClineProvider } from "../../core/webview/ClineProvider" +import { UserInteractionProvider } from "./UserInteractionProvider" export const DIFF_VIEW_URI_SCHEME = "cline-diff" @@ -49,11 +50,21 @@ export class DiffViewProvider { private autoCloseAllRooTabs: boolean = false // Added new setting // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined private viewColumn: ViewColumn = -1 // ViewColumn.Active - private userInteractionListeners: vscode.Disposable[] = [] + private userInteractionProvider: UserInteractionProvider private suppressInteractionFlag: boolean = false private preDiffActiveEditor?: vscode.TextEditor // Store active editor before diff operation - constructor(private cwd: string) {} + constructor(private cwd: string) { + this.userInteractionProvider = new UserInteractionProvider({ + onUserInteraction: () => { + this.preserveFocus = true + this.autoFocus = false + }, + getSuppressFlag: () => this.suppressInteractionFlag, + autoApproval: false, + autoFocus: true, + }) + } public async initialize() { const provider = ClineProvider.getVisibleInstance() @@ -110,80 +121,16 @@ export class DiffViewProvider { return null } - /** - * Resets the auto-focus listeners to prevent memory leaks. - * This is called when the diff editor is closed or when the user interacts with other editors. - */ - private resetAutoFocusListeners() { - this.userInteractionListeners.forEach((listener) => listener.dispose()) - this.userInteractionListeners = [] - } - /** * Disables auto-focus on the diff editor after user interaction. * This is to prevent the diff editor from stealing focus when the user interacts with other editors or tabs. */ public disableAutoFocusAfterUserInteraction() { - this.resetAutoFocusListeners() - // if auto approval is disabled or auto focus is disabled, we don't need to add listeners - if (!this.autoApproval || !this.autoFocus) { - return - } - // then add new listeners - const changeTextEditorSelectionListener = vscode.window.onDidChangeTextEditorSelection((_e) => { - // If the change was done programmatically, or if there is actually no editor or the user did not allow auto approval, we don't want to suppress focus - if (this.suppressInteractionFlag) { - // If the user is interacting with the diff editor, we don't want to suppress focus - // If the user is interacting with another editor, we want to suppress focus - return - } - // Consider this a "user interaction" - this.preserveFocus = true - this.autoFocus = false - // remove the listeners since we don't need them anymore - this.resetAutoFocusListeners() - }, this) - const changeActiveTextEditorListener = vscode.window.onDidChangeActiveTextEditor((editor) => { - // If the change was done programmatically, or if there is actually no editor or the user did not allow auto approval, we don't want to suppress focus - if (this.suppressInteractionFlag || !editor) { - // If the user is interacting with the diff editor, we don't want to suppress focus - // If the user is interacting with another editor, we want to suppress focus - return - } - // Consider this a "user interaction" - this.preserveFocus = true - this.autoFocus = false - // remove the listeners since we don't need them anymore - this.resetAutoFocusListeners() - }, this) - const changeTabListener = vscode.window.tabGroups.onDidChangeTabs((_e) => { - // Some tab was added/removed/changed - // If the change was done programmatically, or the user did not allow auto approval, we don't want to suppress focus - if (this.suppressInteractionFlag) { - return - } - this.preserveFocus = true - this.autoFocus = false - // remove the listeners since we don't need them anymore - this.resetAutoFocusListeners() - }, this) - const changeTabGroupListener = vscode.window.tabGroups.onDidChangeTabGroups((_e) => { - // Tab group layout changed (e.g., split view) - // If the change was done programmatically, or the user did not allow auto approval, we don't want to suppress focus - if (this.suppressInteractionFlag) { - return - } - this.preserveFocus = true - this.autoFocus = false - // remove the listeners since we don't need them anymore - this.resetAutoFocusListeners() - }, this) - this.userInteractionListeners.push( - changeTextEditorSelectionListener, - changeActiveTextEditorListener, - changeTabListener, - changeTabGroupListener, - ) + this.userInteractionProvider.updateOptions({ + autoApproval: this.autoApproval ?? false, + autoFocus: this.autoFocus ?? true, + }) + this.userInteractionProvider.enable() } /** @@ -196,6 +143,11 @@ export class DiffViewProvider { this.preDiffActiveEditor = vscode.window.activeTextEditor this.viewColumn = viewColumn + // Update the user interaction provider with current settings + this.userInteractionProvider.updateOptions({ + autoApproval: this.autoApproval ?? false, + autoFocus: this.autoFocus ?? true, + }) this.disableAutoFocusAfterUserInteraction() // Set the edit type based on the file existence this.relPath = relPath @@ -1040,6 +992,6 @@ export class DiffViewProvider { resetWithListeners() { this.reset() - this.resetAutoFocusListeners() + this.userInteractionProvider.dispose() } } diff --git a/src/integrations/editor/UserInteractionProvider.ts b/src/integrations/editor/UserInteractionProvider.ts new file mode 100644 index 0000000000..f2170574cf --- /dev/null +++ b/src/integrations/editor/UserInteractionProvider.ts @@ -0,0 +1,121 @@ +import * as vscode from "vscode" + +/** + * Options for configuring the UserInteractionProvider + */ +interface UserInteractionOptions { + /** + * Callback invoked when user interaction is detected + */ + onUserInteraction: () => void + /** + * Function to check if interaction should be suppressed + */ + getSuppressFlag: () => boolean + /** + * Whether auto approval is enabled + */ + autoApproval: boolean + /** + * Whether auto focus is enabled + */ + autoFocus: boolean +} + +/** + * Manages user interaction listeners for the diff view provider. + * Handles detection of user interactions with text editors, tabs, and tab groups + * to disable auto-focus behavior when appropriate. + */ +export class UserInteractionProvider { + private userInteractionListeners: vscode.Disposable[] = [] + private options: UserInteractionOptions + + constructor(options: UserInteractionOptions) { + this.options = options + } + + /** + * Updates the options for the provider + */ + updateOptions(options: Partial): void { + this.options = { ...this.options, ...options } + } + + /** + * Enables user interaction listeners to detect when auto-focus should be disabled. + * Only sets up listeners if auto approval and auto focus are both enabled. + */ + enable(): void { + this.resetListeners() + + // If auto approval is disabled or auto focus is disabled, we don't need to add listeners + if (!this.options.autoApproval || !this.options.autoFocus) { + return + } + + // Set up listeners for various user interactions + const changeTextEditorSelectionListener = vscode.window.onDidChangeTextEditorSelection((_e) => { + // If the change was done programmatically, we don't want to suppress focus + if (this.options.getSuppressFlag()) { + return + } + // Consider this a "user interaction" + this.options.onUserInteraction() + this.resetListeners() + }, this) + + const changeActiveTextEditorListener = vscode.window.onDidChangeActiveTextEditor((editor) => { + // If the change was done programmatically, or if there is no editor, we don't want to suppress focus + if (this.options.getSuppressFlag() || !editor) { + return + } + // Consider this a "user interaction" + this.options.onUserInteraction() + this.resetListeners() + }, this) + + const changeTabListener = vscode.window.tabGroups.onDidChangeTabs((_e) => { + // If the change was done programmatically, we don't want to suppress focus + if (this.options.getSuppressFlag()) { + return + } + // Consider this a "user interaction" + this.options.onUserInteraction() + this.resetListeners() + }, this) + + const changeTabGroupListener = vscode.window.tabGroups.onDidChangeTabGroups((_e) => { + // If the change was done programmatically, we don't want to suppress focus + if (this.options.getSuppressFlag()) { + return + } + // Consider this a "user interaction" + this.options.onUserInteraction() + this.resetListeners() + }, this) + + this.userInteractionListeners.push( + changeTextEditorSelectionListener, + changeActiveTextEditorListener, + changeTabListener, + changeTabGroupListener, + ) + } + + /** + * Resets (removes) all user interaction listeners to prevent memory leaks. + * This is called when the diff editor is closed or when user interaction is detected. + */ + private resetListeners(): void { + this.userInteractionListeners.forEach((listener) => listener.dispose()) + this.userInteractionListeners = [] + } + + /** + * Disposes of all listeners and cleans up resources. + */ + dispose(): void { + this.resetListeners() + } +} diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts index a5facefce5..0fb95b588a 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.test.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.test.ts @@ -163,4 +163,84 @@ describe("DiffViewProvider", () => { expect.objectContaining({ preserveFocus: true, preview: false, viewColumn: -1 }), ) }) + + it("should pass preserveFocus: false when autoFocus is true", async () => { + const mockConfig = { + get: jest.fn((key: string) => { + if (key === "diffViewAutoFocus") return true + if (key === "autoCloseRooTabs") return true + if (key === "autoCloseAllRooTabs") return false + return undefined + }), + } + ;(vscode.workspace.getConfiguration as any).mockReturnValue(mockConfig) + + const executeCommand = vscode.commands.executeCommand as any + executeCommand.mockResolvedValue(undefined) + + await provider.initialize() + + const promise = (provider as any).openDiffEditor() + + await promise.catch((error: any) => { + // This is expected to fail because the editor is not activated, we just want to test the command + console.error("Error:", error) + }) + + expect(executeCommand).toHaveBeenCalledWith( + "vscode.diff", + expect.anything(), + expect.anything(), + expect.anything(), + expect.objectContaining({ preserveFocus: false, preview: false, viewColumn: -1 }), + ) + }) + + it("should pass preserveFocus: true when autoFocus is false", async () => { + const mockConfig = { + get: jest.fn((key: string) => { + if (key === "diffViewAutoFocus") return false + if (key === "autoCloseRooTabs") return true + if (key === "autoCloseAllRooTabs") return false + return undefined + }), + } + ;(vscode.workspace.getConfiguration as any).mockReturnValue(mockConfig) + + const executeCommand = vscode.commands.executeCommand as any + executeCommand.mockResolvedValue(undefined) + + await provider.initialize() + + const promise = (provider as any).openDiffEditor() + + await promise.catch((error: any) => { + // This is expected to fail because the editor is not activated, we just want to test the command + console.error("Error:", error) + }) + + expect(executeCommand).toHaveBeenCalledWith( + "vscode.diff", + expect.anything(), + expect.anything(), + expect.anything(), + expect.objectContaining({ preserveFocus: true, preview: false, viewColumn: -1 }), + ) + }) + + it("should properly initialize UserInteractionProvider", () => { + expect(provider).toBeDefined() + expect((provider as any).userInteractionProvider).toBeDefined() + }) + + it("should update UserInteractionProvider options when disabling auto focus", async () => { + await provider.initialize() + + // Mock the provider's enable method to verify it's called + const enableSpy = jest.spyOn((provider as any).userInteractionProvider, "enable") + + provider.disableAutoFocusAfterUserInteraction() + + expect(enableSpy).toHaveBeenCalled() + }) }) diff --git a/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts b/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts new file mode 100644 index 0000000000..d3c6b0482c --- /dev/null +++ b/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts @@ -0,0 +1,146 @@ +import { describe, it, expect, beforeEach, vi } from "vitest" +import * as vscode from "vscode" +import { UserInteractionProvider } from "../UserInteractionProvider" + +vi.mock("vscode", () => ({ + window: { + tabGroups: { + onDidChangeTabs: vi.fn(), + onDidChangeTabGroups: vi.fn(), + }, + onDidChangeActiveTextEditor: vi.fn(), + onDidChangeTextEditorSelection: vi.fn(), + }, +})) + +describe("UserInteractionProvider", () => { + let provider: UserInteractionProvider + let mockOnUserInteraction: ReturnType + let mockGetSuppressFlag: ReturnType + let mockDisposable: { dispose: ReturnType } + + beforeEach(() => { + vi.clearAllMocks() + mockOnUserInteraction = vi.fn() + mockGetSuppressFlag = vi.fn().mockReturnValue(false) + mockDisposable = { dispose: vi.fn() } + + // Mock the event listeners to return disposables + ;(vscode.window.onDidChangeTextEditorSelection as any).mockReturnValue(mockDisposable) + ;(vscode.window.onDidChangeActiveTextEditor as any).mockReturnValue(mockDisposable) + ;(vscode.window.tabGroups.onDidChangeTabs as any).mockReturnValue(mockDisposable) + ;(vscode.window.tabGroups.onDidChangeTabGroups as any).mockReturnValue(mockDisposable) + + provider = new UserInteractionProvider({ + onUserInteraction: mockOnUserInteraction, + getSuppressFlag: mockGetSuppressFlag, + autoApproval: true, + autoFocus: true, + }) + }) + + it("should create provider with initial options", () => { + expect(provider).toBeDefined() + }) + + it("should set up listeners when enabled with autoApproval and autoFocus true", () => { + provider.enable() + + expect(vscode.window.onDidChangeTextEditorSelection).toHaveBeenCalled() + expect(vscode.window.onDidChangeActiveTextEditor).toHaveBeenCalled() + expect(vscode.window.tabGroups.onDidChangeTabs).toHaveBeenCalled() + expect(vscode.window.tabGroups.onDidChangeTabGroups).toHaveBeenCalled() + }) + + it("should not set up listeners when autoApproval is false", () => { + provider.updateOptions({ autoApproval: false }) + provider.enable() + + expect(vscode.window.onDidChangeTextEditorSelection).not.toHaveBeenCalled() + expect(vscode.window.onDidChangeActiveTextEditor).not.toHaveBeenCalled() + expect(vscode.window.tabGroups.onDidChangeTabs).not.toHaveBeenCalled() + expect(vscode.window.tabGroups.onDidChangeTabGroups).not.toHaveBeenCalled() + }) + + it("should not set up listeners when autoFocus is false", () => { + provider.updateOptions({ autoFocus: false }) + provider.enable() + + expect(vscode.window.onDidChangeTextEditorSelection).not.toHaveBeenCalled() + expect(vscode.window.onDidChangeActiveTextEditor).not.toHaveBeenCalled() + expect(vscode.window.tabGroups.onDidChangeTabs).not.toHaveBeenCalled() + expect(vscode.window.tabGroups.onDidChangeTabGroups).not.toHaveBeenCalled() + }) + + it("should call onUserInteraction when text editor selection changes", () => { + provider.enable() + + // Get the callback that was registered + const selectionChangeCallback = (vscode.window.onDidChangeTextEditorSelection as any).mock.calls[0][0] + + // Simulate the event + selectionChangeCallback({}) + + expect(mockOnUserInteraction).toHaveBeenCalled() + }) + + it("should not call onUserInteraction when suppress flag is true", () => { + mockGetSuppressFlag.mockReturnValue(true) + provider.enable() + + // Get the callback that was registered + const selectionChangeCallback = (vscode.window.onDidChangeTextEditorSelection as any).mock.calls[0][0] + + // Simulate the event + selectionChangeCallback({}) + + expect(mockOnUserInteraction).not.toHaveBeenCalled() + }) + + it("should call onUserInteraction when active text editor changes", () => { + provider.enable() + + // Get the callback that was registered + const activeEditorChangeCallback = (vscode.window.onDidChangeActiveTextEditor as any).mock.calls[0][0] + + // Simulate the event with a non-null editor + activeEditorChangeCallback({ document: { uri: "test" } }) + + expect(mockOnUserInteraction).toHaveBeenCalled() + }) + + it("should not call onUserInteraction when active editor is null", () => { + provider.enable() + + // Get the callback that was registered + const activeEditorChangeCallback = (vscode.window.onDidChangeActiveTextEditor as any).mock.calls[0][0] + + // Simulate the event with null editor + activeEditorChangeCallback(null) + + expect(mockOnUserInteraction).not.toHaveBeenCalled() + }) + + it("should dispose all listeners when dispose is called", () => { + provider.enable() + provider.dispose() + + expect(mockDisposable.dispose).toHaveBeenCalledTimes(4) // 4 listeners + }) + + it("should update options correctly", () => { + provider.updateOptions({ autoApproval: false, autoFocus: false }) + provider.enable() + + // Should not set up listeners with updated options + expect(vscode.window.onDidChangeTextEditorSelection).not.toHaveBeenCalled() + }) + + it("should reset listeners when enable is called multiple times", () => { + provider.enable() + expect(mockDisposable.dispose).toHaveBeenCalledTimes(0) + + provider.enable() + expect(mockDisposable.dispose).toHaveBeenCalledTimes(4) // Previous listeners disposed + }) +}) From 0e03f5f5308f47ec856731162e8b4159f856ea19 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 7 Jun 2025 19:16:31 +0200 Subject: [PATCH 51/66] feat(PostDiffViewBehaviorUtils): add utility for managing post-diff behavior and tab focus --- src/integrations/editor/DiffViewProvider.ts | 253 ++------------- .../editor/PostDiffViewBehaviorUtils.ts | 307 ++++++++++++++++++ .../PostDiffviewBehaviorUtils.spec.ts | 251 ++++++++++++++ ...pec.ts => UserInteractionProvider.test.ts} | 44 +-- 4 files changed, 610 insertions(+), 245 deletions(-) create mode 100644 src/integrations/editor/PostDiffViewBehaviorUtils.ts create mode 100644 src/integrations/editor/__tests__/PostDiffviewBehaviorUtils.spec.ts rename src/integrations/editor/__tests__/{UserInteractionProvider.spec.ts => UserInteractionProvider.test.ts} (78%) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index d6219ee72a..e6005daff3 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -16,6 +16,7 @@ import { Task } from "../../core/task/Task" import { DecorationController } from "./DecorationController" import { ClineProvider } from "../../core/webview/ClineProvider" import { UserInteractionProvider } from "./UserInteractionProvider" +import { PostDiffViewBehaviorUtils } from "./PostDiffViewBehaviorUtils" export const DIFF_VIEW_URI_SCHEME = "cline-diff" @@ -43,27 +44,36 @@ export class DiffViewProvider { private streamedLines: string[] = [] private preDiagnostics: [vscode.Uri, vscode.Diagnostic[]][] = [] private rooOpenedTabs: Set = new Set() - private preserveFocus: boolean | undefined = undefined private autoApproval: boolean | undefined = undefined private autoFocus: boolean | undefined = undefined - private autoCloseTabs: boolean = false private autoCloseAllRooTabs: boolean = false // Added new setting // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined private viewColumn: ViewColumn = -1 // ViewColumn.Active private userInteractionProvider: UserInteractionProvider private suppressInteractionFlag: boolean = false private preDiffActiveEditor?: vscode.TextEditor // Store active editor before diff operation + private postDiffBehaviorUtils: PostDiffViewBehaviorUtils constructor(private cwd: string) { this.userInteractionProvider = new UserInteractionProvider({ onUserInteraction: () => { - this.preserveFocus = true this.autoFocus = false }, getSuppressFlag: () => this.suppressInteractionFlag, autoApproval: false, autoFocus: true, }) + + // Initialize PostDiffviewBehaviorUtils with initial context + this.postDiffBehaviorUtils = new PostDiffViewBehaviorUtils({ + relPath: this.relPath, + editType: this.editType, + documentWasOpen: this.documentWasOpen, + cwd: this.cwd, + rooOpenedTabs: this.rooOpenedTabs, + preDiffActiveEditor: this.preDiffActiveEditor, + autoCloseAllRooTabs: this.autoCloseAllRooTabs, + }) } public async initialize() { @@ -79,11 +89,14 @@ export class DiffViewProvider { } const settings = await this._readDiffSettings() this.autoFocus = settings.autoFocus - this.autoCloseTabs = settings.autoCloseRooTabs this.autoCloseAllRooTabs = settings.autoCloseAllRooTabs - this.preserveFocus = this.autoApproval && !this.autoFocus // Track currently visible editors and active editor for focus restoration and tab cleanup this.rooOpenedTabs.clear() + + // Update PostDiffviewBehaviorUtils context with latest values + this.postDiffBehaviorUtils.updateContext({ + autoCloseAllRooTabs: this.autoCloseAllRooTabs, + }) } private async _readDiffSettings(): Promise { @@ -143,6 +156,14 @@ export class DiffViewProvider { this.preDiffActiveEditor = vscode.window.activeTextEditor this.viewColumn = viewColumn + + // Update PostDiffviewBehaviorUtils context with current state + this.postDiffBehaviorUtils.updateContext({ + relPath: relPath, + editType: this.editType, + documentWasOpen: this.documentWasOpen, + preDiffActiveEditor: this.preDiffActiveEditor, + }) // Update the user interaction provider with current settings this.userInteractionProvider.updateOptions({ autoApproval: this.autoApproval ?? false, @@ -203,6 +224,10 @@ export class DiffViewProvider { tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath), ).length > 0 + this.postDiffBehaviorUtils.updateContext({ + documentWasOpen: this.documentWasOpen, + }) + this.activeDiffEditor = await this.openDiffEditor() this.fadedOverlayController = new DecorationController("fadedOverlay", this.activeDiffEditor) this.activeLineController = new DecorationController("activeLine", this.activeDiffEditor) @@ -417,10 +442,10 @@ export class DiffViewProvider { } } - await this.closeAllRooOpenedViews() + await this.postDiffBehaviorUtils.closeAllRooOpenedViews(await this._readDiffSettings()) // Implement post-diff focus behavior - await this.handlePostDiffFocus() + await this.postDiffBehaviorUtils.handlePostDiffFocus() // If no auto-close settings are enabled and the document was not open before, // open the file after the diff is complete. @@ -583,7 +608,7 @@ export class DiffViewProvider { await updatedDocument.save() } - await this.closeAllRooOpenedViews() + await this.postDiffBehaviorUtils.closeAllRooOpenedViews(await this._readDiffSettings()) await fs.unlink(absolutePath) // Remove only the directories we created, in reverse order. @@ -615,222 +640,16 @@ export class DiffViewProvider { await this.showTextDocumentSafe({ uri: vscode.Uri.file(absolutePath), options: { preview: false } }) } - await this.closeAllRooOpenedViews() + await this.postDiffBehaviorUtils.closeAllRooOpenedViews(await this._readDiffSettings()) } // Implement post-diff focus behavior - await this.handlePostDiffFocus() + await this.postDiffBehaviorUtils.handlePostDiffFocus() // Edit is done. this.resetWithListeners() } - /** - * Handles post-diff focus behavior. - * Currently defaults to focusing the edited file (Behavior A). - * Future implementation will support configurable focus behavior. - */ - private async handlePostDiffFocus(): Promise { - if (!this.relPath) { - return - } - - if (this.autoCloseAllRooTabs) { - // Focus on the pre-diff active tab - await this.focusOnPreDiffActiveTab() - return - } - // Focus on the edited file (temporary default) - await this.focusOnEditedFile() - } - - /** - * Focuses on the tab of the file that was just edited. - */ - private async focusOnEditedFile(): Promise { - if (!this.relPath) { - return - } - - try { - const absolutePath = path.resolve(this.cwd, this.relPath) - const fileUri = vscode.Uri.file(absolutePath) - - // Check if the file still exists as a tab - const editedFileTab = this.findTabForFile(absolutePath) - if (editedFileTab) { - // Find the tab group containing the edited file - const tabGroup = vscode.window.tabGroups.all.find((group) => - group.tabs.some((tab) => tab === editedFileTab), - ) - - if (tabGroup) { - // Make the edited file's tab active - await this.showTextDocumentSafe({ - uri: fileUri, - options: { - viewColumn: tabGroup.viewColumn, - preserveFocus: false, - preview: false, - }, - }) - } - } - } catch (error) { - console.error("Roo Debug: Error focusing on edited file:", error) - } - } - - /** - * Restores focus to the tab that was active before the diff operation. - * This method is prepared for future use when configurable focus behavior is implemented. - */ - private async focusOnPreDiffActiveTab(): Promise { - if (!this.preDiffActiveEditor || !this.preDiffActiveEditor.document) { - return - } - - try { - // Check if the pre-diff active editor is still valid and its document is still open - const isDocumentStillOpen = vscode.workspace.textDocuments.some( - (doc) => doc === this.preDiffActiveEditor!.document, - ) - - if (isDocumentStillOpen) { - // Restore focus to the pre-diff active editor - await vscode.window.showTextDocument(this.preDiffActiveEditor.document.uri, { - viewColumn: this.preDiffActiveEditor.viewColumn, - preserveFocus: false, - preview: false, - }) - } - } catch (error) { - console.error("Roo Debug: Error restoring focus to pre-diff active tab:", error) - } - } - - private tabToCloseFilter(tab: vscode.Tab, settings: DiffSettings): boolean { - // Always close DiffView tabs opened by Roo - if (tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) { - return true - } - - let isRooOpenedTextTab = false - if (tab.input instanceof vscode.TabInputText) { - const currentTabUri = (tab.input as vscode.TabInputText).uri - for (const openedUriString of this.rooOpenedTabs) { - try { - const previouslyOpenedUri = vscode.Uri.parse(openedUriString, true) // true for strict parsing - if (currentTabUri.scheme === "file" && previouslyOpenedUri.scheme === "file") { - if (arePathsEqual(currentTabUri.fsPath, previouslyOpenedUri.fsPath)) { - isRooOpenedTextTab = true - break - } - } else { - if (currentTabUri.toString() === previouslyOpenedUri.toString()) { - isRooOpenedTextTab = true - break - } - } - } catch (e) { - // Log parsing error if necessary, or ignore if a URI in rooOpenedTabs is malformed - console.error(`Roo Debug: Error parsing URI from rooOpenedTabs: ${openedUriString}`, e) - } - } - } - - if (!isRooOpenedTextTab) { - return false // Not a text tab or not identified as opened by Roo - } - - // Haken 2 (settings.autoCloseAllRooTabs) - takes precedence - if (settings.autoCloseAllRooTabs) { - // This implies Haken 1 is also effectively on - return true // Close all Roo-opened text tabs - } - - // Only Haken 1 (settings.autoCloseRooTabs) is on, Haken 2 is off - if (settings.autoCloseRooTabs) { - const tabUriFsPath = (tab.input as vscode.TabInputText).uri.fsPath - const absolutePathDiffedFile = this.relPath ? path.resolve(this.cwd, this.relPath) : null - - // Guard against null absolutePathDiffedFile if relPath is somehow not set - if (!absolutePathDiffedFile) { - // If we don't know the main diffed file, but Haken 1 is on, - // it's safer to close any tab Roo opened to avoid leaving extras. - return true - } - - const isMainDiffedFileTab = arePathsEqual(tabUriFsPath, absolutePathDiffedFile) - - if (this.editType === "create" && isMainDiffedFileTab) { - return true // Case: New file, Haken 1 is on -> Close its tab. - } - - if (this.editType === "modify" && isMainDiffedFileTab) { - return !this.documentWasOpen - } - - // If the tab is for a file OTHER than the main diffedFile, but was opened by Roo - if (!isMainDiffedFileTab) { - // This covers scenarios where Roo might open auxiliary files (though less common for single diff). - // If Haken 1 is on, these should also be closed. - return true - } - } - return false // Default: do not close if no above condition met - } - - private async closeTab(tab: vscode.Tab) { - // If a tab has made it through the filter, it means one of the auto-close settings - // (autoCloseTabs or autoCloseAllRooTabs) is active and the conditions for closing - // this specific tab are met. Therefore, we should always bypass the dirty check. - // const bypassDirtyCheck = true; // This is implicitly true now. - - // Attempt to find the freshest reference to the tab before closing, - // as the original 'tab' object from the initial flatMap might be stale. - const tabInputToClose = tab.input - const freshTabToClose = vscode.window.tabGroups.all - .flatMap((group) => group.tabs) - .find((t) => t.input === tabInputToClose) - - if (freshTabToClose) { - try { - await vscode.window.tabGroups.close(freshTabToClose, true) // true to bypass dirty check implicitly - } catch (closeError) { - console.error(`Roo Debug CloseLoop: Error closing tab "${freshTabToClose.label}":`, closeError) - } - } else { - // This case should ideally not happen if the tab was in the filtered list. - // It might indicate the tab was closed by another means or its input changed. - console.warn( - `Roo Debug CloseLoop: Tab "${tab.label}" (input: ${JSON.stringify(tab.input)}) intended for closure was not found in the current tab list.`, - ) - // Fallback: Try to close the original tab reference if the fresh one isn't found, - // though this is less likely to succeed if it's genuinely stale. - try { - console.log(`Roo Debug CloseLoop: Attempting to close original (stale?) tab "${tab.label}"`) - await vscode.window.tabGroups.close(tab, true) - } catch (fallbackCloseError) { - console.error( - `Roo Debug CloseLoop: Error closing original tab reference for "${tab.label}":`, - fallbackCloseError, - ) - } - } - } - - private async closeAllRooOpenedViews() { - const settings = await this._readDiffSettings() // Dynamically read settings - - const closeOps = vscode.window.tabGroups.all - .flatMap((tg) => tg.tabs) - .filter((tab) => this.tabToCloseFilter(tab, settings)) - .map(this.closeTab) - - await Promise.all(closeOps) - } - /** * Opens the diff editor, optionally in a specific viewColumn. */ @@ -972,7 +791,7 @@ export class DiffViewProvider { // Ensure any diff views opened by this provider are closed to release // memory. try { - await this.closeAllRooOpenedViews() + await this.postDiffBehaviorUtils.closeAllRooOpenedViews(await this._readDiffSettings()) } catch (error) { console.error("Error closing diff views", error) } diff --git a/src/integrations/editor/PostDiffViewBehaviorUtils.ts b/src/integrations/editor/PostDiffViewBehaviorUtils.ts new file mode 100644 index 0000000000..9f5b01fc39 --- /dev/null +++ b/src/integrations/editor/PostDiffViewBehaviorUtils.ts @@ -0,0 +1,307 @@ +import * as vscode from "vscode" +import * as path from "path" +import { arePathsEqual } from "../../utils/path" +import { DIFF_VIEW_URI_SCHEME } from "./DiffViewProvider" + +/** + * Interface for diff settings used by PostDiffviewBehaviorUtils + */ +interface DiffSettings { + autoFocus: boolean + autoCloseRooTabs: boolean + autoCloseAllRooTabs: boolean +} + +/** + * Context object containing the state needed for post-diff behavior + */ +interface PostDiffContext { + relPath?: string + editType?: "create" | "modify" + documentWasOpen: boolean + cwd: string + rooOpenedTabs: Set + preDiffActiveEditor?: vscode.TextEditor + autoCloseAllRooTabs: boolean +} + +/** + * Utility class for handling post-diff behavior including tab management and focus restoration. + * This class encapsulates all logic related to what happens after a diff operation is completed. + */ +export class PostDiffViewBehaviorUtils { + private context: PostDiffContext + + constructor(context: PostDiffContext) { + this.context = context + } + + /** + * Updates the context with new values + * @param updates Partial context updates + */ + public updateContext(updates: Partial): void { + this.context = { ...this.context, ...updates } + } + + /** + * Handles post-diff focus behavior. + * Currently defaults to focusing the edited file (Behavior A). + * Future implementation will support configurable focus behavior. + */ + public async handlePostDiffFocus(): Promise { + if (!this.context.relPath) { + return + } + + if (this.context.autoCloseAllRooTabs) { + // Focus on the pre-diff active tab + await this.focusOnPreDiffActiveTab() + return + } + // Focus on the edited file (temporary default) + await this.focusOnEditedFile() + } + + /** + * Focuses on the tab of the file that was just edited. + */ + public async focusOnEditedFile(): Promise { + if (!this.context.relPath) { + return + } + + try { + const absolutePath = path.resolve(this.context.cwd, this.context.relPath) + const fileUri = vscode.Uri.file(absolutePath) + + // Check if the file still exists as a tab + const editedFileTab = this.findTabForFile(absolutePath) + if (editedFileTab) { + // Find the tab group containing the edited file + const tabGroup = vscode.window.tabGroups.all.find((group) => + group.tabs.some((tab) => tab === editedFileTab), + ) + + if (tabGroup) { + // Make the edited file's tab active + await this.showTextDocumentSafe({ + uri: fileUri, + options: { + viewColumn: tabGroup.viewColumn, + preserveFocus: false, + preview: false, + }, + }) + } + } + } catch (error) { + console.error("Roo Debug: Error focusing on edited file:", error) + } + } + + /** + * Restores focus to the tab that was active before the diff operation. + * This method is prepared for future use when configurable focus behavior is implemented. + */ + public async focusOnPreDiffActiveTab(): Promise { + if (!this.context.preDiffActiveEditor || !this.context.preDiffActiveEditor.document) { + return + } + + try { + // Check if the pre-diff active editor is still valid and its document is still open + const isDocumentStillOpen = vscode.workspace.textDocuments.some( + (doc) => doc === this.context.preDiffActiveEditor!.document, + ) + + if (isDocumentStillOpen) { + // Restore focus to the pre-diff active editor + await vscode.window.showTextDocument(this.context.preDiffActiveEditor.document.uri, { + viewColumn: this.context.preDiffActiveEditor.viewColumn, + preserveFocus: false, + preview: false, + }) + } + } catch (error) { + console.error("Roo Debug: Error restoring focus to pre-diff active tab:", error) + } + } + + /** + * Determines whether a tab should be closed based on the diff settings and tab characteristics. + * @param tab The VSCode tab to evaluate + * @param settings The diff settings containing auto-close preferences + * @returns True if the tab should be closed, false otherwise + */ + public tabToCloseFilter(tab: vscode.Tab, settings: DiffSettings): boolean { + // Always close DiffView tabs opened by Roo + if (tab.input instanceof vscode.TabInputTextDiff && tab.input?.original?.scheme === DIFF_VIEW_URI_SCHEME) { + return true + } + + let isRooOpenedTextTab = false + if (tab.input instanceof vscode.TabInputText) { + const currentTabUri = (tab.input as vscode.TabInputText).uri + for (const openedUriString of this.context.rooOpenedTabs) { + try { + const previouslyOpenedUri = vscode.Uri.parse(openedUriString, true) // true for strict parsing + if (currentTabUri.scheme === "file" && previouslyOpenedUri.scheme === "file") { + if (arePathsEqual(currentTabUri.fsPath, previouslyOpenedUri.fsPath)) { + isRooOpenedTextTab = true + break + } + } else { + if (currentTabUri.toString() === previouslyOpenedUri.toString()) { + isRooOpenedTextTab = true + break + } + } + } catch (e) { + // Log parsing error if necessary, or ignore if a URI in rooOpenedTabs is malformed + console.error(`Roo Debug: Error parsing URI from rooOpenedTabs: ${openedUriString}`, e) + } + } + } + + if (!isRooOpenedTextTab) { + return false // Not a text tab or not identified as opened by Roo + } + + // Haken 2 (settings.autoCloseAllRooTabs) - takes precedence + if (settings.autoCloseAllRooTabs) { + // This implies Haken 1 is also effectively on + return true // Close all Roo-opened text tabs + } + + // Only Haken 1 (settings.autoCloseRooTabs) is on, Haken 2 is off + if (settings.autoCloseRooTabs) { + const tabUriFsPath = (tab.input as vscode.TabInputText).uri.fsPath + const absolutePathDiffedFile = this.context.relPath + ? path.resolve(this.context.cwd, this.context.relPath) + : null + + // Guard against null absolutePathDiffedFile if relPath is somehow not set + if (!absolutePathDiffedFile) { + // If we don't know the main diffed file, but Haken 1 is on, + // it's safer to close any tab Roo opened to avoid leaving extras. + return true + } + + const isMainDiffedFileTab = arePathsEqual(tabUriFsPath, absolutePathDiffedFile) + + if (this.context.editType === "create" && isMainDiffedFileTab) { + return true // Case: New file, Haken 1 is on -> Close its tab. + } + + if (this.context.editType === "modify" && isMainDiffedFileTab) { + return !this.context.documentWasOpen + } + + // If the tab is for a file OTHER than the main diffedFile, but was opened by Roo + if (!isMainDiffedFileTab) { + // This covers scenarios where Roo might open auxiliary files (though less common for single diff). + // If Haken 1 is on, these should also be closed. + return true + } + } + return false // Default: do not close if no above condition met + } + + /** + * Closes a single tab with error handling and fresh reference lookup. + * @param tab The tab to close + */ + public async closeTab(tab: vscode.Tab): Promise { + // If a tab has made it through the filter, it means one of the auto-close settings + // (autoCloseTabs or autoCloseAllRooTabs) is active and the conditions for closing + // this specific tab are met. Therefore, we should always bypass the dirty check. + // const bypassDirtyCheck = true; // This is implicitly true now. + + // Attempt to find the freshest reference to the tab before closing, + // as the original 'tab' object from the initial flatMap might be stale. + const tabInputToClose = tab.input + const freshTabToClose = vscode.window.tabGroups.all + .flatMap((group) => group.tabs) + .find((t) => t.input === tabInputToClose) + + if (freshTabToClose) { + try { + await vscode.window.tabGroups.close(freshTabToClose, true) // true to bypass dirty check implicitly + } catch (closeError) { + console.error(`Roo Debug CloseLoop: Error closing tab "${freshTabToClose.label}":`, closeError) + } + } else { + // This case should ideally not happen if the tab was in the filtered list. + // It might indicate the tab was closed by another means or its input changed. + console.warn( + `Roo Debug CloseLoop: Tab "${tab.label}" (input: ${JSON.stringify(tab.input)}) intended for closure was not found in the current tab list.`, + ) + // Fallback: Try to close the original tab reference if the fresh one isn't found, + // though this is less likely to succeed if it's genuinely stale. + try { + console.log(`Roo Debug CloseLoop: Attempting to close original (stale?) tab "${tab.label}"`) + await vscode.window.tabGroups.close(tab, true) + } catch (fallbackCloseError) { + console.error( + `Roo Debug CloseLoop: Error closing original tab reference for "${tab.label}":`, + fallbackCloseError, + ) + } + } + } + + /** + * Closes all tabs that were opened by Roo based on the current settings. + * @param settings The diff settings to use for determining which tabs to close + */ + public async closeAllRooOpenedViews(settings: DiffSettings): Promise { + const closeOps = vscode.window.tabGroups.all + .flatMap((tg) => tg.tabs) + .filter((tab) => this.tabToCloseFilter(tab, settings)) + .map((tab) => this.closeTab(tab)) + + await Promise.all(closeOps) + } + + /** + * Finds the VS Code tab for a given file path. + * @param absolutePath The absolute path to the file + * @returns The tab if found, undefined otherwise + */ + private findTabForFile(absolutePath: string): vscode.Tab | undefined { + return vscode.window.tabGroups.all + .flatMap((group) => group.tabs) + .find( + (tab) => tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath), + ) + } + + /** + * Safely shows a text document with error handling. + * @param params Parameters for showing the document + * @returns The text editor or null if failed + */ + private async showTextDocumentSafe({ + uri, + textDocument, + options, + }: { + uri?: vscode.Uri + textDocument?: vscode.TextDocument + options?: vscode.TextDocumentShowOptions + }): Promise { + // If the uri is already open, we want to focus it + if (uri) { + const editor = await vscode.window.showTextDocument(uri, options) + return editor + } + // If the textDocument is already open, we want to focus it + if (textDocument) { + const editor = await vscode.window.showTextDocument(textDocument, options) + return editor + } + // If the textDocument is not open and not able to be opened, we just return null + return null + } +} diff --git a/src/integrations/editor/__tests__/PostDiffviewBehaviorUtils.spec.ts b/src/integrations/editor/__tests__/PostDiffviewBehaviorUtils.spec.ts new file mode 100644 index 0000000000..0f38350a1f --- /dev/null +++ b/src/integrations/editor/__tests__/PostDiffviewBehaviorUtils.spec.ts @@ -0,0 +1,251 @@ +// npx vitest run src/integrations/editor/__tests__/PostDiffViewBehaviorUtils.spec.ts + +import { describe, it, expect, vi, beforeEach } from "vitest" +import * as vscode from "vscode" +import { PostDiffViewBehaviorUtils } from "../PostDiffViewBehaviorUtils" +import { DIFF_VIEW_URI_SCHEME } from "../DiffViewProvider" + +// Mock vscode +vi.mock("vscode", () => ({ + window: { + tabGroups: { + all: [], + close: vi.fn(), + }, + showTextDocument: vi.fn(), + createTextEditorDecorationType: vi.fn(), + }, + workspace: { + textDocuments: [], + }, + TabInputTextDiff: class TabInputTextDiff { + constructor( + public original?: { scheme?: string }, + public modified?: any, + ) {} + }, + TabInputText: class TabInputText { + constructor(public uri: any) {} + }, + Uri: { + parse: vi.fn(), + file: vi.fn(), + }, +})) + +// Mock path utilities +vi.mock("../../../utils/path", () => ({ + arePathsEqual: vi.fn((a: string, b: string) => a === b), +})) + +describe("PostDiffViewBehaviorUtils", () => { + let utils: PostDiffViewBehaviorUtils + let mockContext: any + + beforeEach(() => { + vi.clearAllMocks() + mockContext = { + relPath: "test.txt", + editType: "modify" as const, + documentWasOpen: false, + cwd: "/test", + rooOpenedTabs: new Set(), + preDiffActiveEditor: undefined, + autoCloseAllRooTabs: false, + } + utils = new PostDiffViewBehaviorUtils(mockContext) + }) + + describe("updateContext", () => { + it("should update context with new values", () => { + utils.updateContext({ + relPath: "new-file.txt", + editType: "create", + }) + + // Since context is private, we can test this indirectly by calling a method that uses it + expect(() => utils.handlePostDiffFocus()).not.toThrow() + }) + }) + + describe("tabToCloseFilter", () => { + it("should always close DiffView tabs opened by Roo", () => { + const mockTab = { + input: new (vscode as any).TabInputTextDiff({ scheme: DIFF_VIEW_URI_SCHEME }), + } as vscode.Tab + + const settings = { + autoFocus: true, + autoCloseRooTabs: false, + autoCloseAllRooTabs: false, + } + + const result = utils.tabToCloseFilter(mockTab, settings) + expect(result).toBe(true) + }) + + it("should not close non-Roo opened tabs", () => { + const mockTab = { + input: new (vscode as any).TabInputText({ toString: () => "file:///other.txt" }), + } as vscode.Tab + + const settings = { + autoFocus: true, + autoCloseRooTabs: false, + autoCloseAllRooTabs: false, + } + + const result = utils.tabToCloseFilter(mockTab, settings) + expect(result).toBe(false) + }) + + it("should close all Roo-opened tabs when autoCloseAllRooTabs is true", () => { + mockContext.rooOpenedTabs.add("file:///test.txt") + utils.updateContext(mockContext) + + const mockTab = { + input: new (vscode as any).TabInputText({ + scheme: "file", + fsPath: "/test/test.txt", + toString: () => "file:///test.txt", + }), + } as vscode.Tab + + const settings = { + autoFocus: true, + autoCloseRooTabs: false, + autoCloseAllRooTabs: true, + } + + // Mock Uri.parse to return the expected URI + ;(vscode.Uri.parse as any).mockReturnValue({ + scheme: "file", + fsPath: "/test/test.txt", + toString: () => "file:///test.txt", + }) + + const result = utils.tabToCloseFilter(mockTab, settings) + expect(result).toBe(true) + }) + }) + + describe("handlePostDiffFocus", () => { + it("should return early if no relPath is set", async () => { + mockContext.relPath = undefined + utils.updateContext(mockContext) + + // Should not throw and should complete quickly + await expect(utils.handlePostDiffFocus()).resolves.toBeUndefined() + }) + + it("should focus on pre-diff active tab when autoCloseAllRooTabs is true", async () => { + const mockEditor = { + document: { uri: { toString: () => "file:///test.txt" } }, + viewColumn: 1, + } + mockContext.autoCloseAllRooTabs = true + mockContext.preDiffActiveEditor = mockEditor + utils.updateContext(mockContext) + + // Mock workspace.textDocuments to include the document + ;(vscode.workspace as any).textDocuments = [mockEditor.document] + + const showTextDocumentSpy = vi.spyOn(vscode.window, "showTextDocument") + + await utils.handlePostDiffFocus() + + expect(showTextDocumentSpy).toHaveBeenCalledWith(mockEditor.document.uri, { + viewColumn: mockEditor.viewColumn, + preserveFocus: false, + preview: false, + }) + }) + }) + + describe("closeTab", () => { + it("should close a tab successfully", async () => { + const mockTab = { + input: {}, + label: "test.txt", + } as vscode.Tab + + const closeSpy = vi.spyOn(vscode.window.tabGroups, "close") + closeSpy.mockResolvedValue(true) + + // Mock tabGroups.all to return the same tab + ;(vscode.window.tabGroups as any).all = [ + { + tabs: [mockTab], + }, + ] + + await utils.closeTab(mockTab) + + expect(closeSpy).toHaveBeenCalledWith(mockTab, true) + }) + + it("should handle tab close errors gracefully", async () => { + const mockTab = { + input: {}, + label: "test.txt", + } as vscode.Tab + + const closeSpy = vi.spyOn(vscode.window.tabGroups, "close") + closeSpy.mockRejectedValue(new Error("Close failed")) + + // Mock tabGroups.all to return the same tab + ;(vscode.window.tabGroups as any).all = [ + { + tabs: [mockTab], + }, + ] + + const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {}) + + await utils.closeTab(mockTab) + + expect(consoleErrorSpy).toHaveBeenCalled() + consoleErrorSpy.mockRestore() + }) + }) + + describe("closeAllRooOpenedViews", () => { + it("should close all tabs that match the filter", async () => { + const mockTab1 = { + input: new (vscode as any).TabInputTextDiff({ scheme: DIFF_VIEW_URI_SCHEME }), + label: "diff-tab", + } as vscode.Tab + + const mockTab2 = { + input: new (vscode as any).TabInputText({ + scheme: "file", + fsPath: "/test/other.txt", + toString: () => "file:///other.txt", + }), + label: "other.txt", + } as vscode.Tab + + // Mock tabGroups.all + ;(vscode.window.tabGroups as any).all = [ + { + tabs: [mockTab1, mockTab2], + }, + ] + + const closeSpy = vi.spyOn(vscode.window.tabGroups, "close") + closeSpy.mockResolvedValue(true) + + const settings = { + autoFocus: true, + autoCloseRooTabs: false, + autoCloseAllRooTabs: false, + } + + await utils.closeAllRooOpenedViews(settings) + + // Should only close the diff tab + expect(closeSpy).toHaveBeenCalledTimes(1) + expect(closeSpy).toHaveBeenCalledWith(mockTab1, true) + }) + }) +}) diff --git a/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts b/src/integrations/editor/__tests__/UserInteractionProvider.test.ts similarity index 78% rename from src/integrations/editor/__tests__/UserInteractionProvider.spec.ts rename to src/integrations/editor/__tests__/UserInteractionProvider.test.ts index d3c6b0482c..4ebe896a99 100644 --- a/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts +++ b/src/integrations/editor/__tests__/UserInteractionProvider.test.ts @@ -1,29 +1,30 @@ -import { describe, it, expect, beforeEach, vi } from "vitest" +// npx jest src/integrations/editor/__tests__/UserInteractionProvider.test.ts + import * as vscode from "vscode" import { UserInteractionProvider } from "../UserInteractionProvider" -vi.mock("vscode", () => ({ +jest.mock("vscode", () => ({ window: { tabGroups: { - onDidChangeTabs: vi.fn(), - onDidChangeTabGroups: vi.fn(), + onDidChangeTabs: jest.fn(), + onDidChangeTabGroups: jest.fn(), }, - onDidChangeActiveTextEditor: vi.fn(), - onDidChangeTextEditorSelection: vi.fn(), + onDidChangeActiveTextEditor: jest.fn(), + onDidChangeTextEditorSelection: jest.fn(), }, })) describe("UserInteractionProvider", () => { let provider: UserInteractionProvider - let mockOnUserInteraction: ReturnType - let mockGetSuppressFlag: ReturnType - let mockDisposable: { dispose: ReturnType } + let mockOnUserInteraction: jest.Mock + let mockGetSuppressFlag: jest.Mock + let mockDisposable: { dispose: jest.Mock } beforeEach(() => { - vi.clearAllMocks() - mockOnUserInteraction = vi.fn() - mockGetSuppressFlag = vi.fn().mockReturnValue(false) - mockDisposable = { dispose: vi.fn() } + jest.clearAllMocks() + mockOnUserInteraction = jest.fn() + mockGetSuppressFlag = jest.fn().mockReturnValue(false) + mockDisposable = { dispose: jest.fn() } // Mock the event listeners to return disposables ;(vscode.window.onDidChangeTextEditorSelection as any).mockReturnValue(mockDisposable) @@ -75,10 +76,7 @@ describe("UserInteractionProvider", () => { it("should call onUserInteraction when text editor selection changes", () => { provider.enable() - // Get the callback that was registered const selectionChangeCallback = (vscode.window.onDidChangeTextEditorSelection as any).mock.calls[0][0] - - // Simulate the event selectionChangeCallback({}) expect(mockOnUserInteraction).toHaveBeenCalled() @@ -88,10 +86,7 @@ describe("UserInteractionProvider", () => { mockGetSuppressFlag.mockReturnValue(true) provider.enable() - // Get the callback that was registered const selectionChangeCallback = (vscode.window.onDidChangeTextEditorSelection as any).mock.calls[0][0] - - // Simulate the event selectionChangeCallback({}) expect(mockOnUserInteraction).not.toHaveBeenCalled() @@ -100,10 +95,7 @@ describe("UserInteractionProvider", () => { it("should call onUserInteraction when active text editor changes", () => { provider.enable() - // Get the callback that was registered const activeEditorChangeCallback = (vscode.window.onDidChangeActiveTextEditor as any).mock.calls[0][0] - - // Simulate the event with a non-null editor activeEditorChangeCallback({ document: { uri: "test" } }) expect(mockOnUserInteraction).toHaveBeenCalled() @@ -112,10 +104,7 @@ describe("UserInteractionProvider", () => { it("should not call onUserInteraction when active editor is null", () => { provider.enable() - // Get the callback that was registered const activeEditorChangeCallback = (vscode.window.onDidChangeActiveTextEditor as any).mock.calls[0][0] - - // Simulate the event with null editor activeEditorChangeCallback(null) expect(mockOnUserInteraction).not.toHaveBeenCalled() @@ -125,14 +114,13 @@ describe("UserInteractionProvider", () => { provider.enable() provider.dispose() - expect(mockDisposable.dispose).toHaveBeenCalledTimes(4) // 4 listeners + expect(mockDisposable.dispose).toHaveBeenCalledTimes(4) }) it("should update options correctly", () => { provider.updateOptions({ autoApproval: false, autoFocus: false }) provider.enable() - // Should not set up listeners with updated options expect(vscode.window.onDidChangeTextEditorSelection).not.toHaveBeenCalled() }) @@ -141,6 +129,6 @@ describe("UserInteractionProvider", () => { expect(mockDisposable.dispose).toHaveBeenCalledTimes(0) provider.enable() - expect(mockDisposable.dispose).toHaveBeenCalledTimes(4) // Previous listeners disposed + expect(mockDisposable.dispose).toHaveBeenCalledTimes(4) }) }) From 8069fe9f5a150cd210fc0c85460a8a3cb3e14fea Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Mon, 9 Jun 2025 18:31:46 +0200 Subject: [PATCH 52/66] chore(linting): rem out of scope linting --- packages/evals/README.md | 1 + .../sections/__tests__/objective.test.ts | 20 ++++------ .../__tests__/tool-use-guidelines.test.ts | 24 +++++------- src/core/prompts/sections/objective.ts | 12 ++---- src/core/prompts/sections/rules.ts | 10 +---- .../prompts/sections/tool-use-guidelines.ts | 37 ++++++------------- src/core/prompts/tools/attempt-completion.ts | 22 +++++------ .../settings/ExperimentalSettings.tsx | 5 +-- .../providers/__tests__/Bedrock.test.tsx | 16 ++------ webview-ui/vite.config.ts | 4 +- 10 files changed, 52 insertions(+), 99 deletions(-) diff --git a/packages/evals/README.md b/packages/evals/README.md index 2880145de3..bb202a7094 100644 --- a/packages/evals/README.md +++ b/packages/evals/README.md @@ -68,6 +68,7 @@ To stop an evals run early you can simply stop the "controller" container using Screenshot 2025-06-06 at 9 00 41 AM + ## Advanced Usage / Debugging The evals system runs VS Code headlessly in Docker containers for consistent, reproducible environments. While this design ensures reliability, it can make debugging more challenging. For debugging purposes, you can run the system locally on macOS, though this approach is less reliable due to hardware and environment variability. diff --git a/src/core/prompts/sections/__tests__/objective.test.ts b/src/core/prompts/sections/__tests__/objective.test.ts index 4265b3b0b1..3fc794f095 100644 --- a/src/core/prompts/sections/__tests__/objective.test.ts +++ b/src/core/prompts/sections/__tests__/objective.test.ts @@ -19,11 +19,9 @@ describe("getObjectiveSection", () => { describe("when codebase_search is available", () => { it("should include codebase_search first enforcement in thinking process", () => { const objective = getObjectiveSection(mockCodeIndexManagerEnabled) - + // Check that the objective includes the codebase_search enforcement - expect(objective).toContain( - "if the task involves understanding existing code or functionality, you MUST use the `codebase_search` tool", - ) + expect(objective).toContain("if the task involves understanding existing code or functionality, you MUST use the `codebase_search` tool") expect(objective).toContain("BEFORE using any other search or file exploration tools") }) }) @@ -31,7 +29,7 @@ describe("getObjectiveSection", () => { describe("when codebase_search is not available", () => { it("should not include codebase_search enforcement", () => { const objective = getObjectiveSection(mockCodeIndexManagerDisabled) - + // Check that the objective does not include the codebase_search enforcement expect(objective).not.toContain("you MUST use the `codebase_search` tool") expect(objective).not.toContain("BEFORE using any other search or file exploration tools") @@ -41,7 +39,7 @@ describe("getObjectiveSection", () => { it("should maintain proper structure regardless of codebase_search availability", () => { const objectiveEnabled = getObjectiveSection(mockCodeIndexManagerEnabled) const objectiveDisabled = getObjectiveSection(mockCodeIndexManagerDisabled) - + // Check that all numbered items are present in both cases for (const objective of [objectiveEnabled, objectiveDisabled]) { expect(objective).toContain("1. Analyze the user's task") @@ -55,7 +53,7 @@ describe("getObjectiveSection", () => { it("should include thinking tags guidance regardless of codebase_search availability", () => { const objectiveEnabled = getObjectiveSection(mockCodeIndexManagerEnabled) const objectiveDisabled = getObjectiveSection(mockCodeIndexManagerDisabled) - + // Check that thinking tags guidance is included in both cases for (const objective of [objectiveEnabled, objectiveDisabled]) { expect(objective).toContain(" tags") @@ -67,15 +65,13 @@ describe("getObjectiveSection", () => { it("should include parameter inference guidance regardless of codebase_search availability", () => { const objectiveEnabled = getObjectiveSection(mockCodeIndexManagerEnabled) const objectiveDisabled = getObjectiveSection(mockCodeIndexManagerDisabled) - + // Check parameter inference guidance in both cases for (const objective of [objectiveEnabled, objectiveDisabled]) { expect(objective).toContain("Go through each of the required parameters") - expect(objective).toContain( - "determine if the user has directly provided or given enough information to infer a value", - ) + expect(objective).toContain("determine if the user has directly provided or given enough information to infer a value") expect(objective).toContain("DO NOT invoke the tool (not even with fillers for the missing params)") expect(objective).toContain("ask_followup_question tool") } }) -}) +}) \ No newline at end of file diff --git a/src/core/prompts/sections/__tests__/tool-use-guidelines.test.ts b/src/core/prompts/sections/__tests__/tool-use-guidelines.test.ts index bfb266c58c..89a1eb9775 100644 --- a/src/core/prompts/sections/__tests__/tool-use-guidelines.test.ts +++ b/src/core/prompts/sections/__tests__/tool-use-guidelines.test.ts @@ -19,20 +19,16 @@ describe("getToolUseGuidelinesSection", () => { describe("when codebase_search is available", () => { it("should include codebase_search first enforcement", () => { const guidelines = getToolUseGuidelinesSection(mockCodeIndexManagerEnabled) - + // Check that the guidelines include the codebase_search enforcement - expect(guidelines).toContain( - "IMPORTANT: When starting a new task or when you need to understand existing code/functionality, you MUST use the `codebase_search` tool FIRST", - ) + expect(guidelines).toContain("IMPORTANT: When starting a new task or when you need to understand existing code/functionality, you MUST use the `codebase_search` tool FIRST") expect(guidelines).toContain("before any other search tools") - expect(guidelines).toContain( - "semantic search tool helps you find relevant code based on meaning rather than just keywords", - ) + expect(guidelines).toContain("semantic search tool helps you find relevant code based on meaning rather than just keywords") }) it("should maintain proper numbering with codebase_search", () => { const guidelines = getToolUseGuidelinesSection(mockCodeIndexManagerEnabled) - + // Check that all numbered items are present expect(guidelines).toContain("1. In tags") expect(guidelines).toContain("2. **IMPORTANT:") @@ -47,17 +43,15 @@ describe("getToolUseGuidelinesSection", () => { describe("when codebase_search is not available", () => { it("should not include codebase_search enforcement", () => { const guidelines = getToolUseGuidelinesSection(mockCodeIndexManagerDisabled) - + // Check that the guidelines do not include the codebase_search enforcement - expect(guidelines).not.toContain( - "IMPORTANT: When starting a new task or when you need to understand existing code/functionality, you MUST use the `codebase_search` tool FIRST", - ) + expect(guidelines).not.toContain("IMPORTANT: When starting a new task or when you need to understand existing code/functionality, you MUST use the `codebase_search` tool FIRST") expect(guidelines).not.toContain("semantic search tool helps you find relevant code based on meaning") }) it("should maintain proper numbering without codebase_search", () => { const guidelines = getToolUseGuidelinesSection(mockCodeIndexManagerDisabled) - + // Check that all numbered items are present with correct numbering expect(guidelines).toContain("1. In tags") expect(guidelines).toContain("2. Choose the most appropriate tool") @@ -71,7 +65,7 @@ describe("getToolUseGuidelinesSection", () => { it("should include iterative process guidelines regardless of codebase_search availability", () => { const guidelinesEnabled = getToolUseGuidelinesSection(mockCodeIndexManagerEnabled) const guidelinesDisabled = getToolUseGuidelinesSection(mockCodeIndexManagerDisabled) - + // Check that the iterative process section is included in both cases for (const guidelines of [guidelinesEnabled, guidelinesDisabled]) { expect(guidelines).toContain("It is crucial to proceed step-by-step") @@ -81,4 +75,4 @@ describe("getToolUseGuidelinesSection", () => { expect(guidelines).toContain("4. Ensure that each action builds correctly") } }) -}) +}) \ No newline at end of file diff --git a/src/core/prompts/sections/objective.ts b/src/core/prompts/sections/objective.ts index db37495086..1d1dfba880 100644 --- a/src/core/prompts/sections/objective.ts +++ b/src/core/prompts/sections/objective.ts @@ -1,12 +1,8 @@ import { EXPERIMENT_IDS, experiments } from "../../../shared/experiments" import { CodeIndexManager } from "../../../services/code-index/manager" -export function getObjectiveSection( - codeIndexManager?: CodeIndexManager, - experimentsConfig?: Record, -): string { - const isCodebaseSearchAvailable = - codeIndexManager && +export function getObjectiveSection(codeIndexManager?: CodeIndexManager, experimentsConfig?: Record): string { + const isCodebaseSearchAvailable = codeIndexManager && codeIndexManager.isFeatureEnabled && codeIndexManager.isFeatureConfigured && codeIndexManager.isInitialized @@ -14,10 +10,10 @@ export function getObjectiveSection( const codebaseSearchInstruction = isCodebaseSearchAvailable ? "First, if the task involves understanding existing code or functionality, you MUST use the `codebase_search` tool to search for relevant code based on the task's intent BEFORE using any other search or file exploration tools. Then, " : "First, " - + // Check if command execution is disabled via experiment const isCommandDisabled = experimentsConfig && experimentsConfig[EXPERIMENT_IDS.DISABLE_COMPLETION_COMMAND] - + const commandInstruction = !isCommandDisabled ? " You may also provide a CLI command to showcase the result of your task; this can be particularly useful for web development tasks, where you can run e.g. \`open index.html\` to show the website you've built." : "" diff --git a/src/core/prompts/sections/rules.ts b/src/core/prompts/sections/rules.ts index 3b2e992085..80eff2617f 100644 --- a/src/core/prompts/sections/rules.ts +++ b/src/core/prompts/sections/rules.ts @@ -45,14 +45,8 @@ function getEditingInstructions(diffStrategy?: DiffStrategy): string { return instructions.join("\n") } -export function getRulesSection( - cwd: string, - supportsComputerUse: boolean, - diffStrategy?: DiffStrategy, - codeIndexManager?: CodeIndexManager, -): string { - const isCodebaseSearchAvailable = - codeIndexManager && +export function getRulesSection(cwd: string, supportsComputerUse: boolean, diffStrategy?: DiffStrategy, codeIndexManager?: CodeIndexManager): string { + const isCodebaseSearchAvailable = codeIndexManager && codeIndexManager.isFeatureEnabled && codeIndexManager.isFeatureConfigured && codeIndexManager.isInitialized diff --git a/src/core/prompts/sections/tool-use-guidelines.ts b/src/core/prompts/sections/tool-use-guidelines.ts index 6f19b7e235..7ca8fb6251 100644 --- a/src/core/prompts/sections/tool-use-guidelines.ts +++ b/src/core/prompts/sections/tool-use-guidelines.ts @@ -1,53 +1,40 @@ import { CodeIndexManager } from "../../../services/code-index/manager" export function getToolUseGuidelinesSection(codeIndexManager?: CodeIndexManager): string { - const isCodebaseSearchAvailable = - codeIndexManager && + const isCodebaseSearchAvailable = codeIndexManager && codeIndexManager.isFeatureEnabled && codeIndexManager.isFeatureConfigured && codeIndexManager.isInitialized // Build guidelines array with automatic numbering - let itemNumber = 1 - const guidelinesList: string[] = [] + let itemNumber = 1; + const guidelinesList: string[] = []; // First guideline is always the same - guidelinesList.push( - `${itemNumber++}. In tags, assess what information you already have and what information you need to proceed with the task.`, - ) + guidelinesList.push(`${itemNumber++}. In tags, assess what information you already have and what information you need to proceed with the task.`); // Conditional codebase search guideline if (isCodebaseSearchAvailable) { - guidelinesList.push( - `${itemNumber++}. **IMPORTANT: When starting a new task or when you need to understand existing code/functionality, you MUST use the \`codebase_search\` tool FIRST before any other search tools.** This semantic search tool helps you find relevant code based on meaning rather than just keywords. Only after using codebase_search should you use other tools like search_files, list_files, or read_file for more specific exploration.`, - ) - guidelinesList.push( - `${itemNumber++}. Choose the most appropriate tool based on the task and the tool descriptions provided. Assess if you need additional information to proceed, and which of the available tools would be most effective for gathering this information. For example using the list_files tool is more effective than running a command like \`ls\` in the terminal. It's critical that you think about each available tool and use the one that best fits the current step in the task.`, - ) + guidelinesList.push(`${itemNumber++}. **IMPORTANT: When starting a new task or when you need to understand existing code/functionality, you MUST use the \`codebase_search\` tool FIRST before any other search tools.** This semantic search tool helps you find relevant code based on meaning rather than just keywords. Only after using codebase_search should you use other tools like search_files, list_files, or read_file for more specific exploration.`); + guidelinesList.push(`${itemNumber++}. Choose the most appropriate tool based on the task and the tool descriptions provided. Assess if you need additional information to proceed, and which of the available tools would be most effective for gathering this information. For example using the list_files tool is more effective than running a command like \`ls\` in the terminal. It's critical that you think about each available tool and use the one that best fits the current step in the task.`); } else { - guidelinesList.push( - `${itemNumber++}. Choose the most appropriate tool based on the task and the tool descriptions provided. Assess if you need additional information to proceed, and which of the available tools would be most effective for gathering this information. For example using the list_files tool is more effective than running a command like \`ls\` in the terminal. It's critical that you think about each available tool and use the one that best fits the current step in the task.`, - ) + guidelinesList.push(`${itemNumber++}. Choose the most appropriate tool based on the task and the tool descriptions provided. Assess if you need additional information to proceed, and which of the available tools would be most effective for gathering this information. For example using the list_files tool is more effective than running a command like \`ls\` in the terminal. It's critical that you think about each available tool and use the one that best fits the current step in the task.`); } // Remaining guidelines - guidelinesList.push( - `${itemNumber++}. If multiple actions are needed, use one tool at a time per message to accomplish the task iteratively, with each tool use being informed by the result of the previous tool use. Do not assume the outcome of any tool use. Each step must be informed by the previous step's result.`, - ) - guidelinesList.push(`${itemNumber++}. Formulate your tool use using the XML format specified for each tool.`) + guidelinesList.push(`${itemNumber++}. If multiple actions are needed, use one tool at a time per message to accomplish the task iteratively, with each tool use being informed by the result of the previous tool use. Do not assume the outcome of any tool use. Each step must be informed by the previous step's result.`); + guidelinesList.push(`${itemNumber++}. Formulate your tool use using the XML format specified for each tool.`); guidelinesList.push(`${itemNumber++}. After each tool use, the user will respond with the result of that tool use. This result will provide you with the necessary information to continue your task or make further decisions. This response may include: - Information about whether the tool succeeded or failed, along with any reasons for failure. - Linter errors that may have arisen due to the changes you made, which you'll need to address. - New terminal output in reaction to the changes, which you may need to consider or act upon. - - Any other relevant feedback or information related to the tool use.`) - guidelinesList.push( - `${itemNumber++}. ALWAYS wait for user confirmation after each tool use before proceeding. Never assume the success of a tool use without explicit confirmation of the result from the user.`, - ) + - Any other relevant feedback or information related to the tool use.`); + guidelinesList.push(`${itemNumber++}. ALWAYS wait for user confirmation after each tool use before proceeding. Never assume the success of a tool use without explicit confirmation of the result from the user.`); // Join guidelines and add the footer return `# Tool Use Guidelines -${guidelinesList.join("\n")} +${guidelinesList.join('\n')} It is crucial to proceed step-by-step, waiting for the user's message after each tool use before moving forward with the task. This approach allows you to: 1. Confirm the success of each step before proceeding. diff --git a/src/core/prompts/tools/attempt-completion.ts b/src/core/prompts/tools/attempt-completion.ts index ef0f3b9dfd..7bdb24ecf7 100644 --- a/src/core/prompts/tools/attempt-completion.ts +++ b/src/core/prompts/tools/attempt-completion.ts @@ -3,30 +3,29 @@ import { ToolArgs } from "./types" export function getAttemptCompletionDescription(args?: ToolArgs): string { // Check if command execution is disabled via experiment - const isCommandDisabled = - args?.experiments && experiments.isEnabled(args.experiments, EXPERIMENT_IDS.DISABLE_COMPLETION_COMMAND) + const isCommandDisabled = args?.experiments && experiments.isEnabled( + args.experiments, + EXPERIMENT_IDS.DISABLE_COMPLETION_COMMAND + ) const baseDescription = `## attempt_completion -Description: After each tool use, the user will respond with the result of that tool use, i.e. if it succeeded or failed, along with any reasons for failure. Once you've received the results of tool uses and can confirm that the task is complete, use this tool to present the result of your work to the user.${!isCommandDisabled ? " Optionally you may provide a CLI command to showcase the result of your work." : ""} The user may respond with feedback if they are not satisfied with the result, which you can use to make improvements and try again. +Description: After each tool use, the user will respond with the result of that tool use, i.e. if it succeeded or failed, along with any reasons for failure. Once you've received the results of tool uses and can confirm that the task is complete, use this tool to present the result of your work to the user.${!isCommandDisabled ? ' Optionally you may provide a CLI command to showcase the result of your work.' : ''} The user may respond with feedback if they are not satisfied with the result, which you can use to make improvements and try again. IMPORTANT NOTE: This tool CANNOT be used until you've confirmed from the user that any previous tool uses were successful. Failure to do so will result in code corruption and system failure. Before using this tool, you must ask yourself in tags if you've confirmed from the user that any previous tool uses were successful. If not, then DO NOT use this tool. Parameters: - result: (required) The result of the task. Formulate this result in a way that is final and does not require further input from the user. Don't end your result with questions or offers for further assistance.` - const commandParameter = !isCommandDisabled - ? ` -- command: (optional) A CLI command to execute to show a live demo of the result to the user. For example, use \`open index.html\` to display a created html website, or \`open localhost:3000\` to display a locally running development server. But DO NOT use commands like \`echo\` or \`cat\` that merely print text. This command should be valid for the current operating system. Ensure the command is properly formatted and does not contain any harmful instructions.` - : "" + const commandParameter = !isCommandDisabled ? ` +- command: (optional) A CLI command to execute to show a live demo of the result to the user. For example, use \`open index.html\` to display a created html website, or \`open localhost:3000\` to display a locally running development server. But DO NOT use commands like \`echo\` or \`cat\` that merely print text. This command should be valid for the current operating system. Ensure the command is properly formatted and does not contain any harmful instructions.` : '' const usage = ` Usage: Your final result description here -${!isCommandDisabled ? "\nCommand to demonstrate result (optional)" : ""} +${!isCommandDisabled ? '\nCommand to demonstrate result (optional)' : ''} ` - const example = !isCommandDisabled - ? ` + const example = !isCommandDisabled ? ` Example: Requesting to attempt completion with a result and command @@ -34,8 +33,7 @@ Example: Requesting to attempt completion with a result and command I've updated the CSS open index.html -` - : ` +` : ` Example: Requesting to attempt completion with a result diff --git a/webview-ui/src/components/settings/ExperimentalSettings.tsx b/webview-ui/src/components/settings/ExperimentalSettings.tsx index d8bc6691d5..5525a842b2 100644 --- a/webview-ui/src/components/settings/ExperimentalSettings.tsx +++ b/webview-ui/src/components/settings/ExperimentalSettings.tsx @@ -78,10 +78,7 @@ export const ExperimentalSettings = ({ experimentKey={config[0]} enabled={experiments[EXPERIMENT_IDS[config[0] as keyof typeof EXPERIMENT_IDS]] ?? false} onChange={(enabled) => - setExperimentEnabled( - EXPERIMENT_IDS[config[0] as keyof typeof EXPERIMENT_IDS], - enabled, - ) + setExperimentEnabled(EXPERIMENT_IDS[config[0] as keyof typeof EXPERIMENT_IDS], enabled) } /> ) diff --git a/webview-ui/src/components/settings/providers/__tests__/Bedrock.test.tsx b/webview-ui/src/components/settings/providers/__tests__/Bedrock.test.tsx index 556de4ded1..c1f177ac7b 100644 --- a/webview-ui/src/components/settings/providers/__tests__/Bedrock.test.tsx +++ b/webview-ui/src/components/settings/providers/__tests__/Bedrock.test.tsx @@ -353,9 +353,7 @@ describe("Bedrock Component", () => { ) // Verify checkbox is checked and endpoint is visible - expect( - screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint"), - ).toBeChecked() + expect(screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint")).toBeChecked() expect(screen.getByTestId("vpc-endpoint-input")).toBeInTheDocument() expect(screen.getByTestId("vpc-endpoint-input")).toHaveValue("https://custom-endpoint.aws.com") @@ -376,9 +374,7 @@ describe("Bedrock Component", () => { ) // Verify checkbox is unchecked and endpoint is not visible - expect( - screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint"), - ).not.toBeChecked() + expect(screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint")).not.toBeChecked() expect(screen.queryByTestId("vpc-endpoint-input")).not.toBeInTheDocument() }) @@ -398,9 +394,7 @@ describe("Bedrock Component", () => { ) // Verify initial state - expect( - screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint"), - ).not.toBeChecked() + expect(screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint")).not.toBeChecked() expect(screen.queryByTestId("vpc-endpoint-input")).not.toBeInTheDocument() // Update with new configuration @@ -418,9 +412,7 @@ describe("Bedrock Component", () => { ) // Verify updated state - expect( - screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint"), - ).toBeChecked() + expect(screen.getByTestId("checkbox-input-settings:providers.awsbedrockvpc.usecustomvpcendpoint")).toBeChecked() expect(screen.getByTestId("vpc-endpoint-input")).toBeInTheDocument() expect(screen.getByTestId("vpc-endpoint-input")).toHaveValue("https://updated-endpoint.aws.com") }) diff --git a/webview-ui/vite.config.ts b/webview-ui/vite.config.ts index 938ce5c4c6..6657d1e131 100644 --- a/webview-ui/vite.config.ts +++ b/webview-ui/vite.config.ts @@ -124,9 +124,7 @@ export default defineConfig(({ mode }) => { if (moduleInfo?.importers.some((importer) => importer.includes("node_modules/mermaid"))) { return "mermaid-bundle" } - if ( - moduleInfo?.dynamicImporters.some((importer) => importer.includes("node_modules/mermaid")) - ) { + if (moduleInfo?.dynamicImporters.some((importer) => importer.includes("node_modules/mermaid"))) { return "mermaid-bundle" } }, From 08749daafc7df529891e8998b09b74a75635cfbc Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Mon, 9 Jun 2025 18:33:45 +0200 Subject: [PATCH 53/66] chore(linting): rem out of scope linting --- webview-ui/src/components/history/TaskItemFooter.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/webview-ui/src/components/history/TaskItemFooter.tsx b/webview-ui/src/components/history/TaskItemFooter.tsx index 4dd71e9d60..b3e6e56371 100644 --- a/webview-ui/src/components/history/TaskItemFooter.tsx +++ b/webview-ui/src/components/history/TaskItemFooter.tsx @@ -42,7 +42,7 @@ const TaskItemFooter: React.FC = ({ item, variant, isSelect {formatLargeNumber(item.cacheReads || 0)} )} - + {/* Compact Tokens */} {(item.tokensIn || item.tokensOut) && ( <> @@ -74,15 +74,12 @@ const TaskItemFooter: React.FC = ({ item, variant, isSelect {formatLargeNumber(item.cacheWrites || 0)} - + {formatLargeNumber(item.cacheReads || 0)}
)} - + {/* Full Tokens */} {(item.tokensIn || item.tokensOut) && (
From f8455e36e5d1de6bf20bbb375f4ca134ccabe5fc Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Mon, 9 Jun 2025 21:04:11 +0200 Subject: [PATCH 54/66] chore(linting): rem out of scope linting --- locales/ca/README.md | 64 ++++++++++++++++++++--------------------- locales/de/README.md | 64 ++++++++++++++++++++--------------------- locales/es/README.md | 64 ++++++++++++++++++++--------------------- locales/fr/README.md | 64 ++++++++++++++++++++--------------------- locales/hi/README.md | 64 ++++++++++++++++++++--------------------- locales/it/README.md | 64 ++++++++++++++++++++--------------------- locales/ja/README.md | 64 ++++++++++++++++++++--------------------- locales/ko/README.md | 64 ++++++++++++++++++++--------------------- locales/nl/README.md | 64 ++++++++++++++++++++--------------------- locales/pl/README.md | 64 ++++++++++++++++++++--------------------- locales/pt-BR/README.md | 64 ++++++++++++++++++++--------------------- locales/ru/README.md | 64 ++++++++++++++++++++--------------------- locales/tr/README.md | 64 ++++++++++++++++++++--------------------- locales/vi/README.md | 64 ++++++++++++++++++++--------------------- locales/zh-CN/README.md | 64 ++++++++++++++++++++--------------------- locales/zh-TW/README.md | 64 ++++++++++++++++++++--------------------- 16 files changed, 496 insertions(+), 528 deletions(-) diff --git a/locales/ca/README.md b/locales/ca/README.md index 3454677fdb..5d544b041a 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -181,39 +181,37 @@ Ens encanten les contribucions de la comunitat! Comenceu llegint el nostre [CONT Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Llicència diff --git a/locales/de/README.md b/locales/de/README.md index 7984bcaed6..bea19619f4 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -181,39 +181,37 @@ Wir lieben Community-Beiträge! Beginnen Sie mit dem Lesen unserer [CONTRIBUTING Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Lizenz diff --git a/locales/es/README.md b/locales/es/README.md index 1fb172dafc..c5debe1d98 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -181,39 +181,37 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p ¡Gracias a todos nuestros colaboradores que han ayudado a mejorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licencia diff --git a/locales/fr/README.md b/locales/fr/README.md index 39d7d088a0..cbdd08b8a0 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -181,39 +181,37 @@ Nous adorons les contributions de la communauté ! Commencez par lire notre [CON Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licence diff --git a/locales/hi/README.md b/locales/hi/README.md index 8808975c63..beba0287ad 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -181,39 +181,37 @@ code --install-extension bin/roo-cline-.vsix Roo Code को बेहतर बनाने में मदद करने वाले हमारे सभी योगदानकर्ताओं को धन्यवाद! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## लाइसेंस diff --git a/locales/it/README.md b/locales/it/README.md index d6bc08f5fb..4c6753f49b 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -181,39 +181,37 @@ Amiamo i contributi della community! Inizia leggendo il nostro [CONTRIBUTING.md] Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licenza diff --git a/locales/ja/README.md b/locales/ja/README.md index f2cab6add4..ec08ed2fa3 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -181,39 +181,37 @@ code --install-extension bin/roo-cline-.vsix Roo Codeの改善に貢献してくれたすべての貢献者に感謝します! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## ライセンス diff --git a/locales/ko/README.md b/locales/ko/README.md index 387d8ce20b..175edffa8f 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -181,39 +181,37 @@ code --install-extension bin/roo-cline-.vsix Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사드립니다! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## 라이선스 diff --git a/locales/nl/README.md b/locales/nl/README.md index b5c0ef79e9..83650980bb 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -181,39 +181,37 @@ We houden van bijdragen uit de community! Begin met het lezen van onze [CONTRIBU Dank aan alle bijdragers die Roo Code beter hebben gemaakt! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licentie diff --git a/locales/pl/README.md b/locales/pl/README.md index b985df57d7..a5f76412b0 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -181,39 +181,37 @@ Kochamy wkład społeczności! Zacznij od przeczytania naszego [CONTRIBUTING.md] Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licencja diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index 98553e2eb5..afe54ba55b 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -181,39 +181,37 @@ Adoramos contribuições da comunidade! Comece lendo nosso [CONTRIBUTING.md](CON Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melhor! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licença diff --git a/locales/ru/README.md b/locales/ru/README.md index 9a1eb8a037..e21fb9f5b9 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -181,39 +181,37 @@ code --install-extension bin/roo-cline-.vsix Спасибо всем нашим участникам, которые помогли сделать Roo Code лучше! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Лицензия diff --git a/locales/tr/README.md b/locales/tr/README.md index f821dff58c..ce598b5684 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -181,39 +181,37 @@ Topluluk katkılarını seviyoruz! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasın Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara teşekkür ederiz! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Lisans diff --git a/locales/vi/README.md b/locales/vi/README.md index c4d618d94a..e50c61ff95 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -181,39 +181,37 @@ Chúng tôi rất hoan nghênh đóng góp từ cộng đồng! Bắt đầu b Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Giấy Phép diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index d254a7359a..ee0e458c98 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -181,39 +181,37 @@ code --install-extension bin/roo-cline-.vsix 感谢所有帮助改进 Roo Code 的贡献者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## 许可证 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index f244217ecc..c6184f498a 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -182,39 +182,37 @@ code --install-extension bin/roo-cline-.vsix 感謝所有幫助改進 Roo Code 的貢獻者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| a8trejo
a8trejo
| -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| hannesrudolph
hannesrudolph
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| d-oit
d-oit
| -| punkpeye
punkpeye
| jr
jr
| wkordalski
wkordalski
| elianiva
elianiva
| monotykamary
monotykamary
| cannuri
cannuri
| -| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| zhangtony239
zhangtony239
| sachasayan
sachasayan
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| qdaxb
qdaxb
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| Szpadel
Szpadel
| dtrugman
dtrugman
| -| diarmidmackenzie
diarmidmackenzie
| psv2522
psv2522
| Premshay
Premshay
| lupuletic
lupuletic
| aheizi
aheizi
| PeterDaveHello
PeterDaveHello
| -| olweraltuve
olweraltuve
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| kiwina
kiwina
| afshawnlotfi
afshawnlotfi
| -| pdecat
pdecat
| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| chrarnoldus
chrarnoldus
| Lunchb0ne
Lunchb0ne
| -| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| StevenTCramer
StevenTCramer
| -| sammcj
sammcj
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| -| taisukeoe
taisukeoe
| taylorwilsdon
taylorwilsdon
| NamesMT
NamesMT
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| ashktn
ashktn
| -| franekp
franekp
| yt3trees
yt3trees
| anton-otee
anton-otee
| benzntech
benzntech
| axkirillov
axkirillov
| bramburn
bramburn
| -| hassoncs
hassoncs
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| -| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| Ruakij
Ruakij
| ross
ross
| philfung
philfung
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kcwhite
kcwhite
| kinandan
kinandan
| kohii
kohii
| nevermorec
nevermorec
| dqroid
dqroid
| dairui1
dairui1
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| -| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| -| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| oprstchn
oprstchn
| nobu007
nobu007
| -| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| -| celestial-vault
celestial-vault
| linegel
linegel
| dbasclpy
dbasclpy
| Deon588
Deon588
| dleen
dleen
| devxpain
devxpain
| -| chadgauth
chadgauth
| olearycrew
olearycrew
| bogdan0083
bogdan0083
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| -| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| -| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| SannidhyaSah
SannidhyaSah
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| R-omk
R-omk
| Sarke
Sarke
| kvokka
kvokka
| -| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| -| shtse8
shtse8
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## 授權 From af3b00dd0241cea79679599903eef30db5a72ed2 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Mon, 9 Jun 2025 21:09:17 +0200 Subject: [PATCH 55/66] chore(linting): rem out of scope linting --- .../attemptCompletionTool.experiment.test.ts | 65 +++---------------- 1 file changed, 10 insertions(+), 55 deletions(-) diff --git a/src/core/tools/__tests__/attemptCompletionTool.experiment.test.ts b/src/core/tools/__tests__/attemptCompletionTool.experiment.test.ts index dad79b712b..6e90b26751 100644 --- a/src/core/tools/__tests__/attemptCompletionTool.experiment.test.ts +++ b/src/core/tools/__tests__/attemptCompletionTool.experiment.test.ts @@ -94,18 +94,8 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => ) // When there's a lastMessage that's not a command ask, it should say completion_result first - expect(mockCline.say).toHaveBeenCalledWith( - "completion_result", - "Task completed successfully", - undefined, - false, - ) - expect(mockCline.emit).toHaveBeenCalledWith( - "taskCompleted", - mockCline.taskId, - expect.any(Object), - expect.any(Object), - ) + expect(mockCline.say).toHaveBeenCalledWith("completion_result", "Task completed successfully", undefined, false) + expect(mockCline.emit).toHaveBeenCalledWith("taskCompleted", mockCline.taskId, expect.any(Object), expect.any(Object)) expect(mockAskApproval).toHaveBeenCalledWith("command", "npm test") expect(mockExecuteCommand).toHaveBeenCalled() }) @@ -137,18 +127,8 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => ) // Should say completion_result and emit before asking for approval - expect(mockCline.say).toHaveBeenCalledWith( - "completion_result", - "Task completed successfully", - undefined, - false, - ) - expect(mockCline.emit).toHaveBeenCalledWith( - "taskCompleted", - mockCline.taskId, - expect.any(Object), - expect.any(Object), - ) + expect(mockCline.say).toHaveBeenCalledWith("completion_result", "Task completed successfully", undefined, false) + expect(mockCline.emit).toHaveBeenCalledWith("taskCompleted", mockCline.taskId, expect.any(Object), expect.any(Object)) expect(mockAskApproval).toHaveBeenCalledWith("command", "npm test") expect(mockExecuteCommand).not.toHaveBeenCalled() }) @@ -185,12 +165,7 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => mockAskFinishSubTaskApproval, ) - expect(mockCline.say).toHaveBeenCalledWith( - "completion_result", - "Task completed successfully", - undefined, - false, - ) + expect(mockCline.say).toHaveBeenCalledWith("completion_result", "Task completed successfully", undefined, false) expect(mockAskApproval).not.toHaveBeenCalled() expect(mockExecuteCommand).not.toHaveBeenCalled() }) @@ -215,18 +190,8 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => mockAskFinishSubTaskApproval, ) - expect(mockCline.say).toHaveBeenCalledWith( - "completion_result", - "Task completed successfully", - undefined, - false, - ) - expect(mockCline.emit).toHaveBeenCalledWith( - "taskCompleted", - mockCline.taskId, - expect.any(Object), - expect.any(Object), - ) + expect(mockCline.say).toHaveBeenCalledWith("completion_result", "Task completed successfully", undefined, false) + expect(mockCline.emit).toHaveBeenCalledWith("taskCompleted", mockCline.taskId, expect.any(Object), expect.any(Object)) expect(mockAskApproval).not.toHaveBeenCalled() }) }) @@ -258,12 +223,7 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => mockAskFinishSubTaskApproval, ) - expect(mockCline.say).toHaveBeenCalledWith( - "completion_result", - "Task completed successfully", - undefined, - false, - ) + expect(mockCline.say).toHaveBeenCalledWith("completion_result", "Task completed successfully", undefined, false) expect(mockAskApproval).not.toHaveBeenCalled() // Reset mocks @@ -287,12 +247,7 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => mockAskFinishSubTaskApproval, ) - expect(mockCline.say).toHaveBeenCalledWith( - "completion_result", - "Task completed successfully", - undefined, - false, - ) + expect(mockCline.say).toHaveBeenCalledWith("completion_result", "Task completed successfully", undefined, false) expect(mockAskApproval).not.toHaveBeenCalled() }) }) @@ -352,4 +307,4 @@ describe("attemptCompletionTool - DISABLE_COMPLETION_COMMAND experiment", () => expect(mockCline.say).not.toHaveBeenCalled() }) }) -}) +}) \ No newline at end of file From fae5f317a67d72f519f4a192f15818159233028b Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 28 Jun 2025 21:52:01 +0200 Subject: [PATCH 56/66] refactor(tests): update test mocks and improve diff view handling --- .../tools/__tests__/writeToFileTool.spec.ts | 3 +- src/integrations/editor/DiffViewProvider.ts | 154 ++++++---- .../editor/__tests__/DiffViewProvider.spec.ts | 271 +++++++++++++----- .../editor/__tests__/DiffViewProvider.test.ts | 0 ...est.ts => UserInteractionProvider.spec.ts} | 27 +- 5 files changed, 314 insertions(+), 141 deletions(-) delete mode 100644 src/integrations/editor/__tests__/DiffViewProvider.test.ts rename src/integrations/editor/__tests__/{UserInteractionProvider.test.ts => UserInteractionProvider.spec.ts} (88%) diff --git a/src/core/tools/__tests__/writeToFileTool.spec.ts b/src/core/tools/__tests__/writeToFileTool.spec.ts index 4d5978d06c..760e3f3e31 100644 --- a/src/core/tools/__tests__/writeToFileTool.spec.ts +++ b/src/core/tools/__tests__/writeToFileTool.spec.ts @@ -114,7 +114,6 @@ describe("writeToFileTool", () => { const mockCline: any = {} let mockAskApproval: ReturnType let mockHandleError: ReturnType - let mockPushToolResult: ReturnType let mockRemoveClosingTag: ReturnType let toolResult: ToolResponse | undefined @@ -170,7 +169,7 @@ describe("writeToFileTool", () => { } return "Tool result message" }), - resetWithListeners: jest.fn().mockResolvedValue(undefined), + resetWithListeners: vi.fn().mockResolvedValue(undefined), } mockCline.api = { getModel: vi.fn().mockReturnValue({ id: "claude-3" }), diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index f69358c100..5dde3c2185 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -528,6 +528,7 @@ export class DiffViewProvider { /** * Formats a standardized XML response for file write operations * + * @param task The current task context for sending user feedback * @param cwd Current working directory for path resolution * @param isNewFile Whether this is a new file or an existing file being modified * @returns Formatted message and say object for UI feedback @@ -670,6 +671,25 @@ export class DiffViewProvider { let timeoutId: NodeJS.Timeout | undefined const disposables: vscode.Disposable[] = [] + const cleanup = () => { + if (timeoutId) { + clearTimeout(timeoutId) + timeoutId = undefined + } + disposables.forEach((d) => d.dispose()) + disposables.length = 0 + } + + // Set timeout for the entire operation + timeoutId = setTimeout(() => { + cleanup() + reject( + new Error( + `Failed to open diff editor for ${rightUri.fsPath} within ${DIFF_EDITOR_TIMEOUT / 1000} seconds. The editor may be blocked or VS Code may be unresponsive.`, + ), + ) + }, DIFF_EDITOR_TIMEOUT) + const leftUri = vscode.Uri.parse(`${DIFF_VIEW_URI_SCHEME}:${fileName}`).with({ query: Buffer.from(this.originalContent ?? "").toString("base64"), }) @@ -683,58 +703,94 @@ export class DiffViewProvider { this.suppressInteractionFlag = true // Implement improved diff view placement logic const previousEditor = vscode.window.activeTextEditor + this.prepareDiffViewPlacement(rightUri.fsPath).then(() => { - vscode.commands - .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) - .then(async () => { - // set interaction flag to false to allow autoFocus to be triggered - this.suppressInteractionFlag = false - - // Get the active text editor, which should be the diff editor opened by vscode.diff - const diffEditor = vscode.window.activeTextEditor - - // Ensure we have a valid editor and it's the one we expect (the right side of the diff) - if (!diffEditor || !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath)) { - reject(new Error("Failed to get diff editor after opening.")) - return - } - - this.activeDiffEditor = diffEditor // Assign to activeDiffEditor - - // Ensure rightUri is tracked even if not explicitly shown again - this.rooOpenedTabs.add(rightUri.toString()) - - // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. - if (!settings.autoFocus) { - // Use dynamically read autoFocus - // Add a small delay to allow VS Code to potentially set focus first, - // then clear it. - await new Promise((resolve) => setTimeout(resolve, 50)) - const beginningOfDocument = new vscode.Position(0, 0) - diffEditor.selection = new vscode.Selection(beginningOfDocument, beginningOfDocument) - } - - // if this happens in a window different from the active one, we need to show the document - if (previousEditor) { - await this.showTextDocumentSafe({ - textDocument: previousEditor.document, - options: { - preview: false, - preserveFocus: false, - selection: previousEditor.selection, - viewColumn: previousEditor.viewColumn, + this.showTextDocumentSafe({ + uri: rightUri, + options: { + ...textDocumentShowOptions, + viewColumn: this.viewColumn, // Ensure we use the correct view column + }, + }).then( + () => { + vscode.commands + .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) + .then( + async () => { + // set interaction flag to false to allow autoFocus to be triggered + this.suppressInteractionFlag = false + + // Get the active text editor, which should be the diff editor opened by vscode.diff + const diffEditor = vscode.window.activeTextEditor + + // Ensure we have a valid editor and it's the one we expect (the right side of the diff) + if ( + !diffEditor || + !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath) + ) { + cleanup() + reject( + new Error( + `Failed to execute diff command for ${rightUri.fsPath}: No active editor found.`, + ), + ) + return + } + + this.activeDiffEditor = diffEditor // Assign to activeDiffEditor + + // Ensure rightUri is tracked even if not explicitly shown again + this.rooOpenedTabs.add(rightUri.toString()) + + // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. + if (!settings.autoFocus) { + // Use dynamically read autoFocus + // Add a small delay to allow VS Code to potentially set focus first, + // then clear it. + await new Promise((resolve) => setTimeout(resolve, 50)) + const beginningOfDocument = new vscode.Position(0, 0) + diffEditor.selection = new vscode.Selection( + beginningOfDocument, + beginningOfDocument, + ) + } + + // if this happens in a window different from the active one, we need to show the document + if (previousEditor) { + await this.showTextDocumentSafe({ + textDocument: previousEditor.document, + options: { + preview: false, + preserveFocus: false, + selection: previousEditor.selection, + viewColumn: previousEditor.viewColumn, + }, + }) + } + + cleanup() + resolve(diffEditor) + }, + (err) => { + cleanup() + reject( + new Error( + `Failed to execute diff command for ${rightUri.fsPath}: ${err.message}`, + ), + ) }, - }) - } - - // Resolve the promise with the diff editor - resolve(diffEditor) - }) - // Removed the second .then block that called getEditorFromDiffTab - // This may happen on very slow machines ie project idx - setTimeout(() => { + ) + }, + (err) => { + cleanup() + reject(new Error(`Failed to execute diff command for ${rightUri.fsPath}: ${err.message}`)) + }, + ) + + timeoutId = setTimeout(() => { + cleanup() reject(new Error("Failed to open diff editor, please try again...")) - }, 10_000) + }, DIFF_EDITOR_TIMEOUT) }) }) } diff --git a/src/integrations/editor/__tests__/DiffViewProvider.spec.ts b/src/integrations/editor/__tests__/DiffViewProvider.spec.ts index 44b3aaba2a..c372c588b0 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.spec.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.spec.ts @@ -1,6 +1,6 @@ -import { DiffViewProvider, DIFF_VIEW_URI_SCHEME, DIFF_VIEW_LABEL_CHANGES } from "../DiffViewProvider" +import { DIFF_VIEW_LABEL_CHANGES, DiffViewProvider } from "../DiffViewProvider" import * as vscode from "vscode" -import * as path from "path" +import { ViewColumn } from "vscode" // Mock fs/promises vi.mock("fs/promises", () => ({ @@ -28,16 +28,41 @@ vi.mock("vscode", () => ({ fs: { stat: vi.fn(), }, + // mock vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) + getConfiguration: vi.fn(() => ({ + get: vi.fn((key: string) => { + if (key === "diffViewAutoFocus") return true + if (key === "autoCloseRooTabs") return true + return undefined + }), + })), }, window: { createTextEditorDecorationType: vi.fn(), showTextDocument: vi.fn(), onDidChangeVisibleTextEditors: vi.fn(() => ({ dispose: vi.fn() })), + onDidChangeTextEditorSelection: vi.fn(() => ({ dispose: vi.fn() })), tabGroups: { all: [], close: vi.fn(), + onDidChangeTabs: vi.fn(() => ({ dispose: vi.fn() })), + onDidChangeTabGroups: vi.fn(() => ({ dispose: vi.fn() })), }, visibleTextEditors: [], + onDidChangeActiveTextEditor: vi.fn(), + activeTextEditor: { + document: { + uri: { fsPath: "/mock/cwd/test.md" }, + getText: vi.fn(), + lineCount: 10, + }, + selection: { + active: { line: 0, character: 0 }, + anchor: { line: 0, character: 0 }, + }, + edit: vi.fn().mockResolvedValue(true), + revealRange: vi.fn(), + }, }, commands: { executeCommand: vi.fn(), @@ -85,6 +110,21 @@ vi.mock("../DecorationController", () => ({ })), })) +// mock cline diffViewProvider +vi.mock("../../../core/webview/ClineProvider", () => ({ + __esModule: true, + ClineProvider: { + // This is the inner ClineProvider object/class + getVisibleInstance: vi.fn(() => ({ + getValue: vi.fn((key: string) => { + if (key === "autoApprovalEnabled") return true + if (key === "alwaysAllowWrite") return true + return undefined + }), + })), + }, +})) + describe("DiffViewProvider", () => { let diffViewProvider: DiffViewProvider const mockCwd = "/mock/cwd" @@ -100,10 +140,10 @@ describe("DiffViewProvider", () => { diffViewProvider = new DiffViewProvider(mockCwd) // Mock the necessary properties and methods - ;(diffViewProvider as any).relPath = "test.txt" + ;(diffViewProvider as any).relPath = "test.md" ;(diffViewProvider as any).activeDiffEditor = { document: { - uri: { fsPath: `${mockCwd}/test.txt` }, + uri: { fsPath: `${mockCwd}/test.md` }, getText: vi.fn(), lineCount: 10, }, @@ -176,7 +216,10 @@ describe("DiffViewProvider", () => { // Mock showTextDocument to track when it's called vi.mocked(vscode.window.showTextDocument).mockImplementation(async (uri, options) => { callOrder.push("showTextDocument") - expect(options).toEqual({ preview: false, viewColumn: vscode.ViewColumn.Active }) + if (Object.keys(uri).length > 0) { + return mockEditor as any + } + expect(options).toEqual({ preview: false, preserveFocus: false, viewColumn: vscode.ViewColumn.Active }) return mockEditor as any }) @@ -203,15 +246,15 @@ describe("DiffViewProvider", () => { ;(diffViewProvider as any).editType = "modify" // Execute open - await diffViewProvider.open("test.md") + await diffViewProvider.open("test.md", ViewColumn.Active) // Verify that showTextDocument was called before executeCommand - expect(callOrder).toEqual(["showTextDocument", "executeCommand"]) + expect(callOrder).toEqual(["showTextDocument", "executeCommand", "showTextDocument"]) // Verify that showTextDocument was called with preview: false expect(vscode.window.showTextDocument).toHaveBeenCalledWith( expect.objectContaining({ fsPath: `${mockCwd}/test.md` }), - { preview: false, viewColumn: vscode.ViewColumn.Active }, + { preview: false, preserveFocus: false, viewColumn: vscode.ViewColumn.Active }, ) // Verify that the diff command was executed @@ -220,7 +263,7 @@ describe("DiffViewProvider", () => { expect.any(Object), expect.any(Object), `test.md: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`, - { preserveFocus: true }, + { preserveFocus: false, preview: false, viewColumn: ViewColumn.Active }, ) }) @@ -238,93 +281,167 @@ describe("DiffViewProvider", () => { ;(diffViewProvider as any).editType = "modify" // Try to open and expect rejection - await expect(diffViewProvider.open("test.md")).rejects.toThrow( + await expect(diffViewProvider.open("test.md", ViewColumn.Active)).rejects.toThrow( "Failed to execute diff command for /mock/cwd/test.md: Cannot open file", ) }) }) - describe("closeAllDiffViews method", () => { - it("should close diff views including those identified by label", async () => { - // Mock tab groups with various types of tabs - const mockTabs = [ - // Normal diff view - { - input: { - constructor: { name: "TabInputTextDiff" }, - original: { scheme: DIFF_VIEW_URI_SCHEME }, - modified: { fsPath: "/test/file1.ts" }, - }, - label: `file1.ts: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`, - isDirty: false, + it("should properly initialize UserInteractionProvider", () => { + expect(diffViewProvider).toBeDefined() + expect((diffViewProvider as any).userInteractionProvider).toBeDefined() + }) + + it("should update UserInteractionProvider options when disabling auto focus", async () => { + await diffViewProvider.initialize() + + // Mock the diffViewProvider's enable method to verify it's called + const enableSpy = vi.spyOn((diffViewProvider as any).userInteractionProvider, "enable") + + diffViewProvider.disableAutoFocusAfterUserInteraction() + + expect(enableSpy).toHaveBeenCalled() + }) + + describe("preserve focus config", () => { + it("should pass preserveFocus: false when autoFocus is true", async () => { + const mockConfig = { + get: vi.fn((key: string) => { + if (key === "diffViewAutoFocus") return true + if (key === "autoCloseRooTabs") return true + if (key === "autoCloseAllRooTabs") return false + return undefined + }), + } + ;(vscode.workspace.getConfiguration as any).mockReturnValue(mockConfig) + + const mockEditor = { + document: { + uri: { fsPath: `${mockCwd}/test.md` }, + getText: vi.fn().mockReturnValue(""), + lineCount: 0, }, - // Diff view identified by label (for pre-opened files) - { - input: { - constructor: { name: "TabInputTextDiff" }, - original: { scheme: "file" }, // Different scheme due to pre-opening - modified: { fsPath: "/test/file2.md" }, - }, - label: `file2.md: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`, - isDirty: false, + selection: { + active: { line: 0, character: 0 }, + anchor: { line: 0, character: 0 }, }, - // Regular file tab (should not be closed) - { - input: { - constructor: { name: "TabInputText" }, - uri: { fsPath: "/test/file3.js" }, - }, - label: "file3.js", - isDirty: false, + edit: vi.fn().mockResolvedValue(true), + revealRange: vi.fn(), + } + + // Mock showTextDocument to track when it's called + vi.mocked(vscode.window.showTextDocument).mockImplementation(async (uri, options) => { + if (Object.keys(uri).length > 0) { + return mockEditor as any + } + expect(options).toEqual({ preview: false, preserveFocus: false, viewColumn: vscode.ViewColumn.Active }) + return mockEditor as any + }) + + // Mock executeCommand to track when it's called + vi.mocked(vscode.commands.executeCommand).mockImplementation(async (command) => { + expect(command).toBe("vscode.diff") + return undefined + }) + + // Mock workspace.onDidOpenTextDocument to trigger immediately + vi.mocked(vscode.workspace.onDidOpenTextDocument).mockImplementation((callback) => { + // Trigger the callback immediately with the document + setTimeout(() => { + callback({ uri: { fsPath: `${mockCwd}/test.md` } } as any) + }, 0) + return { dispose: vi.fn() } + }) + + const executeCommand = vscode.commands.executeCommand as any + executeCommand.mockResolvedValue(undefined) + + await diffViewProvider.initialize() + + const promise = (diffViewProvider as any).openDiffEditor() + + await promise.catch((error: any) => { + // This is expected to fail because the editor is not activated, we just want to test the command + console.error("Error:", error) + }) + + expect(executeCommand).toHaveBeenCalledWith( + "vscode.diff", + expect.anything(), + expect.anything(), + expect.anything(), + expect.objectContaining({ preserveFocus: false, preview: false, viewColumn: -1 }), + ) + }) + + it("should pass preserveFocus: true when autoFocus is false", async () => { + const mockConfig = { + get: vi.fn((key: string) => { + if (key === "diffViewAutoFocus") return false + if (key === "autoCloseRooTabs") return true + if (key === "autoCloseAllRooTabs") return false + return undefined + }), + } + ;(vscode.workspace.getConfiguration as any).mockReturnValue(mockConfig) + + const mockEditor = { + document: { + uri: { fsPath: `${mockCwd}/test.md` }, + getText: vi.fn().mockReturnValue(""), + lineCount: 0, }, - // Dirty diff view (should not be closed) - { - input: { - constructor: { name: "TabInputTextDiff" }, - original: { scheme: DIFF_VIEW_URI_SCHEME }, - modified: { fsPath: "/test/file4.ts" }, - }, - label: `file4.ts: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`, - isDirty: true, + selection: { + active: { line: 0, character: 0 }, + anchor: { line: 0, character: 0 }, }, - ] + edit: vi.fn().mockResolvedValue(true), + revealRange: vi.fn(), + } - // Make tabs appear as TabInputTextDiff instances - mockTabs.forEach((tab) => { - if (tab.input.constructor.name === "TabInputTextDiff") { - Object.setPrototypeOf(tab.input, vscode.TabInputTextDiff.prototype) + // Mock showTextDocument to track when it's called + vi.mocked(vscode.window.showTextDocument).mockImplementation(async (uri, options) => { + if (Object.keys(uri).length > 0) { + return mockEditor as any } + expect(options).toEqual({ preview: false, preserveFocus: false, viewColumn: vscode.ViewColumn.Active }) + return mockEditor as any }) - // Mock the tabGroups getter - Object.defineProperty(vscode.window.tabGroups, "all", { - get: () => [ - { - tabs: mockTabs as any, - }, - ], - configurable: true, + // Mock executeCommand to track when it's called + vi.mocked(vscode.commands.executeCommand).mockImplementation(async (command) => { + expect(command).toBe("vscode.diff") + return undefined }) - const closedTabs: any[] = [] - vi.mocked(vscode.window.tabGroups.close).mockImplementation((tab) => { - closedTabs.push(tab) - return Promise.resolve(true) + // Mock workspace.onDidOpenTextDocument to trigger immediately + vi.mocked(vscode.workspace.onDidOpenTextDocument).mockImplementation((callback) => { + // Trigger the callback immediately with the document + setTimeout(() => { + callback({ uri: { fsPath: `${mockCwd}/test.md` } } as any) + }, 0) + return { dispose: vi.fn() } }) - // Execute closeAllDiffViews - await (diffViewProvider as any).closeAllDiffViews() + const executeCommand = vscode.commands.executeCommand as any + executeCommand.mockResolvedValue(undefined) + + await diffViewProvider.initialize() - // Verify that only the appropriate tabs were closed - expect(closedTabs).toHaveLength(2) - expect(closedTabs[0].label).toBe(`file1.ts: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`) - expect(closedTabs[1].label).toBe(`file2.md: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`) + const promise = (diffViewProvider as any).openDiffEditor() - // Verify that the regular file and dirty diff were not closed - expect(closedTabs.find((t) => t.label === "file3.js")).toBeUndefined() - expect( - closedTabs.find((t) => t.label === `file4.ts: ${DIFF_VIEW_LABEL_CHANGES} (Editable)` && t.isDirty), - ).toBeUndefined() + await promise.catch((error: any) => { + // This is expected to fail because the editor is not activated, we just want to test the command + console.error("Error:", error) + }) + + expect(executeCommand).toHaveBeenCalledWith( + "vscode.diff", + expect.anything(), + expect.anything(), + expect.anything(), + expect.objectContaining({ preserveFocus: true, preview: false, viewColumn: -1 }), + ) }) }) }) diff --git a/src/integrations/editor/__tests__/DiffViewProvider.test.ts b/src/integrations/editor/__tests__/DiffViewProvider.test.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/integrations/editor/__tests__/UserInteractionProvider.test.ts b/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts similarity index 88% rename from src/integrations/editor/__tests__/UserInteractionProvider.test.ts rename to src/integrations/editor/__tests__/UserInteractionProvider.spec.ts index 4ebe896a99..f69997b0dc 100644 --- a/src/integrations/editor/__tests__/UserInteractionProvider.test.ts +++ b/src/integrations/editor/__tests__/UserInteractionProvider.spec.ts @@ -1,30 +1,31 @@ -// npx jest src/integrations/editor/__tests__/UserInteractionProvider.test.ts +// npx vi src/integrations/editor/__tests__/UserInteractionProvider.test.ts import * as vscode from "vscode" import { UserInteractionProvider } from "../UserInteractionProvider" +import { Mock } from "vitest" -jest.mock("vscode", () => ({ +vi.mock("vscode", () => ({ window: { tabGroups: { - onDidChangeTabs: jest.fn(), - onDidChangeTabGroups: jest.fn(), + onDidChangeTabs: vi.fn(), + onDidChangeTabGroups: vi.fn(), }, - onDidChangeActiveTextEditor: jest.fn(), - onDidChangeTextEditorSelection: jest.fn(), + onDidChangeActiveTextEditor: vi.fn(), + onDidChangeTextEditorSelection: vi.fn(), }, })) describe("UserInteractionProvider", () => { let provider: UserInteractionProvider - let mockOnUserInteraction: jest.Mock - let mockGetSuppressFlag: jest.Mock - let mockDisposable: { dispose: jest.Mock } + let mockOnUserInteraction: Mock + let mockGetSuppressFlag: Mock + let mockDisposable: { dispose: Mock } beforeEach(() => { - jest.clearAllMocks() - mockOnUserInteraction = jest.fn() - mockGetSuppressFlag = jest.fn().mockReturnValue(false) - mockDisposable = { dispose: jest.fn() } + vi.clearAllMocks() + mockOnUserInteraction = vi.fn() + mockGetSuppressFlag = vi.fn().mockReturnValue(false) + mockDisposable = { dispose: vi.fn() } // Mock the event listeners to return disposables ;(vscode.window.onDidChangeTextEditorSelection as any).mockReturnValue(mockDisposable) From 8c33c814f16bcbbe4041687b0db2a5aa4ec2b834 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 28 Jun 2025 22:00:59 +0200 Subject: [PATCH 57/66] chore(linting): rem linter again --- locales/ca/CODE_OF_CONDUCT.md | 13 +- locales/ca/CONTRIBUTING.md | 13 +- locales/ca/README.md | 82 ++- locales/de/CODE_OF_CONDUCT.md | 13 +- locales/de/CONTRIBUTING.md | 13 +- locales/de/README.md | 82 ++- locales/es/CODE_OF_CONDUCT.md | 13 +- locales/es/CONTRIBUTING.md | 13 +- locales/es/README.md | 82 ++- locales/fr/CODE_OF_CONDUCT.md | 13 +- locales/fr/CONTRIBUTING.md | 13 +- locales/fr/README.md | 82 ++- locales/hi/CODE_OF_CONDUCT.md | 13 +- locales/hi/CONTRIBUTING.md | 13 +- locales/hi/README.md | 82 ++- locales/it/CODE_OF_CONDUCT.md | 13 +- locales/it/CONTRIBUTING.md | 13 +- locales/it/README.md | 82 ++- locales/ja/CODE_OF_CONDUCT.md | 13 +- locales/ja/CONTRIBUTING.md | 13 +- locales/ja/README.md | 82 ++- locales/ko/CODE_OF_CONDUCT.md | 13 +- locales/ko/CONTRIBUTING.md | 13 +- locales/ko/README.md | 82 ++- locales/nl/CODE_OF_CONDUCT.md | 13 +- locales/nl/CONTRIBUTING.md | 13 +- locales/nl/README.md | 82 ++- locales/pl/CODE_OF_CONDUCT.md | 13 +- locales/pl/CONTRIBUTING.md | 13 +- locales/pl/README.md | 82 ++- locales/pt-BR/CODE_OF_CONDUCT.md | 13 +- locales/pt-BR/CONTRIBUTING.md | 13 +- locales/pt-BR/README.md | 82 ++- locales/ru/CODE_OF_CONDUCT.md | 13 +- locales/ru/CONTRIBUTING.md | 13 +- locales/ru/README.md | 82 ++- locales/tr/CODE_OF_CONDUCT.md | 13 +- locales/tr/CONTRIBUTING.md | 13 +- locales/tr/README.md | 82 ++- locales/vi/CODE_OF_CONDUCT.md | 13 +- locales/vi/CONTRIBUTING.md | 13 +- locales/vi/README.md | 82 ++- locales/zh-CN/CODE_OF_CONDUCT.md | 13 +- locales/zh-CN/CONTRIBUTING.md | 13 +- locales/zh-CN/README.md | 82 ++- locales/zh-TW/CODE_OF_CONDUCT.md | 13 +- locales/zh-TW/CONTRIBUTING.md | 13 +- locales/zh-TW/README.md | 82 ++- scripts/update-contributors.js | 10 +- src/api/providers/xai.ts | 21 +- src/services/mcp/McpHub.ts | 234 +++---- src/services/mcp/__tests__/McpHub.test.ts | 717 ++++++++++++++++++++++ 52 files changed, 1498 insertions(+), 1212 deletions(-) mode change 100644 => 100755 scripts/update-contributors.js create mode 100644 src/services/mcp/__tests__/McpHub.test.ts diff --git a/locales/ca/CODE_OF_CONDUCT.md b/locales/ca/CODE_OF_CONDUCT.md index 05033ff04a..0d57262818 100644 --- a/locales/ca/CODE_OF_CONDUCT.md +++ b/locales/ca/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • Català • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • Català • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Codi de Conducta del Pacte de Col·laboradors diff --git a/locales/ca/CONTRIBUTING.md b/locales/ca/CONTRIBUTING.md index 6c6459949d..09d8727954 100644 --- a/locales/ca/CONTRIBUTING.md +++ b/locales/ca/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • Català • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • Català • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Contribuir a Roo Code diff --git a/locales/ca/README.md b/locales/ca/README.md index 6d4c2c7779..5d544b041a 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • Català • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • Català • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Consulteu el [CHANGELOG](../../CHANGELOG.md) per a actualitzacions i correccions --- -## 🎉 Roo Code 3.21 Llançat +## 🎉 Roo Code 3.19 Llançat -Roo Code 3.21 aporta noves funcionalitats majors i millores basades en els vostres comentaris! +Roo Code 3.19 aporta noves i potents funcionalitats i millores basades en els vostres comentaris! -- **Llançament del Marketplace Roo** - El marketplace ja està en funcionament! El marketplace ja està en funcionament! Descobreix i instal·la modes i MCP més fàcilment que mai. -- **Models Gemini 2.5** - S'ha afegit suport per als nous models Gemini 2.5 Pro, Flash i Flash Lite. -- **Suport per a fitxers Excel i més** - S'ha afegit suport per a fitxers Excel (.xlsx) i nombroses correccions d'errors i millores! +- **Condensació intel·ligent de context habilitada per defecte** - Ara la condensació intel·ligent de context està activada automàticament per millorar el rendiment i reduir els costos. +- **Millores en la gestió de context** - Configuració millorada per gestionar la finestra de context i optimitzar les interaccions amb la IA. +- **Suport ampliat per a models** - Compatibilitat millorada amb diversos proveïdors d'IA i models més recents. --- @@ -181,43 +181,37 @@ Ens encanten les contribucions de la comunitat! Comenceu llegint el nostre [CONT Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Llicència diff --git a/locales/de/CODE_OF_CONDUCT.md b/locales/de/CODE_OF_CONDUCT.md index 84bbe9630c..b1fa6e3128 100644 --- a/locales/de/CODE_OF_CONDUCT.md +++ b/locales/de/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • Deutsch • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • Deutsch • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Verhaltenskodex für Mitwirkende diff --git a/locales/de/CONTRIBUTING.md b/locales/de/CONTRIBUTING.md index 4aa0279458..bb8d26561f 100644 --- a/locales/de/CONTRIBUTING.md +++ b/locales/de/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • Deutsch • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • Deutsch • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Beitrag zu Roo Code diff --git a/locales/de/README.md b/locales/de/README.md index cbb53e6691..bea19619f4 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • Deutsch • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • Deutsch • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Sehen Sie sich das [CHANGELOG](../../CHANGELOG.md) für detaillierte Updates und --- -## 🎉 Roo Code 3.21 veröffentlicht +## 🎉 Roo Code 3.19 veröffentlicht -Roo Code 3.21 bringt wichtige neue Funktionen und Verbesserungen basierend auf eurem Feedback! +Roo Code 3.19 bringt intelligente Kontextverwaltungsverbesserungen und eine verbesserte Benutzererfahrung! -- **Roo Marketplace Launch** - Der Marketplace ist jetzt live! Der Marketplace ist jetzt live! Entdecke und installiere Modi und MCPs einfacher als je zuvor. -- **Gemini 2.5 Modelle** - Unterstützung für neue Gemini 2.5 Pro, Flash und Flash Lite Modelle hinzugefügt. -- **Excel-Datei-Unterstützung & Mehr** - Excel (.xlsx) Datei-Unterstützung hinzugefügt und zahlreiche Fehlerbehebungen und Verbesserungen! +- **Intelligente Kontextkondensierung standardmäßig aktiviert** - Kontextkondensierung ist jetzt standardmäßig aktiviert mit konfigurierbaren Einstellungen für automatische Kondensierung. +- **Manueller Kondensierungsbutton** - Neuer Button im Task-Header ermöglicht es dir, die Kontextkondensierung jederzeit manuell auszulösen. +- **Erweiterte Kondensierungseinstellungen** - Feinabstimmung wann und wie automatische Kondensierung über das Kontext-Einstellungspanel erfolgt. --- @@ -181,43 +181,37 @@ Wir lieben Community-Beiträge! Beginnen Sie mit dem Lesen unserer [CONTRIBUTING Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Lizenz diff --git a/locales/es/CODE_OF_CONDUCT.md b/locales/es/CODE_OF_CONDUCT.md index 149fbdb779..e978484e35 100644 --- a/locales/es/CODE_OF_CONDUCT.md +++ b/locales/es/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • Español • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • Español • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Código de Conducta del Pacto de Colaboradores diff --git a/locales/es/CONTRIBUTING.md b/locales/es/CONTRIBUTING.md index a00d79559a..0b0bac01f9 100644 --- a/locales/es/CONTRIBUTING.md +++ b/locales/es/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • Español • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • Español • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Contribuir a Roo Code diff --git a/locales/es/README.md b/locales/es/README.md index e4bcb4df32..c5debe1d98 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • Español • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • Español • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Consulta el [CHANGELOG](../../CHANGELOG.md) para ver actualizaciones detalladas --- -## 🎉 Roo Code 3.21 Lanzado +## 🎉 Roo Code 3.19 Lanzado -¡Roo Code 3.21 trae importantes nuevas funciones y mejoras basadas en vuestros comentarios! +¡Roo Code 3.19 trae mejoras en la gestión inteligente de contexto y una experiencia de usuario mejorada! -- **Lanzamiento del Marketplace de Roo** - ¡El marketplace ya está en funcionamiento! ¡El marketplace ya está en funcionamiento! Descubre e instala modos y MCPs más fácilmente que nunca. -- **Modelos Gemini 2.5** - Se ha añadido soporte para los nuevos modelos Gemini 2.5 Pro, Flash y Flash Lite. -- **Soporte de Archivos Excel y Más** - ¡Se ha añadido soporte para archivos Excel (.xlsx) y numerosas correcciones de errores y mejoras! +- **Condensación inteligente de contexto habilitada por defecto** - La condensación de contexto ahora está habilitada por defecto con configuraciones ajustables para cuando ocurre la condensación automática. +- **Botón de condensación manual** - Nuevo botón en la cabecera de tareas que te permite activar manualmente la condensación de contexto en cualquier momento. +- **Configuraciones avanzadas de condensación** - Ajusta cuándo y cómo ocurre la condensación automática a través del panel de Configuraciones de Contexto. --- @@ -181,43 +181,37 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p ¡Gracias a todos nuestros colaboradores que han ayudado a mejorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licencia diff --git a/locales/fr/CODE_OF_CONDUCT.md b/locales/fr/CODE_OF_CONDUCT.md index 04df05a481..b872617481 100644 --- a/locales/fr/CODE_OF_CONDUCT.md +++ b/locales/fr/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • Français • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • Français • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Code de Conduite des Contributeurs diff --git a/locales/fr/CONTRIBUTING.md b/locales/fr/CONTRIBUTING.md index da703ef9f4..0e14cdcca1 100644 --- a/locales/fr/CONTRIBUTING.md +++ b/locales/fr/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • Français • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • Français • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Contribuer à Roo Code diff --git a/locales/fr/README.md b/locales/fr/README.md index c589e35b09..cbdd08b8a0 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • Français • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • Français • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Consultez le [CHANGELOG](../../CHANGELOG.md) pour des mises à jour détaillées --- -## 🎉 Roo Code 3.21 est sorti +## 🎉 Roo Code 3.19 est sorti -Roo Code 3.21 apporte de nouvelles fonctionnalités majeures et des améliorations basées sur vos retours ! +Roo Code 3.19 apporte des améliorations de gestion intelligente du contexte et une expérience utilisateur améliorée ! -- **Le marketplace est maintenant en ligne ! Le marketplace est maintenant en ligne !** Découvrez et installez des modes et des MCPs plus facilement que jamais. -- **Ajout du support pour les nouveaux modèles Gemini 2.5 Pro, Flash et Flash Lite.** -- **Support des Fichiers Excel et Plus !** - Support MCP amélioré, plus de contrôles Mermaid, support de réflexion dans Amazon Bedrock, et bien plus ! +- **Condensation intelligente du contexte activée par défaut** - La condensation du contexte est maintenant activée par défaut avec des paramètres configurables pour quand la condensation automatique se produit. +- **Bouton de condensation manuelle** - Nouveau bouton dans l'en-tête des tâches qui vous permet de déclencher manuellement la condensation du contexte à tout moment. +- **Paramètres de condensation avancés** - Ajustez quand et comment la condensation automatique se produit via le panneau Paramètres de Contexte. --- @@ -181,43 +181,37 @@ Nous adorons les contributions de la communauté ! Commencez par lire notre [CON Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licence diff --git a/locales/hi/CODE_OF_CONDUCT.md b/locales/hi/CODE_OF_CONDUCT.md index 8c44070adf..9d22f43944 100644 --- a/locales/hi/CODE_OF_CONDUCT.md +++ b/locales/hi/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • हिंदी • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • हिंदी • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # योगदानकर्ता संधि आचार संहिता diff --git a/locales/hi/CONTRIBUTING.md b/locales/hi/CONTRIBUTING.md index 3bac1ee724..17d62e1794 100644 --- a/locales/hi/CONTRIBUTING.md +++ b/locales/hi/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • हिंदी • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • हिंदी • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Roo Code में योगदान करें diff --git a/locales/hi/README.md b/locales/hi/README.md index fb4b0cff6e..beba0287ad 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • हिन्दी • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • हिन्दी • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.21 जारी +## 🎉 Roo Code 3.19 जारी -Roo Code 3.21 आपकी प्रतिक्रियाओं के आधार पर प्रमुख नई सुविधाएँ और सुधार लाता है! +Roo Code 3.19 आपकी प्रतिक्रियाओं के आधार पर शक्तिशाली नई सुविधाएँ और सुधार लाता है! -- **मार्केटप्लेस अब लाइव है! मार्केटप्लेस अब लाइव है!** मोड्स और MCPs को पहले से कहीं आसान तरीके से खोजें और इंस्टॉल करें। -- **नए Gemini 2.5 Pro, Flash और Flash Lite मॉडल्स के लिए समर्थन जोड़ा गया।** -- **Excel (.xlsx) फ़ाइल समर्थन और अधिक!** - उन्नत MCP समर्थन, अधिक Mermaid नियंत्रण, Amazon Bedrock में विचार समर्थन, और बहुत कुछ! +- **डिफ़ॉल्ट रूप से सक्षम बुद्धिमान कॉन्टेक्स्ट कंडेंसिंग** - अब बुद्धिमान कॉन्टेक्स्ट कंडेंसिंग प्रदर्शन सुधारने और लागत कम करने के लिए स्वचालित रूप से सक्रिय है। +- **कॉन्टेक्स्ट प्रबंधन में सुधार** - कॉन्टेक्स्ट विंडो प्रबंधित करने और AI इंटरैक्शन को अनुकूलित करने के लिए बेहतर कॉन्फ़िगरेशन। +- **विस्तारित मॉडल समर्थन** - विभिन्न AI प्रदाताओं और नवीनतम मॉडल्स के साथ बेहतर संगतता। --- @@ -181,43 +181,37 @@ code --install-extension bin/roo-cline-.vsix Roo Code को बेहतर बनाने में मदद करने वाले हमारे सभी योगदानकर्ताओं को धन्यवाद! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## लाइसेंस diff --git a/locales/it/CODE_OF_CONDUCT.md b/locales/it/CODE_OF_CONDUCT.md index 42adbffaaa..7c6f5754e0 100644 --- a/locales/it/CODE_OF_CONDUCT.md +++ b/locales/it/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • Italiano • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • Italiano • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Codice di Condotta del Patto del Contributore diff --git a/locales/it/CONTRIBUTING.md b/locales/it/CONTRIBUTING.md index ccb48801e3..e83802eb31 100644 --- a/locales/it/CONTRIBUTING.md +++ b/locales/it/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • Italiano • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • Italiano • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Contribuire a Roo Code diff --git a/locales/it/README.md b/locales/it/README.md index 0ab88dafd7..4c6753f49b 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • Italiano • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • Italiano • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Consulta il [CHANGELOG](../../CHANGELOG.md) per aggiornamenti dettagliati e corr --- -## 🎉 Roo Code 3.21 Rilasciato +## 🎉 Roo Code 3.19 Rilasciato -Roo Code 3.21 porta nuove funzionalità principali e miglioramenti basati sui vostri feedback! +Roo Code 3.19 porta miglioramenti nella gestione intelligente del contesto e un'esperienza utente migliorata! -- **Il marketplace è ora live! Il marketplace è ora live!** Scopri e installa mode e MCP più facilmente che mai. -- **Aggiunto supporto per i nuovi modelli Gemini 2.5 Pro, Flash e Flash Lite.** -- **Supporto File Excel (.xlsx) e Altro!** - Supporto MCP migliorato, più controlli Mermaid, supporto thinking in Amazon Bedrock, e molto altro! +- **Condensazione intelligente del contesto abilitata per impostazione predefinita** - La condensazione del contesto è ora abilitata per impostazione predefinita con impostazioni configurabili per quando avviene la condensazione automatica. +- **Pulsante di condensazione manuale** - Nuovo pulsante nell'intestazione delle attività che ti permette di attivare manualmente la condensazione del contesto in qualsiasi momento. +- **Impostazioni di condensazione avanzate** - Regola quando e come avviene la condensazione automatica tramite il pannello Impostazioni Contesto. --- @@ -181,43 +181,37 @@ Amiamo i contributi della community! Inizia leggendo il nostro [CONTRIBUTING.md] Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licenza diff --git a/locales/ja/CODE_OF_CONDUCT.md b/locales/ja/CODE_OF_CONDUCT.md index 08290123b9..fb7dd9b11a 100644 --- a/locales/ja/CODE_OF_CONDUCT.md +++ b/locales/ja/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • 日本語 - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+日本語 • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # コントリビューター行動規範 diff --git a/locales/ja/CONTRIBUTING.md b/locales/ja/CONTRIBUTING.md index a1fb5db53b..a7fdb9a8f4 100644 --- a/locales/ja/CONTRIBUTING.md +++ b/locales/ja/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • 日本語 - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+日本語 • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Roo Code への貢献 diff --git a/locales/ja/README.md b/locales/ja/README.md index 41e62c0421..ec08ed2fa3 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • 日本語 +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +日本語 • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.21 リリース +## 🎉 Roo Code 3.19リリース -Roo Code 3.21は、皆様のフィードバックに基づく新しい主要機能と改善をもたらします! +Roo Code 3.19はインテリジェントなコンテキスト管理の改善とユーザーエクスペリエンスの向上をもたらします! -- **マーケットプレイスが稼働開始!マーケットプレイスが稼働開始!** これまで以上に簡単にモードとMCPを発見してインストールできます。 -- **新しいGemini 2.5 Pro、Flash、Flash Liteモデルのサポートを追加。** -- **Excel ファイルサポートなど** - MCP サポートの向上、Mermaid制御の追加、Amazon Bedrock thinking サポート、その他多数! +- **インテリジェントコンテキスト凝縮がデフォルトで有効** - コンテキスト凝縮がデフォルトで有効になり、自動凝縮のタイミングを設定可能 +- **手動凝縮ボタン** - タスクヘッダーの新しいボタンで、いつでも手動でコンテキスト凝縮をトリガー可能 +- **高度な凝縮設定** - コンテキスト設定パネルから自動凝縮のタイミングと方法を調整可能 --- @@ -181,43 +181,37 @@ code --install-extension bin/roo-cline-.vsix Roo Codeの改善に貢献してくれたすべての貢献者に感謝します! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## ライセンス diff --git a/locales/ko/CODE_OF_CONDUCT.md b/locales/ko/CODE_OF_CONDUCT.md index 87a481c064..4b52ef8f27 100644 --- a/locales/ko/CODE_OF_CONDUCT.md +++ b/locales/ko/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -한국어 • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • 한국어 • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # 기여자 서약 행동 강령 diff --git a/locales/ko/CONTRIBUTING.md b/locales/ko/CONTRIBUTING.md index 6b3b8c293c..3588a10506 100644 --- a/locales/ko/CONTRIBUTING.md +++ b/locales/ko/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -한국어 • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • 한국어 • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Roo Code 기여 가이드 diff --git a/locales/ko/README.md b/locales/ko/README.md index e6b0960785..175edffa8f 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -한국어 • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • 한국어 • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.21 출시 +## 🎉 Roo Code 3.19 출시 -Roo Code 3.21이 여러분의 피드백을 바탕으로 한 새로운 주요 기능과 개선사항을 제공합니다! +Roo Code 3.19가 지능형 컨텍스트 관리 개선과 향상된 사용자 경험을 제공합니다! -- **마켓플레이스가 이제 라이브입니다! 마켓플레이스가 이제 라이브입니다!** 그 어느 때보다 쉽게 모드와 MCP를 발견하고 설치하세요. -- **새로운 Gemini 2.5 Pro, Flash, Flash Lite 모델 지원을 추가했습니다.** -- **Excel 파일 지원 등** - 향상된 MCP 지원, 더 많은 Mermaid 제어, Amazon Bedrock thinking 지원 등! +- **지능형 컨텍스트 압축이 기본적으로 활성화** - 컨텍스트 압축이 기본적으로 활성화되어 자동 압축 시점을 구성 가능합니다. +- **수동 압축 버튼** - 작업 헤더의 새로운 버튼으로 언제든지 수동으로 컨텍스트 압축을 트리거할 수 있습니다. +- **고급 압축 설정** - 컨텍스트 설정 패널을 통해 자동 압축의 시점과 방법을 조정할 수 있습니다. --- @@ -181,43 +181,37 @@ code --install-extension bin/roo-cline-.vsix Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사드립니다! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## 라이선스 diff --git a/locales/nl/CODE_OF_CONDUCT.md b/locales/nl/CODE_OF_CONDUCT.md index 82a2e48ddd..2c9ba7d3f5 100644 --- a/locales/nl/CODE_OF_CONDUCT.md +++ b/locales/nl/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • Nederlands • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • Nederlands • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Contributor Covenant Gedragscode diff --git a/locales/nl/CONTRIBUTING.md b/locales/nl/CONTRIBUTING.md index 6f8c9d0e69..7665efe9f9 100644 --- a/locales/nl/CONTRIBUTING.md +++ b/locales/nl/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • Nederlands • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • Nederlands • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Bijdragen aan Roo Code diff --git a/locales/nl/README.md b/locales/nl/README.md index dfa4dffe4b..83650980bb 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • Nederlands • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • Nederlands • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Bekijk de [CHANGELOG](../../CHANGELOG.md) voor gedetailleerde updates en fixes. --- -## 🎉 Roo Code 3.21 Uitgebracht +## 🎉 Roo Code 3.19 Uitgebracht -Roo Code 3.21 brengt krachtige nieuwe functies en verbeteringen op basis van jullie feedback! +Roo Code 3.19 brengt krachtige nieuwe functies en verbeteringen op basis van jullie feedback! -- **De marketplace is nu live! De marketplace is nu live!** Ontdek en installeer modi en MCP's eenvoudiger dan ooit tevoren. -- **Ondersteuning toegevoegd voor nieuwe Gemini 2.5 Pro, Flash en Flash Lite modellen.** -- **Excel Bestandsondersteuning & Meer** - Verbeterde Mermaid-controls voor betere diagramvisualisatie en nieuwe Amazon Bedrock thinking-ondersteuning voor meer geavanceerde AI-interacties! +- **Intelligente contextcompressie standaard ingeschakeld** - Intelligente contextcompressie is nu automatisch actief om prestaties te verbeteren en kosten te verlagen. +- **Verbeterd contextbeheer** - Betere configuratie voor het beheren van het contextvenster en het optimaliseren van AI-interacties. +- **Uitgebreide modelondersteuning** - Verbeterde compatibiliteit met verschillende AI-providers en nieuwste modellen. --- @@ -181,43 +181,37 @@ We houden van bijdragen uit de community! Begin met het lezen van onze [CONTRIBU Dank aan alle bijdragers die Roo Code beter hebben gemaakt! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licentie diff --git a/locales/pl/CODE_OF_CONDUCT.md b/locales/pl/CODE_OF_CONDUCT.md index 70d0eb8648..689269bfbd 100644 --- a/locales/pl/CODE_OF_CONDUCT.md +++ b/locales/pl/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • Polski • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • Polski • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Kodeks Postępowania Covenant Współtwórców diff --git a/locales/pl/CONTRIBUTING.md b/locales/pl/CONTRIBUTING.md index 1642964737..3005dc4c90 100644 --- a/locales/pl/CONTRIBUTING.md +++ b/locales/pl/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • Polski • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • Polski • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Współtworzenie Roo Code diff --git a/locales/pl/README.md b/locales/pl/README.md index 629bd6469a..a5f76412b0 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • Polski • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • Polski • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Sprawdź [CHANGELOG](../../CHANGELOG.md), aby uzyskać szczegółowe informacje --- -## 🎉 Roo Code 3.21 został wydany +## 🎉 Roo Code 3.19 został wydany -Roo Code 3.21 wprowadza potężne nowe funkcje i usprawnienia na podstawie opinii użytkowników! +Roo Code 3.19 wprowadza potężne nowe funkcje i usprawnienia na podstawie opinii użytkowników! -- **Marketplace jest teraz na żywo! Marketplace jest teraz na żywo!** Odkrywaj i instaluj tryby oraz MCP łatwiej niż kiedykolwiek wcześniej. -- **Dodano wsparcie dla nowych modeli Gemini 2.5 Pro, Flash i Flash Lite.** -- **Wsparcie plików Excel i więcej** - Ulepszone kontrolki Mermaid dla lepszej wizualizacji diagramów oraz nowe wsparcie Amazon Bedrock thinking dla bardziej zaawansowanych interakcji z AI! +- **Inteligentne kondensowanie kontekstu domyślnie włączone** - Inteligentne kondensowanie kontekstu jest teraz automatycznie aktywne, aby poprawić wydajność i zmniejszyć koszty. +- **Ulepszone zarządzanie kontekstem** - Lepsza konfiguracja do zarządzania oknem kontekstu i optymalizacji interakcji z AI. +- **Rozszerzone wsparcie modeli** - Ulepszona kompatybilność z różnymi dostawcami AI i najnowszymi modelami. --- @@ -181,43 +181,37 @@ Kochamy wkład społeczności! Zacznij od przeczytania naszego [CONTRIBUTING.md] Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licencja diff --git a/locales/pt-BR/CODE_OF_CONDUCT.md b/locales/pt-BR/CODE_OF_CONDUCT.md index 1f33fb0152..88bcaae706 100644 --- a/locales/pt-BR/CODE_OF_CONDUCT.md +++ b/locales/pt-BR/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • Português (BR) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • Português (BR) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Código de Conduta do Pacto de Colaboradores diff --git a/locales/pt-BR/CONTRIBUTING.md b/locales/pt-BR/CONTRIBUTING.md index ae602a1ca0..91081b0f5a 100644 --- a/locales/pt-BR/CONTRIBUTING.md +++ b/locales/pt-BR/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • Português (BR) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • Português (BR) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Contribuindo para o Roo Code diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index b26d30b331..afe54ba55b 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • Português (BR) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • Português (BR) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Confira o [CHANGELOG](../../CHANGELOG.md) para atualizações e correções deta --- -## 🎉 Roo Code 3.21 foi lançado +## 🎉 Roo Code 3.19 Lançado -O Roo Code 3.21 introduz novos recursos poderosos e melhorias baseadas no feedback dos usuários! +O Roo Code 3.19 traz melhorias na gestão inteligente de contexto e uma experiência de usuário aprimorada! -- **O marketplace está agora disponível! O marketplace está agora disponível!** Descubra e instale modos e MCPs mais facilmente do que nunca. -- **Adicionado suporte para os novos modelos Gemini 2.5 Pro, Flash e Flash Lite.** -- **Suporte a Arquivos Excel e Mais** - Controles Mermaid aprimorados para melhor visualização de diagramas e novo suporte Amazon Bedrock thinking para interações de IA mais avançadas! +- **Condensação inteligente de contexto habilitada por padrão** - A condensação de contexto agora está habilitada por padrão com configurações ajustáveis para quando a condensação automática ocorre. +- **Botão de condensação manual** - Novo botão no cabeçalho de tarefas que permite acionar manualmente a condensação de contexto a qualquer momento. +- **Configurações avançadas de condensação** - Ajuste quando e como a condensação automática ocorre através do painel de Configurações de Contexto. --- @@ -181,43 +181,37 @@ Adoramos contribuições da comunidade! Comece lendo nosso [CONTRIBUTING.md](CON Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melhor! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Licença diff --git a/locales/ru/CODE_OF_CONDUCT.md b/locales/ru/CODE_OF_CONDUCT.md index 3063aa7060..203a836d24 100644 --- a/locales/ru/CODE_OF_CONDUCT.md +++ b/locales/ru/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • Русский -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • Русский • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Кодекс поведения участников diff --git a/locales/ru/CONTRIBUTING.md b/locales/ru/CONTRIBUTING.md index 89a4e7d529..155353c0ce 100644 --- a/locales/ru/CONTRIBUTING.md +++ b/locales/ru/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • Русский -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • Русский • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Вклад в Roo Code diff --git a/locales/ru/README.md b/locales/ru/README.md index 8af65a573e..e21fb9f5b9 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Italiano](../it/README.md) • [Nederlands](../nl/README.md) • Русский -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • Русский • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../ja/README.md) • [한국어](../ko/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Выпущен Roo Code 3.21 +## 🎉 Выпущен Roo Code 3.19 -Roo Code 3.21 представляет экспериментальный маркетплейс и улучшения файловых операций! +Roo Code 3.19 предлагает мощные новые функции и улучшения на основе ваших отзывов! -- **Маркетплейс теперь доступен! Маркетплейс теперь доступен!** Открывайте и устанавливайте режимы и MCP проще, чем когда-либо. -- **Добавлена поддержка новых моделей Gemini 2.5 Pro, Flash и Flash Lite.** -- **Поддержка файлов Excel и многое другое!** - Новые элементы управления Mermaid и поддержка мышления Amazon Bedrock для расширенных возможностей MCP. +- **Интеллектуальное сжатие контекста включено по умолчанию** - Интеллектуальное сжатие контекста теперь автоматически активно для улучшения производительности и снижения затрат. +- **Улучшенное управление контекстом** - Лучшая конфигурация для управления окном контекста и оптимизации взаимодействий с ИИ. +- **Расширенная поддержка моделей** - Улучшенная совместимость с различными провайдерами ИИ и новейшими моделями. --- @@ -181,43 +181,37 @@ code --install-extension bin/roo-cline-.vsix Спасибо всем нашим участникам, которые помогли сделать Roo Code лучше! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Лицензия diff --git a/locales/tr/CODE_OF_CONDUCT.md b/locales/tr/CODE_OF_CONDUCT.md index 1e995d9cc4..678676a0b4 100644 --- a/locales/tr/CODE_OF_CONDUCT.md +++ b/locales/tr/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • Türkçe • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • Türkçe • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Katkıda Bulunan Sözleşmesi Davranış Kuralları diff --git a/locales/tr/CONTRIBUTING.md b/locales/tr/CONTRIBUTING.md index f7bd4147b3..ddab3b497a 100644 --- a/locales/tr/CONTRIBUTING.md +++ b/locales/tr/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • Türkçe • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • Türkçe • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Roo Code'a Katkıda Bulunma diff --git a/locales/tr/README.md b/locales/tr/README.md index 9cadf2eb35..ce598b5684 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • Türkçe • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • Türkçe • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Detaylı güncellemeler ve düzeltmeler için [CHANGELOG](../../CHANGELOG.md) do --- -## 🎉 Roo Code 3.21 Yayınlandı +## 🎉 Roo Code 3.19 Yayınlandı -Roo Code 3.21 deneysel pazar yeri ve gelişmiş dosya işlemleri sunuyor! +Roo Code 3.19 akıllı bağlam yönetimi iyileştirmeleri ve gelişmiş kullanıcı deneyimi getiriyor! -- **Pazar yeri artık canlı! Pazar yeri artık canlı!** Modları ve MCP'leri her zamankinden daha kolay keşfedin ve kurun. -- **Yeni Gemini 2.5 Pro, Flash ve Flash Lite modelleri için destek eklendi.** -- **Excel Dosya Desteği ve Daha Fazlası!** - Gelişmiş MCP yetenekleri için yeni Mermaid kontrolleri ve Amazon Bedrock düşünce desteği. +- **Akıllı bağlam yoğunlaştırma varsayılan olarak etkin** - Bağlam yoğunlaştırma artık varsayılan olarak etkin ve otomatik yoğunlaştırmanın ne zaman gerçekleşeceği için yapılandırılabilir ayarlar. +- **Manuel yoğunlaştırma düğmesi** - Görev başlığındaki yeni düğme, istediğiniz zaman manuel olarak bağlam yoğunlaştırmasını tetiklemenize olanak tanır. +- **Gelişmiş yoğunlaştırma ayarları** - Bağlam Ayarları paneli aracılığıyla otomatik yoğunlaştırmanın ne zaman ve nasıl gerçekleşeceğini ayarlayın. --- @@ -181,43 +181,37 @@ Topluluk katkılarını seviyoruz! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasın Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara teşekkür ederiz! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Lisans diff --git a/locales/vi/CODE_OF_CONDUCT.md b/locales/vi/CODE_OF_CONDUCT.md index 04c8a40e80..79e0094b9e 100644 --- a/locales/vi/CODE_OF_CONDUCT.md +++ b/locales/vi/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • Tiếng Việt • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • Tiếng Việt • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # Quy Tắc Ứng Xử theo Giao Ước Người Đóng Góp diff --git a/locales/vi/CONTRIBUTING.md b/locales/vi/CONTRIBUTING.md index d0f1d5ee58..a561615507 100644 --- a/locales/vi/CONTRIBUTING.md +++ b/locales/vi/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • Tiếng Việt • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • Tiếng Việt • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) # Đóng góp cho Roo Code diff --git a/locales/vi/README.md b/locales/vi/README.md index dc92f54259..e50c61ff95 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • Tiếng Việt • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • Tiếng Việt • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ Kiểm tra [CHANGELOG](../../CHANGELOG.md) để biết thông tin chi tiết v --- -## 🎉 Đã Phát Hành Roo Code 3.21 +## 🎉 Đã Phát Hành Roo Code 3.19 -Roo Code 3.21 giới thiệu marketplace thử nghiệm và cải tiến các thao tác tập tin! +Roo Code 3.19 mang đến những tính năng mạnh mẽ mới và cải tiến dựa trên phản hồi của bạn! -- **Marketplace hiện đã hoạt động! Marketplace hiện đã hoạt động!** Khám phá và cài đặt các chế độ và MCP dễ dàng hơn bao giờ hết. -- **Đã thêm hỗ trợ cho các mô hình Gemini 2.5 Pro, Flash và Flash Lite mới.** -- **Hỗ trợ tập tin Excel và nhiều hơn nữa!** - Các điều khiển Mermaid mới và hỗ trợ suy nghĩ Amazon Bedrock cho khả năng MCP nâng cao. +- **Nén ngữ cảnh thông minh được bật mặc định** - Nén ngữ cảnh thông minh hiện được kích hoạt tự động để cải thiện hiệu suất và giảm chi phí. +- **Quản lý ngữ cảnh được cải thiện** - Cấu hình tốt hơn để quản lý cửa sổ ngữ cảnh và tối ưu hóa tương tác AI. +- **Hỗ trợ mô hình mở rộng** - Khả năng tương thích được cải thiện với các nhà cung cấp AI khác nhau và các mô hình mới nhất. --- @@ -181,43 +181,37 @@ Chúng tôi rất hoan nghênh đóng góp từ cộng đồng! Bắt đầu b Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## Giấy Phép diff --git a/locales/zh-CN/CODE_OF_CONDUCT.md b/locales/zh-CN/CODE_OF_CONDUCT.md index 573874c2aa..d37b644535 100644 --- a/locales/zh-CN/CODE_OF_CONDUCT.md +++ b/locales/zh-CN/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • 简体中文 • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • 简体中文 • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) # 贡献者契约行为准则 diff --git a/locales/zh-CN/CONTRIBUTING.md b/locales/zh-CN/CONTRIBUTING.md index f1cbacc46c..b31f89f47b 100644 --- a/locales/zh-CN/CONTRIBUTING.md +++ b/locales/zh-CN/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • 简体中文 • [繁體中文](../zh-TW/CONTRIBUTING.md) - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • 简体中文 • [繁體中文](../zh-TW/CONTRIBUTING.md) # 参与 Roo Code 贡献 diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index 4ae4f07a7c..ee0e458c98 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • 简体中文 • [繁體中文](../zh-TW/README.md) +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • 简体中文 • [繁體中文](../../locales/zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.21 已发布 +## 🎉 Roo Code 3.19 已发布 -Roo Code 3.21 根据您的反馈带来重要的新功能和改进! +Roo Code 3.19 带来智能上下文管理改进和增强的用户体验! -- **市场现已上线!市场现已上线!** 从新市场发现和安装模式和 MCP 比以往更容易(在实验性设置中启用)。 -- **新增 Gemini 2.5 Pro、Flash 和 Flash Lite 模型支持。** 多个并发文件写入现在在实验性设置中可用,多个并发读取已从实验性功能毕业,现在位于上下文设置中。 -- **Excel 文件支持及更多功能!** - 增强的 MCP 支持、更多 Mermaid 控件、Amazon Bedrock 中的思考支持,以及更多功能! +- **智能上下文压缩默认启用** - 上下文压缩现在默认启用,具有可配置的设置来控制自动压缩何时发生。 +- **手动压缩按钮** - 任务标题中的新按钮允许您随时手动触发上下文压缩。 +- **高级压缩设置** - 通过上下文设置面板调整自动压缩何时以及如何发生。 --- @@ -181,43 +181,37 @@ code --install-extension bin/roo-cline-.vsix 感谢所有帮助改进 Roo Code 的贡献者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## 许可证 diff --git a/locales/zh-TW/CODE_OF_CONDUCT.md b/locales/zh-TW/CODE_OF_CONDUCT.md index d825759797..1a01171ad0 100644 --- a/locales/zh-TW/CODE_OF_CONDUCT.md +++ b/locales/zh-TW/CODE_OF_CONDUCT.md @@ -1,15 +1,6 @@ -
- +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) - - - - -[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • 繁體中文 - - -
+[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • 繁體中文 # 貢獻者公約行為準則 diff --git a/locales/zh-TW/CONTRIBUTING.md b/locales/zh-TW/CONTRIBUTING.md index 11f83863f6..7a9e1c65a5 100644 --- a/locales/zh-TW/CONTRIBUTING.md +++ b/locales/zh-TW/CONTRIBUTING.md @@ -1,15 +1,6 @@ -
- +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) - - - - -[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • 繁體中文 - - -
+[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • 繁體中文 # 參與 Roo Code 貢獻 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 65dd43ef63..c6184f498a 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) +[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) -[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • 繁體中文 +[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • 繁體中文
@@ -51,13 +51,13 @@ --- -## 🎉 Roo Code 3.21 已發布 +## 🎉 Roo Code 3.19 已發布 -Roo Code 3.21 推出實驗性市集和檔案操作改進! +Roo Code 3.19 帶來智慧上下文管理改進和增強的使用者體驗! -- **市集現已上線!市集現已上線!** 從新市集探索並安裝模式和 MCP 比以往更容易(在實驗性設定中啟用)。 -- **新增 Gemini 2.5 Pro、Flash 和 Flash Lite 模型支援。** 多重同時檔案寫入現在可在實驗性設定中使用,多重同時讀取已移至上下文設定。 -- **Excel 檔案支援及更多功能!** - 新的 Mermaid 控制項和 Amazon Bedrock 思考支援,提供增強的 MCP 功能。 +- **智慧上下文壓縮預設啟用** - 上下文壓縮現在預設啟用,具有可設定的設定來控制自動壓縮何時發生。 +- **手動壓縮按鈕** - 任務標題中的新按鈕讓您隨時手動觸發上下文壓縮。 +- **進階壓縮設定** - 透過上下文設定面板調整自動壓縮何時以及如何發生。 --- @@ -182,43 +182,37 @@ code --install-extension bin/roo-cline-.vsix 感謝所有幫助改進 Roo Code 的貢獻者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| +|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| +|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| +|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| +|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| +|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| +|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| +|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| +|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| +|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| +|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| +|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| +|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| +|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| +|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| +|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| +|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| +|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| +|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| +|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| +|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| ## 授權 diff --git a/scripts/update-contributors.js b/scripts/update-contributors.js old mode 100644 new mode 100755 index 64ade5bea2..32fd645f68 --- a/scripts/update-contributors.js +++ b/scripts/update-contributors.js @@ -183,15 +183,9 @@ async function readReadme() { * @param {Array} contributors Array of contributor objects from GitHub API * @returns {string} HTML for contributors section */ -const EXCLUDED_LOGIN_SUBSTRINGS = ["[bot]", "R00-B0T"] -const EXCLUDED_LOGIN_EXACTS = ["cursor", "roomote"] - function formatContributorsSection(contributors) { - // Filter out GitHub Actions bot, cursor, and roomote - const filteredContributors = contributors.filter( - (c) => - !EXCLUDED_LOGIN_SUBSTRINGS.some((sub) => c.login.includes(sub)) && !EXCLUDED_LOGIN_EXACTS.includes(c.login), - ) + // Filter out GitHub Actions bot + const filteredContributors = contributors.filter((c) => !c.login.includes("[bot]") && !c.login.includes("R00-B0T")) // Start building with Markdown table format let markdown = `${START_MARKER} diff --git a/src/api/providers/xai.ts b/src/api/providers/xai.ts index 8f88351584..adcd0d92bf 100644 --- a/src/api/providers/xai.ts +++ b/src/api/providers/xai.ts @@ -76,24 +76,17 @@ export class XAIHandler extends BaseProvider implements SingleCompletionHandler } if (chunk.usage) { - // Extract detailed token information if available - // First check for prompt_tokens_details structure (real API response) - const promptDetails = "prompt_tokens_details" in chunk.usage ? chunk.usage.prompt_tokens_details : null - const cachedTokens = promptDetails && "cached_tokens" in promptDetails ? promptDetails.cached_tokens : 0 - - // Fall back to direct fields in usage (used in test mocks) - const readTokens = - cachedTokens || - ("cache_read_input_tokens" in chunk.usage ? (chunk.usage as any).cache_read_input_tokens : 0) - const writeTokens = - "cache_creation_input_tokens" in chunk.usage ? (chunk.usage as any).cache_creation_input_tokens : 0 - yield { type: "usage", inputTokens: chunk.usage.prompt_tokens || 0, outputTokens: chunk.usage.completion_tokens || 0, - cacheReadTokens: readTokens, - cacheWriteTokens: writeTokens, + // X.AI might include these fields in the future, handle them if present. + cacheReadTokens: + "cache_read_input_tokens" in chunk.usage ? (chunk.usage as any).cache_read_input_tokens : 0, + cacheWriteTokens: + "cache_creation_input_tokens" in chunk.usage + ? (chunk.usage as any).cache_creation_input_tokens + : 0, } } } diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index 10a74712ef..d1bb705ced 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -1,3 +1,4 @@ +import { safeWriteJson } from "../../utils/safeWriteJson" import { Client } from "@modelcontextprotocol/sdk/client/index.js" import { StdioClientTransport, getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js" import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js" @@ -31,7 +32,7 @@ import { } from "../../shared/mcp" import { fileExistsAtPath } from "../../utils/fs" import { arePathsEqual } from "../../utils/path" -import { injectVariables } from "../../utils/config" +import { injectEnv } from "../../utils/config" export type McpConnection = { server: McpServer @@ -45,7 +46,6 @@ const BaseConfigSchema = z.object({ timeout: z.number().min(1).max(3600).optional().default(60), alwaysAllow: z.array(z.string()).default([]), watchPaths: z.array(z.string()).optional(), // paths to watch for changes and restart server - disabledTools: z.array(z.string()).default([]), }) // Custom error messages for better user feedback @@ -243,10 +243,9 @@ export class McpHub { public setupWorkspaceFoldersWatcher(): void { // Skip if test environment is detected - if (process.env.NODE_ENV === "test") { + if (process.env.NODE_ENV === "test" || process.env.JEST_WORKER_ID !== undefined) { return } - this.disposables.push( vscode.workspace.onDidChangeWorkspaceFolders(async () => { await this.updateProjectMcpServers() @@ -316,7 +315,11 @@ export class McpHub { private async watchProjectMcpFile(): Promise { // Skip if test environment is detected or VSCode APIs are not available - if (process.env.NODE_ENV === "test" || !vscode.workspace.createFileSystemWatcher) { + if ( + process.env.NODE_ENV === "test" || + process.env.JEST_WORKER_ID !== undefined || + !vscode.workspace.createFileSystemWatcher + ) { return } @@ -449,7 +452,11 @@ export class McpHub { private async watchMcpSettingsFile(): Promise { // Skip if test environment is detected or VSCode APIs are not available - if (process.env.NODE_ENV === "test" || !vscode.workspace.createFileSystemWatcher) { + if ( + process.env.NODE_ENV === "test" || + process.env.JEST_WORKER_ID !== undefined || + !vscode.workspace.createFileSystemWatcher + ) { return } @@ -573,32 +580,13 @@ export class McpHub { let transport: StdioClientTransport | SSEClientTransport | StreamableHTTPClientTransport - // Inject variables to the config (environment, magic variables,...) - const configInjected = (await injectVariables(config, { - env: process.env, - workspaceFolder: vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ?? "", - })) as typeof config + // Inject environment variables to the config + const configInjected = (await injectEnv(config)) as typeof config if (configInjected.type === "stdio") { - // On Windows, wrap commands with cmd.exe to handle non-exe executables like npx.ps1 - // This is necessary for node version managers (fnm, nvm-windows, volta) that implement - // commands as PowerShell scripts rather than executables. - // Note: This adds a small overhead as commands go through an additional shell layer. - const isWindows = process.platform === "win32" - - // Check if command is already cmd.exe to avoid double-wrapping - const isAlreadyWrapped = - configInjected.command.toLowerCase() === "cmd.exe" || configInjected.command.toLowerCase() === "cmd" - - const command = isWindows && !isAlreadyWrapped ? "cmd.exe" : configInjected.command - const args = - isWindows && !isAlreadyWrapped - ? ["/c", configInjected.command, ...(configInjected.args || [])] - : configInjected.args - transport = new StdioClientTransport({ - command, - args, + command: configInjected.command, + args: configInjected.args, cwd: configInjected.cwd, env: { ...getDefaultEnvironment(), @@ -836,39 +824,34 @@ export class McpHub { const actualSource = connection.server.source || "global" let configPath: string let alwaysAllowConfig: string[] = [] - let disabledToolsList: string[] = [] // Read from the appropriate config file based on the actual source try { - let serverConfigData: Record = {} if (actualSource === "project") { // Get project MCP config path const projectMcpPath = await this.getProjectMcpPath() if (projectMcpPath) { configPath = projectMcpPath const content = await fs.readFile(configPath, "utf-8") - serverConfigData = JSON.parse(content) + const config = JSON.parse(content) + alwaysAllowConfig = config.mcpServers?.[serverName]?.alwaysAllow || [] } } else { // Get global MCP settings path configPath = await this.getMcpSettingsFilePath() const content = await fs.readFile(configPath, "utf-8") - serverConfigData = JSON.parse(content) - } - if (serverConfigData) { - alwaysAllowConfig = serverConfigData.mcpServers?.[serverName]?.alwaysAllow || [] - disabledToolsList = serverConfigData.mcpServers?.[serverName]?.disabledTools || [] + const config = JSON.parse(content) + alwaysAllowConfig = config.mcpServers?.[serverName]?.alwaysAllow || [] } } catch (error) { - console.error(`Failed to read tool configuration for ${serverName}:`, error) - // Continue with empty configs + console.error(`Failed to read alwaysAllow config for ${serverName}:`, error) + // Continue with empty alwaysAllowConfig } - // Mark tools as always allowed and enabled for prompt based on settings + // Mark tools as always allowed based on settings const tools = (response?.tools || []).map((tool) => ({ ...tool, alwaysAllow: alwaysAllowConfig.includes(tool.name), - enabledForPrompt: !disabledToolsList.includes(tool.name), })) return tools @@ -1214,7 +1197,21 @@ export class McpHub { }) // Send sorted servers to webview - const targetProvider: ClineProvider | undefined = this.providerRef.deref() + // Try to get the currently visible ClineProvider instance first + let targetProvider: ClineProvider | undefined = undefined + try { + // ClineProvider.getInstance() can focus the view if not visible, + // and returns a Promise + const instancePromise = ClineProvider.getInstance() + if (instancePromise) { + targetProvider = await instancePromise + } + } catch (error) {} + + // Fallback to the providerRef if getInstance didn't yield a provider + if (!targetProvider) { + targetProvider = this.providerRef.deref() + } if (targetProvider) { const serversToSend = sortedConnections.map((connection) => connection.server) @@ -1344,7 +1341,7 @@ export class McpHub { mcpServers: config.mcpServers, } - await fs.writeFile(configPath, JSON.stringify(updatedConfig, null, 2)) + await safeWriteJson(configPath, updatedConfig) } public async updateServerTimeout( @@ -1422,7 +1419,7 @@ export class McpHub { mcpServers: config.mcpServers, } - await fs.writeFile(configPath, JSON.stringify(updatedConfig, null, 2)) + await safeWriteJson(configPath, updatedConfig) // Update server connections with the correct source await this.updateServerConnections(config.mcpServers, serverSource) @@ -1497,114 +1494,83 @@ export class McpHub { ) } - /** - * Helper method to update a specific tool list (alwaysAllow or disabledTools) - * in the appropriate settings file. - * @param serverName The name of the server to update - * @param source Whether to update the global or project config - * @param toolName The name of the tool to add or remove - * @param listName The name of the list to modify ("alwaysAllow" or "disabledTools") - * @param addTool Whether to add (true) or remove (false) the tool from the list - */ - private async updateServerToolList( + async toggleToolAlwaysAllow( serverName: string, source: "global" | "project", toolName: string, - listName: "alwaysAllow" | "disabledTools", - addTool: boolean, + shouldAllow: boolean, ): Promise { - // Find the connection with matching name and source - const connection = this.findConnection(serverName, source) - - if (!connection) { - throw new Error(`Server ${serverName} with source ${source} not found`) - } + try { + // Find the connection with matching name and source + const connection = this.findConnection(serverName, source) - // Determine the correct config path based on the source - let configPath: string - if (source === "project") { - // Get project MCP config path - const projectMcpPath = await this.getProjectMcpPath() - if (!projectMcpPath) { - throw new Error("Project MCP configuration file not found") + if (!connection) { + throw new Error(`Server ${serverName} with source ${source} not found`) } - configPath = projectMcpPath - } else { - // Get global MCP settings path - configPath = await this.getMcpSettingsFilePath() - } - // Normalize path for cross-platform compatibility - // Use a consistent path format for both reading and writing - const normalizedPath = process.platform === "win32" ? configPath.replace(/\\/g, "/") : configPath + // Determine the correct config path based on the source + let configPath: string + if (source === "project") { + // Get project MCP config path + const projectMcpPath = await this.getProjectMcpPath() + if (!projectMcpPath) { + throw new Error("Project MCP configuration file not found") + } + configPath = projectMcpPath + } else { + // Get global MCP settings path + configPath = await this.getMcpSettingsFilePath() + } - // Read the appropriate config file - const content = await fs.readFile(normalizedPath, "utf-8") - const config = JSON.parse(content) + // Normalize path for cross-platform compatibility + // Use a consistent path format for both reading and writing + const normalizedPath = process.platform === "win32" ? configPath.replace(/\\/g, "/") : configPath - if (!config.mcpServers) { - config.mcpServers = {} - } + // Read the appropriate config file + const content = await fs.readFile(normalizedPath, "utf-8") + const config = JSON.parse(content) - if (!config.mcpServers[serverName]) { - config.mcpServers[serverName] = { - type: "stdio", - command: "node", - args: [], // Default to an empty array; can be set later if needed + // Initialize mcpServers if it doesn't exist + if (!config.mcpServers) { + config.mcpServers = {} } - } - - if (!config.mcpServers[serverName][listName]) { - config.mcpServers[serverName][listName] = [] - } - const targetList = config.mcpServers[serverName][listName] - const toolIndex = targetList.indexOf(toolName) + // Initialize server config if it doesn't exist + if (!config.mcpServers[serverName]) { + config.mcpServers[serverName] = { + type: "stdio", + command: "node", + args: [], // Default to an empty array; can be set later if needed + } + } - if (addTool && toolIndex === -1) { - targetList.push(toolName) - } else if (!addTool && toolIndex !== -1) { - targetList.splice(toolIndex, 1) - } + // Initialize alwaysAllow if it doesn't exist + if (!config.mcpServers[serverName].alwaysAllow) { + config.mcpServers[serverName].alwaysAllow = [] + } - await fs.writeFile(normalizedPath, JSON.stringify(config, null, 2)) + const alwaysAllow = config.mcpServers[serverName].alwaysAllow + const toolIndex = alwaysAllow.indexOf(toolName) - if (connection) { - connection.server.tools = await this.fetchToolsList(serverName, source) - await this.notifyWebviewOfServerChanges() - } - } + if (shouldAllow && toolIndex === -1) { + // Add tool to always allow list + alwaysAllow.push(toolName) + } else if (!shouldAllow && toolIndex !== -1) { + // Remove tool from always allow list + alwaysAllow.splice(toolIndex, 1) + } - async toggleToolAlwaysAllow( - serverName: string, - source: "global" | "project", - toolName: string, - shouldAllow: boolean, - ): Promise { - try { - await this.updateServerToolList(serverName, source, toolName, "alwaysAllow", shouldAllow) - } catch (error) { - this.showErrorMessage( - `Failed to toggle always allow for tool "${toolName}" on server "${serverName}" with source "${source}"`, - error, - ) - throw error - } - } + // Write updated config back to file + await safeWriteJson(normalizedPath, config) - async toggleToolEnabledForPrompt( - serverName: string, - source: "global" | "project", - toolName: string, - isEnabled: boolean, - ): Promise { - try { - // When isEnabled is true, we want to remove the tool from the disabledTools list. - // When isEnabled is false, we want to add the tool to the disabledTools list. - const addToolToDisabledList = !isEnabled - await this.updateServerToolList(serverName, source, toolName, "disabledTools", addToolToDisabledList) + // Update the tools list to reflect the change + if (connection) { + // Explicitly pass the source to ensure we're updating the correct server's tools + connection.server.tools = await this.fetchToolsList(serverName, source) + await this.notifyWebviewOfServerChanges() + } } catch (error) { - this.showErrorMessage(`Failed to update settings for tool ${toolName}`, error) + this.showErrorMessage(`Failed to update always allow settings for tool ${toolName}`, error) throw error // Re-throw to ensure the error is properly handled } } diff --git a/src/services/mcp/__tests__/McpHub.test.ts b/src/services/mcp/__tests__/McpHub.test.ts new file mode 100644 index 0000000000..fb22b376bb --- /dev/null +++ b/src/services/mcp/__tests__/McpHub.test.ts @@ -0,0 +1,717 @@ +import type { McpHub as McpHubType, McpConnection } from "../McpHub" +import type { ClineProvider } from "../../../core/webview/ClineProvider" +import type { ExtensionContext, Uri } from "vscode" +import { ServerConfigSchema } from "../McpHub" + +const { McpHub } = require("../McpHub") +const path = require("path") + +// Mock fs/promises before importing anything that uses it +jest.mock("fs/promises", () => ({ + access: jest.fn().mockResolvedValue(undefined), + writeFile: jest.fn().mockResolvedValue(undefined), + readFile: jest.fn().mockResolvedValue("{}"), + unlink: jest.fn().mockResolvedValue(undefined), + rename: jest.fn().mockResolvedValue(undefined), + lstat: jest.fn().mockImplementation(() => + Promise.resolve({ + isDirectory: () => true, + }), + ), + mkdir: jest.fn().mockResolvedValue(undefined), +})) + +// Import the mocked fs +const fs = require("fs/promises") + +// Mock safeWriteJson +jest.mock("../../../utils/safeWriteJson", () => ({ + safeWriteJson: jest.fn(async (filePath, data) => { + // Instead of trying to write to the file system, just call fs.writeFile mock + // This avoids the complex file locking and temp file operations + return fs.writeFile(filePath, JSON.stringify(data), "utf8") + }), +})) + +jest.mock("vscode", () => ({ + workspace: { + createFileSystemWatcher: jest.fn().mockReturnValue({ + onDidChange: jest.fn(), + onDidCreate: jest.fn(), + onDidDelete: jest.fn(), + dispose: jest.fn(), + }), + onDidSaveTextDocument: jest.fn(), + onDidChangeWorkspaceFolders: jest.fn(), + workspaceFolders: [], + }, + window: { + showErrorMessage: jest.fn(), + showInformationMessage: jest.fn(), + showWarningMessage: jest.fn(), + createTextEditorDecorationType: jest.fn().mockReturnValue({ + dispose: jest.fn(), + }), + }, + Disposable: { + from: jest.fn(), + }, +})) +jest.mock("fs/promises") +jest.mock("../../../core/webview/ClineProvider") + +describe("McpHub", () => { + let mcpHub: McpHubType + let mockProvider: Partial + + // Store original console methods + const originalConsoleError = console.error + + beforeEach(() => { + jest.clearAllMocks() + + // Mock console.error to suppress error messages during tests + console.error = jest.fn() + + // Reset the mock implementations before each test + jest.clearAllMocks() + + const mockUri: Uri = { + scheme: "file", + authority: "", + path: "/test/path", + query: "", + fragment: "", + fsPath: "/test/path", + with: jest.fn(), + toJSON: jest.fn(), + } + + mockProvider = { + ensureSettingsDirectoryExists: jest.fn().mockResolvedValue("/mock/settings/path"), + ensureMcpServersDirectoryExists: jest.fn().mockResolvedValue("/mock/settings/path"), + postMessageToWebview: jest.fn(), + context: { + subscriptions: [], + workspaceState: {} as any, + globalState: {} as any, + secrets: {} as any, + extensionUri: mockUri, + extensionPath: "/test/path", + storagePath: "/test/storage", + globalStoragePath: "/test/global-storage", + environmentVariableCollection: {} as any, + extension: { + id: "test-extension", + extensionUri: mockUri, + extensionPath: "/test/path", + extensionKind: 1, + isActive: true, + packageJSON: { + version: "1.0.0", + }, + activate: jest.fn(), + exports: undefined, + } as any, + asAbsolutePath: (path: string) => path, + storageUri: mockUri, + globalStorageUri: mockUri, + logUri: mockUri, + extensionMode: 1, + logPath: "/test/path", + languageModelAccessInformation: {} as any, + } as ExtensionContext, + } + + // Mock fs.readFile for initial settings + ;(fs.readFile as jest.Mock).mockResolvedValue( + JSON.stringify({ + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + alwaysAllow: ["allowed-tool"], + }, + }, + }), + ) + + mcpHub = new McpHub(mockProvider as ClineProvider) + }) + + afterEach(() => { + // Restore original console methods + console.error = originalConsoleError + }) + + describe("toggleToolAlwaysAllow", () => { + it("should add tool to always allow list when enabling", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + alwaysAllow: [], + }, + }, + } + + // Mock reading initial config + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection without alwaysAllow + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + await mcpHub.toggleToolAlwaysAllow("test-server", "global", "new-tool", true) + + // Verify the config was updated correctly + const writeCalls = (fs.writeFile as jest.Mock).mock.calls + expect(writeCalls.length).toBeGreaterThan(0) + + // Find the write call + const callToUse = writeCalls[writeCalls.length - 1] + expect(callToUse).toBeTruthy() + + // The path might be normalized differently on different platforms, + // so we'll just check that we have a call with valid content + const writtenConfig = JSON.parse(callToUse[1]) + expect(writtenConfig.mcpServers).toBeDefined() + expect(writtenConfig.mcpServers["test-server"]).toBeDefined() + expect(Array.isArray(writtenConfig.mcpServers["test-server"].alwaysAllow)).toBe(true) + expect(writtenConfig.mcpServers["test-server"].alwaysAllow).toContain("new-tool") + }) + + it("should remove tool from always allow list when disabling", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + alwaysAllow: ["existing-tool"], + }, + }, + } + + // Mock reading initial config + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + alwaysAllow: ["existing-tool"], + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + await mcpHub.toggleToolAlwaysAllow("test-server", "global", "existing-tool", false) + + // Verify the config was updated correctly + const writeCalls = (fs.writeFile as jest.Mock).mock.calls + expect(writeCalls.length).toBeGreaterThan(0) + + // Find the write call + const callToUse = writeCalls[writeCalls.length - 1] + expect(callToUse).toBeTruthy() + + // The path might be normalized differently on different platforms, + // so we'll just check that we have a call with valid content + const writtenConfig = JSON.parse(callToUse[1]) + expect(writtenConfig.mcpServers).toBeDefined() + expect(writtenConfig.mcpServers["test-server"]).toBeDefined() + expect(Array.isArray(writtenConfig.mcpServers["test-server"].alwaysAllow)).toBe(true) + expect(writtenConfig.mcpServers["test-server"].alwaysAllow).not.toContain("existing-tool") + }) + + it("should initialize alwaysAllow if it does not exist", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + }, + }, + } + + // Mock reading initial config + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + alwaysAllow: [], + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + await mcpHub.toggleToolAlwaysAllow("test-server", "global", "new-tool", true) + + // Verify the config was updated with initialized alwaysAllow + // Find the write call with the normalized path + const normalizedSettingsPath = "/mock/settings/path/cline_mcp_settings.json" + const writeCalls = (fs.writeFile as jest.Mock).mock.calls + + // Find the write call with the normalized path + const writeCall = writeCalls.find((call) => call[0] === normalizedSettingsPath) + const callToUse = writeCall || writeCalls[0] + + const writtenConfig = JSON.parse(callToUse[1]) + expect(writtenConfig.mcpServers["test-server"].alwaysAllow).toBeDefined() + expect(writtenConfig.mcpServers["test-server"].alwaysAllow).toContain("new-tool") + }) + }) + + describe("server disabled state", () => { + it("should toggle server disabled state", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + disabled: false, + }, + }, + } + + // Mock reading initial config + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + disabled: false, + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + await mcpHub.toggleServerDisabled("test-server", true) + + // Verify the config was updated correctly + // Find the write call with the normalized path + const normalizedSettingsPath = "/mock/settings/path/cline_mcp_settings.json" + const writeCalls = (fs.writeFile as jest.Mock).mock.calls + + // Find the write call with the normalized path + const writeCall = writeCalls.find((call) => call[0] === normalizedSettingsPath) + const callToUse = writeCall || writeCalls[0] + + const writtenConfig = JSON.parse(callToUse[1]) + expect(writtenConfig.mcpServers["test-server"].disabled).toBe(true) + }) + + it("should filter out disabled servers from getServers", () => { + const mockConnections: McpConnection[] = [ + { + server: { + name: "enabled-server", + config: "{}", + status: "connected", + disabled: false, + }, + client: {} as any, + transport: {} as any, + }, + { + server: { + name: "disabled-server", + config: "{}", + status: "connected", + disabled: true, + }, + client: {} as any, + transport: {} as any, + }, + ] + + mcpHub.connections = mockConnections + const servers = mcpHub.getServers() + + expect(servers.length).toBe(1) + expect(servers[0].name).toBe("enabled-server") + }) + + it("should prevent calling tools on disabled servers", async () => { + const mockConnection: McpConnection = { + server: { + name: "disabled-server", + config: "{}", + status: "connected", + disabled: true, + }, + client: { + request: jest.fn().mockResolvedValue({ result: "success" }), + } as any, + transport: {} as any, + } + + mcpHub.connections = [mockConnection] + + await expect(mcpHub.callTool("disabled-server", "some-tool", {})).rejects.toThrow( + 'Server "disabled-server" is disabled and cannot be used', + ) + }) + + it("should prevent reading resources from disabled servers", async () => { + const mockConnection: McpConnection = { + server: { + name: "disabled-server", + config: "{}", + status: "connected", + disabled: true, + }, + client: { + request: jest.fn(), + } as any, + transport: {} as any, + } + + mcpHub.connections = [mockConnection] + + await expect(mcpHub.readResource("disabled-server", "some/uri")).rejects.toThrow( + 'Server "disabled-server" is disabled', + ) + }) + }) + + describe("callTool", () => { + it("should execute tool successfully", async () => { + // Mock the connection with a minimal client implementation + const mockConnection: McpConnection = { + server: { + name: "test-server", + config: JSON.stringify({}), + status: "connected" as const, + }, + client: { + request: jest.fn().mockResolvedValue({ result: "success" }), + } as any, + transport: { + start: jest.fn(), + close: jest.fn(), + stderr: { on: jest.fn() }, + } as any, + } + + mcpHub.connections = [mockConnection] + + await mcpHub.callTool("test-server", "some-tool", {}) + + // Verify the request was made with correct parameters + expect(mockConnection.client.request).toHaveBeenCalledWith( + { + method: "tools/call", + params: { + name: "some-tool", + arguments: {}, + }, + }, + expect.any(Object), + expect.objectContaining({ timeout: 60000 }), // Default 60 second timeout + ) + }) + + it("should throw error if server not found", async () => { + await expect(mcpHub.callTool("non-existent-server", "some-tool", {})).rejects.toThrow( + "No connection found for server: non-existent-server", + ) + }) + + describe("timeout configuration", () => { + it("should validate timeout values", () => { + // Test valid timeout values + const validConfig = { + type: "stdio", + command: "test", + timeout: 60, + } + expect(() => ServerConfigSchema.parse(validConfig)).not.toThrow() + + // Test invalid timeout values + const invalidConfigs = [ + { type: "stdio", command: "test", timeout: 0 }, // Too low + { type: "stdio", command: "test", timeout: 3601 }, // Too high + { type: "stdio", command: "test", timeout: -1 }, // Negative + ] + + invalidConfigs.forEach((config) => { + expect(() => ServerConfigSchema.parse(config)).toThrow() + }) + }) + + it("should use default timeout of 60 seconds if not specified", async () => { + const mockConnection: McpConnection = { + server: { + name: "test-server", + config: JSON.stringify({ type: "stdio", command: "test" }), // No timeout specified + status: "connected", + }, + client: { + request: jest.fn().mockResolvedValue({ content: [] }), + } as any, + transport: {} as any, + } + + mcpHub.connections = [mockConnection] + await mcpHub.callTool("test-server", "test-tool") + + expect(mockConnection.client.request).toHaveBeenCalledWith( + expect.anything(), + expect.anything(), + expect.objectContaining({ timeout: 60000 }), // 60 seconds in milliseconds + ) + }) + + it("should apply configured timeout to tool calls", async () => { + const mockConnection: McpConnection = { + server: { + name: "test-server", + config: JSON.stringify({ type: "stdio", command: "test", timeout: 120 }), // 2 minutes + status: "connected", + }, + client: { + request: jest.fn().mockResolvedValue({ content: [] }), + } as any, + transport: {} as any, + } + + mcpHub.connections = [mockConnection] + await mcpHub.callTool("test-server", "test-tool") + + expect(mockConnection.client.request).toHaveBeenCalledWith( + expect.anything(), + expect.anything(), + expect.objectContaining({ timeout: 120000 }), // 120 seconds in milliseconds + ) + }) + }) + + describe("updateServerTimeout", () => { + it("should update server timeout in settings file", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + }, + }, + } + + // Mock reading initial config + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + await mcpHub.updateServerTimeout("test-server", 120) + + // Verify the config was updated correctly + // Find the write call with the normalized path + const normalizedSettingsPath = "/mock/settings/path/cline_mcp_settings.json" + const writeCalls = (fs.writeFile as jest.Mock).mock.calls + + // Find the write call with the normalized path + const writeCall = writeCalls.find((call) => call[0] === normalizedSettingsPath) + const callToUse = writeCall || writeCalls[0] + + const writtenConfig = JSON.parse(callToUse[1]) + expect(writtenConfig.mcpServers["test-server"].timeout).toBe(120) + }) + + it("should fallback to default timeout when config has invalid timeout", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + }, + }, + } + + // Mock initial read + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection before updating + const mockConnectionInitial: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + source: "global", + } as any, + client: { + request: jest.fn().mockResolvedValue({ content: [] }), + } as any, + transport: {} as any, + } + mcpHub.connections = [mockConnectionInitial] + + // Update with invalid timeout + await mcpHub.updateServerTimeout("test-server", 3601) + + // Config is written + expect(fs.writeFile).toHaveBeenCalled() + + // Setup connection with invalid timeout + const mockConnectionInvalid: McpConnection = { + server: { + name: "test-server", + config: JSON.stringify({ + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 3601, // Invalid timeout + }), + status: "connected", + }, + client: { + request: jest.fn().mockResolvedValue({ content: [] }), + } as any, + transport: {} as any, + } + + mcpHub.connections = [mockConnectionInvalid] + + // Call tool - should use default timeout + await mcpHub.callTool("test-server", "test-tool") + + // Verify default timeout was used + expect(mockConnectionInvalid.client.request).toHaveBeenCalledWith( + expect.anything(), + expect.anything(), + expect.objectContaining({ timeout: 60000 }), // Default 60 seconds + ) + }) + + it("should accept valid timeout values", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + }, + }, + } + + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + // Test valid timeout values + const validTimeouts = [1, 60, 3600] + for (const timeout of validTimeouts) { + await mcpHub.updateServerTimeout("test-server", timeout) + expect(fs.writeFile).toHaveBeenCalled() + jest.clearAllMocks() // Reset for next iteration + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + } + }) + + it("should notify webview after updating timeout", async () => { + const mockConfig = { + mcpServers: { + "test-server": { + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + }, + }, + } + + ;(fs.readFile as jest.Mock).mockResolvedValueOnce(JSON.stringify(mockConfig)) + + // Set up mock connection + const mockConnection: McpConnection = { + server: { + name: "test-server", + type: "stdio", + command: "node", + args: ["test.js"], + timeout: 60, + source: "global", + } as any, + client: {} as any, + transport: {} as any, + } + mcpHub.connections = [mockConnection] + + await mcpHub.updateServerTimeout("test-server", 120) + + expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith( + expect.objectContaining({ + type: "mcpServers", + }), + ) + }) + }) + }) +}) From ba19395ece1919132fbbc6a5ecf5828826278acb Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sat, 28 Jun 2025 22:03:46 +0200 Subject: [PATCH 58/66] chore(linting): rem linter again --- locales/ca/CODE_OF_CONDUCT.md | 13 +- locales/ca/CONTRIBUTING.md | 13 +- locales/ca/README.md | 76 +++---- locales/de/CODE_OF_CONDUCT.md | 13 +- locales/de/CONTRIBUTING.md | 13 +- locales/de/README.md | 76 +++---- locales/es/CODE_OF_CONDUCT.md | 13 +- locales/es/CONTRIBUTING.md | 13 +- locales/es/README.md | 76 +++---- locales/fr/CODE_OF_CONDUCT.md | 13 +- locales/fr/CONTRIBUTING.md | 13 +- locales/fr/README.md | 76 +++---- locales/hi/CODE_OF_CONDUCT.md | 13 +- locales/hi/CONTRIBUTING.md | 13 +- locales/hi/README.md | 76 +++---- locales/id/README.md | 72 ++++--- locales/it/CODE_OF_CONDUCT.md | 13 +- locales/it/CONTRIBUTING.md | 13 +- locales/it/README.md | 76 +++---- locales/ja/CODE_OF_CONDUCT.md | 13 +- locales/ja/CONTRIBUTING.md | 13 +- locales/ja/README.md | 76 +++---- locales/ko/CODE_OF_CONDUCT.md | 13 +- locales/ko/CONTRIBUTING.md | 13 +- locales/ko/README.md | 76 +++---- locales/nl/CODE_OF_CONDUCT.md | 13 +- locales/nl/CONTRIBUTING.md | 13 +- locales/nl/README.md | 76 +++---- locales/pl/CODE_OF_CONDUCT.md | 13 +- locales/pl/CONTRIBUTING.md | 13 +- locales/pl/README.md | 76 +++---- locales/pt-BR/CODE_OF_CONDUCT.md | 13 +- locales/pt-BR/CONTRIBUTING.md | 13 +- locales/pt-BR/README.md | 76 +++---- locales/ru/CODE_OF_CONDUCT.md | 13 +- locales/ru/CONTRIBUTING.md | 13 +- locales/ru/README.md | 76 +++---- locales/tr/CODE_OF_CONDUCT.md | 13 +- locales/tr/CONTRIBUTING.md | 13 +- locales/tr/README.md | 76 +++---- locales/vi/CODE_OF_CONDUCT.md | 13 +- locales/vi/CONTRIBUTING.md | 13 +- locales/vi/README.md | 76 +++---- locales/zh-CN/CODE_OF_CONDUCT.md | 13 +- locales/zh-CN/CONTRIBUTING.md | 13 +- locales/zh-CN/README.md | 76 +++---- locales/zh-TW/CODE_OF_CONDUCT.md | 13 +- locales/zh-TW/CONTRIBUTING.md | 13 +- locales/zh-TW/README.md | 76 +++---- scripts/update-contributors.js | 10 +- src/api/providers/xai.ts | 18 +- src/services/mcp/McpHub.ts | 234 +++++++++++++--------- src/services/mcp/__tests__/McpHub.spec.ts | 1 + 53 files changed, 1181 insertions(+), 786 deletions(-) mode change 100755 => 100644 scripts/update-contributors.js diff --git a/locales/ca/CODE_OF_CONDUCT.md b/locales/ca/CODE_OF_CONDUCT.md index 0d57262818..05033ff04a 100644 --- a/locales/ca/CODE_OF_CONDUCT.md +++ b/locales/ca/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • Català • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • Català • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Codi de Conducta del Pacte de Col·laboradors diff --git a/locales/ca/CONTRIBUTING.md b/locales/ca/CONTRIBUTING.md index 09d8727954..6c6459949d 100644 --- a/locales/ca/CONTRIBUTING.md +++ b/locales/ca/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • Català • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • Català • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Contribuir a Roo Code diff --git a/locales/ca/README.md b/locales/ca/README.md index 5d544b041a..d774b94a61 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • Català • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • Català • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Consulteu el [CHANGELOG](../../CHANGELOG.md) per a actualitzacions i correccions --- -## 🎉 Roo Code 3.19 Llançat +## 🎉 Roo Code 3.21 Llançat -Roo Code 3.19 aporta noves i potents funcionalitats i millores basades en els vostres comentaris! +Roo Code 3.21 aporta noves funcionalitats majors i millores basades en els vostres comentaris! -- **Condensació intel·ligent de context habilitada per defecte** - Ara la condensació intel·ligent de context està activada automàticament per millorar el rendiment i reduir els costos. -- **Millores en la gestió de context** - Configuració millorada per gestionar la finestra de context i optimitzar les interaccions amb la IA. -- **Suport ampliat per a models** - Compatibilitat millorada amb diversos proveïdors d'IA i models més recents. +- **Llançament del Marketplace Roo** - El marketplace ja està en funcionament! El marketplace ja està en funcionament! Descobreix i instal·la modes i MCP més fàcilment que mai. +- **Models Gemini 2.5** - S'ha afegit suport per als nous models Gemini 2.5 Pro, Flash i Flash Lite. +- **Suport per a fitxers Excel i més** - S'ha afegit suport per a fitxers Excel (.xlsx) i nombroses correccions d'errors i millores! --- @@ -181,37 +181,41 @@ Ens encanten les contribucions de la comunitat! Comenceu llegint el nostre [CONT Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Llicència diff --git a/locales/de/CODE_OF_CONDUCT.md b/locales/de/CODE_OF_CONDUCT.md index b1fa6e3128..84bbe9630c 100644 --- a/locales/de/CODE_OF_CONDUCT.md +++ b/locales/de/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • Deutsch • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • Deutsch • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Verhaltenskodex für Mitwirkende diff --git a/locales/de/CONTRIBUTING.md b/locales/de/CONTRIBUTING.md index bb8d26561f..4aa0279458 100644 --- a/locales/de/CONTRIBUTING.md +++ b/locales/de/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • Deutsch • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • Deutsch • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Beitrag zu Roo Code diff --git a/locales/de/README.md b/locales/de/README.md index bea19619f4..05fb7d3bd3 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • Deutsch • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • Deutsch • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Sehen Sie sich das [CHANGELOG](../../CHANGELOG.md) für detaillierte Updates und --- -## 🎉 Roo Code 3.19 veröffentlicht +## 🎉 Roo Code 3.21 veröffentlicht -Roo Code 3.19 bringt intelligente Kontextverwaltungsverbesserungen und eine verbesserte Benutzererfahrung! +Roo Code 3.21 bringt wichtige neue Funktionen und Verbesserungen basierend auf eurem Feedback! -- **Intelligente Kontextkondensierung standardmäßig aktiviert** - Kontextkondensierung ist jetzt standardmäßig aktiviert mit konfigurierbaren Einstellungen für automatische Kondensierung. -- **Manueller Kondensierungsbutton** - Neuer Button im Task-Header ermöglicht es dir, die Kontextkondensierung jederzeit manuell auszulösen. -- **Erweiterte Kondensierungseinstellungen** - Feinabstimmung wann und wie automatische Kondensierung über das Kontext-Einstellungspanel erfolgt. +- **Roo Marketplace Launch** - Der Marketplace ist jetzt live! Der Marketplace ist jetzt live! Entdecke und installiere Modi und MCPs einfacher als je zuvor. +- **Gemini 2.5 Modelle** - Unterstützung für neue Gemini 2.5 Pro, Flash und Flash Lite Modelle hinzugefügt. +- **Excel-Datei-Unterstützung & Mehr** - Excel (.xlsx) Datei-Unterstützung hinzugefügt und zahlreiche Fehlerbehebungen und Verbesserungen! --- @@ -181,37 +181,41 @@ Wir lieben Community-Beiträge! Beginnen Sie mit dem Lesen unserer [CONTRIBUTING Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Lizenz diff --git a/locales/es/CODE_OF_CONDUCT.md b/locales/es/CODE_OF_CONDUCT.md index e978484e35..149fbdb779 100644 --- a/locales/es/CODE_OF_CONDUCT.md +++ b/locales/es/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • Español • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • Español • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Código de Conducta del Pacto de Colaboradores diff --git a/locales/es/CONTRIBUTING.md b/locales/es/CONTRIBUTING.md index 0b0bac01f9..a00d79559a 100644 --- a/locales/es/CONTRIBUTING.md +++ b/locales/es/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • Español • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • Español • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Contribuir a Roo Code diff --git a/locales/es/README.md b/locales/es/README.md index c5debe1d98..cd652e745a 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • Español • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • Español • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Consulta el [CHANGELOG](../../CHANGELOG.md) para ver actualizaciones detalladas --- -## 🎉 Roo Code 3.19 Lanzado +## 🎉 Roo Code 3.21 Lanzado -¡Roo Code 3.19 trae mejoras en la gestión inteligente de contexto y una experiencia de usuario mejorada! +¡Roo Code 3.21 trae importantes nuevas funciones y mejoras basadas en vuestros comentarios! -- **Condensación inteligente de contexto habilitada por defecto** - La condensación de contexto ahora está habilitada por defecto con configuraciones ajustables para cuando ocurre la condensación automática. -- **Botón de condensación manual** - Nuevo botón en la cabecera de tareas que te permite activar manualmente la condensación de contexto en cualquier momento. -- **Configuraciones avanzadas de condensación** - Ajusta cuándo y cómo ocurre la condensación automática a través del panel de Configuraciones de Contexto. +- **Lanzamiento del Marketplace de Roo** - ¡El marketplace ya está en funcionamiento! ¡El marketplace ya está en funcionamiento! Descubre e instala modos y MCPs más fácilmente que nunca. +- **Modelos Gemini 2.5** - Se ha añadido soporte para los nuevos modelos Gemini 2.5 Pro, Flash y Flash Lite. +- **Soporte de Archivos Excel y Más** - ¡Se ha añadido soporte para archivos Excel (.xlsx) y numerosas correcciones de errores y mejoras! --- @@ -181,37 +181,41 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p ¡Gracias a todos nuestros colaboradores que han ayudado a mejorar Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Licencia diff --git a/locales/fr/CODE_OF_CONDUCT.md b/locales/fr/CODE_OF_CONDUCT.md index b872617481..04df05a481 100644 --- a/locales/fr/CODE_OF_CONDUCT.md +++ b/locales/fr/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • Français • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • Français • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Code de Conduite des Contributeurs diff --git a/locales/fr/CONTRIBUTING.md b/locales/fr/CONTRIBUTING.md index 0e14cdcca1..da703ef9f4 100644 --- a/locales/fr/CONTRIBUTING.md +++ b/locales/fr/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • Français • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • Français • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Contribuer à Roo Code diff --git a/locales/fr/README.md b/locales/fr/README.md index cbdd08b8a0..9c093562e2 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • Français • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • Français • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Consultez le [CHANGELOG](../../CHANGELOG.md) pour des mises à jour détaillées --- -## 🎉 Roo Code 3.19 est sorti +## 🎉 Roo Code 3.21 est sorti -Roo Code 3.19 apporte des améliorations de gestion intelligente du contexte et une expérience utilisateur améliorée ! +Roo Code 3.21 apporte de nouvelles fonctionnalités majeures et des améliorations basées sur vos retours ! -- **Condensation intelligente du contexte activée par défaut** - La condensation du contexte est maintenant activée par défaut avec des paramètres configurables pour quand la condensation automatique se produit. -- **Bouton de condensation manuelle** - Nouveau bouton dans l'en-tête des tâches qui vous permet de déclencher manuellement la condensation du contexte à tout moment. -- **Paramètres de condensation avancés** - Ajustez quand et comment la condensation automatique se produit via le panneau Paramètres de Contexte. +- **Le marketplace est maintenant en ligne ! Le marketplace est maintenant en ligne !** Découvrez et installez des modes et des MCPs plus facilement que jamais. +- **Ajout du support pour les nouveaux modèles Gemini 2.5 Pro, Flash et Flash Lite.** +- **Support des Fichiers Excel et Plus !** - Support MCP amélioré, plus de contrôles Mermaid, support de réflexion dans Amazon Bedrock, et bien plus ! --- @@ -181,37 +181,41 @@ Nous adorons les contributions de la communauté ! Commencez par lire notre [CON Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Licence diff --git a/locales/hi/CODE_OF_CONDUCT.md b/locales/hi/CODE_OF_CONDUCT.md index 9d22f43944..8c44070adf 100644 --- a/locales/hi/CODE_OF_CONDUCT.md +++ b/locales/hi/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • हिंदी • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • हिंदी • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# योगदानकर्ता संधि आचार संहिता diff --git a/locales/hi/CONTRIBUTING.md b/locales/hi/CONTRIBUTING.md index 17d62e1794..3bac1ee724 100644 --- a/locales/hi/CONTRIBUTING.md +++ b/locales/hi/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • हिंदी • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • हिंदी • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Roo Code में योगदान करें diff --git a/locales/hi/README.md b/locales/hi/README.md index beba0287ad..d05baccf48 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • हिन्दी • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • हिन्दी • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.19 जारी +## 🎉 Roo Code 3.21 जारी -Roo Code 3.19 आपकी प्रतिक्रियाओं के आधार पर शक्तिशाली नई सुविधाएँ और सुधार लाता है! +Roo Code 3.21 आपकी प्रतिक्रियाओं के आधार पर प्रमुख नई सुविधाएँ और सुधार लाता है! -- **डिफ़ॉल्ट रूप से सक्षम बुद्धिमान कॉन्टेक्स्ट कंडेंसिंग** - अब बुद्धिमान कॉन्टेक्स्ट कंडेंसिंग प्रदर्शन सुधारने और लागत कम करने के लिए स्वचालित रूप से सक्रिय है। -- **कॉन्टेक्स्ट प्रबंधन में सुधार** - कॉन्टेक्स्ट विंडो प्रबंधित करने और AI इंटरैक्शन को अनुकूलित करने के लिए बेहतर कॉन्फ़िगरेशन। -- **विस्तारित मॉडल समर्थन** - विभिन्न AI प्रदाताओं और नवीनतम मॉडल्स के साथ बेहतर संगतता। +- **मार्केटप्लेस अब लाइव है! मार्केटप्लेस अब लाइव है!** मोड्स और MCPs को पहले से कहीं आसान तरीके से खोजें और इंस्टॉल करें। +- **नए Gemini 2.5 Pro, Flash और Flash Lite मॉडल्स के लिए समर्थन जोड़ा गया।** +- **Excel (.xlsx) फ़ाइल समर्थन और अधिक!** - उन्नत MCP समर्थन, अधिक Mermaid नियंत्रण, Amazon Bedrock में विचार समर्थन, और बहुत कुछ! --- @@ -181,37 +181,41 @@ code --install-extension bin/roo-cline-.vsix Roo Code को बेहतर बनाने में मदद करने वाले हमारे सभी योगदानकर्ताओं को धन्यवाद! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## लाइसेंस diff --git a/locales/id/README.md b/locales/id/README.md index 151722941b..0903a209a5 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -175,43 +175,41 @@ Kami menyukai kontribusi komunitas! Mulai dengan membaca [CONTRIBUTING.md](CONTR Terima kasih kepada semua kontributor kami yang telah membantu membuat Roo Code lebih baik! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| MuriloFP
MuriloFP
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| feifei325
feifei325
| -| qdaxb
qdaxb
| zhangtony239
zhangtony239
| cannuri
cannuri
| monotykamary
monotykamary
| sachasayan
sachasayan
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| -| dtrugman
dtrugman
| lloydchang
lloydchang
| pugazhendhi-m
pugazhendhi-m
| shariqriazz
shariqriazz
| vigneshsubbiah16
vigneshsubbiah16
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| lupuletic
lupuletic
| kiwina
kiwina
| Premshay
Premshay
| psv2522
psv2522
| olweraltuve
olweraltuve
| -| diarmidmackenzie
diarmidmackenzie
| PeterDaveHello
PeterDaveHello
| aheizi
aheizi
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| nbihan-mediware
nbihan-mediware
| -| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| StevenTCramer
StevenTCramer
| SannidhyaSah
SannidhyaSah
| pdecat
pdecat
| noritaka1166
noritaka1166
| -| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| slytechnical
slytechnical
| -| dleffel
dleffel
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| avtc
avtc
| dlab-anton
dlab-anton
| eonghk
eonghk
| -| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| zeozeozeo
zeozeozeo
| -| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| bramburn
bramburn
| -| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| snoyiatk
snoyiatk
| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| -| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| mdp
mdp
| napter
napter
| -| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| -| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| kinandan
kinandan
| nevermorec
nevermorec
| -| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| -| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| maekawataiki
maekawataiki
| PretzelVector
PretzelVector
| -| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| -| shaybc
shaybc
| seedlord
seedlord
| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| -| pokutuna
pokutuna
| philipnext
philipnext
| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| -| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| -| linegel
linegel
| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| -| dleen
dleen
| devxpain
devxpain
| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| -| benashby
benashby
| Atlogit
Atlogit
| atlasgong
atlasgong
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| -| HadesArchitect
HadesArchitect
| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| -| AMHesch
AMHesch
| AlexandruSmirnov
AlexandruSmirnov
| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| -| R-omk
R-omk
| Sarke
Sarke
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| -| marvijo-code
marvijo-code
| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| -| Rexarrior
Rexarrior
| ksze
ksze
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| pfitz
pfitz
| -| ExactDoug
ExactDoug
| celestial-vault
celestial-vault
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| +|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## License diff --git a/locales/it/CODE_OF_CONDUCT.md b/locales/it/CODE_OF_CONDUCT.md index 7c6f5754e0..42adbffaaa 100644 --- a/locales/it/CODE_OF_CONDUCT.md +++ b/locales/it/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • Italiano • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • Italiano • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Codice di Condotta del Patto del Contributore diff --git a/locales/it/CONTRIBUTING.md b/locales/it/CONTRIBUTING.md index e83802eb31..ccb48801e3 100644 --- a/locales/it/CONTRIBUTING.md +++ b/locales/it/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • Italiano • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • Italiano • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Contribuire a Roo Code diff --git a/locales/it/README.md b/locales/it/README.md index 4c6753f49b..5de5eb9937 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • Italiano • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • Italiano • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Consulta il [CHANGELOG](../../CHANGELOG.md) per aggiornamenti dettagliati e corr --- -## 🎉 Roo Code 3.19 Rilasciato +## 🎉 Roo Code 3.21 Rilasciato -Roo Code 3.19 porta miglioramenti nella gestione intelligente del contesto e un'esperienza utente migliorata! +Roo Code 3.21 porta nuove funzionalità principali e miglioramenti basati sui vostri feedback! -- **Condensazione intelligente del contesto abilitata per impostazione predefinita** - La condensazione del contesto è ora abilitata per impostazione predefinita con impostazioni configurabili per quando avviene la condensazione automatica. -- **Pulsante di condensazione manuale** - Nuovo pulsante nell'intestazione delle attività che ti permette di attivare manualmente la condensazione del contesto in qualsiasi momento. -- **Impostazioni di condensazione avanzate** - Regola quando e come avviene la condensazione automatica tramite il pannello Impostazioni Contesto. +- **Il marketplace è ora live! Il marketplace è ora live!** Scopri e installa mode e MCP più facilmente che mai. +- **Aggiunto supporto per i nuovi modelli Gemini 2.5 Pro, Flash e Flash Lite.** +- **Supporto File Excel (.xlsx) e Altro!** - Supporto MCP migliorato, più controlli Mermaid, supporto thinking in Amazon Bedrock, e molto altro! --- @@ -181,37 +181,41 @@ Amiamo i contributi della community! Inizia leggendo il nostro [CONTRIBUTING.md] Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Licenza diff --git a/locales/ja/CODE_OF_CONDUCT.md b/locales/ja/CODE_OF_CONDUCT.md index fb7dd9b11a..08290123b9 100644 --- a/locales/ja/CODE_OF_CONDUCT.md +++ b/locales/ja/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -日本語 • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • 日本語 + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# コントリビューター行動規範 diff --git a/locales/ja/CONTRIBUTING.md b/locales/ja/CONTRIBUTING.md index a7fdb9a8f4..a1fb5db53b 100644 --- a/locales/ja/CONTRIBUTING.md +++ b/locales/ja/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -日本語 • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • 日本語 + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Roo Code への貢献 diff --git a/locales/ja/README.md b/locales/ja/README.md index ec08ed2fa3..1d31dc9da7 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • 日本語 -日本語 • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.19リリース +## 🎉 Roo Code 3.21 リリース -Roo Code 3.19はインテリジェントなコンテキスト管理の改善とユーザーエクスペリエンスの向上をもたらします! +Roo Code 3.21は、皆様のフィードバックに基づく新しい主要機能と改善をもたらします! -- **インテリジェントコンテキスト凝縮がデフォルトで有効** - コンテキスト凝縮がデフォルトで有効になり、自動凝縮のタイミングを設定可能 -- **手動凝縮ボタン** - タスクヘッダーの新しいボタンで、いつでも手動でコンテキスト凝縮をトリガー可能 -- **高度な凝縮設定** - コンテキスト設定パネルから自動凝縮のタイミングと方法を調整可能 +- **マーケットプレイスが稼働開始!マーケットプレイスが稼働開始!** これまで以上に簡単にモードとMCPを発見してインストールできます。 +- **新しいGemini 2.5 Pro、Flash、Flash Liteモデルのサポートを追加。** +- **Excel ファイルサポートなど** - MCP サポートの向上、Mermaid制御の追加、Amazon Bedrock thinking サポート、その他多数! --- @@ -181,37 +181,41 @@ code --install-extension bin/roo-cline-.vsix Roo Codeの改善に貢献してくれたすべての貢献者に感謝します! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## ライセンス diff --git a/locales/ko/CODE_OF_CONDUCT.md b/locales/ko/CODE_OF_CONDUCT.md index 4b52ef8f27..87a481c064 100644 --- a/locales/ko/CODE_OF_CONDUCT.md +++ b/locales/ko/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • 한국어 • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +한국어 • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# 기여자 서약 행동 강령 diff --git a/locales/ko/CONTRIBUTING.md b/locales/ko/CONTRIBUTING.md index 3588a10506..6b3b8c293c 100644 --- a/locales/ko/CONTRIBUTING.md +++ b/locales/ko/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • 한국어 • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +한국어 • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Roo Code 기여 가이드 diff --git a/locales/ko/README.md b/locales/ko/README.md index 175edffa8f..d03fd157b3 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • 한국어 • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +한국어 • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.19 출시 +## 🎉 Roo Code 3.21 출시 -Roo Code 3.19가 지능형 컨텍스트 관리 개선과 향상된 사용자 경험을 제공합니다! +Roo Code 3.21이 여러분의 피드백을 바탕으로 한 새로운 주요 기능과 개선사항을 제공합니다! -- **지능형 컨텍스트 압축이 기본적으로 활성화** - 컨텍스트 압축이 기본적으로 활성화되어 자동 압축 시점을 구성 가능합니다. -- **수동 압축 버튼** - 작업 헤더의 새로운 버튼으로 언제든지 수동으로 컨텍스트 압축을 트리거할 수 있습니다. -- **고급 압축 설정** - 컨텍스트 설정 패널을 통해 자동 압축의 시점과 방법을 조정할 수 있습니다. +- **마켓플레이스가 이제 라이브입니다! 마켓플레이스가 이제 라이브입니다!** 그 어느 때보다 쉽게 모드와 MCP를 발견하고 설치하세요. +- **새로운 Gemini 2.5 Pro, Flash, Flash Lite 모델 지원을 추가했습니다.** +- **Excel 파일 지원 등** - 향상된 MCP 지원, 더 많은 Mermaid 제어, Amazon Bedrock thinking 지원 등! --- @@ -181,37 +181,41 @@ code --install-extension bin/roo-cline-.vsix Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사드립니다! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## 라이선스 diff --git a/locales/nl/CODE_OF_CONDUCT.md b/locales/nl/CODE_OF_CONDUCT.md index 2c9ba7d3f5..82a2e48ddd 100644 --- a/locales/nl/CODE_OF_CONDUCT.md +++ b/locales/nl/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • Nederlands • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • Nederlands • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Contributor Covenant Gedragscode diff --git a/locales/nl/CONTRIBUTING.md b/locales/nl/CONTRIBUTING.md index 7665efe9f9..6f8c9d0e69 100644 --- a/locales/nl/CONTRIBUTING.md +++ b/locales/nl/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • Nederlands • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • Nederlands • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Bijdragen aan Roo Code diff --git a/locales/nl/README.md b/locales/nl/README.md index 83650980bb..218c12b725 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • Nederlands • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • Nederlands • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Bekijk de [CHANGELOG](../../CHANGELOG.md) voor gedetailleerde updates en fixes. --- -## 🎉 Roo Code 3.19 Uitgebracht +## 🎉 Roo Code 3.21 Uitgebracht -Roo Code 3.19 brengt krachtige nieuwe functies en verbeteringen op basis van jullie feedback! +Roo Code 3.21 brengt krachtige nieuwe functies en verbeteringen op basis van jullie feedback! -- **Intelligente contextcompressie standaard ingeschakeld** - Intelligente contextcompressie is nu automatisch actief om prestaties te verbeteren en kosten te verlagen. -- **Verbeterd contextbeheer** - Betere configuratie voor het beheren van het contextvenster en het optimaliseren van AI-interacties. -- **Uitgebreide modelondersteuning** - Verbeterde compatibiliteit met verschillende AI-providers en nieuwste modellen. +- **De marketplace is nu live! De marketplace is nu live!** Ontdek en installeer modi en MCP's eenvoudiger dan ooit tevoren. +- **Ondersteuning toegevoegd voor nieuwe Gemini 2.5 Pro, Flash en Flash Lite modellen.** +- **Excel Bestandsondersteuning & Meer** - Verbeterde Mermaid-controls voor betere diagramvisualisatie en nieuwe Amazon Bedrock thinking-ondersteuning voor meer geavanceerde AI-interacties! --- @@ -181,37 +181,41 @@ We houden van bijdragen uit de community! Begin met het lezen van onze [CONTRIBU Dank aan alle bijdragers die Roo Code beter hebben gemaakt! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Licentie diff --git a/locales/pl/CODE_OF_CONDUCT.md b/locales/pl/CODE_OF_CONDUCT.md index 689269bfbd..70d0eb8648 100644 --- a/locales/pl/CODE_OF_CONDUCT.md +++ b/locales/pl/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • Polski • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • Polski • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Kodeks Postępowania Covenant Współtwórców diff --git a/locales/pl/CONTRIBUTING.md b/locales/pl/CONTRIBUTING.md index 3005dc4c90..1642964737 100644 --- a/locales/pl/CONTRIBUTING.md +++ b/locales/pl/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • Polski • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • Polski • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Współtworzenie Roo Code diff --git a/locales/pl/README.md b/locales/pl/README.md index a5f76412b0..023f27cb15 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • Polski • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • Polski • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Sprawdź [CHANGELOG](../../CHANGELOG.md), aby uzyskać szczegółowe informacje --- -## 🎉 Roo Code 3.19 został wydany +## 🎉 Roo Code 3.21 został wydany -Roo Code 3.19 wprowadza potężne nowe funkcje i usprawnienia na podstawie opinii użytkowników! +Roo Code 3.21 wprowadza potężne nowe funkcje i usprawnienia na podstawie opinii użytkowników! -- **Inteligentne kondensowanie kontekstu domyślnie włączone** - Inteligentne kondensowanie kontekstu jest teraz automatycznie aktywne, aby poprawić wydajność i zmniejszyć koszty. -- **Ulepszone zarządzanie kontekstem** - Lepsza konfiguracja do zarządzania oknem kontekstu i optymalizacji interakcji z AI. -- **Rozszerzone wsparcie modeli** - Ulepszona kompatybilność z różnymi dostawcami AI i najnowszymi modelami. +- **Marketplace jest teraz na żywo! Marketplace jest teraz na żywo!** Odkrywaj i instaluj tryby oraz MCP łatwiej niż kiedykolwiek wcześniej. +- **Dodano wsparcie dla nowych modeli Gemini 2.5 Pro, Flash i Flash Lite.** +- **Wsparcie plików Excel i więcej** - Ulepszone kontrolki Mermaid dla lepszej wizualizacji diagramów oraz nowe wsparcie Amazon Bedrock thinking dla bardziej zaawansowanych interakcji z AI! --- @@ -181,37 +181,41 @@ Kochamy wkład społeczności! Zacznij od przeczytania naszego [CONTRIBUTING.md] Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Licencja diff --git a/locales/pt-BR/CODE_OF_CONDUCT.md b/locales/pt-BR/CODE_OF_CONDUCT.md index 88bcaae706..1f33fb0152 100644 --- a/locales/pt-BR/CODE_OF_CONDUCT.md +++ b/locales/pt-BR/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • Português (BR) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • Português (BR) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Código de Conduta do Pacto de Colaboradores diff --git a/locales/pt-BR/CONTRIBUTING.md b/locales/pt-BR/CONTRIBUTING.md index 91081b0f5a..ae602a1ca0 100644 --- a/locales/pt-BR/CONTRIBUTING.md +++ b/locales/pt-BR/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • Português (BR) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • Português (BR) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Contribuindo para o Roo Code diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index afe54ba55b..74d4d36a43 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • Português (BR) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • Português (BR) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Confira o [CHANGELOG](../../CHANGELOG.md) para atualizações e correções deta --- -## 🎉 Roo Code 3.19 Lançado +## 🎉 Roo Code 3.21 foi lançado -O Roo Code 3.19 traz melhorias na gestão inteligente de contexto e uma experiência de usuário aprimorada! +O Roo Code 3.21 introduz novos recursos poderosos e melhorias baseadas no feedback dos usuários! -- **Condensação inteligente de contexto habilitada por padrão** - A condensação de contexto agora está habilitada por padrão com configurações ajustáveis para quando a condensação automática ocorre. -- **Botão de condensação manual** - Novo botão no cabeçalho de tarefas que permite acionar manualmente a condensação de contexto a qualquer momento. -- **Configurações avançadas de condensação** - Ajuste quando e como a condensação automática ocorre através do painel de Configurações de Contexto. +- **O marketplace está agora disponível! O marketplace está agora disponível!** Descubra e instale modos e MCPs mais facilmente do que nunca. +- **Adicionado suporte para os novos modelos Gemini 2.5 Pro, Flash e Flash Lite.** +- **Suporte a Arquivos Excel e Mais** - Controles Mermaid aprimorados para melhor visualização de diagramas e novo suporte Amazon Bedrock thinking para interações de IA mais avançadas! --- @@ -181,37 +181,41 @@ Adoramos contribuições da comunidade! Comece lendo nosso [CONTRIBUTING.md](CON Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melhor! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Licença diff --git a/locales/ru/CODE_OF_CONDUCT.md b/locales/ru/CODE_OF_CONDUCT.md index 203a836d24..3063aa7060 100644 --- a/locales/ru/CODE_OF_CONDUCT.md +++ b/locales/ru/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • Русский +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • Русский • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Кодекс поведения участников diff --git a/locales/ru/CONTRIBUTING.md b/locales/ru/CONTRIBUTING.md index 155353c0ce..89a4e7d529 100644 --- a/locales/ru/CONTRIBUTING.md +++ b/locales/ru/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • Русский +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • Русский • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Вклад в Roo Code diff --git a/locales/ru/README.md b/locales/ru/README.md index e21fb9f5b9..3e9133cb97 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Italiano](../it/README.md) • [Nederlands](../nl/README.md) • Русский +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../ja/README.md) • [한국어](../ko/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • Русский • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Выпущен Roo Code 3.19 +## 🎉 Выпущен Roo Code 3.21 -Roo Code 3.19 предлагает мощные новые функции и улучшения на основе ваших отзывов! +Roo Code 3.21 представляет экспериментальный маркетплейс и улучшения файловых операций! -- **Интеллектуальное сжатие контекста включено по умолчанию** - Интеллектуальное сжатие контекста теперь автоматически активно для улучшения производительности и снижения затрат. -- **Улучшенное управление контекстом** - Лучшая конфигурация для управления окном контекста и оптимизации взаимодействий с ИИ. -- **Расширенная поддержка моделей** - Улучшенная совместимость с различными провайдерами ИИ и новейшими моделями. +- **Маркетплейс теперь доступен! Маркетплейс теперь доступен!** Открывайте и устанавливайте режимы и MCP проще, чем когда-либо. +- **Добавлена поддержка новых моделей Gemini 2.5 Pro, Flash и Flash Lite.** +- **Поддержка файлов Excel и многое другое!** - Новые элементы управления Mermaid и поддержка мышления Amazon Bedrock для расширенных возможностей MCP. --- @@ -181,37 +181,41 @@ code --install-extension bin/roo-cline-.vsix Спасибо всем нашим участникам, которые помогли сделать Roo Code лучше! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Лицензия diff --git a/locales/tr/CODE_OF_CONDUCT.md b/locales/tr/CODE_OF_CONDUCT.md index 678676a0b4..1e995d9cc4 100644 --- a/locales/tr/CODE_OF_CONDUCT.md +++ b/locales/tr/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • Türkçe • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • Türkçe • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Katkıda Bulunan Sözleşmesi Davranış Kuralları diff --git a/locales/tr/CONTRIBUTING.md b/locales/tr/CONTRIBUTING.md index ddab3b497a..f7bd4147b3 100644 --- a/locales/tr/CONTRIBUTING.md +++ b/locales/tr/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • Türkçe • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • Türkçe • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Roo Code'a Katkıda Bulunma diff --git a/locales/tr/README.md b/locales/tr/README.md index ce598b5684..cc26916c32 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • Türkçe • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • Türkçe • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Detaylı güncellemeler ve düzeltmeler için [CHANGELOG](../../CHANGELOG.md) do --- -## 🎉 Roo Code 3.19 Yayınlandı +## 🎉 Roo Code 3.21 Yayınlandı -Roo Code 3.19 akıllı bağlam yönetimi iyileştirmeleri ve gelişmiş kullanıcı deneyimi getiriyor! +Roo Code 3.21 deneysel pazar yeri ve gelişmiş dosya işlemleri sunuyor! -- **Akıllı bağlam yoğunlaştırma varsayılan olarak etkin** - Bağlam yoğunlaştırma artık varsayılan olarak etkin ve otomatik yoğunlaştırmanın ne zaman gerçekleşeceği için yapılandırılabilir ayarlar. -- **Manuel yoğunlaştırma düğmesi** - Görev başlığındaki yeni düğme, istediğiniz zaman manuel olarak bağlam yoğunlaştırmasını tetiklemenize olanak tanır. -- **Gelişmiş yoğunlaştırma ayarları** - Bağlam Ayarları paneli aracılığıyla otomatik yoğunlaştırmanın ne zaman ve nasıl gerçekleşeceğini ayarlayın. +- **Pazar yeri artık canlı! Pazar yeri artık canlı!** Modları ve MCP'leri her zamankinden daha kolay keşfedin ve kurun. +- **Yeni Gemini 2.5 Pro, Flash ve Flash Lite modelleri için destek eklendi.** +- **Excel Dosya Desteği ve Daha Fazlası!** - Gelişmiş MCP yetenekleri için yeni Mermaid kontrolleri ve Amazon Bedrock düşünce desteği. --- @@ -181,37 +181,41 @@ Topluluk katkılarını seviyoruz! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasın Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara teşekkür ederiz! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Lisans diff --git a/locales/vi/CODE_OF_CONDUCT.md b/locales/vi/CODE_OF_CONDUCT.md index 79e0094b9e..04c8a40e80 100644 --- a/locales/vi/CODE_OF_CONDUCT.md +++ b/locales/vi/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • Tiếng Việt • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • Tiếng Việt • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# Quy Tắc Ứng Xử theo Giao Ước Người Đóng Góp diff --git a/locales/vi/CONTRIBUTING.md b/locales/vi/CONTRIBUTING.md index a561615507..d0f1d5ee58 100644 --- a/locales/vi/CONTRIBUTING.md +++ b/locales/vi/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • Tiếng Việt • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • Tiếng Việt • [简体中文](../zh-CN/CONTRIBUTING.md) • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# Đóng góp cho Roo Code diff --git a/locales/vi/README.md b/locales/vi/README.md index e50c61ff95..3f21cb2729 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • Tiếng Việt • [简体中文](../../locales/zh-CN/README.md) • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • Tiếng Việt • [简体中文](../zh-CN/README.md) • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ Kiểm tra [CHANGELOG](../../CHANGELOG.md) để biết thông tin chi tiết v --- -## 🎉 Đã Phát Hành Roo Code 3.19 +## 🎉 Đã Phát Hành Roo Code 3.21 -Roo Code 3.19 mang đến những tính năng mạnh mẽ mới và cải tiến dựa trên phản hồi của bạn! +Roo Code 3.21 giới thiệu marketplace thử nghiệm và cải tiến các thao tác tập tin! -- **Nén ngữ cảnh thông minh được bật mặc định** - Nén ngữ cảnh thông minh hiện được kích hoạt tự động để cải thiện hiệu suất và giảm chi phí. -- **Quản lý ngữ cảnh được cải thiện** - Cấu hình tốt hơn để quản lý cửa sổ ngữ cảnh và tối ưu hóa tương tác AI. -- **Hỗ trợ mô hình mở rộng** - Khả năng tương thích được cải thiện với các nhà cung cấp AI khác nhau và các mô hình mới nhất. +- **Marketplace hiện đã hoạt động! Marketplace hiện đã hoạt động!** Khám phá và cài đặt các chế độ và MCP dễ dàng hơn bao giờ hết. +- **Đã thêm hỗ trợ cho các mô hình Gemini 2.5 Pro, Flash và Flash Lite mới.** +- **Hỗ trợ tập tin Excel và nhiều hơn nữa!** - Các điều khiển Mermaid mới và hỗ trợ suy nghĩ Amazon Bedrock cho khả năng MCP nâng cao. --- @@ -181,37 +181,41 @@ Chúng tôi rất hoan nghênh đóng góp từ cộng đồng! Bắt đầu b Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo Code! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## Giấy Phép diff --git a/locales/zh-CN/CODE_OF_CONDUCT.md b/locales/zh-CN/CODE_OF_CONDUCT.md index d37b644535..573874c2aa 100644 --- a/locales/zh-CN/CODE_OF_CONDUCT.md +++ b/locales/zh-CN/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • 简体中文 • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • 简体中文 • [繁體中文](../zh-TW/CODE_OF_CONDUCT.md) + + +
# 贡献者契约行为准则 diff --git a/locales/zh-CN/CONTRIBUTING.md b/locales/zh-CN/CONTRIBUTING.md index b31f89f47b..f1cbacc46c 100644 --- a/locales/zh-CN/CONTRIBUTING.md +++ b/locales/zh-CN/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • 简体中文 • [繁體中文](../zh-TW/CONTRIBUTING.md) +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • 简体中文 • [繁體中文](../zh-TW/CONTRIBUTING.md) + + +
# 参与 Roo Code 贡献 diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index ee0e458c98..b6eb4e8ab5 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • 简体中文 • [繁體中文](../../locales/zh-TW/README.md) +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • 简体中文 • [繁體中文](../zh-TW/README.md)
@@ -50,13 +50,13 @@ --- -## 🎉 Roo Code 3.19 已发布 +## 🎉 Roo Code 3.21 已发布 -Roo Code 3.19 带来智能上下文管理改进和增强的用户体验! +Roo Code 3.21 根据您的反馈带来重要的新功能和改进! -- **智能上下文压缩默认启用** - 上下文压缩现在默认启用,具有可配置的设置来控制自动压缩何时发生。 -- **手动压缩按钮** - 任务标题中的新按钮允许您随时手动触发上下文压缩。 -- **高级压缩设置** - 通过上下文设置面板调整自动压缩何时以及如何发生。 +- **市场现已上线!市场现已上线!** 从新市场发现和安装模式和 MCP 比以往更容易(在实验性设置中启用)。 +- **新增 Gemini 2.5 Pro、Flash 和 Flash Lite 模型支持。** 多个并发文件写入现在在实验性设置中可用,多个并发读取已从实验性功能毕业,现在位于上下文设置中。 +- **Excel 文件支持及更多功能!** - 增强的 MCP 支持、更多 Mermaid 控件、Amazon Bedrock 中的思考支持,以及更多功能! --- @@ -181,37 +181,41 @@ code --install-extension bin/roo-cline-.vsix 感谢所有帮助改进 Roo Code 的贡献者! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## 许可证 diff --git a/locales/zh-TW/CODE_OF_CONDUCT.md b/locales/zh-TW/CODE_OF_CONDUCT.md index 1a01171ad0..d825759797 100644 --- a/locales/zh-TW/CODE_OF_CONDUCT.md +++ b/locales/zh-TW/CODE_OF_CONDUCT.md @@ -1,6 +1,15 @@ -[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) +
+ -[日本語](../ja/CODE_OF_CONDUCT.md) • [한국어](../ko/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • 繁體中文 +[English](../../CODE_OF_CONDUCT.md) • [Català](../ca/CODE_OF_CONDUCT.md) • [Deutsch](../de/CODE_OF_CONDUCT.md) • [Español](../es/CODE_OF_CONDUCT.md) • [Français](../fr/CODE_OF_CONDUCT.md) • [हिंदी](../hi/CODE_OF_CONDUCT.md) • [Bahasa Indonesia](../id/CODE_OF_CONDUCT.md) • [Italiano](../it/CODE_OF_CONDUCT.md) • [日本語](../ja/CODE_OF_CONDUCT.md) + + + + +[한국어](../ko/CODE_OF_CONDUCT.md) • [Nederlands](../nl/CODE_OF_CONDUCT.md) • [Polski](../pl/CODE_OF_CONDUCT.md) • [Português (BR)](../pt-BR/CODE_OF_CONDUCT.md) • [Русский](../ru/CODE_OF_CONDUCT.md) • [Türkçe](../tr/CODE_OF_CONDUCT.md) • [Tiếng Việt](../vi/CODE_OF_CONDUCT.md) • [简体中文](../zh-CN/CODE_OF_CONDUCT.md) • 繁體中文 + + +
# 貢獻者公約行為準則 diff --git a/locales/zh-TW/CONTRIBUTING.md b/locales/zh-TW/CONTRIBUTING.md index 7a9e1c65a5..11f83863f6 100644 --- a/locales/zh-TW/CONTRIBUTING.md +++ b/locales/zh-TW/CONTRIBUTING.md @@ -1,6 +1,15 @@ -[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) +
+ -[日本語](../ja/CONTRIBUTING.md) • [한국어](../ko/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • 繁體中文 +[English](../../CONTRIBUTING.md) • [Català](../ca/CONTRIBUTING.md) • [Deutsch](../de/CONTRIBUTING.md) • [Español](../es/CONTRIBUTING.md) • [Français](../fr/CONTRIBUTING.md) • [हिंदी](../hi/CONTRIBUTING.md) • [Bahasa Indonesia](../id/CONTRIBUTING.md) • [Italiano](../it/CONTRIBUTING.md) • [日本語](../ja/CONTRIBUTING.md) + + + + +[한국어](../ko/CONTRIBUTING.md) • [Nederlands](../nl/CONTRIBUTING.md) • [Polski](../pl/CONTRIBUTING.md) • [Português (BR)](../pt-BR/CONTRIBUTING.md) • [Русский](../ru/CONTRIBUTING.md) • [Türkçe](../tr/CONTRIBUTING.md) • [Tiếng Việt](../vi/CONTRIBUTING.md) • [简体中文](../zh-CN/CONTRIBUTING.md) • 繁體中文 + + +
# 參與 Roo Code 貢獻 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index c6184f498a..cc4c2f67c7 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -1,12 +1,12 @@
-[English](../../README.md) • [Català](../../locales/ca/README.md) • [Deutsch](../../locales/de/README.md) • [Español](../../locales/es/README.md) • [Français](../../locales/fr/README.md) • [हिन्दी](../../locales/hi/README.md) • [Italiano](../../locales/it/README.md) • [Nederlands](../../locales/nl/README.md) • [Русский](../../locales/ru/README.md) +[English](../../README.md) • [Català](../ca/README.md) • [Deutsch](../de/README.md) • [Español](../es/README.md) • [Français](../fr/README.md) • [हिन्दी](../hi/README.md) • [Bahasa Indonesia](../id/README.md) • [Italiano](../it/README.md) • [日本語](../ja/README.md) -[日本語](../../locales/ja/README.md) • [한국어](../../locales/ko/README.md) • [Polski](../../locales/pl/README.md) • [Português (BR)](../../locales/pt-BR/README.md) • [Türkçe](../../locales/tr/README.md) • [Tiếng Việt](../../locales/vi/README.md) • [简体中文](../../locales/zh-CN/README.md) • 繁體中文 +[한국어](../ko/README.md) • [Nederlands](../nl/README.md) • [Polski](../pl/README.md) • [Português (BR)](../pt-BR/README.md) • [Русский](../ru/README.md) • [Türkçe](../tr/README.md) • [Tiếng Việt](../vi/README.md) • [简体中文](../zh-CN/README.md) • 繁體中文
@@ -51,13 +51,13 @@ --- -## 🎉 Roo Code 3.19 已發布 +## 🎉 Roo Code 3.21 已發布 -Roo Code 3.19 帶來智慧上下文管理改進和增強的使用者體驗! +Roo Code 3.21 推出實驗性市集和檔案操作改進! -- **智慧上下文壓縮預設啟用** - 上下文壓縮現在預設啟用,具有可設定的設定來控制自動壓縮何時發生。 -- **手動壓縮按鈕** - 任務標題中的新按鈕讓您隨時手動觸發上下文壓縮。 -- **進階壓縮設定** - 透過上下文設定面板調整自動壓縮何時以及如何發生。 +- **市集現已上線!市集現已上線!** 從新市集探索並安裝模式和 MCP 比以往更容易(在實驗性設定中啟用)。 +- **新增 Gemini 2.5 Pro、Flash 和 Flash Lite 模型支援。** 多重同時檔案寫入現在可在實驗性設定中使用,多重同時讀取已移至上下文設定。 +- **Excel 檔案支援及更多功能!** - 新的 Mermaid 控制項和 Amazon Bedrock 思考支援,提供增強的 MCP 功能。 --- @@ -182,37 +182,41 @@ code --install-extension bin/roo-cline-.vsix 感謝所有幫助改進 Roo Code 的貢獻者! -|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|a8trejo
a8trejo
| +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| |:---:|:---:|:---:|:---:|:---:|:---:| -|KJ7LNW
KJ7LNW
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|hannesrudolph
hannesrudolph
|stea9499
stea9499
|joemanley201
joemanley201
| -|System233
System233
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
|d-oit
d-oit
| -|punkpeye
punkpeye
|jr
jr
|wkordalski
wkordalski
|elianiva
elianiva
|monotykamary
monotykamary
|cannuri
cannuri
| -|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|zhangtony239
zhangtony239
|sachasayan
sachasayan
|xyOz-dev
xyOz-dev
|feifei325
feifei325
|qdaxb
qdaxb
| -|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|Szpadel
Szpadel
|dtrugman
dtrugman
| -|diarmidmackenzie
diarmidmackenzie
|psv2522
psv2522
|Premshay
Premshay
|lupuletic
lupuletic
|aheizi
aheizi
|PeterDaveHello
PeterDaveHello
| -|olweraltuve
olweraltuve
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|kiwina
kiwina
|afshawnlotfi
afshawnlotfi
| -|pdecat
pdecat
|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|chrarnoldus
chrarnoldus
|Lunchb0ne
Lunchb0ne
| -|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|StevenTCramer
StevenTCramer
| -|sammcj
sammcj
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
| -|taisukeoe
taisukeoe
|taylorwilsdon
taylorwilsdon
|NamesMT
NamesMT
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| -|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
|ashktn
ashktn
| -|franekp
franekp
|yt3trees
yt3trees
|anton-otee
anton-otee
|benzntech
benzntech
|axkirillov
axkirillov
|bramburn
bramburn
| -|hassoncs
hassoncs
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
| -|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
|Ruakij
Ruakij
|ross
ross
|philfung
philfung
| -|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| -|kcwhite
kcwhite
|kinandan
kinandan
|kohii
kohii
|nevermorec
nevermorec
|dqroid
dqroid
|dairui1
dairui1
| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
|MuriloFP
MuriloFP
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|feifei325
feifei325
| +|qdaxb
qdaxb
|zhangtony239
zhangtony239
|cannuri
cannuri
|monotykamary
monotykamary
|sachasayan
sachasayan
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
| +|dtrugman
dtrugman
|lloydchang
lloydchang
|pugazhendhi-m
pugazhendhi-m
|shariqriazz
shariqriazz
|vigneshsubbiah16
vigneshsubbiah16
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|lupuletic
lupuletic
|kiwina
kiwina
|Premshay
Premshay
|psv2522
psv2522
|olweraltuve
olweraltuve
| +|diarmidmackenzie
diarmidmackenzie
|PeterDaveHello
PeterDaveHello
|aheizi
aheizi
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
|nbihan-mediware
nbihan-mediware
| +|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|StevenTCramer
StevenTCramer
|SannidhyaSah
SannidhyaSah
|pdecat
pdecat
|noritaka1166
noritaka1166
| +|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
|slytechnical
slytechnical
| +|dleffel
dleffel
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|avtc
avtc
|dlab-anton
dlab-anton
|eonghk
eonghk
| +|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
|zeozeozeo
zeozeozeo
| +|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
|bramburn
bramburn
| +|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|snoyiatk
snoyiatk
|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
| +|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
|mdp
mdp
|napter
napter
| +|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
| +|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
|kinandan
kinandan
|nevermorec
nevermorec
| |bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
| -|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
| -|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
| -|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
|oprstchn
oprstchn
|nobu007
nobu007
| -|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
| -|celestial-vault
celestial-vault
|linegel
linegel
|dbasclpy
dbasclpy
|Deon588
Deon588
|dleen
dleen
|devxpain
devxpain
| -|chadgauth
chadgauth
|olearycrew
olearycrew
|bogdan0083
bogdan0083
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
| -|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
| -|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|SannidhyaSah
SannidhyaSah
| -|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|R-omk
R-omk
|Sarke
Sarke
|kvokka
kvokka
| -|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
| -|shtse8
shtse8
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
|maekawataiki
maekawataiki
|PretzelVector
PretzelVector
| +|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
| +|shaybc
shaybc
|seedlord
seedlord
|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
| +|pokutuna
pokutuna
|philipnext
philipnext
|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
| +|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
| +|linegel
linegel
|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
| +|dleen
dleen
|devxpain
devxpain
|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
| +|benashby
benashby
|Atlogit
Atlogit
|atlasgong
atlasgong
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
| +|HadesArchitect
HadesArchitect
|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
| +|AMHesch
AMHesch
|AlexandruSmirnov
AlexandruSmirnov
|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
| +|R-omk
R-omk
|Sarke
Sarke
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
| +|marvijo-code
marvijo-code
|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
| +|Rexarrior
Rexarrior
|ksze
ksze
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
|pfitz
pfitz
| +|ExactDoug
ExactDoug
|celestial-vault
celestial-vault
| | | | | ## 授權 diff --git a/scripts/update-contributors.js b/scripts/update-contributors.js old mode 100755 new mode 100644 index 32fd645f68..6bd4c35f0c --- a/scripts/update-contributors.js +++ b/scripts/update-contributors.js @@ -183,9 +183,15 @@ async function readReadme() { * @param {Array} contributors Array of contributor objects from GitHub API * @returns {string} HTML for contributors section */ +const EXCLUDED_LOGIN_SUBSTRINGS = ['[bot]', 'R00-B0T']; +const EXCLUDED_LOGIN_EXACTS = ['cursor', 'roomote']; + function formatContributorsSection(contributors) { - // Filter out GitHub Actions bot - const filteredContributors = contributors.filter((c) => !c.login.includes("[bot]") && !c.login.includes("R00-B0T")) + // Filter out GitHub Actions bot, cursor, and roomote + const filteredContributors = contributors.filter((c) => + !EXCLUDED_LOGIN_SUBSTRINGS.some(sub => c.login.includes(sub)) && + !EXCLUDED_LOGIN_EXACTS.includes(c.login) + ) // Start building with Markdown table format let markdown = `${START_MARKER} diff --git a/src/api/providers/xai.ts b/src/api/providers/xai.ts index adcd0d92bf..596c9e89b8 100644 --- a/src/api/providers/xai.ts +++ b/src/api/providers/xai.ts @@ -76,17 +76,21 @@ export class XAIHandler extends BaseProvider implements SingleCompletionHandler } if (chunk.usage) { + // Extract detailed token information if available + // First check for prompt_tokens_details structure (real API response) + const promptDetails = "prompt_tokens_details" in chunk.usage ? chunk.usage.prompt_tokens_details : null; + const cachedTokens = promptDetails && "cached_tokens" in promptDetails ? promptDetails.cached_tokens : 0; + + // Fall back to direct fields in usage (used in test mocks) + const readTokens = cachedTokens || ("cache_read_input_tokens" in chunk.usage ? (chunk.usage as any).cache_read_input_tokens : 0); + const writeTokens = "cache_creation_input_tokens" in chunk.usage ? (chunk.usage as any).cache_creation_input_tokens : 0; + yield { type: "usage", inputTokens: chunk.usage.prompt_tokens || 0, outputTokens: chunk.usage.completion_tokens || 0, - // X.AI might include these fields in the future, handle them if present. - cacheReadTokens: - "cache_read_input_tokens" in chunk.usage ? (chunk.usage as any).cache_read_input_tokens : 0, - cacheWriteTokens: - "cache_creation_input_tokens" in chunk.usage - ? (chunk.usage as any).cache_creation_input_tokens - : 0, + cacheReadTokens: readTokens, + cacheWriteTokens: writeTokens, } } } diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index d1bb705ced..10a74712ef 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -1,4 +1,3 @@ -import { safeWriteJson } from "../../utils/safeWriteJson" import { Client } from "@modelcontextprotocol/sdk/client/index.js" import { StdioClientTransport, getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js" import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js" @@ -32,7 +31,7 @@ import { } from "../../shared/mcp" import { fileExistsAtPath } from "../../utils/fs" import { arePathsEqual } from "../../utils/path" -import { injectEnv } from "../../utils/config" +import { injectVariables } from "../../utils/config" export type McpConnection = { server: McpServer @@ -46,6 +45,7 @@ const BaseConfigSchema = z.object({ timeout: z.number().min(1).max(3600).optional().default(60), alwaysAllow: z.array(z.string()).default([]), watchPaths: z.array(z.string()).optional(), // paths to watch for changes and restart server + disabledTools: z.array(z.string()).default([]), }) // Custom error messages for better user feedback @@ -243,9 +243,10 @@ export class McpHub { public setupWorkspaceFoldersWatcher(): void { // Skip if test environment is detected - if (process.env.NODE_ENV === "test" || process.env.JEST_WORKER_ID !== undefined) { + if (process.env.NODE_ENV === "test") { return } + this.disposables.push( vscode.workspace.onDidChangeWorkspaceFolders(async () => { await this.updateProjectMcpServers() @@ -315,11 +316,7 @@ export class McpHub { private async watchProjectMcpFile(): Promise { // Skip if test environment is detected or VSCode APIs are not available - if ( - process.env.NODE_ENV === "test" || - process.env.JEST_WORKER_ID !== undefined || - !vscode.workspace.createFileSystemWatcher - ) { + if (process.env.NODE_ENV === "test" || !vscode.workspace.createFileSystemWatcher) { return } @@ -452,11 +449,7 @@ export class McpHub { private async watchMcpSettingsFile(): Promise { // Skip if test environment is detected or VSCode APIs are not available - if ( - process.env.NODE_ENV === "test" || - process.env.JEST_WORKER_ID !== undefined || - !vscode.workspace.createFileSystemWatcher - ) { + if (process.env.NODE_ENV === "test" || !vscode.workspace.createFileSystemWatcher) { return } @@ -580,13 +573,32 @@ export class McpHub { let transport: StdioClientTransport | SSEClientTransport | StreamableHTTPClientTransport - // Inject environment variables to the config - const configInjected = (await injectEnv(config)) as typeof config + // Inject variables to the config (environment, magic variables,...) + const configInjected = (await injectVariables(config, { + env: process.env, + workspaceFolder: vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ?? "", + })) as typeof config if (configInjected.type === "stdio") { + // On Windows, wrap commands with cmd.exe to handle non-exe executables like npx.ps1 + // This is necessary for node version managers (fnm, nvm-windows, volta) that implement + // commands as PowerShell scripts rather than executables. + // Note: This adds a small overhead as commands go through an additional shell layer. + const isWindows = process.platform === "win32" + + // Check if command is already cmd.exe to avoid double-wrapping + const isAlreadyWrapped = + configInjected.command.toLowerCase() === "cmd.exe" || configInjected.command.toLowerCase() === "cmd" + + const command = isWindows && !isAlreadyWrapped ? "cmd.exe" : configInjected.command + const args = + isWindows && !isAlreadyWrapped + ? ["/c", configInjected.command, ...(configInjected.args || [])] + : configInjected.args + transport = new StdioClientTransport({ - command: configInjected.command, - args: configInjected.args, + command, + args, cwd: configInjected.cwd, env: { ...getDefaultEnvironment(), @@ -824,34 +836,39 @@ export class McpHub { const actualSource = connection.server.source || "global" let configPath: string let alwaysAllowConfig: string[] = [] + let disabledToolsList: string[] = [] // Read from the appropriate config file based on the actual source try { + let serverConfigData: Record = {} if (actualSource === "project") { // Get project MCP config path const projectMcpPath = await this.getProjectMcpPath() if (projectMcpPath) { configPath = projectMcpPath const content = await fs.readFile(configPath, "utf-8") - const config = JSON.parse(content) - alwaysAllowConfig = config.mcpServers?.[serverName]?.alwaysAllow || [] + serverConfigData = JSON.parse(content) } } else { // Get global MCP settings path configPath = await this.getMcpSettingsFilePath() const content = await fs.readFile(configPath, "utf-8") - const config = JSON.parse(content) - alwaysAllowConfig = config.mcpServers?.[serverName]?.alwaysAllow || [] + serverConfigData = JSON.parse(content) + } + if (serverConfigData) { + alwaysAllowConfig = serverConfigData.mcpServers?.[serverName]?.alwaysAllow || [] + disabledToolsList = serverConfigData.mcpServers?.[serverName]?.disabledTools || [] } } catch (error) { - console.error(`Failed to read alwaysAllow config for ${serverName}:`, error) - // Continue with empty alwaysAllowConfig + console.error(`Failed to read tool configuration for ${serverName}:`, error) + // Continue with empty configs } - // Mark tools as always allowed based on settings + // Mark tools as always allowed and enabled for prompt based on settings const tools = (response?.tools || []).map((tool) => ({ ...tool, alwaysAllow: alwaysAllowConfig.includes(tool.name), + enabledForPrompt: !disabledToolsList.includes(tool.name), })) return tools @@ -1197,21 +1214,7 @@ export class McpHub { }) // Send sorted servers to webview - // Try to get the currently visible ClineProvider instance first - let targetProvider: ClineProvider | undefined = undefined - try { - // ClineProvider.getInstance() can focus the view if not visible, - // and returns a Promise - const instancePromise = ClineProvider.getInstance() - if (instancePromise) { - targetProvider = await instancePromise - } - } catch (error) {} - - // Fallback to the providerRef if getInstance didn't yield a provider - if (!targetProvider) { - targetProvider = this.providerRef.deref() - } + const targetProvider: ClineProvider | undefined = this.providerRef.deref() if (targetProvider) { const serversToSend = sortedConnections.map((connection) => connection.server) @@ -1341,7 +1344,7 @@ export class McpHub { mcpServers: config.mcpServers, } - await safeWriteJson(configPath, updatedConfig) + await fs.writeFile(configPath, JSON.stringify(updatedConfig, null, 2)) } public async updateServerTimeout( @@ -1419,7 +1422,7 @@ export class McpHub { mcpServers: config.mcpServers, } - await safeWriteJson(configPath, updatedConfig) + await fs.writeFile(configPath, JSON.stringify(updatedConfig, null, 2)) // Update server connections with the correct source await this.updateServerConnections(config.mcpServers, serverSource) @@ -1494,83 +1497,114 @@ export class McpHub { ) } - async toggleToolAlwaysAllow( + /** + * Helper method to update a specific tool list (alwaysAllow or disabledTools) + * in the appropriate settings file. + * @param serverName The name of the server to update + * @param source Whether to update the global or project config + * @param toolName The name of the tool to add or remove + * @param listName The name of the list to modify ("alwaysAllow" or "disabledTools") + * @param addTool Whether to add (true) or remove (false) the tool from the list + */ + private async updateServerToolList( serverName: string, source: "global" | "project", toolName: string, - shouldAllow: boolean, + listName: "alwaysAllow" | "disabledTools", + addTool: boolean, ): Promise { - try { - // Find the connection with matching name and source - const connection = this.findConnection(serverName, source) + // Find the connection with matching name and source + const connection = this.findConnection(serverName, source) - if (!connection) { - throw new Error(`Server ${serverName} with source ${source} not found`) - } + if (!connection) { + throw new Error(`Server ${serverName} with source ${source} not found`) + } - // Determine the correct config path based on the source - let configPath: string - if (source === "project") { - // Get project MCP config path - const projectMcpPath = await this.getProjectMcpPath() - if (!projectMcpPath) { - throw new Error("Project MCP configuration file not found") - } - configPath = projectMcpPath - } else { - // Get global MCP settings path - configPath = await this.getMcpSettingsFilePath() + // Determine the correct config path based on the source + let configPath: string + if (source === "project") { + // Get project MCP config path + const projectMcpPath = await this.getProjectMcpPath() + if (!projectMcpPath) { + throw new Error("Project MCP configuration file not found") } + configPath = projectMcpPath + } else { + // Get global MCP settings path + configPath = await this.getMcpSettingsFilePath() + } - // Normalize path for cross-platform compatibility - // Use a consistent path format for both reading and writing - const normalizedPath = process.platform === "win32" ? configPath.replace(/\\/g, "/") : configPath + // Normalize path for cross-platform compatibility + // Use a consistent path format for both reading and writing + const normalizedPath = process.platform === "win32" ? configPath.replace(/\\/g, "/") : configPath - // Read the appropriate config file - const content = await fs.readFile(normalizedPath, "utf-8") - const config = JSON.parse(content) + // Read the appropriate config file + const content = await fs.readFile(normalizedPath, "utf-8") + const config = JSON.parse(content) - // Initialize mcpServers if it doesn't exist - if (!config.mcpServers) { - config.mcpServers = {} - } + if (!config.mcpServers) { + config.mcpServers = {} + } - // Initialize server config if it doesn't exist - if (!config.mcpServers[serverName]) { - config.mcpServers[serverName] = { - type: "stdio", - command: "node", - args: [], // Default to an empty array; can be set later if needed - } + if (!config.mcpServers[serverName]) { + config.mcpServers[serverName] = { + type: "stdio", + command: "node", + args: [], // Default to an empty array; can be set later if needed } + } - // Initialize alwaysAllow if it doesn't exist - if (!config.mcpServers[serverName].alwaysAllow) { - config.mcpServers[serverName].alwaysAllow = [] - } + if (!config.mcpServers[serverName][listName]) { + config.mcpServers[serverName][listName] = [] + } - const alwaysAllow = config.mcpServers[serverName].alwaysAllow - const toolIndex = alwaysAllow.indexOf(toolName) + const targetList = config.mcpServers[serverName][listName] + const toolIndex = targetList.indexOf(toolName) - if (shouldAllow && toolIndex === -1) { - // Add tool to always allow list - alwaysAllow.push(toolName) - } else if (!shouldAllow && toolIndex !== -1) { - // Remove tool from always allow list - alwaysAllow.splice(toolIndex, 1) - } + if (addTool && toolIndex === -1) { + targetList.push(toolName) + } else if (!addTool && toolIndex !== -1) { + targetList.splice(toolIndex, 1) + } - // Write updated config back to file - await safeWriteJson(normalizedPath, config) + await fs.writeFile(normalizedPath, JSON.stringify(config, null, 2)) - // Update the tools list to reflect the change - if (connection) { - // Explicitly pass the source to ensure we're updating the correct server's tools - connection.server.tools = await this.fetchToolsList(serverName, source) - await this.notifyWebviewOfServerChanges() - } + if (connection) { + connection.server.tools = await this.fetchToolsList(serverName, source) + await this.notifyWebviewOfServerChanges() + } + } + + async toggleToolAlwaysAllow( + serverName: string, + source: "global" | "project", + toolName: string, + shouldAllow: boolean, + ): Promise { + try { + await this.updateServerToolList(serverName, source, toolName, "alwaysAllow", shouldAllow) + } catch (error) { + this.showErrorMessage( + `Failed to toggle always allow for tool "${toolName}" on server "${serverName}" with source "${source}"`, + error, + ) + throw error + } + } + + async toggleToolEnabledForPrompt( + serverName: string, + source: "global" | "project", + toolName: string, + isEnabled: boolean, + ): Promise { + try { + // When isEnabled is true, we want to remove the tool from the disabledTools list. + // When isEnabled is false, we want to add the tool to the disabledTools list. + const addToolToDisabledList = !isEnabled + await this.updateServerToolList(serverName, source, toolName, "disabledTools", addToolToDisabledList) } catch (error) { - this.showErrorMessage(`Failed to update always allow settings for tool ${toolName}`, error) + this.showErrorMessage(`Failed to update settings for tool ${toolName}`, error) throw error // Re-throw to ensure the error is properly handled } } diff --git a/src/services/mcp/__tests__/McpHub.spec.ts b/src/services/mcp/__tests__/McpHub.spec.ts index 7dc7f00c04..98ef4514c2 100644 --- a/src/services/mcp/__tests__/McpHub.spec.ts +++ b/src/services/mcp/__tests__/McpHub.spec.ts @@ -93,6 +93,7 @@ describe("McpHub", () => { // Mock console.error to suppress error messages during tests console.error = vi.fn() + const mockUri: Uri = { scheme: "file", authority: "", From 7ecb74e9ee33069cf8e9d17da69d5e761108bb66 Mon Sep 17 00:00:00 2001 From: Felix Anhalt <40368420+felixAnhalt@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:52:30 +0200 Subject: [PATCH 59/66] feat(file-editing): add file-based editing options and settings (#2) * feat(file-editing): add file-based editing options and settings * feat(settings): add file-based editing options and update diff settings * feat(settings): update file-system editing options and refine tab group behavior * feat(settings): add editing type and diff settings configurations * feat(settings): add editing type and diff settings configurations * feat(settings): add editing type and file editing options with descriptions * feat(settings): update autoFocus and autoClose settings descriptions for clarity * feat(diffEditor): fix logic to work with configurations --- packages/types/src/global-settings.ts | 8 + packages/types/src/provider-settings.ts | 5 - src/core/config/ProviderSettingsManager.ts | 41 -- src/core/task/Task.ts | 9 +- src/core/webview/ClineProvider.ts | 12 + src/core/webview/webviewMessageHandler.ts | 33 ++ src/integrations/editor/DiffViewProvider.ts | 186 ++++---- .../editor/EditingProviderFactory.ts | 34 ++ src/integrations/editor/FileWriter.ts | 332 +++++++++++++ src/integrations/editor/IEditingProvider.ts | 76 +++ .../__tests__/EditingProviderFactory.spec.ts | 98 ++++ .../editor/__tests__/FileWriter.spec.ts | 235 ++++++++++ src/package.json | 20 + src/shared/ExtensionMessage.ts | 6 + src/shared/WebviewMessage.ts | 3 + .../src/components/settings/ApiOptions.tsx | 9 - .../settings/DiffSettingsControl.tsx | 199 -------- .../settings/FileEditingOptions.tsx | 440 ++++++++++++++++++ .../src/components/settings/SettingsView.tsx | 52 ++- .../settings/__tests__/ApiOptions.spec.tsx | 15 +- .../__tests__/FileEditingOptions.spec.tsx | 256 ++++++++++ .../src/context/ExtensionStateContext.tsx | 40 +- webview-ui/src/i18n/locales/ca/settings.json | 33 +- webview-ui/src/i18n/locales/de/settings.json | 33 +- webview-ui/src/i18n/locales/en/settings.json | 33 +- webview-ui/src/i18n/locales/es/settings.json | 33 +- webview-ui/src/i18n/locales/fr/settings.json | 33 +- webview-ui/src/i18n/locales/hi/settings.json | 33 +- webview-ui/src/i18n/locales/id/settings.json | 45 +- webview-ui/src/i18n/locales/it/settings.json | 33 +- webview-ui/src/i18n/locales/ja/settings.json | 33 +- webview-ui/src/i18n/locales/ko/settings.json | 33 +- webview-ui/src/i18n/locales/nl/settings.json | 33 +- webview-ui/src/i18n/locales/pl/settings.json | 33 +- .../src/i18n/locales/pt-BR/settings.json | 33 +- webview-ui/src/i18n/locales/ru/settings.json | 33 +- webview-ui/src/i18n/locales/tr/settings.json | 33 +- webview-ui/src/i18n/locales/vi/settings.json | 33 +- .../src/i18n/locales/zh-CN/settings.json | 33 +- .../src/i18n/locales/zh-TW/settings.json | 33 +- 40 files changed, 2317 insertions(+), 398 deletions(-) create mode 100644 src/integrations/editor/EditingProviderFactory.ts create mode 100644 src/integrations/editor/FileWriter.ts create mode 100644 src/integrations/editor/IEditingProvider.ts create mode 100644 src/integrations/editor/__tests__/EditingProviderFactory.spec.ts create mode 100644 src/integrations/editor/__tests__/FileWriter.spec.ts delete mode 100644 webview-ui/src/components/settings/DiffSettingsControl.tsx create mode 100644 webview-ui/src/components/settings/FileEditingOptions.tsx create mode 100644 webview-ui/src/components/settings/__tests__/FileEditingOptions.spec.tsx diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index 0c1f9af463..66c0000ec6 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -82,11 +82,16 @@ export const globalSettingsSchema = z.object({ terminalCompressProgressBar: z.boolean().optional(), rateLimitSeconds: z.number().optional(), + diffEnabled: z.boolean().optional(), diffViewAutoFocus: z.boolean().optional(), autoCloseRooTabs: z.boolean().optional(), autoCloseAllRooTabs: z.boolean().optional(), + fileBasedEditing: z.boolean().optional(), + openTabsInCorrectGroup: z.boolean().optional(), + openTabsAtEndOfList: z.boolean().optional(), fuzzyMatchThreshold: z.number().optional(), + experiments: experimentsSchema.optional(), codebaseIndexModels: codebaseIndexModelsSchema.optional(), @@ -216,6 +221,9 @@ export const EVALS_SETTINGS: RooCodeSettings = { terminalShellIntegrationDisabled: true, diffEnabled: true, + fileBasedEditing: false, + openTabsInCorrectGroup: false, + openTabsAtEndOfList: false, fuzzyMatchThreshold: 1, enableCheckpoints: false, diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 9e5eec3a43..d4364b4975 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -55,11 +55,6 @@ export type ProviderSettingsEntry = z.infer const baseProviderSettingsSchema = z.object({ includeMaxTokens: z.boolean().optional(), - diffEnabled: z.boolean().optional(), - diffViewAutoFocus: z.boolean().optional(), - autoCloseRooTabs: z.boolean().optional(), - autoCloseAllRooTabs: z.boolean().optional(), - fuzzyMatchThreshold: z.number().optional(), modelTemperature: z.number().nullish(), rateLimitSeconds: z.number().optional(), diff --git a/src/core/config/ProviderSettingsManager.ts b/src/core/config/ProviderSettingsManager.ts index 32c0135d3b..c1214ff4e1 100644 --- a/src/core/config/ProviderSettingsManager.ts +++ b/src/core/config/ProviderSettingsManager.ts @@ -123,12 +123,6 @@ export class ProviderSettingsManager { isDirty = true } - if (!providerProfiles.migrations.diffSettingsMigrated) { - await this.migrateDiffSettings(providerProfiles) - providerProfiles.migrations.diffSettingsMigrated = true - isDirty = true - } - if (!providerProfiles.migrations.openAiHeadersMigrated) { await this.migrateOpenAiHeaders(providerProfiles) providerProfiles.migrations.openAiHeadersMigrated = true @@ -169,41 +163,6 @@ export class ProviderSettingsManager { } } - private async migrateDiffSettings(providerProfiles: ProviderProfiles) { - try { - let diffEnabled: boolean | undefined - let fuzzyMatchThreshold: number | undefined - - try { - diffEnabled = await this.context.globalState.get("diffEnabled") - fuzzyMatchThreshold = await this.context.globalState.get("fuzzyMatchThreshold") - } catch (error) { - console.error("[MigrateDiffSettings] Error getting global diff settings:", error) - } - - if (diffEnabled === undefined) { - // Failed to get the existing value, use the default. - diffEnabled = true - } - - if (fuzzyMatchThreshold === undefined) { - // Failed to get the existing value, use the default. - fuzzyMatchThreshold = 1.0 - } - - for (const [_name, apiConfig] of Object.entries(providerProfiles.apiConfigs)) { - if (apiConfig.diffEnabled === undefined) { - apiConfig.diffEnabled = diffEnabled - } - if (apiConfig.fuzzyMatchThreshold === undefined) { - apiConfig.fuzzyMatchThreshold = fuzzyMatchThreshold - } - } - } catch (error) { - console.error(`[MigrateDiffSettings] Failed to migrate diff settings:`, error) - } - } - private async migrateOpenAiHeaders(providerProfiles: ProviderProfiles) { try { for (const [_name, apiConfig] of Object.entries(providerProfiles.apiConfigs)) { diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 0ab33c2920..94ec758845 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -48,7 +48,8 @@ import { McpServerManager } from "../../services/mcp/McpServerManager" import { RepoPerTaskCheckpointService } from "../../services/checkpoints" // integrations -import { DiffViewProvider } from "../../integrations/editor/DiffViewProvider" +import { IEditingProvider } from "../../integrations/editor/IEditingProvider" +import { EditingProviderFactory } from "../../integrations/editor/EditingProviderFactory" import { findToolName, formatContentBlockToMarkdown } from "../../integrations/misc/export-markdown" import { RooTerminalProcess } from "../../integrations/terminal/types" import { TerminalRegistry } from "../../integrations/terminal/TerminalRegistry" @@ -162,7 +163,7 @@ export class Task extends EventEmitter { browserSession: BrowserSession // Editing - diffViewProvider: DiffViewProvider + diffViewProvider: IEditingProvider diffStrategy?: DiffStrategy diffEnabled: boolean = false fuzzyMatchThreshold: number @@ -250,7 +251,7 @@ export class Task extends EventEmitter { this.consecutiveMistakeLimit = consecutiveMistakeLimit this.providerRef = new WeakRef(provider) this.globalStoragePath = provider.context.globalStorageUri.fsPath - this.diffViewProvider = new DiffViewProvider(this.cwd) + this.diffViewProvider = EditingProviderFactory.createEditingProvider(this.cwd) this.enableCheckpoints = enableCheckpoints this.rootTask = rootTask @@ -1117,7 +1118,7 @@ export class Task extends EventEmitter { getCheckpointService(this) // Lets track if the user is interacting with the editor after we start our task loop. this.diffViewProvider.initialize() - this.diffViewProvider.disableAutoFocusAfterUserInteraction() + this.diffViewProvider.disableAutoFocusAfterUserInteraction?.() let nextUserContent = userContent let includeFileDetails = true diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index e120de5769..c5373a35d9 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1361,6 +1361,10 @@ export class ClineProvider diffEnabled, diffViewAutoFocus, autoCloseRooTabs, + autoCloseAllRooTabs, + fileBasedEditing, + openTabsInCorrectGroup, + openTabsAtEndOfList, enableCheckpoints, taskHistory, soundVolume, @@ -1455,6 +1459,10 @@ export class ClineProvider diffEnabled: diffEnabled ?? true, diffViewAutoFocus: diffViewAutoFocus ?? true, autoCloseRooTabs: autoCloseRooTabs ?? false, + autoCloseAllRooTabs: autoCloseAllRooTabs ?? false, + fileBasedEditing, + openTabsInCorrectGroup, + openTabsAtEndOfList, enableCheckpoints: enableCheckpoints ?? true, shouldShowAnnouncement: telemetrySetting !== "unset" && lastShownAnnouncementId !== this.latestAnnouncementId, @@ -1616,6 +1624,10 @@ export class ClineProvider diffEnabled: stateValues.diffEnabled ?? true, diffViewAutoFocus: stateValues.diffViewAutoFocus ?? false, autoCloseRooTabs: stateValues.autoCloseRooTabs ?? false, + autoCloseAllRooTabs: stateValues.autoCloseAllRooTabs ?? false, + fileBasedEditing: stateValues.fileBasedEditing ?? false, + openTabsInCorrectGroup: stateValues.openTabsInCorrectGroup ?? false, + openTabsAtEndOfList: stateValues.openTabsAtEndOfList ?? false, enableCheckpoints: stateValues.enableCheckpoints ?? true, soundVolume: stateValues.soundVolume, browserViewportSize: stateValues.browserViewportSize ?? "900x600", diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index ed0b125231..4662ff0218 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -779,9 +779,42 @@ export const webviewMessageHandler = async ( break case "diffEnabled": const diffEnabled = message.bool ?? true + await provider.context.globalState.update("diffEnabled", diffEnabled) + // Also update workspace settings + await vscode.workspace.getConfiguration("roo-cline").update("diffEnabled", diffEnabled, vscode.ConfigurationTarget.Global) await updateGlobalState("diffEnabled", diffEnabled) await provider.postStateToWebview() break + case "fileBasedEditing": + const fileBasedEditing = message.bool ?? false + await provider.context.globalState.update("fileBasedEditing", fileBasedEditing) + // Also update workspace settings + await vscode.workspace + .getConfiguration("roo-cline") + .update("fileBasedEditing", fileBasedEditing, vscode.ConfigurationTarget.Global) + await updateGlobalState("fileBasedEditing", fileBasedEditing) + await provider.postStateToWebview() + break + case "openTabsInCorrectGroup": + const openTabsInCorrectGroup = message.bool ?? false + await provider.context.globalState.update("openTabsInCorrectGroup", openTabsInCorrectGroup) + // Also update workspace settings + await vscode.workspace + .getConfiguration("roo-cline") + .update("openTabsInCorrectGroup", openTabsInCorrectGroup, vscode.ConfigurationTarget.Global) + await updateGlobalState("openTabsInCorrectGroup", openTabsInCorrectGroup) + await provider.postStateToWebview() + break + case "openTabsAtEndOfList": + const openTabsAtEndOfList = message.bool ?? false + await provider.context.globalState.update("openTabsAtEndOfList", openTabsAtEndOfList) + // Also update workspace settings + await vscode.workspace + .getConfiguration("roo-cline") + .update("openTabsAtEndOfList", openTabsAtEndOfList, vscode.ConfigurationTarget.Global) + await updateGlobalState("openTabsAtEndOfList", openTabsAtEndOfList) + await provider.postStateToWebview() + break case "enableCheckpoints": const enableCheckpoints = message.bool ?? true await updateGlobalState("enableCheckpoints", enableCheckpoints) diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 5dde3c2185..33920da690 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -17,6 +17,7 @@ import { DecorationController } from "./DecorationController" import { ClineProvider } from "../../core/webview/ClineProvider" import { UserInteractionProvider } from "./UserInteractionProvider" import { PostDiffViewBehaviorUtils } from "./PostDiffViewBehaviorUtils" +import { IEditingProvider } from "./IEditingProvider" export const DIFF_VIEW_URI_SCHEME = "cline-diff" export const DIFF_VIEW_LABEL_CHANGES = "Original ↔ Roo's Changes" @@ -25,10 +26,12 @@ interface DiffSettings { autoFocus: boolean autoCloseRooTabs: boolean autoCloseAllRooTabs: boolean + openTabsAtEndOfList: boolean + openTabsInCorrectGroup: boolean } // TODO: https://github.com/cline/cline/pull/3354 -export class DiffViewProvider { +export class DiffViewProvider implements IEditingProvider { // Properties to store the results of saveChanges newProblemsMessage?: string userEdits?: string @@ -49,7 +52,7 @@ export class DiffViewProvider { private autoFocus: boolean | undefined = undefined private autoCloseAllRooTabs: boolean = false // Added new setting // have to set the default view column to -1 since we need to set it in the initialize method and during initialization the enum ViewColumn is undefined - private viewColumn: ViewColumn = -1 // ViewColumn.Active + private viewColumn: ViewColumn | undefined = -1 // ViewColumn.Active private userInteractionProvider: UserInteractionProvider private suppressInteractionFlag: boolean = false private preDiffActiveEditor?: vscode.TextEditor // Store active editor before diff operation @@ -98,6 +101,12 @@ export class DiffViewProvider { this.postDiffBehaviorUtils.updateContext({ autoCloseAllRooTabs: this.autoCloseAllRooTabs, }) + + // + if (!settings.openTabsInCorrectGroup) { + // If openTabsInCorrectGroup is false, we want to open the diff editor in the active group + this.viewColumn = undefined + } } private async _readDiffSettings(): Promise { @@ -105,7 +114,9 @@ export class DiffViewProvider { const autoFocus = config.get("diffViewAutoFocus", true) const autoCloseRooTabs = config.get("autoCloseRooTabs", false) const autoCloseAllRooTabs = config.get("autoCloseAllRooTabs", false) - return { autoFocus, autoCloseRooTabs, autoCloseAllRooTabs } + const openTabsAtEndOfList = config.get("openTabsAtEndOfList", false) + const openTabsInCorrectGroup = config.get("openTabsInCorrectGroup", true) + return { autoFocus, autoCloseRooTabs, autoCloseAllRooTabs, openTabsAtEndOfList, openTabsInCorrectGroup } } private async showTextDocumentSafe({ @@ -152,11 +163,14 @@ export class DiffViewProvider { * @param relPath The relative file path to open. * @param viewColumn (Optional) The VSCode editor group to open the diff in. */ - async open(relPath: string, viewColumn: ViewColumn): Promise { + async open(relPath: string, viewColumn: ViewColumn = ViewColumn.Active): Promise { // Store the pre-diff active editor for potential focus restoration this.preDiffActiveEditor = vscode.window.activeTextEditor - this.viewColumn = viewColumn + const settings = await this._readDiffSettings() // Dynamically read settings + if (settings.openTabsInCorrectGroup) { + this.viewColumn = viewColumn + } // Update PostDiffviewBehaviorUtils context with current state this.postDiffBehaviorUtils.updateContext({ @@ -247,6 +261,10 @@ export class DiffViewProvider { * For new/unopened files: Places at the end of the currently active editor group. */ private async prepareDiffViewPlacement(absolutePath: string): Promise { + const { openTabsAtEndOfList, openTabsInCorrectGroup } = await this._readDiffSettings() // Dynamically read settings + if (!openTabsAtEndOfList || !openTabsInCorrectGroup) { + return + } if (!this.documentWasOpen) { // focus the last tab in the active group const activeGroup = vscode.window.tabGroups.activeTabGroup @@ -697,7 +715,7 @@ export class DiffViewProvider { const textDocumentShowOptions: TextDocumentShowOptions = { preview: false, preserveFocus: !settings.autoFocus, // Use dynamically read autoFocus - viewColumn: this.viewColumn, + viewColumn: this.viewColumn ?? ViewColumn.Beside, // Use the viewColumn set during initialization } // set interaction flag to true to prevent autoFocus from being triggered this.suppressInteractionFlag = true @@ -705,87 +723,95 @@ export class DiffViewProvider { const previousEditor = vscode.window.activeTextEditor this.prepareDiffViewPlacement(rightUri.fsPath).then(() => { - this.showTextDocumentSafe({ - uri: rightUri, - options: { - ...textDocumentShowOptions, - viewColumn: this.viewColumn, // Ensure we use the correct view column - }, - }).then( - () => { - vscode.commands - .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) - .then( - async () => { - // set interaction flag to false to allow autoFocus to be triggered - this.suppressInteractionFlag = false - - // Get the active text editor, which should be the diff editor opened by vscode.diff - const diffEditor = vscode.window.activeTextEditor - - // Ensure we have a valid editor and it's the one we expect (the right side of the diff) - if ( - !diffEditor || - !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath) - ) { - cleanup() - reject( - new Error( - `Failed to execute diff command for ${rightUri.fsPath}: No active editor found.`, - ), - ) - return - } - - this.activeDiffEditor = diffEditor // Assign to activeDiffEditor - - // Ensure rightUri is tracked even if not explicitly shown again - this.rooOpenedTabs.add(rightUri.toString()) - - // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. - if (!settings.autoFocus) { - // Use dynamically read autoFocus - // Add a small delay to allow VS Code to potentially set focus first, - // then clear it. - await new Promise((resolve) => setTimeout(resolve, 50)) - const beginningOfDocument = new vscode.Position(0, 0) - diffEditor.selection = new vscode.Selection( - beginningOfDocument, - beginningOfDocument, - ) - } - - // if this happens in a window different from the active one, we need to show the document - if (previousEditor) { - await this.showTextDocumentSafe({ - textDocument: previousEditor.document, - options: { - preview: false, - preserveFocus: false, - selection: previousEditor.selection, - viewColumn: previousEditor.viewColumn, - }, - }) - } - - cleanup() - resolve(diffEditor) - }, - (err) => { + const vscodeDiffCommand = () => { + return vscode.commands + .executeCommand("vscode.diff", leftUri, rightUri, title, textDocumentShowOptions) + .then( + async () => { + // set interaction flag to false to allow autoFocus to be triggered + this.suppressInteractionFlag = false + + // Get the active text editor, which should be the diff editor opened by vscode.diff + const diffEditor = vscode.window.visibleTextEditors.find( + (editor) => editor.document.uri.fsPath === rightUri.fsPath, + ) + + // Ensure we have a valid editor and it's the one we expect (the right side of the diff) + if (!diffEditor || !arePathsEqual(diffEditor.document.uri.fsPath, rightUri.fsPath)) { cleanup() reject( new Error( - `Failed to execute diff command for ${rightUri.fsPath}: ${err.message}`, + `Failed to execute diff command for ${rightUri.fsPath}: No active editor found.`, ), ) - }, - ) - }, - (err) => { + return + } + + this.activeDiffEditor = diffEditor // Assign to activeDiffEditor + + // Ensure rightUri is tracked even if not explicitly shown again + this.rooOpenedTabs.add(rightUri.toString()) + + // If autoFocus is disabled, explicitly clear the selection to prevent cursor focus. + if (!settings.autoFocus) { + // Use dynamically read autoFocus + // Add a small delay to allow VS Code to potentially set focus first, + // then clear it. + await new Promise((resolve) => setTimeout(resolve, 50)) + const beginningOfDocument = new vscode.Position(0, 0) + diffEditor.selection = new vscode.Selection( + beginningOfDocument, + beginningOfDocument, + ) + } + + // if this happens in a window different from the active one, we need to show the document + if (previousEditor && settings.openTabsInCorrectGroup) { + await this.showTextDocumentSafe({ + textDocument: previousEditor.document, + options: { + preview: false, + preserveFocus: false, + selection: previousEditor.selection, + viewColumn: previousEditor.viewColumn, + }, + }) + } + + cleanup() + resolve(diffEditor) + }, + (err) => { + cleanup() + reject( + new Error(`Failed to execute diff command for ${rightUri.fsPath}: ${err.message}`), + ) + }, + ) + } + + if (!settings.openTabsInCorrectGroup) { + vscodeDiffCommand().then( + () => { + cleanup() + }, + (err) => { + cleanup() + reject(new Error(`Failed to execute diff command for ${rightUri.fsPath}: ${err.message}`)) + }, + ) + } else { + this.showTextDocumentSafe({ + uri: rightUri, + options: { + ...textDocumentShowOptions, + viewColumn: this.viewColumn, // Ensure we use the correct view column + }, + }).then(vscodeDiffCommand, (err) => { cleanup() reject(new Error(`Failed to execute diff command for ${rightUri.fsPath}: ${err.message}`)) - }, - ) + }) + } timeoutId = setTimeout(() => { cleanup() diff --git a/src/integrations/editor/EditingProviderFactory.ts b/src/integrations/editor/EditingProviderFactory.ts new file mode 100644 index 0000000000..ccd6a085ef --- /dev/null +++ b/src/integrations/editor/EditingProviderFactory.ts @@ -0,0 +1,34 @@ +import * as vscode from "vscode" +import { DiffViewProvider } from "./DiffViewProvider" +import { FileWriter } from "./FileWriter" +import { IEditingProvider } from "./IEditingProvider" + +/** + * Factory for creating the appropriate editing provider based on user settings + */ +export class EditingProviderFactory { + /** + * Creates an editing provider based on current VSCode settings + * @param cwd The current working directory + * @returns The appropriate editing provider (DiffViewProvider or FileWriter) + */ + static createEditingProvider(cwd: string): IEditingProvider { + const config = vscode.workspace.getConfiguration("roo-cline") + const fileBasedEditing = config.get("fileBasedEditing", false) + + if (fileBasedEditing) { + return new FileWriter(cwd) + } else { + return new DiffViewProvider(cwd) + } + } + + /** + * Checks if file-based editing is currently enabled + * @returns True if file-based editing is enabled, false otherwise + */ + static isFileBasedEditingEnabled(): boolean { + const config = vscode.workspace.getConfiguration("roo-cline") + return config.get("fileBasedEditing", false) + } +} diff --git a/src/integrations/editor/FileWriter.ts b/src/integrations/editor/FileWriter.ts new file mode 100644 index 0000000000..b766d3e74a --- /dev/null +++ b/src/integrations/editor/FileWriter.ts @@ -0,0 +1,332 @@ +import * as vscode from "vscode" +import * as path from "path" +import * as fs from "fs/promises" +import stripBom from "strip-bom" +import { XMLBuilder } from "fast-xml-parser" + +import { createDirectoriesForFile } from "../../utils/fs" +import { getReadablePath } from "../../utils/path" +import { formatResponse } from "../../core/prompts/responses" +import { diagnosticsToProblemsString, getNewDiagnostics } from "../diagnostics" +import { ClineSayTool } from "../../shared/ExtensionMessage" +import { Task } from "../../core/task/Task" +import { IEditingProvider } from "./IEditingProvider" + +interface FileWriterSettings { + fileBasedEditing: boolean + openFilesWithoutFocus: boolean + openTabsInCorrectGroup: boolean + openTabsAtEndOfList: boolean +} + +/** + * FileWriter provides direct file-system editing without diff views. + * It mirrors the API of DiffViewProvider for seamless integration. + */ +export class FileWriter implements IEditingProvider { + // Properties to store the results of saveChanges + newProblemsMessage?: string + userEdits?: string + editType?: "create" | "modify" + isEditing = false + originalContent: string | undefined + private createdDirs: string[] = [] + private relPath?: string + private newContent?: string + private preDiagnostics: [vscode.Uri, vscode.Diagnostic[]][] = [] + + constructor(private cwd: string) {} + + /** + * Initializes the FileWriter (optional setup) + */ + public async initialize(): Promise { + // No initialization needed for file-based editing + } + + /** + * Reads file writing settings from VSCode configuration + */ + private async _readFileWriterSettings(): Promise { + const config = vscode.workspace.getConfiguration("roo-cline") + const fileBasedEditing = config.get("fileBasedEditing", false) + const openFilesWithoutFocus = config.get("openFilesWithoutFocus", false) + const openTabsInCorrectGroup = config.get("openTabsInCorrectGroup", false) + const openTabsAtEndOfList = config.get("openTabsAtEndOfList", false) + + return { + fileBasedEditing, + openFilesWithoutFocus, + openTabsInCorrectGroup, + openTabsAtEndOfList, + } + } + + /** + * Prepares for editing the given relative path file + * @param relPath The relative file path to prepare for editing + * @param viewColumn Optional view column (ignored by FileWriter) + */ + async open(relPath: string, viewColumn?: any): Promise { + this.relPath = relPath + const absolutePath = path.resolve(this.cwd, relPath) + this.isEditing = true + + // Get diagnostics before editing the file + this.preDiagnostics = vscode.languages.getDiagnostics() + + // Check if file exists to set edit type + try { + this.originalContent = await fs.readFile(absolutePath, "utf-8") + this.editType = "modify" + } catch (error) { + this.originalContent = "" + this.editType = "create" + } + + // For new files, create any necessary directories + if (this.editType === "create") { + this.createdDirs = await createDirectoriesForFile(absolutePath) + } + } + + /** + * Updates the file content (writes directly to file system) + * @param accumulatedContent The content to write + * @param isFinal Whether this is the final update + */ + async update(accumulatedContent: string, isFinal: boolean): Promise { + if (!this.relPath) { + throw new Error("Required values not set") + } + + this.newContent = accumulatedContent + const absolutePath = path.resolve(this.cwd, this.relPath) + + if (isFinal) { + // Preserve empty last line if original content had one + const hasEmptyLastLine = this.originalContent?.endsWith("\n") + + if (hasEmptyLastLine && !accumulatedContent.endsWith("\n")) { + accumulatedContent += "\n" + } + + // Write the final content directly to file + await fs.writeFile(absolutePath, this.stripAllBOMs(accumulatedContent), "utf-8") + } + } + + /** + * Finalizes the file changes and returns diagnostics information + */ + async saveChanges(): Promise<{ + newProblemsMessage: string | undefined + userEdits: string | undefined + finalContent: string | undefined + }> { + if (!this.relPath || !this.newContent) { + return { newProblemsMessage: undefined, userEdits: undefined, finalContent: undefined } + } + + const absolutePath = path.resolve(this.cwd, this.relPath) + + // Read the actual file content to check if it matches what we wrote + const finalContent = await fs.readFile(absolutePath, "utf-8") + + // Get diagnostics after editing to detect any new problems + const postDiagnostics = vscode.languages.getDiagnostics() + + const newProblems = await diagnosticsToProblemsString( + getNewDiagnostics(this.preDiagnostics, postDiagnostics), + [ + vscode.DiagnosticSeverity.Error, // only including errors since warnings can be distracting + ], + this.cwd, + ) + + const newProblemsMessage = + newProblems.length > 0 ? `\n\nNew problems detected after saving the file:\n${newProblems}` : "" + + // In file-based editing, there should be no user edits since we write directly + // But we check if the final content differs from what we intended to write + const normalizedNewContent = this.newContent.replace(/\r\n|\n/g, "\n") + const normalizedFinalContent = finalContent.replace(/\r\n|\n/g, "\n") + + if (normalizedFinalContent !== normalizedNewContent) { + // This shouldn't happen in normal file-based editing, but handle it just in case + const userEdits = formatResponse.createPrettyPatch( + this.relPath.toPosix(), + normalizedNewContent, + normalizedFinalContent, + ) + + this.newProblemsMessage = newProblemsMessage + this.userEdits = userEdits + + return { newProblemsMessage, userEdits, finalContent: normalizedFinalContent } + } else { + this.newProblemsMessage = newProblemsMessage + this.userEdits = undefined + + return { newProblemsMessage, userEdits: undefined, finalContent: normalizedFinalContent } + } + } + + /** + * Formats a standardized XML response for file write operations + * @param task The current task context for sending user feedback + * @param cwd Current working directory for path resolution + * @param isNewFile Whether this is a new file or an existing file being modified + * @returns Formatted message and say object for UI feedback + */ + async pushToolWriteResult(task: Task, cwd: string, isNewFile: boolean): Promise { + if (!this.relPath) { + throw new Error("No file path available in FileWriter") + } + + // Only send user_feedback_diff if userEdits exists (shouldn't happen in file-based editing) + if (this.userEdits) { + // Create say object for UI feedback + const say: ClineSayTool = { + tool: isNewFile ? "newFileCreated" : "editedExistingFile", + path: getReadablePath(cwd, this.relPath), + diff: this.userEdits, + } + + // Send the user feedback + await task.say("user_feedback_diff", JSON.stringify(say)) + } + + // Build XML response + const xmlObj = { + file_write_result: { + path: this.relPath, + operation: isNewFile ? "created" : "modified", + user_edits: this.userEdits ? this.userEdits : undefined, + problems: this.newProblemsMessage || undefined, + notice: { + i: [ + "You do not need to re-read the file, as you have seen all changes", + "Proceed with the task using these changes as the new baseline.", + ...(this.userEdits + ? [ + "If the user's edits have addressed part of the task or changed the requirements, adjust your approach accordingly.", + ] + : []), + ], + }, + }, + } + + const builder = new XMLBuilder({ + format: true, + indentBy: "", + suppressEmptyNode: true, + processEntities: false, + tagValueProcessor: (name, value) => { + if (typeof value === "string") { + // Only escape <, >, and & characters + return value.replace(/&/g, "&").replace(//g, ">") + } + return value + }, + attributeValueProcessor: (name, value) => { + if (typeof value === "string") { + // Only escape <, >, and & characters + return value.replace(/&/g, "&").replace(//g, ">") + } + return value + }, + }) + + return builder.build(xmlObj) + } + + /** + * Reverts changes (deletes new files, restores original content for modified files) + */ + async revertChanges(): Promise { + if (!this.relPath) { + return + } + + const fileExists = this.editType === "modify" + const absolutePath = path.resolve(this.cwd, this.relPath) + + if (!fileExists) { + // Delete the newly created file + try { + await fs.unlink(absolutePath) + } catch (error) { + // File might not exist, ignore error + } + + // Remove only the directories we created, in reverse order + for (let i = this.createdDirs.length - 1; i >= 0; i--) { + try { + await fs.rmdir(this.createdDirs[i]) + } catch (error) { + // Directory might not be empty or not exist, ignore error + } + } + } else { + // Restore original content + await fs.writeFile(absolutePath, this.stripAllBOMs(this.originalContent ?? ""), "utf-8") + } + + // Reset state + this.reset() + } + + /** + * Strips all BOM characters from input string + */ + private stripAllBOMs(input: string): string { + let result = input + let previous + + do { + previous = result + result = stripBom(result) + } while (result !== previous) + + return result + } + + /** + * Resets the FileWriter state + */ + async reset(): Promise { + this.editType = undefined + this.isEditing = false + this.originalContent = undefined + this.newContent = undefined + this.createdDirs = [] + this.relPath = undefined + this.preDiagnostics = [] + this.newProblemsMessage = undefined + this.userEdits = undefined + } + + /** + * Resets the FileWriter state (alias for reset for compatibility) + */ + resetWithListeners(): void { + this.reset() + } + + /** + * Scrolls to first diff (no-op for FileWriter since there's no diff view) + */ + scrollToFirstDiff(): void { + // No-op for file-based editing + return + } + + /** + * Disables auto-focus after user interaction (no-op for FileWriter since there's no diff view) + */ + disableAutoFocusAfterUserInteraction(): void { + // No-op for file-based editing + } +} diff --git a/src/integrations/editor/IEditingProvider.ts b/src/integrations/editor/IEditingProvider.ts new file mode 100644 index 0000000000..764b90820d --- /dev/null +++ b/src/integrations/editor/IEditingProvider.ts @@ -0,0 +1,76 @@ +import { Task } from "../../core/task/Task" + +/** + * Interface for editing providers (DiffViewProvider, FileWriter, etc.) + * This allows tools to work with different editing strategies seamlessly + */ +export interface IEditingProvider { + // Properties to store the results of saveChanges + newProblemsMessage?: string + userEdits?: string + editType?: "create" | "modify" + isEditing: boolean + originalContent: string | undefined + + /** + * Initializes the editing provider + */ + initialize(): Promise + + /** + * Prepares for editing the given relative path file + * @param relPath The relative file path to open/prepare for editing + * @param viewColumn Optional view column for diff-based editing (ignored by file-based editing) + */ + open(relPath: string, viewColumn?: any): Promise + + /** + * Updates the content being edited + * @param content The content to apply + * @param isFinal Whether this is the final update + */ + update(content: string, isFinal: boolean): Promise + + /** + * Finalizes the changes and returns diagnostics information + */ + saveChanges(): Promise<{ + newProblemsMessage: string | undefined + userEdits: string | undefined + finalContent: string | undefined + }> + + /** + * Formats a standardized XML response for file write operations + * @param task The current task context for sending user feedback + * @param cwd Current working directory for path resolution + * @param isNewFile Whether this is a new file or an existing file being modified + * @returns Formatted XML response message + */ + pushToolWriteResult(task: Task, cwd: string, isNewFile: boolean): Promise + + /** + * Reverts changes (cancels the editing operation) + */ + revertChanges(): Promise + + /** + * Resets the provider state + */ + reset(): Promise + + /** + * Resets the provider state with listeners cleanup + */ + resetWithListeners(): void + + /** + * Scrolls to first diff (diff providers only, no-op for file providers) + */ + scrollToFirstDiff(): void + + /** + * Disables auto-focus after user interaction (diff providers only, no-op for file providers) + */ + disableAutoFocusAfterUserInteraction?(): void +} diff --git a/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts b/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts new file mode 100644 index 0000000000..59d4a95921 --- /dev/null +++ b/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts @@ -0,0 +1,98 @@ +import { vi, describe, it, expect, beforeEach, afterEach } from "vitest" +import * as vscode from "vscode" + +import { EditingProviderFactory } from "../EditingProviderFactory" +import { DiffViewProvider } from "../DiffViewProvider" +import { FileWriter } from "../FileWriter" + +// Mock VSCode API +const mockGet = vi.fn() +vi.mock("vscode", () => ({ + workspace: { + getConfiguration: vi.fn(() => ({ + get: mockGet, + })), + }, +})) + +// Mock the providers +vi.mock("../DiffViewProvider", () => ({ + DiffViewProvider: vi.fn(), +})) + +vi.mock("../FileWriter", () => ({ + FileWriter: vi.fn(), +})) + +describe("EditingProviderFactory", () => { + const mockCwd = "/test/cwd" + + beforeEach(() => { + vi.clearAllMocks() + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + describe("createEditingProvider", () => { + it("should create FileWriter when fileBasedEditing is enabled", () => { + mockGet.mockReturnValue(true) + + const provider = EditingProviderFactory.createEditingProvider(mockCwd) + + expect(vscode.workspace.getConfiguration).toHaveBeenCalledWith("roo-cline") + expect(mockGet).toHaveBeenCalledWith("fileBasedEditing", false) + expect(FileWriter).toHaveBeenCalledWith(mockCwd) + expect(DiffViewProvider).not.toHaveBeenCalled() + }) + + it("should create DiffViewProvider when fileBasedEditing is disabled", () => { + mockGet.mockReturnValue(false) + + const provider = EditingProviderFactory.createEditingProvider(mockCwd) + + expect(vscode.workspace.getConfiguration).toHaveBeenCalledWith("roo-cline") + expect(mockGet).toHaveBeenCalledWith("fileBasedEditing", false) + expect(DiffViewProvider).toHaveBeenCalledWith(mockCwd) + expect(FileWriter).not.toHaveBeenCalled() + }) + + it("should create DiffViewProvider when fileBasedEditing is undefined", () => { + mockGet.mockReturnValue(undefined) + + const provider = EditingProviderFactory.createEditingProvider(mockCwd) + + expect(DiffViewProvider).toHaveBeenCalledWith(mockCwd) + expect(FileWriter).not.toHaveBeenCalled() + }) + }) + + describe("isFileBasedEditingEnabled", () => { + it("should return true when fileBasedEditing is enabled", () => { + mockGet.mockReturnValue(true) + + const result = EditingProviderFactory.isFileBasedEditingEnabled() + + expect(result).toBe(true) + expect(vscode.workspace.getConfiguration).toHaveBeenCalledWith("roo-cline") + expect(mockGet).toHaveBeenCalledWith("fileBasedEditing", false) + }) + + it("should return false when fileBasedEditing is disabled", () => { + mockGet.mockReturnValue(false) + + const result = EditingProviderFactory.isFileBasedEditingEnabled() + + expect(result).toBe(false) + }) + + it("should return false when fileBasedEditing is undefined", () => { + mockGet.mockReturnValue(undefined) + + const result = EditingProviderFactory.isFileBasedEditingEnabled() + + expect(result).toBe(false) + }) + }) +}) diff --git a/src/integrations/editor/__tests__/FileWriter.spec.ts b/src/integrations/editor/__tests__/FileWriter.spec.ts new file mode 100644 index 0000000000..3d7f3854e9 --- /dev/null +++ b/src/integrations/editor/__tests__/FileWriter.spec.ts @@ -0,0 +1,235 @@ +import { vi, describe, it, expect, beforeEach, afterEach } from "vitest" +import * as vscode from "vscode" +import * as fs from "fs/promises" +import * as path from "path" + +import { FileWriter } from "../FileWriter" +import { Task } from "../../../core/task/Task" + +// Mock VSCode API +vi.mock("vscode", () => ({ + workspace: { + getConfiguration: vi.fn(() => ({ + get: vi.fn(), + })), + }, + languages: { + getDiagnostics: vi.fn(() => []), + }, + DiagnosticSeverity: { + Error: 0, + }, +})) + +// Mock fs module +vi.mock("fs/promises", () => ({ + readFile: vi.fn(), + writeFile: vi.fn(), + unlink: vi.fn(), + rmdir: vi.fn(), +})) + +// Mock other dependencies +vi.mock("../../../utils/fs", () => ({ + createDirectoriesForFile: vi.fn(() => Promise.resolve([])), +})) + +vi.mock("../../diagnostics", () => ({ + diagnosticsToProblemsString: vi.fn(() => Promise.resolve("")), + getNewDiagnostics: vi.fn(() => []), +})) + +vi.mock("../../../utils/path", () => ({ + getReadablePath: vi.fn((cwd, relPath) => relPath), +})) + +vi.mock("../../../core/prompts/responses", () => ({ + formatResponse: { + createPrettyPatch: vi.fn(() => "mock-diff"), + }, +})) + +vi.mock("strip-bom", () => ({ + default: vi.fn((content) => content), +})) + +describe("FileWriter", () => { + let fileWriter: FileWriter + const mockCwd = "/test/cwd" + const mockTask = {} as Task + + beforeEach(() => { + vi.clearAllMocks() + fileWriter = new FileWriter(mockCwd) + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + describe("initialize", () => { + it("should initialize without errors", async () => { + await expect(fileWriter.initialize()).resolves.toBeUndefined() + }) + }) + + describe("open", () => { + it("should open an existing file for modification", async () => { + const mockContent = "existing content" + vi.mocked(fs.readFile).mockResolvedValue(mockContent) + + await fileWriter.open("test.txt") + + expect(fileWriter.editType).toBe("modify") + expect(fileWriter.originalContent).toBe(mockContent) + expect(fileWriter.isEditing).toBe(true) + }) + + it("should open a new file for creation", async () => { + vi.mocked(fs.readFile).mockRejectedValue(new Error("File not found")) + + await fileWriter.open("new-file.txt") + + expect(fileWriter.editType).toBe("create") + expect(fileWriter.originalContent).toBe("") + expect(fileWriter.isEditing).toBe(true) + }) + + it("should handle viewColumn parameter (ignored)", async () => { + vi.mocked(fs.readFile).mockResolvedValue("content") + + await expect(fileWriter.open("test.txt", "SomeViewColumn")).resolves.toBeUndefined() + }) + }) + + describe("update", () => { + beforeEach(async () => { + vi.mocked(fs.readFile).mockResolvedValue("original content") + await fileWriter.open("test.txt") + }) + + it("should write final content to file", async () => { + const content = "new content" + + await fileWriter.update(content, true) + + expect(fs.writeFile).toHaveBeenCalledWith(path.resolve(mockCwd, "test.txt"), content, "utf-8") + }) + + it("should preserve empty last line if original content had one", async () => { + fileWriter.originalContent = "content\n" + const content = "new content" + + await fileWriter.update(content, true) + + expect(fs.writeFile).toHaveBeenCalledWith(path.resolve(mockCwd, "test.txt"), "new content\n", "utf-8") + }) + + it("should not write to file if not final", async () => { + await fileWriter.update("content", false) + + expect(fs.writeFile).not.toHaveBeenCalled() + }) + }) + + describe("saveChanges", () => { + beforeEach(async () => { + vi.mocked(fs.readFile).mockResolvedValue("original content") + await fileWriter.open("test.txt") + await fileWriter.update("new content", true) + }) + + it("should return save results", async () => { + vi.mocked(fs.readFile).mockResolvedValue("new content") + + const result = await fileWriter.saveChanges() + + expect(result).toEqual({ + newProblemsMessage: "", + userEdits: undefined, + finalContent: "new content", + }) + }) + }) + + describe("pushToolWriteResult", () => { + beforeEach(async () => { + vi.mocked(fs.readFile).mockResolvedValue("content") + await fileWriter.open("test.txt") + }) + + it("should return formatted XML response", async () => { + const result = await fileWriter.pushToolWriteResult(mockTask, mockCwd, false) + + expect(result).toContain("") + expect(result).toContain("test.txt") + expect(result).toContain("modified") + }) + + it("should handle new file creation", async () => { + const result = await fileWriter.pushToolWriteResult(mockTask, mockCwd, true) + + expect(result).toContain("created") + }) + }) + + describe("revertChanges", () => { + it("should delete new file and directories", async () => { + vi.mocked(fs.readFile).mockRejectedValue(new Error("File not found")) + await fileWriter.open("new-file.txt") + + await fileWriter.revertChanges() + + expect(fs.unlink).toHaveBeenCalled() + }) + + it("should restore original content for existing file", async () => { + const originalContent = "original content" + vi.mocked(fs.readFile).mockResolvedValue(originalContent) + await fileWriter.open("existing-file.txt") + + await fileWriter.revertChanges() + + expect(fs.writeFile).toHaveBeenCalledWith( + path.resolve(mockCwd, "existing-file.txt"), + originalContent, + "utf-8", + ) + }) + }) + + describe("scrollToFirstDiff", () => { + it("should be a no-op for file-based editing", () => { + expect(() => fileWriter.scrollToFirstDiff()).not.toThrow() + }) + }) + + describe("disableAutoFocusAfterUserInteraction", () => { + it("should be a no-op for file-based editing", () => { + expect(() => fileWriter.disableAutoFocusAfterUserInteraction()).not.toThrow() + }) + }) + + describe("reset", () => { + it("should reset all state", async () => { + vi.mocked(fs.readFile).mockResolvedValue("content") + await fileWriter.open("test.txt") + + await fileWriter.reset() + + expect(fileWriter.editType).toBeUndefined() + expect(fileWriter.isEditing).toBe(false) + expect(fileWriter.originalContent).toBeUndefined() + }) + }) + + describe("resetWithListeners", () => { + it("should call reset", async () => { + const resetSpy = vi.spyOn(fileWriter, "reset") + + fileWriter.resetWithListeners() + + expect(resetSpy).toHaveBeenCalled() + }) + }) +}) diff --git a/src/package.json b/src/package.json index 4661329404..12aba7403a 100644 --- a/src/package.json +++ b/src/package.json @@ -334,6 +334,11 @@ "default": true, "description": "%settings.enableCodeActions.description%" }, + "roo-cline.diffEnabled": { + "type": "boolean", + "default": false, + "description": "%settings.diffEnabled.description%" + }, "roo-cline.diffViewAutoFocus": { "type": "boolean", "default": false, @@ -348,6 +353,21 @@ "type": "boolean", "default": false, "description": "%roo-cline.autoCloseAllRooTabs.description%" + }, + "roo-cline.fileBasedEditing": { + "type": "boolean", + "default": false, + "description": "%roo-cline.fileBasedEditing.description%" + }, + "roo-cline.openTabsInCorrectGroup": { + "type": "boolean", + "default": false, + "description": "%roo-cline.openTabsInCorrectGroup.description%" + }, + "roo-cline.openTabsAtEndOfList": { + "type": "boolean", + "default": false, + "description": "%roo-cline.openTabsAtEndOfList.description%" } } } diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 4a7db33199..f9f32be54b 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -96,6 +96,9 @@ export interface ExtensionMessage { | "indexingStatusUpdate" | "indexCleared" | "codebaseIndexConfig" + | "fileBasedEditing" + | "openTabsInCorrectGroup" + | "openTabsAtEndOfList" | "marketplaceInstallResult" | "marketplaceData" | "shareTaskSuccess" @@ -203,6 +206,9 @@ export type ExtensionState = Pick< | "diffViewAutoFocus" | "autoCloseRooTabs" | "autoCloseAllRooTabs" + | "fileBasedEditing" + | "openTabsInCorrectGroup" + | "openTabsAtEndOfList" | "fuzzyMatchThreshold" // | "experiments" // Optional in GlobalSettings, required here. | "language" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 60e3be1409..e7774613c3 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -87,6 +87,9 @@ export interface WebviewMessage { | "ttsSpeed" | "soundVolume" | "diffEnabled" + | "fileBasedEditing" + | "openTabsInCorrectGroup" + | "openTabsAtEndOfList" | "enableCheckpoints" | "browserViewportSize" | "screenshotQuality" diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index 44760a5545..a2812d60dd 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -63,7 +63,6 @@ import { inputEventTransform, noTransform } from "./transforms" import { ModelInfoView } from "./ModelInfoView" import { ApiErrorMessage } from "./ApiErrorMessage" import { ThinkingBudget } from "./ThinkingBudget" -import { DiffSettingsControl } from "./DiffSettingsControl" import { TemperatureControl } from "./TemperatureControl" import { RateLimitSecondsControl } from "./RateLimitSecondsControl" import { BedrockCustomArn } from "./providers/BedrockCustomArn" @@ -534,14 +533,6 @@ const ApiOptions = ({ {!fromWelcomeView && ( <> - setApiConfigurationField(field, value)} - /> void -} - -interface DiffCheckAutoFocusControlProps { - diffViewAutoFocus: boolean - onChange: (e: any) => void -} - -interface DiffCheckAutoCloseControlProps { - autoCloseRooTabs: boolean - onChange: (e: any) => void -} - -interface DiffCheckAutoCloseAllControlProps { - autoCloseAllRooTabs: boolean - disabled: boolean - onChange: (e: any) => void -} - -interface DiffPrecisionMatchControlProps { - fuzzyMatchThreshold: number - onValueChange: (newValue: number[]) => void -} - -const DiffViewAutoFocusControl: React.FC = ({ diffViewAutoFocus, onChange }) => { - const { t } = useAppTranslation() - return ( -
- - {t("settings:advanced.diff.autoFocus.label")} - -
- {t("settings:advanced.diff.autoFocus.description")} -
-
- ) -} - -const DiffViewAutoCloseControl: React.FC = ({ autoCloseRooTabs, onChange }) => { - const { t } = useAppTranslation() - return ( -
- - {t("settings:advanced.diff.autoClose.label")} - -
- {t("settings:advanced.diff.autoClose.description")} -
-
- ) -} - -const DiffViewAutoCloseAllControl: React.FC = ({ - autoCloseAllRooTabs, - disabled, - onChange, -}) => { - const { t } = useAppTranslation() - return ( -
- - {t("settings:advanced.diff.autoCloseAll.label")} - -
- {t("settings:advanced.diff.autoCloseAll.description")} -
-
- ) -} - -const DiffPrecisionMatchControl: React.FC = ({ - fuzzyMatchThreshold, - onValueChange, -}) => { - const { t } = useAppTranslation() - return ( -
-
- -
- - {Math.round(fuzzyMatchThreshold * 100)}% -
-
- {t("settings:advanced.diff.matchPrecision.description")} -
-
-
- ) -} - -export const DiffSettingsControl: React.FC = ({ - diffEnabled = true, - diffViewAutoFocus = true, - autoCloseRooTabs = false, - autoCloseAllRooTabs = false, - fuzzyMatchThreshold = 1.0, - onChange, -}) => { - const { t } = useAppTranslation() - - const handleDiffEnabledChange = useCallback( - (e: any) => { - onChange("diffEnabled", e.target.checked) - }, - [onChange], - ) - - const handleThresholdChange = useCallback( - (newValue: number[]) => { - onChange("fuzzyMatchThreshold", newValue[0]) - }, - [onChange], - ) - - const handleDiffViewAutoFocusChange = useCallback( - (e: any) => { - onChange("diffViewAutoFocus", e.target.checked) - }, - [onChange], - ) - - const handleAutoCloseRooTabsChange = useCallback( - (e: any) => { - onChange("autoCloseRooTabs", e.target.checked) - // If autoCloseRooTabs is unchecked, also uncheck autoCloseAllRooTabs - if (!e.target.checked) { - onChange("autoCloseAllRooTabs", false) - } - }, - [onChange], - ) - - const handleAutoCloseAllRooTabsChange = useCallback( - (e: any) => { - onChange("autoCloseAllRooTabs", e.target.checked) - }, - [onChange], - ) - - return ( -
-
- - {t("settings:advanced.diff.label")} - -
- {t("settings:advanced.diff.description")} -
-
- - {diffEnabled && ( - <> - - - - - - )} -
- ) -} diff --git a/webview-ui/src/components/settings/FileEditingOptions.tsx b/webview-ui/src/components/settings/FileEditingOptions.tsx new file mode 100644 index 0000000000..4b84b1ba9d --- /dev/null +++ b/webview-ui/src/components/settings/FileEditingOptions.tsx @@ -0,0 +1,440 @@ +import React, { useCallback } from "react" +import { Slider } from "@/components/ui" +import { useAppTranslation } from "@/i18n/TranslationContext" +import { VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" +import { SectionHeader } from "@/components/settings/SectionHeader" +import { Section } from "@/components/settings/Section" + +type FileEditingOptionsField = + | "diffEnabled" + | "fuzzyMatchThreshold" + | "diffViewAutoFocus" + | "autoCloseRooTabs" + | "autoCloseAllRooTabs" + | "fileBasedEditing" + | "openTabsInCorrectGroup" + | "openTabsAtEndOfList" + +interface FileEditingOptionsProps { + diffEnabled?: boolean + diffViewAutoFocus?: boolean + autoCloseRooTabs?: boolean + autoCloseAllRooTabs?: boolean + fuzzyMatchThreshold?: number + fileBasedEditing?: boolean + openTabsInCorrectGroup?: boolean + openTabsAtEndOfList?: boolean + onChange: (field: FileEditingOptionsField, value: any) => void +} + +interface DiffCheckAutoFocusControlProps { + diffViewAutoFocus: boolean + disabled: boolean + onChange: (e: any) => void +} + +interface DiffCheckAutoCloseControlProps { + autoCloseRooTabs: boolean + disabled: boolean + onChange: (e: any) => void +} + +interface DiffCheckAutoCloseAllControlProps { + autoCloseAllRooTabs: boolean + disabled: boolean + onChange: (e: any) => void +} + +interface DiffPrecisionMatchControlProps { + fuzzyMatchThreshold: number + disabled: boolean + onValueChange: (newValue: number[]) => void +} + +interface FileBasedEditingControlProps { + fileBasedEditing: boolean + onChange: (e: any) => void +} + +interface OpenTabsInCorrectGroupControlProps { + openTabsInCorrectGroup: boolean + disabled: boolean + onChange: (e: any) => void +} + +interface OpenTabsAtEndOfListControlProps { + openTabsAtEndOfList: boolean + disabled: boolean + onChange: (e: any) => void +} + +/** + * Control for diff view auto-focus setting + */ +const DiffViewAutoFocusControl: React.FC = ({ + diffViewAutoFocus, + disabled, + onChange, +}) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.diff.autoFocus.label")} + +
+ {t("settings:advanced.diff.autoFocus.description")} +
+
+ ) +} + +/** + * Control for auto-closing Roo tabs setting + */ +const DiffViewAutoCloseControl: React.FC = ({ + autoCloseRooTabs, + disabled, + onChange, +}) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.diff.autoClose.label")} + +
+ {t("settings:advanced.diff.autoClose.description")} +
+
+ ) +} + +/** + * Control for auto-closing all Roo tabs setting + */ +const DiffViewAutoCloseAllControl: React.FC = ({ + autoCloseAllRooTabs, + disabled, + onChange, +}) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.diff.autoCloseAll.label")} + +
+ {t("settings:advanced.diff.autoCloseAll.description")} +
+
+ ) +} + +/** + * Control for diff precision match threshold + */ +const DiffPrecisionMatchControl: React.FC = ({ + fuzzyMatchThreshold, + disabled, + onValueChange, +}) => { + const { t } = useAppTranslation() + return ( +
+
+ +
+ + {Math.round(fuzzyMatchThreshold * 100)}% +
+
+ {t("settings:advanced.diff.matchPrecision.description")} +
+
+
+ ) +} + +/** + * Control for enabling file-based editing mode + */ +const FileBasedEditingControl: React.FC = ({ fileBasedEditing, onChange }) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.fileEditing.fileBasedEditing.label")} + +
+ {t("settings:advanced.fileEditing.fileBasedEditing.description")} +
+
+ ) +} + +/** + * Control for opening tabs in correct tab group + */ +const OpenTabsInCorrectGroupControl: React.FC = ({ + openTabsInCorrectGroup, + disabled, + onChange, +}) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.fileEditing.correctTabGroup.label")} + +
+ {t("settings:advanced.fileEditing.correctTabGroup.description")} +
+
+ ) +} + +/** + * Control for opening tabs at end of tab list + */ +const OpenTabsAtEndOfListControl: React.FC = ({ + openTabsAtEndOfList, + disabled, + onChange, +}) => { + const { t } = useAppTranslation() + return ( +
+ + {t("settings:advanced.fileEditing.endOfTabList.label")} + +
+ {t("settings:advanced.fileEditing.endOfTabList.description")} +
+
+ ) +} + +/** + * File editing options control component with mutual exclusivity logic + */ +export const FileEditingOptions: React.FC = ({ + diffEnabled = true, + diffViewAutoFocus = true, + autoCloseRooTabs = false, + autoCloseAllRooTabs = false, + fuzzyMatchThreshold = 1.0, + fileBasedEditing = false, + openTabsInCorrectGroup = false, + openTabsAtEndOfList = false, + onChange, +}) => { + const { t } = useAppTranslation() + + // When file-based editing is enabled, diff settings should be disabled + const isDiffDisabled = fileBasedEditing + // When file-based editing is enabled, other tab behavior toggles should be disabled + const otherTogglesDisabled = fileBasedEditing + + const resetAllButFileBasedEditing = useCallback(() => { + onChange("diffEnabled", false) + onChange("diffViewAutoFocus", false) + onChange("autoCloseRooTabs", false) + onChange("autoCloseAllRooTabs", false) + onChange("openTabsInCorrectGroup", false) + onChange("openTabsAtEndOfList", false) + onChange("fileBasedEditing", true) + }, [onChange]) + + const handleDiffEnabledChange = useCallback( + (e: any) => { + onChange("diffEnabled", e.target.checked) + // if diffEnabled is checked, uncheck fileBasedEditing + if (e.target.checked) { + onChange("fileBasedEditing", false) + } + }, + [onChange], + ) + + const handleThresholdChange = useCallback( + (newValue: number[]) => { + onChange("fuzzyMatchThreshold", newValue[0]) + }, + [onChange], + ) + + const handleDiffViewAutoFocusChange = useCallback( + (e: any) => { + onChange("diffViewAutoFocus", e.target.checked) + }, + [onChange], + ) + + const handleAutoCloseRooTabsChange = useCallback( + (e: any) => { + onChange("autoCloseRooTabs", e.target.checked) + // If autoCloseRooTabs is unchecked, also uncheck autoCloseAllRooTabs + if (!e.target.checked) { + onChange("autoCloseAllRooTabs", false) + } + }, + [onChange], + ) + + const handleAutoCloseAllRooTabsChange = useCallback( + (e: any) => { + onChange("autoCloseAllRooTabs", e.target.checked) + }, + [onChange], + ) + + const handleFileBasedEditingChange = useCallback( + (e: any) => { + if (e.target.checked) { + // if we enable file-based editing, we reset all other settings + resetAllButFileBasedEditing() + } else { + // if we disable file-based editing, we reset only the file-based editing setting and set diffEnabled to true + onChange("fileBasedEditing", false) + } + }, + [onChange, resetAllButFileBasedEditing], + ) + + const handleOpenTabsInCorrectGroupChange = useCallback( + (e: any) => { + onChange("openTabsInCorrectGroup", e.target.checked) + }, + [onChange], + ) + + const handleOpenTabsAtEndOfListChange = useCallback( + (e: any) => { + onChange("openTabsAtEndOfList", e.target.checked) + }, + [onChange], + ) + + return ( +
+ {/* File editing options section */} + +
+ +
{t("settings:sections.editingType")}
+
+
+ +
+
+ + {t("settings:advanced.diff.label")} + +
+ {t("settings:advanced.diff.description")} +
+
+
+ +
+
+ + {/* Diff settings section */} + +
+ +
{t("settings:sections.diffSettings")}
+
+
+ +
+ {/* Diff settings section */} +
+ {diffEnabled && !isDiffDisabled && ( + <> + + + + + )} + {isDiffDisabled && ( +
+ {t("settings:advanced.fileEditing.exclusivityNotice")} +
+ )} + {!diffEnabled && ( +
+ {t("settings:advanced.diff.disabledNotice")} +
+ )} +
+
+ + {/* DiffView Behavior Preferences */} + +
+ +
{t("settings:sections.diffViewAutoFocusBehavior")}
+
+
+ +
+
+ {!fileBasedEditing && diffEnabled && ( + <> + + + + + )} + + {fileBasedEditing && ( +
+ {t("settings:advanced.fileEditing.exclusivityNotice")} +
+ )} + {!diffEnabled && ( +
+ {t("settings:advanced.diff.disabledNotice")} +
+ )} +
+
+
+ ) +} diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index f9f76442ff..69c4dc0d4e 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -18,7 +18,7 @@ import { Database, SquareTerminal, FlaskConical, - AlertTriangle, + Pencil, Globe, Info, MessageSquare, @@ -65,6 +65,7 @@ import { LanguageSettings } from "./LanguageSettings" import { About } from "./About" import { Section } from "./Section" import PromptsSettings from "./PromptsSettings" +import { FileEditingOptions } from "./FileEditingOptions" import { cn } from "@/lib/utils" export const settingsTabsContainer = "flex flex-1 overflow-hidden [&.narrow_.tab-label]:hidden" @@ -80,6 +81,7 @@ export interface SettingsViewRef { const sectionNames = [ "providers", + "fileEditing", "autoApprove", "browser", "checkpoints", @@ -173,6 +175,14 @@ const SettingsView = forwardRef(({ onDone, t codebaseIndexModels, customSupportPrompts, profileThresholds, + // File editing settings from root context + diffEnabled, + diffViewAutoFocus, + autoCloseRooTabs, + autoCloseAllRooTabs, + fileBasedEditing, + openTabsInCorrectGroup, + openTabsAtEndOfList, } = cachedState const apiConfiguration = useMemo(() => cachedState.apiConfiguration ?? {}, [cachedState.apiConfiguration]) @@ -280,10 +290,13 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "ttsEnabled", bool: ttsEnabled }) vscode.postMessage({ type: "ttsSpeed", value: ttsSpeed }) vscode.postMessage({ type: "soundVolume", value: soundVolume }) - vscode.postMessage({ type: "diffEnabled", bool: apiConfiguration.diffEnabled }) - vscode.postMessage({ type: "diffViewAutoFocus", bool: apiConfiguration.diffViewAutoFocus }) - vscode.postMessage({ type: "autoCloseRooTabs", bool: apiConfiguration.autoCloseRooTabs }) - vscode.postMessage({ type: "autoCloseAllRooTabs", bool: apiConfiguration.autoCloseAllRooTabs }) + vscode.postMessage({ type: "diffEnabled", bool: diffEnabled }) + vscode.postMessage({ type: "diffViewAutoFocus", bool: diffViewAutoFocus }) + vscode.postMessage({ type: "autoCloseRooTabs", bool: autoCloseRooTabs }) + vscode.postMessage({ type: "autoCloseAllRooTabs", bool: autoCloseAllRooTabs }) + vscode.postMessage({ type: "fileBasedEditing", bool: fileBasedEditing }) + vscode.postMessage({ type: "openTabsInCorrectGroup", bool: openTabsInCorrectGroup }) + vscode.postMessage({ type: "openTabsAtEndOfList", bool: openTabsAtEndOfList }) vscode.postMessage({ type: "enableCheckpoints", bool: enableCheckpoints }) vscode.postMessage({ type: "browserViewportSize", text: browserViewportSize }) vscode.postMessage({ type: "remoteBrowserHost", text: remoteBrowserHost }) @@ -390,6 +403,7 @@ const SettingsView = forwardRef(({ onDone, t const sections: { id: SectionName; icon: LucideIcon }[] = useMemo( () => [ { id: "providers", icon: Webhook }, + { id: "fileEditing", icon: Pencil }, { id: "autoApprove", icon: CheckCheck }, { id: "browser", icon: SquareMousePointer }, { id: "checkpoints", icon: GitBranch }, @@ -585,6 +599,32 @@ const SettingsView = forwardRef(({ onDone, t
)} + {/* File Editing Section */} + {activeTab === "fileEditing" && ( +
+ +
+ +
{t("settings:sections.fileEditing")}
+
+
+ +
+ +
+
+ )} + {/* Auto-Approve Section */} {activeTab === "autoApprove" && ( (({ onDone, t - + {t("settings:unsavedChangesDialog.title")} diff --git a/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx b/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx index 1e13323f36..c52a1a971d 100644 --- a/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx @@ -121,7 +121,7 @@ vi.mock("../RateLimitSecondsControl", () => ({ })) // Mock DiffSettingsControl for tests -vi.mock("../DiffSettingsControl", () => ({ +vi.mock("../FileEditingOptions", () => ({ DiffSettingsControl: ({ diffEnabled, fuzzyMatchThreshold, onChange }: any) => (
-
- -
+ )} From 73f7239d18566a5d4398f49f9a5165f1a6ca12f4 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 6 Jul 2025 00:36:23 +0200 Subject: [PATCH 62/66] feat(editor): update diff view auto focus settings and related options --- .../editor/__tests__/DiffViewProvider.spec.ts | 11 +++++++---- .../__tests__/EditingProviderFactory.spec.ts | 7 ------- .../components/settings/FileEditingOptions.tsx | 7 +++---- .../__tests__/FileEditingOptions.spec.tsx | 18 ++++++------------ 4 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/integrations/editor/__tests__/DiffViewProvider.spec.ts b/src/integrations/editor/__tests__/DiffViewProvider.spec.ts index f1b980996e..0fe079e4e0 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.spec.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.spec.ts @@ -31,8 +31,11 @@ vi.mock("vscode", () => ({ // mock vscode.workspace.getConfiguration("roo-cline").get("diffViewAutoFocus", true) getConfiguration: vi.fn(() => ({ get: vi.fn((key: string) => { - if (key === "diffViewAutoFocus") return true + if (key === "diffViewAutoFocus") return false if (key === "autoCloseRooTabs") return true + if (key === "autoCloseAllRooTabs") return false + if (key === "openTabsAtEndOfList") return false + if (key === "openTabsInCorrectGroup") return true return undefined }), })), @@ -263,7 +266,7 @@ describe("DiffViewProvider", () => { expect.any(Object), expect.any(Object), `test.md: ${DIFF_VIEW_LABEL_CHANGES} (Editable)`, - { preserveFocus: false, preview: false, viewColumn: ViewColumn.Active }, + { preserveFocus: true, preview: false, viewColumn: ViewColumn.Active }, ) }) @@ -370,7 +373,7 @@ describe("DiffViewProvider", () => { expect.anything(), expect.anything(), expect.anything(), - expect.objectContaining({ preserveFocus: false, preview: false, viewColumn: -1 }), + expect.objectContaining({ preserveFocus: false }), ) }) @@ -440,7 +443,7 @@ describe("DiffViewProvider", () => { expect.anything(), expect.anything(), expect.anything(), - expect.objectContaining({ preserveFocus: true, preview: false, viewColumn: -1 }), + expect.objectContaining({ preserveFocus: true }), ) }) }) diff --git a/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts b/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts index 59d4a95921..54bd9c7b85 100644 --- a/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts +++ b/src/integrations/editor/__tests__/EditingProviderFactory.spec.ts @@ -87,12 +87,5 @@ describe("EditingProviderFactory", () => { expect(result).toBe(false) }) - it("should return false when fileBasedEditing is undefined", () => { - mockGet.mockReturnValue(undefined) - - const result = EditingProviderFactory.isFileBasedEditingEnabled() - - expect(result).toBe(false) - }) }) }) diff --git a/webview-ui/src/components/settings/FileEditingOptions.tsx b/webview-ui/src/components/settings/FileEditingOptions.tsx index 9cb720489c..611658a247 100644 --- a/webview-ui/src/components/settings/FileEditingOptions.tsx +++ b/webview-ui/src/components/settings/FileEditingOptions.tsx @@ -228,12 +228,12 @@ const OpenTabsAtEndOfListControl: React.FC = ({ */ export const FileEditingOptions: React.FC = ({ diffEnabled = true, - diffViewAutoFocus = true, + diffViewAutoFocus = false, autoCloseRooTabs = false, autoCloseAllRooTabs = false, fuzzyMatchThreshold = 1.0, fileBasedEditing = false, - openTabsInCorrectGroup = false, + openTabsInCorrectGroup = true, openTabsAtEndOfList = false, onChange, }) => { @@ -243,7 +243,7 @@ export const FileEditingOptions: React.FC = ({ const isDiffDisabled = fileBasedEditing // When file-based editing is enabled, other tab behavior toggles should be disabled const otherTogglesDisabled = fileBasedEditing - const isCorrectControlGroupSettingDisabled = otherTogglesDisabled || diffViewAutoFocus + const isCorrectControlGroupSettingDisabled = otherTogglesDisabled const isEndOfListSettingDisabled = otherTogglesDisabled || diffViewAutoFocus || !openTabsInCorrectGroup const resetAllButFileBasedEditing = useCallback(() => { @@ -279,7 +279,6 @@ export const FileEditingOptions: React.FC = ({ onChange("diffViewAutoFocus", e.target.checked) // If diffViewAutoFocus is unchecked, also uncheck openTabsInCorrectGroup and openTabsAtEndOfList if (e.target.checked) { - onChange("openTabsInCorrectGroup", false) onChange("openTabsAtEndOfList", false) } }, diff --git a/webview-ui/src/components/settings/__tests__/FileEditingOptions.spec.tsx b/webview-ui/src/components/settings/__tests__/FileEditingOptions.spec.tsx index 29bd368f46..d8876ca671 100644 --- a/webview-ui/src/components/settings/__tests__/FileEditingOptions.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/FileEditingOptions.spec.tsx @@ -41,13 +41,12 @@ vi.mock("@/components/ui", () => ({ describe("FileEditingOptions", () => { const defaultProps = { diffEnabled: true, - diffViewAutoFocus: true, + diffViewAutoFocus: false, autoCloseRooTabs: false, autoCloseAllRooTabs: false, fuzzyMatchThreshold: 1.0, fileBasedEditing: false, - openFilesWithoutFocus: false, - openTabsInCorrectGroup: false, + openTabsInCorrectGroup: true, openTabsAtEndOfList: false, onChange: vi.fn(), } @@ -103,13 +102,6 @@ describe("FileEditingOptions", () => { expect(mockT).toHaveBeenCalledWith("settings:advanced.diff.description") }) - it("should disable diff settings when file-based editing is enabled", () => { - render() - - const diffEnabledCheckbox = screen.getByRole("checkbox", { name: /diff.label/ }) - expect(diffEnabledCheckbox).toBeDisabled() - }) - it("should enable diff settings when file-based editing is disabled", () => { render() @@ -151,7 +143,8 @@ describe("FileEditingOptions", () => { const checkbox = screen.getByRole("checkbox", { name: /diff.label/ }) fireEvent.click(checkbox) - expect(onChange).toHaveBeenCalledWith("diffEnabled", true) + // should be false because the default is true + expect(onChange).toHaveBeenCalledWith("diffEnabled", false) }) it("should call onChange for diffViewAutoFocus", () => { @@ -200,7 +193,8 @@ describe("FileEditingOptions", () => { const checkbox = screen.getByRole("checkbox", { name: /correctTabGroup.label/ }) fireEvent.click(checkbox) - expect(onChange).toHaveBeenCalledWith("openTabsInCorrectGroup", true) + // should be false becuase the default is true + expect(onChange).toHaveBeenCalledWith("openTabsInCorrectGroup", false) }) it("should call onChange for openTabsAtEndOfList", () => { From 8481380af9c6c486e2d622918b6509921c128cc7 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 6 Jul 2025 01:19:43 +0200 Subject: [PATCH 63/66] feat(editor): rename diffViewProvider to editingProvider for consistency --- src/core/task/Task.ts | 21 ++++++---- src/core/tools/applyDiffTool.ts | 18 ++++---- src/core/tools/insertContentTool.ts | 24 +++++------ src/core/tools/multiApplyDiffTool.ts | 18 ++++---- src/core/tools/searchAndReplaceTool.ts | 28 ++++++------- src/core/tools/writeToFileTool.ts | 42 +++++++++---------- .../editor/EditingProviderFactory.ts | 12 ++++++ .../settings/FileEditingOptions.tsx | 1 + 8 files changed, 90 insertions(+), 74 deletions(-) diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 052fea04b6..f560eec8e3 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -166,7 +166,7 @@ export class Task extends EventEmitter { browserSession: BrowserSession // Editing - diffViewProvider: IEditingProvider + editingProvider: IEditingProvider diffStrategy?: DiffStrategy diffEnabled: boolean = false fuzzyMatchThreshold: number @@ -254,7 +254,7 @@ export class Task extends EventEmitter { this.consecutiveMistakeLimit = consecutiveMistakeLimit this.providerRef = new WeakRef(provider) this.globalStoragePath = provider.context.globalStorageUri.fsPath - this.diffViewProvider = EditingProviderFactory.createEditingProvider(this.cwd) + this.editingProvider = EditingProviderFactory.createEditingProvider(this.cwd) this.enableCheckpoints = enableCheckpoints this.rootTask = rootTask @@ -755,6 +755,7 @@ export class Task extends EventEmitter { public async resumePausedTask(lastMessage: string) { // Release this Cline instance from paused state. + this.editingProvider = EditingProviderFactory.createEditingProvider(this.cwd) this.isPaused = false this.emit("taskUnpaused") @@ -1059,8 +1060,8 @@ export class Task extends EventEmitter { try { // If we're not streaming then `abortStream` won't be called - if (this.isStreaming && this.diffViewProvider.isEditing) { - this.diffViewProvider.revertChanges().catch(console.error) + if (this.isStreaming && this.editingProvider.isEditing) { + this.editingProvider.revertChanges().catch(console.error) } } catch (error) { console.error("Error reverting diff changes:", error) @@ -1115,8 +1116,8 @@ export class Task extends EventEmitter { // Kicks off the checkpoints initialization process in the background. getCheckpointService(this) // Lets track if the user is interacting with the editor after we start our task loop. - this.diffViewProvider.initialize() - this.diffViewProvider.disableAutoFocusAfterUserInteraction?.() + this.editingProvider.initialize() + this.editingProvider.disableAutoFocusAfterUserInteraction?.() let nextUserContent = userContent let includeFileDetails = true @@ -1157,6 +1158,8 @@ export class Task extends EventEmitter { throw new Error(`[RooCode#recursivelyMakeRooRequests] task ${this.taskId}.${this.instanceId} aborted`) } + this.editingProvider = EditingProviderFactory.resetAndCreateNewEditingProvider(this.cwd, this.editingProvider) + if (this.consecutiveMistakeCount >= this.consecutiveMistakeLimit) { const { response, text, images } = await this.ask( "mistake_limit_reached", @@ -1284,8 +1287,8 @@ export class Task extends EventEmitter { } const abortStream = async (cancelReason: ClineApiReqCancelReason, streamingFailedMessage?: string) => { - if (this.diffViewProvider.isEditing) { - await this.diffViewProvider.revertChanges() // closes diff view + if (this.editingProvider.isEditing) { + await this.editingProvider.revertChanges() // closes diff view } // if last message is a partial we need to update and save it @@ -1337,7 +1340,7 @@ export class Task extends EventEmitter { this.presentAssistantMessageLocked = false this.presentAssistantMessageHasPendingUpdates = false - await this.diffViewProvider.reset() + await this.editingProvider.reset() // Yields only if the first chunk is successful, otherwise will // allow the user to retry the request (most likely due to rate diff --git a/src/core/tools/applyDiffTool.ts b/src/core/tools/applyDiffTool.ts index aef51d00e3..4cadb55895 100644 --- a/src/core/tools/applyDiffTool.ts +++ b/src/core/tools/applyDiffTool.ts @@ -143,12 +143,12 @@ export async function applyDiffToolLegacy( cline.consecutiveMistakeCountForApplyDiff.delete(relPath) // Show diff view before asking for approval - cline.diffViewProvider.editType = "modify" + cline.editingProvider.editType = "modify" const clineRef = cline.providerRef.deref() const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Active - await cline.diffViewProvider.open(relPath, viewColumn) - await cline.diffViewProvider.update(diffResult.content, true) - cline.diffViewProvider.scrollToFirstDiff() + await cline.editingProvider.open(relPath, viewColumn) + await cline.editingProvider.update(diffResult.content, true) + cline.editingProvider.scrollToFirstDiff() // Check if file is write-protected const isWriteProtected = cline.rooProtectedController?.isWriteProtected(relPath) || false @@ -168,12 +168,12 @@ export async function applyDiffToolLegacy( const didApprove = await askApproval("tool", completeMessage, toolProgressStatus, isWriteProtected) if (!didApprove) { - await cline.diffViewProvider.revertChanges() // Cline likely handles closing the diff view + await cline.editingProvider.revertChanges() // Cline likely handles closing the diff view return } // Call saveChanges to update the DiffViewProvider properties - await cline.diffViewProvider.saveChanges() + await cline.editingProvider.saveChanges() // Track file edit operation if (relPath) { @@ -189,7 +189,7 @@ export async function applyDiffToolLegacy( } // Get the formatted response message - const message = await cline.diffViewProvider.pushToolWriteResult(cline, cline.cwd, !fileExists) + const message = await cline.editingProvider.pushToolWriteResult(cline, cline.cwd, !fileExists) if (partFailHint) { pushToolResult(partFailHint + message) @@ -197,13 +197,13 @@ export async function applyDiffToolLegacy( pushToolResult(message) } - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } } catch (error) { await handleError("applying diff", error) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } } diff --git a/src/core/tools/insertContentTool.ts b/src/core/tools/insertContentTool.ts index f6c6aad1cf..682244f314 100644 --- a/src/core/tools/insertContentTool.ts +++ b/src/core/tools/insertContentTool.ts @@ -94,8 +94,8 @@ export async function insertContentTool( // Read the file const fileContent = await fs.readFile(absolutePath, "utf8") - cline.diffViewProvider.editType = "modify" - cline.diffViewProvider.originalContent = fileContent + cline.editingProvider.editType = "modify" + cline.editingProvider.originalContent = fileContent const lines = fileContent.split("\n") const updatedContent = insertGroups(lines, [ @@ -106,14 +106,14 @@ export async function insertContentTool( ]).join("\n") // Show changes in diff view - if (!cline.diffViewProvider.isEditing) { + if (!cline.editingProvider.isEditing) { await cline.ask("tool", JSON.stringify(sharedMessageProps), true).catch(() => {}) // First open with original content const clineRef = cline.providerRef.deref() const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Active - await cline.diffViewProvider.open(relPath, viewColumn) - await cline.diffViewProvider.update(fileContent, false) - cline.diffViewProvider.scrollToFirstDiff() + await cline.editingProvider.open(relPath, viewColumn) + await cline.editingProvider.update(fileContent, false) + cline.editingProvider.scrollToFirstDiff() await delay(200) } @@ -124,7 +124,7 @@ export async function insertContentTool( return } - await cline.diffViewProvider.update(updatedContent, true) + await cline.editingProvider.update(updatedContent, true) const completeMessage = JSON.stringify({ ...sharedMessageProps, @@ -138,13 +138,13 @@ export async function insertContentTool( .then((response) => response.response === "yesButtonClicked") if (!didApprove) { - await cline.diffViewProvider.revertChanges() + await cline.editingProvider.revertChanges() pushToolResult("Changes were rejected by the user.") return } // Call saveChanges to update the DiffViewProvider properties - await cline.diffViewProvider.saveChanges() + await cline.editingProvider.saveChanges() // Track file edit operation if (relPath) { @@ -154,7 +154,7 @@ export async function insertContentTool( cline.didEditFile = true // Get the formatted response message - const message = await cline.diffViewProvider.pushToolWriteResult( + const message = await cline.editingProvider.pushToolWriteResult( cline, cline.cwd, false, // Always false for insert_content @@ -162,9 +162,9 @@ export async function insertContentTool( pushToolResult(message) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() } catch (error) { handleError("insert content", error) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() } } diff --git a/src/core/tools/multiApplyDiffTool.ts b/src/core/tools/multiApplyDiffTool.ts index 8057f77949..a2843621be 100644 --- a/src/core/tools/multiApplyDiffTool.ts +++ b/src/core/tools/multiApplyDiffTool.ts @@ -507,10 +507,10 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""} cline.consecutiveMistakeCountForApplyDiff.delete(relPath) // Show diff view before asking for approval (only for single file or after batch approval) - cline.diffViewProvider.editType = "modify" - await cline.diffViewProvider.open(relPath) - await cline.diffViewProvider.update(originalContent!, true) - cline.diffViewProvider.scrollToFirstDiff() + cline.editingProvider.editType = "modify" + await cline.editingProvider.open(relPath) + await cline.editingProvider.update(originalContent!, true) + cline.editingProvider.scrollToFirstDiff() // For batch operations, we've already gotten approval const isWriteProtected = cline.rooProtectedController?.isWriteProtected(relPath) || false @@ -547,13 +547,13 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""} } if (!didApprove) { - await cline.diffViewProvider.revertChanges() + await cline.editingProvider.revertChanges() results.push(`Changes to ${relPath} were not approved by user`) continue } // Call saveChanges to update the DiffViewProvider properties - await cline.diffViewProvider.saveChanges() + await cline.editingProvider.saveChanges() // Track file edit operation await cline.fileContextTracker.trackFileContext(relPath, "roo_edited" as RecordSource) @@ -567,7 +567,7 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""} } // Get the formatted response message - const message = await cline.diffViewProvider.pushToolWriteResult(cline, cline.cwd, !fileExists) + const message = await cline.editingProvider.pushToolWriteResult(cline, cline.cwd, !fileExists) if (partFailHint) { results.push(partFailHint + "\n" + message) @@ -575,7 +575,7 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""} results.push(message) } - await cline.diffViewProvider.reset() + await cline.editingProvider.reset() } catch (error) { const errorMsg = error instanceof Error ? error.message : String(error) updateOperationResult(relPath, { @@ -601,7 +601,7 @@ ${errorDetails ? `\nTechnical details:\n${errorDetails}\n` : ""} return } catch (error) { await handleError("applying diff", error) - await cline.diffViewProvider.reset() + await cline.editingProvider.reset() return } } diff --git a/src/core/tools/searchAndReplaceTool.ts b/src/core/tools/searchAndReplaceTool.ts index 3afd3f16ec..5ece65e0c3 100644 --- a/src/core/tools/searchAndReplaceTool.ts +++ b/src/core/tools/searchAndReplaceTool.ts @@ -188,29 +188,29 @@ export async function searchAndReplaceTool( } // Initialize diff view - cline.diffViewProvider.editType = "modify" - cline.diffViewProvider.originalContent = fileContent + cline.editingProvider.editType = "modify" + cline.editingProvider.originalContent = fileContent // Generate and validate diff const diff = formatResponse.createPrettyPatch(validRelPath, fileContent, newContent) if (!diff) { pushToolResult(`No changes needed for '${relPath}'`) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } // Show changes in diff view - if (!cline.diffViewProvider.isEditing) { + if (!cline.editingProvider.isEditing) { await cline.ask("tool", JSON.stringify(sharedMessageProps), true).catch(() => {}) const clineRef = cline.providerRef.deref() const viewColumn = clineRef?.getViewColumn() ?? ViewColumn.Active - await cline.diffViewProvider.open(validRelPath, viewColumn) - await cline.diffViewProvider.update(fileContent, false) - cline.diffViewProvider.scrollToFirstDiff() + await cline.editingProvider.open(validRelPath, viewColumn) + await cline.editingProvider.update(fileContent, false) + cline.editingProvider.scrollToFirstDiff() await delay(200) } - await cline.diffViewProvider.update(newContent, true) + await cline.editingProvider.update(newContent, true) // Request user approval for changes const completeMessage = JSON.stringify({ @@ -223,14 +223,14 @@ export async function searchAndReplaceTool( .then((response) => response.response === "yesButtonClicked") if (!didApprove) { - await cline.diffViewProvider.revertChanges() + await cline.editingProvider.revertChanges() pushToolResult("Changes were rejected by the user.") - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } // Call saveChanges to update the DiffViewProvider properties - await cline.diffViewProvider.saveChanges() + await cline.editingProvider.saveChanges() // Track file edit operation if (relPath) { @@ -240,7 +240,7 @@ export async function searchAndReplaceTool( cline.didEditFile = true // Get the formatted response message - const message = await cline.diffViewProvider.pushToolWriteResult( + const message = await cline.editingProvider.pushToolWriteResult( cline, cline.cwd, false, // Always false for search_and_replace @@ -250,10 +250,10 @@ export async function searchAndReplaceTool( // Record successful tool usage and cleanup cline.recordToolUsage("search_and_replace") - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() } catch (error) { handleError("search and replace", error) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() } } diff --git a/src/core/tools/writeToFileTool.ts b/src/core/tools/writeToFileTool.ts index dab488ba5c..a9718d61d2 100644 --- a/src/core/tools/writeToFileTool.ts +++ b/src/core/tools/writeToFileTool.ts @@ -36,7 +36,7 @@ export async function writeToFileTool( cline.consecutiveMistakeCount++ cline.recordToolError("write_to_file") pushToolResult(await cline.sayAndCreateMissingParamError("write_to_file", "path")) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } @@ -44,7 +44,7 @@ export async function writeToFileTool( cline.consecutiveMistakeCount++ cline.recordToolError("write_to_file") pushToolResult(await cline.sayAndCreateMissingParamError("write_to_file", "content")) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } @@ -62,12 +62,12 @@ export async function writeToFileTool( // Check if file exists using cached map or fs.access let fileExists: boolean - if (cline.diffViewProvider.editType !== undefined) { - fileExists = cline.diffViewProvider.editType === "modify" + if (cline.editingProvider.editType !== undefined) { + fileExists = cline.editingProvider.editType === "modify" } else { const absolutePath = path.resolve(cline.cwd, relPath) fileExists = await fileExistsAtPath(absolutePath) - cline.diffViewProvider.editType = fileExists ? "modify" : "create" + cline.editingProvider.editType = fileExists ? "modify" : "create" } // pre-processing newContent for cases where weaker models might add artifacts like markdown codeblock markers (deepseek/llama) or extra escape characters (gemini) @@ -103,15 +103,15 @@ export async function writeToFileTool( await cline.ask("tool", partialMessage, block.partial).catch(() => {}) // update editor - if (!cline.diffViewProvider.isEditing) { + if (!cline.editingProvider.isEditing) { // open the editor and prepare to stream content in const clineRef = cline.providerRef.deref() const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Active - await cline.diffViewProvider.open(relPath, viewColumn) + await cline.editingProvider.open(relPath, viewColumn) } // editor is open, stream content in - await cline.diffViewProvider.update( + await cline.editingProvider.update( everyLineHasLineNumbers(newContent) ? stripLineNumbers(newContent) : newContent, false, ) @@ -144,7 +144,7 @@ export async function writeToFileTool( formatResponse.lineCountTruncationError(actualLineCount, isNewFile, diffStrategyEnabled), ), ) - await cline.diffViewProvider.revertChanges() + await cline.editingProvider.revertChanges() return } @@ -153,27 +153,27 @@ export async function writeToFileTool( // if isEditingFile false, that means we have the full contents of the file already. // it's important to note how cline function works, you can't make the assumption that the block.partial conditional will always be called since it may immediately get complete, non-partial data. So cline part of the logic will always be called. // in other words, you must always repeat the block.partial logic here - if (!cline.diffViewProvider.isEditing) { + if (!cline.editingProvider.isEditing) { // show gui message before showing edit animation const partialMessage = JSON.stringify(sharedMessageProps) await cline.ask("tool", partialMessage, true).catch(() => {}) // sending true for partial even though it's not a partial, cline shows the edit row before the content is streamed into the editor const clineRef = cline.providerRef.deref() const viewColumn = clineRef?.getViewColumn() ?? vscode.ViewColumn.Active - await cline.diffViewProvider.open(relPath, viewColumn) + await cline.editingProvider.open(relPath, viewColumn) } - await cline.diffViewProvider.update( + await cline.editingProvider.update( everyLineHasLineNumbers(newContent) ? stripLineNumbers(newContent) : newContent, true, ) await delay(300) // wait for diff view to update - cline.diffViewProvider.scrollToFirstDiff() + cline.editingProvider.scrollToFirstDiff() // Check for code omissions before proceeding - if (detectCodeOmission(cline.diffViewProvider.originalContent || "", newContent, predictedLineCount)) { + if (detectCodeOmission(cline.editingProvider.originalContent || "", newContent, predictedLineCount)) { if (cline.diffStrategy) { - await cline.diffViewProvider.revertChanges() + await cline.editingProvider.revertChanges() pushToolResult( formatResponse.toolError( @@ -205,19 +205,19 @@ export async function writeToFileTool( ...sharedMessageProps, content: fileExists ? undefined : newContent, diff: fileExists - ? formatResponse.createPrettyPatch(relPath, cline.diffViewProvider.originalContent, newContent) + ? formatResponse.createPrettyPatch(relPath, cline.editingProvider.originalContent, newContent) : undefined, } satisfies ClineSayTool) const didApprove = await askApproval("tool", completeMessage, undefined, isWriteProtected) if (!didApprove) { - await cline.diffViewProvider.revertChanges() + await cline.editingProvider.revertChanges() return } // Call saveChanges to update the DiffViewProvider properties - await cline.diffViewProvider.saveChanges() + await cline.editingProvider.saveChanges() // Track file edit operation if (relPath) { @@ -227,17 +227,17 @@ export async function writeToFileTool( cline.didEditFile = true // used to determine if we should wait for busy terminal to update before sending api request // Get the formatted response message - const message = await cline.diffViewProvider.pushToolWriteResult(cline, cline.cwd, !fileExists) + const message = await cline.editingProvider.pushToolWriteResult(cline, cline.cwd, !fileExists) pushToolResult(message) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } } catch (error) { await handleError("writing file", error) - await cline.diffViewProvider.resetWithListeners() + await cline.editingProvider.resetWithListeners() return } } diff --git a/src/integrations/editor/EditingProviderFactory.ts b/src/integrations/editor/EditingProviderFactory.ts index ccd6a085ef..5f1321d3c1 100644 --- a/src/integrations/editor/EditingProviderFactory.ts +++ b/src/integrations/editor/EditingProviderFactory.ts @@ -23,6 +23,18 @@ export class EditingProviderFactory { } } + static resetAndCreateNewEditingProvider(cwd: string, editingProvider: IEditingProvider): IEditingProvider { + // Reset the current editing provider + if (editingProvider instanceof DiffViewProvider) { + editingProvider.resetWithListeners() + } else if (editingProvider instanceof FileWriter) { + editingProvider.resetWithListeners() + } + + // Create a new instance of the appropriate provider + return this.createEditingProvider(cwd) + } + /** * Checks if file-based editing is currently enabled * @returns True if file-based editing is enabled, false otherwise diff --git a/webview-ui/src/components/settings/FileEditingOptions.tsx b/webview-ui/src/components/settings/FileEditingOptions.tsx index 611658a247..f94f240175 100644 --- a/webview-ui/src/components/settings/FileEditingOptions.tsx +++ b/webview-ui/src/components/settings/FileEditingOptions.tsx @@ -262,6 +262,7 @@ export const FileEditingOptions: React.FC = ({ // if diffEnabled is checked, uncheck fileBasedEditing if (e.target.checked) { onChange("fileBasedEditing", false) + onChange("openTabsInCorrectGroup", true) } }, [onChange], From 2bac5e1189b3cf4f532cce44aa4de053f056ed93 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 6 Jul 2025 01:25:26 +0200 Subject: [PATCH 64/66] chore(linting): rem useless linter --- .roo/rules/rules.md | 2 + docs/diff-view-enhancements-plan.md | 56 -------- docs/feature-toggles-editing-plan.md | 61 -------- .../file-based-editing-implementation-plan.md | 122 ---------------- docs/file-editing-options-ui-plan.md | 134 ------------------ locales/ca/README.md | 74 +++++----- locales/de/README.md | 74 +++++----- locales/es/README.md | 74 +++++----- locales/fr/README.md | 74 +++++----- locales/hi/README.md | 74 +++++----- locales/id/README.md | 74 +++++----- locales/it/README.md | 74 +++++----- locales/ja/README.md | 74 +++++----- locales/ko/README.md | 74 +++++----- locales/nl/README.md | 74 +++++----- locales/pl/README.md | 74 +++++----- locales/pt-BR/README.md | 74 +++++----- locales/ru/README.md | 74 +++++----- locales/tr/README.md | 74 +++++----- locales/vi/README.md | 74 +++++----- locales/zh-CN/README.md | 74 +++++----- locales/zh-TW/README.md | 74 +++++----- 22 files changed, 614 insertions(+), 1019 deletions(-) delete mode 100644 docs/diff-view-enhancements-plan.md delete mode 100644 docs/feature-toggles-editing-plan.md delete mode 100644 docs/file-based-editing-implementation-plan.md delete mode 100644 docs/file-editing-options-ui-plan.md diff --git a/.roo/rules/rules.md b/.roo/rules/rules.md index 8573f6e347..aad45c9bc6 100644 --- a/.roo/rules/rules.md +++ b/.roo/rules/rules.md @@ -1,6 +1,7 @@ # Code Quality Rules 1. Test Coverage: + - Before attempting completion, always make sure that any code changes have test coverage - Ensure all tests pass before submitting changes - The vitest framework is used for testing; the `describe`, `test`, `it`, etc functions are defined by default in `tsconfig.json` and therefore don't need to be imported @@ -13,6 +14,7 @@ - Example: For `src/tests/user.test.ts`, run `cd src && npx vitest tests/user.test.ts` NOT `npx vitest src/tests/user.test.ts` 2. Lint Rules: + - Never disable any lint rules without explicit user approval 3. Styling Guidelines: diff --git a/docs/diff-view-enhancements-plan.md b/docs/diff-view-enhancements-plan.md deleted file mode 100644 index 6363c0a1bc..0000000000 --- a/docs/diff-view-enhancements-plan.md +++ /dev/null @@ -1,56 +0,0 @@ -# Plan: Diff View Placement and Focus Enhancements - -**Objective:** Modify `src/integrations/editor/DiffViewProvider.ts` to implement a new default diff view placement behavior and the underlying mechanics for two distinct post-diff focus behaviors, with one set as a temporary hardcoded default. No new settings will be added in this iteration. - -**1. Implement Default Diff View Placement Logic:** -_ **File:** `src/integrations/editor/DiffViewProvider.ts` -_ **Methods to Modify:** Primarily `openDiffEditor()`, with potential adjustments in `open()` for context or to pass necessary information. -_ **Placement Behavior:** -_ **For existing, currently open files:** -_ The diff view (`vscode.diff` command) should be opened in the same editor group as the original file's tab. -_ The diff view should appear immediately beside the original file's tab. This will likely involve: -_ Identifying the `ViewColumn` of the original file's tab. -_ Ensuring the original file's tab is the active tab within its group _before_ calling `vscode.diff`. -_ Using the original tab's `ViewColumn` in the `TextDocumentShowOptions` for `vscode.diff`. -_ **For new files or existing files that are not currently open:** -* The new file tab (if applicable) and its associated diff view should open at the end of the *currently active* editor group. -* This typically means using `ViewColumn.Active` (or the `viewColumn` passed to the `open()` method, which defaults to `ViewColumn.Active` if not specified by the caller) and ensuring `preview: false`. - -**2. Implement Mechanics for Two Post-Diff Focus Behaviors:** -_ **File:** `src/integrations/editor/DiffViewProvider.ts` -_ **Store Pre-Diff Active Editor:** -_ In the `open()` method, before opening the diff view, capture and store a reference to `vscode.window.activeTextEditor` (e.g., in a new private member `this.preDiffActiveEditor`). -_ **Modify Focus Logic in `saveChanges()` and `revertChanges()`:** -* This logic will execute *after* all Roo-opened views (including the diff view itself) are closed by `closeAllRooOpenedViews()`. -* **Implement Behavior A (Focus on Edited File):** -_ If the file represented by `this.relPath` is still open as a tab, find its `vscode.Uri`. -_ Make this tab active using `vscode.window.showTextDocument(uri, { preserveFocus: false, preview: false, viewColumn: /* its current viewColumn */ })`. -_ **Implement Behavior B (Focus on Pre-Diff Active Tab):** -_ Check if `this.preDiffActiveEditor` and `this.preDiffActiveEditor.document` are still valid (e.g., the tab hasn't been closed by the user). -_ If valid, attempt to restore focus using `vscode.window.showTextDocument(this.preDiffActiveEditor.document.uri, { preserveFocus: false, preview: false, viewColumn: this.preDiffActiveEditor.viewColumn })`. -_ **Temporary Default:** For this task, the code will be structured to execute **Behavior A (Focus on Edited File)** as the default. The logic for Behavior B will be implemented but conditionally skipped. - -**3. No New Settings:** -* No changes to `package.json` or the `_readDiffSettings()` method for new configuration options. The existing `autoFocus` setting will still be respected where relevant (e.g., initial focus *within\* the diff editor panes). - -**Workflow Diagram (Final):** - -```mermaid -graph TD - A[User Request: Improve Diff View Placement & Focus] --> B[Clarification & Iteration on Plan]; - B --> C[Final Plan Approved]; - - C --> D[Phase 1: Implement Default Diff Placement]; - D --> D_Action1[Modify 'openDiffEditor' & 'open' in DiffViewProvider.ts]; - D_Action1 -- Existing Open File --> D_Logic1[Diff beside original tab in same group]; - D_Action1 -- New/Unopened File --> D_Logic2[File & Diff at end of active group]; - - C --> E[Phase 2: Implement Post-Diff Focus Mechanics]; - E --> E_Action1[In 'open', store 'vscode.window.activeTextEditor' as 'preDiffActiveEditor']; - E --> E_Action2[In 'saveChanges'/'revertChanges', after 'closeAllRooOpenedViews':]; - E_Action2 --> E_LogicA[Implement: Focus on Edited File's Tab]; - E_Action2 --> E_LogicB[Implement: Restore Focus to Pre-Diff Active Tab]; - E_Action2 --> E_Default[Set Temporary Default: Execute E_LogicA]; - - D_Logic1 & D_Logic2 & E_LogicA & E_LogicB & E_Default --> F[Implementation in Code Mode]; -``` diff --git a/docs/feature-toggles-editing-plan.md b/docs/feature-toggles-editing-plan.md deleted file mode 100644 index 04276cb69e..0000000000 --- a/docs/feature-toggles-editing-plan.md +++ /dev/null @@ -1,61 +0,0 @@ -# Roo Code Editing Behavior Feature Toggles – Implementation Plan - -## Overview - -Introduce granular feature toggles for all editing behaviors in Roo Code, allowing users to control the observability and workflow of file edits. Add a new file-system-based editing mode, and ensure mutual exclusivity between file-based and diff-based editing. - ---- - -## 1. Settings Structure & UI Integration - -- Add new toggles to the settings context and UI: - - **File-system-based editing** (exclusive mode) - - **Open files without stealing focus** - - **Open tabs in correct tab group** - - **Open tabs at end of tab list** -- Group these under a new "File Editing" section in the settings UI. -- Surface all toggles in both the settings UI and the command palette. - ---- - -## 2. Mutual Exclusivity Logic - -- Enabling file-system-based editing will: - - Automatically disable all other editing-related toggles (tab closing, tab group, tab order, etc.) in both UI and logic. - - Bypass all tab management logic. -- Only one of file-system-based editing or diff view can be active at a time. - ---- - -## 3. Implementation Steps - -```mermaid -flowchart TD - A[Add new toggles to ExtensionStateContext] --> B[Add toggles to settings UI ("File Editing" section)] - B --> C[Update UI and command palette to surface toggles and enforce exclusivity] - C --> D[Update DiffViewProvider and related logic to respect toggles] - D --> E[Implement file-system-based editing logic] - E --> F[Document each toggle and its impact] -``` - ---- - -## 4. Editor Logic - -- Update `DiffViewProvider` and related files to: - - Respect the new toggles. - - Enforce that file-system-based editing disables all tab-related features. - - Ensure only one editing mode is active at a time. - ---- - -## 5. Testing & Documentation - -- **You will write the tests yourself.** -- Document each toggle and its impact in both user and developer documentation. - ---- - -## Summary - -This plan ensures clarity, user control, and a seamless experience for both file-based and diff-based editing workflows in Roo Code. diff --git a/docs/file-based-editing-implementation-plan.md b/docs/file-based-editing-implementation-plan.md deleted file mode 100644 index 2626d223a1..0000000000 --- a/docs/file-based-editing-implementation-plan.md +++ /dev/null @@ -1,122 +0,0 @@ -# File-Based Editing Backend Implementation Plan - -## Goal - -- Implement a new `FileWriter` class in `src/integrations/editor/` for direct file editing (no diff view). -- Integrate this class into tool logic (e.g., `insertContentTool`) so the correct editing strategy is chosen based on the user's settings. -- Mirror the API and structure of `DiffViewProvider` for consistency and easy swapping. -- **User approval/interaction should be handled exactly as with DiffViewProvider.** -- **FileWriter should only write to disk, never open files in the editor.** - ---- - -## 1. FileWriter Class Design - -**Location:** -`src/integrations/editor/FileWriter.ts` - -**Responsibilities:** - -- Directly write to files in the workspace (create, modify, insert, etc.). -- Handle all file-system-based editing operations (no VSCode diff, no decorations, no tab management). -- Provide a similar API to `DiffViewProvider` for easy integration and swapping. -- Handle diagnostics and user feedback (e.g., problems after write). -- Never open files in the editor. - -**Key Methods:** - -- `initialize()`: (optional) Prepare any state if needed. -- `open(relPath: string)`: Prepare for editing (e.g., check existence, create dirs). -- `update(content: string, isFinal: boolean)`: Write content to file (atomic write). -- `saveChanges()`: Finalize the write, return diagnostics and summary. -- `pushToolWriteResult(task, cwd, isNewFile)`: Format and send feedback, similar to DiffViewProvider. -- `reset()`: Clean up any state. - -**Settings Integration:** - -- Reads settings from VSCode config (e.g., openTabsInCorrectGroup, openTabsAtEndOfList). -- Honors file-based editing toggle. - ---- - -## 2. Integration with Tool Logic - -**insertContentTool and Others:** - -- Before using `DiffViewProvider`, check the current settings (from VSCode config or global state). -- If file-based editing is enabled, use `FileWriter` instead of `DiffViewProvider`. -- The tool logic should be agnostic to which provider is used (polymorphic API). -- User approval/interaction must be handled the same as with DiffViewProvider. - ---- - -## 3. Settings Handling - -- Read the new settings (`fileBasedEditing`, `openFilesWithoutFocus`, etc.) from VSCode config in the provider. -- Use these settings to control file writing behavior. - ---- - -## 4. Diagnostics and Feedback - -- After writing, collect diagnostics (errors/warnings) for the file. -- Format and return feedback in the same way as `DiffViewProvider` (XML, say objects, etc.). - ---- - -## 5. Testing - -- Unit tests for `FileWriter` (high-level only, as per guidelines). -- Integration test for tool logic to ensure correct provider is chosen and used. - ---- - -## 6. User Experience - -- **User approval/interaction is required before writing, just like with diff-based editing.** -- **FileWriter never opens files in the editor after writing.** - ---- - -## Mermaid Diagram: Class/Flow Overview - -```mermaid -classDiagram - class DiffViewProvider { - +initialize() - +open(relPath, viewColumn) - +update(content, isFinal) - +saveChanges() - +pushToolWriteResult(task, cwd, isNewFile) - +reset() - } - class FileWriter { - +initialize() - +open(relPath) - +update(content, isFinal) - +saveChanges() - +pushToolWriteResult(task, cwd, isNewFile) - +reset() - } - class insertContentTool { - +calls: open(), update(), saveChanges(), pushToolWriteResult() - } - insertContentTool --> DiffViewProvider : uses (if diff mode) - insertContentTool --> FileWriter : uses (if file-based mode) -``` - ---- - -## Steps - -1. **Create `FileWriter.ts`** in `src/integrations/editor/` with the API above. -2. **Implement all methods** to perform direct file writes, diagnostics, and feedback. -3. **Update `insertContentTool.ts`** and any other tool logic to select the provider based on settings. -4. **Read settings** from VSCode config in `FileWriter`. -5. **Write high-level tests** for `FileWriter` and provider selection logic. -6. **Document** the new class and its usage. - ---- - -**User approval/interaction is required before writing, just like with diff-based editing. -FileWriter never opens files in the editor after writing.** diff --git a/docs/file-editing-options-ui-plan.md b/docs/file-editing-options-ui-plan.md deleted file mode 100644 index f7ae3954c4..0000000000 --- a/docs/file-editing-options-ui-plan.md +++ /dev/null @@ -1,134 +0,0 @@ -# Plan: Extract File Editing Options to a New Component - -## Goal - -- Extract the following settings from `ApiOptions.tsx`: - - `diffViewAutoFocus` - - `autoCloseRooTabs` - - `autoCloseAllRooTabs` - - `fileBasedEditing` (currently handled by `FileEditingSettingsControl`) -- Move them into a new component: `FileEditingOptions.tsx` -- Use `FileEditingSettingsControl.tsx` as a base for the new component. -- Integrate the new component into `SettingsView.tsx` under the {/_ File Editing Section _/}, similar to the Providers section. - ---- - -## 1. Extract Settings Logic - -**From:** - -- `ApiOptions.tsx` (currently passed to `DiffSettingsControl` and `FileEditingSettingsControl`) - -**To:** - -- New file: `webview-ui/src/components/settings/FileEditingOptions.tsx` - -**Settings to Extract:** - -- `diffViewAutoFocus` -- `autoCloseRooTabs` -- `autoCloseAllRooTabs` -- `fileBasedEditing` (move from `FileEditingSettingsControl`) - ---- - -## 2. New Component: FileEditingOptions - -**File:** -`webview-ui/src/components/settings/FileEditingOptions.tsx` - -**Responsibilities:** - -- Render controls for all file editing-related settings. -- Use the same onChange pattern as other settings controls. -- Use `FileEditingSettingsControl` as a base for file-based editing and related toggles. -- Add new controls for `diffViewAutoFocus`, `autoCloseRooTabs`, `autoCloseAllRooTabs` (checkboxes with labels/descriptions). -- Group all file editing settings in a visually clear section. - -**Props:** - -- All relevant settings as props (booleans) -- `onChange` handler for updating settings - -**Structure Example:** - -```tsx - -``` - ---- - -## 3. Update SettingsView.tsx - -- Import and render `` in the {/_ File Editing Section _/} of `SettingsView.tsx`. -- Remove the old `DiffSettingsControl` and `FileEditingSettingsControl` from the Providers section in `ApiOptions.tsx`. -- Ensure the new section is visually consistent with the Providers section. - ---- - -## 4. Update ApiOptions.tsx - -- Remove all file editing-related settings and controls from `ApiOptions.tsx`. -- Only keep provider/model-specific settings in this component. - ---- - -## 5. i18n and Descriptions - -- Ensure all labels and descriptions use the translation keys from `settings.json`. -- If any new keys are needed, add them to `webview-ui/src/i18n/locales/en/settings.json`. - ---- - -## 6. Testing - -- If there are existing tests for `FileEditingSettingsControl`, use them as a reference for the new component. -- Add/adjust tests for the new `FileEditingOptions` component. - ---- - -## 7. Visual/UX Consistency - -- Use the same Tailwind and VSCode variable classes as the rest of the settings UI. -- Group toggles and controls logically (e.g., diff-related, file-based editing, tab behavior). - ---- - -## Mermaid Diagram: Component Structure - -```mermaid -classDiagram - class SettingsView { - +FileEditingOptions - +ApiOptions - ... - } - class FileEditingOptions { - +FileEditingSettingsControl - +Checkbox(diffViewAutoFocus) - +Checkbox(autoCloseRooTabs) - +Checkbox(autoCloseAllRooTabs) - } - SettingsView --> FileEditingOptions : renders - FileEditingOptions --> FileEditingSettingsControl : uses -``` - ---- - -## Steps - -1. **Create `FileEditingOptions.tsx`** with all relevant controls. -2. **Move logic/props** for file editing settings from `ApiOptions.tsx` to the new component. -3. **Update `SettingsView.tsx`** to render the new section. -4. **Remove old controls** from `ApiOptions.tsx`. -5. **Update i18n** as needed. -6. **Test** the new component and integration. diff --git a/locales/ca/README.md b/locales/ca/README.md index 2428df0cd5..511175d766 100644 --- a/locales/ca/README.md +++ b/locales/ca/README.md @@ -181,44 +181,42 @@ Ens encanten les contribucions de la comunitat! Comenceu llegint el nostre [CONT Gràcies a tots els nostres col·laboradors que han ajudat a millorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Llicència diff --git a/locales/de/README.md b/locales/de/README.md index a23eabc6f6..2dbaaa4363 100644 --- a/locales/de/README.md +++ b/locales/de/README.md @@ -181,44 +181,42 @@ Wir lieben Community-Beiträge! Beginnen Sie mit dem Lesen unserer [CONTRIBUTING Danke an alle unsere Mitwirkenden, die geholfen haben, Roo Code zu verbessern! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Lizenz diff --git a/locales/es/README.md b/locales/es/README.md index 58703ebe78..45942a0ee5 100644 --- a/locales/es/README.md +++ b/locales/es/README.md @@ -181,44 +181,42 @@ Usamos [changesets](https://github.com/changesets/changesets) para versionar y p ¡Gracias a todos nuestros colaboradores que han ayudado a mejorar Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Licencia diff --git a/locales/fr/README.md b/locales/fr/README.md index 3fddb6dfb5..cb7c02166b 100644 --- a/locales/fr/README.md +++ b/locales/fr/README.md @@ -181,44 +181,42 @@ Nous adorons les contributions de la communauté ! Commencez par lire notre [CON Merci à tous nos contributeurs qui ont aidé à améliorer Roo Code ! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Licence diff --git a/locales/hi/README.md b/locales/hi/README.md index 23209edb41..38cfae33a4 100644 --- a/locales/hi/README.md +++ b/locales/hi/README.md @@ -181,44 +181,42 @@ code --install-extension bin/roo-cline-.vsix Roo Code को बेहतर बनाने में मदद करने वाले हमारे सभी योगदानकर्ताओं को धन्यवाद! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## लाइसेंस diff --git a/locales/id/README.md b/locales/id/README.md index 58468e6d80..2dfd3000fd 100644 --- a/locales/id/README.md +++ b/locales/id/README.md @@ -175,44 +175,42 @@ Kami menyukai kontribusi komunitas! Mulai dengan membaca [CONTRIBUTING.md](CONTR Terima kasih kepada semua kontributor kami yang telah membantu membuat Roo Code lebih baik! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## License diff --git a/locales/it/README.md b/locales/it/README.md index 7d40610404..34f6d3d029 100644 --- a/locales/it/README.md +++ b/locales/it/README.md @@ -181,44 +181,42 @@ Amiamo i contributi della community! Inizia leggendo il nostro [CONTRIBUTING.md] Grazie a tutti i nostri contributori che hanno aiutato a migliorare Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Licenza diff --git a/locales/ja/README.md b/locales/ja/README.md index 2b5786efb0..07b12f1792 100644 --- a/locales/ja/README.md +++ b/locales/ja/README.md @@ -181,44 +181,42 @@ code --install-extension bin/roo-cline-.vsix Roo Codeの改善に貢献してくれたすべての貢献者に感謝します! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## ライセンス diff --git a/locales/ko/README.md b/locales/ko/README.md index adf2121c18..8d9e0381c1 100644 --- a/locales/ko/README.md +++ b/locales/ko/README.md @@ -181,44 +181,42 @@ code --install-extension bin/roo-cline-.vsix Roo Code를 더 좋게 만드는 데 도움을 준 모든 기여자에게 감사드립니다! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## 라이선스 diff --git a/locales/nl/README.md b/locales/nl/README.md index 624f90069f..b083ddf1b1 100644 --- a/locales/nl/README.md +++ b/locales/nl/README.md @@ -181,44 +181,42 @@ We houden van bijdragen uit de community! Begin met het lezen van onze [CONTRIBU Dank aan alle bijdragers die Roo Code beter hebben gemaakt! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Licentie diff --git a/locales/pl/README.md b/locales/pl/README.md index a184eb251b..86be4bc846 100644 --- a/locales/pl/README.md +++ b/locales/pl/README.md @@ -181,44 +181,42 @@ Kochamy wkład społeczności! Zacznij od przeczytania naszego [CONTRIBUTING.md] Dziękujemy wszystkim naszym współtwórcom, którzy pomogli ulepszyć Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Licencja diff --git a/locales/pt-BR/README.md b/locales/pt-BR/README.md index 369918d31f..ffcdd994d3 100644 --- a/locales/pt-BR/README.md +++ b/locales/pt-BR/README.md @@ -181,44 +181,42 @@ Adoramos contribuições da comunidade! Comece lendo nosso [CONTRIBUTING.md](CON Obrigado a todos os nossos contribuidores que ajudaram a tornar o Roo Code melhor! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Licença diff --git a/locales/ru/README.md b/locales/ru/README.md index 6fabe979cb..35250c85ec 100644 --- a/locales/ru/README.md +++ b/locales/ru/README.md @@ -181,44 +181,42 @@ code --install-extension bin/roo-cline-.vsix Спасибо всем нашим участникам, которые помогли сделать Roo Code лучше! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Лицензия diff --git a/locales/tr/README.md b/locales/tr/README.md index d32af2608b..ae52f4aeec 100644 --- a/locales/tr/README.md +++ b/locales/tr/README.md @@ -181,44 +181,42 @@ Topluluk katkılarını seviyoruz! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasın Roo Code'u daha iyi hale getirmeye yardımcı olan tüm katkıda bulunanlara teşekkür ederiz! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Lisans diff --git a/locales/vi/README.md b/locales/vi/README.md index 4f470b625f..9bc0a1a0a3 100644 --- a/locales/vi/README.md +++ b/locales/vi/README.md @@ -181,44 +181,42 @@ Chúng tôi rất hoan nghênh đóng góp từ cộng đồng! Bắt đầu b Cảm ơn tất cả những người đóng góp đã giúp cải thiện Roo Code! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## Giấy Phép diff --git a/locales/zh-CN/README.md b/locales/zh-CN/README.md index bd8dec2481..c8e06ba65b 100644 --- a/locales/zh-CN/README.md +++ b/locales/zh-CN/README.md @@ -181,44 +181,42 @@ code --install-extension bin/roo-cline-.vsix 感谢所有帮助改进 Roo Code 的贡献者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## 许可证 diff --git a/locales/zh-TW/README.md b/locales/zh-TW/README.md index 50cc4efcdd..770d0303a5 100644 --- a/locales/zh-TW/README.md +++ b/locales/zh-TW/README.md @@ -182,44 +182,42 @@ code --install-extension bin/roo-cline-.vsix 感謝所有幫助改進 Roo Code 的貢獻者! - -| mrubens
mrubens
| saoudrizwan
saoudrizwan
| cte
cte
| samhvw8
samhvw8
| daniel-lxs
daniel-lxs
| hannesrudolph
hannesrudolph
| -| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| KJ7LNW
KJ7LNW
| a8trejo
a8trejo
| ColemanRoo
ColemanRoo
| canrobins13
canrobins13
| stea9499
stea9499
| joemanley201
joemanley201
| -| System233
System233
| jr
jr
| MuriloFP
MuriloFP
| nissa-seru
nissa-seru
| jquanton
jquanton
| NyxJae
NyxJae
| -| elianiva
elianiva
| d-oit
d-oit
| punkpeye
punkpeye
| wkordalski
wkordalski
| xyOz-dev
xyOz-dev
| qdaxb
qdaxb
| -| feifei325
feifei325
| zhangtony239
zhangtony239
| Smartsheet-JB-Brown
Smartsheet-JB-Brown
| monotykamary
monotykamary
| sachasayan
sachasayan
| cannuri
cannuri
| -| vigneshsubbiah16
vigneshsubbiah16
| shariqriazz
shariqriazz
| pugazhendhi-m
pugazhendhi-m
| lloydchang
lloydchang
| dtrugman
dtrugman
| chrarnoldus
chrarnoldus
| -| Szpadel
Szpadel
| diarmidmackenzie
diarmidmackenzie
| olweraltuve
olweraltuve
| psv2522
psv2522
| Premshay
Premshay
| kiwina
kiwina
| -| lupuletic
lupuletic
| aheizi
aheizi
| SannidhyaSah
SannidhyaSah
| PeterDaveHello
PeterDaveHello
| hassoncs
hassoncs
| ChuKhaLi
ChuKhaLi
| -| nbihan-mediware
nbihan-mediware
| RaySinner
RaySinner
| afshawnlotfi
afshawnlotfi
| dleffel
dleffel
| StevenTCramer
StevenTCramer
| pdecat
pdecat
| -| noritaka1166
noritaka1166
| kyle-apex
kyle-apex
| emshvac
emshvac
| Lunchb0ne
Lunchb0ne
| SmartManoj
SmartManoj
| vagadiya
vagadiya
| -| slytechnical
slytechnical
| arthurauffray
arthurauffray
| upamune
upamune
| NamesMT
NamesMT
| taylorwilsdon
taylorwilsdon
| sammcj
sammcj
| -| Ruakij
Ruakij
| p12tic
p12tic
| gtaylor
gtaylor
| aitoroses
aitoroses
| axkirillov
axkirillov
| ross
ross
| -| mr-ryan-james
mr-ryan-james
| heyseth
heyseth
| taisukeoe
taisukeoe
| liwilliam2021
liwilliam2021
| avtc
avtc
| dlab-anton
dlab-anton
| -| eonghk
eonghk
| kcwhite
kcwhite
| ronyblum
ronyblum
| teddyOOXX
teddyOOXX
| vincentsong
vincentsong
| yongjer
yongjer
| -| zeozeozeo
zeozeozeo
| ashktn
ashktn
| franekp
franekp
| yt3trees
yt3trees
| benzntech
benzntech
| anton-otee
anton-otee
| -| bramburn
bramburn
| olearycrew
olearycrew
| brunobergher
brunobergher
| catrielmuller
catrielmuller
| devxpain
devxpain
| snoyiatk
snoyiatk
| -| GitlyHallows
GitlyHallows
| jcbdev
jcbdev
| Chenjiayuan195
Chenjiayuan195
| julionav
julionav
| KanTakahiro
KanTakahiro
| SplittyDev
SplittyDev
| -| mdp
mdp
| napter
napter
| philfung
philfung
| dairui1
dairui1
| dqroid
dqroid
| forestyoo
forestyoo
| -| GOODBOY008
GOODBOY008
| hatsu38
hatsu38
| hongzio
hongzio
| im47cn
im47cn
| shoopapa
shoopapa
| jwcraig
jwcraig
| -| kinandan
kinandan
| nevermorec
nevermorec
| bannzai
bannzai
| axmo
axmo
| asychin
asychin
| amittell
amittell
| -| Yoshino-Yukitaro
Yoshino-Yukitaro
| Yikai-Liao
Yikai-Liao
| zxdvd
zxdvd
| vladstudio
vladstudio
| tmsjngx0
tmsjngx0
| tgfjt
tgfjt
| -| maekawataiki
maekawataiki
| AlexandruSmirnov
AlexandruSmirnov
| PretzelVector
PretzelVector
| zetaloop
zetaloop
| cdlliuy
cdlliuy
| user202729
user202729
| -| takakoutso
takakoutso
| student20880
student20880
| shohei-ihaya
shohei-ihaya
| shivamd1810
shivamd1810
| shaybc
shaybc
| seedlord
seedlord
| -| samir-nimbly
samir-nimbly
| robertheadley
robertheadley
| refactorthis
refactorthis
| qingyuan1109
qingyuan1109
| pokutuna
pokutuna
| philipnext
philipnext
| -| village-way
village-way
| oprstchn
oprstchn
| nobu007
nobu007
| mosleyit
mosleyit
| moqimoqidea
moqimoqidea
| mlopezr
mlopezr
| -| mecab
mecab
| olup
olup
| lightrabbit
lightrabbit
| kohii
kohii
| celestial-vault
celestial-vault
| linegel
linegel
| -| edwin-truthsearch-io
edwin-truthsearch-io
| EamonNerbonne
EamonNerbonne
| dbasclpy
dbasclpy
| dflatline
dflatline
| Deon588
Deon588
| dleen
dleen
| -| CW-B-W
CW-B-W
| chadgauth
chadgauth
| thecolorblue
thecolorblue
| bogdan0083
bogdan0083
| benashby
benashby
| Atlogit
Atlogit
| -| atlasgong
atlasgong
| andrewshu2000
andrewshu2000
| andreastempsch
andreastempsch
| alasano
alasano
| QuinsZouls
QuinsZouls
| HadesArchitect
HadesArchitect
| -| alarno
alarno
| nexon33
nexon33
| adilhafeez
adilhafeez
| adamwlarson
adamwlarson
| adamhill
adamhill
| AMHesch
AMHesch
| -| samsilveira
samsilveira
| 01Rian
01Rian
| RSO
RSO
| SECKainersdorfer
SECKainersdorfer
| R-omk
R-omk
| Sarke
Sarke
| -| PaperBoardOfficial
PaperBoardOfficial
| OlegOAndreev
OlegOAndreev
| kvokka
kvokka
| ecmasx
ecmasx
| mollux
mollux
| marvijo-code
marvijo-code
| -| markijbema
markijbema
| mamertofabian
mamertofabian
| monkeyDluffy6017
monkeyDluffy6017
| libertyteeth
libertyteeth
| shtse8
shtse8
| Rexarrior
Rexarrior
| -| KevinZhao
KevinZhao
| ksze
ksze
| Fovty
Fovty
| Jdo300
Jdo300
| hesara
hesara
| DeXtroTip
DeXtroTip
| -| pfitz
pfitz
| ExactDoug
ExactDoug
| | | | | - +|mrubens
mrubens
|saoudrizwan
saoudrizwan
|cte
cte
|samhvw8
samhvw8
|daniel-lxs
daniel-lxs
|hannesrudolph
hannesrudolph
| +|:---:|:---:|:---:|:---:|:---:|:---:| +|KJ7LNW
KJ7LNW
|a8trejo
a8trejo
|ColemanRoo
ColemanRoo
|canrobins13
canrobins13
|stea9499
stea9499
|joemanley201
joemanley201
| +|System233
System233
|jr
jr
|MuriloFP
MuriloFP
|nissa-seru
nissa-seru
|jquanton
jquanton
|NyxJae
NyxJae
| +|elianiva
elianiva
|d-oit
d-oit
|punkpeye
punkpeye
|wkordalski
wkordalski
|xyOz-dev
xyOz-dev
|qdaxb
qdaxb
| +|feifei325
feifei325
|zhangtony239
zhangtony239
|Smartsheet-JB-Brown
Smartsheet-JB-Brown
|monotykamary
monotykamary
|sachasayan
sachasayan
|cannuri
cannuri
| +|vigneshsubbiah16
vigneshsubbiah16
|shariqriazz
shariqriazz
|pugazhendhi-m
pugazhendhi-m
|lloydchang
lloydchang
|dtrugman
dtrugman
|chrarnoldus
chrarnoldus
| +|Szpadel
Szpadel
|diarmidmackenzie
diarmidmackenzie
|olweraltuve
olweraltuve
|psv2522
psv2522
|Premshay
Premshay
|kiwina
kiwina
| +|lupuletic
lupuletic
|aheizi
aheizi
|SannidhyaSah
SannidhyaSah
|PeterDaveHello
PeterDaveHello
|hassoncs
hassoncs
|ChuKhaLi
ChuKhaLi
| +|nbihan-mediware
nbihan-mediware
|RaySinner
RaySinner
|afshawnlotfi
afshawnlotfi
|dleffel
dleffel
|StevenTCramer
StevenTCramer
|pdecat
pdecat
| +|noritaka1166
noritaka1166
|kyle-apex
kyle-apex
|emshvac
emshvac
|Lunchb0ne
Lunchb0ne
|SmartManoj
SmartManoj
|vagadiya
vagadiya
| +|slytechnical
slytechnical
|arthurauffray
arthurauffray
|upamune
upamune
|NamesMT
NamesMT
|taylorwilsdon
taylorwilsdon
|sammcj
sammcj
| +|Ruakij
Ruakij
|p12tic
p12tic
|gtaylor
gtaylor
|aitoroses
aitoroses
|axkirillov
axkirillov
|ross
ross
| +|mr-ryan-james
mr-ryan-james
|heyseth
heyseth
|taisukeoe
taisukeoe
|liwilliam2021
liwilliam2021
|avtc
avtc
|dlab-anton
dlab-anton
| +|eonghk
eonghk
|kcwhite
kcwhite
|ronyblum
ronyblum
|teddyOOXX
teddyOOXX
|vincentsong
vincentsong
|yongjer
yongjer
| +|zeozeozeo
zeozeozeo
|ashktn
ashktn
|franekp
franekp
|yt3trees
yt3trees
|benzntech
benzntech
|anton-otee
anton-otee
| +|bramburn
bramburn
|olearycrew
olearycrew
|brunobergher
brunobergher
|catrielmuller
catrielmuller
|devxpain
devxpain
|snoyiatk
snoyiatk
| +|GitlyHallows
GitlyHallows
|jcbdev
jcbdev
|Chenjiayuan195
Chenjiayuan195
|julionav
julionav
|KanTakahiro
KanTakahiro
|SplittyDev
SplittyDev
| +|mdp
mdp
|napter
napter
|philfung
philfung
|dairui1
dairui1
|dqroid
dqroid
|forestyoo
forestyoo
| +|GOODBOY008
GOODBOY008
|hatsu38
hatsu38
|hongzio
hongzio
|im47cn
im47cn
|shoopapa
shoopapa
|jwcraig
jwcraig
| +|kinandan
kinandan
|nevermorec
nevermorec
|bannzai
bannzai
|axmo
axmo
|asychin
asychin
|amittell
amittell
| +|Yoshino-Yukitaro
Yoshino-Yukitaro
|Yikai-Liao
Yikai-Liao
|zxdvd
zxdvd
|vladstudio
vladstudio
|tmsjngx0
tmsjngx0
|tgfjt
tgfjt
| +|maekawataiki
maekawataiki
|AlexandruSmirnov
AlexandruSmirnov
|PretzelVector
PretzelVector
|zetaloop
zetaloop
|cdlliuy
cdlliuy
|user202729
user202729
| +|takakoutso
takakoutso
|student20880
student20880
|shohei-ihaya
shohei-ihaya
|shivamd1810
shivamd1810
|shaybc
shaybc
|seedlord
seedlord
| +|samir-nimbly
samir-nimbly
|robertheadley
robertheadley
|refactorthis
refactorthis
|qingyuan1109
qingyuan1109
|pokutuna
pokutuna
|philipnext
philipnext
| +|village-way
village-way
|oprstchn
oprstchn
|nobu007
nobu007
|mosleyit
mosleyit
|moqimoqidea
moqimoqidea
|mlopezr
mlopezr
| +|mecab
mecab
|olup
olup
|lightrabbit
lightrabbit
|kohii
kohii
|celestial-vault
celestial-vault
|linegel
linegel
| +|edwin-truthsearch-io
edwin-truthsearch-io
|EamonNerbonne
EamonNerbonne
|dbasclpy
dbasclpy
|dflatline
dflatline
|Deon588
Deon588
|dleen
dleen
| +|CW-B-W
CW-B-W
|chadgauth
chadgauth
|thecolorblue
thecolorblue
|bogdan0083
bogdan0083
|benashby
benashby
|Atlogit
Atlogit
| +|atlasgong
atlasgong
|andrewshu2000
andrewshu2000
|andreastempsch
andreastempsch
|alasano
alasano
|QuinsZouls
QuinsZouls
|HadesArchitect
HadesArchitect
| +|alarno
alarno
|nexon33
nexon33
|adilhafeez
adilhafeez
|adamwlarson
adamwlarson
|adamhill
adamhill
|AMHesch
AMHesch
| +|samsilveira
samsilveira
|01Rian
01Rian
|RSO
RSO
|SECKainersdorfer
SECKainersdorfer
|R-omk
R-omk
|Sarke
Sarke
| +|PaperBoardOfficial
PaperBoardOfficial
|OlegOAndreev
OlegOAndreev
|kvokka
kvokka
|ecmasx
ecmasx
|mollux
mollux
|marvijo-code
marvijo-code
| +|markijbema
markijbema
|mamertofabian
mamertofabian
|monkeyDluffy6017
monkeyDluffy6017
|libertyteeth
libertyteeth
|shtse8
shtse8
|Rexarrior
Rexarrior
| +|KevinZhao
KevinZhao
|ksze
ksze
|Fovty
Fovty
|Jdo300
Jdo300
|hesara
hesara
|DeXtroTip
DeXtroTip
| +|pfitz
pfitz
|ExactDoug
ExactDoug
| | | | | ## 授權 From df54ea2310f1f65b029292d3923d58e08fcca979 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 6 Jul 2025 01:25:26 +0200 Subject: [PATCH 65/66] chore(linting): rem useless linter --- ProjectIndex.json | 3713 --------------------------------------------- 1 file changed, 3713 deletions(-) delete mode 100644 ProjectIndex.json diff --git a/ProjectIndex.json b/ProjectIndex.json deleted file mode 100644 index fb71905fa0..0000000000 --- a/ProjectIndex.json +++ /dev/null @@ -1,3713 +0,0 @@ -{ - "evals/packages/types/src/exercises.ts": { - "functions": [ - "isExerciseLanguage(value:string): valueisExerciseLanguage" - ] - }, - "evals/packages/types/src/ipc.ts": { - "enums": [ - { - "name": "TaskCommandName" - }, - { - "name": "EvalEventName" - }, - { - "name": "IpcMessageType" - }, - { - "name": "IpcOrigin" - } - ] - }, - "evals/packages/types/src/roo-code.ts": { - "functions": [ - "isCheckpointStorage(value:string): valueisCheckpointStorage", - "isLanguage(value:string): valueisLanguage", - "isSecretStateKey(key:string): keyisKeys", - "isGlobalStateKey(key:string): keyisKeys" - ], - "enums": [ - { - "name": "RooCodeEventName" - } - ] - }, - "evals/packages/lib/src/in-chunks-of.ts": { - "functions": [ - "inChunksOf(ary:T[],perChunk=2)" - ] - }, - "evals/packages/db/src/queries/runs.ts": { - "functions": [ - "findRun(id:number)", - "createRun(args:InsertRun)", - "updateRun(id:number,values:UpdateRun)", - "getRuns()", - "finishRun(runId:number)", - "deleteRun(runId:number)" - ] - }, - "evals/packages/db/src/queries/errors.ts": { - "classes": [ - { - "name": "RecordNotFoundError" - }, - { - "name": "RecordNotCreatedError" - } - ] - }, - "evals/packages/db/src/queries/toolErrors.ts": { - "functions": [ - "createToolError(args:InsertToolError)" - ] - }, - "evals/packages/db/src/queries/taskMetrics.ts": { - "functions": [ - "findTaskMetrics(id:number)", - "createTaskMetrics(args:InsertTaskMetrics)", - "updateTaskMetrics(id:number,values:UpdateTaskMetrics)" - ] - }, - "evals/packages/db/src/queries/tasks.ts": { - "functions": [ - "findTask(id:number)", - "createTask(args:InsertTask)", - "updateTask(id:number,values:UpdateTask)", - "getTask({runId,language,exercise}:GetTask)", - "getTasks(runId:number)" - ] - }, - "evals/packages/ipc/src/client.ts": { - "classes": [ - { - "name": "IpcClient" - } - ], - "functions": [ - "constructor(socketPath:string,log=console.log)", - "onConnect()", - "onDisconnect()", - "onMessage(data:unknown)", - "log(...args:unknown[])", - "sendMessage(message:IpcMessage)", - "disconnect()", - "socketPath()", - "clientId()", - "isConnected()", - "isReady()" - ] - }, - "evals/packages/ipc/src/server.ts": { - "classes": [ - { - "name": "IpcServer" - } - ], - "functions": [ - "constructor(socketPath:string,log=console.log)", - "listen()", - "onConnect(socket:Socket)", - "onDisconnect(destroyedSocket:Socket)", - "onMessage(data:unknown)", - "log(...args:unknown[])", - "broadcast(message:IpcMessage)", - "send(client:string|Socket,message:IpcMessage)", - "socketPath()", - "isListening()" - ] - }, - "evals/apps/web/src/app/home.tsx": { - "functions": [ - "Home({runs}:{runs:(Run&{taskMetrics:TaskMetrics|null})[]})" - ] - }, - "evals/apps/web/src/app/layout.tsx": { - "functions": [ - "RootLayout({\tchildren,}:Readonly<{\tchildren:React.ReactNode}>)" - ] - }, - "evals/apps/web/src/app/page.tsx": { - "functions": [ - "Page()" - ] - }, - "evals/apps/web/src/app/api/tasks/route.ts": { - "functions": [ - "POST(request:Request)" - ] - }, - "evals/apps/web/src/app/api/runs/route.ts": { - "functions": [ - "POST(request:Request)" - ] - }, - "evals/apps/web/src/app/api/runs/[id]/stream/route.ts": { - "functions": [ - "GET(request:NextRequest,{params}:{params:Promise<{id:string}>})", - "write(data:string|object)" - ] - }, - "evals/apps/web/src/app/runs/new/new-run.tsx": { - "functions": [ - "NewRun()" - ] - }, - "evals/apps/web/src/app/runs/new/settings-diff.tsx": { - "functions": [ - "SettingsDiff({\tcustomSettings:{experiments:customExperiments,...customSettings},\tdefaultSettings:{experiments:defaultExperiments,...defaultSettings},\tclassName,\t...props}:SettingsDiffProps)", - "SettingDiff({name,defaultValue,customValue,...props}:SettingDiffProps)" - ] - }, - "evals/apps/web/src/app/runs/new/page.tsx": { - "functions": [ - "Page()" - ] - }, - "evals/apps/web/src/app/runs/[id]/run.tsx": { - "functions": [ - "Run({run}:{run:db.Run})" - ] - }, - "evals/apps/web/src/app/runs/[id]/page.tsx": { - "functions": [ - "Page({params}:{params:Promise<{id:string}>})" - ] - }, - "evals/apps/web/src/app/runs/[id]/connection-status.tsx": { - "functions": [ - "ConnectionStatus(connectionStatus:ConnectionStatusProps)" - ] - }, - "evals/apps/web/src/app/runs/[id]/task-status.tsx": { - "functions": [ - "TaskStatus({task,running}:TaskStatusProps)" - ] - }, - "evals/apps/web/src/components/ui/alert-dialog.tsx": { - "functions": [ - "AlertDialog({...props}:React.ComponentProps)", - "AlertDialogTrigger({...props}:React.ComponentProps)", - "AlertDialogPortal({...props}:React.ComponentProps)", - "AlertDialogOverlay({className,...props}:React.ComponentProps)", - "AlertDialogContent({className,...props}:React.ComponentProps)", - "AlertDialogHeader({className,...props}:React.ComponentProps<\"div\">)", - "AlertDialogFooter({className,...props}:React.ComponentProps<\"div\">)", - "AlertDialogTitle({className,...props}:React.ComponentProps)", - "AlertDialogDescription({\tclassName,\t...props}:React.ComponentProps)", - "AlertDialogAction({className,...props}:React.ComponentProps)", - "AlertDialogCancel({className,...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/slider.tsx": { - "functions": [ - "Slider({\tclassName,\tdefaultValue,\tvalue,\tmin=0,\tmax=100,\t...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/popover.tsx": { - "functions": [ - "Popover({...props}:React.ComponentProps)", - "PopoverTrigger({...props}:React.ComponentProps)", - "PopoverContent({\tclassName,\talign=\"center\",\tsideOffset=4,\t...props}:React.ComponentProps)", - "PopoverAnchor({...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/scroll-area.tsx": { - "functions": [ - "ScrollArea({className,children,viewportRef,...props}:ScrollAreaProps)", - "ScrollBar({\tclassName,\torientation=\"vertical\",\t...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/label.tsx": { - "functions": [ - "Label({className,...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/sonner.tsx": { - "functions": [ - "Toaster({...props}:ToasterProps)" - ] - }, - "evals/apps/web/src/components/ui/drawer.tsx": { - "functions": [ - "Drawer({...props}:React.ComponentProps)", - "DrawerTrigger({...props}:React.ComponentProps)", - "DrawerPortal({...props}:React.ComponentProps)", - "DrawerClose({...props}:React.ComponentProps)", - "DrawerOverlay({className,...props}:React.ComponentProps)", - "DrawerContent({className,children,...props}:React.ComponentProps)", - "DrawerHeader({className,...props}:React.ComponentProps<\"div\">)", - "DrawerFooter({className,...props}:React.ComponentProps<\"div\">)", - "DrawerTitle({className,...props}:React.ComponentProps)", - "DrawerDescription({className,...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/tooltip.tsx": { - "functions": [ - "TooltipProvider({delayDuration=0,...props}:React.ComponentProps)", - "Tooltip({...props}:React.ComponentProps)", - "TooltipTrigger({...props}:React.ComponentProps)", - "TooltipContent({\tclassName,\tsideOffset=0,\tchildren,\t...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/command.tsx": { - "functions": [ - "Command({className,...props}:React.ComponentProps)", - "CommandDialog({\ttitle=\"CommandPalette\",\tdescription=\"Searchforacommandtorun...\",\tchildren,\t...props}:React.ComponentProps&{\ttitle?:string\tdescription?:string})", - "CommandInput({className,...props}:React.ComponentProps)", - "CommandList({className,...props}:React.ComponentProps)", - "CommandEmpty({...props}:React.ComponentProps)", - "CommandGroup({className,...props}:React.ComponentProps)", - "CommandSeparator({className,...props}:React.ComponentProps)", - "CommandItem({className,...props}:React.ComponentProps)", - "CommandShortcut({className,...props}:React.ComponentProps<\"span\">)" - ] - }, - "evals/apps/web/src/components/ui/multi-select.tsx": { - "interfaces": [ - "MultiSelectProps" - ], - "functions": [ - "handleInputKeyDown(event:React.KeyboardEvent)", - "toggleOption(option:string)", - "handleTogglePopover()", - "clearExtraOptions()", - "onSelectAll()" - ] - }, - "evals/apps/web/src/components/ui/dialog.tsx": { - "functions": [ - "Dialog({...props}:React.ComponentProps)", - "DialogTrigger({...props}:React.ComponentProps)", - "DialogPortal({...props}:React.ComponentProps)", - "DialogClose({...props}:React.ComponentProps)", - "DialogOverlay({className,...props}:React.ComponentProps)", - "DialogContent({className,children,...props}:React.ComponentProps)", - "DialogHeader({className,...props}:React.ComponentProps<\"div\">)", - "DialogFooter({className,...props}:React.ComponentProps<\"div\">)", - "DialogTitle({className,...props}:React.ComponentProps)", - "DialogDescription({className,...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/badge.tsx": { - "functions": [ - "Badge({\tclassName,\tvariant,\tasChild=false,\t...props}:React.ComponentProps<\"span\">&VariantProps&{asChild?:boolean})" - ] - }, - "evals/apps/web/src/components/ui/table.tsx": { - "functions": [ - "Table({className,...props}:React.ComponentProps<\"table\">)", - "TableHeader({className,...props}:React.ComponentProps<\"thead\">)", - "TableBody({className,...props}:React.ComponentProps<\"tbody\">)", - "TableFooter({className,...props}:React.ComponentProps<\"tfoot\">)", - "TableRow({className,...props}:React.ComponentProps<\"tr\">)", - "TableHead({className,...props}:React.ComponentProps<\"th\">)", - "TableCell({className,...props}:React.ComponentProps<\"td\">)", - "TableCaption({className,...props}:React.ComponentProps<\"caption\">)" - ] - }, - "evals/apps/web/src/components/ui/separator.tsx": { - "functions": [ - "Separator({\tclassName,\torientation=\"horizontal\",\tdecorative=true,\t...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/button.tsx": { - "functions": [ - "Button({\tclassName,\tvariant,\tsize,\tasChild=false,\t...props}:React.ComponentProps<\"button\">&\tVariantProps&{\t\tasChild?:boolean\t})" - ] - }, - "evals/apps/web/src/components/ui/dropdown-menu.tsx": { - "functions": [ - "DropdownMenu({...props}:React.ComponentProps)", - "DropdownMenuPortal({...props}:React.ComponentProps)", - "DropdownMenuTrigger({...props}:React.ComponentProps)", - "DropdownMenuContent({\tclassName,\tsideOffset=4,\t...props}:React.ComponentProps)", - "DropdownMenuGroup({...props}:React.ComponentProps)", - "DropdownMenuItem({\tclassName,\tinset,\tvariant=\"default\",\t...props}:React.ComponentProps&{\tinset?:boolean\tvariant?:\"default\"|\"destructive\"})", - "DropdownMenuCheckboxItem({\tclassName,\tchildren,\tchecked,\t...props}:React.ComponentProps)", - "DropdownMenuRadioGroup({...props}:React.ComponentProps)", - "DropdownMenuRadioItem({\tclassName,\tchildren,\t...props}:React.ComponentProps)", - "DropdownMenuLabel({\tclassName,\tinset,\t...props}:React.ComponentProps&{\tinset?:boolean})", - "DropdownMenuSeparator({className,...props}:React.ComponentProps)", - "DropdownMenuShortcut({className,...props}:React.ComponentProps<\"span\">)" - ] - }, - "evals/apps/web/src/components/ui/select.tsx": { - "functions": [ - "Select({...props}:React.ComponentProps)", - "SelectGroup({...props}:React.ComponentProps)", - "SelectValue({...props}:React.ComponentProps)", - "SelectTrigger({\tclassName,\tsize=\"default\",\tchildren,\t...props}:React.ComponentProps&{\tsize?:\"sm\"|\"default\"})", - "SelectContent({\tclassName,\tchildren,\tposition=\"popper\",\t...props}:React.ComponentProps)", - "SelectLabel({className,...props}:React.ComponentProps)", - "SelectItem({className,children,...props}:React.ComponentProps)", - "SelectSeparator({className,...props}:React.ComponentProps)", - "SelectScrollUpButton({className,...props}:React.ComponentProps)", - "SelectScrollDownButton({\tclassName,\t...props}:React.ComponentProps)" - ] - }, - "evals/apps/web/src/components/ui/textarea.tsx": { - "functions": [ - "Textarea({className,...props}:React.ComponentProps<\"textarea\">)" - ] - }, - "evals/apps/web/src/components/ui/input.tsx": { - "functions": [ - "Input({className,type,...props}:React.ComponentProps<\"input\">)" - ] - }, - "evals/apps/web/src/components/ui/form.tsx": { - "functions": [ - "FormField", - "useFormField()", - "FormItem({className,...props}:React.ComponentProps<\"div\">)", - "FormLabel({className,...props}:React.ComponentProps)", - "FormControl({...props}:React.ComponentProps)", - "FormDescription({className,...props}:React.ComponentProps<\"p\">)", - "FormMessage({className,...props}:React.ComponentProps<\"p\">)" - ] - }, - "evals/apps/web/src/components/layout/logo.tsx": { - "functions": [ - "Logo({width=50,height=32,fill=\"#fff\",className,...props}:LogoProps)", - "HoppingLogo(props:LogoProps)", - "onAnimationEnd()" - ] - }, - "evals/apps/web/src/components/layout/header.tsx": { - "functions": [ - "Header()" - ] - }, - "evals/apps/web/src/components/providers/theme-provider.tsx": { - "functions": [ - "ThemeProvider({children,...props}:ThemeProviderProps)" - ] - }, - "evals/apps/web/src/components/providers/react-query-provider.tsx": { - "functions": [ - "ReactQueryProvider({children}:{children:React.ReactNode})" - ] - }, - "evals/apps/web/src/hooks/use-event-source.ts": { - "functions": [ - "useEventSource({url,withCredentials,onMessage}:UseEventSourceOptions)" - ] - }, - "evals/apps/web/src/hooks/use-process-tree.ts": { - "functions": [ - "useProcessList(pid:number|null)" - ] - }, - "evals/apps/web/src/hooks/use-run-status.ts": { - "functions": [ - "useRunStatus(run:Run)" - ] - }, - "evals/apps/web/src/hooks/use-exercises.ts": { - "functions": [ - "useExercises()" - ] - }, - "evals/apps/web/src/hooks/use-open-router-models.ts": { - "functions": [ - "parsePrice(price?:string)", - "getOpenRouterModels(): Promise", - "useOpenRouterModels()" - ] - }, - "evals/apps/web/src/lib/utils.ts": { - "functions": [ - "cn(...inputs:ClassValue[])" - ] - }, - "evals/apps/web/src/lib/formatters.ts": { - "functions": [ - "formatCurrency(amount:number)", - "formatDuration(durationMs:number)", - "formatTokens(tokens:number)", - "formatToolUsageSuccessRate(usage:{attempts:number;failures:number})" - ] - }, - "evals/apps/web/src/lib/server/sse-stream.ts": { - "classes": [ - { - "name": "SSEStream" - } - ], - "functions": [ - "constructor()", - "write(data:string|object)", - "close()", - "getResponse()" - ] - }, - "evals/apps/web/src/lib/server/exercises.ts": { - "functions": [ - "listDirectories(relativePath:string)", - "getExercises()", - "getExercisesForLanguage(language:ExerciseLanguage)" - ] - }, - "evals/apps/web/src/lib/server/runs.ts": { - "functions": [ - "createRun({suite,exercises=[],...values}:CreateRun)", - "deleteRun(runId:number)" - ] - }, - "evals/apps/web/src/lib/server/processes.ts": { - "functions": [ - "asyncExec(command:string): Promise<{stdout:string;stderr:string}>", - "getProcessList(pid:number)", - "killProcessTree(pid:number)" - ] - }, - "evals/apps/web/src/lib/server/tasks.ts": { - "functions": [ - "getTasks(runId:number)" - ] - }, - "evals/apps/cli/src/exercises.ts": { - "functions": [ - "getExercises()", - "getLanguageExercises(language:ExerciseLanguage)" - ] - }, - "evals/apps/cli/src/index.ts": { - "functions": [ - "run(toolbox:GluegunToolbox)", - "processTask(task:Task,delay=0)", - "processTaskResult(task:Task,promise:TaskPromise)", - "runExercise({run,task,server}:{run:Run;task:Task;server:IpcServer}): TaskPromise", - "runUnitTest({task}:{task:Task})", - "askLanguage(prompt:GluegunPrompt)", - "askExercise(prompt:GluegunPrompt,language:ExerciseLanguage)", - "main()" - ] - }, - "webview-ui/vite.config.ts": { - "functions": [ - "writePortToFile()", - "configureServer(server)" - ] - }, - "webview-ui/src/App.tsx": { - "functions": [ - "App()", - "AppWithProviders()" - ] - }, - "webview-ui/src/__mocks__/lucide-react.ts": { - "functions": [ - "Check()", - "ChevronsUpDown()", - "Loader()", - "X()", - "Edit()", - "Database(props:any)" - ] - }, - "webview-ui/src/__mocks__/vscrui.ts": { - "functions": [ - "Checkbox({children,onChange}:any)", - "Dropdown({children,onChange}:any)", - "Pane({children}:any)", - "Button({children,...props}:any)" - ] - }, - "webview-ui/src/__mocks__/@vscode/webview-ui-toolkit/react.ts": { - "interfaces": [ - "VSCodeProps" - ], - "functions": [ - "VSCodeButton({children,onClick,appearance,className,...props})", - "VSCodeCheckbox({children,onChange,checked,...props})", - "VSCodeTextField({children,value,onInput,placeholder,...props})", - "VSCodeTextArea({value,onChange,...props})", - "VSCodeLink({children,href,...props})", - "VSCodeDropdown({children,value,onChange,...props})", - "VSCodeOption({children,value,...props})", - "VSCodeRadio({children,value,checked,onChange,...props})", - "VSCodeRadioGroup({children,onChange,...props})" - ] - }, - "webview-ui/src/__mocks__/components/chat/TaskHeader.tsx": { - "functions": [ - "TaskHeader()" - ] - }, - "webview-ui/src/__mocks__/i18n/TranslationContext.tsx": { - "functions": [ - "TranslationProvider({children})", - "useAppTranslation()" - ] - }, - "webview-ui/src/__mocks__/i18n/setup.ts": { - "functions": [ - "loadTranslations()", - "addTranslation(language:string,namespace:string,resources:any)" - ] - }, - "webview-ui/src/context/ExtensionStateContext.tsx": { - "interfaces": [ - "ExtensionStateContextType" - ], - "functions": [ - "mergeExtensionState(prevState:ExtensionState,newState:ExtensionState)", - "ExtensionStateContextProvider({children})", - "useExtensionState()" - ] - }, - "webview-ui/src/oauth/urls.ts": { - "functions": [ - "getCallbackUrl(provider:string,uriScheme?:string)", - "getGlamaAuthUrl(uriScheme?:string)", - "getOpenRouterAuthUrl(uriScheme?:string)", - "getRequestyAuthUrl(uriScheme?:string)" - ] - }, - "webview-ui/src/utils/getLanguageFromPath.ts": { - "functions": [ - "getLanguageFromPath(path:string): string|undefined" - ] - }, - "webview-ui/src/utils/json.ts": { - "functions": [ - "safeJsonParse(jsonString:string|null|undefined,defaultValue?:T): T|undefined" - ] - }, - "webview-ui/src/utils/clipboard.ts": { - "interfaces": [ - "CopyOptions" - ], - "functions": [ - "copyToClipboard(text:string,options?:CopyOptions): Promise", - "useCopyToClipboard(feedbackDuration=2000)" - ] - }, - "webview-ui/src/utils/normalizeApiConfiguration.ts": { - "functions": [ - "normalizeApiConfiguration(apiConfiguration?:ApiConfiguration)", - "getProviderData(models:Record,defaultId:string)" - ] - }, - "webview-ui/src/utils/highlight.ts": { - "functions": [ - "highlightFzfMatch(\ttext:string,\tpositions:number[],\thighlightClassName:string=\"history-item-highlight\",)" - ] - }, - "webview-ui/src/utils/command-validation.ts": { - "functions": [ - "parseCommand(command:string): string[]", - "isAllowedSingleCommand(command:string,allowedCommands:string[]): boolean", - "validateCommand(command:string,allowedCommands:string[]): boolean" - ] - }, - "webview-ui/src/utils/mcp.ts": { - "functions": [ - "findMatchingTemplate(\turi:string,\ttemplates:McpResourceTemplate[]=[],)", - "findMatchingResourceOrTemplate(\turi:string,\tresources:McpResource[]=[],\ttemplates:McpResourceTemplate[]=[],)" - ] - }, - "webview-ui/src/utils/model-utils.ts": { - "interfaces": [ - "ModelInfo", - "ApiConfig", - "TokenDistributionResult" - ], - "functions": [ - "getMaxTokensForModel(\tmodelInfo:ModelInfo|undefined,\tapiConfig:ApiConfig|undefined,)", - "calculateTokenDistribution(\tcontextWindow:number,\tcontextTokens:number,\tmaxTokens?:number,)" - ] - }, - "webview-ui/src/utils/validate.ts": { - "functions": [ - "validateApiConfiguration(apiConfiguration?:ApiConfiguration): string|undefined", - "validateBedrockArn(arn:string,region?:string)", - "validateModelId(\tapiConfiguration?:ApiConfiguration,\tglamaModels?:Record,\topenRouterModels?:Record,\tunboundModels?:Record,\trequestyModels?:Record,)" - ] - }, - "webview-ui/src/utils/TelemetryClient.ts": { - "classes": [ - { - "name": "TelemetryClient" - } - ], - "functions": [ - "updateTelemetryState(telemetrySetting:TelemetrySetting,apiKey?:string,distinctId?:string)", - "getInstance(): TelemetryClient", - "capture(eventName:string,properties?:Record)" - ] - }, - "webview-ui/src/utils/vscode.ts": { - "classes": [ - { - "name": "VSCodeAPIWrapper" - } - ], - "functions": [ - "constructor()", - "postMessage(message:WebviewMessage)", - "getState(): unknown|undefined", - "setState(newState:T): T" - ] - }, - "webview-ui/src/utils/useDebounceEffect.ts": { - "functions": [ - "useDebounceEffect(effect:VoidFn,delay:number,deps:any[])" - ] - }, - "webview-ui/src/utils/format.ts": { - "functions": [ - "formatLargeNumber(num:number): string", - "formatDate(timestamp:number)" - ] - }, - "webview-ui/src/utils/textMateToHljs.ts": { - "functions": [ - "constructTheme(tmTheme:FullColorTheme): Record", - "fallbackTheme()", - "convertTextMateToHljs(fullColorTheme:any)", - "parseHexColor(hexColor:string): {\tr:number\tg:number\tb:number}" - ] - }, - "webview-ui/src/utils/path-mentions.ts": { - "functions": [ - "convertToMentionPath(path:string,cwd?:string): string" - ] - }, - "webview-ui/src/utils/context-mentions.ts": { - "interfaces": [ - "SearchResult", - "ContextMenuQueryItem" - ], - "functions": [ - "insertMention(\ttext:string,\tposition:number,\tvalue:string,)", - "removeMention(text:string,position:number): {newText:string;newPosition:number}", - "getContextMenuOptions(\tquery:string,\tinputValue:string,\tselectedType:ContextMenuOptionType|null=null,\tqueryItems:ContextMenuQueryItem[],\tdynamicSearchResults:SearchResult[]=[],\tmodes?:ModeConfig[],)", - "shouldShowContextMenu(text:string,position:number): boolean" - ], - "enums": [ - { - "name": "ContextMenuOptionType" - } - ] - }, - "webview-ui/src/utils/formatPrice.ts": { - "functions": [ - "formatPrice(price:number)" - ] - }, - "webview-ui/src/components/ui/alert-dialog.tsx": { - "functions": [ - "AlertDialog({...props}:React.ComponentProps)", - "AlertDialogTrigger({...props}:React.ComponentProps)", - "AlertDialogPortal({...props}:React.ComponentProps)", - "AlertDialogOverlay({className,...props}:React.ComponentProps)", - "AlertDialogContent({className,...props}:React.ComponentProps)", - "AlertDialogHeader({className,...props}:React.ComponentProps<\"div\">)", - "AlertDialogFooter({className,...props}:React.ComponentProps<\"div\">)", - "AlertDialogTitle({className,...props}:React.ComponentProps)", - "AlertDialogDescription({\tclassName,\t...props}:React.ComponentProps)", - "AlertDialogAction({className,...props}:React.ComponentProps)", - "AlertDialogCancel({className,...props}:React.ComponentProps)" - ] - }, - "webview-ui/src/components/ui/autosize-textarea.tsx": { - "interfaces": [ - "UseAutosizeTextAreaProps" - ], - "functions": [ - "useAutosizeTextArea({\ttextAreaRef,\ttriggerAutoSize,\tmaxHeight=Number.MAX_SAFE_INTEGER,\tminHeight=0,}:UseAutosizeTextAreaProps)" - ] - }, - "webview-ui/src/components/ui/select-dropdown.tsx": { - "interfaces": [ - "DropdownOption", - "SelectDropdownProps" - ], - "enums": [ - { - "name": "DropdownOptionType" - } - ] - }, - "webview-ui/src/components/ui/command.tsx": { - "functions": [ - "CommandDialog({children,...props}:DialogProps)", - "CommandShortcut({className,...props}:React.HTMLAttributes)" - ] - }, - "webview-ui/src/components/ui/dialog.tsx": { - "functions": [ - "Dialog({...props}:React.ComponentProps)", - "DialogTrigger({...props}:React.ComponentProps)", - "DialogPortal({...props}:React.ComponentProps)", - "DialogClose({...props}:React.ComponentProps)", - "DialogOverlay({className,...props}:React.ComponentProps)", - "DialogContent({className,children,...props}:React.ComponentProps)", - "DialogHeader({className,...props}:React.ComponentProps<\"div\">)", - "DialogFooter({className,...props}:React.ComponentProps<\"div\">)", - "DialogTitle({className,...props}:React.ComponentProps)", - "DialogDescription({className,...props}:React.ComponentProps)" - ] - }, - "webview-ui/src/components/ui/badge.tsx": { - "interfaces": [ - "BadgeProps" - ], - "functions": [ - "Badge({className,variant,...props}:BadgeProps)" - ] - }, - "webview-ui/src/components/ui/button.tsx": { - "interfaces": [ - "ButtonProps", - "" - ] - }, - "webview-ui/src/components/ui/checkbox.tsx": { - "interfaces": [ - "CheckboxProps", - "" - ] - }, - "webview-ui/src/components/ui/dropdown-menu.tsx": { - "functions": [ - "DropdownMenuShortcut({className,...props}:React.HTMLAttributes)" - ] - }, - "webview-ui/src/components/ui/select.tsx": { - "functions": [ - "Select({...props}:React.ComponentProps)", - "SelectGroup({...props}:React.ComponentProps)", - "SelectValue({...props}:React.ComponentProps)", - "SelectTrigger({className,children,...props}:React.ComponentProps)", - "SelectContent({\tclassName,\tchildren,\tposition=\"popper\",\tcontainer,\t...props}:React.ComponentProps&Pick)", - "SelectLabel({className,...props}:React.ComponentProps)", - "SelectItem({className,children,...props}:React.ComponentProps)", - "SelectSeparator({className,...props}:React.ComponentProps)", - "SelectScrollUpButton({className,...props}:React.ComponentProps)", - "SelectScrollDownButton({\tclassName,\t...props}:React.ComponentProps)" - ] - }, - "webview-ui/src/components/ui/chat/ChatMessages.tsx": { - "functions": [ - "ChatMessages()" - ] - }, - "webview-ui/src/components/ui/chat/ChatInputProvider.ts": { - "interfaces": [ - "ChatInputContext" - ] - }, - "webview-ui/src/components/ui/chat/useChatUI.ts": { - "functions": [ - "useChatUI()" - ] - }, - "webview-ui/src/components/ui/chat/types.ts": { - "interfaces": [ - "Message" - ], - "enums": [ - { - "name": "MessageAnnotationType" - } - ] - }, - "webview-ui/src/components/ui/chat/useChatInput.ts": { - "functions": [ - "useChatInput()" - ] - }, - "webview-ui/src/components/ui/chat/Chat.tsx": { - "functions": [ - "Chat({assistantName,handler,...props}:ChatProps)", - "InnerChat({className,children,...props}:InnerChatProps)" - ] - }, - "webview-ui/src/components/ui/chat/ChatMessage.tsx": { - "interfaces": [ - "ChatMessageProps", - "ChatMessageHeaderProps", - "ChatMessageContentProps" - ], - "functions": [ - "ChatMessage({message,isLast,isHeaderVisible,isLoading,append}:ChatMessageProps)", - "ChatMessageHeader({badges}:ChatMessageHeaderProps)", - "ChatMessageAvatar()", - "ChatMessageContent({isHeaderVisible}:ChatMessageContentProps)", - "ChatMessageActions()" - ] - }, - "webview-ui/src/components/ui/chat/ChatInput.tsx": { - "interfaces": [ - "ChatInputFieldProps" - ], - "functions": [ - "ChatInput()", - "submit()", - "handleSubmit(e:React.FormEvent)", - "handleKeyDown(e:React.KeyboardEvent)", - "ChatInputForm()", - "ChatInputField({placeholder=\"Chat\"}:ChatInputFieldProps)", - "ChatInputSubmit()" - ] - }, - "webview-ui/src/components/ui/chat/ChatMessageProvider.ts": { - "interfaces": [ - "ChatMessageContext" - ] - }, - "webview-ui/src/components/ui/chat/useChatMessage.ts": { - "functions": [ - "useChatMessage()" - ] - }, - "webview-ui/src/components/ui/markdown/Blockquote.tsx": { - "functions": [ - "Blockquote({children}:{children:React.ReactNode})" - ] - }, - "webview-ui/src/components/ui/markdown/Markdown.tsx": { - "functions": [ - "Markdown({content}:{content:string})", - "p({children})", - "hr()", - "ol({children})", - "ul({children})", - "blockquote({children})", - "code({className,children,...props})", - "a({href,children})" - ] - }, - "webview-ui/src/components/ui/markdown/CodeBlock.tsx": { - "interfaces": [ - "CodeBlockProps" - ], - "functions": [ - "highlight()", - "pre(node)", - "code(node)" - ] - }, - "webview-ui/src/components/ui/hooks/useRooPortal.ts": { - "functions": [ - "useRooPortal(id:string)" - ] - }, - "webview-ui/src/components/ui/hooks/useRequestyKeyInfo.ts": { - "functions": [ - "getRequestyKeyInfo(apiKey?:string)", - "useRequestyKeyInfo(apiKey?:string,options?:UseRequestyKeyInfoOptions)" - ] - }, - "webview-ui/src/components/ui/hooks/useClipboard.ts": { - "interfaces": [ - "UseClipboardProps" - ], - "functions": [ - "useClipboard({timeout=2000}:UseClipboardProps={})", - "copy(value:string)" - ] - }, - "webview-ui/src/components/ui/hooks/useOpenRouterModelProviders.ts": { - "functions": [ - "getOpenRouterProvidersForModel(modelId:string)", - "useOpenRouterModelProviders(modelId?:string,options?:UseOpenRouterModelProvidersOptions)" - ] - }, - "webview-ui/src/components/ui/hooks/useOpenRouterKeyInfo.ts": { - "functions": [ - "getOpenRouterKeyInfo(apiKey?:string,baseUrl?:string)", - "useOpenRouterKeyInfo(apiKey?:string,baseUrl?:string,options?:UseOpenRouterKeyInfoOptions)" - ] - }, - "webview-ui/src/components/settings/RequestyBalanceDisplay.tsx": { - "functions": [ - "RequestyBalanceDisplay({apiKey}:{apiKey:string})" - ] - }, - "webview-ui/src/components/settings/ApiErrorMessage.tsx": { - "interfaces": [ - "ApiErrorMessageProps" - ], - "functions": [ - "ApiErrorMessage({errorMessage,children}:ApiErrorMessageProps)" - ] - }, - "webview-ui/src/components/settings/TerminalSettings.tsx": { - "functions": [ - "TerminalSettings({\tterminalOutputLineLimit,\tterminalShellIntegrationTimeout,\tterminalCommandDelay,\tterminalPowershellCounter,\tterminalZshClearEolMark,\tterminalZshOhMy,\tterminalZshP10k,\tterminalZdotdir,\tterminalCompressProgressBar,\tsetCachedStateField,\tclassName,\t...props}:TerminalSettingsProps)" - ] - }, - "webview-ui/src/components/settings/NotificationSettings.tsx": { - "functions": [ - "NotificationSettings({\tttsEnabled,\tttsSpeed,\tsoundEnabled,\tsoundVolume,\tsetCachedStateField,\t...props}:NotificationSettingsProps)" - ] - }, - "webview-ui/src/components/settings/ApiConfigManager.tsx": { - "interfaces": [ - "ApiConfigManagerProps" - ], - "functions": [ - "ApiConfigManager({\tcurrentApiConfigName=\"\",\tlistApiConfigMeta=[],\tonSelectConfig,\tonDeleteConfig,\tonRenameConfig,\tonUpsertConfig,}:ApiConfigManagerProps)", - "validateName(name:string,isNewProfile:boolean): string|null", - "resetCreateState()", - "resetRenameState()", - "onOpenChange(open:boolean)", - "onClearSearch()", - "handleSelectConfig(configName:string)", - "handleAdd()", - "handleStartRename()", - "handleCancel()", - "handleSave()", - "handleNewProfileSave()", - "handleDelete()" - ] - }, - "webview-ui/src/components/settings/BrowserSettings.tsx": { - "functions": [ - "BrowserSettings({\tbrowserToolEnabled,\tbrowserViewportSize,\tscreenshotQuality,\tremoteBrowserHost,\tremoteBrowserEnabled,\tsetCachedStateField,\t...props}:BrowserSettingsProps)", - "handleMessage(event:MessageEvent)", - "testConnection()" - ] - }, - "webview-ui/src/components/settings/ReasoningEffort.tsx": { - "interfaces": [ - "ReasoningEffortProps" - ], - "functions": [ - "ReasoningEffort({apiConfiguration,setApiConfigurationField}:ReasoningEffortProps)" - ] - }, - "webview-ui/src/components/settings/SettingsView.tsx": { - "interfaces": [ - "SettingsViewRef" - ], - "functions": [ - "handleSubmit()", - "scrollToSection(ref:React.RefObject)" - ] - }, - "webview-ui/src/components/settings/Section.tsx": { - "functions": [ - "Section({className,...props}:SectionProps)" - ] - }, - "webview-ui/src/components/settings/ModelPicker.tsx": { - "interfaces": [ - "ModelPickerProps" - ], - "functions": [ - "ModelPicker({\tdefaultModelId,\tmodels,\tmodelIdKey,\tmodelInfoKey,\tserviceName,\tserviceUrl,\tapiConfiguration,\tsetApiConfigurationField,\tdefaultModelInfo,}:ModelPickerProps)" - ] - }, - "webview-ui/src/components/settings/R1FormatSetting.tsx": { - "interfaces": [ - "R1FormatSettingProps" - ], - "functions": [ - "R1FormatSetting({onChange,openAiR1FormatEnabled}:R1FormatSettingProps)" - ] - }, - "webview-ui/src/components/settings/RateLimitSecondsControl.tsx": { - "interfaces": [ - "RateLimitSecondsControlProps" - ], - "functions": [ - "RateLimitSecondsControl({value,onChange})" - ] - }, - "webview-ui/src/components/settings/ThinkingBudget.tsx": { - "interfaces": [ - "ThinkingBudgetProps" - ], - "functions": [ - "ThinkingBudget({apiConfiguration,setApiConfigurationField,modelInfo}:ThinkingBudgetProps)" - ] - }, - "webview-ui/src/components/settings/ApiOptions.tsx": { - "interfaces": [ - "ApiOptionsProps" - ], - "functions": [ - "ApiOptions({\turiScheme,\tapiConfiguration,\tsetApiConfigurationField,\tfromWelcomeView,\terrorMessage,\tsetErrorMessage,}:ApiOptionsProps)", - "noTransform(value:T)", - "inputEventTransform(event:E)", - "getProviderDisplayName(providerKey:string): string|undefined", - "getSelectedProviderDocUrl(): {url:string;name:string}|undefined" - ] - }, - "webview-ui/src/components/settings/ExperimentalFeature.tsx": { - "interfaces": [ - "ExperimentalFeatureProps" - ], - "functions": [ - "ExperimentalFeature({enabled,onChange,experimentKey}:ExperimentalFeatureProps)" - ] - }, - "webview-ui/src/components/settings/SectionHeader.tsx": { - "functions": [ - "SectionHeader({description,children,className,...props}:SectionHeaderProps)" - ] - }, - "webview-ui/src/components/settings/OpenRouterBalanceDisplay.tsx": { - "functions": [ - "OpenRouterBalanceDisplay({apiKey,baseUrl}:{apiKey:string;baseUrl?:string})" - ] - }, - "webview-ui/src/components/settings/DiffSettingsControl.tsx": { - "interfaces": [ - "DiffSettingsControlProps" - ], - "functions": [ - "DiffSettingsControl({\tdiffEnabled=true,\tfuzzyMatchThreshold=1.0,\tonChange,})" - ] - }, - "webview-ui/src/components/settings/ContextManagementSettings.tsx": { - "functions": [ - "ContextManagementSettings({\tmaxOpenTabsContext,\tmaxWorkspaceFiles,\tshowRooIgnoredFiles,\tsetCachedStateField,\tmaxReadFileLine,\tclassName,\t...props}:ContextManagementSettingsProps)" - ] - }, - "webview-ui/src/components/settings/ModelInfoView.tsx": { - "functions": [ - "ModelInfoView({\tapiProvider,\tselectedModelId,\tmodelInfo,\tisDescriptionExpanded,\tsetIsDescriptionExpanded,}:ModelInfoViewProps)", - "ModelInfoSupportsItem({\tisSupported,\tsupportsLabel,\tdoesNotSupportLabel,}:{\tisSupported:boolean\tsupportsLabel:string\tdoesNotSupportLabel:string})" - ] - }, - "webview-ui/src/components/settings/LanguageSettings.tsx": { - "functions": [ - "LanguageSettings({language,setCachedStateField,className,...props}:LanguageSettingsProps)" - ] - }, - "webview-ui/src/components/settings/AutoApproveToggle.tsx": { - "functions": [ - "AutoApproveToggle({onToggle,...props}:AutoApproveToggleProps)" - ] - }, - "webview-ui/src/components/settings/ExperimentalSettings.tsx": { - "functions": [ - "ExperimentalSettings({\tsetCachedStateField,\texperiments,\tsetExperimentEnabled,\tclassName,\t...props}:ExperimentalSettingsProps)" - ] - }, - "webview-ui/src/components/settings/AutoApproveSettings.tsx": { - "functions": [ - "AutoApproveSettings({\talwaysAllowReadOnly,\talwaysAllowReadOnlyOutsideWorkspace,\talwaysAllowWrite,\talwaysAllowWriteOutsideWorkspace,\twriteDelayMs,\talwaysAllowBrowser,\talwaysApproveResubmit,\trequestDelaySeconds,\talwaysAllowMcp,\talwaysAllowModeSwitch,\talwaysAllowSubtasks,\talwaysAllowExecute,\tallowedCommands,\tsetCachedStateField,\tclassName,\t...props}:AutoApproveSettingsProps)", - "handleAddCommand()" - ] - }, - "webview-ui/src/components/settings/TemperatureControl.tsx": { - "interfaces": [ - "TemperatureControlProps" - ], - "functions": [ - "TemperatureControl({value,onChange,maxValue=1}:TemperatureControlProps)" - ] - }, - "webview-ui/src/components/settings/PromptCachingControl.tsx": { - "interfaces": [ - "PromptCachingControlProps" - ], - "functions": [ - "PromptCachingControl({apiConfiguration,setApiConfigurationField}:PromptCachingControlProps)" - ] - }, - "webview-ui/src/components/settings/About.tsx": { - "functions": [ - "About({version,telemetrySetting,setTelemetrySetting,className,...props}:AboutProps)" - ] - }, - "webview-ui/src/components/settings/CheckpointSettings.tsx": { - "functions": [ - "CheckpointSettings({enableCheckpoints,setCachedStateField,...props}:CheckpointSettingsProps)" - ] - }, - "webview-ui/src/components/chat/ContextWindowProgress.tsx": { - "interfaces": [ - "ContextWindowProgressProps" - ], - "functions": [ - "ContextWindowProgress({contextWindow,contextTokens,maxTokens}:ContextWindowProgressProps)" - ] - }, - "webview-ui/src/components/chat/ChatTextArea.tsx": { - "interfaces": [ - "ChatTextAreaProps" - ], - "functions": [ - "handleClickOutside(event:MouseEvent)", - "messageHandler(event:MessageEvent)", - "handleClickOutside(event:MouseEvent)" - ] - }, - "webview-ui/src/components/chat/TaskHeader.tsx": { - "interfaces": [ - "TaskHeaderProps" - ], - "functions": [ - "TaskHeader({\ttask,\ttokensIn,\ttokensOut,\tdoesModelSupportPromptCache,\tcacheWrites,\tcacheReads,\ttotalCost,\tcontextTokens,\tonClose,}:TaskHeaderProps)" - ] - }, - "webview-ui/src/components/chat/AutoApproveMenu.tsx": { - "interfaces": [ - "AutoApproveMenuProps" - ], - "functions": [ - "AutoApproveMenu({style}:AutoApproveMenuProps)" - ] - }, - "webview-ui/src/components/chat/ChatRow.tsx": { - "interfaces": [ - "ChatRowProps", - "ChatRowContentProps" - ], - "functions": [ - "ChatRowContent({\tmessage,\tlastModifiedMessage,\tisExpanded,\tisLast,\tisStreaming,\tonToggleExpand,\tonSuggestionClick,}:ChatRowContentProps)", - "getIconSpan(iconName:string,color:string)", - "toolIcon(name:string)", - "splitMessage(text:string)", - "ProgressIndicator()" - ] - }, - "webview-ui/src/components/chat/FollowUpSuggest.tsx": { - "interfaces": [ - "FollowUpSuggestProps" - ], - "functions": [ - "FollowUpSuggest({suggestions=[],onSuggestionClick,ts=1}:FollowUpSuggestProps)" - ] - }, - "webview-ui/src/components/chat/TaskActions.tsx": { - "functions": [ - "TaskActions({item}:{item:HistoryItem|undefined})" - ] - }, - "webview-ui/src/components/chat/BrowserSessionRow.tsx": { - "interfaces": [ - "BrowserSessionRowProps", - "BrowserSessionRowContentProps" - ], - "functions": [ - "BrowserSessionRowContent({\tmessage,\tisExpanded,\tonToggleExpand,\tlastModifiedMessage,\tisLast,\tsetMaxActionHeight,\tisStreaming,}:BrowserSessionRowContentProps)", - "BrowserActionBox({\taction,\tcoordinate,\ttext,}:{\taction:BrowserAction\tcoordinate?:string\ttext?:string})", - "getBrowserActionText(action:BrowserAction,coordinate?:string,text?:string)", - "BrowserCursor({style})" - ] - }, - "webview-ui/src/components/chat/ChatView.tsx": { - "interfaces": [ - "ChatViewProps", - "ChatViewRef" - ], - "functions": [ - "ChatViewComponent(\t{isHidden,showAnnouncement,hideAnnouncement,showHistoryView},\tref,)", - "playSound(audioType:AudioType)", - "playTts(text:string)", - "isBrowserSessionMessage(message:ClineMessage): boolean", - "endBrowserSession()", - "autoApprove()" - ] - }, - "webview-ui/src/components/chat/ContextMenu.tsx": { - "interfaces": [ - "ContextMenuProps" - ], - "functions": [ - "ContextMenu({\tonSelect,\tsearchQuery,\tinputValue,\tonMouseDown,\tselectedIndex,\tsetSelectedIndex,\tselectedType,\tqueryItems,\tmodes,\tloading=false,\tdynamicSearchResults=[],})", - "renderOptionContent(option:ContextMenuQueryItem)", - "getIconForOption(option:ContextMenuQueryItem): string", - "getMaterialIconForOption(option:ContextMenuQueryItem): string", - "isOptionSelectable(option:ContextMenuQueryItem): boolean" - ] - }, - "webview-ui/src/components/chat/Announcement.tsx": { - "interfaces": [ - "AnnouncementProps" - ], - "functions": [ - "Announcement({version,hideAnnouncement}:AnnouncementProps)" - ] - }, - "webview-ui/src/components/chat/Mention.tsx": { - "interfaces": [ - "MentionProps" - ], - "functions": [ - "Mention({text,withShadow=false}:MentionProps)" - ] - }, - "webview-ui/src/components/chat/IconButton.tsx": { - "interfaces": [ - "IconButtonProps" - ], - "functions": [ - "IconButton({\ticonClass,\ttitle,\tclassName,\tdisabled,\tisLoading,\tonClick,\tstyle,\t...props})" - ] - }, - "webview-ui/src/components/chat/ReasoningBlock.tsx": { - "interfaces": [ - "ReasoningBlockProps" - ], - "functions": [ - "ReasoningBlock({content,elapsed,isCollapsed=false,onToggleCollapse}:ReasoningBlockProps)" - ] - }, - "webview-ui/src/components/chat/SystemPromptWarning.tsx": { - "functions": [ - "SystemPromptWarning()" - ] - }, - "webview-ui/src/components/chat/checkpoints/CheckpointSaved.tsx": { - "functions": [ - "CheckpointSaved({checkpoint,...props}:CheckpointSavedProps)" - ] - }, - "webview-ui/src/components/chat/checkpoints/CheckpointMenu.tsx": { - "functions": [ - "CheckpointMenu({ts,commitHash,currentHash,checkpoint}:CheckpointMenuProps)" - ] - }, - "webview-ui/src/components/mcp/McpView.tsx": { - "functions": [ - "McpView({onDone}:McpViewProps)", - "ServerRow({server,alwaysAllowMcp}:{server:McpServer;alwaysAllowMcp?:boolean})", - "getStatusColor()", - "handleRowClick()", - "handleRestart()", - "handleTimeoutChange(event:React.ChangeEvent)", - "handleDelete()" - ] - }, - "webview-ui/src/components/mcp/McpToolRow.tsx": { - "functions": [ - "McpToolRow({tool,serverName,serverSource,alwaysAllowMcp}:McpToolRowProps)", - "handleAlwaysAllowChange()" - ] - }, - "webview-ui/src/components/mcp/McpResourceRow.tsx": { - "functions": [ - "McpResourceRow({item}:McpResourceRowProps)" - ] - }, - "webview-ui/src/components/mcp/McpEnabledToggle.tsx": { - "functions": [ - "McpEnabledToggle()", - "handleChange(e:Event|FormEvent)" - ] - }, - "webview-ui/src/components/welcome/RooHero.tsx": { - "functions": [ - "WelcomeView()" - ] - }, - "webview-ui/src/components/welcome/WelcomeView.tsx": { - "functions": [ - "WelcomeView()" - ] - }, - "webview-ui/src/components/common/MermaidBlock.tsx": { - "interfaces": [ - "MermaidBlockProps", - "SvgContainerProps" - ], - "functions": [ - "MermaidBlock({code}:MermaidBlockProps)", - "handleClick()", - "svgToPng(svgEl:SVGElement): Promise" - ] - }, - "webview-ui/src/components/common/Tab.tsx": { - "functions": [ - "Tab({className,children,...props}:TabProps)", - "TabHeader({className,children,...props}:TabProps)", - "TabContent({className,children,...props}:TabProps)" - ] - }, - "webview-ui/src/components/common/TelemetryBanner.tsx": { - "functions": [ - "TelemetryBanner()", - "handleAllow()", - "handleDeny()", - "handleOpenSettings()" - ] - }, - "webview-ui/src/components/common/CodeAccordian.tsx": { - "interfaces": [ - "CodeAccordianProps" - ], - "functions": [ - "removeLeadingNonAlphanumeric(path:string): string", - "CodeAccordian({\tcode,\tdiff,\tlanguage,\tpath,\tisFeedback,\tisConsoleLogs,\tisExpanded,\tonToggleExpand,\tisLoading,\tprogressStatus,\tforceWrap,}:CodeAccordianProps)" - ] - }, - "webview-ui/src/components/common/Thumbnails.tsx": { - "interfaces": [ - "ThumbnailsProps" - ], - "functions": [ - "Thumbnails({images,style,setImages,onHeightChange}:ThumbnailsProps)", - "handleDelete(index:number)", - "handleImageClick(image:string)" - ] - }, - "webview-ui/src/components/common/VSCodeButtonLink.tsx": { - "interfaces": [ - "VSCodeButtonLinkProps" - ], - "functions": [ - "VSCodeButtonLink({href,children,...props}:VSCodeButtonLinkProps)" - ] - }, - "webview-ui/src/components/common/MarkdownBlock.tsx": { - "interfaces": [ - "MarkdownBlockProps" - ], - "functions": [ - "remarkUrlToLink()" - ] - }, - "webview-ui/src/components/common/CommandOutputViewer.tsx": { - "interfaces": [ - "CommandOutputViewerProps" - ] - }, - "webview-ui/src/components/common/CodeBlock.tsx": { - "interfaces": [ - "CodeBlockProps" - ] - }, - "webview-ui/src/components/common/__mocks__/MarkdownBlock.tsx": { - "interfaces": [ - "MarkdownBlockProps" - ], - "functions": [ - "MarkdownBlock({content})" - ] - }, - "webview-ui/src/components/common/__mocks__/CodeBlock.tsx": { - "interfaces": [ - "CodeBlockProps" - ], - "functions": [ - "CodeBlock()" - ] - }, - "webview-ui/src/components/history/ExportButton.tsx": { - "functions": [ - "ExportButton({itemId}:{itemId:string})" - ] - }, - "webview-ui/src/components/history/HistoryView.tsx": { - "functions": [ - "HistoryView({onDone}:HistoryViewProps)", - "toggleSelectionMode()", - "toggleTaskSelection(taskId:string,isSelected:boolean)", - "toggleSelectAll(selectAll:boolean)", - "handleBatchDelete()" - ] - }, - "webview-ui/src/components/history/HistoryPreview.tsx": { - "functions": [ - "HistoryPreview({showHistoryView}:HistoryPreviewProps)" - ] - }, - "webview-ui/src/components/history/DeleteTaskDialog.tsx": { - "interfaces": [ - "DeleteTaskDialogProps" - ], - "functions": [ - "DeleteTaskDialog({taskId,...props}:DeleteTaskDialogProps)" - ] - }, - "webview-ui/src/components/history/CopyButton.tsx": { - "functions": [ - "CopyButton({itemTask}:CopyButtonProps)" - ] - }, - "webview-ui/src/components/history/BatchDeleteTaskDialog.tsx": { - "interfaces": [ - "BatchDeleteTaskDialogProps" - ], - "functions": [ - "BatchDeleteTaskDialog({taskIds,...props}:BatchDeleteTaskDialogProps)" - ] - }, - "webview-ui/src/components/history/useTaskSearch.ts": { - "functions": [ - "useTaskSearch()" - ] - }, - "webview-ui/src/components/prompts/PromptsView.tsx": { - "functions": [ - "getGroupName(group:GroupEntry): ToolGroup", - "PromptsView({onDone}:PromptsViewProps)", - "isModeWithSlug(mode:ModeConfig): modeisModeConfig", - "findMode(m:ModeConfig): boolean", - "getModeProperty(\t\tmode:ModeConfig|undefined,\t\tproperty:T,\t)", - "handleClickOutside(event:MouseEvent)", - "handler(event:MessageEvent)", - "updateSupportPrompt(type:SupportPromptType,value:string|undefined)", - "handleAgentReset(modeSlug:string,type:\"roleDefinition\"|\"customInstructions\")", - "handleSupportReset(type:SupportPromptType)", - "getSupportPromptValue(type:SupportPromptType): string", - "handleTestEnhancement()" - ] - }, - "webview-ui/src/components/human-relay/HumanRelayDialog.tsx": { - "interfaces": [ - "HumanRelayDialogProps" - ], - "functions": [ - "HumanRelayDialog({\tisOpen,\tonClose,\trequestId,\tpromptText,\tonSubmit,\tonCancel,})", - "handleCopy()", - "handleSubmit(e:React.FormEvent)", - "handleCancel()" - ] - }, - "webview-ui/src/stories/Chat.stories.tsx": { - "functions": [ - "useStorybookChat(): ChatHandler", - "append(message:Message,options?:{data?:any})" - ] - }, - "webview-ui/src/stories/DropdownMenu.stories.tsx": { - "functions": [ - "DropdownMenuVariant({side=\"bottom\",align=\"center\",children}:DropdownMenuVariantProps)" - ] - }, - "webview-ui/src/stories/Collapsible.stories.tsx": { - "functions": [ - "CollapsibleDemo()" - ] - }, - "webview-ui/src/stories/Combobox.stories.tsx": { - "functions": [ - "Combobox()" - ] - }, - "webview-ui/src/lib/utils.ts": { - "functions": [ - "cn(...inputs:ClassValue[])" - ] - }, - "webview-ui/src/i18n/TranslationContext.tsx": { - "functions": [ - "TranslationProvider({children})", - "useAppTranslation()" - ] - }, - "webview-ui/src/i18n/setup.ts": { - "functions": [ - "loadTranslations()" - ] - }, - "webview-ui/src/i18n/test-utils.ts": { - "functions": [ - "setupI18nForTests()" - ] - }, - "webview-ui/src/i18n/__mocks__/TranslationContext.tsx": { - "functions": [ - "mockTranslate(key:string,options?:Record): string", - "TranslationProvider({children})", - "useAppTranslation()" - ] - }, - ".github/scripts/parse_changeset_changelog.py": { - "py_functions": [ - "parse_changelog_section(content: str) -> None" - ], - "py_imports": [ - "import sys", - "import os", - "import subprocess" - ] - }, - ".github/scripts/release-notes-prompt.py": { - "py_functions": [ - "extract_description_section(pr_body) -> None", - "extract_ellipsis_important(pr_body) -> None", - "extract_coderabbit_summary(pr_body) -> None", - "num_tokens_from_string(string: str, model_name: str) -> int", - "truncate_to_token_limit(text, max_tokens, model_name) -> None" - ], - "py_imports": [ - "import os", - "import subprocess", - "import json", - "import re", - "import tiktoken", - "from datetime import datetime", - "from pytz import timezone" - ] - }, - ".github/scripts/ai-release-notes.py": { - "py_functions": [ - "num_tokens_from_string(string: str, model_name: str) -> int", - "truncate_to_token_limit(text, max_tokens, model_name) -> None", - "generate_release_notes(model_name) -> None" - ], - "py_imports": [ - "import os", - "import requests", - "import json", - "import tiktoken" - ] - }, - ".github/scripts/overwrite_changeset_changelog.py": { - "py_functions": [ - "overwrite_changelog_section(changelog_text: str, new_content: str) -> None" - ], - "py_imports": [ - "import os" - ] - }, - ".github/scripts/get_prev_version_refs.py": { - "py_functions": [ - "run_git_command(command) -> None", - "parse_merge_commit(line) -> None", - "get_version_refs() -> None" - ], - "py_imports": [ - "import os", - "import re", - "import subprocess" - ] - }, - "e2e/src/runTest.ts": { - "functions": [ - "main()" - ] - }, - "e2e/src/suite/utils.ts": { - "functions": [ - "waitFor(\tcondition:(()=>Promise)|(()=>boolean),\t{timeout=30_000,interval=250}:WaitForOptions={},)", - "check()", - "waitUntilAborted({api,taskId,...options}:WaitUntilAbortedOptions)", - "waitUntilCompleted({api,taskId,...options}:WaitUntilCompletedOptions)", - "sleep(ms:number)" - ] - }, - "e2e/src/suite/index.ts": { - "functions": [ - "run()" - ] - }, - "src/extension.ts": { - "functions": [ - "activate(context:vscode.ExtensionContext)", - "provideTextDocumentContent(uri:vscode.Uri): string", - "deactivate()" - ] - }, - "src/__mocks__/McpHub.ts": { - "classes": [ - { - "name": "McpHub" - } - ], - "functions": [ - "constructor()", - "toggleToolAlwaysAllow(serverName:string,toolName:string,shouldAllow:boolean): Promise", - "callTool(serverName:string,toolName:string,toolArguments?:Record): Promise" - ] - }, - "src/__mocks__/jest.setup.ts": { - "interfaces": [ - "String" - ], - "functions": [ - "toPosixPath(p:string)" - ] - }, - "src/__mocks__/fs/promises.ts": { - "functions": [ - "formatInstructions(sections:string[]): string", - "formatRuleContent(ruleFile:string,content:string): string", - "ensureDirectoryExists(path:string)" - ] - }, - "src/core/mode-validator.ts": { - "functions": [ - "validateToolUse(\ttoolName:ToolName,\tmode:Mode,\tcustomModes?:ModeConfig[],\ttoolRequirements?:Record,\ttoolParams?:Record,)" - ] - }, - "src/core/Cline.ts": { - "classes": [ - { - "name": "Cline" - } - ], - "functions": [ - "constructor({\t\tprovider,\t\tapiConfiguration,\t\tcustomInstructions,\t\tenableDiff=false,\t\tenableCheckpoints=true,\t\tfuzzyMatchThreshold=1.0,\t\tconsecutiveMistakeLimit=3,\t\ttask,\t\timages,\t\thistoryItem,\t\tstartTask=true,\t\trootTask,\t\tparentTask,\t\ttaskNumber=-1,\t\tonCreated,\t}:ClineOptions)", - "create(options:ClineOptions): [Cline,Promise]", - "cwd()", - "getSavedApiConversationHistory(): Promise", - "addToApiConversationHistory(message:Anthropic.MessageParam)", - "overwriteApiConversationHistory(newHistory:Anthropic.MessageParam[])", - "saveApiConversationHistory()", - "getSavedClineMessages(): Promise", - "addToClineMessages(message:ClineMessage)", - "overwriteClineMessages(newMessages:ClineMessage[])", - "updateClineMessage(partialMessage:ClineMessage)", - "saveClineMessages()", - "ask(\t\ttype:ClineAsk,\t\ttext?:string,\t\tpartial?:boolean,\t\tprogressStatus?:ToolProgressStatus,\t)", - "handleWebviewAskResponse(askResponse:ClineAskResponse,text?:string,images?:string[])", - "say(\t\ttype:ClineSay,\t\ttext?:string,\t\timages?:string[],\t\tpartial?:boolean,\t\tcheckpoint?:Record,\t\tprogressStatus?:ToolProgressStatus,\t)", - "sayAndCreateMissingParamError(toolName:ToolName,paramName:string,relPath?:string)", - "startTask(task?:string,images?:string[]): Promise", - "resumePausedTask(lastMessage:string)", - "resumeTaskFromHistory()", - "initiateTaskLoop(userContent:UserContent): Promise", - "abortTask(isAbandoned=false)", - "attemptApiRequest(previousApiReqIndex:number,retryAttempt:number=0): ApiStream", - "presentAssistantMessage()", - "toolDescription(): string", - "pushToolResult(content:ToolResponse)", - "askApproval(\t\t\t\t\ttype:ClineAsk,\t\t\t\t\tpartialMessage?:string,\t\t\t\t\tprogressStatus?:ToolProgressStatus,\t\t\t\t)", - "askFinishSubTaskApproval()", - "handleError(action:string,error:Error)", - "removeClosingTag(tag:ToolParamName,text?:string): string", - "waitForResume()", - "recursivelyMakeClineRequests(\t\tuserContent:UserContent,\t\tincludeFileDetails:boolean=false,\t)", - "updateApiReqMsg(cancelReason?:ClineApiReqCancelReason,streamingFailedMessage?:string)", - "abortStream(cancelReason:ClineApiReqCancelReason,streamingFailedMessage?:string)", - "loadContext(userContent:UserContent,includeFileDetails:boolean=false)", - "shouldProcessMentions(text:string)", - "getEnvironmentDetails(includeFileDetails:boolean=false)", - "getCheckpointService()", - "log(message:string)", - "getInitializedCheckpointService({\t\tinterval=250,\t\ttimeout=15_000,\t}:{interval?:number;timeout?:number}={})", - "checkpointDiff({\t\tts,\t\tpreviousCommitHash,\t\tcommitHash,\t\tmode,\t}:{\t\tts:number\t\tpreviousCommitHash?:string\t\tcommitHash:string\t\tmode:\"full\"|\"checkpoint\"\t})", - "checkpointSave()", - "checkpointRestore({\t\tts,\t\tcommitHash,\t\tmode,\t}:{\t\tts:number\t\tcommitHash:string\t\tmode:\"preview\"|\"restore\"\t})", - "getFileContextTracker(): FileContextTracker", - "getTokenUsage()", - "recordToolUsage(toolName:ToolName)", - "recordToolError(toolName:ToolName,error?:string)", - "getToolUsage()" - ] - }, - "src/core/CodeActionProvider.ts": { - "classes": [ - { - "name": "CodeActionProvider" - } - ], - "functions": [ - "createAction(title:string,kind:vscode.CodeActionKind,command:string,args:any[]): vscode.CodeAction", - "createActionPair(\t\tbaseTitle:string,\t\tkind:vscode.CodeActionKind,\t\tbaseCommand:string,\t\targs:any[],\t)", - "provideCodeActions(\t\tdocument:vscode.TextDocument,\t\trange:vscode.Range|vscode.Selection,\t\tcontext:vscode.CodeActionContext,\t)" - ] - }, - "src/core/EditorUtils.ts": { - "classes": [ - { - "name": "EditorUtils" - } - ], - "interfaces": [ - "EffectiveRange", - "DiagnosticData", - "EditorContext" - ], - "functions": [ - "getEffectiveRange(\t\tdocument:vscode.TextDocument,\t\trange:vscode.Range|vscode.Selection,\t)", - "getFilePath(document:vscode.TextDocument): string", - "createDiagnosticData(diagnostic:vscode.Diagnostic): DiagnosticData", - "hasIntersectingRange(range1:vscode.Range,range2:vscode.Range): boolean", - "getEditorContext(editor?:vscode.TextEditor): EditorContext|null" - ] - }, - "src/core/task-persistence/taskMessages.ts": { - "functions": [ - "readTaskMessages({\ttaskId,\tglobalStoragePath,}:ReadTaskMessagesOptions)", - "saveTaskMessages({messages,taskId,globalStoragePath}:SaveTaskMessagesOptions)" - ] - }, - "src/core/task-persistence/apiMessages.ts": { - "functions": [ - "readApiMessages({\ttaskId,\tglobalStoragePath,}:{\ttaskId:string\tglobalStoragePath:string})", - "saveApiMessages({\tmessages,\ttaskId,\tglobalStoragePath,}:{\tmessages:ApiMessage[]\ttaskId:string\tglobalStoragePath:string})" - ] - }, - "src/core/task-persistence/taskMetadata.ts": { - "functions": [ - "taskMetadata({\tmessages,\ttaskId,\ttaskNumber,\tglobalStoragePath,\tworkspace,}:TaskMetadataOptions)" - ] - }, - "src/core/tools/insertContentTool.ts": { - "functions": [ - "insertContentTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/attemptCompletionTool.ts": { - "functions": [ - "attemptCompletionTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,\ttoolDescription:ToolDescription,\taskFinishSubTaskApproval:AskFinishSubTaskApproval,)" - ] - }, - "src/core/tools/listFilesTool.ts": { - "functions": [ - "listFilesTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/useMcpToolTool.ts": { - "functions": [ - "useMcpToolTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/searchAndReplaceTool.ts": { - "functions": [ - "validateParams(\tcline:Cline,\trelPath:string|undefined,\tsearch:string|undefined,\treplace:string|undefined,\tpushToolResult:PushToolResult,)", - "searchAndReplaceTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)", - "escapeRegExp(input:string): string" - ] - }, - "src/core/tools/searchFilesTool.ts": { - "functions": [ - "searchFilesTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/newTaskTool.ts": { - "functions": [ - "newTaskTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/listCodeDefinitionNamesTool.ts": { - "functions": [ - "listCodeDefinitionNamesTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/applyDiffTool.ts": { - "functions": [ - "applyDiffTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/fetchInstructionsTool.ts": { - "functions": [ - "fetchInstructionsTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,)" - ] - }, - "src/core/tools/accessMcpResourceTool.ts": { - "functions": [ - "accessMcpResourceTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/switchModeTool.ts": { - "functions": [ - "switchModeTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/readFileTool.ts": { - "functions": [ - "readFileTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/writeToFileTool.ts": { - "functions": [ - "writeToFileTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/browserActionTool.ts": { - "functions": [ - "browserActionTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/askFollowupQuestionTool.ts": { - "functions": [ - "askFollowupQuestionTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)" - ] - }, - "src/core/tools/executeCommandTool.ts": { - "functions": [ - "executeCommandTool(\tcline:Cline,\tblock:ToolUse,\taskApproval:AskApproval,\thandleError:HandleError,\tpushToolResult:PushToolResult,\tremoveClosingTag:RemoveClosingTag,)", - "executeCommand(\tcline:Cline,\tcommand:string,\tcustomCwd?:string,)", - "sendCommandOutput(line:string,terminalProcess:TerminalProcess): Promise" - ] - }, - "src/core/sliding-window/index.ts": { - "functions": [ - "estimateTokenCount(\tcontent:Array,\tapiHandler:ApiHandler,)", - "truncateConversation(\tmessages:Anthropic.Messages.MessageParam[],\tfracToRemove:number,)", - "truncateConversationIfNeeded({\tmessages,\ttotalTokens,\tcontextWindow,\tmaxTokens,\tapiHandler,}:TruncateOptions)" - ] - }, - "src/core/config/CustomModesManager.ts": { - "classes": [ - { - "name": "CustomModesManager" - } - ], - "functions": [ - "constructor(\t\tprivatereadonlycontext:vscode.ExtensionContext,\t\tprivatereadonlyonUpdate:()=>Promise,\t)", - "queueWrite(operation:()=>Promise): Promise", - "processWriteQueue(): Promise", - "getWorkspaceRoomodes(): Promise", - "loadModesFromFile(filePath:string): Promise", - "mergeCustomModes(projectModes:ModeConfig[],globalModes:ModeConfig[]): Promise", - "getCustomModesFilePath(): Promise", - "watchCustomModesFiles(): Promise", - "getCustomModes(): Promise", - "updateCustomMode(slug:string,config:ModeConfig): Promise", - "updateModesInFile(filePath:string,operation:(modes:ModeConfig[])=>ModeConfig[]): Promise", - "refreshMergedState(): Promise", - "deleteCustomMode(slug:string): Promise", - "ensureSettingsDirectoryExists(): Promise", - "resetCustomModes(): Promise", - "dispose(): void" - ] - }, - "src/core/config/ContextProxy.ts": { - "classes": [ - { - "name": "ContextProxy" - } - ], - "functions": [ - "isPassThroughStateKey(key:string)", - "constructor(context:vscode.ExtensionContext)", - "isInitialized()", - "initialize()", - "extensionUri()", - "extensionPath()", - "globalStorageUri()", - "logUri()", - "extension()", - "extensionMode()", - "getGlobalState(key:K,defaultValue?:GlobalState[K]): GlobalState[K]", - "updateGlobalState(key:K,value:GlobalState[K])", - "getAllGlobalState(): GlobalState", - "getSecret(key:SecretStateKey)", - "storeSecret(key:SecretStateKey,value?:string)", - "getAllSecretState(): SecretState", - "getGlobalSettings(): GlobalSettings", - "getProviderSettings(): ProviderSettings", - "setProviderSettings(values:ProviderSettings)", - "setValue(key:K,value:RooCodeSettings[K])", - "getValue(key:K): RooCodeSettings[K]", - "getValues(): RooCodeSettings", - "setValues(values:RooCodeSettings)", - "export(): Promise", - "resetAllState()" - ] - }, - "src/core/config/importExport.ts": { - "functions": [ - "importSettings({providerSettingsManager,contextProxy}:ImportExportOptions)", - "exportSettings({providerSettingsManager,contextProxy}:ImportExportOptions)" - ] - }, - "src/core/config/ProviderSettingsManager.ts": { - "classes": [ - { - "name": "ProviderSettingsManager" - } - ], - "functions": [ - "constructor(context:ExtensionContext)", - "generateId()", - "lock(cb:()=>Promise)", - "initialize()", - "migrateRateLimitSeconds(providerProfiles:ProviderProfiles)", - "migrateDiffSettings(providerProfiles:ProviderProfiles)", - "listConfig(): Promise", - "saveConfig(name:string,config:ProviderSettingsWithId)", - "loadConfig(name:string)", - "loadConfigById(id:string)", - "deleteConfig(name:string)", - "hasConfig(name:string)", - "setModeConfig(mode:Mode,configId:string)", - "getModeConfigId(mode:Mode)", - "export()", - "import(providerProfiles:ProviderProfiles)", - "resetAllConfigs()", - "secretsKey()", - "load(): Promise", - "store(providerProfiles:ProviderProfiles)" - ] - }, - "src/core/ignore/RooIgnoreController.ts": { - "classes": [ - { - "name": "RooIgnoreController" - } - ], - "functions": [ - "constructor(cwd:string)", - "initialize(): Promise", - "setupFileWatcher(): void", - "loadRooIgnore(): Promise", - "validateAccess(filePath:string): boolean", - "validateCommand(command:string): string|undefined", - "filterPaths(paths:string[]): string[]", - "dispose(): void", - "getInstructions(): string|undefined" - ] - }, - "src/core/ignore/__mocks__/RooIgnoreController.ts": { - "classes": [ - { - "name": "RooIgnoreController" - } - ], - "functions": [ - "constructor(cwd:string)", - "initialize(): Promise", - "validateAccess(filePath:string): boolean", - "validateCommand(command:string): string|undefined", - "filterPaths(paths:string[]): string[]", - "dispose(): void", - "getInstructions(): string|undefined" - ] - }, - "src/core/webview/webviewMessageHandler.ts": { - "functions": [ - "webviewMessageHandler(provider:ClineProvider,message:WebviewMessage)", - "getGlobalState(key:K)", - "updateGlobalState(key:K,value:GlobalState[K])", - "generateSystemPrompt(provider:ClineProvider,message:WebviewMessage)" - ] - }, - "src/core/webview/getNonce.ts": { - "functions": [ - "getNonce()" - ] - }, - "src/core/webview/ClineProvider.ts": { - "classes": [ - { - "name": "ClineProvider" - } - ], - "functions": [ - "workspaceTracker(): WorkspaceTracker|undefined", - "constructor(\t\treadonlycontext:vscode.ExtensionContext,\t\tprivatereadonlyoutputChannel:vscode.OutputChannel,\t\tprivatereadonlyrenderContext:\"sidebar\"|\"editor\"=\"sidebar\",\t)", - "addClineToStack(cline:Cline)", - "removeClineFromStack()", - "getCurrentCline(): Cline|undefined", - "getClineStackSize(): number", - "getCurrentTaskStack(): string[]", - "finishSubTask(lastMessage:string)", - "dispose()", - "getVisibleInstance(): ClineProvider|undefined", - "getInstance(): Promise", - "isActiveTask(): Promise", - "handleCodeAction(\t\tcommand:string,\t\tpromptType:keyoftypeofACTION_NAMES,\t\tparams:Record,\t)", - "handleTerminalAction(\t\tcommand:string,\t\tpromptType:\"TERMINAL_ADD_TO_CONTEXT\"|\"TERMINAL_FIX\"|\"TERMINAL_EXPLAIN\",\t\tparams:Record,\t)", - "resolveWebviewView(webviewView:vscode.WebviewView|vscode.WebviewPanel)", - "initClineWithSubTask(parent:Cline,task?:string,images?:string[])", - "initClineWithTask(\t\ttask?:string,\t\timages?:string[],\t\tparentTask?:Cline,\t\toptions:Partial<\t\t\tPick<\t\t\t\tClineOptions,\t\t\t\t|\"customInstructions\"\t\t\t\t|\"enableDiff\"\t\t\t\t|\"enableCheckpoints\"\t\t\t\t|\"fuzzyMatchThreshold\"\t\t\t\t|\"consecutiveMistakeLimit\"\t\t\t\t|\"experiments\"\t\t\t>\t\t>={},\t)", - "initClineWithHistoryItem(historyItem:HistoryItem&{rootTask?:Cline;parentTask?:Cline})", - "postMessageToWebview(message:ExtensionMessage)", - "getHMRHtmlContent(webview:vscode.Webview): Promise", - "getHtmlContent(webview:vscode.Webview): string", - "setWebviewMessageListener(webview:vscode.Webview)", - "onReceiveMessage(message:WebviewMessage)", - "handleModeSwitch(newMode:Mode)", - "updateApiConfiguration(providerSettings:ProviderSettings)", - "cancelTask()", - "updateCustomInstructions(instructions?:string)", - "ensureMcpServersDirectoryExists(): Promise", - "ensureSettingsDirectoryExists(): Promise", - "ensureCacheDirectoryExists()", - "writeModelsToCache(filename:string,data:T)", - "readModelsFromCache(filename:string): Promise|undefined>", - "handleOpenRouterCallback(code:string)", - "handleGlamaCallback(code:string)", - "handleRequestyCallback(code:string)", - "upsertApiConfiguration(configName:string,apiConfiguration:ApiConfiguration)", - "getTaskWithId(id:string): Promise<{\t\thistoryItem:HistoryItem\t\ttaskDirPath:string\t\tapiConversationHistoryFilePath:string\t\tuiMessagesFilePath:string\t\tapiConversationHistory:Anthropic.MessageParam[]\t}>", - "showTaskWithId(id:string)", - "exportTaskWithId(id:string)", - "deleteTaskWithId(id:string)", - "deleteTaskFromState(id:string)", - "postStateToWebview()", - "hasFileBasedSystemPromptOverride(mode:Mode): Promise", - "getStateToPostToWebview()", - "getState()", - "updateTaskHistory(item:HistoryItem): Promise", - "updateGlobalState(key:K,value:GlobalState[K])", - "getGlobalState(key:K)", - "setValue(key:K,value:RooCodeSettings[K])", - "getValue(key:K)", - "getValues()", - "setValues(values:RooCodeSettings)", - "cwd()", - "resetState()", - "log(message:string)", - "viewLaunched()", - "messages()", - "getMcpHub(): McpHub|undefined", - "getTelemetryProperties(): Promise>" - ] - }, - "src/core/webview/getUri.ts": { - "functions": [ - "getUri(webview:Webview,extensionUri:Uri,pathList:string[])" - ] - }, - "src/core/assistant-message/parse-assistant-message.ts": { - "functions": [ - "parseAssistantMessage(assistantMessage:string)" - ] - }, - "src/core/diff/insert-groups.ts": { - "interfaces": [ - "InsertGroup" - ], - "functions": [ - "insertGroups(original:string[],insertGroups:InsertGroup[]): string[]" - ] - }, - "src/core/diff/strategies/multi-search-replace.ts": { - "classes": [ - { - "name": "MultiSearchReplaceDiffStrategy" - } - ], - "functions": [ - "getSimilarity(original:string,search:string): number", - "fuzzySearch(lines:string[],searchChunk:string,startIndex:number,endIndex:number)", - "getName(): string", - "constructor(fuzzyThreshold?:number,bufferLines?:number)", - "getToolDescription(args:{cwd:string;toolOptions?:{[key:string]:string}}): string", - "unescapeMarkers(content:string): string", - "validateMarkerSequencing(diffContent:string): {success:boolean;error?:string}", - "reportMergeConflictError(found:string,expected:string)", - "reportInvalidDiffError(found:string,expected:string)", - "applyDiff(\t\toriginalContent:string,\t\tdiffContent:string,\t\t_paramStartLine?:number,\t\t_paramEndLine?:number,\t)", - "getProgressStatus(toolUse:ToolUse,result?:DiffResult): ToolProgressStatus" - ], - "enums": [ - { - "name": "State" - } - ] - }, - "src/core/mentions/index.ts": { - "functions": [ - "openMention(mention?:string): Promise", - "parseMentions(\ttext:string,\tcwd:string,\turlContentFetcher:UrlContentFetcher,\tfileContextTracker?:FileContextTracker,)", - "getFileOrFolderContent(mentionPath:string,cwd:string): Promise", - "getWorkspaceProblems(cwd:string): Promise" - ] - }, - "src/core/prompts/system.ts": { - "functions": [ - "generatePrompt(\tcontext:vscode.ExtensionContext,\tcwd:string,\tsupportsComputerUse:boolean,\tmode:Mode,\tmcpHub?:McpHub,\tdiffStrategy?:DiffStrategy,\tbrowserViewportSize?:string,\tpromptComponent?:PromptComponent,\tcustomModeConfigs?:ModeConfig[],\tglobalCustomInstructions?:string,\tdiffEnabled?:boolean,\texperiments?:Record,\tenableMcpServerCreation?:boolean,\tlanguage?:string,\trooIgnoreInstructions?:string,)", - "SYSTEM_PROMPT(\tcontext:vscode.ExtensionContext,\tcwd:string,\tsupportsComputerUse:boolean,\tmcpHub?:McpHub,\tdiffStrategy?:DiffStrategy,\tbrowserViewportSize?:string,\tmode:Mode=defaultModeSlug,\tcustomModePrompts?:CustomModePrompts,\tcustomModes?:ModeConfig[],\tglobalCustomInstructions?:string,\tdiffEnabled?:boolean,\texperiments?:Record,\tenableMcpServerCreation?:boolean,\tlanguage?:string,\trooIgnoreInstructions?:string,)", - "getPromptComponent(value:unknown)" - ] - }, - "src/core/prompts/responses.ts": { - "functions": [ - "formatImagesIntoBlocks(images?:string[]): Anthropic.ImageBlockParam[]" - ] - }, - "src/core/prompts/instructions/create-mode.ts": { - "functions": [ - "createModeInstructions(context:vscode.ExtensionContext|undefined): Promise" - ] - }, - "src/core/prompts/instructions/instructions.ts": { - "interfaces": [ - "InstructionsDetail" - ], - "functions": [ - "fetchInstructions(text:string,detail:InstructionsDetail): Promise" - ] - }, - "src/core/prompts/instructions/create-mcp-server.ts": { - "functions": [ - "createMCPServerInstructions(\tmcpHub:McpHub|undefined,\tdiffStrategy:DiffStrategy|undefined,)" - ] - }, - "src/core/prompts/sections/tool-use.ts": { - "functions": [ - "getSharedToolUseSection(): string" - ] - }, - "src/core/prompts/sections/capabilities.ts": { - "functions": [ - "getCapabilitiesSection(\tcwd:string,\tsupportsComputerUse:boolean,\tmcpHub?:McpHub,\tdiffStrategy?:DiffStrategy,)" - ] - }, - "src/core/prompts/sections/modes.ts": { - "functions": [ - "getModesSection(context:vscode.ExtensionContext): Promise" - ] - }, - "src/core/prompts/sections/tool-use-guidelines.ts": { - "functions": [ - "getToolUseGuidelinesSection(): string" - ] - }, - "src/core/prompts/sections/mcp-servers.ts": { - "functions": [ - "getMcpServersSection(\tmcpHub?:McpHub,\tdiffStrategy?:DiffStrategy,\tenableMcpServerCreation?:boolean,)" - ] - }, - "src/core/prompts/sections/rules.ts": { - "functions": [ - "getEditingInstructions(diffStrategy?:DiffStrategy,experiments?:Record): string", - "getRulesSection(\tcwd:string,\tsupportsComputerUse:boolean,\tdiffStrategy?:DiffStrategy,\texperiments?:Record|undefined,)" - ] - }, - "src/core/prompts/sections/custom-system-prompt.ts": { - "functions": [ - "interpolatePromptContent(content:string,variables:PromptVariables): string", - "safeReadFile(filePath:string): Promise", - "getSystemPromptFilePath(cwd:string,mode:Mode): string", - "loadSystemPromptFile(cwd:string,mode:Mode,variables:PromptVariables): Promise", - "ensureRooDirectory(cwd:string): Promise" - ] - }, - "src/core/prompts/sections/custom-instructions.ts": { - "functions": [ - "safeReadFile(filePath:string): Promise", - "directoryExists(dirPath:string): Promise", - "resolveDirectoryEntry(\tentry:Dirent,\tdirPath:string,\tfilePaths:string[],\tdepth:number,)", - "resolveSymLink(fullPath:string,filePaths:string[],depth:number): Promise", - "readTextFilesFromDirectory(dirPath:string): Promise>", - "formatDirectoryContent(dirPath:string,files:Array<{filename:string;content:string}>): string", - "loadRuleFiles(cwd:string): Promise", - "addCustomInstructions(\tmodeCustomInstructions:string,\tglobalCustomInstructions:string,\tcwd:string,\tmode:string,\toptions:{language?:string;rooIgnoreInstructions?:string}={},)" - ] - }, - "src/core/prompts/sections/objective.ts": { - "functions": [ - "getObjectiveSection(): string" - ] - }, - "src/core/prompts/sections/system-info.ts": { - "functions": [ - "getSystemInfoSection(cwd:string,currentMode:Mode,customModes?:ModeConfig[]): string", - "findModeBySlug(slug:string,modes?:ModeConfig[])" - ] - }, - "src/core/prompts/tools/execute-command.ts": { - "functions": [ - "getExecuteCommandDescription(args:ToolArgs): string|undefined" - ] - }, - "src/core/prompts/tools/search-files.ts": { - "functions": [ - "getSearchFilesDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/attempt-completion.ts": { - "functions": [ - "getAttemptCompletionDescription(): string" - ] - }, - "src/core/prompts/tools/use-mcp-tool.ts": { - "functions": [ - "getUseMcpToolDescription(args:ToolArgs): string|undefined" - ] - }, - "src/core/prompts/tools/search-and-replace.ts": { - "functions": [ - "getSearchAndReplaceDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/switch-mode.ts": { - "functions": [ - "getSwitchModeDescription(): string" - ] - }, - "src/core/prompts/tools/read-file.ts": { - "functions": [ - "getReadFileDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/access-mcp-resource.ts": { - "functions": [ - "getAccessMcpResourceDescription(args:ToolArgs): string|undefined" - ] - }, - "src/core/prompts/tools/insert-content.ts": { - "functions": [ - "getInsertContentDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/fetch-instructions.ts": { - "functions": [ - "getFetchInstructionsDescription(): string" - ] - }, - "src/core/prompts/tools/list-files.ts": { - "functions": [ - "getListFilesDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/index.ts": { - "functions": [ - "getToolDescriptionsForMode(\tmode:Mode,\tcwd:string,\tsupportsComputerUse:boolean,\tdiffStrategy?:DiffStrategy,\tbrowserViewportSize?:string,\tmcpHub?:McpHub,\tcustomModes?:ModeConfig[],\texperiments?:Record,)" - ] - }, - "src/core/prompts/tools/write-to-file.ts": { - "functions": [ - "getWriteToFileDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/browser-action.ts": { - "functions": [ - "getBrowserActionDescription(args:ToolArgs): string|undefined" - ] - }, - "src/core/prompts/tools/ask-followup-question.ts": { - "functions": [ - "getAskFollowupQuestionDescription(): string" - ] - }, - "src/core/prompts/tools/new-task.ts": { - "functions": [ - "getNewTaskDescription(args:ToolArgs): string" - ] - }, - "src/core/prompts/tools/list-code-definition-names.ts": { - "functions": [ - "getListCodeDefinitionNamesDescription(args:ToolArgs): string" - ] - }, - "src/core/context-tracking/FileContextTracker.ts": { - "classes": [ - { - "name": "FileContextTracker" - } - ], - "functions": [ - "constructor(provider:ClineProvider,taskId:string)", - "getCwd(): string|undefined", - "setupFileWatcher(filePath:string)", - "trackFileContext(filePath:string,operation:RecordSource)", - "getContextProxy(): ContextProxy|undefined", - "getTaskMetadata(taskId:string): Promise", - "saveTaskMetadata(taskId:string,metadata:TaskMetadata)", - "addFileToFileContextTracker(taskId:string,filePath:string,source:RecordSource)", - "getLatestDateForField(path:string,field:keyofFileMetadataEntry): number|null", - "getAndClearRecentlyModifiedFiles(): string[]", - "getAndClearCheckpointPossibleFile(): string[]", - "markFileAsEditedByRoo(filePath:string): void", - "dispose(): void" - ] - }, - "src/utils/xml-matcher.ts": { - "classes": [ - { - "name": "XmlMatcher" - } - ], - "interfaces": [ - "XmlMatcherResult" - ], - "functions": [ - "constructor(\t\treadonlytagName:string,\t\treadonlytransform?:(chunks:XmlMatcherResult)=>Result,\t\treadonlyposition=0,\t)", - "collect()", - "pop()", - "_update(chunk:string)", - "final(chunk?:string)", - "update(chunk:string)" - ] - }, - "src/utils/path.ts": { - "interfaces": [ - "String" - ], - "functions": [ - "toPosixPath(p:string)", - "arePathsEqual(path1?:string,path2?:string): boolean", - "normalizePath(p:string): string", - "getReadablePath(cwd:string,relPath?:string): string", - "toRelativePath(filePath:string,cwd:string)", - "getWorkspacePath(defaultCwdPath=\"\")" - ] - }, - "src/utils/cost.ts": { - "functions": [ - "calculateApiCostInternal(\tmodelInfo:ModelInfo,\tinputTokens:number,\toutputTokens:number,\tcacheCreationInputTokens:number,\tcacheReadInputTokens:number,)", - "calculateApiCostAnthropic(\tmodelInfo:ModelInfo,\tinputTokens:number,\toutputTokens:number,\tcacheCreationInputTokens?:number,\tcacheReadInputTokens?:number,)", - "calculateApiCostOpenAI(\tmodelInfo:ModelInfo,\tinputTokens:number,\toutputTokens:number,\tcacheCreationInputTokens?:number,\tcacheReadInputTokens?:number,)", - "parseApiPrice(price:any)" - ] - }, - "src/utils/fs.ts": { - "functions": [ - "createDirectoriesForFile(filePath:string): Promise", - "fileExistsAtPath(filePath:string): Promise" - ] - }, - "src/utils/tts.ts": { - "interfaces": [ - "Say" - ], - "functions": [ - "setTtsEnabled(enabled:boolean)", - "setTtsSpeed(newSpeed:number)", - "playTts(message:string,options:PlayTtsOptions={})", - "stopTts()", - "processQueue(): Promise" - ] - }, - "src/utils/xml.ts": { - "functions": [ - "parseXml(xmlString:string,stopNodes?:string[]): unknown" - ] - }, - "src/utils/shell.ts": { - "interfaces": [ - "MacTerminalProfile", - "WindowsTerminalProfile", - "LinuxTerminalProfile" - ], - "functions": [ - "getWindowsTerminalConfig()", - "getMacTerminalConfig()", - "getLinuxTerminalConfig()", - "getWindowsShellFromVSCode(): string|null", - "getMacShellFromVSCode(): string|null", - "getLinuxShellFromVSCode(): string|null", - "getShellFromUserInfo(): string|null", - "getShellFromEnv(): string|null", - "getShell(): string" - ] - }, - "src/utils/config.ts": { - "functions": [ - "injectEnv(config:string|Record,notFoundValue:any=\"\")" - ] - }, - "src/utils/text-normalization.ts": { - "interfaces": [ - "NormalizeOptions" - ], - "functions": [ - "normalizeString(str:string,options:NormalizeOptions=DEFAULT_OPTIONS): string", - "unescapeHtmlEntities(text:string): string" - ] - }, - "src/utils/git.ts": { - "interfaces": [ - "GitCommit" - ], - "functions": [ - "checkGitRepo(cwd:string): Promise", - "checkGitInstalled(): Promise", - "searchCommits(query:string,cwd:string): Promise", - "getCommitInfo(hash:string,cwd:string): Promise", - "getWorkingState(cwd:string): Promise" - ] - }, - "src/utils/single-completion-handler.ts": { - "functions": [ - "singleCompletionHandler(apiConfiguration:ApiConfiguration,promptText:string): Promise" - ] - }, - "src/utils/migrateSettings.ts": { - "functions": [ - "migrateSettings(\tcontext:vscode.ExtensionContext,\toutputChannel:vscode.OutputChannel,)" - ] - }, - "src/utils/pathUtils.ts": { - "functions": [ - "isPathOutsideWorkspace(filePath:string): boolean" - ] - }, - "src/utils/sound.ts": { - "functions": [ - "isWAV(filepath:string): boolean", - "setSoundEnabled(enabled:boolean): void", - "setSoundVolume(newVolume:number): void", - "playSound(filepath:string): void" - ] - }, - "src/utils/logging/CompactLogger.ts": { - "classes": [ - { - "name": "CompactLogger" - } - ], - "functions": [ - "constructor(transport?:CompactTransport,parentMeta?:LogMeta)", - "debug(message:string,meta?:LogMeta): void", - "info(message:string,meta?:LogMeta): void", - "warn(message:string,meta?:LogMeta): void", - "error(message:string|Error,meta?:LogMeta): void", - "fatal(message:string|Error,meta?:LogMeta): void", - "child(meta:LogMeta): ILogger", - "close(): void", - "handleErrorLog(level:\"error\"|\"fatal\",message:string|Error,meta?:LogMeta): void", - "combineMeta(meta?:LogMeta): LogMeta|undefined", - "log(level:LogLevel,message:string,meta?:LogMeta): void" - ] - }, - "src/utils/logging/types.ts": { - "interfaces": [ - "CompactLogEntry", - "LogMeta", - "CompactTransportConfig", - "ICompactTransport", - "ILogger" - ] - }, - "src/utils/logging/CompactTransport.ts": { - "classes": [ - { - "name": "CompactTransport" - } - ], - "functions": [ - "isLevelEnabled(configLevel:LogLevel,entryLevel:string): boolean", - "constructor(readonlyconfig:CompactTransportConfig=DEFAULT_CONFIG)", - "ensureInitialized(): void", - "write(entry:CompactLogEntry): void", - "close(): void" - ] - }, - "src/shared/WebviewMessage.ts": { - "interfaces": [ - "WebviewMessage" - ] - }, - "src/shared/ExtensionMessage.ts": { - "interfaces": [ - "LanguageModelChatSelector", - "ExtensionMessage", - "ClineSayTool", - "ClineSayBrowserAction", - "ClineAskUseMcpServer", - "ClineApiReqInfo" - ] - }, - "src/shared/array.ts": { - "functions": [ - "findLastIndex(array:Array,predicate:(value:T,index:number,obj:T[])=>boolean): number", - "findLast(array:Array,predicate:(value:T,index:number,obj:T[])=>boolean): T|undefined" - ] - }, - "src/shared/getApiMetrics.ts": { - "functions": [ - "getApiMetrics(messages:ClineMessage[])", - "getTotalTokensFromMessage(message:ClineMessage): number" - ] - }, - "src/shared/support-prompt.ts": { - "interfaces": [ - "SupportPromptConfig" - ], - "functions": [ - "generateDiagnosticText(diagnostics?:any[])", - "createPrompt(template:string,params:PromptParams): string" - ] - }, - "src/shared/language.ts": { - "functions": [ - "formatLanguage(vscodeLocale:string): Language" - ] - }, - "src/shared/experiments.ts": { - "interfaces": [ - "ExperimentConfig" - ] - }, - "src/shared/api.ts": { - "interfaces": [ - "MessageContent" - ] - }, - "src/shared/checkExistApiConfig.ts": { - "functions": [ - "checkExistKey(config:ProviderSettings|undefined)" - ] - }, - "src/shared/modes.ts": { - "classes": [ - { - "name": "FileRestrictionError" - } - ], - "functions": [ - "getGroupName(group:GroupEntry): ToolGroup", - "getGroupOptions(group:GroupEntry): GroupOptions|undefined", - "doesFileMatchRegex(filePath:string,pattern:string): boolean", - "getToolsForMode(groups:readonlyGroupEntry[]): string[]", - "getModeBySlug(slug:string,customModes?:ModeConfig[]): ModeConfig|undefined", - "getModeConfig(slug:string,customModes?:ModeConfig[]): ModeConfig", - "getAllModes(customModes?:ModeConfig[]): ModeConfig[]", - "isCustomMode(slug:string,customModes?:ModeConfig[]): boolean", - "constructor(mode:string,pattern:string,description:string|undefined,filePath:string)", - "isToolAllowedForMode(\ttool:string,\tmodeSlug:string,\tcustomModes:ModeConfig[],\ttoolRequirements?:Record,\ttoolParams?:Record,//Alltoolparameters\texperiments?:Record,)", - "getAllModesWithPrompts(context:vscode.ExtensionContext): Promise", - "getFullModeDetails(\tmodeSlug:string,\tcustomModes?:ModeConfig[],\tcustomModePrompts?:CustomModePrompts,\toptions?:{\t\tcwd?:string\t\tglobalCustomInstructions?:string\t\tlanguage?:string\t},)", - "getRoleDefinition(modeSlug:string,customModes?:ModeConfig[]): string", - "getCustomInstructions(modeSlug:string,customModes?:ModeConfig[]): string" - ] - }, - "src/shared/storagePathManager.ts": { - "functions": [ - "getStorageBasePath(defaultPath:string): Promise", - "getTaskDirectoryPath(globalStoragePath:string,taskId:string): Promise", - "getSettingsDirectoryPath(globalStoragePath:string): Promise", - "getCacheDirectoryPath(globalStoragePath:string): Promise", - "promptForCustomStoragePath(): Promise" - ] - }, - "src/shared/vsCodeSelectorUtils.ts": { - "functions": [ - "stringifyVsCodeLmModelSelector(selector:LanguageModelChatSelector): string" - ] - }, - "src/shared/tools.ts": { - "interfaces": [ - "TextContent", - "ToolUse", - "ExecuteCommandToolUse", - "ReadFileToolUse", - "FetchInstructionsToolUse", - "WriteToFileToolUse", - "InsertCodeBlockToolUse", - "SearchFilesToolUse", - "ListFilesToolUse", - "ListCodeDefinitionNamesToolUse", - "BrowserActionToolUse", - "UseMcpToolToolUse", - "AccessMcpResourceToolUse", - "AskFollowupQuestionToolUse", - "AttemptCompletionToolUse", - "SwitchModeToolUse", - "NewTaskToolUse", - "SearchAndReplaceToolUse", - "DiffStrategy" - ] - }, - "src/shared/context-mentions.ts": { - "interfaces": [ - "MentionSuggestion", - "GitMentionSuggestion" - ], - "functions": [ - "formatGitSuggestion(commit:{\thash:string\tshortHash:string\tsubject:string\tauthor:string\tdate:string})" - ] - }, - "src/shared/combineApiRequests.ts": { - "functions": [ - "combineApiRequests(messages:ClineMessage[]): ClineMessage[]" - ] - }, - "src/shared/combineCommandSequences.ts": { - "functions": [ - "combineCommandSequences(messages:ClineMessage[]): ClineMessage[]" - ] - }, - "src/schemas/ipc.ts": { - "enums": [ - { - "name": "TaskCommandName" - }, - { - "name": "IpcMessageType" - }, - { - "name": "IpcOrigin" - } - ] - }, - "src/schemas/index.ts": { - "functions": [ - "isLanguage(value:string): valueisLanguage", - "isSecretStateKey(key:string): keyisKeys", - "isGlobalStateKey(key:string): keyisKeys" - ], - "enums": [ - { - "name": "RooCodeEventName" - } - ] - }, - "src/exports/roo-code.d.ts": { - "interfaces": [ - "RooCodeAPI" - ], - "enums": [ - { - "name": "RooCodeEventName" - } - ] - }, - "src/exports/api.ts": { - "classes": [ - { - "name": "API" - } - ], - "functions": [ - "constructor(\t\toutputChannel:vscode.OutputChannel,\t\tprovider:ClineProvider,\t\tsocketPath?:string,\t\tenableLogging=false,\t)", - "emit(\t\teventName:K,\t\t...args:KextendskeyofRooCodeEvents?RooCodeEvents[K]:never\t)", - "startNewTask({\t\tconfiguration,\t\ttext,\t\timages,\t\tnewTab,\t}:{\t\tconfiguration:RooCodeSettings\t\ttext?:string\t\timages?:string[]\t\tnewTab?:boolean\t})", - "resumeTask(taskId:string): Promise", - "isTaskInHistory(taskId:string): Promise", - "getCurrentTaskStack()", - "clearCurrentTask(lastMessage?:string)", - "cancelCurrentTask()", - "cancelTask(taskId:string)", - "sendMessage(text?:string,images?:string[])", - "pressPrimaryButton()", - "pressSecondaryButton()", - "getConfiguration()", - "setConfiguration(values:RooCodeSettings)", - "createProfile(name:string)", - "getProfiles()", - "setActiveProfile(name:string)", - "getActiveProfile()", - "deleteProfile(name:string)", - "isReady()", - "registerListeners(provider:ClineProvider)", - "fileLog(message:string)" - ] - }, - "src/exports/interface.ts": { - "interfaces": [ - "RooCodeAPI" - ] - }, - "src/exports/ipc.ts": { - "classes": [ - { - "name": "IpcServer" - } - ], - "functions": [ - "constructor(socketPath:string,log=console.log)", - "listen()", - "onConnect(socket:Socket)", - "onDisconnect(destroyedSocket:Socket)", - "onMessage(data:unknown)", - "log(...args:unknown[])", - "broadcast(message:IpcMessage)", - "send(client:string|Socket,message:IpcMessage)", - "socketPath()", - "isListening()" - ] - }, - "src/exports/log.ts": { - "functions": [ - "outputChannelLog(outputChannel:vscode.OutputChannel,...args:unknown[])" - ] - }, - "src/integrations/misc/extract-text.ts": { - "functions": [ - "extractTextFromFile(filePath:string): Promise", - "extractTextFromPDF(filePath:string): Promise", - "extractTextFromDOCX(filePath:string): Promise", - "extractTextFromIPYNB(filePath:string): Promise", - "addLineNumbers(content:string,startLine:number=1): string", - "everyLineHasLineNumbers(content:string): boolean", - "stripLineNumbers(content:string,aggressive:boolean=false): string", - "truncateOutput(content:string,lineLimit?:number): string", - "applyRunLengthEncoding(content:string): string", - "processCarriageReturns(input:string): string", - "processBackspaces(input:string): string", - "processLineWithCarriageReturns(\tinput:string,\tinitialLine:string,\tinitialCrPos:number,\tlineEnd:number,)" - ] - }, - "src/integrations/misc/process-images.ts": { - "functions": [ - "selectImages(): Promise", - "getMimeType(filePath:string): string" - ] - }, - "src/integrations/misc/open-file.ts": { - "interfaces": [ - "OpenFileOptions" - ], - "functions": [ - "openImage(dataUri:string)", - "openFile(filePath:string,options:OpenFileOptions={})" - ] - }, - "src/integrations/misc/line-counter.ts": { - "functions": [ - "countFileLines(filePath:string): Promise" - ] - }, - "src/integrations/misc/read-lines.ts": { - "functions": [ - "outOfRangeError(filepath:string,n:number)", - "readLines(filepath:string,endLine?:number,startLine?:number): Promise" - ] - }, - "src/integrations/misc/export-markdown.ts": { - "functions": [ - "downloadTask(dateTs:number,conversationHistory:Anthropic.MessageParam[])", - "formatContentBlockToMarkdown(block:Anthropic.Messages.ContentBlockParam): string", - "findToolName(toolCallId:string,messages:Anthropic.MessageParam[]): string" - ] - }, - "src/integrations/workspace/WorkspaceTracker.ts": { - "classes": [ - { - "name": "WorkspaceTracker" - } - ], - "functions": [ - "cwd()", - "constructor(provider:ClineProvider)", - "initializeFilePaths()", - "registerListeners()", - "getOpenedTabsInfo()", - "workspaceDidReset()", - "workspaceDidUpdate()", - "normalizeFilePath(filePath:string): string", - "addFilePath(filePath:string): Promise", - "removeFilePath(filePath:string): Promise", - "dispose()" - ] - }, - "src/integrations/terminal/get-latest-output.ts": { - "functions": [ - "getLatestTerminalOutput(): Promise" - ] - }, - "src/integrations/terminal/TerminalRegistry.ts": { - "classes": [ - { - "name": "TerminalRegistry" - } - ], - "functions": [ - "initialize()", - "createTerminal(cwd:string|vscode.Uri): Terminal", - "getTerminal(id:number): Terminal|undefined", - "updateTerminal(id:number,updates:Partial)", - "getTerminalByVSCETerminal(terminal:vscode.Terminal): Terminal|undefined", - "removeTerminal(id:number)", - "getAllTerminals(): Terminal[]", - "isTerminalClosed(terminal:vscode.Terminal): boolean", - "getUnretrievedOutput(terminalId:number): string", - "isProcessHot(terminalId:number): boolean", - "getTerminals(busy:boolean,taskId?:string): Terminal[]", - "getBackgroundTerminals(busy?:boolean): Terminal[]", - "cleanup()", - "getShellIntegrationPath(shell:\"bash\"|\"pwsh\"|\"zsh\"|\"fish\"): string", - "zshInitTmpDir(env:Record): string", - "zshCleanupTmpDir(terminalId:number): boolean", - "releaseTerminalsForTask(taskId?:string): void", - "getOrCreateTerminal(cwd:string,requiredCwd:boolean=false,taskId?:string): Promise" - ] - }, - "src/integrations/terminal/TerminalProcess.ts": { - "classes": [ - { - "name": "TerminalProcess" - } - ], - "interfaces": [ - "ExitCodeDetails", - "TerminalProcessEvents" - ], - "functions": [ - "constructor(terminal:Terminal)", - "interpretExitCode(exitCode:number|undefined): ExitCodeDetails", - "run(command:string)", - "emitRemainingBufferIfListening()", - "continue()", - "hasUnretrievedOutput(): boolean", - "getUnretrievedOutput(): string", - "stringIndexMatch(\t\tdata:string,\t\tprefix?:string,\t\tsuffix?:string,\t\tbell:string=\"\\x07\",\t)", - "removeEscapeSequences(str:string): string", - "matchAfterVsceStartMarkers(data:string): string|undefined", - "matchBeforeVsceEndMarkers(data:string): string|undefined", - "matchVsceMarkers(\t\tdata:string,\t\tprefix633:string|undefined,\t\tprefix133:string|undefined,\t\tsuffix633:string|undefined,\t\tsuffix133:string|undefined,\t)", - "mergePromise(process:TerminalProcess,promise:Promise): TerminalProcessResultPromise" - ] - }, - "src/integrations/terminal/Terminal.ts": { - "classes": [ - { - "name": "Terminal" - } - ], - "interfaces": [ - "CommandCallbacks" - ], - "functions": [ - "constructor(id:number,terminal:vscode.Terminal,cwd:string)", - "getCurrentWorkingDirectory(): string", - "isStreamClosed(): boolean", - "setActiveStream(stream:AsyncIterable|undefined): void", - "shellExecutionComplete(exitDetails:ExitCodeDetails): void", - "getLastCommand(): string", - "cleanCompletedProcessQueue(): void", - "getProcessesWithOutput(): TerminalProcess[]", - "getUnretrievedOutput(): string", - "runCommand(command:string,callbacks?:CommandCallbacks): TerminalProcessResultPromise", - "getTerminalContents(commands=-1): Promise", - "compressTerminalOutput(input:string,lineLimit:number): string", - "setCommandDelay(delayMs:number): void", - "getCommandDelay(): number", - "setPowershellCounter(enabled:boolean): void", - "getPowershellCounter(): boolean", - "setTerminalZshClearEolMark(enabled:boolean): void", - "getTerminalZshClearEolMark(): boolean", - "setTerminalZshOhMy(enabled:boolean): void", - "getTerminalZshOhMy(): boolean", - "setTerminalZshP10k(enabled:boolean): void", - "getTerminalZshP10k(): boolean", - "setTerminalZdotdir(enabled:boolean): void", - "getTerminalZdotdir(): boolean", - "setCompressProgressBar(enabled:boolean): void", - "getCompressProgressBar(): boolean", - "setShellIntegrationTimeout(timeoutMs:number): void", - "getShellIntegrationTimeout(): number" - ] - }, - "src/integrations/theme/getTheme.ts": { - "functions": [ - "parseThemeString(themeString:string|undefined): any", - "getTheme()", - "mergeJson(\tfirst:JsonObject,\tsecond:JsonObject,\tmergeBehavior?:\"merge\"|\"overwrite\",\tmergeKeys?:{[key:string]:(a:any,b:any)=>boolean},)", - "getExtensionUri(): vscode.Uri" - ] - }, - "src/integrations/diagnostics/index.ts": { - "functions": [ - "getNewDiagnostics(\toldDiagnostics:[vscode.Uri,vscode.Diagnostic[]][],\tnewDiagnostics:[vscode.Uri,vscode.Diagnostic[]][],)", - "diagnosticsToProblemsString(\tdiagnostics:[vscode.Uri,vscode.Diagnostic[]][],\tseverities:vscode.DiagnosticSeverity[],\tcwd:string,)" - ] - }, - "src/integrations/editor/detect-omission.ts": { - "functions": [ - "detectCodeOmission(\toriginalFileContent:string,\tnewFileContent:string,\tpredictedLineCount:number,)" - ] - }, - "src/integrations/editor/DiffViewProvider.ts": { - "classes": [ - { - "name": "DiffViewProvider" - } - ], - "functions": [ - "constructor(privatecwd:string)", - "open(relPath:string): Promise", - "update(accumulatedContent:string,isFinal:boolean)", - "saveChanges(): Promise<{\t\tnewProblemsMessage:string|undefined\t\tuserEdits:string|undefined\t\tfinalContent:string|undefined\t}>", - "revertChanges(): Promise", - "closeAllDiffViews()", - "openDiffEditor(): Promise", - "scrollEditorToLine(line:number)", - "scrollToFirstDiff()", - "stripAllBOMs(input:string): string", - "reset()" - ] - }, - "src/integrations/editor/DecorationController.ts": { - "classes": [ - { - "name": "DecorationController" - } - ], - "functions": [ - "constructor(decorationType:DecorationType,editor:vscode.TextEditor)", - "getDecoration()", - "addLines(startIndex:number,numLines:number)", - "clear()", - "updateOverlayAfterLine(line:number,totalLines:number)", - "setActiveLine(line:number)" - ] - }, - "src/api/index.ts": { - "interfaces": [ - "SingleCompletionHandler", - "ApiHandler" - ], - "functions": [ - "buildApiHandler(configuration:ApiConfiguration): ApiHandler", - "getModelParams({\toptions,\tmodel,\tdefaultMaxTokens,\tdefaultTemperature=0,\tdefaultReasoningEffort,}:{\toptions:ApiHandlerOptions\tmodel:ModelInfo\tdefaultMaxTokens?:number\tdefaultTemperature?:number\tdefaultReasoningEffort?:\"low\"|\"medium\"|\"high\"})" - ] - }, - "src/api/providers/base-provider.ts": { - "functions": [ - "countTokens(content:Array): Promise" - ] - }, - "src/api/providers/bedrock.ts": { - "classes": [ - { - "name": "AwsBedrockHandler" - } - ], - "interfaces": [ - "BedrockInferenceConfig", - "StreamEvent" - ], - "functions": [ - "constructor(options:ProviderSettings)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "completePrompt(prompt:string): Promise", - "convertToBedrockConverseMessages(\t\tanthropicMessages:Anthropic.Messages.MessageParam[]|{role:string;content:string}[],\t\tsystemMessage?:string,\t\tusePromptCache:boolean=false,\t\tmodelInfo?:any,\t\tconversationId?:string,//OptionalconversationIDtotrackcachepointsacrossmessages\t)", - "parseArn(arn:string,region?:string)", - "parseBaseModelId(modelId:string)", - "getModelById(modelId:string,modelType?:string): {id:BedrockModelId|string;info:SharedModelInfo}", - "getModel(): {id:BedrockModelId|string;info:SharedModelInfo}", - "supportsAwsPromptCache(modelConfig:{\t\tid:BedrockModelId|string\t\tinfo:SharedModelInfo\t})", - "removeCachePoints(content:any): any", - "getPrefixList(): string[]", - "getPrefixForRegion(region:string): string|undefined", - "prefixIsMultiRegion(arnPrefix:string): boolean", - "getErrorType(error:unknown): string", - "formatErrorMessage(error:unknown,errorType:string,isStreamContext:boolean): string", - "handleBedrockError(\t\terror:unknown,\t\tisStreamContext:boolean,\t)" - ] - }, - "src/api/providers/ollama.ts": { - "classes": [ - { - "name": "OllamaHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:string;info:ModelInfo}", - "completePrompt(prompt:string): Promise", - "getOllamaModels(baseUrl=\"http://localhost:11434\")" - ] - }, - "src/api/providers/human-relay.ts": { - "classes": [ - { - "name": "HumanRelayHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "countTokens(content:Array): Promise", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:string;info:ModelInfo}", - "completePrompt(prompt:string): Promise", - "getMessageContent(message:Anthropic.Messages.MessageParam): string", - "showHumanRelayDialog(promptText:string): Promise" - ] - }, - "src/api/providers/openai-native.ts": { - "classes": [ - { - "name": "OpenAiNativeHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "handleO1FamilyMessage(\t\tmodel:OpenAiNativeModel,\t\tsystemPrompt:string,\t\tmessages:Anthropic.Messages.MessageParam[],\t)", - "handleReasonerMessage(\t\tmodel:OpenAiNativeModel,\t\tfamily:\"o3-mini\"|\"o3\"|\"o4-mini\",\t\tsystemPrompt:string,\t\tmessages:Anthropic.Messages.MessageParam[],\t)", - "handleDefaultModelMessage(\t\tmodel:OpenAiNativeModel,\t\tsystemPrompt:string,\t\tmessages:Anthropic.Messages.MessageParam[],\t)", - "yieldResponseData(response:OpenAI.Chat.Completions.ChatCompletion): ApiStream", - "handleStreamResponse(\t\tstream:AsyncIterable,\t\tmodel:OpenAiNativeModel,\t)", - "yieldUsage(info:ModelInfo,usage:OpenAI.Completions.CompletionUsage|undefined): ApiStream", - "getModel(): OpenAiNativeModel", - "completePrompt(prompt:string): Promise", - "getO1CompletionOptions(\t\tmodel:OpenAiNativeModel,\t\tprompt:string,\t)", - "getO3CompletionOptions(\t\tmodel:OpenAiNativeModel,\t\tprompt:string,\t)", - "getDefaultCompletionOptions(\t\tmodel:OpenAiNativeModel,\t\tprompt:string,\t)" - ] - }, - "src/api/providers/anthropic.ts": { - "classes": [ - { - "name": "AnthropicHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel()", - "completePrompt(prompt:string)", - "countTokens(content:Array): Promise" - ] - }, - "src/api/providers/xai.ts": { - "classes": [ - { - "name": "XAIHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "getModel()", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "completePrompt(prompt:string): Promise" - ] - }, - "src/api/providers/deepseek.ts": { - "classes": [ - { - "name": "DeepSeekHandler" - } - ], - "functions": [ - "constructor(options:OpenAiHandlerOptions)", - "getModel(): {id:string;info:ModelInfo}", - "processUsageMetrics(usage:any): ApiStreamUsageChunk" - ] - }, - "src/api/providers/openai.ts": { - "classes": [ - { - "name": "OpenAiHandler" - } - ], - "interfaces": [ - "OpenAiHandlerOptions" - ], - "functions": [ - "constructor(options:OpenAiHandlerOptions)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "processUsageMetrics(usage:any,modelInfo?:ModelInfo): ApiStreamUsageChunk", - "getModel(): {id:string;info:ModelInfo}", - "completePrompt(prompt:string): Promise", - "handleO3FamilyMessage(\t\tmodelId:string,\t\tsystemPrompt:string,\t\tmessages:Anthropic.Messages.MessageParam[],\t)", - "handleStreamResponse(stream:AsyncIterable): ApiStream", - "_getUrlHost(baseUrl?:string): string", - "_isGrokXAI(baseUrl?:string): boolean", - "_isAzureAiInference(baseUrl?:string): boolean", - "getOpenAiModels(baseUrl?:string,apiKey?:string,hostHeader?:string)" - ] - }, - "src/api/providers/requesty.ts": { - "classes": [ - { - "name": "RequestyHandler" - } - ], - "interfaces": [ - "RequestyUsage" - ], - "functions": [ - "constructor(options:OpenAiHandlerOptions)", - "getModel(): {id:string;info:ModelInfo}", - "processUsageMetrics(usage:any,modelInfo?:ModelInfo): ApiStreamUsageChunk", - "getRequestyModels(apiKey?:string)" - ] - }, - "src/api/providers/fake-ai.ts": { - "classes": [ - { - "name": "FakeAIHandler" - } - ], - "interfaces": [ - "FakeAI" - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:string;info:ModelInfo}", - "countTokens(content:Array): Promise", - "completePrompt(prompt:string): Promise" - ] - }, - "src/api/providers/vertex.ts": { - "classes": [ - { - "name": "VertexHandler" - } - ], - "interfaces": [ - "VertexTextBlock", - "VertexImageBlock", - "VertexUsage", - "VertexMessage", - "VertexMessageCreateParams", - "VertexMessageResponse", - "VertexMessageStreamEvent" - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "formatMessageForCache(message:Anthropic.Messages.MessageParam,shouldCache:boolean): VertexMessage", - "createGeminiMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "createClaudeMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel()", - "completePromptGemini(prompt:string)", - "completePromptClaude(prompt:string)", - "completePrompt(prompt:string)" - ] - }, - "src/api/providers/gemini.ts": { - "classes": [ - { - "name": "GeminiHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(\t\tsystemInstruction:string,\t\tmessages:Anthropic.Messages.MessageParam[],\t\tcacheKey?:string,\t)", - "getModel()", - "completePrompt(prompt:string): Promise", - "countTokens(content:Array): Promise", - "calculateCost({\t\tinfo,\t\tinputTokens,\t\toutputTokens,\t\tcacheWriteTokens=0,\t\tcacheReadTokens=0,\t}:{\t\tinfo:ModelInfo\t\tinputTokens:number\t\toutputTokens:number\t\tcacheWriteTokens?:number\t\tcacheReadTokens?:number\t})" - ] - }, - "src/api/providers/glama.ts": { - "classes": [ - { - "name": "GlamaHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "supportsTemperature(): boolean", - "getModel(): {id:string;info:ModelInfo}", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "delay(ms:number)", - "completePrompt(prompt:string): Promise", - "getGlamaModels()" - ] - }, - "src/api/providers/openrouter.ts": { - "classes": [ - { - "name": "OpenRouterHandler" - } - ], - "interfaces": [ - "CompletionUsage" - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(\t\tsystemPrompt:string,\t\tmessages:Anthropic.Messages.MessageParam[],\t)", - "getModel()", - "completePrompt(prompt:string)" - ] - }, - "src/api/providers/lmstudio.ts": { - "classes": [ - { - "name": "LmStudioHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:string;info:ModelInfo}", - "completePrompt(prompt:string): Promise", - "getLmStudioModels(baseUrl=\"http://localhost:1234\")" - ] - }, - "src/api/providers/mistral.ts": { - "classes": [ - { - "name": "MistralHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "getBaseUrl(): string", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:MistralModelId;info:ModelInfo}", - "completePrompt(prompt:string): Promise" - ] - }, - "src/api/providers/vscode-lm.ts": { - "classes": [ - { - "name": "VsCodeLmHandler" - } - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "initializeClient(): Promise", - "createClient(selector:vscode.LanguageModelChatSelector): Promise", - "dispose(): void", - "countTokens(content:Array): Promise", - "internalCountTokens(text:string|vscode.LanguageModelChatMessage): Promise", - "calculateTotalInputTokens(\t\tsystemPrompt:string,\t\tvsCodeLmMessages:vscode.LanguageModelChatMessage[],\t)", - "ensureCleanState(): void", - "getClient(): Promise", - "cleanMessageContent(content:any): any", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:string;info:ModelInfo}", - "completePrompt(prompt:string): Promise", - "getVsCodeLmModels()" - ] - }, - "src/api/providers/unbound.ts": { - "classes": [ - { - "name": "UnboundHandler" - } - ], - "interfaces": [ - "UnboundUsage" - ], - "functions": [ - "constructor(options:ApiHandlerOptions)", - "supportsTemperature(): boolean", - "createMessage(systemPrompt:string,messages:Anthropic.Messages.MessageParam[]): ApiStream", - "getModel(): {id:string;info:ModelInfo}", - "completePrompt(prompt:string): Promise", - "getUnboundModels()" - ] - }, - "src/api/providers/fetchers/openrouter.ts": { - "functions": [ - "getOpenRouterModels(options?:ApiHandlerOptions)" - ] - }, - "src/api/transform/gemini-format.ts": { - "functions": [ - "convertAnthropicContentToGemini(content:string|Anthropic.ContentBlockParam[]): Part[]", - "convertAnthropicMessageToGemini(message:Anthropic.Messages.MessageParam): Content", - "getContentLength({parts}:Content): number", - "getMessagesLength(contents:Content[]): number" - ] - }, - "src/api/transform/simple-format.ts": { - "functions": [ - "convertToSimpleContent(content:Anthropic.Messages.MessageParam[\"content\"]): string", - "convertToSimpleMessages(\tmessages:Anthropic.Messages.MessageParam[],)" - ] - }, - "src/api/transform/vscode-lm-format.ts": { - "functions": [ - "asObjectSafe(value:any): object", - "convertToVsCodeLmMessages(\tanthropicMessages:Anthropic.Messages.MessageParam[],)", - "convertToAnthropicRole(vsCodeLmMessageRole:vscode.LanguageModelChatMessageRole): string|null" - ] - }, - "src/api/transform/bedrock-converse-format.ts": { - "functions": [ - "convertToBedrockConverseMessages(anthropicMessages:Anthropic.Messages.MessageParam[]): Message[]" - ] - }, - "src/api/transform/openai-format.ts": { - "functions": [ - "convertToOpenAiMessages(\tanthropicMessages:Anthropic.Messages.MessageParam[],)" - ] - }, - "src/api/transform/stream.ts": { - "interfaces": [ - "ApiStreamTextChunk", - "ApiStreamReasoningChunk", - "ApiStreamUsageChunk" - ] - }, - "src/api/transform/r1-format.ts": { - "functions": [ - "convertToR1Format(messages:AnthropicMessage[]): Message[]" - ] - }, - "src/api/transform/mistral-format.ts": { - "functions": [ - "convertToMistralMessages(anthropicMessages:Anthropic.Messages.MessageParam[]): MistralMessage[]" - ] - }, - "src/api/transform/vertex-gemini-format.ts": { - "functions": [ - "convertAnthropicContentToVertexGemini(content:Anthropic.Messages.MessageParam[\"content\"]): Part[]", - "convertAnthropicMessageToVertexGemini(message:Anthropic.Messages.MessageParam): Content" - ] - }, - "src/api/transform/cache-strategy/multi-point-strategy.ts": { - "classes": [ - { - "name": "MultiPointStrategy" - } - ], - "functions": [ - "determineOptimalCachePoints(): CacheResult", - "determineMessageCachePoints(\t\tminTokensPerPoint:number,\t\tremainingCachePoints:number,\t)", - "findOptimalPlacementForRange(\t\tstartIndex:number,\t\tendIndex:number,\t\tminTokensPerPoint:number,\t)", - "formatWithoutCachePoints(): CacheResult" - ] - }, - "src/api/transform/cache-strategy/base-strategy.ts": { - "functions": [ - "constructor(config:CacheStrategyConfig)", - "initializeMessageGroups(): void", - "calculateSystemTokens(): void", - "createCachePoint(): ContentBlock", - "messagesToContentBlocks(messages:Anthropic.Messages.MessageParam[]): Message[]", - "meetsMinTokenThreshold(tokenCount:number): boolean", - "estimateTokenCount(message:Anthropic.Messages.MessageParam): number", - "applyCachePoints(messages:Message[],placements:CachePointPlacement[]): Message[]", - "formatResult(systemBlocks:SystemContentBlock[]=[],messages:Message[]): CacheResult" - ] - }, - "src/api/transform/cache-strategy/types.ts": { - "interfaces": [ - "ModelInfo", - "CachePoint", - "CacheResult", - "CachePointPlacement", - "CacheStrategyConfig" - ] - }, - "src/activate/humanRelay.ts": { - "functions": [ - "registerHumanRelayCallback(requestId:string,callback:(response:string|undefined)=>void)", - "unregisterHumanRelayCallback(requestId:string)", - "handleHumanRelayResponse(response:{requestId:string;text?:string;cancelled?:boolean})" - ] - }, - "src/activate/handleTask.ts": { - "functions": [ - "handleNewTask(params:{prompt?:string}|null|undefined)" - ] - }, - "src/activate/registerTerminalActions.ts": { - "functions": [ - "registerTerminalActions(context:vscode.ExtensionContext)", - "registerTerminalAction(\tcontext:vscode.ExtensionContext,\tcommand:string,\tpromptType:\"TERMINAL_ADD_TO_CONTEXT\"|\"TERMINAL_FIX\"|\"TERMINAL_EXPLAIN\",\tinputPrompt?:string,)", - "registerTerminalActionPair(\tcontext:vscode.ExtensionContext,\tbaseCommand:string,\tpromptType:\"TERMINAL_ADD_TO_CONTEXT\"|\"TERMINAL_FIX\"|\"TERMINAL_EXPLAIN\",\tinputPrompt?:string,)" - ] - }, - "src/activate/handleUri.ts": { - "functions": [ - "handleUri(uri:vscode.Uri)" - ] - }, - "src/activate/registerCommands.ts": { - "functions": [ - "getVisibleProviderOrLog(outputChannel:vscode.OutputChannel): ClineProvider|undefined", - "getPanel(): vscode.WebviewPanel|vscode.WebviewView|undefined", - "setPanel(\tnewPanel:vscode.WebviewPanel|vscode.WebviewView|undefined,\ttype:\"sidebar\"|\"tab\",)", - "registerCommands(options:RegisterCommandOptions)", - "getCommandsMap({context,outputChannel,provider}:RegisterCommandOptions)", - "openClineInNewTab({context,outputChannel}:Omit)" - ] - }, - "src/activate/registerCodeActions.ts": { - "functions": [ - "registerCodeActions(context:vscode.ExtensionContext)", - "registerCodeAction(\tcontext:vscode.ExtensionContext,\tcommand:string,\tpromptType:keyoftypeofACTION_NAMES,\tinputPrompt?:string,\tinputPlaceholder?:string,)", - "registerCodeActionPair(\tcontext:vscode.ExtensionContext,\tbaseCommand:string,\tpromptType:keyoftypeofACTION_NAMES,\tinputPrompt?:string,\tinputPlaceholder?:string,)" - ] - }, - "src/i18n/setup.ts": { - "interfaces": [ - "VSCodeProcess" - ] - }, - "src/i18n/index.ts": { - "functions": [ - "initializeI18n(language:string): void", - "getCurrentLanguage(): string", - "changeLanguage(language:string): void", - "t(key:string,options?:Record): string" - ] - }, - "src/services/tree-sitter/markdownParser.ts": { - "interfaces": [ - "MockNode", - "MockCapture" - ], - "functions": [ - "parseMarkdown(content:string): MockCapture[]", - "formatMarkdownCaptures(captures:MockCapture[],minSectionLines:number=4): string|null" - ] - }, - "src/services/tree-sitter/languageParser.ts": { - "interfaces": [ - "LanguageParser" - ], - "functions": [ - "loadLanguage(langName:string)", - "initializeParser()", - "loadRequiredLanguageParsers(filesToParse:string[]): Promise" - ] - }, - "src/services/tree-sitter/index.ts": { - "functions": [ - "parseSourceCodeDefinitionsForFile(\tfilePath:string,\trooIgnoreController?:RooIgnoreController,)", - "parseSourceCodeForDefinitionsTopLevel(\tdirPath:string,\trooIgnoreController?:RooIgnoreController,)", - "separateFiles(allFiles:string[]): {filesToParse:string[];remainingFiles:string[]}", - "processCaptures(captures:any[],lines:string[],minComponentLines:number=4): string|null", - "isNotHtmlElement(line:string): boolean", - "parseFile(\tfilePath:string,\tlanguageParsers:LanguageParser,\trooIgnoreController?:RooIgnoreController,)" - ] - }, - "src/services/checkpoints/RepoPerTaskCheckpointService.ts": { - "classes": [ - { - "name": "RepoPerTaskCheckpointService" - } - ], - "functions": [ - "create({taskId,workspaceDir,shadowDir,log=console.log}:CheckpointServiceOptions)" - ] - }, - "src/services/checkpoints/excludes.ts": { - "functions": [ - "getBuildArtifactPatterns()", - "getMediaFilePatterns()", - "getCacheFilePatterns()", - "getConfigFilePatterns()", - "getLargeDataFilePatterns()", - "getDatabaseFilePatterns()", - "getGeospatialPatterns()", - "getLogFilePatterns()", - "getLfsPatterns(workspacePath:string)", - "getExcludePatterns(workspacePath:string)" - ] - }, - "src/services/checkpoints/types.ts": { - "interfaces": [ - "CheckpointServiceOptions", - "CheckpointEventMap" - ] - }, - "src/services/checkpoints/ShadowCheckpointService.ts": { - "functions": [ - "baseHash()", - "baseHash(value:string|undefined)", - "isInitialized()", - "constructor(taskId:string,checkpointsDir:string,workspaceDir:string,log:(message:string)=>void)", - "initShadowGit(onInit?:()=>Promise)", - "writeExcludeFile()", - "stageAll(git:SimpleGit)", - "renameNestedGitRepos(disable:boolean)", - "getShadowGitConfigWorktree(git:SimpleGit)", - "saveCheckpoint(message:string): Promise", - "restoreCheckpoint(commitHash:string)", - "getDiff({from,to}:{from?:string;to?:string}): Promise", - "emit(event:K,data:CheckpointEventMap[K])", - "on(event:K,listener:(data:CheckpointEventMap[K])=>void)", - "off(event:K,listener:(data:CheckpointEventMap[K])=>void)", - "once(event:K,listener:(data:CheckpointEventMap[K])=>void)", - "hashWorkspaceDir(workspaceDir:string)", - "taskRepoDir({taskId,globalStorageDir}:{taskId:string;globalStorageDir:string})", - "workspaceRepoDir({\t\tglobalStorageDir,\t\tworkspaceDir,\t}:{\t\tglobalStorageDir:string\t\tworkspaceDir:string\t})", - "deleteTask({\t\ttaskId,\t\tglobalStorageDir,\t\tworkspaceDir,\t}:{\t\ttaskId:string\t\tglobalStorageDir:string\t\tworkspaceDir:string\t})", - "deleteBranch(git:SimpleGit,branchName:string)" - ] - }, - "src/services/mcp/McpHub.ts": { - "classes": [ - { - "name": "McpHub" - } - ], - "functions": [ - "createServerTypeSchema()", - "constructor(provider:ClineProvider)", - "registerClient(): void", - "unregisterClient(): Promise", - "validateServerConfig(config:any,serverName?:string): z.infer", - "showErrorMessage(message:string,error:unknown): void", - "setupWorkspaceFoldersWatcher(): void", - "handleConfigFileChange(filePath:string,source:\"global\"|\"project\"): Promise", - "watchProjectMcpFile(): void", - "updateProjectMcpServers(): Promise", - "cleanupProjectMcpServers(): Promise", - "getServers(): McpServer[]", - "getAllServers(): McpServer[]", - "getMcpServersPath(): Promise", - "getMcpSettingsFilePath(): Promise", - "watchMcpSettingsFile(): Promise", - "initializeMcpServers(source:\"global\"|\"project\"): Promise", - "initializeGlobalMcpServers(): Promise", - "getProjectMcpPath(): Promise", - "initializeProjectMcpServers(): Promise", - "connectToServer(\t\tname:string,\t\tconfig:z.infer,\t\tsource:\"global\"|\"project\"=\"global\",\t)", - "appendErrorMessage(connection:McpConnection,error:string)", - "findConnection(serverName:string,source?:\"global\"|\"project\"): McpConnection|undefined", - "fetchToolsList(serverName:string,source?:\"global\"|\"project\"): Promise", - "fetchResourcesList(serverName:string,source?:\"global\"|\"project\"): Promise", - "fetchResourceTemplatesList(\t\tserverName:string,\t\tsource?:\"global\"|\"project\",\t)", - "deleteConnection(name:string,source?:\"global\"|\"project\"): Promise", - "updateServerConnections(\t\tnewServers:Record,\t\tsource:\"global\"|\"project\"=\"global\",\t)", - "setupFileWatcher(\t\tname:string,\t\tconfig:z.infer,\t\tsource:\"global\"|\"project\"=\"global\",\t)", - "removeAllFileWatchers()", - "restartConnection(serverName:string,source?:\"global\"|\"project\"): Promise", - "notifyWebviewOfServerChanges(): Promise", - "toggleServerDisabled(\t\tserverName:string,\t\tdisabled:boolean,\t\tsource?:\"global\"|\"project\",\t)", - "updateServerConfig(\t\tserverName:string,\t\tconfigUpdate:Record,\t\tsource:\"global\"|\"project\"=\"global\",\t)", - "updateServerTimeout(\t\tserverName:string,\t\ttimeout:number,\t\tsource?:\"global\"|\"project\",\t)", - "deleteServer(serverName:string,source?:\"global\"|\"project\"): Promise", - "readResource(serverName:string,uri:string,source?:\"global\"|\"project\"): Promise", - "callTool(\t\tserverName:string,\t\ttoolName:string,\t\ttoolArguments?:Record,\t\tsource?:\"global\"|\"project\",\t)", - "toggleToolAlwaysAllow(\t\tserverName:string,\t\tsource:\"global\"|\"project\",\t\ttoolName:string,\t\tshouldAllow:boolean,\t)", - "dispose(): Promise" - ] - }, - "src/services/mcp/McpServerManager.ts": { - "classes": [ - { - "name": "McpServerManager" - } - ], - "functions": [ - "getInstance(context:vscode.ExtensionContext,provider:ClineProvider): Promise", - "unregisterProvider(provider:ClineProvider): void", - "notifyProviders(message:any): void", - "cleanup(context:vscode.ExtensionContext): Promise" - ] - }, - "src/services/search/file-search.ts": { - "functions": [ - "executeRipgrep({\targs,\tworkspacePath,\tlimit=500,}:{\targs:string[]\tworkspacePath:string\tlimit?:number})", - "executeRipgrepForFiles(\tworkspacePath:string,\tlimit:number=5000,)", - "searchWorkspaceFiles(\tquery:string,\tworkspacePath:string,\tlimit:number=20,)" - ] - }, - "src/services/browser/BrowserSession.ts": { - "classes": [ - { - "name": "BrowserSession" - } - ], - "interfaces": [ - "PCRStats" - ], - "functions": [ - "constructor(context:vscode.ExtensionContext)", - "ensureChromiumExists(): Promise", - "getViewport()", - "launchLocalBrowser(): Promise", - "connectWithChromeHostUrl(chromeHostUrl:string): Promise", - "connectToRemoteBrowser(): Promise", - "launchBrowser(): Promise", - "closeBrowser(): Promise", - "resetBrowserState(): void", - "doAction(action:(page:Page)=>Promise): Promise", - "consoleListener(msg:any)", - "errorListener(err:Error)", - "getRootDomain(url:string): string", - "navigatePageToUrl(page:Page,url:string): Promise", - "createNewTab(url:string): Promise", - "navigateToUrl(url:string): Promise", - "waitTillHTMLStable(page:Page,timeout=5_000)", - "handleMouseInteraction(\t\tpage:Page,\t\tcoordinate:string,\t\taction:(x:number,y:number)=>Promise,\t)", - "requestListener()", - "click(coordinate:string): Promise", - "type(text:string): Promise", - "scrollPage(page:Page,direction:\"up\"|\"down\"): Promise", - "scrollDown(): Promise", - "scrollUp(): Promise", - "hover(coordinate:string): Promise", - "resize(size:string): Promise" - ] - }, - "src/services/browser/browserDiscovery.ts": { - "functions": [ - "isPortOpen(host:string,port:number,timeout=1000): Promise", - "tryChromeHostUrl(chromeHostUrl:string): Promise", - "getDockerHostIP(): Promise", - "scanNetworkForChrome(baseIP:string,port:number): Promise", - "discoverChromeHosts(port:number): Promise", - "discoverChromeHostUrl(port:number=9222): Promise" - ] - }, - "src/services/browser/UrlContentFetcher.ts": { - "classes": [ - { - "name": "UrlContentFetcher" - } - ], - "interfaces": [ - "PCRStats" - ], - "functions": [ - "constructor(context:vscode.ExtensionContext)", - "ensureChromiumExists(): Promise", - "launchBrowser(): Promise", - "closeBrowser(): Promise", - "urlToMarkdown(url:string): Promise" - ] - }, - "src/services/glob/list-files.ts": { - "functions": [ - "listFiles(dirPath:string,recursive:boolean,limit:number): Promise<[string[],boolean]>", - "handleSpecialDirectories(dirPath:string): Promise<[string[],boolean]|null>", - "getRipgrepPath(): Promise", - "listFilesWithRipgrep(\trgPath:string,\tdirPath:string,\trecursive:boolean,\tlimit:number,)", - "buildRipgrepArgs(dirPath:string,recursive:boolean): string[]", - "buildRecursiveArgs(): string[]", - "buildNonRecursiveArgs(): string[]", - "parseGitignoreFile(dirPath:string,recursive:boolean): Promise", - "listFilteredDirectories(\tdirPath:string,\trecursive:boolean,\tgitignorePatterns:string[],)", - "shouldIncludeDirectory(dirName:string,recursive:boolean,gitignorePatterns:string[]): boolean", - "isDirectoryExplicitlyIgnored(dirName:string): boolean", - "isIgnoredByGitignore(dirName:string,gitignorePatterns:string[]): boolean", - "formatAndCombineResults(files:string[],directories:string[],limit:number): [string[],boolean]", - "execRipgrep(rgPath:string,args:string[],limit:number): Promise", - "processRipgrepOutput(isFinal=false)" - ] - }, - "src/services/glob/__mocks__/list-files.ts": { - "functions": [ - "mockResolve(dirPath:string): string", - "mockArePathsEqual(path1:string,path2:string): boolean" - ] - }, - "src/services/telemetry/TelemetryService.ts": { - "classes": [ - { - "name": "TelemetryService" - } - ], - "functions": [ - "initialize(): void", - "setProvider(provider:ClineProviderInterface): void", - "isReady(): boolean", - "updateTelemetryState(didUserOptIn:boolean): void", - "capture(event:{event:string;properties?:any}): void", - "captureEvent(eventName:string,properties?:any): void", - "captureTaskCreated(taskId:string): void", - "captureTaskRestarted(taskId:string): void", - "captureTaskCompleted(taskId:string): void", - "captureConversationMessage(taskId:string,source:\"user\"|\"assistant\"): void", - "captureModeSwitch(taskId:string,newMode:string): void", - "captureToolUsage(taskId:string,tool:string): void", - "captureCheckpointCreated(taskId:string): void", - "captureCheckpointDiffed(taskId:string): void", - "captureCheckpointRestored(taskId:string): void", - "captureCodeActionUsed(actionType:string): void", - "capturePromptEnhanced(taskId?:string): void", - "captureSchemaValidationError({schemaName,error}:{schemaName:string;error:ZodError}): void", - "captureDiffApplicationError(taskId:string,consecutiveMistakeCount:number): void", - "captureShellIntegrationError(taskId:string): void", - "captureConsecutiveMistakeError(taskId:string): void", - "isTelemetryEnabled(): boolean", - "shutdown(): Promise" - ] - }, - "src/services/telemetry/PostHogClient.ts": { - "classes": [ - { - "name": "PostHogClient" - } - ], - "interfaces": [ - "ClineProviderInterface" - ], - "functions": [ - "constructor()", - "updateTelemetryState(didUserOptIn:boolean): void", - "getInstance(): PostHogClient", - "setProvider(provider:ClineProviderInterface): void", - "capture(event:{event:string;properties?:any}): Promise", - "isTelemetryEnabled(): boolean", - "shutdown(): Promise" - ] - }, - "src/services/ripgrep/index.ts": { - "interfaces": [ - "SearchFileResult", - "SearchResult", - "SearchLineResult" - ], - "functions": [ - "truncateLine(line:string,maxLength:number=MAX_LINE_LENGTH): string", - "getBinPath(vscodeAppRoot:string): Promise", - "checkPath(pkgFolder:string)", - "execRipgrep(bin:string,args:string[]): Promise", - "regexSearchFiles(\tcwd:string,\tdirectoryPath:string,\tregex:string,\tfilePattern?:string,\trooIgnoreController?:RooIgnoreController,)", - "formatResults(fileResults:SearchFileResult[],cwd:string): string" - ] - } -} From b4f213e5f26020f57b28aa94092dba86a3367022 Mon Sep 17 00:00:00 2001 From: Felix Anhalt Date: Sun, 6 Jul 2025 01:40:26 +0200 Subject: [PATCH 66/66] feat(editor): rename diffViewProvider to editingProvider in tests and related files --- .../applyDiffTool.experiment.spec.ts | 2 +- .../tools/__tests__/writeToFileTool.spec.ts | 46 +++++++++---------- src/shared/ExtensionMessage.ts | 3 -- src/shared/WebviewMessage.ts | 7 ++- .../src/components/settings/SettingsView.tsx | 1 - 5 files changed, 27 insertions(+), 32 deletions(-) diff --git a/src/core/tools/__tests__/applyDiffTool.experiment.spec.ts b/src/core/tools/__tests__/applyDiffTool.experiment.spec.ts index e763125d4a..16cc3b08e5 100644 --- a/src/core/tools/__tests__/applyDiffTool.experiment.spec.ts +++ b/src/core/tools/__tests__/applyDiffTool.experiment.spec.ts @@ -34,7 +34,7 @@ describe("applyDiffTool experiment routing", () => { applyDiff: vi.fn(), getProgressStatus: vi.fn(), }, - diffViewProvider: { + editingProvider: { reset: vi.fn(), }, api: { diff --git a/src/core/tools/__tests__/writeToFileTool.spec.ts b/src/core/tools/__tests__/writeToFileTool.spec.ts index 760e3f3e31..484ca2e75f 100644 --- a/src/core/tools/__tests__/writeToFileTool.spec.ts +++ b/src/core/tools/__tests__/writeToFileTool.spec.ts @@ -136,7 +136,7 @@ describe("writeToFileTool", () => { mockCline.rooIgnoreController = { validateAccess: vi.fn().mockReturnValue(true), } - mockCline.diffViewProvider = { + mockCline.editingProvider = { editType: undefined, isEditing: false, originalContent: "", @@ -245,7 +245,7 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { accessAllowed: true }) expect(mockCline.rooIgnoreController.validateAccess).toHaveBeenCalledWith(testFilePath) - expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) + expect(mockCline.editingProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) }) }) @@ -254,18 +254,18 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { fileExists: true }) expect(mockedFileExistsAtPath).toHaveBeenCalledWith(absoluteFilePath) - expect(mockCline.diffViewProvider.editType).toBe("modify") + expect(mockCline.editingProvider.editType).toBe("modify") }) it.skipIf(process.platform === "win32")("detects new file and sets editType to create", async () => { await executeWriteFileTool({}, { fileExists: false }) expect(mockedFileExistsAtPath).toHaveBeenCalledWith(absoluteFilePath) - expect(mockCline.diffViewProvider.editType).toBe("create") + expect(mockCline.editingProvider.editType).toBe("create") }) it("uses cached editType without filesystem check", async () => { - mockCline.diffViewProvider.editType = "modify" + mockCline.editingProvider.editType = "modify" await executeWriteFileTool({}) @@ -277,13 +277,13 @@ describe("writeToFileTool", () => { it("removes markdown code block markers from content", async () => { await executeWriteFileTool({ content: testContentWithMarkdown }) - expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith("Line 1\nLine 2", true) + expect(mockCline.editingProvider.update).toHaveBeenCalledWith("Line 1\nLine 2", true) }) it("passes through empty content unchanged", async () => { await executeWriteFileTool({ content: "" }) - expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith("", true) + expect(mockCline.editingProvider.update).toHaveBeenCalledWith("", true) }) it("unescapes HTML entities for non-Claude models", async () => { @@ -311,7 +311,7 @@ describe("writeToFileTool", () => { expect(mockedEveryLineHasLineNumbers).toHaveBeenCalledWith(contentWithLineNumbers) expect(mockedStripLineNumbers).toHaveBeenCalledWith(contentWithLineNumbers) - expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith("line one\nline two", true) + expect(mockCline.editingProvider.update).toHaveBeenCalledWith("line one\nline two", true) }) }) @@ -320,10 +320,10 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}, { fileExists: false }) expect(mockCline.consecutiveMistakeCount).toBe(0) - expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) - expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith(testContent, true) + expect(mockCline.editingProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) + expect(mockCline.editingProvider.update).toHaveBeenCalledWith(testContent, true) expect(mockAskApproval).toHaveBeenCalled() - expect(mockCline.diffViewProvider.saveChanges).toHaveBeenCalled() + expect(mockCline.editingProvider.saveChanges).toHaveBeenCalled() expect(mockCline.fileContextTracker.trackFileContext).toHaveBeenCalledWith(testFilePath, "roo_edited") expect(mockCline.didEditFile).toBe(true) }) @@ -348,21 +348,21 @@ describe("writeToFileTool", () => { it("returns early when path is missing in partial block", async () => { await executeWriteFileTool({ path: undefined }, { isPartial: true }) - expect(mockCline.diffViewProvider.open).not.toHaveBeenCalled() + expect(mockCline.editingProvider.open).not.toHaveBeenCalled() }) it("returns early when content is undefined in partial block", async () => { await executeWriteFileTool({ content: undefined }, { isPartial: true }) - expect(mockCline.diffViewProvider.open).not.toHaveBeenCalled() + expect(mockCline.editingProvider.open).not.toHaveBeenCalled() }) it("streams content updates during partial execution", async () => { await executeWriteFileTool({}, { isPartial: true }) expect(mockCline.ask).toHaveBeenCalled() - expect(mockCline.diffViewProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) - expect(mockCline.diffViewProvider.update).toHaveBeenCalledWith(testContent, false) + expect(mockCline.editingProvider.open).toHaveBeenCalledWith(testFilePath, MOCK_VIEW_COLUMN) + expect(mockCline.editingProvider.update).toHaveBeenCalledWith(testContent, false) }) }) @@ -372,19 +372,19 @@ describe("writeToFileTool", () => { await executeWriteFileTool({}) - expect(mockCline.diffViewProvider.revertChanges).toHaveBeenCalled() - expect(mockCline.diffViewProvider.saveChanges).not.toHaveBeenCalled() + expect(mockCline.editingProvider.revertChanges).toHaveBeenCalled() + expect(mockCline.editingProvider.saveChanges).not.toHaveBeenCalled() }) it("reports user edits with diff feedback", async () => { const userEditsValue = "- old line\n+ new line" - mockCline.diffViewProvider.saveChanges.mockResolvedValue({ + mockCline.editingProvider.saveChanges.mockResolvedValue({ newProblemsMessage: " with warnings", userEdits: userEditsValue, finalContent: "modified content", }) // Manually set the property on the mock instance because the original saveChanges is not called - mockCline.diffViewProvider.userEdits = userEditsValue + mockCline.editingProvider.userEdits = userEditsValue await executeWriteFileTool({}, { fileExists: true }) @@ -397,21 +397,21 @@ describe("writeToFileTool", () => { describe("error handling", () => { it("handles general file operation errors", async () => { - mockCline.diffViewProvider.open.mockRejectedValue(new Error("General error")) + mockCline.editingProvider.open.mockRejectedValue(new Error("General error")) await executeWriteFileTool({}) expect(mockHandleError).toHaveBeenCalledWith("writing file", expect.any(Error)) - expect(mockCline.diffViewProvider.resetWithListeners).toHaveBeenCalled() + expect(mockCline.editingProvider.resetWithListeners).toHaveBeenCalled() }) it("handles partial streaming errors", async () => { - mockCline.diffViewProvider.open.mockRejectedValue(new Error("Open failed")) + mockCline.editingProvider.open.mockRejectedValue(new Error("Open failed")) await executeWriteFileTool({}, { isPartial: true }) expect(mockHandleError).toHaveBeenCalledWith("writing file", expect.any(Error)) - expect(mockCline.diffViewProvider.resetWithListeners).toHaveBeenCalled() + expect(mockCline.editingProvider.resetWithListeners).toHaveBeenCalled() }) }) }) diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 0456c2169c..dd75cb1516 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -100,9 +100,6 @@ export interface ExtensionMessage { | "indexingStatusUpdate" | "indexCleared" | "codebaseIndexConfig" - | "fileBasedEditing" - | "openTabsInCorrectGroup" - | "openTabsAtEndOfList" | "marketplaceInstallResult" | "marketplaceData" | "shareTaskSuccess" diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index d10363187b..15d49118f1 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -20,10 +20,6 @@ export type AudioType = "notification" | "celebration" | "progress_loop" export interface WebviewMessage { type: - | "diffViewAutoFocus" - | "autoCloseRooTabs" - | "autoCloseAllRooTabs" - | "apiConfiguration" | "deleteMultipleTasksWithIds" | "currentApiConfigName" | "saveApiConfiguration" @@ -89,6 +85,9 @@ export interface WebviewMessage { | "ttsSpeed" | "soundVolume" | "diffEnabled" + | "diffViewAutoFocus" + | "autoCloseRooTabs" + | "autoCloseAllRooTabs" | "fileBasedEditing" | "openTabsInCorrectGroup" | "openTabsAtEndOfList" diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 9fcdefb20f..1209663797 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -178,7 +178,6 @@ const SettingsView = forwardRef(({ onDone, t profileThresholds, alwaysAllowFollowupQuestions, followupAutoApproveTimeoutMs, - // File editing settings from root context diffEnabled, diffViewAutoFocus, autoCloseRooTabs,