From a79c3d04a676aca9224a823c3e7ab338256c10ba Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 26 Aug 2025 10:12:20 -0400 Subject: [PATCH 001/228] Follow symlinks in rooignore checks (#7405) --- src/core/ignore/RooIgnoreController.ts | 22 +++++++++++---- .../__tests__/RooIgnoreController.spec.ts | 27 +++++++++++++++++++ 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/core/ignore/RooIgnoreController.ts b/src/core/ignore/RooIgnoreController.ts index fda6c371757c..45054cce96d8 100644 --- a/src/core/ignore/RooIgnoreController.ts +++ b/src/core/ignore/RooIgnoreController.ts @@ -1,6 +1,7 @@ import path from "path" import { fileExistsAtPath } from "../../utils/fs" import fs from "fs/promises" +import fsSync from "fs" import ignore, { Ignore } from "ignore" import * as vscode from "vscode" @@ -81,6 +82,7 @@ export class RooIgnoreController { /** * Check if a file should be accessible to the LLM + * Automatically resolves symlinks * @param filePath - Path to check (relative to cwd) * @returns true if file is accessible, false if ignored */ @@ -90,15 +92,25 @@ export class RooIgnoreController { return true } try { - // Normalize path to be relative to cwd and use forward slashes const absolutePath = path.resolve(this.cwd, filePath) - const relativePath = path.relative(this.cwd, absolutePath).toPosix() - // Ignore expects paths to be path.relative()'d + // Follow symlinks to get the real path + let realPath: string + try { + realPath = fsSync.realpathSync(absolutePath) + } catch { + // If realpath fails (file doesn't exist, broken symlink, etc.), + // use the original path + realPath = absolutePath + } + + // Convert real path to relative for .rooignore checking + const relativePath = path.relative(this.cwd, realPath).toPosix() + + // Check if the real path is ignored return !this.ignoreInstance.ignores(relativePath) } catch (error) { - // console.error(`Error validating access for ${filePath}:`, error) - // Ignore is designed to work with relative file paths, so will throw error for paths outside cwd. We are allowing access to all files outside cwd. + // Allow access to files outside cwd or on errors (backward compatibility) return true } } diff --git a/src/core/ignore/__tests__/RooIgnoreController.spec.ts b/src/core/ignore/__tests__/RooIgnoreController.spec.ts index 3fa7914ee301..41d79476c689 100644 --- a/src/core/ignore/__tests__/RooIgnoreController.spec.ts +++ b/src/core/ignore/__tests__/RooIgnoreController.spec.ts @@ -6,10 +6,12 @@ import { RooIgnoreController, LOCK_TEXT_SYMBOL } from "../RooIgnoreController" import * as vscode from "vscode" import * as path from "path" import * as fs from "fs/promises" +import * as fsSync from "fs" import { fileExistsAtPath } from "../../../utils/fs" // Mock dependencies vi.mock("fs/promises") +vi.mock("fs") vi.mock("../../../utils/fs") // Mock vscode @@ -66,6 +68,10 @@ describe("RooIgnoreController", () => { mockFileExists = fileExistsAtPath as Mock mockReadFile = fs.readFile as Mock + // Setup fsSync mocks with default behavior (return path as-is, like regular files) + const mockRealpathSync = vi.mocked(fsSync.realpathSync) + mockRealpathSync.mockImplementation((filePath) => filePath.toString()) + // Create controller controller = new RooIgnoreController(TEST_CWD) }) @@ -217,6 +223,27 @@ describe("RooIgnoreController", () => { expect(emptyController.validateAccess("secrets/api-keys.json")).toBe(true) expect(emptyController.validateAccess(".git/HEAD")).toBe(true) }) + + /** + * Tests symlink resolution + */ + it("should block symlinks pointing to ignored files", () => { + // Mock fsSync.realpathSync to simulate symlink resolution + const mockRealpathSync = vi.mocked(fsSync.realpathSync) + mockRealpathSync.mockImplementation((filePath) => { + // Simulate "config.json" being a symlink to "node_modules/package.json" + if (filePath.toString().endsWith("config.json")) { + return path.join(TEST_CWD, "node_modules/package.json") + } + return filePath.toString() + }) + + // Direct access to ignored file should be blocked + expect(controller.validateAccess("node_modules/package.json")).toBe(false) + + // Symlink to ignored file should also be blocked + expect(controller.validateAccess("config.json")).toBe(false) + }) }) describe("validateCommand", () => { From 572fa5080d899778c071935535909888739d47be Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 26 Aug 2025 16:17:47 -0400 Subject: [PATCH 002/228] Sonic -> Grok Code Fast (#7426) --- packages/types/src/providers/roo.ts | 8 +-- packages/types/src/providers/xai.ts | 13 +++- packages/types/src/single-file-read-models.ts | 20 +----- src/api/providers/__tests__/roo.spec.ts | 6 +- src/core/webview/ClineProvider.ts | 2 +- .../src/components/chat/Announcement.tsx | 62 +++++++++++++++---- .../chat/__tests__/Announcement.spec.tsx | 27 +++++--- .../components/ui/hooks/useSelectedModel.ts | 18 +++++- webview-ui/src/i18n/locales/ca/chat.json | 8 +-- webview-ui/src/i18n/locales/de/chat.json | 6 +- webview-ui/src/i18n/locales/en/chat.json | 6 +- webview-ui/src/i18n/locales/es/chat.json | 8 +-- webview-ui/src/i18n/locales/fr/chat.json | 6 +- webview-ui/src/i18n/locales/hi/chat.json | 6 +- webview-ui/src/i18n/locales/id/chat.json | 6 +- webview-ui/src/i18n/locales/it/chat.json | 6 +- webview-ui/src/i18n/locales/ja/chat.json | 6 +- webview-ui/src/i18n/locales/ko/chat.json | 6 +- webview-ui/src/i18n/locales/nl/chat.json | 6 +- webview-ui/src/i18n/locales/pl/chat.json | 6 +- webview-ui/src/i18n/locales/pt-BR/chat.json | 6 +- webview-ui/src/i18n/locales/ru/chat.json | 6 +- webview-ui/src/i18n/locales/tr/chat.json | 6 +- webview-ui/src/i18n/locales/vi/chat.json | 6 +- webview-ui/src/i18n/locales/zh-CN/chat.json | 6 +- webview-ui/src/i18n/locales/zh-TW/chat.json | 6 +- 26 files changed, 161 insertions(+), 107 deletions(-) diff --git a/packages/types/src/providers/roo.ts b/packages/types/src/providers/roo.ts index c95e500f5453..ee84bbe1b1bf 100644 --- a/packages/types/src/providers/roo.ts +++ b/packages/types/src/providers/roo.ts @@ -1,12 +1,12 @@ import type { ModelInfo } from "../model.js" // Roo provider with single model -export type RooModelId = "roo/sonic" +export type RooModelId = "xai/grok-code-fast-1" -export const rooDefaultModelId: RooModelId = "roo/sonic" +export const rooDefaultModelId: RooModelId = "xai/grok-code-fast-1" export const rooModels = { - "roo/sonic": { + "xai/grok-code-fast-1": { maxTokens: 16_384, contextWindow: 262_144, supportsImages: false, @@ -14,6 +14,6 @@ export const rooModels = { inputPrice: 0, outputPrice: 0, description: - "A stealth reasoning model that is blazing fast and excels at agentic coding, accessible for free through Roo Code Cloud for a limited time. (Note: prompts and completions are logged by the model creator and used to improve the model.)", + "A reasoning model that is blazing fast and excels at agentic coding, accessible for free through Roo Code Cloud for a limited time. (Note: the free prompts and completions are logged by xAI and used to improve the model.)", }, } as const satisfies Record diff --git a/packages/types/src/providers/xai.ts b/packages/types/src/providers/xai.ts index 12dc8a145c05..3189e593da30 100644 --- a/packages/types/src/providers/xai.ts +++ b/packages/types/src/providers/xai.ts @@ -3,9 +3,20 @@ import type { ModelInfo } from "../model.js" // https://docs.x.ai/docs/api-reference export type XAIModelId = keyof typeof xaiModels -export const xaiDefaultModelId: XAIModelId = "grok-4" +export const xaiDefaultModelId: XAIModelId = "grok-code-fast-1" export const xaiModels = { + "grok-code-fast-1": { + maxTokens: 16_384, + contextWindow: 262_144, + supportsImages: false, + supportsPromptCache: true, + inputPrice: 0.2, + outputPrice: 1.5, + cacheWritesPrice: 0.02, + cacheReadsPrice: 0.02, + description: "xAI's Grok Code Fast model with 256K context window", + }, "grok-4": { maxTokens: 8192, contextWindow: 256000, diff --git a/packages/types/src/single-file-read-models.ts b/packages/types/src/single-file-read-models.ts index 4e6f4e1f5776..b83a781507cc 100644 --- a/packages/types/src/single-file-read-models.ts +++ b/packages/types/src/single-file-read-models.ts @@ -4,29 +4,11 @@ * instead of the more complex multi-file args format */ -// List of model IDs (or patterns) that should use single file reads only -export const SINGLE_FILE_READ_MODELS = new Set(["roo/sonic"]) - /** * Check if a model should use single file read format * @param modelId The model ID to check * @returns true if the model should use single file reads */ export function shouldUseSingleFileRead(modelId: string): boolean { - // Direct match - if (SINGLE_FILE_READ_MODELS.has(modelId)) { - return true - } - - // Pattern matching for model families - // Check if model ID starts with any configured pattern - // Using Array.from for compatibility with older TypeScript targets - const patterns = Array.from(SINGLE_FILE_READ_MODELS) - for (const pattern of patterns) { - if (pattern.endsWith("*") && modelId.startsWith(pattern.slice(0, -1))) { - return true - } - } - - return false + return modelId.includes("grok-code-fast-1") } diff --git a/src/api/providers/__tests__/roo.spec.ts b/src/api/providers/__tests__/roo.spec.ts index 57b397b8f854..3b99b6576102 100644 --- a/src/api/providers/__tests__/roo.spec.ts +++ b/src/api/providers/__tests__/roo.spec.ts @@ -115,7 +115,7 @@ describe("RooHandler", () => { beforeEach(() => { mockOptions = { - apiModelId: "roo/sonic", + apiModelId: "xai/grok-code-fast-1", } // Set up CloudService mocks for successful authentication mockHasInstanceFn.mockReturnValue(true) @@ -313,8 +313,8 @@ describe("RooHandler", () => { const modelInfo = handler.getModel() expect(modelInfo.id).toBe(mockOptions.apiModelId) expect(modelInfo.info).toBeDefined() - // roo/sonic is a valid model in rooModels - expect(modelInfo.info).toBe(rooModels["roo/sonic"]) + // xai/grok-code-fast-1 is a valid model in rooModels + expect(modelInfo.info).toBe(rooModels["xai/grok-code-fast-1"]) }) it("should return default model when no model specified", () => { diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index b6c00ee37901..18fa70035b92 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -120,7 +120,7 @@ export class ClineProvider public isViewLaunched = false public settingsImportedAt?: number - public readonly latestAnnouncementId = "aug-20-2025-stealth-model" // Update for stealth model announcement + public readonly latestAnnouncementId = "aug-25-2025-grok-code-fast" // Update for Grok Code Fast announcement public readonly providerSettingsManager: ProviderSettingsManager public readonly customModesManager: CustomModesManager diff --git a/webview-ui/src/components/chat/Announcement.tsx b/webview-ui/src/components/chat/Announcement.tsx index 90ad7dffb1c8..38f16acc0667 100644 --- a/webview-ui/src/components/chat/Announcement.tsx +++ b/webview-ui/src/components/chat/Announcement.tsx @@ -42,29 +42,65 @@ const Announcement = ({ hideAnnouncement }: AnnouncementProps) => { {t("chat:announcement.title", { version: Package.version })}
-
    -
  • - •{" "} +
    +
    , + code: , }} /> -
  • -
+
+ -

{t("chat:announcement.stealthModel.note")}

+
+ , + code: , + }} + /> +
{!cloudIsAuthenticated ? ( - +
+
+ , + settingsLink: ( + { + e.preventDefault() + setOpen(false) + hideAnnouncement() + window.postMessage( + { + type: "action", + action: "settingsButtonClicked", + values: { section: "provider" }, + }, + "*", + ) + }} + /> + ), + }} + /> +
+ +
) : (
({ return `🎉 Roo Code ${options?.version} Released` } if (key === "chat:announcement.stealthModel.feature") { - return "Stealth reasoning model with advanced capabilities" + return "The Sonic stealth model is now Grok Code Fast!" } if (key === "chat:announcement.stealthModel.note") { - return "Note: This is an experimental feature" + return "As a thank you for all the helpful feedback about Sonic, you'll also continue to have free access to the grok-code-fast-1 model for another week through the Roo Code Cloud provider." } if (key === "chat:announcement.stealthModel.connectButton") { return "Connect to Roo Code Cloud" @@ -43,10 +43,23 @@ vi.mock("@src/i18n/TranslationContext", () => ({ vi.mock("react-i18next", () => ({ Trans: ({ i18nKey, children }: { i18nKey?: string; children: React.ReactNode }) => { if (i18nKey === "chat:announcement.stealthModel.feature") { - return <>Stealth reasoning model with advanced capabilities + return ( + <> + The Sonic stealth model is now Grok Code Fast! The fast reasoning model is now available as + grok-code-fast-1 under the “xAI (Grok)” provider. + + ) } if (i18nKey === "chat:announcement.stealthModel.selectModel") { - return <>Please select the roo/sonic model in settings + return <>Visit Settings to get started + } + if (i18nKey === "chat:announcement.stealthModel.note") { + return ( + <> + As a thank you for all the helpful feedback about Sonic, you’ll also continue to have free + access to the grok-code-fast-1 model for another week through the Roo Code Cloud provider. + + ) } return <>{children} }, @@ -77,11 +90,11 @@ describe("Announcement", () => { // Check if the mocked version number is present in the title expect(screen.getByText(`🎉 Roo Code ${expectedVersion} Released`)).toBeInTheDocument() - // Check if the stealth model feature is displayed (using partial match due to bullet point) - expect(screen.getByText(/Stealth reasoning model with advanced capabilities/)).toBeInTheDocument() + // Check if the Grok Code Fast feature is displayed + expect(screen.getByText(/The Sonic stealth model is now Grok Code Fast!/)).toBeInTheDocument() // Check if the note is displayed - expect(screen.getByText("Note: This is an experimental feature")).toBeInTheDocument() + expect(screen.getByText(/As a thank you for all the helpful feedback about Sonic/)).toBeInTheDocument() // Check if the connect button is displayed (since cloudIsAuthenticated is false in the mock) expect(screen.getByText("Connect to Roo Code Cloud")).toBeInTheDocument() diff --git a/webview-ui/src/components/ui/hooks/useSelectedModel.ts b/webview-ui/src/components/ui/hooks/useSelectedModel.ts index aeb90c3491a4..6455e2e31394 100644 --- a/webview-ui/src/components/ui/hooks/useSelectedModel.ts +++ b/webview-ui/src/components/ui/hooks/useSelectedModel.ts @@ -308,9 +308,21 @@ function getSelectedModel({ return { id, info } } case "roo": { - const id = apiConfiguration.apiModelId ?? rooDefaultModelId - const info = rooModels[id as keyof typeof rooModels] - return { id, info } + const requestedId = apiConfiguration.apiModelId + + // Check if the requested model exists in rooModels + if (requestedId && rooModels[requestedId as keyof typeof rooModels]) { + return { + id: requestedId, + info: rooModels[requestedId as keyof typeof rooModels], + } + } + + // Fallback to default model if requested model doesn't exist or is not specified + return { + id: rooDefaultModelId, + info: rooModels[rooDefaultModelId as keyof typeof rooModels], + } } case "qwen-code": { const id = apiConfiguration.apiModelId ?? qwenCodeDefaultModelId diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index fc662af62595..9beddb9e276b 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} Llançat", "stealthModel": { - "feature": "Model stealth GRATUÏT per temps limitat - Un model de raonament ultraràpid que destaca en codificació agèntica amb una finestra de context de 262k, disponible a través de Roo Code Cloud.", - "note": "(Nota: els prompts i completacions són registrats pel creador del model i utilitzats per millorar-lo)", - "connectButton": "Connectar a Roo Code Cloud", - "selectModel": "Selecciona roo/sonic del proveïdor Roo Code Cloud a
Configuració per començar" + "feature": "El model stealth Sonic ara és Grok Code Fast! Aquest model de raonament d'alt rendiment està disponible com a grok-code-fast-1 sota el proveïdor xAI (Grok).", + "note": "Com a agraïment per tots els comentaris útils sobre Sonic, xAI està ampliant l'accés gratuït a grok-code-fast-1 durant una setmana més a través del proveïdor Roo Code Cloud.", + "connectButton": "Connectar amb Roo Code Cloud", + "selectModel": "Visita la Configuració per actualitzar la configuració del proveïdor." }, "description": "Roo Code {{version}} porta noves funcions potents i millores significatives per millorar el vostre flux de treball de desenvolupament.", "whatsNew": "Novetats", diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index f33a194a9be6..bc0893acd05d 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} veröffentlicht", "stealthModel": { - "feature": "Zeitlich begrenztes KOSTENLOSES Stealth-Modell - Ein blitzschnelles Reasoning-Modell, das sich bei agentic coding mit einem 262k Kontextfenster auszeichnet, verfügbar über Roo Code Cloud.", - "note": "(Hinweis: Prompts und Vervollständigungen werden vom Modellersteller protokolliert und zur Verbesserung des Modells verwendet)", + "feature": "Das Sonic Stealth-Modell heißt jetzt Grok Code Fast! Dieses hochleistungsfähige Reasoning-Modell ist als grok-code-fast-1 unter dem xAI (Grok) Provider verfügbar.", + "note": "Als Dankeschön für all das hilfreiche Feedback zu Sonic erweitert xAI den kostenlosen Zugang zu grok-code-fast-1 für eine weitere Woche über den Roo Code Cloud-Anbieter.", "connectButton": "Mit Roo Code Cloud verbinden", - "selectModel": "Wähle roo/sonic vom Roo Code Cloud Provider in
Einstellungen um zu beginnen" + "selectModel": "Besuche die Einstellungen, um deine Provider-Konfiguration zu aktualisieren." }, "description": "Roo Code {{version}} bringt mächtige neue Funktionen und bedeutende Verbesserungen, um deinen Entwicklungsworkflow zu verbessern.", "whatsNew": "Was ist neu", diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index ff93fa6e0837..74bb3b0c792d 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -275,10 +275,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} Released", "stealthModel": { - "feature": "Limited-time FREE stealth model - A blazing fast reasoning model that excels at agentic coding with a 262k context window, available through Roo Code Cloud.", - "note": "(Note: prompts and completions are logged by the model creator to improve the model)", + "feature": "The Sonic stealth model is now Grok Code Fast! This high-performance reasoning model is available as grok-code-fast-1 under the xAI (Grok) provider.", + "note": "As a thank you for all the helpful feedback on Sonic, xAI is extending free access to grok-code-fast-1 for another week through the Roo Code Cloud provider.", "connectButton": "Connect to Roo Code Cloud", - "selectModel": "Select roo/sonic from the Roo Code Cloud provider in
Settings to get started" + "selectModel": "Visit Settings to update your provider configuration." } }, "reasoning": { diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 8902faa5af51..85d36ccd777f 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} publicado", "stealthModel": { - "feature": "Modelo stealth GRATUITO por tiempo limitado - Un modelo de razonamiento ultrarrápido que sobresale en codificación agéntica con una ventana de contexto de 262k, disponible a través de Roo Code Cloud.", - "note": "(Nota: los prompts y completaciones son registrados por el creador del modelo y utilizados para mejorarlo)", - "connectButton": "Conectar a Roo Code Cloud", - "selectModel": "Selecciona roo/sonic del proveedor Roo Code Cloud en
Configuración para comenzar" + "feature": "¡El modelo stealth Sonic ahora es Grok Code Fast! Este modelo de razonamiento de alto rendimiento está disponible como grok-code-fast-1 bajo el proveedor xAI (Grok).", + "note": "Como agradecimiento por todos los comentarios útiles sobre Sonic, xAI está extendiendo el acceso gratuito a grok-code-fast-1 por una semana más a través del proveedor Roo Code Cloud.", + "connectButton": "Conectar con Roo Code Cloud", + "selectModel": "Visita Configuración para actualizar tu configuración de proveedor." }, "description": "Roo Code {{version}} trae poderosas nuevas funcionalidades y mejoras significativas para mejorar tu flujo de trabajo de desarrollo.", "whatsNew": "Novedades", diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index 83b0dda0e947..ed8e542753cd 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} est sortie", "stealthModel": { - "feature": "Modèle stealth GRATUIT pour une durée limitée - Un modèle de raisonnement ultra-rapide qui excelle dans le codage agentique avec une fenêtre de contexte de 262k, disponible via Roo Code Cloud.", - "note": "(Note : les prompts et complétions sont enregistrés par le créateur du modèle et utilisés pour l'améliorer)", + "feature": "Le modèle stealth Sonic devient Grok Code Fast ! Ce modèle de raisonnement haute performance est disponible sous grok-code-fast-1 chez le fournisseur xAI (Grok).", + "note": "En remerciement de tous vos commentaires utiles sur Sonic, xAI étend l'accès gratuit à grok-code-fast-1 pendant une semaine supplémentaire via le fournisseur Roo Code Cloud.", "connectButton": "Se connecter à Roo Code Cloud", - "selectModel": "Sélectionne roo/sonic du fournisseur Roo Code Cloud dans
Paramètres pour commencer" + "selectModel": "Visitez les Paramètres pour mettre à jour votre configuration de fournisseur." }, "description": "Roo Code {{version}} apporte de puissantes nouvelles fonctionnalités et des améliorations significatives pour améliorer ton flux de travail de développement.", "whatsNew": "Quoi de neuf", diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index ff27bdcfc4bc..93efe3acee7b 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} रिलीज़ हुआ", "stealthModel": { - "feature": "सीमित समय के लिए मुफ़्त स्टेल्थ मॉडल - एक अत्यंत तेज़ रीज़निंग मॉडल जो 262k कॉन्टेक्स्ट विंडो के साथ एजेंटिक कोडिंग में उत्कृष्ट है, Roo Code Cloud के माध्यम से उपलब्ध।", - "note": "(नोट: प्रॉम्प्ट्स और कम्प्लीशन्स मॉडल निर्माता द्वारा लॉग किए जाते हैं और मॉडल को बेहतर बनाने के लिए उपयोग किए जाते हैं)", + "feature": "Sonic स्टेल्थ मॉडल अब Grok Code Fast है! यह उच्च-प्रदर्शन रीज़निंग मॉडल xAI (Grok) प्रोवाइडर के तहत grok-code-fast-1 के रूप में उपलब्ध है।", + "note": "Sonic के बारे में सभी सहायक फीडबैक के लिए धन्यवाद के रूप में, xAI Roo Code Cloud प्रदाता के माध्यम से एक और सप्ताह के लिए grok-code-fast-1 तक मुफ्त पहुंच बढ़ा रहा है।", "connectButton": "Roo Code Cloud से कनेक्ट करें", - "selectModel": "
सेटिंग्स में Roo Code Cloud प्रोवाइडर से roo/sonic चुनें और शुरू करें" + "selectModel": "अपने प्रोवाइडर कॉन्फ़िगरेशन को अपडेट करने के लिए सेटिंग्स देखें।" }, "description": "Roo Code {{version}} आपके विकास वर्कफ़्लो को बेहतर बनाने के लिए शक्तिशाली नई सुविधाएं और महत्वपूर्ण सुधार लेकर आया है।", "whatsNew": "नया क्या है", diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index 211506a04e6f..63157aa9895b 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -278,10 +278,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} Dirilis", "stealthModel": { - "feature": "Model stealth GRATIS waktu terbatas - Model penalaran super cepat yang unggul dalam coding agentik dengan jendela konteks 262k, tersedia melalui Roo Code Cloud.", - "note": "(Catatan: prompt dan completion dicatat oleh pembuat model dan digunakan untuk meningkatkan model)", + "feature": "Model stealth Sonic kini adalah Grok Code Fast! Model penalaran berperforma tinggi ini tersedia sebagai grok-code-fast-1 di bawah penyedia xAI (Grok).", + "note": "Sebagai ucapan terima kasih atas semua masukan berguna tentang Sonic, xAI memperpanjang akses gratis ke grok-code-fast-1 selama satu minggu lagi melalui penyedia Roo Code Cloud.", "connectButton": "Hubungkan ke Roo Code Cloud", - "selectModel": "Pilih roo/sonic dari penyedia Roo Code Cloud di
Pengaturan untuk memulai" + "selectModel": "Kunjungi Pengaturan untuk memperbarui konfigurasi penyedia." }, "description": "Roo Code {{version}} menghadirkan fitur-fitur baru yang kuat dan peningkatan signifikan untuk meningkatkan alur kerja pengembangan Anda.", "whatsNew": "Yang Baru", diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index c84dd9b40404..10c1c9826d95 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Rilasciato Roo Code {{version}}", "stealthModel": { - "feature": "Modello stealth GRATUITO per tempo limitato - Un modello di ragionamento velocissimo che eccelle nella programmazione agentica con una finestra di contesto di 262k, disponibile tramite Roo Code Cloud.", - "note": "(Nota: i prompt e le completazioni sono registrati dal creatore del modello e utilizzati per migliorarlo)", + "feature": "Il modello stealth Sonic ora è Grok Code Fast! Questo modello di ragionamento ad alte prestazioni è disponibile come grok-code-fast-1 sotto il provider xAI (Grok).", + "note": "Come ringraziamento per tutti i feedback utili su Sonic, xAI sta estendendo l'accesso gratuito a grok-code-fast-1 per un'altra settimana tramite il provider Roo Code Cloud.", "connectButton": "Connetti a Roo Code Cloud", - "selectModel": "Seleziona roo/sonic dal provider Roo Code Cloud in
Impostazioni per iniziare" + "selectModel": "Visita le Impostazioni per aggiornare la configurazione del provider." }, "description": "Roo Code {{version}} porta nuove potenti funzionalità e miglioramenti significativi per potenziare il tuo flusso di lavoro di sviluppo.", "whatsNew": "Novità", diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 2b0551888539..30fc6a2cf9d3 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} リリース", "stealthModel": { - "feature": "期間限定無料ステルスモデル - 262kコンテキストウィンドウを持つ、エージェンティックコーディングに優れた超高速推論モデル、Roo Code Cloud経由で利用可能。", - "note": "(注意:プロンプトと補完はモデル作成者によってログに記録され、モデルの改善に使用されます)", + "feature": "Sonicステルスモデルが今、Grok Code Fastに!この高性能推論モデルがxAI (Grok)プロバイダーの下でgrok-code-fast-1として利用できるようになりました。", + "note": "Sonicに関するすべての有用なフィードバックに感謝して、xAIはRoo Code Cloudプロバイダーを通じてgrok-code-fast-1への無料アクセスをもう1週間延長しています。", "connectButton": "Roo Code Cloudに接続", - "selectModel": "
設定でRoo Code Cloudプロバイダーからroo/sonicを選択して開始" + "selectModel": "プロバイダー設定を更新するために設定にアクセスしてください。" }, "description": "Roo Code {{version}}は、開発ワークフローを向上させる強力な新機能と重要な改善をもたらします。", "whatsNew": "新機能", diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 1a3999d1ba39..3fbde1f3533c 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} 출시", "stealthModel": { - "feature": "기간 한정 무료 스텔스 모델 - 262k 컨텍스트 윈도우를 가진 에이전틱 코딩에 뛰어난 초고속 추론 모델, Roo Code Cloud를 통해 이용 가능.", - "note": "(참고: 프롬프트와 완성은 모델 제작자에 의해 기록되고 모델 개선에 사용됩니다)", + "feature": "Sonic 스텔스 모델이 이제 Grok Code Fast입니다! 이 고성능 추론 모델은 xAI (Grok) 제공업체 하에서 grok-code-fast-1로 이용 가능합니다.", + "note": "Sonic에 대한 모든 유용한 피드백에 대한 감사의 표시로, xAI는 Roo Code Cloud 제공업체를 통해 grok-code-fast-1에 대한 무료 액세스를 한 주 더 연장합니다.", "connectButton": "Roo Code Cloud에 연결", - "selectModel": "
설정에서 Roo Code Cloud 제공업체의 roo/sonic을 선택하여 시작" + "selectModel": "제공업체 설정을 업데이트하려면 설정을 방문하세요." }, "description": "Roo Code {{version}}은 개발 워크플로우를 향상시키는 강력한 새 기능과 중요한 개선사항을 제공합니다.", "whatsNew": "새로운 기능", diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index 0d9168328c16..a53f148bf268 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -251,10 +251,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} uitgebracht", "stealthModel": { - "feature": "Beperkt tijd GRATIS stealth model - Een bliksemsnelle redeneermodel die uitblinkt in agentische programmering met een 262k contextvenster, beschikbaar via Roo Code Cloud.", - "note": "(Opmerking: prompts en aanvullingen worden gelogd door de modelmaker en gebruikt om het model te verbeteren)", + "feature": "Het Sonic stealth model is nu Grok Code Fast! Dit hoogperformante redeneermodel is beschikbaar als grok-code-fast-1 onder de xAI (Grok) provider.", + "note": "Als dank voor alle nuttige feedback over Sonic, breidt xAI de gratis toegang tot grok-code-fast-1 uit voor nog een week via de Roo Code Cloud-provider.", "connectButton": "Verbinden met Roo Code Cloud", - "selectModel": "Selecteer roo/sonic van de Roo Code Cloud provider in
Instellingen om te beginnen" + "selectModel": "Ga naar Instellingen om je provider configuratie bij te werken." }, "description": "Roo Code {{version}} brengt krachtige nieuwe functies en significante verbeteringen om je ontwikkelingsworkflow te verbeteren.", "whatsNew": "Wat is er nieuw", diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index 3fc13d2cf5c0..391aa7b3194a 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} wydany", "stealthModel": { - "feature": "Darmowy model stealth na ograniczony czas - Błyskawiczny model rozumowania, który doskonale radzi sobie z kodowaniem agentowym z oknem kontekstu 262k, dostępny przez Roo Code Cloud.", - "note": "(Uwaga: prompty i uzupełnienia są rejestrowane przez twórcę modelu i używane do jego ulepszania)", + "feature": "Model stealth Sonic to teraz Grok Code Fast! Ten wysokowydajny model rozumowania jest dostępny jako grok-code-fast-1 u dostawcy xAI (Grok).", + "note": "W podzięce za wszystkie pomocne opinie o Sonic, xAI rozszerza bezpłatny dostęp do grok-code-fast-1 na kolejny tydzień za pośrednictwem dostawcy Roo Code Cloud.", "connectButton": "Połącz z Roo Code Cloud", - "selectModel": "Wybierz roo/sonic od dostawcy Roo Code Cloud w
Ustawieniach aby rozpocząć" + "selectModel": "Odwiedź Ustawienia, aby zaktualizować konfigurację dostawcy." }, "description": "Roo Code {{version}} wprowadza potężne nowe funkcje i znaczące ulepszenia, aby ulepszyć Twój przepływ pracy programistycznej.", "whatsNew": "Co nowego", diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 1473fd304ab4..12fa6932ae2b 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} Lançado", "stealthModel": { - "feature": "Modelo stealth GRATUITO por tempo limitado - Um modelo de raciocínio ultrarrápido que se destaca em codificação agêntica com uma janela de contexto de 262k, disponível através do Roo Code Cloud.", - "note": "(Nota: prompts e completações são registrados pelo criador do modelo e usados para melhorá-lo)", + "feature": "O modelo stealth Sonic agora é Grok Code Fast! Este modelo de raciocínio de alta performance está disponível como grok-code-fast-1 no provedor xAI (Grok).", + "note": "Como agradecimento por todo o feedback útil sobre o Sonic, a xAI está estendendo o acesso gratuito ao grok-code-fast-1 por mais uma semana através do provedor Roo Code Cloud.", "connectButton": "Conectar ao Roo Code Cloud", - "selectModel": "Selecione roo/sonic do provedor Roo Code Cloud em
Configurações para começar" + "selectModel": "Visite as Configurações para atualizar sua configuração de provedor." }, "description": "Roo Code {{version}} traz novos recursos poderosos e melhorias significativas para aprimorar seu fluxo de trabalho de desenvolvimento.", "whatsNew": "O que há de novo", diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index 23c58f0099bd..0288c2bc9475 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -251,10 +251,10 @@ "announcement": { "title": "🎉 Выпущен Roo Code {{version}}", "stealthModel": { - "feature": "Бесплатная скрытая модель на ограниченное время - Сверхбыстрая модель рассуждений, которая превосходно справляется с агентным программированием с окном контекста 262k, доступна через Roo Code Cloud.", - "note": "(Примечание: промпты и дополнения записываются создателем модели и используются для её улучшения)", + "feature": "Скрытая модель Sonic теперь называется Grok Code Fast! Эта высокопроизводительная модель рассуждения доступна как grok-code-fast-1 у провайдера xAI (Grok).", + "note": "В благодарность за все полезные отзывы о Sonic, xAI продлевает бесплатный доступ к grok-code-fast-1 ещё на одну неделю через провайдера Roo Code Cloud.", "connectButton": "Подключиться к Roo Code Cloud", - "selectModel": "Выберите roo/sonic от провайдера Roo Code Cloud в
Настройках для начала" + "selectModel": "Перейдите в Настройки для обновления конфигурации провайдера." }, "description": "Roo Code {{version}} приносит мощные новые функции и значительные улучшения для совершенствования вашего рабочего процесса разработки.", "whatsNew": "Что нового", diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index e2f4dd04c0f9..c8dea0d545a7 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} Yayınlandı", "stealthModel": { - "feature": "Sınırlı süre ÜCRETSİZ gizli model - 262k bağlam penceresi ile ajantik kodlamada mükemmel olan çok hızlı akıl yürütme modeli, Roo Code Cloud üzerinden kullanılabilir.", - "note": "(Not: istemler ve tamamlamalar model yaratıcısı tarafından kaydedilir ve modeli geliştirmek için kullanılır)", + "feature": "Sonic gizli model artık Grok Code Fast! Bu yüksek performanslı akıl yürütme modeli xAI (Grok) sağlayıcısı altında grok-code-fast-1 olarak mevcut.", + "note": "Sonic hakkındaki tüm yararlı geri bildirimler için teşekkür olarak, xAI grok-code-fast-1'e ücretsiz erişimi Roo Code Cloud sağlayıcısı üzerinden bir hafta daha uzatıyor.", "connectButton": "Roo Code Cloud'a bağlan", - "selectModel": "
Ayarlar'da Roo Code Cloud sağlayıcısından roo/sonic'i seç ve başla" + "selectModel": "Sağlayıcı yapılandırmanızı güncellemek için Ayarlar'ı ziyaret edin." }, "description": "Roo Code {{version}}, geliştirme iş akışınızı geliştirmek için güçlü yeni özellikler ve önemli iyileştirmeler getiriyor.", "whatsNew": "Yenilikler", diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index ad40e08038dd..c4d56a71af80 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} Đã phát hành", "stealthModel": { - "feature": "Mô hình stealth MIỄN PHÍ có thời hạn - Một mô hình lý luận cực nhanh xuất sắc trong lập trình agentic với cửa sổ ngữ cảnh 262k, có sẵn qua Roo Code Cloud.", - "note": "(Lưu ý: các prompt và completion được ghi lại bởi người tạo mô hình và được sử dụng để cải thiện mô hình)", + "feature": "Mô hình stealth Sonic giờ là Grok Code Fast! Mô hình lý luận hiệu năng cao này có sẵn dưới dạng grok-code-fast-1 trong nhà cung cấp xAI (Grok).", + "note": "Để cảm ơn tất cả các phản hồi hữu ích về Sonic, xAI đang mở rộng quyền truy cập miễn phí vào grok-code-fast-1 thêm một tuần nữa thông qua nhà cung cấp Roo Code Cloud.", "connectButton": "Kết nối với Roo Code Cloud", - "selectModel": "Chọn roo/sonic từ nhà cung cấp Roo Code Cloud trong
Cài đặt để bắt đầu" + "selectModel": "Truy cập Cài đặt để cập nhật cấu hình nhà cung cấp của bạn." }, "description": "Roo Code {{version}} mang đến các tính năng mạnh mẽ mới và cải tiến đáng kể để nâng cao quy trình phát triển của bạn.", "whatsNew": "Có gì mới", diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index 866056e0dab3..ac95f8920904 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -266,10 +266,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} 已发布", "stealthModel": { - "feature": "限时免费隐形模型 - 一个在代理编程方面表现出色的超快推理模型,拥有 262k 上下文窗口,通过 Roo Code Cloud 提供。", - "note": "(注意:提示词和补全内容会被模型创建者记录并用于改进模型)", + "feature": "Sonic 隐形模型现在是 Grok Code Fast!这个高性能推理模型可在 xAI (Grok) 提供商下作为 grok-code-fast-1 使用。", + "note": "作为对所有关于 Sonic 有用反馈的感谢,xAI 将通过 Roo Code Cloud 提供商延长对 grok-code-fast-1 的免费访问权限再一周。", "connectButton": "连接到 Roo Code Cloud", - "selectModel": "在
设置中从 Roo Code Cloud 提供商选择 roo/sonic 开始使用" + "selectModel": "访问设置更新你的提供商配置。" }, "description": "Roo Code {{version}} 带来强大的新功能和重大改进,提升您的开发工作流程。", "whatsNew": "新特性", diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index f97f7796baac..8df11705d4cb 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -275,10 +275,10 @@ "announcement": { "title": "🎉 Roo Code {{version}} 已發布", "stealthModel": { - "feature": "限時免費隱形模型 - 一個在代理程式編程方面表現出色的超快推理模型,擁有 262k 上下文視窗,透過 Roo Code Cloud 提供。", - "note": "(注意:提示和完成會被模型創建者記錄並用於改進模型)", + "feature": "Sonic 隱形模型現在是 Grok Code Fast!這個高效能推理模型現已作為 grok-code-fast-1xAI (Grok) 提供商下提供。", + "note": "作為對 Sonic 所有寶貴回饋的感謝,xAI 將透過 Roo Code Cloud 提供商延長 grok-code-fast-1 的免費存取一週。", "connectButton": "連接到 Roo Code Cloud", - "selectModel": "在
設定中從 Roo Code Cloud 提供商選擇 roo/sonic 開始使用" + "selectModel": "造訪設定更新你的提供商設定。" }, "description": "Roo Code {{version}} 帶來強大的新功能和重大改進,提升您的開發工作流程。", "whatsNew": "新功能", From f9921ff1944a093275502529b1436d3ea3806101 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 26 Aug 2025 16:23:27 -0400 Subject: [PATCH 003/228] chore: add changeset for v3.26.0 (#7428) --- .changeset/v3.25.24.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .changeset/v3.25.24.md diff --git a/.changeset/v3.25.24.md b/.changeset/v3.25.24.md new file mode 100644 index 000000000000..f709e339079f --- /dev/null +++ b/.changeset/v3.25.24.md @@ -0,0 +1,21 @@ +--- +"roo-cline": minor +--- + +- Sonic -> Grok Code Fast +- Fix: Handle Mistral thinking content as reasoning chunks (#6842 by @Biotrioo, PR by @app/roomote) +- Fix: Make auto approve toggle trigger stay (#3909 by @kyle-apex, PR by @elianiva) +- Fix: Preserve user input when selecting follow-up choices (#7316 by @teihome, PR by @daniel-lxs) +- Fix: Resolve newTaskRequireTodos setting not working correctly (thanks @hannesrudolph!) +- Fix: Requesty model listing (#7377 by @dtrugman, PR by @dtrugman) +- feat: Add Deepseek v3.1 to Fireworks AI provider (#7374 by @dmarkey, PR by @app/roomote) +- feat: Add Qwen Code CLI API Support with OAuth Authentication (thanks @app/roomote!) +- feat: Hide static providers with no models from provider list (thanks @daniel-lxs!) +- Add a built-in /init slash command (thanks @mrubens and @hannesrudolph!) +- Add todos parameter to new_task tool usage in issue-fixer mode (thanks @hannesrudolph!) +- Handle substitution patterns in command validation (thanks @mrubens!) +- Mark code-workspace files as protected (thanks @mrubens!) +- Update list of default allowed commands (thanks @mrubens!) +- Follow symlinks in rooignore checks (thanks @mrubens!) +- Show cache read and write prices for OpenRouter inference providers (thanks @chrarnoldus!) +- chore(deps): Update dependency drizzle-kit to v0.31.4 (thanks @app/renovate!) From 7c91e4f2596852faa50795b9dfca77255484c7cc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:28:21 -0400 Subject: [PATCH 004/228] Changeset version bump (#7429) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens --- .changeset/v3.25.24.md | 21 --------------------- CHANGELOG.md | 20 ++++++++++++++++++++ src/package.json | 2 +- 3 files changed, 21 insertions(+), 22 deletions(-) delete mode 100644 .changeset/v3.25.24.md diff --git a/.changeset/v3.25.24.md b/.changeset/v3.25.24.md deleted file mode 100644 index f709e339079f..000000000000 --- a/.changeset/v3.25.24.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"roo-cline": minor ---- - -- Sonic -> Grok Code Fast -- Fix: Handle Mistral thinking content as reasoning chunks (#6842 by @Biotrioo, PR by @app/roomote) -- Fix: Make auto approve toggle trigger stay (#3909 by @kyle-apex, PR by @elianiva) -- Fix: Preserve user input when selecting follow-up choices (#7316 by @teihome, PR by @daniel-lxs) -- Fix: Resolve newTaskRequireTodos setting not working correctly (thanks @hannesrudolph!) -- Fix: Requesty model listing (#7377 by @dtrugman, PR by @dtrugman) -- feat: Add Deepseek v3.1 to Fireworks AI provider (#7374 by @dmarkey, PR by @app/roomote) -- feat: Add Qwen Code CLI API Support with OAuth Authentication (thanks @app/roomote!) -- feat: Hide static providers with no models from provider list (thanks @daniel-lxs!) -- Add a built-in /init slash command (thanks @mrubens and @hannesrudolph!) -- Add todos parameter to new_task tool usage in issue-fixer mode (thanks @hannesrudolph!) -- Handle substitution patterns in command validation (thanks @mrubens!) -- Mark code-workspace files as protected (thanks @mrubens!) -- Update list of default allowed commands (thanks @mrubens!) -- Follow symlinks in rooignore checks (thanks @mrubens!) -- Show cache read and write prices for OpenRouter inference providers (thanks @chrarnoldus!) -- chore(deps): Update dependency drizzle-kit to v0.31.4 (thanks @app/renovate!) diff --git a/CHANGELOG.md b/CHANGELOG.md index c75bb9e32736..b03a84df32a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Roo Code Changelog +## [3.26.0] - 2025-08-26 + +- Sonic -> Grok Code Fast +- feat: Add Qwen Code CLI API Support with OAuth Authentication (thanks @evinelias and Cline!) +- feat: Add Deepseek v3.1 to Fireworks AI provider (#7374 by @dmarkey, PR by @app/roomote) +- Add a built-in /init slash command (thanks @mrubens and @hannesrudolph!) +- Fix: Make auto approve toggle trigger stay (#3909 by @kyle-apex, PR by @elianiva) +- Fix: Preserve user input when selecting follow-up choices (#7316 by @teihome, PR by @daniel-lxs) +- Fix: Handle Mistral thinking content as reasoning chunks (#6842 by @Biotrioo, PR by @app/roomote) +- Fix: Resolve newTaskRequireTodos setting not working correctly (thanks @hannesrudolph!) +- Fix: Requesty model listing (#7377 by @dtrugman, PR by @dtrugman) +- feat: Hide static providers with no models from provider list (thanks @daniel-lxs!) +- Add todos parameter to new_task tool usage in issue-fixer mode (thanks @hannesrudolph!) +- Handle substitution patterns in command validation (thanks @mrubens!) +- Mark code-workspace files as protected (thanks @mrubens!) +- Update list of default allowed commands (thanks @mrubens!) +- Follow symlinks in rooignore checks (thanks @mrubens!) +- Show cache read and write prices for OpenRouter inference providers (thanks @chrarnoldus!) +- chore(deps): Update dependency drizzle-kit to v0.31.4 (thanks @app/renovate!) + ## [3.25.23] - 2025-08-22 - feat: add custom base URL support for Requesty provider (thanks @requesty-JohnCosta27!) diff --git a/src/package.json b/src/package.json index 6099c88003eb..7b84e9759a63 100644 --- a/src/package.json +++ b/src/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "RooVeterinaryInc", - "version": "3.25.23", + "version": "3.26.0", "icon": "assets/icons/icon.png", "galleryBanner": { "color": "#617A91", From 934bfd0a545103dffdc7c6c5cba3ef57c3289034 Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 26 Aug 2025 13:41:02 -0700 Subject: [PATCH 005/228] feat: Add Vercel AI Gateway provider integration (#7396) Co-authored-by: daniel-lxs Co-authored-by: cte --- packages/types/npm/package.metadata.json | 2 +- packages/types/src/global-settings.ts | 1 + packages/types/src/provider-settings.ts | 11 + packages/types/src/providers/index.ts | 1 + .../types/src/providers/vercel-ai-gateway.ts | 102 +++++ pnpm-lock.yaml | 18 +- src/api/index.ts | 3 + .../__tests__/vercel-ai-gateway.spec.ts | 383 ++++++++++++++++++ .../__tests__/vercel-ai-gateway.spec.ts | 317 +++++++++++++++ src/api/providers/fetchers/modelCache.ts | 4 + .../providers/fetchers/vercel-ai-gateway.ts | 120 ++++++ src/api/providers/index.ts | 1 + src/api/providers/vercel-ai-gateway.ts | 115 ++++++ .../__tests__/vercel-ai-gateway.spec.ts | 233 +++++++++++ .../transform/caching/vercel-ai-gateway.ts | 30 ++ .../webview/__tests__/ClineProvider.spec.ts | 5 + .../__tests__/webviewMessageHandler.spec.ts | 6 + src/core/webview/webviewMessageHandler.ts | 1 + src/package.json | 2 +- src/shared/api.ts | 2 + .../src/components/settings/ApiOptions.tsx | 13 + .../src/components/settings/ModelPicker.tsx | 1 + .../src/components/settings/constants.ts | 1 + .../settings/providers/VercelAiGateway.tsx | 77 ++++ .../components/settings/providers/index.ts | 1 + .../components/ui/hooks/useSelectedModel.ts | 6 + 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/id/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 + .../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 + .../src/i18n/locales/zh-CN/settings.json | 2 + .../src/i18n/locales/zh-TW/settings.json | 2 + .../src/utils/__tests__/validate.test.ts | 1 + webview-ui/src/utils/validate.ts | 10 + 46 files changed, 1492 insertions(+), 11 deletions(-) create mode 100644 packages/types/src/providers/vercel-ai-gateway.ts create mode 100644 src/api/providers/__tests__/vercel-ai-gateway.spec.ts create mode 100644 src/api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts create mode 100644 src/api/providers/fetchers/vercel-ai-gateway.ts create mode 100644 src/api/providers/vercel-ai-gateway.ts create mode 100644 src/api/transform/caching/__tests__/vercel-ai-gateway.spec.ts create mode 100644 src/api/transform/caching/vercel-ai-gateway.ts create mode 100644 webview-ui/src/components/settings/providers/VercelAiGateway.tsx diff --git a/packages/types/npm/package.metadata.json b/packages/types/npm/package.metadata.json index 2b1aa701e251..374f4e62bfc4 100644 --- a/packages/types/npm/package.metadata.json +++ b/packages/types/npm/package.metadata.json @@ -1,6 +1,6 @@ { "name": "@roo-code/types", - "version": "1.60.0", + "version": "1.61.0", "description": "TypeScript type definitions for Roo Code.", "publishConfig": { "access": "public", diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index dd72d72fe959..3b80bba3b2de 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -198,6 +198,7 @@ export const SECRET_STATE_KEYS = [ "fireworksApiKey", "featherlessApiKey", "ioIntelligenceApiKey", + "vercelAiGatewayApiKey", ] as const satisfies readonly (keyof ProviderSettings)[] export type SecretState = Pick diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 4f5ca9c3caf3..8941e4cdd836 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -66,6 +66,7 @@ export const providerNames = [ "featherless", "io-intelligence", "roo", + "vercel-ai-gateway", ] as const export const providerNamesSchema = z.enum(providerNames) @@ -321,6 +322,11 @@ const rooSchema = apiModelIdProviderModelSchema.extend({ // No additional fields needed - uses cloud authentication }) +const vercelAiGatewaySchema = baseProviderSettingsSchema.extend({ + vercelAiGatewayApiKey: z.string().optional(), + vercelAiGatewayModelId: z.string().optional(), +}) + const defaultSchema = z.object({ apiProvider: z.undefined(), }) @@ -360,6 +366,7 @@ export const providerSettingsSchemaDiscriminated = z.discriminatedUnion("apiProv ioIntelligenceSchema.merge(z.object({ apiProvider: z.literal("io-intelligence") })), qwenCodeSchema.merge(z.object({ apiProvider: z.literal("qwen-code") })), rooSchema.merge(z.object({ apiProvider: z.literal("roo") })), + vercelAiGatewaySchema.merge(z.object({ apiProvider: z.literal("vercel-ai-gateway") })), defaultSchema, ]) @@ -399,6 +406,7 @@ export const providerSettingsSchema = z.object({ ...ioIntelligenceSchema.shape, ...qwenCodeSchema.shape, ...rooSchema.shape, + ...vercelAiGatewaySchema.shape, ...codebaseIndexProviderSchema.shape, }) @@ -425,6 +433,7 @@ export const MODEL_ID_KEYS: Partial[] = [ "litellmModelId", "huggingFaceModelId", "ioIntelligenceModelId", + "vercelAiGatewayModelId", ] export const getModelId = (settings: ProviderSettings): string | undefined => { @@ -541,6 +550,7 @@ export const MODELS_BY_PROVIDER: Record< openrouter: { id: "openrouter", label: "OpenRouter", models: [] }, requesty: { id: "requesty", label: "Requesty", models: [] }, unbound: { id: "unbound", label: "Unbound", models: [] }, + "vercel-ai-gateway": { id: "vercel-ai-gateway", label: "Vercel AI Gateway", models: [] }, } export const dynamicProviders = [ @@ -550,6 +560,7 @@ export const dynamicProviders = [ "openrouter", "requesty", "unbound", + "vercel-ai-gateway", ] as const satisfies readonly ProviderName[] export type DynamicProvider = (typeof dynamicProviders)[number] diff --git a/packages/types/src/providers/index.ts b/packages/types/src/providers/index.ts index 27951f0f1a48..97fa10ca8248 100644 --- a/packages/types/src/providers/index.ts +++ b/packages/types/src/providers/index.ts @@ -27,4 +27,5 @@ export * from "./unbound.js" export * from "./vertex.js" export * from "./vscode-llm.js" export * from "./xai.js" +export * from "./vercel-ai-gateway.js" export * from "./zai.js" diff --git a/packages/types/src/providers/vercel-ai-gateway.ts b/packages/types/src/providers/vercel-ai-gateway.ts new file mode 100644 index 000000000000..70cf49b41976 --- /dev/null +++ b/packages/types/src/providers/vercel-ai-gateway.ts @@ -0,0 +1,102 @@ +import type { ModelInfo } from "../model.js" + +// https://ai-gateway.vercel.sh/v1/ +export const vercelAiGatewayDefaultModelId = "anthropic/claude-sonnet-4" + +export const VERCEL_AI_GATEWAY_PROMPT_CACHING_MODELS = new Set([ + "anthropic/claude-3-haiku", + "anthropic/claude-3-opus", + "anthropic/claude-3.5-haiku", + "anthropic/claude-3.5-sonnet", + "anthropic/claude-3.7-sonnet", + "anthropic/claude-opus-4", + "anthropic/claude-opus-4.1", + "anthropic/claude-sonnet-4", + "openai/gpt-4.1", + "openai/gpt-4.1-mini", + "openai/gpt-4.1-nano", + "openai/gpt-4o", + "openai/gpt-4o-mini", + "openai/gpt-5", + "openai/gpt-5-mini", + "openai/gpt-5-nano", + "openai/o1", + "openai/o3", + "openai/o3-mini", + "openai/o4-mini", +]) + +export const VERCEL_AI_GATEWAY_VISION_ONLY_MODELS = new Set([ + "alibaba/qwen-3-14b", + "alibaba/qwen-3-235b", + "alibaba/qwen-3-30b", + "alibaba/qwen-3-32b", + "alibaba/qwen3-coder", + "amazon/nova-pro", + "anthropic/claude-3.5-haiku", + "google/gemini-1.5-flash-8b", + "google/gemini-2.0-flash-thinking", + "google/gemma-3-27b", + "mistral/devstral-small", + "xai/grok-vision-beta", +]) + +export const VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS = new Set([ + "amazon/nova-lite", + "anthropic/claude-3-haiku", + "anthropic/claude-3-opus", + "anthropic/claude-3-sonnet", + "anthropic/claude-3.5-sonnet", + "anthropic/claude-3.7-sonnet", + "anthropic/claude-opus-4", + "anthropic/claude-opus-4.1", + "anthropic/claude-sonnet-4", + "google/gemini-1.5-flash", + "google/gemini-1.5-pro", + "google/gemini-2.0-flash", + "google/gemini-2.0-flash-lite", + "google/gemini-2.0-pro", + "google/gemini-2.5-flash", + "google/gemini-2.5-flash-lite", + "google/gemini-2.5-pro", + "google/gemini-exp", + "meta/llama-3.2-11b", + "meta/llama-3.2-90b", + "meta/llama-3.3", + "meta/llama-4-maverick", + "meta/llama-4-scout", + "mistral/pixtral-12b", + "mistral/pixtral-large", + "moonshotai/kimi-k2", + "openai/gpt-4-turbo", + "openai/gpt-4.1", + "openai/gpt-4.1-mini", + "openai/gpt-4.1-nano", + "openai/gpt-4.5-preview", + "openai/gpt-4o", + "openai/gpt-4o-mini", + "openai/gpt-oss-120b", + "openai/gpt-oss-20b", + "openai/o3", + "openai/o3-pro", + "openai/o4-mini", + "vercel/v0-1.0-md", + "xai/grok-2-vision", + "zai/glm-4.5v", +]) + +export const vercelAiGatewayDefaultModelInfo: ModelInfo = { + maxTokens: 64000, + contextWindow: 200000, + supportsImages: true, + supportsComputerUse: true, + supportsPromptCache: true, + inputPrice: 3, + outputPrice: 15, + cacheWritesPrice: 3.75, + cacheReadsPrice: 0.3, + description: + "Claude Sonnet 4 significantly improves on Sonnet 3.7's industry-leading capabilities, excelling in coding with a state-of-the-art 72.7% on SWE-bench. The model balances performance and efficiency for internal and external use cases, with enhanced steerability for greater control over implementations. While not matching Opus 4 in most domains, it delivers an optimal mix of capability and practicality.", +} + +export const VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE = 0.7 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b683e48b6449..00788ad28e71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -584,8 +584,8 @@ importers: specifier: ^1.14.0 version: 1.14.0(typescript@5.8.3) '@roo-code/cloud': - specifier: ^0.21.0 - version: 0.21.0 + specifier: ^0.22.0 + version: 0.22.0 '@roo-code/ipc': specifier: workspace:^ version: link:../packages/ipc @@ -3262,11 +3262,11 @@ packages: cpu: [x64] os: [win32] - '@roo-code/cloud@0.21.0': - resolution: {integrity: sha512-yNVybIjaS7Hy8GwDtGJc76N1WpCXGaCSlAEsW7VGjnojpxaIzV2GcJP1j1hg5q8HqLQnU4ixV0qXxOkxwhkEiA==} + '@roo-code/cloud@0.22.0': + resolution: {integrity: sha512-s1d4wcDYeDzcwr+YypMWDlNKL4f2osOZ3NoIlD36LCfFeMs+hnluZPS1oXX3WHtmPDC76vSzPMfwW2Ef41hEoA==} - '@roo-code/types@1.60.0': - resolution: {integrity: sha512-tQO6njPr/ZDNBoSHQg1/dpxfVEYeUzpKcernUxgJzmttn1zJbS0sc3CfUyPYOfYKB331z6O3KFUpaiqYFje1wA==} + '@roo-code/types@1.61.0': + resolution: {integrity: sha512-YJdFc6aYfaZ8EN08KbWaKLehRr1dcN3G3CzDjpppb08iehSEUZMycax/ryP5/G4vl34HTdtzyHNMboDen5ElUg==} '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -12563,9 +12563,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@roo-code/cloud@0.21.0': + '@roo-code/cloud@0.22.0': dependencies: - '@roo-code/types': 1.60.0 + '@roo-code/types': 1.61.0 ioredis: 5.6.1 p-wait-for: 5.0.2 socket.io-client: 4.8.1 @@ -12575,7 +12575,7 @@ snapshots: - supports-color - utf-8-validate - '@roo-code/types@1.60.0': + '@roo-code/types@1.61.0': dependencies: zod: 3.25.76 diff --git a/src/api/index.ts b/src/api/index.ts index 188cb3930faf..59ca681f7967 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -38,6 +38,7 @@ import { FireworksHandler, RooHandler, FeatherlessHandler, + VercelAiGatewayHandler, } from "./providers" import { NativeOllamaHandler } from "./providers/native-ollama" @@ -151,6 +152,8 @@ export function buildApiHandler(configuration: ProviderSettings): ApiHandler { return new RooHandler(options) case "featherless": return new FeatherlessHandler(options) + case "vercel-ai-gateway": + return new VercelAiGatewayHandler(options) default: apiProvider satisfies "gemini-cli" | undefined return new AnthropicHandler(options) diff --git a/src/api/providers/__tests__/vercel-ai-gateway.spec.ts b/src/api/providers/__tests__/vercel-ai-gateway.spec.ts new file mode 100644 index 000000000000..a3e7c9e7d5b7 --- /dev/null +++ b/src/api/providers/__tests__/vercel-ai-gateway.spec.ts @@ -0,0 +1,383 @@ +// npx vitest run src/api/providers/__tests__/vercel-ai-gateway.spec.ts + +// Mock vscode first to avoid import errors +vitest.mock("vscode", () => ({})) + +import { Anthropic } from "@anthropic-ai/sdk" +import OpenAI from "openai" + +import { VercelAiGatewayHandler } from "../vercel-ai-gateway" +import { ApiHandlerOptions } from "../../../shared/api" +import { vercelAiGatewayDefaultModelId, VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE } from "@roo-code/types" + +// Mock dependencies +vitest.mock("openai") +vitest.mock("delay", () => ({ default: vitest.fn(() => Promise.resolve()) })) +vitest.mock("../fetchers/modelCache", () => ({ + getModels: vitest.fn().mockImplementation(() => { + return Promise.resolve({ + "anthropic/claude-sonnet-4": { + maxTokens: 64000, + contextWindow: 200000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 3, + outputPrice: 15, + cacheWritesPrice: 3.75, + cacheReadsPrice: 0.3, + description: "Claude Sonnet 4", + supportsComputerUse: true, + }, + "anthropic/claude-3.5-haiku": { + maxTokens: 32000, + contextWindow: 200000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 1, + outputPrice: 5, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + description: "Claude 3.5 Haiku", + supportsComputerUse: false, + }, + "openai/gpt-4o": { + maxTokens: 16000, + contextWindow: 128000, + supportsImages: true, + supportsPromptCache: true, + inputPrice: 2.5, + outputPrice: 10, + cacheWritesPrice: 3.125, + cacheReadsPrice: 0.25, + description: "GPT-4o", + supportsComputerUse: true, + }, + }) + }), +})) + +vitest.mock("../../transform/caching/vercel-ai-gateway", () => ({ + addCacheBreakpoints: vitest.fn(), +})) + +const mockCreate = vitest.fn() +const mockConstructor = vitest.fn() + +;(OpenAI as any).mockImplementation(() => ({ + chat: { + completions: { + create: mockCreate, + }, + }, +})) +;(OpenAI as any).mockImplementation = mockConstructor.mockReturnValue({ + chat: { + completions: { + create: mockCreate, + }, + }, +}) + +describe("VercelAiGatewayHandler", () => { + const mockOptions: ApiHandlerOptions = { + vercelAiGatewayApiKey: "test-key", + vercelAiGatewayModelId: "anthropic/claude-sonnet-4", + } + + beforeEach(() => { + vitest.clearAllMocks() + mockCreate.mockClear() + mockConstructor.mockClear() + }) + + it("initializes with correct options", () => { + const handler = new VercelAiGatewayHandler(mockOptions) + expect(handler).toBeInstanceOf(VercelAiGatewayHandler) + + expect(OpenAI).toHaveBeenCalledWith({ + baseURL: "https://ai-gateway.vercel.sh/v1", + apiKey: mockOptions.vercelAiGatewayApiKey, + defaultHeaders: expect.objectContaining({ + "HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline", + "X-Title": "Roo Code", + "User-Agent": expect.stringContaining("RooCode/"), + }), + }) + }) + + describe("fetchModel", () => { + it("returns correct model info when options are provided", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + const result = await handler.fetchModel() + + expect(result.id).toBe(mockOptions.vercelAiGatewayModelId) + expect(result.info.maxTokens).toBe(64000) + expect(result.info.contextWindow).toBe(200000) + expect(result.info.supportsImages).toBe(true) + expect(result.info.supportsPromptCache).toBe(true) + expect(result.info.supportsComputerUse).toBe(true) + }) + + it("returns default model info when options are not provided", async () => { + const handler = new VercelAiGatewayHandler({}) + const result = await handler.fetchModel() + expect(result.id).toBe(vercelAiGatewayDefaultModelId) + expect(result.info.supportsPromptCache).toBe(true) + }) + + it("uses vercel ai gateway default model when no model specified", async () => { + const handler = new VercelAiGatewayHandler({ vercelAiGatewayApiKey: "test-key" }) + const result = await handler.fetchModel() + expect(result.id).toBe("anthropic/claude-sonnet-4") + }) + }) + + describe("createMessage", () => { + beforeEach(() => { + mockCreate.mockImplementation(async () => ({ + [Symbol.asyncIterator]: async function* () { + yield { + choices: [ + { + delta: { content: "Test response" }, + index: 0, + }, + ], + usage: null, + } + yield { + choices: [ + { + delta: {}, + index: 0, + }, + ], + usage: { + prompt_tokens: 10, + completion_tokens: 5, + total_tokens: 15, + cache_creation_input_tokens: 2, + prompt_tokens_details: { + cached_tokens: 3, + }, + cost: 0.005, + }, + } + }, + })) + }) + + it("streams text content correctly", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + const systemPrompt = "You are a helpful assistant." + const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }] + + const stream = handler.createMessage(systemPrompt, messages) + const chunks = [] + for await (const chunk of stream) { + chunks.push(chunk) + } + + expect(chunks).toHaveLength(2) + expect(chunks[0]).toEqual({ + type: "text", + text: "Test response", + }) + expect(chunks[1]).toEqual({ + type: "usage", + inputTokens: 10, + outputTokens: 5, + cacheWriteTokens: 2, + cacheReadTokens: 3, + totalCost: 0.005, + }) + }) + + it("uses correct temperature from options", async () => { + const customTemp = 0.5 + const handler = new VercelAiGatewayHandler({ + ...mockOptions, + modelTemperature: customTemp, + }) + + const systemPrompt = "You are a helpful assistant." + const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }] + + await handler.createMessage(systemPrompt, messages).next() + + expect(mockCreate).toHaveBeenCalledWith( + expect.objectContaining({ + temperature: customTemp, + }), + ) + }) + + it("uses default temperature when none provided", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + + const systemPrompt = "You are a helpful assistant." + const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }] + + await handler.createMessage(systemPrompt, messages).next() + + expect(mockCreate).toHaveBeenCalledWith( + expect.objectContaining({ + temperature: VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE, + }), + ) + }) + + it("adds cache breakpoints for supported models", async () => { + const { addCacheBreakpoints } = await import("../../transform/caching/vercel-ai-gateway") + const handler = new VercelAiGatewayHandler({ + ...mockOptions, + vercelAiGatewayModelId: "anthropic/claude-3.5-haiku", + }) + + const systemPrompt = "You are a helpful assistant." + const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }] + + await handler.createMessage(systemPrompt, messages).next() + + expect(addCacheBreakpoints).toHaveBeenCalled() + }) + + it("sets correct max_completion_tokens", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + + const systemPrompt = "You are a helpful assistant." + const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }] + + await handler.createMessage(systemPrompt, messages).next() + + expect(mockCreate).toHaveBeenCalledWith( + expect.objectContaining({ + max_completion_tokens: 64000, // max tokens for sonnet 4 + }), + ) + }) + + it("handles usage info correctly with all Vercel AI Gateway specific fields", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + const systemPrompt = "You are a helpful assistant." + const messages: Anthropic.Messages.MessageParam[] = [{ role: "user", content: "Hello" }] + + const stream = handler.createMessage(systemPrompt, messages) + const chunks = [] + for await (const chunk of stream) { + chunks.push(chunk) + } + + const usageChunk = chunks.find((chunk) => chunk.type === "usage") + expect(usageChunk).toEqual({ + type: "usage", + inputTokens: 10, + outputTokens: 5, + cacheWriteTokens: 2, + cacheReadTokens: 3, + totalCost: 0.005, + }) + }) + }) + + describe("completePrompt", () => { + beforeEach(() => { + mockCreate.mockImplementation(async () => ({ + choices: [ + { + message: { role: "assistant", content: "Test completion response" }, + finish_reason: "stop", + index: 0, + }, + ], + usage: { + prompt_tokens: 8, + completion_tokens: 4, + total_tokens: 12, + }, + })) + }) + + it("completes prompt correctly", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + const prompt = "Complete this: Hello" + + const result = await handler.completePrompt(prompt) + + expect(result).toBe("Test completion response") + expect(mockCreate).toHaveBeenCalledWith( + expect.objectContaining({ + model: "anthropic/claude-sonnet-4", + messages: [{ role: "user", content: prompt }], + stream: false, + temperature: VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE, + max_completion_tokens: 64000, + }), + ) + }) + + it("uses custom temperature for completion", async () => { + const customTemp = 0.8 + const handler = new VercelAiGatewayHandler({ + ...mockOptions, + modelTemperature: customTemp, + }) + + await handler.completePrompt("Test prompt") + + expect(mockCreate).toHaveBeenCalledWith( + expect.objectContaining({ + temperature: customTemp, + }), + ) + }) + + it("handles completion errors correctly", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + const errorMessage = "API error" + + mockCreate.mockImplementation(() => { + throw new Error(errorMessage) + }) + + await expect(handler.completePrompt("Test")).rejects.toThrow( + `Vercel AI Gateway completion error: ${errorMessage}`, + ) + }) + + it("returns empty string when no content in response", async () => { + const handler = new VercelAiGatewayHandler(mockOptions) + + mockCreate.mockImplementation(async () => ({ + choices: [ + { + message: { role: "assistant", content: null }, + finish_reason: "stop", + index: 0, + }, + ], + })) + + const result = await handler.completePrompt("Test") + expect(result).toBe("") + }) + }) + + describe("temperature support", () => { + it("applies temperature for supported models", async () => { + const handler = new VercelAiGatewayHandler({ + ...mockOptions, + vercelAiGatewayModelId: "anthropic/claude-sonnet-4", + modelTemperature: 0.9, + }) + + await handler.completePrompt("Test") + + expect(mockCreate).toHaveBeenCalledWith( + expect.objectContaining({ + temperature: 0.9, + }), + ) + }) + }) +}) diff --git a/src/api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts b/src/api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts new file mode 100644 index 000000000000..657d335b61b1 --- /dev/null +++ b/src/api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts @@ -0,0 +1,317 @@ +// npx vitest run src/api/providers/fetchers/__tests__/vercel-ai-gateway.spec.ts + +import axios from "axios" +import { VERCEL_AI_GATEWAY_VISION_ONLY_MODELS, VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS } from "@roo-code/types" + +import { getVercelAiGatewayModels, parseVercelAiGatewayModel } from "../vercel-ai-gateway" + +vitest.mock("axios") +const mockedAxios = axios as any + +describe("Vercel AI Gateway Fetchers", () => { + beforeEach(() => { + vitest.clearAllMocks() + }) + + describe("getVercelAiGatewayModels", () => { + const mockResponse = { + data: { + object: "list", + data: [ + { + id: "anthropic/claude-sonnet-4", + object: "model", + created: 1640995200, + owned_by: "anthropic", + name: "Claude Sonnet 4", + description: + "Claude Sonnet 4 significantly improves on Sonnet 3.7's industry-leading capabilities", + context_window: 200000, + max_tokens: 64000, + type: "language", + pricing: { + input: "3.00", + output: "15.00", + input_cache_write: "3.75", + input_cache_read: "0.30", + }, + }, + { + id: "anthropic/claude-3.5-haiku", + object: "model", + created: 1640995200, + owned_by: "anthropic", + name: "Claude 3.5 Haiku", + description: "Claude 3.5 Haiku is fast and lightweight", + context_window: 200000, + max_tokens: 32000, + type: "language", + pricing: { + input: "1.00", + output: "5.00", + input_cache_write: "1.25", + input_cache_read: "0.10", + }, + }, + { + id: "dall-e-3", + object: "model", + created: 1640995200, + owned_by: "openai", + name: "DALL-E 3", + description: "DALL-E 3 image generation model", + context_window: 4000, + max_tokens: 1000, + type: "image", + pricing: { + input: "40.00", + output: "0.00", + }, + }, + ], + }, + } + + it("fetches and parses models correctly", async () => { + mockedAxios.get.mockResolvedValueOnce(mockResponse) + + const models = await getVercelAiGatewayModels() + + expect(mockedAxios.get).toHaveBeenCalledWith("https://ai-gateway.vercel.sh/v1/models") + expect(Object.keys(models)).toHaveLength(2) // Only language models + expect(models["anthropic/claude-sonnet-4"]).toBeDefined() + expect(models["anthropic/claude-3.5-haiku"]).toBeDefined() + }) + + it("handles API errors gracefully", async () => { + const consoleErrorSpy = vitest.spyOn(console, "error").mockImplementation(() => {}) + mockedAxios.get.mockRejectedValueOnce(new Error("Network error")) + + const models = await getVercelAiGatewayModels() + + expect(models).toEqual({}) + expect(consoleErrorSpy).toHaveBeenCalledWith( + expect.stringContaining("Error fetching Vercel AI Gateway models"), + ) + consoleErrorSpy.mockRestore() + }) + + it("handles invalid response schema gracefully", async () => { + const consoleErrorSpy = vitest.spyOn(console, "error").mockImplementation(() => {}) + mockedAxios.get.mockResolvedValueOnce({ + data: { + invalid: "response", + data: "not an array", + }, + }) + + const models = await getVercelAiGatewayModels() + + expect(models).toEqual({}) + expect(consoleErrorSpy).toHaveBeenCalledWith( + "Vercel AI Gateway models response is invalid", + expect.any(Object), + ) + consoleErrorSpy.mockRestore() + }) + + it("continues processing with partially valid schema", async () => { + const consoleErrorSpy = vitest.spyOn(console, "error").mockImplementation(() => {}) + const invalidResponse = { + data: { + invalid_root: "response", + data: [ + { + id: "anthropic/claude-sonnet-4", + object: "model", + created: 1640995200, + owned_by: "anthropic", + name: "Claude Sonnet 4", + description: "Claude Sonnet 4", + context_window: 200000, + max_tokens: 64000, + type: "language", + pricing: { + input: "3.00", + output: "15.00", + }, + }, + ], + }, + } + mockedAxios.get.mockResolvedValueOnce(invalidResponse) + + const models = await getVercelAiGatewayModels() + + expect(consoleErrorSpy).toHaveBeenCalled() + expect(models["anthropic/claude-sonnet-4"]).toBeDefined() + consoleErrorSpy.mockRestore() + }) + }) + + describe("parseVercelAiGatewayModel", () => { + const baseModel = { + id: "test/model", + object: "model", + created: 1640995200, + owned_by: "test", + name: "Test Model", + description: "A test model", + context_window: 100000, + max_tokens: 8000, + type: "language", + pricing: { + input: "2.50", + output: "10.00", + }, + } + + it("parses basic model info correctly", () => { + const result = parseVercelAiGatewayModel({ + id: "test/model", + model: baseModel, + }) + + expect(result).toEqual({ + maxTokens: 8000, + contextWindow: 100000, + supportsImages: false, + supportsComputerUse: false, + supportsPromptCache: false, + inputPrice: 2500000, + outputPrice: 10000000, + cacheWritesPrice: undefined, + cacheReadsPrice: undefined, + description: "A test model", + }) + }) + + it("parses cache pricing when available", () => { + const modelWithCache = { + ...baseModel, + pricing: { + input: "3.00", + output: "15.00", + input_cache_write: "3.75", + input_cache_read: "0.30", + }, + } + + const result = parseVercelAiGatewayModel({ + id: "anthropic/claude-sonnet-4", + model: modelWithCache, + }) + + expect(result).toMatchObject({ + supportsPromptCache: true, + cacheWritesPrice: 3750000, + cacheReadsPrice: 300000, + }) + }) + + it("detects vision-only models", () => { + // claude 3.5 haiku in VERCEL_AI_GATEWAY_VISION_ONLY_MODELS + const visionModel = { + ...baseModel, + id: "anthropic/claude-3.5-haiku", + } + + const result = parseVercelAiGatewayModel({ + id: "anthropic/claude-3.5-haiku", + model: visionModel, + }) + + expect(result.supportsImages).toBe(VERCEL_AI_GATEWAY_VISION_ONLY_MODELS.has("anthropic/claude-3.5-haiku")) + expect(result.supportsComputerUse).toBe(false) + }) + + it("detects vision and tools models", () => { + // 4 sonnet in VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS + const visionToolsModel = { + ...baseModel, + id: "anthropic/claude-sonnet-4", + } + + const result = parseVercelAiGatewayModel({ + id: "anthropic/claude-sonnet-4", + model: visionToolsModel, + }) + + expect(result.supportsImages).toBe( + VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS.has("anthropic/claude-sonnet-4"), + ) + expect(result.supportsComputerUse).toBe( + VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS.has("anthropic/claude-sonnet-4"), + ) + }) + + it("handles missing cache pricing", () => { + const modelNoCachePricing = { + ...baseModel, + pricing: { + input: "2.50", + output: "10.00", + // No cache pricing + }, + } + + const result = parseVercelAiGatewayModel({ + id: "test/model", + model: modelNoCachePricing, + }) + + expect(result.supportsPromptCache).toBe(false) + expect(result.cacheWritesPrice).toBeUndefined() + expect(result.cacheReadsPrice).toBeUndefined() + }) + + it("handles partial cache pricing", () => { + const modelPartialCachePricing = { + ...baseModel, + pricing: { + input: "2.50", + output: "10.00", + input_cache_write: "3.00", + // Missing input_cache_read + }, + } + + const result = parseVercelAiGatewayModel({ + id: "test/model", + model: modelPartialCachePricing, + }) + + expect(result.supportsPromptCache).toBe(false) + expect(result.cacheWritesPrice).toBe(3000000) + expect(result.cacheReadsPrice).toBeUndefined() + }) + + it("validates all vision model categories", () => { + // Test a few models from each category + const visionOnlyModels = ["anthropic/claude-3.5-haiku", "google/gemini-1.5-flash-8b"] + const visionAndToolsModels = ["anthropic/claude-sonnet-4", "openai/gpt-4o"] + + visionOnlyModels.forEach((modelId) => { + if (VERCEL_AI_GATEWAY_VISION_ONLY_MODELS.has(modelId)) { + const result = parseVercelAiGatewayModel({ + id: modelId, + model: { ...baseModel, id: modelId }, + }) + expect(result.supportsImages).toBe(true) + expect(result.supportsComputerUse).toBe(false) + } + }) + + visionAndToolsModels.forEach((modelId) => { + if (VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS.has(modelId)) { + const result = parseVercelAiGatewayModel({ + id: modelId, + model: { ...baseModel, id: modelId }, + }) + expect(result.supportsImages).toBe(true) + expect(result.supportsComputerUse).toBe(true) + } + }) + }) + }) +}) diff --git a/src/api/providers/fetchers/modelCache.ts b/src/api/providers/fetchers/modelCache.ts index f4c240a61cf7..0005e8205f63 100644 --- a/src/api/providers/fetchers/modelCache.ts +++ b/src/api/providers/fetchers/modelCache.ts @@ -10,6 +10,7 @@ import { RouterName, ModelRecord } from "../../../shared/api" import { fileExistsAtPath } from "../../../utils/fs" import { getOpenRouterModels } from "./openrouter" +import { getVercelAiGatewayModels } from "./vercel-ai-gateway" import { getRequestyModels } from "./requesty" import { getGlamaModels } from "./glama" import { getUnboundModels } from "./unbound" @@ -81,6 +82,9 @@ export const getModels = async (options: GetModelsOptions): Promise case "io-intelligence": models = await getIOIntelligenceModels(options.apiKey) break + case "vercel-ai-gateway": + models = await getVercelAiGatewayModels() + break default: { // Ensures router is exhaustively checked if RouterName is a strict union const exhaustiveCheck: never = provider diff --git a/src/api/providers/fetchers/vercel-ai-gateway.ts b/src/api/providers/fetchers/vercel-ai-gateway.ts new file mode 100644 index 000000000000..91456819a61c --- /dev/null +++ b/src/api/providers/fetchers/vercel-ai-gateway.ts @@ -0,0 +1,120 @@ +import axios from "axios" +import { z } from "zod" + +import type { ModelInfo } from "@roo-code/types" +import { VERCEL_AI_GATEWAY_VISION_ONLY_MODELS, VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS } from "@roo-code/types" + +import type { ApiHandlerOptions } from "../../../shared/api" +import { parseApiPrice } from "../../../shared/cost" + +/** + * VercelAiGatewayPricing + */ + +const vercelAiGatewayPricingSchema = z.object({ + input: z.string(), + output: z.string(), + input_cache_write: z.string().optional(), + input_cache_read: z.string().optional(), +}) + +/** + * VercelAiGatewayModel + */ + +const vercelAiGatewayModelSchema = z.object({ + id: z.string(), + object: z.string(), + created: z.number(), + owned_by: z.string(), + name: z.string(), + description: z.string(), + context_window: z.number(), + max_tokens: z.number(), + type: z.string(), + pricing: vercelAiGatewayPricingSchema, +}) + +export type VercelAiGatewayModel = z.infer + +/** + * VercelAiGatewayModelsResponse + */ + +const vercelAiGatewayModelsResponseSchema = z.object({ + object: z.string(), + data: z.array(vercelAiGatewayModelSchema), +}) + +type VercelAiGatewayModelsResponse = z.infer + +/** + * getVercelAiGatewayModels + */ + +export async function getVercelAiGatewayModels(options?: ApiHandlerOptions): Promise> { + const models: Record = {} + const baseURL = "https://ai-gateway.vercel.sh/v1" + + try { + const response = await axios.get(`${baseURL}/models`) + const result = vercelAiGatewayModelsResponseSchema.safeParse(response.data) + const data = result.success ? result.data.data : response.data.data + + if (!result.success) { + console.error("Vercel AI Gateway models response is invalid", result.error.format()) + } + + for (const model of data) { + const { id } = model + + // Only include language models + if (model.type !== "language") { + continue + } + + models[id] = parseVercelAiGatewayModel({ + id, + model, + }) + } + } catch (error) { + console.error( + `Error fetching Vercel AI Gateway models: ${JSON.stringify(error, Object.getOwnPropertyNames(error), 2)}`, + ) + } + + return models +} + +/** + * parseVercelAiGatewayModel + */ + +export const parseVercelAiGatewayModel = ({ id, model }: { id: string; model: VercelAiGatewayModel }): ModelInfo => { + const cacheWritesPrice = model.pricing?.input_cache_write + ? parseApiPrice(model.pricing?.input_cache_write) + : undefined + + const cacheReadsPrice = model.pricing?.input_cache_read ? parseApiPrice(model.pricing?.input_cache_read) : undefined + + const supportsPromptCache = typeof cacheWritesPrice !== "undefined" && typeof cacheReadsPrice !== "undefined" + const supportsImages = + VERCEL_AI_GATEWAY_VISION_ONLY_MODELS.has(id) || VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS.has(id) + const supportsComputerUse = VERCEL_AI_GATEWAY_VISION_AND_TOOLS_MODELS.has(id) + + const modelInfo: ModelInfo = { + maxTokens: model.max_tokens, + contextWindow: model.context_window, + supportsImages, + supportsComputerUse, + supportsPromptCache, + inputPrice: parseApiPrice(model.pricing?.input), + outputPrice: parseApiPrice(model.pricing?.output), + cacheWritesPrice, + cacheReadsPrice, + description: model.description, + } + + return modelInfo +} diff --git a/src/api/providers/index.ts b/src/api/providers/index.ts index e2b9047dfc96..c3786c5f56d7 100644 --- a/src/api/providers/index.ts +++ b/src/api/providers/index.ts @@ -32,3 +32,4 @@ export { ZAiHandler } from "./zai" export { FireworksHandler } from "./fireworks" export { RooHandler } from "./roo" export { FeatherlessHandler } from "./featherless" +export { VercelAiGatewayHandler } from "./vercel-ai-gateway" diff --git a/src/api/providers/vercel-ai-gateway.ts b/src/api/providers/vercel-ai-gateway.ts new file mode 100644 index 000000000000..be77d35986b4 --- /dev/null +++ b/src/api/providers/vercel-ai-gateway.ts @@ -0,0 +1,115 @@ +import { Anthropic } from "@anthropic-ai/sdk" +import OpenAI from "openai" + +import { + vercelAiGatewayDefaultModelId, + vercelAiGatewayDefaultModelInfo, + VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE, + VERCEL_AI_GATEWAY_PROMPT_CACHING_MODELS, +} from "@roo-code/types" + +import { ApiHandlerOptions } from "../../shared/api" + +import { ApiStream } from "../transform/stream" +import { convertToOpenAiMessages } from "../transform/openai-format" +import { addCacheBreakpoints } from "../transform/caching/vercel-ai-gateway" + +import type { SingleCompletionHandler, ApiHandlerCreateMessageMetadata } from "../index" +import { RouterProvider } from "./router-provider" + +// Extend OpenAI's CompletionUsage to include Vercel AI Gateway specific fields +interface VercelAiGatewayUsage extends OpenAI.CompletionUsage { + cache_creation_input_tokens?: number + cost?: number +} + +export class VercelAiGatewayHandler extends RouterProvider implements SingleCompletionHandler { + constructor(options: ApiHandlerOptions) { + super({ + options, + name: "vercel-ai-gateway", + baseURL: "https://ai-gateway.vercel.sh/v1", + apiKey: options.vercelAiGatewayApiKey, + modelId: options.vercelAiGatewayModelId, + defaultModelId: vercelAiGatewayDefaultModelId, + defaultModelInfo: vercelAiGatewayDefaultModelInfo, + }) + } + + override async *createMessage( + systemPrompt: string, + messages: Anthropic.Messages.MessageParam[], + metadata?: ApiHandlerCreateMessageMetadata, + ): ApiStream { + const { id: modelId, info } = await this.fetchModel() + + const openAiMessages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + ...convertToOpenAiMessages(messages), + ] + + if (VERCEL_AI_GATEWAY_PROMPT_CACHING_MODELS.has(modelId) && info.supportsPromptCache) { + addCacheBreakpoints(systemPrompt, openAiMessages) + } + + const body: OpenAI.Chat.ChatCompletionCreateParams = { + model: modelId, + messages: openAiMessages, + temperature: this.supportsTemperature(modelId) + ? (this.options.modelTemperature ?? VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE) + : undefined, + max_completion_tokens: info.maxTokens, + stream: true, + } + + const completion = await this.client.chat.completions.create(body) + + for await (const chunk of completion) { + const delta = chunk.choices[0]?.delta + if (delta?.content) { + yield { + type: "text", + text: delta.content, + } + } + + if (chunk.usage) { + const usage = chunk.usage as VercelAiGatewayUsage + yield { + type: "usage", + inputTokens: usage.prompt_tokens || 0, + outputTokens: usage.completion_tokens || 0, + cacheWriteTokens: usage.cache_creation_input_tokens || undefined, + cacheReadTokens: usage.prompt_tokens_details?.cached_tokens || undefined, + totalCost: usage.cost ?? 0, + } + } + } + } + + async completePrompt(prompt: string): Promise { + const { id: modelId, info } = await this.fetchModel() + + try { + const requestOptions: OpenAI.Chat.ChatCompletionCreateParams = { + model: modelId, + messages: [{ role: "user", content: prompt }], + stream: false, + } + + if (this.supportsTemperature(modelId)) { + requestOptions.temperature = this.options.modelTemperature ?? VERCEL_AI_GATEWAY_DEFAULT_TEMPERATURE + } + + requestOptions.max_completion_tokens = info.maxTokens + + const response = await this.client.chat.completions.create(requestOptions) + return response.choices[0]?.message.content || "" + } catch (error) { + if (error instanceof Error) { + throw new Error(`Vercel AI Gateway completion error: ${error.message}`) + } + throw error + } + } +} diff --git a/src/api/transform/caching/__tests__/vercel-ai-gateway.spec.ts b/src/api/transform/caching/__tests__/vercel-ai-gateway.spec.ts new file mode 100644 index 000000000000..86dc593f4f3f --- /dev/null +++ b/src/api/transform/caching/__tests__/vercel-ai-gateway.spec.ts @@ -0,0 +1,233 @@ +// npx vitest run src/api/transform/caching/__tests__/vercel-ai-gateway.spec.ts + +import OpenAI from "openai" +import { addCacheBreakpoints } from "../vercel-ai-gateway" + +describe("Vercel AI Gateway Caching", () => { + describe("addCacheBreakpoints", () => { + it("adds cache control to system message", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { role: "user", content: "Hello" }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + expect(messages[0]).toEqual({ + role: "system", + content: systemPrompt, + cache_control: { type: "ephemeral" }, + }) + }) + + it("adds cache control to last two user messages with string content", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { role: "user", content: "First message" }, + { role: "assistant", content: "First response" }, + { role: "user", content: "Second message" }, + { role: "assistant", content: "Second response" }, + { role: "user", content: "Third message" }, + { role: "assistant", content: "Third response" }, + { role: "user", content: "Fourth message" }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + const lastUserMessage = messages[7] + expect(Array.isArray(lastUserMessage.content)).toBe(true) + if (Array.isArray(lastUserMessage.content)) { + const textPart = lastUserMessage.content.find((part) => part.type === "text") + expect(textPart).toEqual({ + type: "text", + text: "Fourth message", + cache_control: { type: "ephemeral" }, + }) + } + + const secondLastUserMessage = messages[5] + expect(Array.isArray(secondLastUserMessage.content)).toBe(true) + if (Array.isArray(secondLastUserMessage.content)) { + const textPart = secondLastUserMessage.content.find((part) => part.type === "text") + expect(textPart).toEqual({ + type: "text", + text: "Third message", + cache_control: { type: "ephemeral" }, + }) + } + }) + + it("handles messages with existing array content", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { + role: "user", + content: [ + { type: "text", text: "Hello with image" }, + { type: "image_url", image_url: { url: "data:image/png;base64,..." } }, + ], + }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + const userMessage = messages[1] + expect(Array.isArray(userMessage.content)).toBe(true) + if (Array.isArray(userMessage.content)) { + const textPart = userMessage.content.find((part) => part.type === "text") + expect(textPart).toEqual({ + type: "text", + text: "Hello with image", + cache_control: { type: "ephemeral" }, + }) + + const imagePart = userMessage.content.find((part) => part.type === "image_url") + expect(imagePart).toEqual({ + type: "image_url", + image_url: { url: "data:image/png;base64,..." }, + }) + } + }) + + it("handles empty string content gracefully", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { role: "user", content: "" }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + const userMessage = messages[1] + expect(userMessage.content).toBe("") + }) + + it("handles messages with no text parts", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { + role: "user", + content: [{ type: "image_url", image_url: { url: "data:image/png;base64,..." } }], + }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + const userMessage = messages[1] + expect(Array.isArray(userMessage.content)).toBe(true) + if (Array.isArray(userMessage.content)) { + const textPart = userMessage.content.find((part) => part.type === "text") + expect(textPart).toBeUndefined() + + const imagePart = userMessage.content.find((part) => part.type === "image_url") + expect(imagePart).toEqual({ + type: "image_url", + image_url: { url: "data:image/png;base64,..." }, + }) + } + }) + + it("processes only user messages for conversation caching", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { role: "user", content: "First user" }, + { role: "assistant", content: "Assistant response" }, + { role: "user", content: "Second user" }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + expect(messages[2]).toEqual({ + role: "assistant", + content: "Assistant response", + }) + + const firstUser = messages[1] + const secondUser = messages[3] + + expect(Array.isArray(firstUser.content)).toBe(true) + expect(Array.isArray(secondUser.content)).toBe(true) + }) + + it("handles case with only one user message", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { role: "user", content: "Only message" }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + const userMessage = messages[1] + expect(Array.isArray(userMessage.content)).toBe(true) + if (Array.isArray(userMessage.content)) { + const textPart = userMessage.content.find((part) => part.type === "text") + expect(textPart).toEqual({ + type: "text", + text: "Only message", + cache_control: { type: "ephemeral" }, + }) + } + }) + + it("handles case with no user messages", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { role: "assistant", content: "Assistant only" }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + expect(messages[0]).toEqual({ + role: "system", + content: systemPrompt, + cache_control: { type: "ephemeral" }, + }) + + expect(messages[1]).toEqual({ + role: "assistant", + content: "Assistant only", + }) + }) + + it("handles messages with multiple text parts", () => { + const systemPrompt = "You are a helpful assistant." + const messages: OpenAI.Chat.ChatCompletionMessageParam[] = [ + { role: "system", content: systemPrompt }, + { + role: "user", + content: [ + { type: "text", text: "First part" }, + { type: "image_url", image_url: { url: "data:image/png;base64,..." } }, + { type: "text", text: "Second part" }, + ], + }, + ] + + addCacheBreakpoints(systemPrompt, messages) + + const userMessage = messages[1] + if (Array.isArray(userMessage.content)) { + const textParts = userMessage.content.filter((part) => part.type === "text") + expect(textParts).toHaveLength(2) + + expect(textParts[0]).toEqual({ + type: "text", + text: "First part", + }) + + expect(textParts[1]).toEqual({ + type: "text", + text: "Second part", + cache_control: { type: "ephemeral" }, + }) + } + }) + }) +}) diff --git a/src/api/transform/caching/vercel-ai-gateway.ts b/src/api/transform/caching/vercel-ai-gateway.ts new file mode 100644 index 000000000000..82eff0cd7bf3 --- /dev/null +++ b/src/api/transform/caching/vercel-ai-gateway.ts @@ -0,0 +1,30 @@ +import OpenAI from "openai" + +export function addCacheBreakpoints(systemPrompt: string, messages: OpenAI.Chat.ChatCompletionMessageParam[]) { + // Apply cache_control to system message at the message level + messages[0] = { + role: "system", + content: systemPrompt, + // @ts-ignore-next-line + cache_control: { type: "ephemeral" }, + } + + // Add cache_control to the last two user messages for conversation context caching + const lastTwoUserMessages = messages.filter((msg) => msg.role === "user").slice(-2) + + lastTwoUserMessages.forEach((msg) => { + if (typeof msg.content === "string" && msg.content.length > 0) { + msg.content = [{ type: "text", text: msg.content }] + } + + if (Array.isArray(msg.content)) { + // Find the last text part in the message content + let lastTextPart = msg.content.filter((part) => part.type === "text").pop() + + if (lastTextPart && lastTextPart.text && lastTextPart.text.length > 0) { + // @ts-ignore-next-line + lastTextPart["cache_control"] = { type: "ephemeral" } + } + } + }) +} diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 80c2f537a214..0d51890d8144 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -2669,6 +2669,7 @@ describe("ClineProvider - Router Models", () => { expect(getModels).toHaveBeenCalledWith({ provider: "requesty", apiKey: "requesty-key" }) expect(getModels).toHaveBeenCalledWith({ provider: "glama" }) expect(getModels).toHaveBeenCalledWith({ provider: "unbound", apiKey: "unbound-key" }) + expect(getModels).toHaveBeenCalledWith({ provider: "vercel-ai-gateway" }) expect(getModels).toHaveBeenCalledWith({ provider: "litellm", apiKey: "litellm-key", @@ -2686,6 +2687,7 @@ describe("ClineProvider - Router Models", () => { litellm: mockModels, ollama: {}, lmstudio: {}, + "vercel-ai-gateway": mockModels, }, }) }) @@ -2716,6 +2718,7 @@ describe("ClineProvider - Router Models", () => { .mockRejectedValueOnce(new Error("Requesty API error")) // requesty fail .mockResolvedValueOnce(mockModels) // glama success .mockRejectedValueOnce(new Error("Unbound API error")) // unbound fail + .mockResolvedValueOnce(mockModels) // vercel-ai-gateway success .mockRejectedValueOnce(new Error("LiteLLM connection failed")) // litellm fail await messageHandler({ type: "requestRouterModels" }) @@ -2731,6 +2734,7 @@ describe("ClineProvider - Router Models", () => { ollama: {}, lmstudio: {}, litellm: {}, + "vercel-ai-gateway": mockModels, }, }) @@ -2841,6 +2845,7 @@ describe("ClineProvider - Router Models", () => { litellm: {}, ollama: {}, lmstudio: {}, + "vercel-ai-gateway": mockModels, }, }) }) diff --git a/src/core/webview/__tests__/webviewMessageHandler.spec.ts b/src/core/webview/__tests__/webviewMessageHandler.spec.ts index 6f76974d89d3..06dbc0350251 100644 --- a/src/core/webview/__tests__/webviewMessageHandler.spec.ts +++ b/src/core/webview/__tests__/webviewMessageHandler.spec.ts @@ -178,6 +178,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { expect(mockGetModels).toHaveBeenCalledWith({ provider: "requesty", apiKey: "requesty-key" }) expect(mockGetModels).toHaveBeenCalledWith({ provider: "glama" }) expect(mockGetModels).toHaveBeenCalledWith({ provider: "unbound", apiKey: "unbound-key" }) + expect(mockGetModels).toHaveBeenCalledWith({ provider: "vercel-ai-gateway" }) expect(mockGetModels).toHaveBeenCalledWith({ provider: "litellm", apiKey: "litellm-key", @@ -195,6 +196,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { litellm: mockModels, ollama: {}, lmstudio: {}, + "vercel-ai-gateway": mockModels, }, }) }) @@ -282,6 +284,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { litellm: {}, ollama: {}, lmstudio: {}, + "vercel-ai-gateway": mockModels, }, }) }) @@ -302,6 +305,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { .mockRejectedValueOnce(new Error("Requesty API error")) // requesty .mockResolvedValueOnce(mockModels) // glama .mockRejectedValueOnce(new Error("Unbound API error")) // unbound + .mockResolvedValueOnce(mockModels) // vercel-ai-gateway .mockRejectedValueOnce(new Error("LiteLLM connection failed")) // litellm await webviewMessageHandler(mockClineProvider, { @@ -319,6 +323,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { litellm: {}, ollama: {}, lmstudio: {}, + "vercel-ai-gateway": mockModels, }, }) @@ -352,6 +357,7 @@ describe("webviewMessageHandler - requestRouterModels", () => { .mockRejectedValueOnce(new Error("Requesty API error")) // requesty .mockRejectedValueOnce(new Error("Glama API error")) // glama .mockRejectedValueOnce(new Error("Unbound API error")) // unbound + .mockRejectedValueOnce(new Error("Vercel AI Gateway error")) // vercel-ai-gateway .mockRejectedValueOnce(new Error("LiteLLM connection failed")) // litellm await webviewMessageHandler(mockClineProvider, { diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 97bcf0f584e6..ddbc5a992e24 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -575,6 +575,7 @@ export const webviewMessageHandler = async ( }, { key: "glama", options: { provider: "glama" } }, { key: "unbound", options: { provider: "unbound", apiKey: apiConfiguration.unboundApiKey } }, + { key: "vercel-ai-gateway", options: { provider: "vercel-ai-gateway" } }, ] // Add IO Intelligence if API key is provided diff --git a/src/package.json b/src/package.json index 7b84e9759a63..1f5154968451 100644 --- a/src/package.json +++ b/src/package.json @@ -429,7 +429,7 @@ "@mistralai/mistralai": "^1.9.18", "@modelcontextprotocol/sdk": "^1.9.0", "@qdrant/js-client-rest": "^1.14.0", - "@roo-code/cloud": "^0.21.0", + "@roo-code/cloud": "^0.22.0", "@roo-code/ipc": "workspace:^", "@roo-code/telemetry": "workspace:^", "@roo-code/types": "workspace:^", diff --git a/src/shared/api.ts b/src/shared/api.ts index 3dde992c6f5f..30dfd7393bed 100644 --- a/src/shared/api.ts +++ b/src/shared/api.ts @@ -27,6 +27,7 @@ const routerNames = [ "ollama", "lmstudio", "io-intelligence", + "vercel-ai-gateway", ] as const export type RouterName = (typeof routerNames)[number] @@ -151,3 +152,4 @@ export type GetModelsOptions = | { provider: "ollama"; baseUrl?: string } | { provider: "lmstudio"; baseUrl?: string } | { provider: "io-intelligence"; apiKey: string } + | { provider: "vercel-ai-gateway" } diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index 555b98aa8237..a9bf7c70133b 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -35,6 +35,7 @@ import { featherlessDefaultModelId, ioIntelligenceDefaultModelId, rooDefaultModelId, + vercelAiGatewayDefaultModelId, } from "@roo-code/types" import { vscode } from "@src/utils/vscode" @@ -91,6 +92,7 @@ import { ZAi, Fireworks, Featherless, + VercelAiGateway, } from "./providers" import { MODELS_BY_PROVIDER, PROVIDERS } from "./constants" @@ -335,6 +337,7 @@ const ApiOptions = ({ featherless: { field: "apiModelId", default: featherlessDefaultModelId }, "io-intelligence": { field: "ioIntelligenceModelId", default: ioIntelligenceDefaultModelId }, roo: { field: "apiModelId", default: rooDefaultModelId }, + "vercel-ai-gateway": { field: "vercelAiGatewayModelId", default: vercelAiGatewayDefaultModelId }, openai: { field: "openAiModelId" }, ollama: { field: "ollamaModelId" }, lmstudio: { field: "lmStudioModelId" }, @@ -607,6 +610,16 @@ const ApiOptions = ({ /> )} + {selectedProvider === "vercel-ai-gateway" && ( + + )} + {selectedProvider === "human-relay" && ( <>
diff --git a/webview-ui/src/components/settings/ModelPicker.tsx b/webview-ui/src/components/settings/ModelPicker.tsx index 0753f9fc2bde..e398a9f01fba 100644 --- a/webview-ui/src/components/settings/ModelPicker.tsx +++ b/webview-ui/src/components/settings/ModelPicker.tsx @@ -37,6 +37,7 @@ type ModelIdKey = keyof Pick< | "openAiModelId" | "litellmModelId" | "ioIntelligenceModelId" + | "vercelAiGatewayModelId" > interface ModelPickerProps { diff --git a/webview-ui/src/components/settings/constants.ts b/webview-ui/src/components/settings/constants.ts index 1a94c5c59945..9aa02bbf53ca 100644 --- a/webview-ui/src/components/settings/constants.ts +++ b/webview-ui/src/components/settings/constants.ts @@ -79,4 +79,5 @@ export const PROVIDERS = [ { value: "featherless", label: "Featherless AI" }, { value: "io-intelligence", label: "IO Intelligence" }, { value: "roo", label: "Roo Code Cloud" }, + { value: "vercel-ai-gateway", label: "Vercel AI Gateway" }, ].sort((a, b) => a.label.localeCompare(b.label)) diff --git a/webview-ui/src/components/settings/providers/VercelAiGateway.tsx b/webview-ui/src/components/settings/providers/VercelAiGateway.tsx new file mode 100644 index 000000000000..8050469efcb8 --- /dev/null +++ b/webview-ui/src/components/settings/providers/VercelAiGateway.tsx @@ -0,0 +1,77 @@ +import { useCallback } from "react" +import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" + +import { type ProviderSettings, vercelAiGatewayDefaultModelId } from "@roo-code/types" + +import type { OrganizationAllowList } from "@roo/cloud" +import type { RouterModels } from "@roo/api" + +import { useAppTranslation } from "@src/i18n/TranslationContext" +import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink" + +import { inputEventTransform } from "../transforms" +import { ModelPicker } from "../ModelPicker" + +type VercelAiGatewayProps = { + apiConfiguration: ProviderSettings + setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void + routerModels?: RouterModels + organizationAllowList: OrganizationAllowList + modelValidationError?: string +} + +export const VercelAiGateway = ({ + apiConfiguration, + setApiConfigurationField, + routerModels, + organizationAllowList, + modelValidationError, +}: VercelAiGatewayProps) => { + const { t } = useAppTranslation() + + const handleInputChange = useCallback( + ( + field: K, + transform: (event: E) => ProviderSettings[K] = inputEventTransform, + ) => + (event: E | Event) => { + setApiConfigurationField(field, transform(event as E)) + }, + [setApiConfigurationField], + ) + + return ( + <> + + + +
+ {t("settings:providers.apiKeyStorageNotice")} +
+ {!apiConfiguration?.vercelAiGatewayApiKey && ( + + {t("settings:providers.getVercelAiGatewayApiKey")} + + )} + + + ) +} diff --git a/webview-ui/src/components/settings/providers/index.ts b/webview-ui/src/components/settings/providers/index.ts index 46fea622c91a..eedbba0c2903 100644 --- a/webview-ui/src/components/settings/providers/index.ts +++ b/webview-ui/src/components/settings/providers/index.ts @@ -28,3 +28,4 @@ export { ZAi } from "./ZAi" export { LiteLLM } from "./LiteLLM" export { Fireworks } from "./Fireworks" export { Featherless } from "./Featherless" +export { VercelAiGateway } from "./VercelAiGateway" diff --git a/webview-ui/src/components/ui/hooks/useSelectedModel.ts b/webview-ui/src/components/ui/hooks/useSelectedModel.ts index 6455e2e31394..e9470e090262 100644 --- a/webview-ui/src/components/ui/hooks/useSelectedModel.ts +++ b/webview-ui/src/components/ui/hooks/useSelectedModel.ts @@ -54,6 +54,7 @@ import { rooModels, qwenCodeDefaultModelId, qwenCodeModels, + vercelAiGatewayDefaultModelId, BEDROCK_CLAUDE_SONNET_4_MODEL_ID, } from "@roo-code/types" @@ -329,6 +330,11 @@ function getSelectedModel({ const info = qwenCodeModels[id as keyof typeof qwenCodeModels] return { id, info } } + case "vercel-ai-gateway": { + const id = apiConfiguration.vercelAiGatewayModelId ?? vercelAiGatewayDefaultModelId + const info = routerModels["vercel-ai-gateway"]?.[id] + return { id, info } + } // case "anthropic": // case "human-relay": // case "fake-ai": diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 977ccaeec992..40209cc68ce3 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Assegureu-vos que la regió a l'ARN coincideix amb la regió d'AWS seleccionada anteriorment.", "openRouterApiKey": "Clau API d'OpenRouter", "getOpenRouterApiKey": "Obtenir clau API d'OpenRouter", + "vercelAiGatewayApiKey": "Clau API de Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Obtenir clau API de Vercel AI Gateway", "apiKeyStorageNotice": "Les claus API s'emmagatzemen de forma segura a l'Emmagatzematge Secret de VSCode", "glamaApiKey": "Clau API de Glama", "getGlamaApiKey": "Obtenir clau API de Glama", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 71006a9d4c1a..f7ffc547168a 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Stellen Sie sicher, dass die Region in der ARN mit Ihrer oben ausgewählten AWS-Region übereinstimmt.", "openRouterApiKey": "OpenRouter API-Schlüssel", "getOpenRouterApiKey": "OpenRouter API-Schlüssel erhalten", + "vercelAiGatewayApiKey": "Vercel AI Gateway API-Schlüssel", + "getVercelAiGatewayApiKey": "Vercel AI Gateway API-Schlüssel erhalten", "doubaoApiKey": "Doubao API-Schlüssel", "getDoubaoApiKey": "Doubao API-Schlüssel erhalten", "apiKeyStorageNotice": "API-Schlüssel werden sicher im VSCode Secret Storage gespeichert", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 6d761e85ffc2..c8cad691a8f7 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -232,6 +232,8 @@ "awsCustomArnDesc": "Make sure the region in the ARN matches your selected AWS Region above.", "openRouterApiKey": "OpenRouter API Key", "getOpenRouterApiKey": "Get OpenRouter API Key", + "vercelAiGatewayApiKey": "Vercel AI Gateway API Key", + "getVercelAiGatewayApiKey": "Get Vercel AI Gateway API Key", "apiKeyStorageNotice": "API keys are stored securely in VSCode's Secret Storage", "glamaApiKey": "Glama API Key", "getGlamaApiKey": "Get Glama API Key", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index a3dbfa410c07..da5a5c367d43 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Asegúrese de que la región en el ARN coincida con la región de AWS seleccionada anteriormente.", "openRouterApiKey": "Clave API de OpenRouter", "getOpenRouterApiKey": "Obtener clave API de OpenRouter", + "vercelAiGatewayApiKey": "Clave API de Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Obtener clave API de Vercel AI Gateway", "apiKeyStorageNotice": "Las claves API se almacenan de forma segura en el Almacenamiento Secreto de VSCode", "glamaApiKey": "Clave API de Glama", "getGlamaApiKey": "Obtener clave API de Glama", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index a2c2d0ca0686..6c73a7adfd4e 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Assurez-vous que la région dans l'ARN correspond à la région AWS sélectionnée ci-dessus.", "openRouterApiKey": "Clé API OpenRouter", "getOpenRouterApiKey": "Obtenir la clé API OpenRouter", + "vercelAiGatewayApiKey": "Clé API Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Obtenir la clé API Vercel AI Gateway", "apiKeyStorageNotice": "Les clés API sont stockées en toute sécurité dans le stockage sécurisé de VSCode", "glamaApiKey": "Clé API Glama", "getGlamaApiKey": "Obtenir la clé API Glama", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 000b5f89b367..769091541204 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "सुनिश्चित करें कि ARN में क्षेत्र ऊपर चयनित AWS क्षेत्र से मेल खाता है।", "openRouterApiKey": "OpenRouter API कुंजी", "getOpenRouterApiKey": "OpenRouter API कुंजी प्राप्त करें", + "vercelAiGatewayApiKey": "Vercel AI Gateway API कुंजी", + "getVercelAiGatewayApiKey": "Vercel AI Gateway API कुंजी प्राप्त करें", "apiKeyStorageNotice": "API कुंजियाँ VSCode के सुरक्षित स्टोरेज में सुरक्षित रूप से संग्रहीत हैं", "glamaApiKey": "Glama API कुंजी", "getGlamaApiKey": "Glama API कुंजी प्राप्त करें", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 0af73ecda9e4..83f3dd39be8f 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -237,6 +237,8 @@ "awsCustomArnDesc": "Pastikan region di ARN cocok dengan AWS Region yang kamu pilih di atas.", "openRouterApiKey": "OpenRouter API Key", "getOpenRouterApiKey": "Dapatkan OpenRouter API Key", + "vercelAiGatewayApiKey": "Vercel AI Gateway API Key", + "getVercelAiGatewayApiKey": "Dapatkan Vercel AI Gateway API Key", "apiKeyStorageNotice": "API key disimpan dengan aman di Secret Storage VSCode", "glamaApiKey": "Glama API Key", "getGlamaApiKey": "Dapatkan Glama API Key", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 0cc2a590193c..e0cf5574d00a 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Assicurati che la regione nell'ARN corrisponda alla regione AWS selezionata sopra.", "openRouterApiKey": "Chiave API OpenRouter", "getOpenRouterApiKey": "Ottieni chiave API OpenRouter", + "vercelAiGatewayApiKey": "Chiave API Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Ottieni chiave API Vercel AI Gateway", "apiKeyStorageNotice": "Le chiavi API sono memorizzate in modo sicuro nell'Archivio Segreto di VSCode", "glamaApiKey": "Chiave API Glama", "getGlamaApiKey": "Ottieni chiave API Glama", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 27b51854dd54..76661ec09193 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "ARN内のリージョンが上で選択したAWSリージョンと一致していることを確認してください。", "openRouterApiKey": "OpenRouter APIキー", "getOpenRouterApiKey": "OpenRouter APIキーを取得", + "vercelAiGatewayApiKey": "Vercel AI Gateway APIキー", + "getVercelAiGatewayApiKey": "Vercel AI Gateway APIキーを取得", "apiKeyStorageNotice": "APIキーはVSCodeのシークレットストレージに安全に保存されます", "glamaApiKey": "Glama APIキー", "getGlamaApiKey": "Glama APIキーを取得", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index e6125f0ca839..463cad8d2634 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "ARN의 리전이 위에서 선택한 AWS 리전과 일치하는지 확인하세요.", "openRouterApiKey": "OpenRouter API 키", "getOpenRouterApiKey": "OpenRouter API 키 받기", + "vercelAiGatewayApiKey": "Vercel AI Gateway API 키", + "getVercelAiGatewayApiKey": "Vercel AI Gateway API 키 받기", "apiKeyStorageNotice": "API 키는 VSCode의 보안 저장소에 안전하게 저장됩니다", "glamaApiKey": "Glama API 키", "getGlamaApiKey": "Glama API 키 받기", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index ca2024522e6f..816ea37b9662 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Zorg ervoor dat de regio in de ARN overeenkomt met je geselecteerde AWS-regio hierboven.", "openRouterApiKey": "OpenRouter API-sleutel", "getOpenRouterApiKey": "OpenRouter API-sleutel ophalen", + "vercelAiGatewayApiKey": "Vercel AI Gateway API-sleutel", + "getVercelAiGatewayApiKey": "Vercel AI Gateway API-sleutel ophalen", "apiKeyStorageNotice": "API-sleutels worden veilig opgeslagen in de geheime opslag van VSCode", "glamaApiKey": "Glama API-sleutel", "getGlamaApiKey": "Glama API-sleutel ophalen", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 25b04078bbca..2da116c79ede 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Upewnij się, że region w ARN odpowiada wybranemu powyżej regionowi AWS.", "openRouterApiKey": "Klucz API OpenRouter", "getOpenRouterApiKey": "Uzyskaj klucz API OpenRouter", + "vercelAiGatewayApiKey": "Klucz API Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Uzyskaj klucz API Vercel AI Gateway", "apiKeyStorageNotice": "Klucze API są bezpiecznie przechowywane w Tajnym Magazynie VSCode", "glamaApiKey": "Klucz API Glama", "getGlamaApiKey": "Uzyskaj klucz API Glama", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 7039497b9412..04655ba604e5 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Certifique-se de que a região no ARN corresponde à região AWS selecionada acima.", "openRouterApiKey": "Chave de API OpenRouter", "getOpenRouterApiKey": "Obter chave de API OpenRouter", + "vercelAiGatewayApiKey": "Chave API do Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Obter chave API do Vercel AI Gateway", "apiKeyStorageNotice": "As chaves de API são armazenadas com segurança no Armazenamento Secreto do VSCode", "glamaApiKey": "Chave de API Glama", "getGlamaApiKey": "Obter chave de API Glama", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 05d73cd46f0c..c3b351b69be2 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Убедитесь, что регион в ARN совпадает с выбранным выше регионом AWS.", "openRouterApiKey": "OpenRouter API-ключ", "getOpenRouterApiKey": "Получить OpenRouter API-ключ", + "vercelAiGatewayApiKey": "Ключ API Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Получить ключ API Vercel AI Gateway", "apiKeyStorageNotice": "API-ключи хранятся безопасно в Secret Storage VSCode", "glamaApiKey": "Glama API-ключ", "getGlamaApiKey": "Получить Glama API-ключ", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 1bcaa7def571..3813b3db17eb 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "ARN içindeki bölgenin yukarıda seçilen AWS Bölgesiyle eşleştiğinden emin olun.", "openRouterApiKey": "OpenRouter API Anahtarı", "getOpenRouterApiKey": "OpenRouter API Anahtarı Al", + "vercelAiGatewayApiKey": "Vercel AI Gateway API Anahtarı", + "getVercelAiGatewayApiKey": "Vercel AI Gateway API Anahtarı Al", "apiKeyStorageNotice": "API anahtarları VSCode'un Gizli Depolamasında güvenli bir şekilde saklanır", "glamaApiKey": "Glama API Anahtarı", "getGlamaApiKey": "Glama API Anahtarı Al", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index b8cbb8c57179..3e1cfd7422f6 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "Đảm bảo rằng vùng trong ARN khớp với vùng AWS đã chọn ở trên.", "openRouterApiKey": "Khóa API OpenRouter", "getOpenRouterApiKey": "Lấy khóa API OpenRouter", + "vercelAiGatewayApiKey": "Khóa API Vercel AI Gateway", + "getVercelAiGatewayApiKey": "Lấy khóa API Vercel AI Gateway", "apiKeyStorageNotice": "Khóa API được lưu trữ an toàn trong Bộ lưu trữ bí mật của VSCode", "glamaApiKey": "Khóa API Glama", "getGlamaApiKey": "Lấy khóa API Glama", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index a7d30776846b..cb8dde46afa7 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "请确保ARN中的区域与上方选择的AWS区域一致。", "openRouterApiKey": "OpenRouter API 密钥", "getOpenRouterApiKey": "获取 OpenRouter API 密钥", + "vercelAiGatewayApiKey": "Vercel AI Gateway API 密钥", + "getVercelAiGatewayApiKey": "获取 Vercel AI Gateway API 密钥", "apiKeyStorageNotice": "API 密钥安全存储在 VSCode 的密钥存储中", "glamaApiKey": "Glama API 密钥", "getGlamaApiKey": "获取 Glama API 密钥", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index d8b71601dcba..adf5d5fd95f6 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -233,6 +233,8 @@ "awsCustomArnDesc": "確保 ARN 中的區域與您上面選擇的 AWS 區域相符。", "openRouterApiKey": "OpenRouter API 金鑰", "getOpenRouterApiKey": "取得 OpenRouter API 金鑰", + "vercelAiGatewayApiKey": "Vercel AI Gateway API 金鑰", + "getVercelAiGatewayApiKey": "取得 Vercel AI Gateway API 金鑰", "apiKeyStorageNotice": "API 金鑰安全儲存於 VSCode 金鑰儲存中", "glamaApiKey": "Glama API 金鑰", "getGlamaApiKey": "取得 Glama API 金鑰", diff --git a/webview-ui/src/utils/__tests__/validate.test.ts b/webview-ui/src/utils/__tests__/validate.test.ts index f14fb8920048..30ccfd4463fd 100644 --- a/webview-ui/src/utils/__tests__/validate.test.ts +++ b/webview-ui/src/utils/__tests__/validate.test.ts @@ -41,6 +41,7 @@ describe("Model Validation Functions", () => { ollama: {}, lmstudio: {}, "io-intelligence": {}, + "vercel-ai-gateway": {}, } const allowAllOrganization: OrganizationAllowList = { diff --git a/webview-ui/src/utils/validate.ts b/webview-ui/src/utils/validate.ts index 8f18e4411dfa..5613eb9eb8ee 100644 --- a/webview-ui/src/utils/validate.ts +++ b/webview-ui/src/utils/validate.ts @@ -136,6 +136,11 @@ function validateModelsAndKeysProvided(apiConfiguration: ProviderSettings): stri return i18next.t("settings:validation.qwenCodeOauthPath") } break + case "vercel-ai-gateway": + if (!apiConfiguration.vercelAiGatewayApiKey) { + return i18next.t("settings:validation.apiKey") + } + break } return undefined @@ -204,6 +209,8 @@ function getModelIdForProvider(apiConfiguration: ProviderSettings, provider: str return apiConfiguration.huggingFaceModelId case "io-intelligence": return apiConfiguration.ioIntelligenceModelId + case "vercel-ai-gateway": + return apiConfiguration.vercelAiGatewayModelId default: return apiConfiguration.apiModelId } @@ -277,6 +284,9 @@ export function validateModelId(apiConfiguration: ProviderSettings, routerModels case "io-intelligence": modelId = apiConfiguration.ioIntelligenceModelId break + case "vercel-ai-gateway": + modelId = apiConfiguration.vercelAiGatewayModelId + break } if (!modelId) { From 11c454ffa284d95f864d103c0ff4bb1f3d578bd4 Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:02:55 -0500 Subject: [PATCH 006/228] feat: Enable on-disk storage for Qdrant vectors and HNSW index (#7182) --- .../__tests__/qdrant-client.spec.ts | 18 ++++++++++++++++++ .../code-index/vector-store/qdrant-client.ts | 14 ++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts b/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts index 822832d17c70..8947c2f3e79e 100644 --- a/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts +++ b/src/services/code-index/vector-store/__tests__/qdrant-client.spec.ts @@ -532,6 +532,12 @@ describe("QdrantVectorStore", () => { vectors: { size: mockVectorSize, distance: "Cosine", // Assuming 'Cosine' is the DISTANCE_METRIC + on_disk: true, + }, + hnsw_config: { + m: 64, + ef_construct: 512, + on_disk: true, }, }) expect(mockQdrantClientInstance.deleteCollection).not.toHaveBeenCalled() @@ -610,6 +616,12 @@ describe("QdrantVectorStore", () => { vectors: { size: mockVectorSize, // Should use the new, correct vector size distance: "Cosine", + on_disk: true, + }, + hnsw_config: { + m: 64, + ef_construct: 512, + on_disk: true, }, }) @@ -903,6 +915,12 @@ describe("QdrantVectorStore", () => { vectors: { size: newVectorSize, // Should create with new 768 dimensions distance: "Cosine", + on_disk: true, + }, + hnsw_config: { + m: 64, + ef_construct: 512, + on_disk: true, }, }) expect(mockQdrantClientInstance.createPayloadIndex).toHaveBeenCalledTimes(5) diff --git a/src/services/code-index/vector-store/qdrant-client.ts b/src/services/code-index/vector-store/qdrant-client.ts index 50f39666c4c8..f18f3883237a 100644 --- a/src/services/code-index/vector-store/qdrant-client.ts +++ b/src/services/code-index/vector-store/qdrant-client.ts @@ -155,6 +155,12 @@ export class QdrantVectorStore implements IVectorStore { vectors: { size: this.vectorSize, distance: this.DISTANCE_METRIC, + on_disk: true, + }, + hnsw_config: { + m: 64, + ef_construct: 512, + on_disk: true, }, }) created = true @@ -244,6 +250,12 @@ export class QdrantVectorStore implements IVectorStore { vectors: { size: this.vectorSize, distance: this.DISTANCE_METRIC, + on_disk: true, + }, + hnsw_config: { + m: 64, + ef_construct: 512, + on_disk: true, }, }) console.log(`[QdrantVectorStore] Successfully created new collection ${this.collectionName}`) @@ -491,8 +503,6 @@ export class QdrantVectorStore implements IVectorStore { // Include first few file paths for debugging (avoid logging too many) samplePaths: filePaths.slice(0, 3), }) - - throw error } } From ff1f4f0398ae2e65ee51b172d93aa09a2719a115 Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Tue, 26 Aug 2025 19:22:37 -0500 Subject: [PATCH 007/228] fix: use anthropic protocol for token counting when using anthropic models via Vercel AI Gateway (#7433) - Added condition in getApiProtocol to return 'anthropic' for vercel-ai-gateway when modelId starts with 'anthropic/' - Added tests for Vercel AI Gateway provider protocol detection This ensures proper token counting for Anthropic models accessed through Vercel AI Gateway, as Anthropic and OpenAI count tokens differently (Anthropic excludes cache tokens from input count, OpenAI includes them). --- .../src/__tests__/provider-settings.test.ts | 20 +++++++++++++++++++ packages/types/src/provider-settings.ts | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/packages/types/src/__tests__/provider-settings.test.ts b/packages/types/src/__tests__/provider-settings.test.ts index 8277320289b6..93a74f3c42ed 100644 --- a/packages/types/src/__tests__/provider-settings.test.ts +++ b/packages/types/src/__tests__/provider-settings.test.ts @@ -39,6 +39,26 @@ describe("getApiProtocol", () => { }) }) + describe("Vercel AI Gateway provider", () => { + it("should return 'anthropic' for vercel-ai-gateway provider with anthropic models", () => { + expect(getApiProtocol("vercel-ai-gateway", "anthropic/claude-3-opus")).toBe("anthropic") + expect(getApiProtocol("vercel-ai-gateway", "anthropic/claude-3.5-sonnet")).toBe("anthropic") + expect(getApiProtocol("vercel-ai-gateway", "ANTHROPIC/claude-sonnet-4")).toBe("anthropic") + expect(getApiProtocol("vercel-ai-gateway", "anthropic/claude-opus-4.1")).toBe("anthropic") + }) + + it("should return 'openai' for vercel-ai-gateway provider with non-anthropic models", () => { + expect(getApiProtocol("vercel-ai-gateway", "openai/gpt-4")).toBe("openai") + expect(getApiProtocol("vercel-ai-gateway", "google/gemini-pro")).toBe("openai") + expect(getApiProtocol("vercel-ai-gateway", "meta/llama-3")).toBe("openai") + expect(getApiProtocol("vercel-ai-gateway", "mistral/mixtral")).toBe("openai") + }) + + it("should return 'openai' for vercel-ai-gateway provider without model", () => { + expect(getApiProtocol("vercel-ai-gateway")).toBe("openai") + }) + }) + describe("Other providers", () => { it("should return 'openai' for non-anthropic providers regardless of model", () => { expect(getApiProtocol("openrouter", "claude-3-opus")).toBe("openai") diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 8941e4cdd836..eb404f7129c3 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -453,6 +453,11 @@ export const getApiProtocol = (provider: ProviderName | undefined, modelId?: str return "anthropic" } + // Vercel AI Gateway uses anthropic protocol for anthropic models + if (provider && provider === "vercel-ai-gateway" && modelId && modelId.toLowerCase().startsWith("anthropic/")) { + return "anthropic" + } + return "openai" } From 3528f51304cc603a5613a503034528f2e73425b3 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 26 Aug 2025 22:11:35 -0400 Subject: [PATCH 008/228] fix: remove duplicate cache display in task header (#7443) --- webview-ui/src/components/chat/TaskHeader.tsx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/webview-ui/src/components/chat/TaskHeader.tsx b/webview-ui/src/components/chat/TaskHeader.tsx index 41826bc048a4..8fd06b168f02 100644 --- a/webview-ui/src/components/chat/TaskHeader.tsx +++ b/webview-ui/src/components/chat/TaskHeader.tsx @@ -264,19 +264,6 @@ const TaskHeader = ({ )} - {/* Cache size display */} - {((typeof cacheReads === "number" && cacheReads > 0) || - (typeof cacheWrites === "number" && cacheWrites > 0)) && ( - - - {t("chat:task.cache")} - - - {prettyBytes(((cacheReads || 0) + (cacheWrites || 0)) * 4)} - - - )} - {/* Size display */} {!!currentTaskItem?.size && currentTaskItem.size > 0 && ( From f02a2bb05dd331cd844f10380bbcca9045e8be4f Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Tue, 26 Aug 2025 20:48:24 -0700 Subject: [PATCH 009/228] Random chat text area cleanup (#7436) --- apps/web-evals/package.json | 2 +- pnpm-lock.yaml | 166 +++++- src/core/webview/webviewMessageHandler.ts | 7 +- src/shared/TelemetrySetting.ts | 1 - src/shared/combineCommandSequences.ts | 3 +- .../src/components/chat/ApiConfigSelector.tsx | 113 ++-- webview-ui/src/components/chat/ChatRow.tsx | 138 +---- .../src/components/chat/ChatTextArea.tsx | 539 ++++++++---------- webview-ui/src/components/chat/ChatView.tsx | 28 +- .../src/components/chat/CodeIndexPopover.tsx | 14 +- .../src/components/chat/EditModeControls.tsx | 115 ---- webview-ui/src/components/chat/IconButton.tsx | 54 +- .../components/chat/IndexingStatusBadge.tsx | 134 ++--- .../src/components/chat/ModeSelector.tsx | 130 ++--- .../components/chat/SlashCommandsPopover.tsx | 34 +- .../chat/__tests__/ApiConfigSelector.spec.tsx | 5 +- .../chat/__tests__/ChatTextArea.spec.tsx | 55 +- .../__tests__/ChatView.keyboard-fix.spec.tsx | 21 +- .../chat/__tests__/ChatView.spec.tsx | 49 +- .../chat/__tests__/EditModeControls.spec.tsx | 138 ----- .../__tests__/IndexingStatusBadge.spec.tsx | 10 - .../chat/__tests__/ModeSelector.spec.tsx | 105 ++-- .../src/components/common/TelemetryBanner.tsx | 2 +- webview-ui/src/components/settings/About.tsx | 4 +- .../src/components/settings/SettingsView.tsx | 6 +- .../src/components/ui/standard-tooltip.tsx | 9 +- webview-ui/src/components/ui/tooltip.tsx | 57 +- .../src/context/ExtensionStateContext.tsx | 3 +- webview-ui/src/hooks/useTooltip.ts | 39 -- webview-ui/src/index.css | 9 +- webview-ui/src/utils/TelemetryClient.ts | 2 +- webview-ui/src/utils/test-utils.tsx | 5 +- 32 files changed, 834 insertions(+), 1163 deletions(-) delete mode 100644 src/shared/TelemetrySetting.ts delete mode 100644 webview-ui/src/components/chat/EditModeControls.tsx delete mode 100644 webview-ui/src/components/chat/__tests__/EditModeControls.spec.tsx delete mode 100644 webview-ui/src/hooks/useTooltip.ts diff --git a/apps/web-evals/package.json b/apps/web-evals/package.json index df8efec11581..869355100f50 100644 --- a/apps/web-evals/package.json +++ b/apps/web-evals/package.json @@ -24,7 +24,7 @@ "@radix-ui/react-slider": "^1.2.4", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-tooltip": "^1.1.8", + "@radix-ui/react-tooltip": "^1.2.8", "@roo-code/evals": "workspace:^", "@roo-code/types": "workspace:^", "@tanstack/react-query": "^5.69.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 00788ad28e71..905845e552e6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -161,8 +161,8 @@ importers: specifier: ^1.1.3 version: 1.1.12(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(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.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.2.8 + version: 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@roo-code/evals': specifier: workspace:^ version: link:../../packages/evals @@ -2575,6 +2575,9 @@ packages: '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + '@radix-ui/react-alert-dialog@1.1.13': resolution: {integrity: sha512-/uPs78OwxGxslYOG5TKeUsv9fZC0vo376cXSADdKirTmsLJU2au6L3n34c3p6W26rFDDDze/hwy4fYeNd0qdGA==} peerDependencies: @@ -2601,6 +2604,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + 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: @@ -2719,6 +2735,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + 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-dismissable-layer@1.1.9': resolution: {integrity: sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==} peerDependencies: @@ -2846,6 +2875,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + 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: @@ -2885,6 +2927,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + 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: @@ -3046,6 +3101,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + 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: @@ -3131,6 +3199,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + 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==} @@ -11905,6 +11986,8 @@ snapshots: '@radix-ui/primitive@1.1.2': {} + '@radix-ui/primitive@1.1.3': {} + '@radix-ui/react-alert-dialog@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -11928,6 +12011,15 @@ snapshots: '@types/react': 18.3.23 '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-checkbox@1.3.1(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -12059,6 +12151,19 @@ snapshots: '@types/react': 18.3.23 '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-dismissable-layer@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -12202,6 +12307,24 @@ snapshots: '@types/react': 18.3.23 '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-portal@1.1.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -12232,6 +12355,16 @@ snapshots: '@types/react': 18.3.23 '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.23)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-primitive@2.1.2(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23)(react@18.3.1) @@ -12418,6 +12551,26 @@ snapshots: '@types/react': 18.3.23 '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.23)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.23)(react@18.3.1)': dependencies: react: 18.3.1 @@ -12481,6 +12634,15 @@ snapshots: '@types/react': 18.3.23 '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(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.23 + '@types/react-dom': 18.3.7(@types/react@18.3.23) + '@radix-ui/rect@1.1.1': {} '@redis/bloom@5.5.5(@redis/client@5.5.5)': diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index ddbc5a992e24..a20e8e821675 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -4,13 +4,12 @@ import * as os from "os" import * as fs from "fs/promises" import pWaitFor from "p-wait-for" import * as vscode from "vscode" -import * as yaml from "yaml" import { type Language, - type ProviderSettings, type GlobalState, type ClineMessage, + type TelemetrySetting, TelemetryEventName, } from "@roo-code/types" import { CloudService } from "@roo-code/cloud" @@ -21,7 +20,6 @@ import { ClineProvider } from "./ClineProvider" import { changeLanguage, t } from "../../i18n" import { Package } from "../../shared/package" import { RouterName, toRouterName, ModelRecord } from "../../shared/api" -import { supportPrompt } from "../../shared/support-prompt" import { MessageEnhancer } from "./messageEnhancer" import { checkoutDiffPayloadSchema, checkoutRestorePayloadSchema, WebviewMessage } from "../../shared/WebviewMessage" @@ -29,7 +27,6 @@ import { checkExistKey } from "../../shared/checkExistApiConfig" import { experimentDefault } from "../../shared/experiments" import { Terminal } from "../../integrations/terminal/Terminal" import { openFile } from "../../integrations/misc/open-file" -import { CodeIndexManager } from "../../services/code-index/manager" import { openImage, saveImage } from "../../integrations/misc/image-handler" import { selectImages } from "../../integrations/misc/process-images" import { getTheme } from "../../integrations/theme/getTheme" @@ -42,9 +39,7 @@ import { exportSettings, importSettingsWithFeedback } from "../config/importExpo import { getOpenAiModels } from "../../api/providers/openai" import { getVsCodeLmModels } from "../../api/providers/vscode-lm" import { openMention } from "../mentions" -import { TelemetrySetting } from "../../shared/TelemetrySetting" import { getWorkspacePath } from "../../utils/path" -import { ensureSettingsDirectoryExists } from "../../utils/globalContext" import { Mode, defaultModeSlug } from "../../shared/modes" import { getModels, flushModels } from "../../api/providers/fetchers/modelCache" import { GetModelsOptions } from "../../shared/api" diff --git a/src/shared/TelemetrySetting.ts b/src/shared/TelemetrySetting.ts deleted file mode 100644 index 61444b5a090b..000000000000 --- a/src/shared/TelemetrySetting.ts +++ /dev/null @@ -1 +0,0 @@ -export type TelemetrySetting = "unset" | "enabled" | "disabled" diff --git a/src/shared/combineCommandSequences.ts b/src/shared/combineCommandSequences.ts index 2f655feb5415..56b97a368e5c 100644 --- a/src/shared/combineCommandSequences.ts +++ b/src/shared/combineCommandSequences.ts @@ -1,4 +1,5 @@ -import { ClineMessage } from "@roo-code/types" +import type { ClineMessage } from "@roo-code/types" + import { safeJsonParse } from "./safeJsonParse" export const COMMAND_OUTPUT_STRING = "Output:" diff --git a/webview-ui/src/components/chat/ApiConfigSelector.tsx b/webview-ui/src/components/chat/ApiConfigSelector.tsx index 32b87147721d..bf5f9612943a 100644 --- a/webview-ui/src/components/chat/ApiConfigSelector.tsx +++ b/webview-ui/src/components/chat/ApiConfigSelector.tsx @@ -1,18 +1,21 @@ -import React, { useState, useMemo, useCallback } from "react" +import { useState, useMemo, useCallback } from "react" +import { Fzf } from "fzf" +import { ChevronUp } from "lucide-react" + import { cn } from "@/lib/utils" import { useRooPortal } from "@/components/ui/hooks/useRooPortal" import { Popover, PopoverContent, PopoverTrigger, StandardTooltip } from "@/components/ui" -import { IconButton } from "./IconButton" import { useAppTranslation } from "@/i18n/TranslationContext" import { vscode } from "@/utils/vscode" -import { Fzf } from "fzf" import { Button } from "@/components/ui" +import { IconButton } from "./IconButton" + interface ApiConfigSelectorProps { value: string displayName: string disabled?: boolean - title?: string + title: string onChange: (value: string) => void triggerClassName?: string listApiConfigMeta: Array<{ id: string; name: string }> @@ -24,7 +27,7 @@ export const ApiConfigSelector = ({ value, displayName, disabled = false, - title = "", + title, onChange, triggerClassName = "", listApiConfigMeta, @@ -36,30 +39,33 @@ export const ApiConfigSelector = ({ const [searchValue, setSearchValue] = useState("") const portalContainer = useRooPortal("roo-portal") - // Create searchable items for fuzzy search - const searchableItems = useMemo(() => { - return listApiConfigMeta.map((config) => ({ - original: config, - searchStr: config.name, - })) - }, [listApiConfigMeta]) - - // Create Fzf instance - const fzfInstance = useMemo(() => { - return new Fzf(searchableItems, { - selector: (item) => item.searchStr, - }) - }, [searchableItems]) - - // Filter configs based on search + // Create searchable items for fuzzy search. + const searchableItems = useMemo( + () => + listApiConfigMeta.map((config) => ({ + original: config, + searchStr: config.name, + })), + [listApiConfigMeta], + ) + + // Create Fzf instance. + const fzfInstance = useMemo( + () => new Fzf(searchableItems, { selector: (item) => item.searchStr }), + [searchableItems], + ) + + // Filter configs based on search. const filteredConfigs = useMemo(() => { - if (!searchValue) return listApiConfigMeta + if (!searchValue) { + return listApiConfigMeta + } const matchingItems = fzfInstance.find(searchValue).map((result) => result.item.original) return matchingItems }, [listApiConfigMeta, searchValue, fzfInstance]) - // Separate pinned and unpinned configs + // Separate pinned and unpinned configs. const { pinnedConfigs, unpinnedConfigs } = useMemo(() => { const pinned = filteredConfigs.filter((config) => pinnedApiConfigs?.[config.id]) const unpinned = filteredConfigs.filter((config) => !pinnedApiConfigs?.[config.id]) @@ -76,10 +82,7 @@ export const ApiConfigSelector = ({ ) const handleEditClick = useCallback(() => { - vscode.postMessage({ - type: "switchTab", - tab: "settings", - }) + vscode.postMessage({ type: "switchTab", tab: "settings" }) setOpen(false) }, []) @@ -112,10 +115,7 @@ export const ApiConfigSelector = ({ onClick={(e) => { e.stopPropagation() togglePinnedApiConfig(config.id) - vscode.postMessage({ - type: "toggleApiConfigPin", - text: config.id, - }) + vscode.postMessage({ type: "toggleApiConfigPin", text: config.id }) }} className={cn("size-5 flex items-center justify-center", { "opacity-0 group-hover:opacity-100": !isPinned && !isCurrentConfig, @@ -131,32 +131,30 @@ export const ApiConfigSelector = ({ [value, handleSelect, t, togglePinnedApiConfig], ) - const triggerContent = ( - - - {displayName} - - ) - return ( - - {title ? {triggerContent} : triggerContent} + + + + + {displayName} + + {/* Bottom bar with buttons on left and title on right */} -
+
diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx index 4fa921f44350..4413eab33c80 100644 --- a/webview-ui/src/components/chat/ChatRow.tsx +++ b/webview-ui/src/components/chat/ChatRow.tsx @@ -1,18 +1,14 @@ import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from "react" -import { appendImages } from "@src/utils/imageUtils" -import { McpExecution } from "./McpExecution" import { useSize } from "react-use" import { useTranslation, Trans } from "react-i18next" import deepEqual from "fast-deep-equal" import { VSCodeBadge, VSCodeButton } from "@vscode/webview-ui-toolkit/react" -import type { ClineMessage } from "@roo-code/types" -import { Mode } from "@roo/modes" +import type { ClineMessage, FollowUpData, SuggestionItem } from "@roo-code/types" import { ClineApiReqInfo, ClineAskUseMcpServer, ClineSayTool } from "@roo/ExtensionMessage" import { COMMAND_OUTPUT_STRING } from "@roo/combineCommandSequences" import { safeJsonParse } from "@roo/safeJsonParse" -import { FollowUpData, SuggestionItem } from "@roo-code/types" import { useCopyToClipboard } from "@src/utils/clipboard" import { useExtensionState } from "@src/context/ExtensionStateContext" @@ -22,9 +18,6 @@ import { removeLeadingNonAlphanumeric } from "@src/utils/removeLeadingNonAlphanu import { getLanguageFromPath } from "@src/utils/getLanguageFromPath" import { Button } from "@src/components/ui" -import ChatTextArea from "./ChatTextArea" -import { MAX_IMAGES_PER_MESSAGE } from "./ChatView" - import { ToolUseBlock, ToolUseBlockHeader } from "../common/ToolUseBlock" import UpdateTodoListToolBlock from "./UpdateTodoListToolBlock" import CodeAccordian from "../common/CodeAccordian" @@ -32,6 +25,7 @@ import CodeBlock from "../common/CodeBlock" import MarkdownBlock from "../common/MarkdownBlock" import { ReasoningBlock } from "./ReasoningBlock" import Thumbnails from "../common/Thumbnails" + import McpResourceRow from "../mcp/McpResourceRow" import { Mention } from "./Mention" @@ -46,6 +40,7 @@ import { CommandExecutionError } from "./CommandExecutionError" import { AutoApprovedRequestLimitWarning } from "./AutoApprovedRequestLimitWarning" import { CondenseContextErrorRow, CondensingContextRow, ContextCondenseRow } from "./ContextCondenseRow" import CodebaseSearchResultsDisplay from "./CodebaseSearchResultsDisplay" +import { McpExecution } from "./McpExecution" interface ChatRowProps { message: ClineMessage @@ -114,69 +109,20 @@ export const ChatRowContent = ({ editable, }: ChatRowContentProps) => { const { t } = useTranslation() - const { mcpServers, alwaysAllowMcp, currentCheckpoint, mode } = useExtensionState() + + const { mcpServers, alwaysAllowMcp, currentCheckpoint } = useExtensionState() + const [reasoningCollapsed, setReasoningCollapsed] = useState(true) const [isDiffErrorExpanded, setIsDiffErrorExpanded] = useState(false) const [showCopySuccess, setShowCopySuccess] = useState(false) - const [isEditing, setIsEditing] = useState(false) - const [editedContent, setEditedContent] = useState("") - const [editMode, setEditMode] = useState(mode || "code") - const [editImages, setEditImages] = useState([]) - const { copyWithFeedback } = useCopyToClipboard() - // Handle message events for image selection during edit mode - useEffect(() => { - const handleMessage = (event: MessageEvent) => { - const msg = event.data - if (msg.type === "selectedImages" && msg.context === "edit" && msg.messageTs === message.ts && isEditing) { - setEditImages((prevImages) => appendImages(prevImages, msg.images, MAX_IMAGES_PER_MESSAGE)) - } - } - - window.addEventListener("message", handleMessage) - return () => window.removeEventListener("message", handleMessage) - }, [isEditing, message.ts]) + const { copyWithFeedback } = useCopyToClipboard() - // Memoized callback to prevent re-renders caused by inline arrow functions + // Memoized callback to prevent re-renders caused by inline arrow functions. const handleToggleExpand = useCallback(() => { onToggleExpand(message.ts) }, [onToggleExpand, message.ts]) - // Handle edit button click - const handleEditClick = useCallback(() => { - setIsEditing(true) - setEditedContent(message.text || "") - setEditImages(message.images || []) - setEditMode(mode || "code") - // Edit mode is now handled entirely in the frontend - // No need to notify the backend - }, [message.text, message.images, mode]) - - // Handle cancel edit - const handleCancelEdit = useCallback(() => { - setIsEditing(false) - setEditedContent(message.text || "") - setEditImages(message.images || []) - setEditMode(mode || "code") - }, [message.text, message.images, mode]) - - // Handle save edit - const handleSaveEdit = useCallback(() => { - setIsEditing(false) - // Send edited message to backend - vscode.postMessage({ - type: "submitEditedMessage", - value: message.ts, - editedMessageContent: editedContent, - images: editImages, - }) - }, [message.ts, editedContent, editImages]) - - // Handle image selection for editing - const handleSelectImages = useCallback(() => { - vscode.postMessage({ type: "selectImages", context: "edit", messageTs: message.ts }) - }, [message.ts]) - const [cost, apiReqCancelReason, apiReqStreamingFailedMessage] = useMemo(() => { if (message.text !== null && message.text !== undefined && message.say === "api_req_started") { const info = safeJsonParse(message.text) @@ -1061,58 +1007,26 @@ export const ChatRowContent = ({ case "user_feedback": return (
- {isEditing ? ( -
- +
+
+
- ) : ( -
-
- -
-
- - -
+
+
- )} - {!isEditing && message.images && message.images.length > 0 && ( +
+ + {message.images && message.images.length > 0 && ( )}
diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 5135eca2f2ca..ee2cc76ef368 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -1,15 +1,16 @@ import React, { forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react" import { useEvent } from "react-use" import DynamicTextArea from "react-textarea-autosize" +import { VolumeX, Image, WandSparkles, SendHorizontal } from "lucide-react" import { mentionRegex, mentionRegexGlobal, commandRegexGlobal, unescapeSpaces } from "@roo/context-mentions" import { WebviewMessage } from "@roo/WebviewMessage" import { Mode, getAllModes } from "@roo/modes" import { ExtensionMessage } from "@roo/ExtensionMessage" -import { vscode } from "@/utils/vscode" -import { useExtensionState } from "@/context/ExtensionStateContext" -import { useAppTranslation } from "@/i18n/TranslationContext" +import { vscode } from "@src/utils/vscode" +import { useExtensionState } from "@src/context/ExtensionStateContext" +import { useAppTranslation } from "@src/i18n/TranslationContext" import { ContextMenuOptionType, getContextMenuOptions, @@ -18,20 +19,18 @@ import { shouldShowContextMenu, SearchResult, } from "@src/utils/context-mentions" -import { convertToMentionPath } from "@/utils/path-mentions" -import { StandardTooltip } from "@/components/ui" +import { cn } from "@src/lib/utils" +import { convertToMentionPath } from "@src/utils/path-mentions" +import { StandardTooltip } from "@src/components/ui" import Thumbnails from "../common/Thumbnails" -import ModeSelector from "./ModeSelector" +import { ModeSelector } from "./ModeSelector" import { ApiConfigSelector } from "./ApiConfigSelector" import { MAX_IMAGES_PER_MESSAGE } from "./ChatView" import ContextMenu from "./ContextMenu" -import { VolumeX, Image, WandSparkles, SendHorizontal } from "lucide-react" import { IndexingStatusBadge } from "./IndexingStatusBadge" import { SlashCommandsPopover } from "./SlashCommandsPopover" -import { cn } from "@/lib/utils" import { usePromptHistory } from "./hooks/usePromptHistory" -import { EditModeControls } from "./EditModeControls" interface ChatTextAreaProps { inputValue: string @@ -48,17 +47,13 @@ interface ChatTextAreaProps { mode: Mode setMode: (value: Mode) => void modeShortcutText: string - // Edit mode props - isEditMode?: boolean - onCancel?: () => void } -const ChatTextArea = forwardRef( +export const ChatTextArea = forwardRef( ( { inputValue, setInputValue, - sendingDisabled, selectApiConfigDisabled, placeholderText, selectedImages, @@ -70,8 +65,6 @@ const ChatTextArea = forwardRef( mode, setMode, modeShortcutText, - isEditMode = false, - onCancel, }, ref, ) => { @@ -91,12 +84,12 @@ const ChatTextArea = forwardRef( commands, } = useExtensionState() - // Find the ID and display text for the currently selected API configuration + // Find the ID and display text for the currently selected API configuration. const { currentConfigId, displayName } = useMemo(() => { const currentConfig = listApiConfigMeta?.find((config) => config.name === currentApiConfigName) return { currentConfigId: currentConfig?.id || "", - displayName: currentApiConfigName || "", // Use the name directly for display + displayName: currentApiConfigName || "", // Use the name directly for display. } }, [listApiConfigMeta, currentApiConfigName]) @@ -888,7 +881,6 @@ const ChatTextArea = forwardRef( const placeholderBottomText = `\n(${t("chat:addContext")}${shouldDisableImages ? `, ${t("chat:dragFiles")}` : `, ${t("chat:dragFilesImages")}`})` - // Common mode selector handler const handleModeChange = useCallback( (value: Mode) => { setMode(value) @@ -897,261 +889,10 @@ const ChatTextArea = forwardRef( [setMode], ) - // Helper function to render mode selector - const renderModeSelector = () => ( - - ) - - // Helper function to handle API config change const handleApiConfigChange = useCallback((value: string) => { vscode.postMessage({ type: "loadApiConfigurationById", text: value }) }, []) - // Helper function to render non-edit mode controls - const renderNonEditModeControls = () => ( -
-
-
{renderModeSelector()}
- -
- -
-
- -
- {isTtsPlaying && ( - - - - )} - - - - - -
-
- ) - - // Helper function to render the text area section - const renderTextAreaSection = () => ( -
-
- { - if (typeof ref === "function") { - ref(el) - } else if (ref) { - ref.current = el - } - textAreaRef.current = el - }} - value={inputValue} - onChange={(e) => { - handleInputChange(e) - updateHighlights() - }} - onFocus={() => setIsFocused(true)} - onKeyDown={handleKeyDown} - onKeyUp={handleKeyUp} - onBlur={handleBlur} - onPaste={handlePaste} - onSelect={updateCursorPosition} - onMouseUp={updateCursorPosition} - onHeightChange={(height) => { - if (textAreaBaseHeight === undefined || height < textAreaBaseHeight) { - setTextAreaBaseHeight(height) - } - - onHeightChange?.(height) - }} - placeholder={placeholderText} - minRows={3} - maxRows={15} - autoFocus={true} - className={cn( - "w-full", - "text-vscode-input-foreground", - "font-vscode-font-family", - "text-vscode-editor-font-size", - "leading-vscode-editor-line-height", - "cursor-text", - isEditMode ? "pt-1.5 pb-10 px-2" : "py-1.5 px-2", - isFocused - ? "border border-vscode-focusBorder outline outline-vscode-focusBorder" - : isDraggingOver - ? "border-2 border-dashed border-vscode-focusBorder" - : "border border-transparent", - isDraggingOver - ? "bg-[color-mix(in_srgb,var(--vscode-input-background)_95%,var(--vscode-focusBorder))]" - : "bg-vscode-input-background", - "transition-background-color duration-150 ease-in-out", - "will-change-background-color", - "min-h-[90px]", - "box-border", - "rounded", - "resize-none", - "overflow-x-hidden", - "overflow-y-auto", - "pr-9", - "flex-none flex-grow", - "z-[2]", - "scrollbar-none", - "scrollbar-hide", - )} - onScroll={() => updateHighlights()} - /> - -
- - - -
- - {!isEditMode && ( -
- - - -
- )} - - {!inputValue && !isEditMode && ( -
- {placeholderBottomText} -
- )} -
- ) - return (
( "flex-col", "gap-1", "bg-editor-background", - isEditMode ? "px-0" : "px-1.5", + "px-1.5", "pb-1", "outline-none", "border", "border-none", - isEditMode ? "w-full" : "w-[calc(100%-16px)]", + "w-[calc(100%-16px)]", "ml-auto", "mr-auto", "box-border", @@ -1228,23 +969,168 @@ const ChatTextArea = forwardRef(
)} - {renderTextAreaSection()} -
+
+
+ { + if (typeof ref === "function") { + ref(el) + } else if (ref) { + ref.current = el + } + textAreaRef.current = el + }} + value={inputValue} + onChange={(e) => { + handleInputChange(e) + updateHighlights() + }} + onFocus={() => setIsFocused(true)} + onKeyDown={handleKeyDown} + onKeyUp={handleKeyUp} + onBlur={handleBlur} + onPaste={handlePaste} + onSelect={updateCursorPosition} + onMouseUp={updateCursorPosition} + onHeightChange={(height) => { + if (textAreaBaseHeight === undefined || height < textAreaBaseHeight) { + setTextAreaBaseHeight(height) + } + + onHeightChange?.(height) + }} + placeholder={placeholderText} + minRows={3} + maxRows={15} + autoFocus={true} + className={cn( + "w-full", + "text-vscode-input-foreground", + "font-vscode-font-family", + "text-vscode-editor-font-size", + "leading-vscode-editor-line-height", + "cursor-text", + "py-1.5 px-2", + isFocused + ? "border border-vscode-focusBorder outline outline-vscode-focusBorder" + : isDraggingOver + ? "border-2 border-dashed border-vscode-focusBorder" + : "border border-transparent", + isDraggingOver + ? "bg-[color-mix(in_srgb,var(--vscode-input-background)_95%,var(--vscode-focusBorder))]" + : "bg-vscode-input-background", + "transition-background-color duration-150 ease-in-out", + "will-change-background-color", + "min-h-[90px]", + "box-border", + "rounded", + "resize-none", + "overflow-x-hidden", + "overflow-y-auto", + "pr-9", + "flex-none flex-grow", + "z-[2]", + "scrollbar-none", + "scrollbar-hide", + )} + onScroll={() => updateHighlights()} + /> + +
+ + + +
+ +
+ + + +
- {isEditMode && ( - - )} + {!inputValue && ( +
+ {placeholderBottomText} +
+ )} +
+
{selectedImages.length > 0 && ( @@ -1259,10 +1145,81 @@ const ChatTextArea = forwardRef( /> )} - {!isEditMode && renderNonEditModeControls()} +
+
+
+ +
+
+ +
+
+
+ {isTtsPlaying && ( + + + + )} + + + + + +
+
) }, ) - -export default ChatTextArea diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 44eeb33b6614..8a93b8becc7b 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -6,6 +6,7 @@ import removeMd from "remove-markdown" import { VSCodeButton } from "@vscode/webview-ui-toolkit/react" import useSound from "use-sound" import { LRUCache } from "lru-cache" +import { useTranslation } from "react-i18next" import { useDebounceEffect } from "@src/utils/useDebounceEffect" import { appendImages } from "@src/utils/imageUtils" @@ -30,7 +31,6 @@ import { findLongestPrefixMatch, parseCommand, } from "@src/utils/command-validation" -import { useTranslation } from "react-i18next" import { useAppTranslation } from "@src/i18n/TranslationContext" import { useExtensionState } from "@src/context/ExtensionStateContext" import { useSelectedModel } from "@src/components/ui/hooks/useSelectedModel" @@ -48,7 +48,7 @@ import HistoryPreview from "../history/HistoryPreview" import Announcement from "./Announcement" import BrowserSessionRow from "./BrowserSessionRow" import ChatRow from "./ChatRow" -import ChatTextArea from "./ChatTextArea" +import { ChatTextArea } from "./ChatTextArea" import TaskHeader from "./TaskHeader" import AutoApproveMenu from "./AutoApproveMenu" import SystemPromptWarning from "./SystemPromptWarning" @@ -68,7 +68,7 @@ export interface ChatViewRef { acceptInput: () => void } -export const MAX_IMAGES_PER_MESSAGE = 20 // Anthropic limits to 20 images +export const MAX_IMAGES_PER_MESSAGE = 20 // This is the Anthropic limit. const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0 @@ -77,13 +77,16 @@ const ChatViewComponent: React.ForwardRefRenderFunction { const isMountedRef = useRef(true) + const [audioBaseUri] = useState(() => { const w = window as any return w.AUDIO_BASE_URI || "" }) + const { t } = useAppTranslation() const { t: tSettings } = useTranslation("settings") const modeShortcutText = `${isMac ? "⌘" : "Ctrl"} + . ${t("chat:forNextMode")}, ${isMac ? "⌘" : "Ctrl"} + Shift + . ${t("chat:forPreviousMode")}` + const { clineMessages: messages, currentTaskItem, @@ -121,6 +124,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction { messagesRef.current = messages }, [messages]) @@ -238,9 +242,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction { - return `${audioBaseUri}/${path}` - } + const getAudioUrl = (path: string) => `${audioBaseUri}/${path}` // Use the getAudioUrl helper function const [playNotification] = useSound(getAudioUrl("notification.wav"), soundConfig) @@ -1456,17 +1458,13 @@ const ChatViewComponent: React.ForwardRefRenderFunction { - // Update local state and notify extension to sync mode change + // Update local state and notify extension to sync mode change. setMode(modeSlug) - // Send the mode switch message - vscode.postMessage({ - type: "mode", - text: modeSlug, - }) + // Send the mode switch message. + vscode.postMessage({ type: "mode", text: modeSlug }) }, [setMode], ) @@ -1760,9 +1758,9 @@ const ChatViewComponent: React.ForwardRefRenderFunction { window.addEventListener("keydown", handleKeyDown) + return () => { window.removeEventListener("keydown", handleKeyDown) } @@ -1789,6 +1787,8 @@ const ChatViewComponent: React.ForwardRefRenderFunction = ({ setOpen(newOpen) } }}> - {children} + {children} void - modeShortcutText: string - customModes: any - customModePrompts: any - onCancel?: () => void - onSend: () => void - onSelectImages: () => void - sendingDisabled: boolean - shouldDisableImages: boolean -} - -export const EditModeControls: React.FC = ({ - mode, - onModeChange, - modeShortcutText, - customModes, - customModePrompts, - onCancel, - onSend, - onSelectImages, - sendingDisabled, - shouldDisableImages, -}) => { - const { t } = useAppTranslation() - - return ( -
-
-
- -
-
-
- - - - - - - -
-
- ) -} diff --git a/webview-ui/src/components/chat/IconButton.tsx b/webview-ui/src/components/chat/IconButton.tsx index 75d8bc4b0bb0..00210ac5b3f5 100644 --- a/webview-ui/src/components/chat/IconButton.tsx +++ b/webview-ui/src/components/chat/IconButton.tsx @@ -1,10 +1,11 @@ -import { cn } from "@/lib/utils" -import { StandardTooltip } from "@/components/ui" +import { cn } from "@src/lib/utils" +import { Button, StandardTooltip } from "@src/components/ui" interface IconButtonProps extends React.ButtonHTMLAttributes { iconClass: string title: string disabled?: boolean + tooltip?: boolean isLoading?: boolean style?: React.CSSProperties } @@ -14,39 +15,34 @@ export const IconButton: React.FC = ({ title, className, disabled, + tooltip = true, isLoading, onClick, style, ...props -}) => { - const buttonClasses = cn( - "relative inline-flex items-center justify-center", - "bg-transparent border-none p-1.5", - "rounded-md min-w-[28px] min-h-[28px]", - "text-vscode-foreground opacity-85", - "transition-all duration-150", - "hover:opacity-100 hover:bg-[rgba(255,255,255,0.03)] hover:border-[rgba(255,255,255,0.15)]", - "focus:outline-none focus-visible:ring-1 focus-visible:ring-vscode-focusBorder", - "active:bg-[rgba(255,255,255,0.1)]", - !disabled && "cursor-pointer", - disabled && - "opacity-40 cursor-not-allowed grayscale-[30%] hover:bg-transparent hover:border-[rgba(255,255,255,0.08)] active:bg-transparent", - className, - ) - - const iconClasses = cn("codicon", iconClass, isLoading && "codicon-modifier-spin") - - const button = ( - - ) - - return {button} -} + + + +) diff --git a/webview-ui/src/components/chat/IndexingStatusBadge.tsx b/webview-ui/src/components/chat/IndexingStatusBadge.tsx index 2462780b1d47..356ef29962ef 100644 --- a/webview-ui/src/components/chat/IndexingStatusBadge.tsx +++ b/webview-ui/src/components/chat/IndexingStatusBadge.tsx @@ -1,12 +1,16 @@ import React, { useState, useEffect, useMemo } from "react" import { Database } from "lucide-react" + import { cn } from "@src/lib/utils" import { vscode } from "@src/utils/vscode" import { useAppTranslation } from "@/i18n/TranslationContext" -import { useTooltip } from "@/hooks/useTooltip" + +import type { IndexingStatus, IndexingStatusUpdateMessage } from "@roo/ExtensionMessage" + import { useExtensionState } from "@src/context/ExtensionStateContext" +import { PopoverTrigger, StandardTooltip, Button } from "@src/components/ui" + import { CodeIndexPopover } from "./CodeIndexPopover" -import type { IndexingStatus, IndexingStatusUpdateMessage } from "@roo/ExtensionMessage" interface IndexingStatusBadgeProps { className?: string @@ -15,8 +19,6 @@ interface IndexingStatusBadgeProps { export const IndexingStatusBadge: React.FC = ({ className }) => { const { t } = useAppTranslation() const { cwd } = useExtensionState() - const { showTooltip, handleMouseEnter, handleMouseLeave, cleanup } = useTooltip({ delay: 300 }) - const [isHovered, setIsHovered] = useState(false) const [indexingStatus, setIndexingStatus] = useState({ systemStatus: "Standby", @@ -26,10 +28,10 @@ export const IndexingStatusBadge: React.FC = ({ classN }) useEffect(() => { - // Request initial indexing status + // Request initial indexing status. vscode.postMessage({ type: "requestIndexingStatus" }) - // Set up message listener for status updates + // Set up message listener for status updates. const handleMessage = (event: MessageEvent) => { if (event.data.type === "indexingStatusUpdate") { const status = event.data.values @@ -43,11 +45,9 @@ export const IndexingStatusBadge: React.FC = ({ classN return () => { window.removeEventListener("message", handleMessage) - cleanup() } - }, [cleanup, cwd]) + }, [cwd]) - // Calculate progress percentage with memoization const progressPercentage = useMemo( () => indexingStatus.totalItems > 0 @@ -56,8 +56,7 @@ export const IndexingStatusBadge: React.FC = ({ classN [indexingStatus.processedItems, indexingStatus.totalItems], ) - // Get tooltip text with internationalization - const getTooltipText = () => { + const tooltipText = useMemo(() => { switch (indexingStatus.systemStatus) { case "Standby": return t("chat:indexingStatus.ready") @@ -70,93 +69,44 @@ export const IndexingStatusBadge: React.FC = ({ classN default: return t("chat:indexingStatus.status") } - } - - const handleMouseEnterButton = () => { - setIsHovered(true) - handleMouseEnter() - } + }, [indexingStatus.systemStatus, progressPercentage, t]) - const handleMouseLeaveButton = () => { - setIsHovered(false) - handleMouseLeave() - } - - // Get status color classes for the badge dot - const getStatusColorClass = () => { + const statusColorClass = useMemo(() => { const statusColors = { - Standby: { - default: "bg-vscode-descriptionForeground/60", - hover: "bg-vscode-descriptionForeground/80", - }, - Indexing: { - default: "bg-yellow-500 animate-pulse", - hover: "bg-yellow-500 animate-pulse", - }, - Indexed: { - default: "bg-green-500", - hover: "bg-green-500", - }, - Error: { - default: "bg-red-500", - hover: "bg-red-500", - }, + Standby: "bg-vscode-descriptionForeground/60", + Indexing: "bg-yellow-500 animate-pulse", + Indexed: "bg-green-500", + Error: "bg-red-500", } - const colors = statusColors[indexingStatus.systemStatus as keyof typeof statusColors] || statusColors.Standby - return isHovered ? colors.hover : colors.default - } + return statusColors[indexingStatus.systemStatus as keyof typeof statusColors] || statusColors.Standby + }, [indexingStatus.systemStatus]) return ( -
- - - - {showTooltip && ( -
- {getTooltipText()} -
+ + +
- )} -
+ "relative h-7 w-7 p-0", + "text-vscode-foreground opacity-85", + "hover:opacity-100 hover:bg-[rgba(255,255,255,0.03)]", + "focus:outline-none focus-visible:ring-1 focus-visible:ring-vscode-focusBorder", + className, + )}> + + + + + + ) } diff --git a/webview-ui/src/components/chat/ModeSelector.tsx b/webview-ui/src/components/chat/ModeSelector.tsx index 93dd2f1f4fd1..2ae9279fa8e3 100644 --- a/webview-ui/src/components/chat/ModeSelector.tsx +++ b/webview-ui/src/components/chat/ModeSelector.tsx @@ -1,26 +1,28 @@ import React from "react" +import { Fzf } from "fzf" import { ChevronUp, Check, X } from "lucide-react" + +import { type ModeConfig, type CustomModePrompts, TelemetryEventName } from "@roo-code/types" + +import { type Mode, getAllModes } from "@roo/modes" + +import { vscode } from "@/utils/vscode" +import { telemetryClient } from "@/utils/TelemetryClient" import { cn } from "@/lib/utils" +import { useExtensionState } from "@/context/ExtensionStateContext" +import { useAppTranslation } from "@/i18n/TranslationContext" import { useRooPortal } from "@/components/ui/hooks/useRooPortal" import { Popover, PopoverContent, PopoverTrigger, StandardTooltip } from "@/components/ui" + import { IconButton } from "./IconButton" -import { vscode } from "@/utils/vscode" -import { useExtensionState } from "@/context/ExtensionStateContext" -import { useAppTranslation } from "@/i18n/TranslationContext" -import { Mode, getAllModes } from "@roo/modes" -import { ModeConfig, CustomModePrompts } from "@roo-code/types" -import { telemetryClient } from "@/utils/TelemetryClient" -import { TelemetryEventName } from "@roo-code/types" -import { Fzf } from "fzf" -// Minimum number of modes required to show search functionality const SEARCH_THRESHOLD = 6 interface ModeSelectorProps { value: Mode onChange: (value: Mode) => void disabled?: boolean - title?: string + title: string triggerClassName?: string modeShortcutText: string customModes?: ModeConfig[] @@ -32,7 +34,7 @@ export const ModeSelector = ({ value, onChange, disabled = false, - title = "", + title, triggerClassName = "", modeShortcutText, customModes, @@ -47,29 +49,31 @@ export const ModeSelector = ({ const { t } = useAppTranslation() const trackModeSelectorOpened = React.useCallback(() => { - // Track telemetry every time the mode selector is opened + // Track telemetry every time the mode selector is opened. telemetryClient.capture(TelemetryEventName.MODE_SELECTOR_OPENED) - // Track first-time usage for UI purposes + // Track first-time usage for UI purposes. if (!hasOpenedModeSelector) { setHasOpenedModeSelector(true) vscode.postMessage({ type: "hasOpenedModeSelector", bool: true }) } }, [hasOpenedModeSelector, setHasOpenedModeSelector]) - // Get all modes including custom modes and merge custom prompt descriptions + // Get all modes including custom modes and merge custom prompt descriptions. const modes = React.useMemo(() => { const allModes = getAllModes(customModes) + return allModes.map((mode) => ({ ...mode, description: customModePrompts?.[mode.slug]?.description ?? mode.description, })) }, [customModes, customModePrompts]) - // Find the selected mode + // Find the selected mode. const selectedMode = React.useMemo(() => modes.find((mode) => mode.slug === value), [modes, value]) - // Memoize searchable items for fuzzy search with separate name and description search + // Memoize searchable items for fuzzy search with separate name and + // description search. const nameSearchItems = React.useMemo(() => { return modes.map((mode) => ({ original: mode, @@ -84,31 +88,29 @@ export const ModeSelector = ({ })) }, [modes]) - // Create memoized Fzf instances for name and description searches - const nameFzfInstance = React.useMemo(() => { - return new Fzf(nameSearchItems, { - selector: (item) => item.searchStr, - }) - }, [nameSearchItems]) + // Create memoized Fzf instances for name and description searches. + const nameFzfInstance = React.useMemo( + () => new Fzf(nameSearchItems, { selector: (item) => item.searchStr }), + [nameSearchItems], + ) - const descriptionFzfInstance = React.useMemo(() => { - return new Fzf(descriptionSearchItems, { - selector: (item) => item.searchStr, - }) - }, [descriptionSearchItems]) + const descriptionFzfInstance = React.useMemo( + () => new Fzf(descriptionSearchItems, { selector: (item) => item.searchStr }), + [descriptionSearchItems], + ) - // Filter modes based on search value using fuzzy search with priority + // Filter modes based on search value using fuzzy search with priority. const filteredModes = React.useMemo(() => { if (!searchValue) return modes - // First search in names/slugs + // First search in names/slugs. const nameMatches = nameFzfInstance.find(searchValue) const nameMatchedModes = new Set(nameMatches.map((result) => result.item.original.slug)) - // Then search in descriptions + // Then search in descriptions. const descriptionMatches = descriptionFzfInstance.find(searchValue) - // Combine results: name matches first, then description matches + // Combine results: name matches first, then description matches. const combinedResults = [ ...nameMatches.map((result) => result.item.original), ...descriptionMatches @@ -128,7 +130,7 @@ export const ModeSelector = ({ (modeSlug: string) => { onChange(modeSlug as Mode) setOpen(false) - // Clear search after selection + // Clear search after selection. setSearchValue("") }, [onChange], @@ -138,7 +140,8 @@ export const ModeSelector = ({ (isOpen: boolean) => { if (isOpen) trackModeSelectorOpened() setOpen(isOpen) - // Clear search when closing + + // Clear search when closing. if (!isOpen) { setSearchValue("") } @@ -146,44 +149,46 @@ export const ModeSelector = ({ [trackModeSelectorOpened], ) - // Auto-focus search input when popover opens + // Auto-focus search input when popover opens. React.useEffect(() => { if (open && searchInputRef.current) { searchInputRef.current.focus() } }, [open]) - // Determine if search should be shown + // Determine if search should be shown. const showSearch = !disableSearch && modes.length > SEARCH_THRESHOLD - // Combine instruction text for tooltip + // Combine instruction text for tooltip. const instructionText = `${t("chat:modeSelector.description")} ${modeShortcutText}` - const trigger = ( - - - {selectedMode?.name || ""} - - ) - return ( - {title ? {trigger} : trigger} - + + + + {selectedMode?.name || ""} + + { - vscode.postMessage({ - type: "switchTab", - tab: "modes", - }) + vscode.postMessage({ type: "switchTab", tab: "modes" }) setOpen(false) }} /> @@ -300,5 +302,3 @@ export const ModeSelector = ({ ) } - -export default ModeSelector diff --git a/webview-ui/src/components/chat/SlashCommandsPopover.tsx b/webview-ui/src/components/chat/SlashCommandsPopover.tsx index 3a8bb8ae4367..451eefede279 100644 --- a/webview-ui/src/components/chat/SlashCommandsPopover.tsx +++ b/webview-ui/src/components/chat/SlashCommandsPopover.tsx @@ -41,26 +41,24 @@ export const SlashCommandsPopover: React.FC = ({ clas } } - const trigger = ( - - - - ) - return ( - {trigger} + + + + + { const defaultProps = { value: "config1", displayName: "Config 1", + title: "API Config", onChange: mockOnChange, listApiConfigMeta: [ { id: "config1", name: "Config 1" }, @@ -75,8 +76,8 @@ describe("ApiConfigSelector", () => { render() const trigger = screen.getByTestId("dropdown-trigger") - // Check for the icon by looking for the codicon span element - const icon = trigger.querySelector(".codicon-chevron-up") + // Check for the icon by looking for the svg element (ChevronUp from lucide-react renders as svg) + const icon = trigger.querySelector("svg") expect(icon).toBeInTheDocument() }) diff --git a/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx index c056640c2fe6..23c365ab5913 100644 --- a/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatTextArea.spec.tsx @@ -1,12 +1,11 @@ -import { render, fireEvent, screen } from "@/utils/test-utils" - import { defaultModeSlug } from "@roo/modes" +import { render, fireEvent, screen } from "@src/utils/test-utils" import { useExtensionState } from "@src/context/ExtensionStateContext" import { vscode } from "@src/utils/vscode" import * as pathMentions from "@src/utils/path-mentions" -import ChatTextArea from "../ChatTextArea" +import { ChatTextArea } from "../ChatTextArea" vi.mock("@src/utils/vscode", () => ({ vscode: { @@ -1058,54 +1057,4 @@ describe("ChatTextArea", () => { expect(apiConfigDropdown).toHaveAttribute("disabled") }) }) - describe("edit mode integration", () => { - it("should render edit mode UI when isEditMode is true", () => { - ;(useExtensionState as ReturnType).mockReturnValue({ - filePaths: [], - openedTabs: [], - taskHistory: [], - cwd: "/test/workspace", - customModes: [], - customModePrompts: {}, - }) - - render() - - // The edit mode UI should be rendered - // We can verify this by checking for the presence of elements that are unique to edit mode - const cancelButton = screen.getByRole("button", { name: /cancel/i }) - expect(cancelButton).toBeInTheDocument() - - // Should show save button instead of send button - const saveButton = screen.getByRole("button", { name: /save/i }) - expect(saveButton).toBeInTheDocument() - - // Should not show send button in edit mode - const sendButton = screen.queryByRole("button", { name: /send.*message/i }) - expect(sendButton).not.toBeInTheDocument() - }) - - it("should not render edit mode UI when isEditMode is false", () => { - ;(useExtensionState as ReturnType).mockReturnValue({ - filePaths: [], - openedTabs: [], - taskHistory: [], - cwd: "/test/workspace", - }) - - render() - - // The edit mode UI should not be rendered - const cancelButton = screen.queryByRole("button", { name: /cancel/i }) - expect(cancelButton).not.toBeInTheDocument() - - // Should show send button when not in edit mode - const sendButton = screen.getByRole("button", { name: /send.*message/i }) - expect(sendButton).toBeInTheDocument() - - // Should not show save button when not in edit mode - const saveButton = screen.queryByRole("button", { name: /save/i }) - expect(saveButton).not.toBeInTheDocument() - }) - }) }) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.keyboard-fix.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.keyboard-fix.spec.tsx index 4b23166bce33..96efb006734b 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.keyboard-fix.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.keyboard-fix.spec.tsx @@ -73,16 +73,19 @@ vi.mock("react-i18next", () => ({ })) vi.mock("../ChatTextArea", () => { + const ChatTextAreaComponent = React.forwardRef(function MockChatTextArea( + _props: any, + ref: React.ForwardedRef<{ focus: () => void }>, + ) { + React.useImperativeHandle(ref, () => ({ + focus: vi.fn(), + })) + return
+ }) + return { - default: React.forwardRef(function MockChatTextArea( - _props: any, - ref: React.ForwardedRef<{ focus: () => void }>, - ) { - React.useImperativeHandle(ref, () => ({ - focus: vi.fn(), - })) - return
- }), + default: ChatTextAreaComponent, + ChatTextArea: ChatTextAreaComponent, // Export as named export too } }) diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index 19538ef93235..adea2390b996 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -181,30 +181,33 @@ vi.mock("../ChatTextArea", () => { // eslint-disable-next-line @typescript-eslint/no-require-imports const mockReact = require("react") + const ChatTextAreaComponent = mockReact.forwardRef(function MockChatTextArea( + props: ChatTextAreaProps, + ref: React.ForwardedRef<{ focus: () => void }>, + ) { + // Use useImperativeHandle to expose the mock focus method + mockReact.useImperativeHandle(ref, () => ({ + focus: mockFocus, + })) + + return ( +
+ { + // With message queueing, onSend is always called (it handles queueing internally) + props.onSend(e.target.value) + }} + data-sending-disabled={props.sendingDisabled} + /> +
+ ) + }) + return { - default: mockReact.forwardRef(function MockChatTextArea( - props: ChatTextAreaProps, - ref: React.ForwardedRef<{ focus: () => void }>, - ) { - // Use useImperativeHandle to expose the mock focus method - React.useImperativeHandle(ref, () => ({ - focus: mockFocus, - })) - - return ( -
- { - // With message queueing, onSend is always called (it handles queueing internally) - props.onSend(e.target.value) - }} - data-sending-disabled={props.sendingDisabled} - /> -
- ) - }), + default: ChatTextAreaComponent, + ChatTextArea: ChatTextAreaComponent, // Export as named export too } }) diff --git a/webview-ui/src/components/chat/__tests__/EditModeControls.spec.tsx b/webview-ui/src/components/chat/__tests__/EditModeControls.spec.tsx deleted file mode 100644 index 2b72202b329c..000000000000 --- a/webview-ui/src/components/chat/__tests__/EditModeControls.spec.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import React from "react" -import { render, screen, fireEvent } from "@testing-library/react" -import { describe, it, expect, vi, beforeEach } from "vitest" -import { EditModeControls } from "../EditModeControls" -import { Mode } from "@roo/modes" - -// Mock the translation hook -vi.mock("@/i18n/TranslationContext", () => ({ - useAppTranslation: () => ({ - t: (key: string) => key, - }), -})) - -// Mock the UI components -vi.mock("@/components/ui", () => ({ - Button: ({ children, onClick, disabled, ...props }: any) => ( - - ), - StandardTooltip: ({ children, content }: any) =>
{children}
, -})) - -// Mock ModeSelector -vi.mock("../ModeSelector", () => ({ - default: ({ value, onChange, title }: any) => ( - - ), -})) - -describe("EditModeControls", () => { - const defaultProps = { - mode: "code" as Mode, - onModeChange: vi.fn(), - modeShortcutText: "Ctrl+M", - customModes: [], - customModePrompts: {}, - onCancel: vi.fn(), - onSend: vi.fn(), - onSelectImages: vi.fn(), - sendingDisabled: false, - shouldDisableImages: false, - } - - beforeEach(() => { - vi.clearAllMocks() - }) - - it("renders all controls correctly", () => { - render() - - // Check for mode selector - expect(screen.getByTitle("chat:selectMode")).toBeInTheDocument() - - // Check for Cancel button - expect(screen.getByText("Cancel")).toBeInTheDocument() - - // Check for image button - expect(screen.getByTitle("chat:addImages")).toBeInTheDocument() - - // Check for send button - expect(screen.getByTitle("chat:save.tooltip")).toBeInTheDocument() - }) - - it("calls onCancel when Cancel button is clicked", () => { - render() - - const cancelButton = screen.getByText("Cancel") - fireEvent.click(cancelButton) - - expect(defaultProps.onCancel).toHaveBeenCalledTimes(1) - }) - - it("calls onSend when send button is clicked", () => { - render() - - const sendButton = screen.getByLabelText("chat:save.tooltip") - fireEvent.click(sendButton) - - expect(defaultProps.onSend).toHaveBeenCalledTimes(1) - }) - - it("calls onSelectImages when image button is clicked", () => { - render() - - const imageButton = screen.getByLabelText("chat:addImages") - fireEvent.click(imageButton) - - expect(defaultProps.onSelectImages).toHaveBeenCalledTimes(1) - }) - - it("disables buttons when sendingDisabled is true", () => { - render() - - const cancelButton = screen.getByText("Cancel") - const sendButton = screen.getByLabelText("chat:save.tooltip") - - expect(cancelButton).toBeDisabled() - expect(sendButton).toBeDisabled() - }) - - it("disables image button when shouldDisableImages is true", () => { - render() - - const imageButton = screen.getByLabelText("chat:addImages") - expect(imageButton).toBeDisabled() - }) - - it("does not call onSelectImages when image button is disabled", () => { - render() - - const imageButton = screen.getByLabelText("chat:addImages") - fireEvent.click(imageButton) - - expect(defaultProps.onSelectImages).not.toHaveBeenCalled() - }) - - it("does not call onSend when send button is disabled", () => { - render() - - const sendButton = screen.getByLabelText("chat:save.tooltip") - fireEvent.click(sendButton) - - expect(defaultProps.onSend).not.toHaveBeenCalled() - }) - - it("calls onModeChange when mode is changed", () => { - render() - - const modeSelector = screen.getByTitle("chat:selectMode") - fireEvent.change(modeSelector, { target: { value: "architect" } }) - - expect(defaultProps.onModeChange).toHaveBeenCalledWith("architect") - }) -}) diff --git a/webview-ui/src/components/chat/__tests__/IndexingStatusBadge.spec.tsx b/webview-ui/src/components/chat/__tests__/IndexingStatusBadge.spec.tsx index 37eb29153074..25f92757f8b2 100644 --- a/webview-ui/src/components/chat/__tests__/IndexingStatusBadge.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/IndexingStatusBadge.spec.tsx @@ -55,16 +55,6 @@ vi.mock("@src/utils/vscode", () => ({ }, })) -// Mock the useTooltip hook -vi.mock("@/hooks/useTooltip", () => ({ - useTooltip: vi.fn(() => ({ - showTooltip: false, - handleMouseEnter: vi.fn(), - handleMouseLeave: vi.fn(), - cleanup: vi.fn(), - })), -})) - // Mock the ExtensionStateContext vi.mock("@/context/ExtensionStateContext", () => ({ useExtensionState: () => ({ diff --git a/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx index a8291688936b..e2fd310b2196 100644 --- a/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ModeSelector.spec.tsx @@ -1,11 +1,11 @@ -import React from "react" import { render, screen, fireEvent } from "@/utils/test-utils" -import { describe, test, expect, vi } from "vitest" -import ModeSelector from "../ModeSelector" -import { Mode } from "@roo/modes" -import { ModeConfig } from "@roo-code/types" -// Mock the dependencies +import type { ModeConfig } from "@roo-code/types" + +import type { Mode } from "@roo/modes" + +import { ModeSelector } from "../ModeSelector" + vi.mock("@/utils/vscode", () => ({ vscode: { postMessage: vi.fn(), @@ -35,7 +35,7 @@ vi.mock("@/utils/TelemetryClient", () => ({ }, })) -// Create a variable to control what getAllModes returns +// Create a variable to control what getAllModes returns. let mockModes: ModeConfig[] = [] vi.mock("@roo/modes", async () => { @@ -56,6 +56,7 @@ describe("ModeSelector", () => { render( { />, ) - // The component should be rendered expect(screen.getByTestId("mode-selector-trigger")).toBeInTheDocument() }) test("falls back to default description when no custom prompt", () => { - render() + render( + , + ) - // The component should be rendered expect(screen.getByTestId("mode-selector-trigger")).toBeInTheDocument() }) test("shows search bar when there are more than 6 modes", () => { - // Set up mock to return 7 modes mockModes = Array.from({ length: 7 }, (_, i) => ({ slug: `mode-${i}`, name: `Mode ${i}`, @@ -84,22 +84,28 @@ describe("ModeSelector", () => { groups: ["read", "edit"], })) - render() + render( + , + ) - // Click to open the popover + // Click to open the popover. fireEvent.click(screen.getByTestId("mode-selector-trigger")) - // Search input should be visible + // Search input should be visible. expect(screen.getByTestId("mode-search-input")).toBeInTheDocument() - // Info icon should be visible + // Info icon should be visible. expect(screen.getByText("chat:modeSelector.title")).toBeInTheDocument() const infoIcon = document.querySelector(".codicon-info") expect(infoIcon).toBeInTheDocument() }) test("shows info blurb instead of search bar when there are 6 or fewer modes", () => { - // Set up mock to return 5 modes mockModes = Array.from({ length: 5 }, (_, i) => ({ slug: `mode-${i}`, name: `Mode ${i}`, @@ -108,24 +114,30 @@ describe("ModeSelector", () => { groups: ["read", "edit"], })) - render() + render( + , + ) - // Click to open the popover + // Click to open the popover. fireEvent.click(screen.getByTestId("mode-selector-trigger")) - // Search input should NOT be visible + // Search input should NOT be visible. expect(screen.queryByTestId("mode-search-input")).not.toBeInTheDocument() - // Info blurb should be visible + // Info blurb should be visible. expect(screen.getByText(/chat:modeSelector.description/)).toBeInTheDocument() - // Info icon should NOT be visible + // Info icon should NOT be visible. const infoIcon = document.querySelector(".codicon-info") expect(infoIcon).not.toBeInTheDocument() }) test("filters modes correctly when searching", () => { - // Set up mock to return 7 modes to enable search mockModes = Array.from({ length: 7 }, (_, i) => ({ slug: `mode-${i}`, name: `Mode ${i}`, @@ -134,22 +146,28 @@ describe("ModeSelector", () => { groups: ["read", "edit"], })) - render() + render( + , + ) - // Click to open the popover + // Click to open the popover. fireEvent.click(screen.getByTestId("mode-selector-trigger")) - // Type in search + // Type in search. const searchInput = screen.getByTestId("mode-search-input") fireEvent.change(searchInput, { target: { value: "Mode 3" } }) - // Should show filtered results + // Should show filtered results. const modeItems = screen.getAllByTestId("mode-selector-item") - expect(modeItems.length).toBeLessThan(7) // Should have filtered some out + expect(modeItems.length).toBeLessThan(7) // Should have filtered some out. }) test("respects disableSearch prop even when there are more than 6 modes", () => { - // Set up mock to return 10 modes mockModes = Array.from({ length: 10 }, (_, i) => ({ slug: `mode-${i}`, name: `Mode ${i}`, @@ -159,25 +177,30 @@ describe("ModeSelector", () => { })) render( - , + , ) - // Click to open the popover + // Click to open the popover. fireEvent.click(screen.getByTestId("mode-selector-trigger")) - // Search input should NOT be visible even with 10 modes + // Search input should NOT be visible even with 10 modes. expect(screen.queryByTestId("mode-search-input")).not.toBeInTheDocument() - // Info blurb should be visible instead + // Info blurb should be visible instead. expect(screen.getByText(/chat:modeSelector.description/)).toBeInTheDocument() - // Info icon should NOT be visible + // Info icon should NOT be visible. const infoIcon = document.querySelector(".codicon-info") expect(infoIcon).not.toBeInTheDocument() }) test("shows search when disableSearch is false (default) and modes > 6", () => { - // Set up mock to return 8 modes mockModes = Array.from({ length: 8 }, (_, i) => ({ slug: `mode-${i}`, name: `Mode ${i}`, @@ -186,16 +209,20 @@ describe("ModeSelector", () => { groups: ["read", "edit"], })) - // Don't pass disableSearch prop (should default to false) - render() + // Don't pass disableSearch prop (should default to false). + render( + , + ) - // Click to open the popover fireEvent.click(screen.getByTestId("mode-selector-trigger")) - // Search input should be visible expect(screen.getByTestId("mode-search-input")).toBeInTheDocument() - // Info icon should be visible const infoIcon = document.querySelector(".codicon-info") expect(infoIcon).toBeInTheDocument() }) diff --git a/webview-ui/src/components/common/TelemetryBanner.tsx b/webview-ui/src/components/common/TelemetryBanner.tsx index 63eb262b05e5..4fcd7fa170af 100644 --- a/webview-ui/src/components/common/TelemetryBanner.tsx +++ b/webview-ui/src/components/common/TelemetryBanner.tsx @@ -3,7 +3,7 @@ import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react" import styled from "styled-components" import { Trans } from "react-i18next" -import { TelemetrySetting } from "@roo/TelemetrySetting" +import type { TelemetrySetting } from "@roo-code/types" import { vscode } from "@src/utils/vscode" import { useAppTranslation } from "@src/i18n/TranslationContext" diff --git a/webview-ui/src/components/settings/About.tsx b/webview-ui/src/components/settings/About.tsx index 5075643e6e1c..c25a1aebe382 100644 --- a/webview-ui/src/components/settings/About.tsx +++ b/webview-ui/src/components/settings/About.tsx @@ -2,11 +2,11 @@ import { HTMLAttributes } from "react" import { useAppTranslation } from "@/i18n/TranslationContext" import { Trans } from "react-i18next" import { Info, Download, Upload, TriangleAlert } from "lucide-react" - import { VSCodeCheckbox, VSCodeLink } from "@vscode/webview-ui-toolkit/react" +import type { TelemetrySetting } from "@roo-code/types" + import { Package } from "@roo/package" -import { TelemetrySetting } from "@roo/TelemetrySetting" import { vscode } from "@/utils/vscode" import { cn } from "@/lib/utils" diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 2738b82632d6..4d55bc69c18c 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -25,11 +25,10 @@ import { LucideIcon, } from "lucide-react" -import type { ProviderSettings, ExperimentId } from "@roo-code/types" - -import { TelemetrySetting } from "@roo/TelemetrySetting" +import type { ProviderSettings, ExperimentId, TelemetrySetting } from "@roo-code/types" import { vscode } from "@src/utils/vscode" +import { cn } from "@src/lib/utils" import { useAppTranslation } from "@src/i18n/TranslationContext" import { ExtensionStateContextType, useExtensionState } from "@src/context/ExtensionStateContext" import { @@ -65,7 +64,6 @@ import { LanguageSettings } from "./LanguageSettings" import { About } from "./About" import { Section } from "./Section" import PromptsSettings from "./PromptsSettings" -import { cn } from "@/lib/utils" export const settingsTabsContainer = "flex flex-1 overflow-hidden [&.narrow_.tab-label]:hidden" export const settingsTabList = diff --git a/webview-ui/src/components/ui/standard-tooltip.tsx b/webview-ui/src/components/ui/standard-tooltip.tsx index 7dc4fffd67a1..a2b05386e662 100644 --- a/webview-ui/src/components/ui/standard-tooltip.tsx +++ b/webview-ui/src/components/ui/standard-tooltip.tsx @@ -1,13 +1,14 @@ -import * as React from "react" +import { ReactNode } from "react" + import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip" export const STANDARD_TOOLTIP_DELAY = 300 interface StandardTooltipProps { /** The element(s) that trigger the tooltip */ - children: React.ReactNode + children: ReactNode /** The content to display in the tooltip */ - content: React.ReactNode + content: ReactNode /** The preferred side of the trigger to render the tooltip */ side?: "top" | "right" | "bottom" | "left" /** The preferred alignment against the trigger */ @@ -51,7 +52,7 @@ export function StandardTooltip({ asChild = true, maxWidth, }: StandardTooltipProps) { - // Don't render tooltip if content is empty or only whitespace + // Don't render tooltip if content is empty or only whitespace. if (!content || (typeof content === "string" && !content.trim())) { return <>{children} } diff --git a/webview-ui/src/components/ui/tooltip.tsx b/webview-ui/src/components/ui/tooltip.tsx index d09d8cec9d07..7e0573b29386 100644 --- a/webview-ui/src/components/ui/tooltip.tsx +++ b/webview-ui/src/components/ui/tooltip.tsx @@ -1,33 +1,44 @@ +"use client" + import * as React from "react" import * as TooltipPrimitive from "@radix-ui/react-tooltip" import { cn } from "@/lib/utils" -const TooltipProvider = TooltipPrimitive.Provider +function TooltipProvider({ delayDuration = 0, ...props }: React.ComponentProps) { + return +} -const Tooltip = TooltipPrimitive.Root +function Tooltip({ ...props }: React.ComponentProps) { + return +} -const TooltipTrigger = TooltipPrimitive.Trigger +function TooltipTrigger({ ...props }: React.ComponentProps) { + return +} -const TooltipContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)) -TooltipContent.displayName = TooltipPrimitive.Content.displayName +function TooltipContent({ + className, + sideOffset = 0, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + ) +} export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index e632b27a3107..e308ed5e64ed 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -7,10 +7,10 @@ import { type ModeConfig, type ExperimentId, type TodoItem, + type TelemetrySetting, } from "@roo-code/types" import { type OrganizationAllowList, ORGANIZATION_ALLOW_ALL } from "@roo/cloud" - import { ExtensionMessage, ExtensionState, MarketplaceInstalledMetadata, Command } from "@roo/ExtensionMessage" import { findLastIndex } from "@roo/array" import { McpServer } from "@roo/mcp" @@ -18,7 +18,6 @@ import { checkExistKey } from "@roo/checkExistApiConfig" import { Mode, defaultModeSlug, defaultPrompts } from "@roo/modes" import { CustomSupportPrompts } from "@roo/support-prompt" import { experimentDefault } from "@roo/experiments" -import { TelemetrySetting } from "@roo/TelemetrySetting" import { RouterModels } from "@roo/api" import { vscode } from "@src/utils/vscode" diff --git a/webview-ui/src/hooks/useTooltip.ts b/webview-ui/src/hooks/useTooltip.ts deleted file mode 100644 index f098017acf1c..000000000000 --- a/webview-ui/src/hooks/useTooltip.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { useState, useCallback, useRef } from "react" - -interface UseTooltipOptions { - delay?: number -} - -export const useTooltip = (options: UseTooltipOptions = {}) => { - const { delay = 300 } = options - const [showTooltip, setShowTooltip] = useState(false) - const timeoutRef = useRef(null) - - const handleMouseEnter = useCallback(() => { - if (timeoutRef.current) clearTimeout(timeoutRef.current) - timeoutRef.current = setTimeout(() => setShowTooltip(true), delay) - }, [delay]) - - const handleMouseLeave = useCallback(() => { - if (timeoutRef.current) { - clearTimeout(timeoutRef.current) - timeoutRef.current = null - } - setShowTooltip(false) - }, []) - - // Cleanup on unmount - const cleanup = useCallback(() => { - if (timeoutRef.current) { - clearTimeout(timeoutRef.current) - timeoutRef.current = null - } - }, []) - - return { - showTooltip, - handleMouseEnter, - handleMouseLeave, - cleanup, - } -} diff --git a/webview-ui/src/index.css b/webview-ui/src/index.css index fbb362ca8f58..7448fc1f0fa8 100644 --- a/webview-ui/src/index.css +++ b/webview-ui/src/index.css @@ -76,6 +76,7 @@ --color-vscode-button-background: var(--vscode-button-background); --color-vscode-button-secondaryForeground: var(--vscode-button-secondaryForeground); --color-vscode-button-secondaryBackground: var(--vscode-button-secondaryBackground); + --color-vscode-button-hoverBackground: var(--vscode-button-hoverBackground); --color-vscode-dropdown-foreground: var(--vscode-dropdown-foreground); --color-vscode-dropdown-background: var(--vscode-dropdown-background); @@ -107,6 +108,7 @@ --color-vscode-list-activeSelectionForeground: var(--vscode-list-activeSelectionForeground); --color-vscode-toolbar-hoverBackground: var(--vscode-toolbar-hoverBackground); + --color-vscode-toolbar-hoverOutline: var(--vscode-toolbar-hoverOutline); --color-vscode-panel-border: var(--vscode-panel-border); @@ -129,9 +131,14 @@ --color-vscode-inputValidation-infoBorder: var(--vscode-inputValidation-infoBorder); --color-vscode-widget-border: var(--vscode-widget-border); + --color-vscode-textLink-foreground: var(--vscode-textLink-foreground); + --color-vscode-textCodeBlock-background: var(--vscode-textCodeBlock-background); - --color-vscode-button-hoverBackground: var(--vscode-button-hoverBackground); + + --color-vscode-editorHoverWidget-foreground: var(--vscode-editorHoverWidget-foreground); + --color-vscode-editorHoverWidget-background: var(--vscode-editorHoverWidget-background); + --color-vscode-editorHoverWidget-border: var(--vscode-editorHoverWidget-border); } @layer base { diff --git a/webview-ui/src/utils/TelemetryClient.ts b/webview-ui/src/utils/TelemetryClient.ts index cf2bfc54a53b..dd587f51ed9d 100644 --- a/webview-ui/src/utils/TelemetryClient.ts +++ b/webview-ui/src/utils/TelemetryClient.ts @@ -1,6 +1,6 @@ import posthog from "posthog-js" -import { TelemetrySetting } from "@roo/TelemetrySetting" +import type { TelemetrySetting } from "@roo-code/types" class TelemetryClient { private static instance: TelemetryClient diff --git a/webview-ui/src/utils/test-utils.tsx b/webview-ui/src/utils/test-utils.tsx index 05560c3065f8..ad5659ec33ad 100644 --- a/webview-ui/src/utils/test-utils.tsx +++ b/webview-ui/src/utils/test-utils.tsx @@ -1,7 +1,8 @@ import React from "react" import { render, RenderOptions } from "@testing-library/react" -import { TooltipProvider } from "@/components/ui/tooltip" -import { STANDARD_TOOLTIP_DELAY } from "@/components/ui/standard-tooltip" + +import { TooltipProvider } from "@src/components/ui/tooltip" +import { STANDARD_TOOLTIP_DELAY } from "@src/components/ui/standard-tooltip" interface AllTheProvidersProps { children: React.ReactNode From 02f551cec5a289df5af5314c29c82d3b98c9f19b Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Wed, 27 Aug 2025 00:53:40 -0700 Subject: [PATCH 010/228] Update @roo-code/cloud to enable roomote control for cloud agents (#7446) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --- .gitignore | 3 + pnpm-lock.yaml | 20 +++-- src/extension.ts | 97 +++++++++++++++------ src/package.json | 3 +- webview-ui/src/components/chat/ChatView.tsx | 2 - 5 files changed, 90 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 65c201c3c257..e044fc32a7b1 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,6 @@ logs .qodo/ .vercel .roo/mcp.json + +# Qdrant +qdrant_storage/ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 905845e552e6..191d81004436 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -584,8 +584,8 @@ importers: specifier: ^1.14.0 version: 1.14.0(typescript@5.8.3) '@roo-code/cloud': - specifier: ^0.22.0 - version: 0.22.0 + specifier: ^0.24.0 + version: 0.24.0 '@roo-code/ipc': specifier: workspace:^ version: link:../packages/ipc @@ -661,6 +661,9 @@ importers: isbinaryfile: specifier: ^5.0.2 version: 5.0.4 + jwt-decode: + specifier: ^4.0.0 + version: 4.0.0 lodash.debounce: specifier: ^4.0.8 version: 4.0.8 @@ -3343,8 +3346,8 @@ packages: cpu: [x64] os: [win32] - '@roo-code/cloud@0.22.0': - resolution: {integrity: sha512-s1d4wcDYeDzcwr+YypMWDlNKL4f2osOZ3NoIlD36LCfFeMs+hnluZPS1oXX3WHtmPDC76vSzPMfwW2Ef41hEoA==} + '@roo-code/cloud@0.24.0': + resolution: {integrity: sha512-0aG1rWFQ18jCC1ZuDlBYoB+di640p7uK1pv2zNRwOJIClWRtkP84GARYPotRgtCGfiyuI4sQ0jQRdi8Hh1ClRQ==} '@roo-code/types@1.61.0': resolution: {integrity: sha512-YJdFc6aYfaZ8EN08KbWaKLehRr1dcN3G3CzDjpppb08iehSEUZMycax/ryP5/G4vl34HTdtzyHNMboDen5ElUg==} @@ -7001,6 +7004,10 @@ packages: jws@4.0.0: resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + jwt-decode@4.0.0: + resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} + engines: {node: '>=18'} + katex@0.16.22: resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} hasBin: true @@ -12725,10 +12732,11 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@roo-code/cloud@0.22.0': + '@roo-code/cloud@0.24.0': dependencies: '@roo-code/types': 1.61.0 ioredis: 5.6.1 + jwt-decode: 4.0.0 p-wait-for: 5.0.2 socket.io-client: 4.8.1 zod: 3.25.76 @@ -17002,6 +17010,8 @@ snapshots: jwa: 2.0.1 safe-buffer: 5.2.1 + jwt-decode@4.0.0: {} + katex@0.16.22: dependencies: commander: 8.3.0 diff --git a/src/extension.ts b/src/extension.ts index 6cb6ea4b0736..bd0863bd35fa 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -12,7 +12,7 @@ try { console.warn("Failed to load environment variables:", e) } -import { CloudService, ExtensionBridgeService } from "@roo-code/cloud" +import { CloudService, ExtensionBridgeService, type CloudUserInfo } from "@roo-code/cloud" import { TelemetryService, PostHogTelemetryClient } from "@roo-code/telemetry" import "./utils/path" // Necessary to have access to String.prototype.toPosix. @@ -51,6 +51,11 @@ import { initializeI18n } from "./i18n" let outputChannel: vscode.OutputChannel let extensionContext: vscode.ExtensionContext +let cloudService: CloudService | undefined + +let authStateChangedHandler: (() => void) | undefined +let settingsUpdatedHandler: (() => void) | undefined +let userInfoHandler: ((data: { userInfo: CloudUserInfo }) => Promise) | undefined // This method is called when your extension is activated. // Your extension is activated the very first time the command is executed. @@ -94,13 +99,16 @@ export async function activate(context: vscode.ExtensionContext) { const contextProxy = await ContextProxy.getInstance(context) - // Initialize code index managers for all workspace folders + // Initialize code index managers for all workspace folders. const codeIndexManagers: CodeIndexManager[] = [] + if (vscode.workspace.workspaceFolders) { for (const folder of vscode.workspace.workspaceFolders) { const manager = CodeIndexManager.getInstance(context, folder.uri.fsPath) + if (manager) { codeIndexManagers.push(manager) + try { await manager.initialize(contextProxy) } catch (error) { @@ -108,13 +116,49 @@ export async function activate(context: vscode.ExtensionContext) { `[CodeIndexManager] Error during background CodeIndexManager configuration/indexing for ${folder.uri.fsPath}: ${error.message || error}`, ) } + context.subscriptions.push(manager) } } } + // Initialize the provider *before* the Roo Code Cloud service. + const provider = new ClineProvider(context, outputChannel, "sidebar", contextProxy, mdmService) + // Initialize Roo Code Cloud service. - const cloudService = await CloudService.createInstance(context, cloudLogger) + const postStateListener = () => ClineProvider.getVisibleInstance()?.postStateToWebview() + authStateChangedHandler = postStateListener + settingsUpdatedHandler = postStateListener + + userInfoHandler = async ({ userInfo }: { userInfo: CloudUserInfo }) => { + postStateListener() + + if (!CloudService.instance.cloudAPI) { + cloudLogger("[CloudService] CloudAPI is not initialized") + return + } + + try { + const config = await CloudService.instance.cloudAPI.bridgeConfig() + + ExtensionBridgeService.handleRemoteControlState( + userInfo, + contextProxy.getValue("remoteControlEnabled"), + { ...config, provider, sessionId: vscode.env.sessionId }, + (message: string) => outputChannel.appendLine(message), + ) + } catch (error) { + cloudLogger( + `[CloudService] Failed to fetch bridgeConfig: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + + cloudService = await CloudService.createInstance(context, cloudLogger, { + "auth-state-changed": authStateChangedHandler, + "settings-updated": settingsUpdatedHandler, + "user-info": userInfoHandler, + }) try { if (cloudService.telemetryClient) { @@ -126,33 +170,10 @@ export async function activate(context: vscode.ExtensionContext) { ) } - const postStateListener = () => ClineProvider.getVisibleInstance()?.postStateToWebview() - - cloudService.on("auth-state-changed", postStateListener) - cloudService.on("settings-updated", postStateListener) - - cloudService.on("user-info", async ({ userInfo }) => { - postStateListener() - - const bridgeConfig = await cloudService.cloudAPI?.bridgeConfig().catch(() => undefined) - - if (!bridgeConfig) { - outputChannel.appendLine("[CloudService] Failed to get bridge config") - return - } - - ExtensionBridgeService.handleRemoteControlState( - userInfo, - contextProxy.getValue("remoteControlEnabled"), - { ...bridgeConfig, provider, sessionId: vscode.env.sessionId }, - (message: string) => outputChannel.appendLine(message), - ) - }) - // Add to subscriptions for proper cleanup on deactivate. context.subscriptions.push(cloudService) - const provider = new ClineProvider(context, outputChannel, "sidebar", contextProxy, mdmService) + // Finish initializing the provider. TelemetryService.instance.setProvider(provider) context.subscriptions.push( @@ -280,6 +301,28 @@ export async function activate(context: vscode.ExtensionContext) { export async function deactivate() { outputChannel.appendLine(`${Package.name} extension deactivated`) + if (cloudService && CloudService.hasInstance()) { + try { + if (authStateChangedHandler) { + CloudService.instance.off("auth-state-changed", authStateChangedHandler) + } + + if (settingsUpdatedHandler) { + CloudService.instance.off("settings-updated", settingsUpdatedHandler) + } + + if (userInfoHandler) { + CloudService.instance.off("user-info", userInfoHandler as any) + } + + outputChannel.appendLine("CloudService event handlers cleaned up") + } catch (error) { + outputChannel.appendLine( + `Failed to clean up CloudService event handlers: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + const bridgeService = ExtensionBridgeService.getInstance() if (bridgeService) { diff --git a/src/package.json b/src/package.json index 1f5154968451..64e097aed0e4 100644 --- a/src/package.json +++ b/src/package.json @@ -429,7 +429,7 @@ "@mistralai/mistralai": "^1.9.18", "@modelcontextprotocol/sdk": "^1.9.0", "@qdrant/js-client-rest": "^1.14.0", - "@roo-code/cloud": "^0.22.0", + "@roo-code/cloud": "^0.24.0", "@roo-code/ipc": "workspace:^", "@roo-code/telemetry": "workspace:^", "@roo-code/types": "workspace:^", @@ -455,6 +455,7 @@ "i18next": "^25.0.0", "ignore": "^7.0.3", "isbinaryfile": "^5.0.2", + "jwt-decode": "^4.0.0", "lodash.debounce": "^4.0.8", "mammoth": "^1.9.1", "monaco-vscode-textmate-theme-converter": "^0.1.7", diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 8a93b8becc7b..7cca453580b0 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -1787,8 +1787,6 @@ const ChatViewComponent: React.ForwardRefRenderFunction Date: Wed, 27 Aug 2025 02:43:51 -0700 Subject: [PATCH 011/228] Always set remoteControlEnabled to true for cloud agents (#7448) --- src/extension.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index bd0863bd35fa..f1f413ec3617 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -141,11 +141,20 @@ export async function activate(context: vscode.ExtensionContext) { try { const config = await CloudService.instance.cloudAPI.bridgeConfig() + const isCloudAgent = + typeof process.env.ROO_CODE_CLOUD_TOKEN === "string" && process.env.ROO_CODE_CLOUD_TOKEN.length > 0 + + cloudLogger(`[CloudService] isCloudAgent = ${isCloudAgent}, socketBridgeUrl = ${config.socketBridgeUrl}`) + ExtensionBridgeService.handleRemoteControlState( userInfo, - contextProxy.getValue("remoteControlEnabled"), - { ...config, provider, sessionId: vscode.env.sessionId }, - (message: string) => outputChannel.appendLine(message), + isCloudAgent ? true : contextProxy.getValue("remoteControlEnabled"), + { + ...config, + provider, + sessionId: vscode.env.sessionId, + }, + cloudLogger, ) } catch (error) { cloudLogger( From 46b6fdd21e82bf312c2014fbc93e529820d1ba83 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Wed, 27 Aug 2025 13:15:10 -0400 Subject: [PATCH 012/228] chore: add changeset for v3.26.1 (#7459) --- .changeset/v3.26.1.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/v3.26.1.md diff --git a/.changeset/v3.26.1.md b/.changeset/v3.26.1.md new file mode 100644 index 000000000000..aa6682da1aef --- /dev/null +++ b/.changeset/v3.26.1.md @@ -0,0 +1,8 @@ +--- +"roo-cline": patch +--- + +- Add Vercel AI Gateway provider integration (thanks @joshualipman123!) +- Enable on-disk storage for Qdrant vectors and HNSW index for improved performance (thanks @daniel-lxs!) +- Fix: Remove duplicate cache display in task header (thanks @mrubens!) +- Random chat text area cleanup for better UI experience (thanks @cte!) From faf5734bdc5c36de8b6def28e22f77a9b048a2d9 Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Wed, 27 Aug 2025 12:19:30 -0500 Subject: [PATCH 013/228] feat: show model ID in API configuration dropdown (#7423) --- packages/types/src/provider-settings.ts | 1 + src/core/config/ProviderSettingsManager.ts | 16 +++ .../src/components/chat/ApiConfigSelector.tsx | 18 ++- .../chat/__tests__/ApiConfigSelector.spec.tsx | 133 +++++++++++------- 4 files changed, 113 insertions(+), 55 deletions(-) diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index eb404f7129c3..b55dc8a8c3ad 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -81,6 +81,7 @@ export const providerSettingsEntrySchema = z.object({ id: z.string(), name: z.string(), apiProvider: providerNamesSchema.optional(), + modelId: z.string().optional(), }) export type ProviderSettingsEntry = z.infer diff --git a/src/core/config/ProviderSettingsManager.ts b/src/core/config/ProviderSettingsManager.ts index 1d2e96b9c0c6..21a7a060c1a6 100644 --- a/src/core/config/ProviderSettingsManager.ts +++ b/src/core/config/ProviderSettingsManager.ts @@ -9,6 +9,7 @@ import { isSecretStateKey, ProviderSettingsEntry, DEFAULT_CONSECUTIVE_MISTAKE_LIMIT, + getModelId, } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" @@ -274,6 +275,20 @@ export class ProviderSettingsManager { } } + /** + * Clean model ID by removing prefix before "/" + */ + private cleanModelId(modelId: string | undefined): string | undefined { + if (!modelId) return undefined + + // Check for "/" and take the part after it + if (modelId.includes("/")) { + return modelId.split("/").pop() + } + + return modelId + } + /** * List all available configs with metadata. */ @@ -286,6 +301,7 @@ export class ProviderSettingsManager { name, id: apiConfig.id || "", apiProvider: apiConfig.apiProvider, + modelId: this.cleanModelId(getModelId(apiConfig)), })) }) } catch (error) { diff --git a/webview-ui/src/components/chat/ApiConfigSelector.tsx b/webview-ui/src/components/chat/ApiConfigSelector.tsx index bf5f9612943a..cf9cd5ebff97 100644 --- a/webview-ui/src/components/chat/ApiConfigSelector.tsx +++ b/webview-ui/src/components/chat/ApiConfigSelector.tsx @@ -18,7 +18,7 @@ interface ApiConfigSelectorProps { title: string onChange: (value: string) => void triggerClassName?: string - listApiConfigMeta: Array<{ id: string; name: string }> + listApiConfigMeta: Array<{ id: string; name: string; modelId?: string }> pinnedApiConfigs?: Record togglePinnedApiConfig: (id: string) => void } @@ -87,7 +87,7 @@ export const ApiConfigSelector = ({ }, []) const renderConfigItem = useCallback( - (config: { id: string; name: string }, isPinned: boolean) => { + (config: { id: string; name: string; modelId?: string }, isPinned: boolean) => { const isCurrentConfig = config.id === value return ( @@ -100,7 +100,19 @@ export const ApiConfigSelector = ({ isCurrentConfig && "bg-vscode-list-activeSelectionBackground text-vscode-list-activeSelectionForeground", )}> - {config.name} +
+ {config.name} + {config.modelId && ( + <> + · + + {config.modelId} + + + )} +
{isCurrentConfig && (
diff --git a/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx index 75b68fa77a88..d5e9cff84813 100644 --- a/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx @@ -21,6 +21,21 @@ vi.mock("@/components/ui/hooks/useRooPortal", () => ({ useRooPortal: () => document.body, })) +// Mock the ExtensionStateContext +vi.mock("@/context/ExtensionStateContext", () => ({ + useExtensionState: () => ({ + apiConfiguration: { + apiProvider: "anthropic", + apiModelId: "claude-3-opus-20240229", + }, + }), +})) + +// Mock the getModelId function from @roo-code/types +vi.mock("@roo-code/types", () => ({ + getModelId: (config: any) => config?.apiModelId || undefined, +})) + // Mock Popover components to be testable vi.mock("@/components/ui", () => ({ Popover: ({ children, open }: any) => ( @@ -52,9 +67,9 @@ describe("ApiConfigSelector", () => { title: "API Config", onChange: mockOnChange, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, ], pinnedApiConfigs: { config1: true }, togglePinnedApiConfig: mockTogglePinnedApiConfig, @@ -120,13 +135,13 @@ describe("ApiConfigSelector", () => { const props = { ...defaultProps, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, - { id: "config4", name: "Config 4" }, - { id: "config5", name: "Config 5" }, - { id: "config6", name: "Config 6" }, - { id: "config7", name: "Config 7" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, + { id: "config4", name: "Config 4", modelId: "gpt-3.5-turbo" }, + { id: "config5", name: "Config 5", modelId: "claude-3-haiku-20240307" }, + { id: "config6", name: "Config 6", modelId: "gpt-4-turbo" }, + { id: "config7", name: "Config 7", modelId: "claude-2.1" }, ], } render() @@ -154,13 +169,13 @@ describe("ApiConfigSelector", () => { const props = { ...defaultProps, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, - { id: "config4", name: "Config 4" }, - { id: "config5", name: "Config 5" }, - { id: "config6", name: "Config 6" }, - { id: "config7", name: "Config 7" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, + { id: "config4", name: "Config 4", modelId: "gpt-3.5-turbo" }, + { id: "config5", name: "Config 5", modelId: "claude-3-haiku-20240307" }, + { id: "config6", name: "Config 6", modelId: "gpt-4-turbo" }, + { id: "config7", name: "Config 7", modelId: "claude-2.1" }, ], } render() @@ -184,13 +199,13 @@ describe("ApiConfigSelector", () => { const props = { ...defaultProps, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, - { id: "config4", name: "Config 4" }, - { id: "config5", name: "Config 5" }, - { id: "config6", name: "Config 6" }, - { id: "config7", name: "Config 7" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, + { id: "config4", name: "Config 4", modelId: "gpt-3.5-turbo" }, + { id: "config5", name: "Config 5", modelId: "claude-3-haiku-20240307" }, + { id: "config6", name: "Config 6", modelId: "gpt-4-turbo" }, + { id: "config7", name: "Config 7", modelId: "claude-2.1" }, ], } render() @@ -210,13 +225,13 @@ describe("ApiConfigSelector", () => { const props = { ...defaultProps, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, - { id: "config4", name: "Config 4" }, - { id: "config5", name: "Config 5" }, - { id: "config6", name: "Config 6" }, - { id: "config7", name: "Config 7" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, + { id: "config4", name: "Config 4", modelId: "gpt-3.5-turbo" }, + { id: "config5", name: "Config 5", modelId: "claude-3-haiku-20240307" }, + { id: "config6", name: "Config 6", modelId: "gpt-4-turbo" }, + { id: "config7", name: "Config 7", modelId: "claude-2.1" }, ], } render() @@ -263,7 +278,8 @@ describe("ApiConfigSelector", () => { const config1Elements = screen.getAllByText("Config 1") // Find the one that's in the dropdown content (not the trigger) const configInDropdown = config1Elements.find((el) => el.closest('[data-testid="popover-content"]')) - const selectedConfigRow = configInDropdown?.closest("div") + // Navigate up to find the parent row that contains both the text and the check icon + const selectedConfigRow = configInDropdown?.closest(".group") const checkIcon = selectedConfigRow?.querySelector(".codicon-check") expect(checkIcon).toBeInTheDocument() }) @@ -280,13 +296,24 @@ describe("ApiConfigSelector", () => { fireEvent.click(trigger) const content = screen.getByTestId("popover-content") - const configTexts = content.querySelectorAll(".truncate") + // Get all config items by looking for the group class + const configRows = content.querySelectorAll(".group") + + // Extract the config names from each row + const configNames: string[] = [] + configRows.forEach((row) => { + // Find the first span that's flex-shrink-0 (the profile name) + const nameElement = row.querySelector(".flex-1 span.flex-shrink-0") + if (nameElement?.textContent) { + configNames.push(nameElement.textContent) + } + }) // Pinned configs should appear first - expect(configTexts[0]).toHaveTextContent("Config 1") - expect(configTexts[1]).toHaveTextContent("Config 3") + expect(configNames[0]).toBe("Config 1") + expect(configNames[1]).toBe("Config 3") // Unpinned config should appear after separator - expect(configTexts[2]).toHaveTextContent("Config 2") + expect(configNames[2]).toBe("Config 2") }) test("toggles pin status when pin button is clicked", () => { @@ -296,8 +323,10 @@ describe("ApiConfigSelector", () => { fireEvent.click(trigger) // Find the pin button for Config 2 (unpinned) - const config2Row = screen.getByText("Config 2").closest("div") - const pinButton = config2Row?.querySelector("button") + const config2Row = screen.getByText("Config 2").closest(".group") + // Find the button with the pin icon (it's the second button, first is the row itself) + const buttons = config2Row?.querySelectorAll("button") + const pinButton = Array.from(buttons || []).find((btn) => btn.querySelector(".codicon-pin")) if (pinButton) { fireEvent.click(pinButton) @@ -332,13 +361,13 @@ describe("ApiConfigSelector", () => { const props = { ...defaultProps, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, - { id: "config4", name: "Config 4" }, - { id: "config5", name: "Config 5" }, - { id: "config6", name: "Config 6" }, - { id: "config7", name: "Config 7" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, + { id: "config4", name: "Config 4", modelId: "gpt-3.5-turbo" }, + { id: "config5", name: "Config 5", modelId: "claude-3-haiku-20240307" }, + { id: "config6", name: "Config 6", modelId: "gpt-4-turbo" }, + { id: "config7", name: "Config 7", modelId: "claude-2.1" }, ], } render() @@ -389,13 +418,13 @@ describe("ApiConfigSelector", () => { const props = { ...defaultProps, listApiConfigMeta: [ - { id: "config1", name: "Config 1" }, - { id: "config2", name: "Config 2" }, - { id: "config3", name: "Config 3" }, - { id: "config4", name: "Config 4" }, - { id: "config5", name: "Config 5" }, - { id: "config6", name: "Config 6" }, - { id: "config7", name: "Config 7" }, + { id: "config1", name: "Config 1", modelId: "claude-3-opus-20240229" }, + { id: "config2", name: "Config 2", modelId: "gpt-4" }, + { id: "config3", name: "Config 3", modelId: "claude-3-sonnet-20240229" }, + { id: "config4", name: "Config 4", modelId: "gpt-3.5-turbo" }, + { id: "config5", name: "Config 5", modelId: "claude-3-haiku-20240307" }, + { id: "config6", name: "Config 6", modelId: "gpt-4-turbo" }, + { id: "config7", name: "Config 7", modelId: "claude-2.1" }, ], } render() From 33a8573b027a0cad5dd35662a47d8940f1269074 Mon Sep 17 00:00:00 2001 From: "roomote[bot]" <219738659+roomote[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 10:27:40 -0700 Subject: [PATCH 014/228] feat: update tooltip component to match native VSCode tooltip shadow styling (#7457) Co-authored-by: Roo Code Co-authored-by: cte --- webview-ui/src/components/ui/tooltip.tsx | 1 + webview-ui/src/index.css | 1 + 2 files changed, 2 insertions(+) diff --git a/webview-ui/src/components/ui/tooltip.tsx b/webview-ui/src/components/ui/tooltip.tsx index 7e0573b29386..61349743946c 100644 --- a/webview-ui/src/components/ui/tooltip.tsx +++ b/webview-ui/src/components/ui/tooltip.tsx @@ -31,6 +31,7 @@ function TooltipContent({ className={cn( "bg-vscode-editorHoverWidget-background outline outline-vscode-editorHoverWidget-border text-vscode-editorHoverWidget-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-sm px-2 py-1 text-xs text-balance", "max-w-[300px] break-words", + "shadow-[0_2px_8px_var(--color-vscode-widget-shadow)]", className, )} {...props}> diff --git a/webview-ui/src/index.css b/webview-ui/src/index.css index 7448fc1f0fa8..ba7aeb576eea 100644 --- a/webview-ui/src/index.css +++ b/webview-ui/src/index.css @@ -131,6 +131,7 @@ --color-vscode-inputValidation-infoBorder: var(--vscode-inputValidation-infoBorder); --color-vscode-widget-border: var(--vscode-widget-border); + --color-vscode-widget-shadow: var(--vscode-widget-shadow); --color-vscode-textLink-foreground: var(--vscode-textLink-foreground); From 1ad2129964791fb7112e3562ee1b529f7360a13f Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Wed, 27 Aug 2025 13:30:19 -0400 Subject: [PATCH 015/228] Add support for Vercel embeddings (#7445) Co-authored-by: daniel-lxs --- packages/types/src/codebase-index.ts | 6 +- packages/types/src/global-settings.ts | 1 + .../providers/fetchers/vercel-ai-gateway.ts | 3 +- src/core/webview/webviewMessageHandler.ts | 10 + src/i18n/locales/ca/embeddings.json | 1 + src/i18n/locales/de/embeddings.json | 1 + src/i18n/locales/en/embeddings.json | 1 + src/i18n/locales/es/embeddings.json | 1 + src/i18n/locales/fr/embeddings.json | 1 + src/i18n/locales/hi/embeddings.json | 1 + src/i18n/locales/id/embeddings.json | 1 + src/i18n/locales/it/embeddings.json | 1 + src/i18n/locales/ja/embeddings.json | 1 + src/i18n/locales/ko/embeddings.json | 1 + src/i18n/locales/nl/embeddings.json | 1 + src/i18n/locales/pl/embeddings.json | 1 + src/i18n/locales/pt-BR/embeddings.json | 1 + src/i18n/locales/ru/embeddings.json | 1 + src/i18n/locales/tr/embeddings.json | 1 + src/i18n/locales/vi/embeddings.json | 1 + src/i18n/locales/zh-CN/embeddings.json | 1 + src/i18n/locales/zh-TW/embeddings.json | 1 + src/services/code-index/config-manager.ts | 20 ++ .../__tests__/vercel-ai-gateway.spec.ts | 176 ++++++++++++++++++ .../code-index/embedders/vercel-ai-gateway.ts | 100 ++++++++++ src/services/code-index/interfaces/config.ts | 2 + .../code-index/interfaces/embedder.ts | 2 +- src/services/code-index/interfaces/manager.ts | 2 +- src/services/code-index/service-factory.ts | 6 + src/shared/WebviewMessage.ts | 9 +- src/shared/embeddingModels.ts | 22 ++- .../src/components/chat/CodeIndexPopover.tsx | 97 +++++++++- 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/id/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 + .../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 + 50 files changed, 539 insertions(+), 7 deletions(-) create mode 100644 src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts create mode 100644 src/services/code-index/embedders/vercel-ai-gateway.ts diff --git a/packages/types/src/codebase-index.ts b/packages/types/src/codebase-index.ts index 89d5b168d782..be7778f53875 100644 --- a/packages/types/src/codebase-index.ts +++ b/packages/types/src/codebase-index.ts @@ -21,7 +21,9 @@ export const CODEBASE_INDEX_DEFAULTS = { export const codebaseIndexConfigSchema = z.object({ codebaseIndexEnabled: z.boolean().optional(), codebaseIndexQdrantUrl: z.string().optional(), - codebaseIndexEmbedderProvider: z.enum(["openai", "ollama", "openai-compatible", "gemini", "mistral"]).optional(), + codebaseIndexEmbedderProvider: z + .enum(["openai", "ollama", "openai-compatible", "gemini", "mistral", "vercel-ai-gateway"]) + .optional(), codebaseIndexEmbedderBaseUrl: z.string().optional(), codebaseIndexEmbedderModelId: z.string().optional(), codebaseIndexEmbedderModelDimension: z.number().optional(), @@ -48,6 +50,7 @@ export const codebaseIndexModelsSchema = z.object({ "openai-compatible": z.record(z.string(), z.object({ dimension: z.number() })).optional(), gemini: z.record(z.string(), z.object({ dimension: z.number() })).optional(), mistral: z.record(z.string(), z.object({ dimension: z.number() })).optional(), + "vercel-ai-gateway": z.record(z.string(), z.object({ dimension: z.number() })).optional(), }) export type CodebaseIndexModels = z.infer @@ -64,6 +67,7 @@ export const codebaseIndexProviderSchema = z.object({ codebaseIndexOpenAiCompatibleModelDimension: z.number().optional(), codebaseIndexGeminiApiKey: z.string().optional(), codebaseIndexMistralApiKey: z.string().optional(), + codebaseIndexVercelAiGatewayApiKey: z.string().optional(), }) export type CodebaseIndexProvider = z.infer diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index 3b80bba3b2de..e8dbffb62d3c 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -192,6 +192,7 @@ export const SECRET_STATE_KEYS = [ "codebaseIndexOpenAiCompatibleApiKey", "codebaseIndexGeminiApiKey", "codebaseIndexMistralApiKey", + "codebaseIndexVercelAiGatewayApiKey", "huggingFaceApiKey", "sambaNovaApiKey", "zaiApiKey", diff --git a/src/api/providers/fetchers/vercel-ai-gateway.ts b/src/api/providers/fetchers/vercel-ai-gateway.ts index 91456819a61c..e392180d72d1 100644 --- a/src/api/providers/fetchers/vercel-ai-gateway.ts +++ b/src/api/providers/fetchers/vercel-ai-gateway.ts @@ -68,7 +68,8 @@ export async function getVercelAiGatewayModels(options?: ApiHandlerOptions): Pro for (const model of data) { const { id } = model - // Only include language models + // Only include language models for chat inference + // Embedding models are statically defined in embeddingModels.ts if (model.type !== "language") { continue } diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index a20e8e821675..4cd871b2b2f7 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -2095,6 +2095,12 @@ export const webviewMessageHandler = async ( settings.codebaseIndexMistralApiKey, ) } + if (settings.codebaseIndexVercelAiGatewayApiKey !== undefined) { + await provider.contextProxy.storeSecret( + "codebaseIndexVercelAiGatewayApiKey", + settings.codebaseIndexVercelAiGatewayApiKey, + ) + } // Send success response first - settings are saved regardless of validation await provider.postMessageToWebview({ @@ -2229,6 +2235,9 @@ export const webviewMessageHandler = async ( )) const hasGeminiApiKey = !!(await provider.context.secrets.get("codebaseIndexGeminiApiKey")) const hasMistralApiKey = !!(await provider.context.secrets.get("codebaseIndexMistralApiKey")) + const hasVercelAiGatewayApiKey = !!(await provider.context.secrets.get( + "codebaseIndexVercelAiGatewayApiKey", + )) provider.postMessageToWebview({ type: "codeIndexSecretStatus", @@ -2238,6 +2247,7 @@ export const webviewMessageHandler = async ( hasOpenAiCompatibleApiKey, hasGeminiApiKey, hasMistralApiKey, + hasVercelAiGatewayApiKey, }, }) break diff --git a/src/i18n/locales/ca/embeddings.json b/src/i18n/locales/ca/embeddings.json index 35ddca3b1045..782f92cddfdf 100644 --- a/src/i18n/locales/ca/embeddings.json +++ b/src/i18n/locales/ca/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Falta la configuració compatible amb OpenAI per crear l'embedder", "geminiConfigMissing": "Falta la configuració de Gemini per crear l'embedder", "mistralConfigMissing": "Falta la configuració de Mistral per crear l'embedder", + "vercelAiGatewayConfigMissing": "Falta la configuració de Vercel AI Gateway per crear l'embedder", "invalidEmbedderType": "Tipus d'embedder configurat no vàlid: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "No s'ha pogut determinar la dimensió del vector per al model '{{modelId}}' amb el proveïdor '{{provider}}'. Assegura't que la 'Dimensió d'incrustació' estigui configurada correctament als paràmetres del proveïdor compatible amb OpenAI.", "vectorDimensionNotDetermined": "No s'ha pogut determinar la dimensió del vector per al model '{{modelId}}' amb el proveïdor '{{provider}}'. Comprova els perfils del model o la configuració.", diff --git a/src/i18n/locales/de/embeddings.json b/src/i18n/locales/de/embeddings.json index f5aa7339efa9..239d5d3c8a09 100644 --- a/src/i18n/locales/de/embeddings.json +++ b/src/i18n/locales/de/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "OpenAI-kompatible Konfiguration fehlt für die Erstellung des Embedders", "geminiConfigMissing": "Gemini-Konfiguration fehlt für die Erstellung des Embedders", "mistralConfigMissing": "Mistral-Konfiguration fehlt für die Erstellung des Embedders", + "vercelAiGatewayConfigMissing": "Vercel AI Gateway-Konfiguration fehlt für die Erstellung des Embedders", "invalidEmbedderType": "Ungültiger Embedder-Typ konfiguriert: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Konnte die Vektordimension für Modell '{{modelId}}' mit Anbieter '{{provider}}' nicht bestimmen. Stelle sicher, dass die 'Embedding-Dimension' in den OpenAI-kompatiblen Anbietereinstellungen korrekt eingestellt ist.", "vectorDimensionNotDetermined": "Konnte die Vektordimension für Modell '{{modelId}}' mit Anbieter '{{provider}}' nicht bestimmen. Überprüfe die Modellprofile oder Konfiguration.", diff --git a/src/i18n/locales/en/embeddings.json b/src/i18n/locales/en/embeddings.json index 66465d8c35b2..fc902cadc165 100644 --- a/src/i18n/locales/en/embeddings.json +++ b/src/i18n/locales/en/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "OpenAI Compatible configuration missing for embedder creation", "geminiConfigMissing": "Gemini configuration missing for embedder creation", "mistralConfigMissing": "Mistral configuration missing for embedder creation", + "vercelAiGatewayConfigMissing": "Vercel AI Gateway configuration missing for embedder creation", "invalidEmbedderType": "Invalid embedder type configured: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Please ensure the 'Embedding Dimension' is correctly set in the OpenAI-Compatible provider settings.", "vectorDimensionNotDetermined": "Could not determine vector dimension for model '{{modelId}}' with provider '{{provider}}'. Check model profiles or configuration.", diff --git a/src/i18n/locales/es/embeddings.json b/src/i18n/locales/es/embeddings.json index 51621b6d179b..ac7522ab0147 100644 --- a/src/i18n/locales/es/embeddings.json +++ b/src/i18n/locales/es/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Falta la configuración compatible con OpenAI para crear el incrustador", "geminiConfigMissing": "Falta la configuración de Gemini para crear el incrustador", "mistralConfigMissing": "Falta la configuración de Mistral para la creación del incrustador", + "vercelAiGatewayConfigMissing": "Falta la configuración de Vercel AI Gateway para la creación del incrustador", "invalidEmbedderType": "Tipo de incrustador configurado inválido: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "No se pudo determinar la dimensión del vector para el modelo '{{modelId}}' con el proveedor '{{provider}}'. Asegúrate de que la 'Dimensión de incrustación' esté configurada correctamente en los ajustes del proveedor compatible con OpenAI.", "vectorDimensionNotDetermined": "No se pudo determinar la dimensión del vector para el modelo '{{modelId}}' con el proveedor '{{provider}}'. Verifica los perfiles del modelo o la configuración.", diff --git a/src/i18n/locales/fr/embeddings.json b/src/i18n/locales/fr/embeddings.json index e3a92272346f..e4dff2801298 100644 --- a/src/i18n/locales/fr/embeddings.json +++ b/src/i18n/locales/fr/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Configuration compatible OpenAI manquante pour la création de l'embedder", "geminiConfigMissing": "Configuration Gemini manquante pour la création de l'embedder", "mistralConfigMissing": "Configuration Mistral manquante pour la création de l'embedder", + "vercelAiGatewayConfigMissing": "Configuration Vercel AI Gateway manquante pour la création de l'embedder", "invalidEmbedderType": "Type d'embedder configuré invalide : {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Impossible de déterminer la dimension du vecteur pour le modèle '{{modelId}}' avec le fournisseur '{{provider}}'. Assure-toi que la 'Dimension d'embedding' est correctement définie dans les paramètres du fournisseur compatible OpenAI.", "vectorDimensionNotDetermined": "Impossible de déterminer la dimension du vecteur pour le modèle '{{modelId}}' avec le fournisseur '{{provider}}'. Vérifie les profils du modèle ou la configuration.", diff --git a/src/i18n/locales/hi/embeddings.json b/src/i18n/locales/hi/embeddings.json index 01563e833a3d..108d12637302 100644 --- a/src/i18n/locales/hi/embeddings.json +++ b/src/i18n/locales/hi/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "एम्बेडर बनाने के लिए OpenAI संगत कॉन्फ़िगरेशन गायब है", "geminiConfigMissing": "एम्बेडर बनाने के लिए Gemini कॉन्फ़िगरेशन गायब है", "mistralConfigMissing": "एम्बेडर निर्माण के लिए मिस्ट्रल कॉन्फ़िगरेशन गायब है", + "vercelAiGatewayConfigMissing": "एम्बेडर निर्माण के लिए Vercel AI Gateway कॉन्फ़िगरेशन गायब है", "invalidEmbedderType": "अमान्य एम्बेडर प्रकार कॉन्फ़िगर किया गया: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "प्रदाता '{{provider}}' के साथ मॉडल '{{modelId}}' के लिए वेक्टर आयाम निर्धारित नहीं कर सका। कृपया सुनिश्चित करें कि OpenAI-संगत प्रदाता सेटिंग्स में 'एम्बेडिंग आयाम' सही तरीके से सेट है।", "vectorDimensionNotDetermined": "प्रदाता '{{provider}}' के साथ मॉडल '{{modelId}}' के लिए वेक्टर आयाम निर्धारित नहीं कर सका। मॉडल प्रोफ़ाइल या कॉन्फ़िगरेशन की जांच करें।", diff --git a/src/i18n/locales/id/embeddings.json b/src/i18n/locales/id/embeddings.json index a66c1965ab6e..8c0fdd490fac 100644 --- a/src/i18n/locales/id/embeddings.json +++ b/src/i18n/locales/id/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Konfigurasi yang kompatibel dengan OpenAI tidak ada untuk membuat embedder", "geminiConfigMissing": "Konfigurasi Gemini tidak ada untuk membuat embedder", "mistralConfigMissing": "Konfigurasi Mistral hilang untuk pembuatan embedder", + "vercelAiGatewayConfigMissing": "Konfigurasi Vercel AI Gateway hilang untuk pembuatan embedder", "invalidEmbedderType": "Tipe embedder yang dikonfigurasi tidak valid: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Tidak dapat menentukan dimensi vektor untuk model '{{modelId}}' dengan penyedia '{{provider}}'. Pastikan 'Dimensi Embedding' diatur dengan benar di pengaturan penyedia yang kompatibel dengan OpenAI.", "vectorDimensionNotDetermined": "Tidak dapat menentukan dimensi vektor untuk model '{{modelId}}' dengan penyedia '{{provider}}'. Periksa profil model atau konfigurasi.", diff --git a/src/i18n/locales/it/embeddings.json b/src/i18n/locales/it/embeddings.json index d59bc2c26d0f..0ca32f906ea0 100644 --- a/src/i18n/locales/it/embeddings.json +++ b/src/i18n/locales/it/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Configurazione compatibile con OpenAI mancante per la creazione dell'embedder", "geminiConfigMissing": "Configurazione Gemini mancante per la creazione dell'embedder", "mistralConfigMissing": "Configurazione di Mistral mancante per la creazione dell'embedder", + "vercelAiGatewayConfigMissing": "Configurazione di Vercel AI Gateway mancante per la creazione dell'embedder", "invalidEmbedderType": "Tipo di embedder configurato non valido: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Impossibile determinare la dimensione del vettore per il modello '{{modelId}}' con il provider '{{provider}}'. Assicurati che la 'Dimensione di embedding' sia impostata correttamente nelle impostazioni del provider compatibile con OpenAI.", "vectorDimensionNotDetermined": "Impossibile determinare la dimensione del vettore per il modello '{{modelId}}' con il provider '{{provider}}'. Controlla i profili del modello o la configurazione.", diff --git a/src/i18n/locales/ja/embeddings.json b/src/i18n/locales/ja/embeddings.json index 799c6745fa10..a1a37ebffa31 100644 --- a/src/i18n/locales/ja/embeddings.json +++ b/src/i18n/locales/ja/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "エンベッダー作成のためのOpenAI互換設定がありません", "geminiConfigMissing": "エンベッダー作成のためのGemini設定がありません", "mistralConfigMissing": "エンベッダー作成のためのMistral設定がありません", + "vercelAiGatewayConfigMissing": "エンベッダー作成のためのVercel AI Gateway設定がありません", "invalidEmbedderType": "無効なエンベッダータイプが設定されています: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "プロバイダー '{{provider}}' のモデル '{{modelId}}' の埋め込み次元を決定できませんでした。OpenAI互換プロバイダー設定で「埋め込み次元」が正しく設定されていることを確認してください。", "vectorDimensionNotDetermined": "プロバイダー '{{provider}}' のモデル '{{modelId}}' の埋め込み次元を決定できませんでした。モデルプロファイルまたは設定を確認してください。", diff --git a/src/i18n/locales/ko/embeddings.json b/src/i18n/locales/ko/embeddings.json index 381713598201..6c81c9d7d75c 100644 --- a/src/i18n/locales/ko/embeddings.json +++ b/src/i18n/locales/ko/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "임베더 생성을 위한 OpenAI 호환 구성이 누락되었습니다", "geminiConfigMissing": "임베더 생성을 위한 Gemini 구성이 누락되었습니다", "mistralConfigMissing": "임베더 생성을 위한 Mistral 구성이 없습니다", + "vercelAiGatewayConfigMissing": "임베더 생성을 위한 Vercel AI Gateway 구성이 없습니다", "invalidEmbedderType": "잘못된 임베더 유형이 구성되었습니다: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "프로바이더 '{{provider}}'의 모델 '{{modelId}}'에 대한 벡터 차원을 결정할 수 없습니다. OpenAI 호환 프로바이더 설정에서 '임베딩 차원'이 올바르게 설정되어 있는지 확인하세요.", "vectorDimensionNotDetermined": "프로바이더 '{{provider}}'의 모델 '{{modelId}}'에 대한 벡터 차원을 결정할 수 없습니다. 모델 프로필 또는 구성을 확인하세요.", diff --git a/src/i18n/locales/nl/embeddings.json b/src/i18n/locales/nl/embeddings.json index 52d675c89019..7ae59ae02a60 100644 --- a/src/i18n/locales/nl/embeddings.json +++ b/src/i18n/locales/nl/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "OpenAI-compatibele configuratie ontbreekt voor het maken van embedder", "geminiConfigMissing": "Gemini-configuratie ontbreekt voor het maken van embedder", "mistralConfigMissing": "Mistral-configuratie ontbreekt voor het maken van de embedder", + "vercelAiGatewayConfigMissing": "Vercel AI Gateway-configuratie ontbreekt voor het maken van de embedder", "invalidEmbedderType": "Ongeldig embedder-type geconfigureerd: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Kan de vectordimensie voor model '{{modelId}}' met provider '{{provider}}' niet bepalen. Zorg ervoor dat de 'Embedding Dimensie' correct is ingesteld in de OpenAI-compatibele provider-instellingen.", "vectorDimensionNotDetermined": "Kan de vectordimensie voor model '{{modelId}}' met provider '{{provider}}' niet bepalen. Controleer modelprofielen of configuratie.", diff --git a/src/i18n/locales/pl/embeddings.json b/src/i18n/locales/pl/embeddings.json index 4d1ad0316c14..8f75d00af88f 100644 --- a/src/i18n/locales/pl/embeddings.json +++ b/src/i18n/locales/pl/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Brak konfiguracji kompatybilnej z OpenAI do utworzenia embeddera", "geminiConfigMissing": "Brak konfiguracji Gemini do utworzenia embeddera", "mistralConfigMissing": "Brak konfiguracji Mistral do utworzenia embeddera", + "vercelAiGatewayConfigMissing": "Brak konfiguracji Vercel AI Gateway do utworzenia embeddera", "invalidEmbedderType": "Skonfigurowano nieprawidłowy typ embeddera: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Nie można określić wymiaru wektora dla modelu '{{modelId}}' z dostawcą '{{provider}}'. Upewnij się, że 'Wymiar osadzania' jest poprawnie ustawiony w ustawieniach dostawcy kompatybilnego z OpenAI.", "vectorDimensionNotDetermined": "Nie można określić wymiaru wektora dla modelu '{{modelId}}' z dostawcą '{{provider}}'. Sprawdź profile modelu lub konfigurację.", diff --git a/src/i18n/locales/pt-BR/embeddings.json b/src/i18n/locales/pt-BR/embeddings.json index 875bba95dcf8..ee135ed8b526 100644 --- a/src/i18n/locales/pt-BR/embeddings.json +++ b/src/i18n/locales/pt-BR/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Configuração compatível com OpenAI ausente para criação do embedder", "geminiConfigMissing": "Configuração do Gemini ausente para criação do embedder", "mistralConfigMissing": "Configuração do Mistral ausente para a criação do embedder", + "vercelAiGatewayConfigMissing": "Configuração do Vercel AI Gateway ausente para a criação do embedder", "invalidEmbedderType": "Tipo de embedder configurado inválido: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Não foi possível determinar a dimensão do vetor para o modelo '{{modelId}}' com o provedor '{{provider}}'. Certifique-se de que a 'Dimensão de Embedding' esteja configurada corretamente nas configurações do provedor compatível com OpenAI.", "vectorDimensionNotDetermined": "Não foi possível determinar a dimensão do vetor para o modelo '{{modelId}}' com o provedor '{{provider}}'. Verifique os perfis do modelo ou a configuração.", diff --git a/src/i18n/locales/ru/embeddings.json b/src/i18n/locales/ru/embeddings.json index 80dfa9a59426..97301b32097e 100644 --- a/src/i18n/locales/ru/embeddings.json +++ b/src/i18n/locales/ru/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Отсутствует конфигурация, совместимая с OpenAI, для создания эмбеддера", "geminiConfigMissing": "Отсутствует конфигурация Gemini для создания эмбеддера", "mistralConfigMissing": "Конфигурация Mistral отсутствует для создания эмбеддера", + "vercelAiGatewayConfigMissing": "Конфигурация Vercel AI Gateway отсутствует для создания эмбеддера", "invalidEmbedderType": "Настроен недопустимый тип эмбеддера: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Не удалось определить размерность вектора для модели '{{modelId}}' с провайдером '{{provider}}'. Убедитесь, что 'Размерность эмбеддинга' правильно установлена в настройках провайдера, совместимого с OpenAI.", "vectorDimensionNotDetermined": "Не удалось определить размерность вектора для модели '{{modelId}}' с провайдером '{{provider}}'. Проверьте профили модели или конфигурацию.", diff --git a/src/i18n/locales/tr/embeddings.json b/src/i18n/locales/tr/embeddings.json index ba717b7c82c1..279fa97516a4 100644 --- a/src/i18n/locales/tr/embeddings.json +++ b/src/i18n/locales/tr/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Gömücü oluşturmak için OpenAI uyumlu yapılandırması eksik", "geminiConfigMissing": "Gömücü oluşturmak için Gemini yapılandırması eksik", "mistralConfigMissing": "Gömücü oluşturmak için Mistral yapılandırması eksik", + "vercelAiGatewayConfigMissing": "Gömücü oluşturmak için Vercel AI Gateway yapılandırması eksik", "invalidEmbedderType": "Geçersiz gömücü türü yapılandırıldı: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "'{{provider}}' sağlayıcısı ile '{{modelId}}' modeli için vektör boyutu belirlenemedi. OpenAI uyumlu sağlayıcı ayarlarında 'Gömme Boyutu'nun doğru ayarlandığından emin ol.", "vectorDimensionNotDetermined": "'{{provider}}' sağlayıcısı ile '{{modelId}}' modeli için vektör boyutu belirlenemedi. Model profillerini veya yapılandırmayı kontrol et.", diff --git a/src/i18n/locales/vi/embeddings.json b/src/i18n/locales/vi/embeddings.json index 12980b33452d..3e941aafb666 100644 --- a/src/i18n/locales/vi/embeddings.json +++ b/src/i18n/locales/vi/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "Thiếu cấu hình tương thích OpenAI để tạo embedder", "geminiConfigMissing": "Thiếu cấu hình Gemini để tạo embedder", "mistralConfigMissing": "Thiếu cấu hình Mistral để tạo trình nhúng", + "vercelAiGatewayConfigMissing": "Thiếu cấu hình Vercel AI Gateway để tạo trình nhúng", "invalidEmbedderType": "Loại embedder được cấu hình không hợp lệ: {{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "Không thể xác định kích thước vector cho mô hình '{{modelId}}' với nhà cung cấp '{{provider}}'. Hãy đảm bảo 'Kích thước Embedding' được cài đặt đúng trong cài đặt nhà cung cấp tương thích OpenAI.", "vectorDimensionNotDetermined": "Không thể xác định kích thước vector cho mô hình '{{modelId}}' với nhà cung cấp '{{provider}}'. Kiểm tra hồ sơ mô hình hoặc cấu hình.", diff --git a/src/i18n/locales/zh-CN/embeddings.json b/src/i18n/locales/zh-CN/embeddings.json index 1589689c0658..d16f7df32b20 100644 --- a/src/i18n/locales/zh-CN/embeddings.json +++ b/src/i18n/locales/zh-CN/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "创建嵌入器缺少 OpenAI 兼容配置", "geminiConfigMissing": "创建嵌入器缺少 Gemini 配置", "mistralConfigMissing": "创建嵌入器时缺少 Mistral 配置", + "vercelAiGatewayConfigMissing": "创建嵌入器时缺少 Vercel AI Gateway 配置", "invalidEmbedderType": "配置的嵌入器类型无效:{{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "无法确定提供商 '{{provider}}' 的模型 '{{modelId}}' 的向量维度。请确保在 OpenAI 兼容提供商设置中正确设置了「嵌入维度」。", "vectorDimensionNotDetermined": "无法确定提供商 '{{provider}}' 的模型 '{{modelId}}' 的向量维度。请检查模型配置文件或配置。", diff --git a/src/i18n/locales/zh-TW/embeddings.json b/src/i18n/locales/zh-TW/embeddings.json index 2dc41221f32c..044de1dac229 100644 --- a/src/i18n/locales/zh-TW/embeddings.json +++ b/src/i18n/locales/zh-TW/embeddings.json @@ -47,6 +47,7 @@ "openAiCompatibleConfigMissing": "建立嵌入器缺少 OpenAI 相容設定", "geminiConfigMissing": "建立嵌入器缺少 Gemini 設定", "mistralConfigMissing": "建立嵌入器時缺少 Mistral 設定", + "vercelAiGatewayConfigMissing": "建立嵌入器時缺少 Vercel AI Gateway 設定", "invalidEmbedderType": "設定的嵌入器類型無效:{{embedderProvider}}", "vectorDimensionNotDeterminedOpenAiCompatible": "無法確定提供商 '{{provider}}' 的模型 '{{modelId}}' 的向量維度。請確保在 OpenAI 相容提供商設定中正確設定了「嵌入維度」。", "vectorDimensionNotDetermined": "無法確定提供商 '{{provider}}' 的模型 '{{modelId}}' 的向量維度。請檢查模型設定檔或設定。", diff --git a/src/services/code-index/config-manager.ts b/src/services/code-index/config-manager.ts index 1723f1c2a085..2c0e8bb5c9e4 100644 --- a/src/services/code-index/config-manager.ts +++ b/src/services/code-index/config-manager.ts @@ -19,6 +19,7 @@ export class CodeIndexConfigManager { private openAiCompatibleOptions?: { baseUrl: string; apiKey: string } private geminiOptions?: { apiKey: string } private mistralOptions?: { apiKey: string } + private vercelAiGatewayOptions?: { apiKey: string } private qdrantUrl?: string = "http://localhost:6333" private qdrantApiKey?: string private searchMinScore?: number @@ -69,6 +70,7 @@ export class CodeIndexConfigManager { const openAiCompatibleApiKey = this.contextProxy?.getSecret("codebaseIndexOpenAiCompatibleApiKey") ?? "" const geminiApiKey = this.contextProxy?.getSecret("codebaseIndexGeminiApiKey") ?? "" const mistralApiKey = this.contextProxy?.getSecret("codebaseIndexMistralApiKey") ?? "" + const vercelAiGatewayApiKey = this.contextProxy?.getSecret("codebaseIndexVercelAiGatewayApiKey") ?? "" // Update instance variables with configuration this.codebaseIndexEnabled = codebaseIndexEnabled ?? true @@ -104,6 +106,8 @@ export class CodeIndexConfigManager { this.embedderProvider = "gemini" } else if (codebaseIndexEmbedderProvider === "mistral") { this.embedderProvider = "mistral" + } else if (codebaseIndexEmbedderProvider === "vercel-ai-gateway") { + this.embedderProvider = "vercel-ai-gateway" } else { this.embedderProvider = "openai" } @@ -124,6 +128,7 @@ export class CodeIndexConfigManager { this.geminiOptions = geminiApiKey ? { apiKey: geminiApiKey } : undefined this.mistralOptions = mistralApiKey ? { apiKey: mistralApiKey } : undefined + this.vercelAiGatewayOptions = vercelAiGatewayApiKey ? { apiKey: vercelAiGatewayApiKey } : undefined } /** @@ -141,6 +146,7 @@ export class CodeIndexConfigManager { openAiCompatibleOptions?: { baseUrl: string; apiKey: string } geminiOptions?: { apiKey: string } mistralOptions?: { apiKey: string } + vercelAiGatewayOptions?: { apiKey: string } qdrantUrl?: string qdrantApiKey?: string searchMinScore?: number @@ -160,6 +166,7 @@ export class CodeIndexConfigManager { openAiCompatibleApiKey: this.openAiCompatibleOptions?.apiKey ?? "", geminiApiKey: this.geminiOptions?.apiKey ?? "", mistralApiKey: this.mistralOptions?.apiKey ?? "", + vercelAiGatewayApiKey: this.vercelAiGatewayOptions?.apiKey ?? "", qdrantUrl: this.qdrantUrl ?? "", qdrantApiKey: this.qdrantApiKey ?? "", } @@ -184,6 +191,7 @@ export class CodeIndexConfigManager { openAiCompatibleOptions: this.openAiCompatibleOptions, geminiOptions: this.geminiOptions, mistralOptions: this.mistralOptions, + vercelAiGatewayOptions: this.vercelAiGatewayOptions, qdrantUrl: this.qdrantUrl, qdrantApiKey: this.qdrantApiKey, searchMinScore: this.currentSearchMinScore, @@ -221,6 +229,11 @@ export class CodeIndexConfigManager { const qdrantUrl = this.qdrantUrl const isConfigured = !!(apiKey && qdrantUrl) return isConfigured + } else if (this.embedderProvider === "vercel-ai-gateway") { + const apiKey = this.vercelAiGatewayOptions?.apiKey + const qdrantUrl = this.qdrantUrl + const isConfigured = !!(apiKey && qdrantUrl) + return isConfigured } return false // Should not happen if embedderProvider is always set correctly } @@ -255,6 +268,7 @@ export class CodeIndexConfigManager { const prevModelDimension = prev?.modelDimension const prevGeminiApiKey = prev?.geminiApiKey ?? "" const prevMistralApiKey = prev?.mistralApiKey ?? "" + const prevVercelAiGatewayApiKey = prev?.vercelAiGatewayApiKey ?? "" const prevQdrantUrl = prev?.qdrantUrl ?? "" const prevQdrantApiKey = prev?.qdrantApiKey ?? "" @@ -292,6 +306,7 @@ export class CodeIndexConfigManager { const currentModelDimension = this.modelDimension const currentGeminiApiKey = this.geminiOptions?.apiKey ?? "" const currentMistralApiKey = this.mistralOptions?.apiKey ?? "" + const currentVercelAiGatewayApiKey = this.vercelAiGatewayOptions?.apiKey ?? "" const currentQdrantUrl = this.qdrantUrl ?? "" const currentQdrantApiKey = this.qdrantApiKey ?? "" @@ -318,6 +333,10 @@ export class CodeIndexConfigManager { return true } + if (prevVercelAiGatewayApiKey !== currentVercelAiGatewayApiKey) { + return true + } + // Check for model dimension changes (generic for all providers) if (prevModelDimension !== currentModelDimension) { return true @@ -375,6 +394,7 @@ export class CodeIndexConfigManager { openAiCompatibleOptions: this.openAiCompatibleOptions, geminiOptions: this.geminiOptions, mistralOptions: this.mistralOptions, + vercelAiGatewayOptions: this.vercelAiGatewayOptions, qdrantUrl: this.qdrantUrl, qdrantApiKey: this.qdrantApiKey, searchMinScore: this.currentSearchMinScore, diff --git a/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts b/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts new file mode 100644 index 000000000000..0b819f9bbeb6 --- /dev/null +++ b/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts @@ -0,0 +1,176 @@ +// npx vitest run src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts + +import { describe, it, expect, vi, beforeEach } from "vitest" +import { VercelAiGatewayEmbedder } from "../vercel-ai-gateway" +import { OpenAICompatibleEmbedder } from "../openai-compatible" + +// Mock the OpenAICompatibleEmbedder +vi.mock("../openai-compatible", () => ({ + OpenAICompatibleEmbedder: vi.fn(), +})) + +// Mock the TelemetryService +vi.mock("@roo-code/telemetry", () => ({ + TelemetryService: { + instance: { + captureEvent: vi.fn(), + }, + }, +})) + +const MockedOpenAICompatibleEmbedder = vi.mocked(OpenAICompatibleEmbedder) + +describe("VercelAiGatewayEmbedder", () => { + let embedder: VercelAiGatewayEmbedder + let mockOpenAICompatibleEmbedder: any + + beforeEach(() => { + vi.clearAllMocks() + mockOpenAICompatibleEmbedder = { + createEmbeddings: vi.fn(), + validateConfiguration: vi.fn(), + } + MockedOpenAICompatibleEmbedder.mockImplementation(() => mockOpenAICompatibleEmbedder) + }) + + describe("constructor", () => { + it("should create VercelAiGatewayEmbedder with default model", () => { + // Arrange + const apiKey = "test-vercel-api-key" + + // Act + embedder = new VercelAiGatewayEmbedder(apiKey) + + // Assert + expect(MockedOpenAICompatibleEmbedder).toHaveBeenCalledWith( + "https://ai-gateway.vercel.sh/v1", + apiKey, + "openai/text-embedding-3-large", + 8191, + ) + }) + + it("should create VercelAiGatewayEmbedder with custom model", () => { + // Arrange + const apiKey = "test-vercel-api-key" + const modelId = "openai/text-embedding-3-small" + + // Act + embedder = new VercelAiGatewayEmbedder(apiKey, modelId) + + // Assert + expect(MockedOpenAICompatibleEmbedder).toHaveBeenCalledWith( + "https://ai-gateway.vercel.sh/v1", + apiKey, + "openai/text-embedding-3-small", + 8191, + ) + }) + + it("should throw error when API key is missing", () => { + // Act & Assert + expect(() => new VercelAiGatewayEmbedder("")).toThrow("validation.apiKeyRequired") + }) + }) + + describe("createEmbeddings", () => { + beforeEach(() => { + embedder = new VercelAiGatewayEmbedder("test-api-key") + }) + + it("should delegate to OpenAICompatibleEmbedder with default model", async () => { + // Arrange + const texts = ["test text 1", "test text 2"] + const expectedResponse = { + embeddings: [ + [0.1, 0.2], + [0.3, 0.4], + ], + } + mockOpenAICompatibleEmbedder.createEmbeddings.mockResolvedValue(expectedResponse) + + // Act + const result = await embedder.createEmbeddings(texts) + + // Assert + expect(mockOpenAICompatibleEmbedder.createEmbeddings).toHaveBeenCalledWith( + texts, + "openai/text-embedding-3-large", + ) + expect(result).toBe(expectedResponse) + }) + + it("should delegate to OpenAICompatibleEmbedder with custom model", async () => { + // Arrange + const texts = ["test text"] + const customModel = "google/gemini-embedding-001" + const expectedResponse = { embeddings: [[0.1, 0.2, 0.3]] } + mockOpenAICompatibleEmbedder.createEmbeddings.mockResolvedValue(expectedResponse) + + // Act + const result = await embedder.createEmbeddings(texts, customModel) + + // Assert + expect(mockOpenAICompatibleEmbedder.createEmbeddings).toHaveBeenCalledWith(texts, customModel) + expect(result).toBe(expectedResponse) + }) + + it("should handle errors from OpenAICompatibleEmbedder", async () => { + // Arrange + const texts = ["test text"] + const error = new Error("API request failed") + mockOpenAICompatibleEmbedder.createEmbeddings.mockRejectedValue(error) + + // Act & Assert + await expect(embedder.createEmbeddings(texts)).rejects.toThrow("API request failed") + expect(mockOpenAICompatibleEmbedder.createEmbeddings).toHaveBeenCalledWith( + texts, + "openai/text-embedding-3-large", + ) + }) + }) + + describe("validateConfiguration", () => { + beforeEach(() => { + embedder = new VercelAiGatewayEmbedder("test-api-key") + }) + + it("should delegate to OpenAICompatibleEmbedder", async () => { + // Arrange + const expectedResult = { valid: true } + mockOpenAICompatibleEmbedder.validateConfiguration.mockResolvedValue(expectedResult) + + // Act + const result = await embedder.validateConfiguration() + + // Assert + expect(mockOpenAICompatibleEmbedder.validateConfiguration).toHaveBeenCalled() + expect(result).toBe(expectedResult) + }) + + it("should handle validation errors", async () => { + // Arrange + const error = new Error("Validation failed") + mockOpenAICompatibleEmbedder.validateConfiguration.mockRejectedValue(error) + + // Act & Assert + await expect(embedder.validateConfiguration()).rejects.toThrow("Validation failed") + expect(mockOpenAICompatibleEmbedder.validateConfiguration).toHaveBeenCalled() + }) + }) + + describe("embedderInfo", () => { + it("should return correct embedder info", () => { + // Arrange + embedder = new VercelAiGatewayEmbedder("test-api-key") + + // Act + const info = embedder.embedderInfo + + // Assert + expect(info).toEqual({ + name: "vercel-ai-gateway", + }) + }) + }) +}) diff --git a/src/services/code-index/embedders/vercel-ai-gateway.ts b/src/services/code-index/embedders/vercel-ai-gateway.ts new file mode 100644 index 000000000000..ec0888cd8b52 --- /dev/null +++ b/src/services/code-index/embedders/vercel-ai-gateway.ts @@ -0,0 +1,100 @@ +import { OpenAICompatibleEmbedder } from "./openai-compatible" +import { IEmbedder, EmbeddingResponse, EmbedderInfo } from "../interfaces/embedder" +import { MAX_ITEM_TOKENS } from "../constants" +import { t } from "../../../i18n" +import { TelemetryEventName } from "@roo-code/types" +import { TelemetryService } from "@roo-code/telemetry" + +/** + * Vercel AI Gateway embedder implementation that wraps the OpenAI Compatible embedder + * with configuration for Vercel AI Gateway's embedding API. + * + * Supported models: + * - openai/text-embedding-3-small (dimension: 1536) + * - openai/text-embedding-3-large (dimension: 3072) + * - openai/text-embedding-ada-002 (dimension: 1536) + * - cohere/embed-v4.0 (dimension: 1024) + * - google/gemini-embedding-001 (dimension: 768) + * - google/text-embedding-005 (dimension: 768) + * - google/text-multilingual-embedding-002 (dimension: 768) + * - amazon/titan-embed-text-v2 (dimension: 1024) + * - mistral/codestral-embed (dimension: 1536) + * - mistral/mistral-embed (dimension: 1024) + */ +export class VercelAiGatewayEmbedder implements IEmbedder { + private readonly openAICompatibleEmbedder: OpenAICompatibleEmbedder + private static readonly VERCEL_AI_GATEWAY_BASE_URL = "https://ai-gateway.vercel.sh/v1" + private static readonly DEFAULT_MODEL = "openai/text-embedding-3-large" + private readonly modelId: string + + /** + * Creates a new Vercel AI Gateway embedder + * @param apiKey The Vercel AI Gateway API key for authentication + * @param modelId The model ID to use (defaults to mistral/codestral-embed) + */ + constructor(apiKey: string, modelId?: string) { + if (!apiKey) { + throw new Error(t("embeddings:validation.apiKeyRequired")) + } + + // Use provided model or default + this.modelId = modelId || VercelAiGatewayEmbedder.DEFAULT_MODEL + + // Create an OpenAI Compatible embedder with Vercel AI Gateway's configuration + this.openAICompatibleEmbedder = new OpenAICompatibleEmbedder( + VercelAiGatewayEmbedder.VERCEL_AI_GATEWAY_BASE_URL, + apiKey, + this.modelId, + MAX_ITEM_TOKENS, + ) + } + + /** + * Creates embeddings for the given texts using Vercel AI Gateway's embedding API + * @param texts Array of text strings to embed + * @param model Optional model identifier (uses constructor model if not provided) + * @returns Promise resolving to embedding response + */ + async createEmbeddings(texts: string[], model?: string): Promise { + try { + // Use the provided model or fall back to the instance's model + const modelToUse = model || this.modelId + return await this.openAICompatibleEmbedder.createEmbeddings(texts, modelToUse) + } catch (error) { + TelemetryService.instance.captureEvent(TelemetryEventName.CODE_INDEX_ERROR, { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + location: "VercelAiGatewayEmbedder:createEmbeddings", + }) + throw error + } + } + + /** + * Validates the Vercel AI Gateway embedder configuration by delegating to the underlying OpenAI-compatible embedder + * @returns Promise resolving to validation result with success status and optional error message + */ + async validateConfiguration(): Promise<{ valid: boolean; error?: string }> { + try { + // Delegate validation to the OpenAI-compatible embedder + // The error messages will be specific to Vercel AI Gateway since we're using Vercel's base URL + return await this.openAICompatibleEmbedder.validateConfiguration() + } catch (error) { + TelemetryService.instance.captureEvent(TelemetryEventName.CODE_INDEX_ERROR, { + error: error instanceof Error ? error.message : String(error), + stack: error instanceof Error ? error.stack : undefined, + location: "VercelAiGatewayEmbedder:validateConfiguration", + }) + throw error + } + } + + /** + * Returns information about this embedder + */ + get embedderInfo(): EmbedderInfo { + return { + name: "vercel-ai-gateway", + } + } +} diff --git a/src/services/code-index/interfaces/config.ts b/src/services/code-index/interfaces/config.ts index 9098a60091c5..f168e268691a 100644 --- a/src/services/code-index/interfaces/config.ts +++ b/src/services/code-index/interfaces/config.ts @@ -14,6 +14,7 @@ export interface CodeIndexConfig { openAiCompatibleOptions?: { baseUrl: string; apiKey: string } geminiOptions?: { apiKey: string } mistralOptions?: { apiKey: string } + vercelAiGatewayOptions?: { apiKey: string } qdrantUrl?: string qdrantApiKey?: string searchMinScore?: number @@ -35,6 +36,7 @@ export type PreviousConfigSnapshot = { openAiCompatibleApiKey?: string geminiApiKey?: string mistralApiKey?: string + vercelAiGatewayApiKey?: string qdrantUrl?: string qdrantApiKey?: string } diff --git a/src/services/code-index/interfaces/embedder.ts b/src/services/code-index/interfaces/embedder.ts index c5653ea2b7ec..1fcda3aca32d 100644 --- a/src/services/code-index/interfaces/embedder.ts +++ b/src/services/code-index/interfaces/embedder.ts @@ -28,7 +28,7 @@ export interface EmbeddingResponse { } } -export type AvailableEmbedders = "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" +export type AvailableEmbedders = "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" | "vercel-ai-gateway" export interface EmbedderInfo { name: AvailableEmbedders diff --git a/src/services/code-index/interfaces/manager.ts b/src/services/code-index/interfaces/manager.ts index fd3b2bfddacb..527900f6d1c7 100644 --- a/src/services/code-index/interfaces/manager.ts +++ b/src/services/code-index/interfaces/manager.ts @@ -70,7 +70,7 @@ export interface ICodeIndexManager { } export type IndexingState = "Standby" | "Indexing" | "Indexed" | "Error" -export type EmbedderProvider = "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" +export type EmbedderProvider = "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" | "vercel-ai-gateway" export interface IndexProgressUpdate { systemStatus: IndexingState diff --git a/src/services/code-index/service-factory.ts b/src/services/code-index/service-factory.ts index 5c1c36610747..409c591a6baf 100644 --- a/src/services/code-index/service-factory.ts +++ b/src/services/code-index/service-factory.ts @@ -4,6 +4,7 @@ import { CodeIndexOllamaEmbedder } from "./embedders/ollama" import { OpenAICompatibleEmbedder } from "./embedders/openai-compatible" import { GeminiEmbedder } from "./embedders/gemini" import { MistralEmbedder } from "./embedders/mistral" +import { VercelAiGatewayEmbedder } from "./embedders/vercel-ai-gateway" import { EmbedderProvider, getDefaultModelId, getModelDimension } from "../../shared/embeddingModels" import { QdrantVectorStore } from "./vector-store/qdrant-client" import { codeParser, DirectoryScanner, FileWatcher } from "./processors" @@ -71,6 +72,11 @@ export class CodeIndexServiceFactory { throw new Error(t("embeddings:serviceFactory.mistralConfigMissing")) } return new MistralEmbedder(config.mistralOptions.apiKey, config.modelId) + } else if (provider === "vercel-ai-gateway") { + if (!config.vercelAiGatewayOptions?.apiKey) { + throw new Error(t("embeddings:serviceFactory.vercelAiGatewayConfigMissing")) + } + return new VercelAiGatewayEmbedder(config.vercelAiGatewayOptions.apiKey, config.modelId) } throw new Error( diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index d8b873e40aa9..57bad0e40235 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -259,7 +259,13 @@ export interface WebviewMessage { // Global state settings codebaseIndexEnabled: boolean codebaseIndexQdrantUrl: string - codebaseIndexEmbedderProvider: "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" + codebaseIndexEmbedderProvider: + | "openai" + | "ollama" + | "openai-compatible" + | "gemini" + | "mistral" + | "vercel-ai-gateway" codebaseIndexEmbedderBaseUrl?: string codebaseIndexEmbedderModelId: string codebaseIndexEmbedderModelDimension?: number // Generic dimension for all providers @@ -273,6 +279,7 @@ export interface WebviewMessage { codebaseIndexOpenAiCompatibleApiKey?: string codebaseIndexGeminiApiKey?: string codebaseIndexMistralApiKey?: string + codebaseIndexVercelAiGatewayApiKey?: string } } diff --git a/src/shared/embeddingModels.ts b/src/shared/embeddingModels.ts index a3cd61e65938..80c51a6b4558 100644 --- a/src/shared/embeddingModels.ts +++ b/src/shared/embeddingModels.ts @@ -2,7 +2,7 @@ * Defines profiles for different embedding models, including their dimensions. */ -export type EmbedderProvider = "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" // Add other providers as needed +export type EmbedderProvider = "openai" | "ollama" | "openai-compatible" | "gemini" | "mistral" | "vercel-ai-gateway" // Add other providers as needed export interface EmbeddingModelProfile { dimension: number @@ -53,6 +53,23 @@ export const EMBEDDING_MODEL_PROFILES: EmbeddingModelProfiles = { mistral: { "codestral-embed-2505": { dimension: 1536, scoreThreshold: 0.4 }, }, + "vercel-ai-gateway": { + // OpenAI models + "openai/text-embedding-3-small": { dimension: 1536, scoreThreshold: 0.4 }, + "openai/text-embedding-3-large": { dimension: 3072, scoreThreshold: 0.4 }, + "openai/text-embedding-ada-002": { dimension: 1536, scoreThreshold: 0.4 }, + // Cohere models + "cohere/embed-v4.0": { dimension: 1024, scoreThreshold: 0.4 }, + // Google models + "google/gemini-embedding-001": { dimension: 3072, scoreThreshold: 0.4 }, + "google/text-embedding-005": { dimension: 768, scoreThreshold: 0.4 }, + "google/text-multilingual-embedding-002": { dimension: 768, scoreThreshold: 0.4 }, + // Amazon models + "amazon/titan-embed-text-v2": { dimension: 1024, scoreThreshold: 0.4 }, + // Mistral models + "mistral/codestral-embed": { dimension: 1536, scoreThreshold: 0.4 }, + "mistral/mistral-embed": { dimension: 1024, scoreThreshold: 0.4 }, + }, } /** @@ -143,6 +160,9 @@ export function getDefaultModelId(provider: EmbedderProvider): string { case "mistral": return "codestral-embed-2505" + case "vercel-ai-gateway": + return "openai/text-embedding-3-large" + default: // Fallback for unknown providers console.warn(`Unknown provider for default model ID: ${provider}. Falling back to OpenAI default.`) diff --git a/webview-ui/src/components/chat/CodeIndexPopover.tsx b/webview-ui/src/components/chat/CodeIndexPopover.tsx index 58a3e826d6bb..45bf4224a12f 100644 --- a/webview-ui/src/components/chat/CodeIndexPopover.tsx +++ b/webview-ui/src/components/chat/CodeIndexPopover.tsx @@ -72,6 +72,7 @@ interface LocalCodeIndexSettings { codebaseIndexOpenAiCompatibleApiKey?: string codebaseIndexGeminiApiKey?: string codebaseIndexMistralApiKey?: string + codebaseIndexVercelAiGatewayApiKey?: string } // Validation schema for codebase index settings @@ -138,6 +139,16 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => { .min(1, t("settings:codeIndex.validation.modelSelectionRequired")), }) + case "vercel-ai-gateway": + return baseSchema.extend({ + codebaseIndexVercelAiGatewayApiKey: z + .string() + .min(1, t("settings:codeIndex.validation.vercelAiGatewayApiKeyRequired")), + codebaseIndexEmbedderModelId: z + .string() + .min(1, t("settings:codeIndex.validation.modelSelectionRequired")), + }) + default: return baseSchema } @@ -182,6 +193,7 @@ export const CodeIndexPopover: React.FC = ({ codebaseIndexOpenAiCompatibleApiKey: "", codebaseIndexGeminiApiKey: "", codebaseIndexMistralApiKey: "", + codebaseIndexVercelAiGatewayApiKey: "", }) // Initial settings state - stores the settings when popover opens @@ -216,6 +228,7 @@ export const CodeIndexPopover: React.FC = ({ codebaseIndexOpenAiCompatibleApiKey: "", codebaseIndexGeminiApiKey: "", codebaseIndexMistralApiKey: "", + codebaseIndexVercelAiGatewayApiKey: "", } setInitialSettings(settings) setCurrentSettings(settings) @@ -324,6 +337,14 @@ export const CodeIndexPopover: React.FC = ({ if (!prev.codebaseIndexMistralApiKey || prev.codebaseIndexMistralApiKey === SECRET_PLACEHOLDER) { updated.codebaseIndexMistralApiKey = secretStatus.hasMistralApiKey ? SECRET_PLACEHOLDER : "" } + if ( + !prev.codebaseIndexVercelAiGatewayApiKey || + prev.codebaseIndexVercelAiGatewayApiKey === SECRET_PLACEHOLDER + ) { + updated.codebaseIndexVercelAiGatewayApiKey = secretStatus.hasVercelAiGatewayApiKey + ? SECRET_PLACEHOLDER + : "" + } return updated } @@ -396,7 +417,8 @@ export const CodeIndexPopover: React.FC = ({ key === "codeIndexOpenAiKey" || key === "codebaseIndexOpenAiCompatibleApiKey" || key === "codebaseIndexGeminiApiKey" || - key === "codebaseIndexMistralApiKey" + key === "codebaseIndexMistralApiKey" || + key === "codebaseIndexVercelAiGatewayApiKey" ) { dataToValidate[key] = "placeholder-valid" } @@ -644,6 +666,9 @@ export const CodeIndexPopover: React.FC = ({ {t("settings:codeIndex.mistralProvider")} + + {t("settings:codeIndex.vercelAiGatewayProvider")} +
@@ -1036,6 +1061,76 @@ export const CodeIndexPopover: React.FC = ({ )} + {currentSettings.codebaseIndexEmbedderProvider === "vercel-ai-gateway" && ( + <> +
+ + + updateSetting( + "codebaseIndexVercelAiGatewayApiKey", + e.target.value, + ) + } + placeholder={t( + "settings:codeIndex.vercelAiGatewayApiKeyPlaceholder", + )} + className={cn("w-full", { + "border-red-500": formErrors.codebaseIndexVercelAiGatewayApiKey, + })} + /> + {formErrors.codebaseIndexVercelAiGatewayApiKey && ( +

+ {formErrors.codebaseIndexVercelAiGatewayApiKey} +

+ )} +
+ +
+ + + updateSetting("codebaseIndexEmbedderModelId", e.target.value) + } + className={cn("w-full", { + "border-red-500": formErrors.codebaseIndexEmbedderModelId, + })}> + + {t("settings:codeIndex.selectModel")} + + {getAvailableModels().map((modelId) => { + const model = + codebaseIndexModels?.[ + currentSettings.codebaseIndexEmbedderProvider + ]?.[modelId] + return ( + + {modelId}{" "} + {model + ? t("settings:codeIndex.modelDimensions", { + dimension: model.dimension, + }) + : ""} + + ) + })} + + {formErrors.codebaseIndexEmbedderModelId && ( +

+ {formErrors.codebaseIndexEmbedderModelId} +

+ )} +
+ + )} + {/* Qdrant Settings */}
) + case "generateImage": + return ( + <> +
+ {tool.isProtected ? ( + + ) : ( + toolIcon("file-media") + )} + + {message.type === "ask" + ? tool.isProtected + ? t("chat:fileOperations.wantsToGenerateImageProtected") + : tool.isOutsideWorkspace + ? t("chat:fileOperations.wantsToGenerateImageOutsideWorkspace") + : t("chat:fileOperations.wantsToGenerateImage") + : t("chat:fileOperations.didGenerateImage")} + +
+ {message.type === "ask" && ( + + )} + + ) default: return null } @@ -1002,6 +1036,13 @@ export const ChatRowContent = ({ return (
+ {message.images && message.images.length > 0 && ( +
+ {message.images.map((image, index) => ( + + ))} +
+ )}
) case "user_feedback": diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx index 7cca453580b0..85840267fe1b 100644 --- a/webview-ui/src/components/chat/ChatView.tsx +++ b/webview-ui/src/components/chat/ChatView.tsx @@ -325,6 +325,7 @@ const ChatViewComponent: React.ForwardRefRenderFunction + +
+ ) +} diff --git a/webview-ui/src/components/common/ImageViewer.tsx b/webview-ui/src/components/common/ImageViewer.tsx new file mode 100644 index 000000000000..bb2f6791a4ad --- /dev/null +++ b/webview-ui/src/components/common/ImageViewer.tsx @@ -0,0 +1,240 @@ +import { useState, useCallback } from "react" +import { useCopyToClipboard } from "@src/utils/clipboard" +import { useAppTranslation } from "@src/i18n/TranslationContext" +import { vscode } from "@src/utils/vscode" +import { MermaidActionButtons } from "./MermaidActionButtons" +import { Modal } from "./Modal" +import { TabButton } from "./TabButton" +import { IconButton } from "./IconButton" +import { ZoomControls } from "./ZoomControls" +import { StandardTooltip } from "@/components/ui" + +const MIN_ZOOM = 0.5 +const MAX_ZOOM = 20 + +export interface ImageViewerProps { + imageData: string // base64 data URL or regular URL + alt?: string + path?: string + showControls?: boolean + className?: string +} + +export function ImageViewer({ + imageData, + alt = "Generated image", + path, + showControls = true, + className = "", +}: ImageViewerProps) { + const [showModal, setShowModal] = useState(false) + const [zoomLevel, setZoomLevel] = useState(1) + const [copyFeedback, setCopyFeedback] = useState(false) + const [isHovering, setIsHovering] = useState(false) + const [isDragging, setIsDragging] = useState(false) + const [dragPosition, setDragPosition] = useState({ x: 0, y: 0 }) + const { copyWithFeedback } = useCopyToClipboard() + const { t } = useAppTranslation() + + /** + * Opens a modal with the image for zooming + */ + const handleZoom = async (e: React.MouseEvent) => { + e.stopPropagation() + setShowModal(true) + setZoomLevel(1) + setDragPosition({ x: 0, y: 0 }) + } + + /** + * Copies the image path to clipboard + */ + const handleCopy = async (e: React.MouseEvent) => { + e.stopPropagation() + + try { + const textToCopy = path || imageData + await copyWithFeedback(textToCopy, e) + + // Show feedback + setCopyFeedback(true) + setTimeout(() => setCopyFeedback(false), 2000) + } catch (err) { + console.error("Error copying:", err instanceof Error ? err.message : String(err)) + } + } + + /** + * Saves the image as a file + */ + const handleSave = async (e: React.MouseEvent) => { + e.stopPropagation() + + try { + // Send message to VSCode to save the image + vscode.postMessage({ + type: "saveImage", + dataUri: imageData, + }) + } catch (error) { + console.error("Error saving image:", error) + } + } + + /** + * Opens the image in VS Code's image viewer + */ + const handleOpenInEditor = (e: React.MouseEvent) => { + e.stopPropagation() + vscode.postMessage({ + type: "openImage", + text: imageData, + }) + } + + /** + * Adjust zoom level in the modal + */ + const adjustZoom = (amount: number) => { + setZoomLevel((prev) => { + const newZoom = prev + amount + return Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, newZoom)) + }) + } + + /** + * Handle wheel event for zooming with scroll wheel + */ + const handleWheel = useCallback((e: React.WheelEvent) => { + e.preventDefault() + e.stopPropagation() + + // Determine zoom direction and amount + // Negative deltaY means scrolling up (zoom in), positive means scrolling down (zoom out) + const delta = e.deltaY > 0 ? -0.2 : 0.2 + adjustZoom(delta) + }, []) + + /** + * Handle mouse enter event for image container + */ + const handleMouseEnter = () => { + setIsHovering(true) + } + + /** + * Handle mouse leave event for image container + */ + const handleMouseLeave = () => { + setIsHovering(false) + } + + return ( + <> +
+ {alt} + {path &&
{path}
} + {showControls && isHovering && ( +
+ {}} // Not applicable for images + copyFeedback={copyFeedback} + /> +
+ )} +
+ + setShowModal(false)}> +
+
+ {}} + /> +
+ +
+ + setShowModal(false)} /> + +
+
+
+
{ + setIsDragging(true) + e.preventDefault() + }} + onMouseMove={(e) => { + if (isDragging) { + setDragPosition((prev) => ({ + x: prev.x + e.movementX / zoomLevel, + y: prev.y + e.movementY / zoomLevel, + })) + } + }} + onMouseUp={() => setIsDragging(false)} + onMouseLeave={() => setIsDragging(false)}> + {alt} +
+
+ {Math.round(zoomLevel * 100)}% +
+
+
+ + {path && ( + + + + )} + + + +
+
+ + ) +} diff --git a/webview-ui/src/components/settings/ExperimentalSettings.tsx b/webview-ui/src/components/settings/ExperimentalSettings.tsx index 53801232ecc8..4d0bb8aba6ab 100644 --- a/webview-ui/src/components/settings/ExperimentalSettings.tsx +++ b/webview-ui/src/components/settings/ExperimentalSettings.tsx @@ -12,15 +12,20 @@ import { SetExperimentEnabled } from "./types" import { SectionHeader } from "./SectionHeader" import { Section } from "./Section" import { ExperimentalFeature } from "./ExperimentalFeature" +import { ImageGenerationSettings } from "./ImageGenerationSettings" type ExperimentalSettingsProps = HTMLAttributes & { experiments: Experiments setExperimentEnabled: SetExperimentEnabled + apiConfiguration?: any + setApiConfigurationField?: any } export const ExperimentalSettings = ({ experiments, setExperimentEnabled, + apiConfiguration, + setApiConfigurationField, className, ...props }: ExperimentalSettingsProps) => { @@ -51,6 +56,19 @@ export const ExperimentalSettings = ({ /> ) } + if (config[0] === "IMAGE_GENERATION" && apiConfiguration && setApiConfigurationField) { + return ( + + setExperimentEnabled(EXPERIMENT_IDS.IMAGE_GENERATION, enabled) + } + apiConfiguration={apiConfiguration} + setApiConfigurationField={setApiConfigurationField} + /> + ) + } return ( void + apiConfiguration: ProviderSettings + setApiConfigurationField: ( + field: K, + value: ProviderSettings[K], + isUserAction?: boolean, + ) => void +} + +// Hardcoded list of image generation models +const IMAGE_GENERATION_MODELS = [ + { value: "google/gemini-2.5-flash-image-preview", label: "Gemini 2.5 Flash Image Preview" }, + // Add more models as they become available +] + +export const ImageGenerationSettings = ({ + enabled, + onChange, + apiConfiguration, + setApiConfigurationField, +}: ImageGenerationSettingsProps) => { + const { t } = useAppTranslation() + + // Get image generation settings from apiConfiguration + const imageGenerationSettings = apiConfiguration?.openRouterImageGenerationSettings || {} + const [openRouterApiKey, setOpenRouterApiKey] = useState(imageGenerationSettings.openRouterApiKey || "") + const [selectedModel, setSelectedModel] = useState( + imageGenerationSettings.selectedModel || IMAGE_GENERATION_MODELS[0].value, + ) + + // Update parent state when local state changes + useEffect(() => { + const newSettings = { + openRouterApiKey, + selectedModel, + } + setApiConfigurationField("openRouterImageGenerationSettings", newSettings) + }, [openRouterApiKey, selectedModel, setApiConfigurationField]) + + return ( +
+
+
+ onChange(e.target.checked)}> + {t("settings:experimental.IMAGE_GENERATION.name")} + +
+

+ {t("settings:experimental.IMAGE_GENERATION.description")} +

+
+ + {enabled && ( +
+ {/* API Key Configuration */} +
+ + setOpenRouterApiKey(e.target.value)} + placeholder={t("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder")} + className="w-full" + type="password" + /> +

+ {t("settings:experimental.IMAGE_GENERATION.getApiKeyText")}{" "} + + openrouter.ai/keys + +

+
+ + {/* Model Selection */} +
+ + setSelectedModel(e.target.value)} + className="w-full"> + {IMAGE_GENERATION_MODELS.map((model) => ( + + {model.label} + + ))} + +

+ {t("settings:experimental.IMAGE_GENERATION.modelSelectionDescription")} +

+
+ + {/* Status Message */} + {enabled && !openRouterApiKey && ( +
+ {t("settings:experimental.IMAGE_GENERATION.warningMissingKey")} +
+ )} + + {enabled && openRouterApiKey && ( +
+ {t("settings:experimental.IMAGE_GENERATION.successConfigured")} +
+ )} +
+ )} +
+ ) +} diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 4d55bc69c18c..682387ca2fa0 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -718,7 +718,12 @@ const SettingsView = forwardRef(({ onDone, t {/* Experimental Section */} {activeTab === "experimental" && ( - + )} {/* Language Section */} diff --git a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx index 36c197d3fc65..af3c726e2d6d 100644 --- a/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx +++ b/webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx @@ -230,6 +230,7 @@ describe("mergeExtensionState", () => { multiFileApplyDiff: true, preventFocusDisruption: false, newTaskRequireTodos: false, + imageGeneration: false, } as Record, } @@ -248,6 +249,7 @@ describe("mergeExtensionState", () => { multiFileApplyDiff: true, preventFocusDisruption: false, newTaskRequireTodos: false, + imageGeneration: false, }) }) }) diff --git a/webview-ui/src/i18n/locales/ca/chat.json b/webview-ui/src/i18n/locales/ca/chat.json index 9beddb9e276b..d56a34f7f2b3 100644 --- a/webview-ui/src/i18n/locales/ca/chat.json +++ b/webview-ui/src/i18n/locales/ca/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo vol afegir contingut al final d'aquest fitxer:", "wantsToReadAndXMore": "En Roo vol llegir aquest fitxer i {{count}} més:", "wantsToReadMultiple": "Roo vol llegir diversos fitxers:", - "wantsToApplyBatchChanges": "Roo vol aplicar canvis a múltiples fitxers:" + "wantsToApplyBatchChanges": "Roo vol aplicar canvis a múltiples fitxers:", + "wantsToGenerateImage": "Roo vol generar una imatge:", + "wantsToGenerateImageOutsideWorkspace": "Roo vol generar una imatge fora de l'espai de treball:", + "wantsToGenerateImageProtected": "Roo vol generar una imatge en una ubicació protegida:", + "didGenerateImage": "Roo ha generat una imatge:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo vol veure els fitxers de nivell superior en aquest directori:", diff --git a/webview-ui/src/i18n/locales/ca/common.json b/webview-ui/src/i18n/locales/ca/common.json index 2351c99d01bd..c056a4432876 100644 --- a/webview-ui/src/i18n/locales/ca/common.json +++ b/webview-ui/src/i18n/locales/ca/common.json @@ -48,6 +48,11 @@ "copyError": "Error copiant la imatge" } }, + "image": { + "tabs": { + "view": "Imatge" + } + }, "file": { "errors": { "invalidDataUri": "Format d'URI de dades no vàlid", diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 96972b33171c..d6cef7045d36 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -729,6 +729,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Requerir la llista 'todos' per a noves tasques", "description": "Quan estigui activat, l'eina new_task requerirà que es proporcioni un paràmetre 'todos'. Això garanteix que totes les noves tasques comencin amb una llista clara d'objectius. Quan estigui desactivat (per defecte), el paràmetre 'todos' continua sent opcional per a la compatibilitat amb versions anteriors." + }, + "IMAGE_GENERATION": { + "name": "Habilitar generació d'imatges amb IA", + "description": "Quan estigui habilitat, Roo pot generar imatges a partir de prompts de text utilitzant els models de generació d'imatges d'OpenRouter. Requereix que es configuri una clau d'API d'OpenRouter.", + "openRouterApiKeyLabel": "Clau API d'OpenRouter", + "openRouterApiKeyPlaceholder": "Introdueix la teva clau API d'OpenRouter", + "getApiKeyText": "Obté la teva clau API de", + "modelSelectionLabel": "Model de generació d'imatges", + "modelSelectionDescription": "Selecciona el model per a la generació d'imatges", + "warningMissingKey": "⚠️ La clau API d'OpenRouter és necessària per a la generació d'imatges. Si us plau, configura-la a dalt.", + "successConfigured": "✓ La generació d'imatges està configurada i llesta per utilitzar" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/de/chat.json b/webview-ui/src/i18n/locales/de/chat.json index bc0893acd05d..9f6c98ef2f7f 100644 --- a/webview-ui/src/i18n/locales/de/chat.json +++ b/webview-ui/src/i18n/locales/de/chat.json @@ -175,7 +175,11 @@ "wantsToInsertWithLineNumber": "Roo möchte Inhalte in diese Datei in Zeile {{lineNumber}} einfügen:", "wantsToInsertAtEnd": "Roo möchte Inhalte am Ende dieser Datei anhängen:", "wantsToReadMultiple": "Roo möchte mehrere Dateien lesen:", - "wantsToApplyBatchChanges": "Roo möchte Änderungen an mehreren Dateien vornehmen:" + "wantsToApplyBatchChanges": "Roo möchte Änderungen an mehreren Dateien vornehmen:", + "wantsToGenerateImage": "Roo möchte ein Bild generieren:", + "wantsToGenerateImageOutsideWorkspace": "Roo möchte ein Bild außerhalb des Arbeitsbereichs generieren:", + "wantsToGenerateImageProtected": "Roo möchte ein Bild an einem geschützten Ort generieren:", + "didGenerateImage": "Roo hat ein Bild generiert:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo möchte die Dateien auf oberster Ebene in diesem Verzeichnis anzeigen:", diff --git a/webview-ui/src/i18n/locales/de/common.json b/webview-ui/src/i18n/locales/de/common.json index 0fec0ba96490..85137922ffd0 100644 --- a/webview-ui/src/i18n/locales/de/common.json +++ b/webview-ui/src/i18n/locales/de/common.json @@ -48,6 +48,11 @@ "copyError": "Fehler beim Kopieren des Bildes" } }, + "image": { + "tabs": { + "view": "Bild" + } + }, "file": { "errors": { "invalidDataUri": "Ungültiges Daten-URI-Format", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 58fd48d4dc11..e222810031d0 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -729,6 +729,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "'todos'-Liste für neue Aufgaben anfordern", "description": "Wenn aktiviert, erfordert das new_task-Tool die Angabe eines todos-Parameters. Dies stellt sicher, dass alle neuen Aufgaben mit einer klaren Zielliste beginnen. Wenn deaktiviert (Standard), bleibt der todos-Parameter aus Gründen der Abwärtskompatibilität optional." + }, + "IMAGE_GENERATION": { + "name": "KI-Bildgenerierung aktivieren", + "description": "Wenn aktiviert, kann Roo Bilder aus Textprompts mit OpenRouters Bildgenerierungsmodellen erstellen. Erfordert einen konfigurierten OpenRouter API-Schlüssel.", + "openRouterApiKeyLabel": "OpenRouter API-Schlüssel", + "openRouterApiKeyPlaceholder": "Gib deinen OpenRouter API-Schlüssel ein", + "getApiKeyText": "Hol dir deinen API-Schlüssel von", + "modelSelectionLabel": "Bildgenerierungsmodell", + "modelSelectionDescription": "Wähle das Modell für die Bildgenerierung aus", + "warningMissingKey": "⚠️ OpenRouter API-Schlüssel ist für Bildgenerierung erforderlich. Bitte konfiguriere ihn oben.", + "successConfigured": "✓ Bildgenerierung ist konfiguriert und einsatzbereit" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/en/chat.json b/webview-ui/src/i18n/locales/en/chat.json index 74bb3b0c792d..a7e4b51d020a 100644 --- a/webview-ui/src/i18n/locales/en/chat.json +++ b/webview-ui/src/i18n/locales/en/chat.json @@ -182,6 +182,10 @@ "wantsToEditOutsideWorkspace": "Roo wants to edit this file outside of the workspace:", "wantsToEditProtected": "Roo wants to edit a protected configuration file:", "wantsToApplyBatchChanges": "Roo wants to apply changes to multiple files:", + "wantsToGenerateImage": "Roo wants to generate an image:", + "wantsToGenerateImageOutsideWorkspace": "Roo wants to generate an image outside of the workspace:", + "wantsToGenerateImageProtected": "Roo wants to generate an image in a protected location:", + "didGenerateImage": "Roo generated an image:", "wantsToCreate": "Roo wants to create a new file:", "wantsToSearchReplace": "Roo wants to search and replace in this file:", "didSearchReplace": "Roo performed search and replace on this file:", diff --git a/webview-ui/src/i18n/locales/en/common.json b/webview-ui/src/i18n/locales/en/common.json index b4bc816a2b40..973cb48297bf 100644 --- a/webview-ui/src/i18n/locales/en/common.json +++ b/webview-ui/src/i18n/locales/en/common.json @@ -48,6 +48,11 @@ "copyError": "Error copying image" } }, + "image": { + "tabs": { + "view": "Image" + } + }, "file": { "errors": { "invalidDataUri": "Invalid data URI format", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index 139fa121504f..33fba24b8ee7 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -728,6 +728,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Require 'todos' list for new tasks", "description": "When enabled, the new_task tool will require a todos parameter to be provided. This ensures all new tasks start with a clear list of objectives. When disabled (default), the todos parameter remains optional for backward compatibility." + }, + "IMAGE_GENERATION": { + "name": "Enable AI image generation", + "description": "When enabled, Roo can generate images from text prompts using OpenRouter's image generation models. Requires an OpenRouter API key to be configured.", + "openRouterApiKeyLabel": "OpenRouter API Key", + "openRouterApiKeyPlaceholder": "Enter your OpenRouter API key", + "getApiKeyText": "Get your API key from", + "modelSelectionLabel": "Image Generation Model", + "modelSelectionDescription": "Select the model to use for image generation", + "warningMissingKey": "⚠️ OpenRouter API key is required for image generation. Please configure it above.", + "successConfigured": "✓ Image generation is configured and ready to use" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/es/chat.json b/webview-ui/src/i18n/locales/es/chat.json index 85d36ccd777f..3cb9631a3a8b 100644 --- a/webview-ui/src/i18n/locales/es/chat.json +++ b/webview-ui/src/i18n/locales/es/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo quiere añadir contenido al final de este archivo:", "wantsToReadAndXMore": "Roo quiere leer este archivo y {{count}} más:", "wantsToReadMultiple": "Roo quiere leer varios archivos:", - "wantsToApplyBatchChanges": "Roo quiere aplicar cambios a múltiples archivos:" + "wantsToApplyBatchChanges": "Roo quiere aplicar cambios a múltiples archivos:", + "wantsToGenerateImage": "Roo quiere generar una imagen:", + "wantsToGenerateImageOutsideWorkspace": "Roo quiere generar una imagen fuera del espacio de trabajo:", + "wantsToGenerateImageProtected": "Roo quiere generar una imagen en una ubicación protegida:", + "didGenerateImage": "Roo generó una imagen:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo quiere ver los archivos de nivel superior en este directorio:", diff --git a/webview-ui/src/i18n/locales/es/common.json b/webview-ui/src/i18n/locales/es/common.json index a73367347068..a293008d8a88 100644 --- a/webview-ui/src/i18n/locales/es/common.json +++ b/webview-ui/src/i18n/locales/es/common.json @@ -48,6 +48,11 @@ "copyError": "Error copiando la imagen" } }, + "image": { + "tabs": { + "view": "Imagen" + } + }, "file": { "errors": { "invalidDataUri": "Formato de URI de datos inválido", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 7e81c1f0ffda..b2deeda932e5 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -729,6 +729,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Requerir lista de 'todos' para nuevas tareas", "description": "Cuando está habilitado, la herramienta new_task requerirá que se proporcione un parámetro todos. Esto asegura que todas las nuevas tareas comiencen con una lista clara de objetivos. Cuando está deshabilitado (predeterminado), el parámetro todos permanece opcional por compatibilidad con versiones anteriores." + }, + "IMAGE_GENERATION": { + "name": "Habilitar generación de imágenes con IA", + "description": "Cuando esté habilitado, Roo puede generar imágenes a partir de prompts de texto usando los modelos de generación de imágenes de OpenRouter. Requiere que se configure una clave de API de OpenRouter.", + "openRouterApiKeyLabel": "Clave API de OpenRouter", + "openRouterApiKeyPlaceholder": "Introduce tu clave API de OpenRouter", + "getApiKeyText": "Obtén tu clave API de", + "modelSelectionLabel": "Modelo de generación de imágenes", + "modelSelectionDescription": "Selecciona el modelo para la generación de imágenes", + "warningMissingKey": "⚠️ La clave API de OpenRouter es requerida para la generación de imágenes. Por favor, configúrala arriba.", + "successConfigured": "✓ La generación de imágenes está configurada y lista para usar" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/fr/chat.json b/webview-ui/src/i18n/locales/fr/chat.json index ed8e542753cd..190c1114ad7d 100644 --- a/webview-ui/src/i18n/locales/fr/chat.json +++ b/webview-ui/src/i18n/locales/fr/chat.json @@ -172,7 +172,11 @@ "wantsToInsertAtEnd": "Roo veut ajouter du contenu à la fin de ce fichier :", "wantsToReadAndXMore": "Roo veut lire ce fichier et {{count}} de plus :", "wantsToReadMultiple": "Roo souhaite lire plusieurs fichiers :", - "wantsToApplyBatchChanges": "Roo veut appliquer des modifications à plusieurs fichiers :" + "wantsToApplyBatchChanges": "Roo veut appliquer des modifications à plusieurs fichiers :", + "wantsToGenerateImage": "Roo veut générer une image :", + "wantsToGenerateImageOutsideWorkspace": "Roo veut générer une image en dehors de l'espace de travail :", + "wantsToGenerateImageProtected": "Roo veut générer une image dans un emplacement protégé :", + "didGenerateImage": "Roo a généré une image :" }, "instructions": { "wantsToFetch": "Roo veut récupérer des instructions détaillées pour aider à la tâche actuelle" diff --git a/webview-ui/src/i18n/locales/fr/common.json b/webview-ui/src/i18n/locales/fr/common.json index 4c4ad83bc40e..fd7f53dd976b 100644 --- a/webview-ui/src/i18n/locales/fr/common.json +++ b/webview-ui/src/i18n/locales/fr/common.json @@ -48,6 +48,11 @@ "copyError": "Erreur lors de la copie de l'image" } }, + "image": { + "tabs": { + "view": "Image" + } + }, "file": { "errors": { "invalidDataUri": "Format d'URI de données invalide", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 2b1a9b43067b..f36a1850dd9c 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -729,6 +729,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Exiger la liste 'todos' pour les nouvelles tâches", "description": "Lorsqu'il est activé, l'outil new_task exigera qu'un paramètre todos soit fourni. Cela garantit que toutes les nouvelles tâches commencent avec une liste claire d'objectifs. Lorsqu'il est désactivé (par défaut), le paramètre todos reste facultatif pour la compatibilité descendante." + }, + "IMAGE_GENERATION": { + "name": "Activer la génération d'images IA", + "description": "Lorsqu'activé, Roo peut générer des images à partir de prompts textuels en utilisant les modèles de génération d'images d'OpenRouter. Nécessite qu'une clé API OpenRouter soit configurée.", + "openRouterApiKeyLabel": "Clé API OpenRouter", + "openRouterApiKeyPlaceholder": "Entrez votre clé API OpenRouter", + "getApiKeyText": "Obtenez votre clé API depuis", + "modelSelectionLabel": "Modèle de génération d'images", + "modelSelectionDescription": "Sélectionnez le modèle pour la génération d'images", + "warningMissingKey": "⚠️ Une clé API OpenRouter est requise pour la génération d'images. Veuillez la configurer ci-dessus.", + "successConfigured": "✓ La génération d'images est configurée et prête à utiliser" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/hi/chat.json b/webview-ui/src/i18n/locales/hi/chat.json index 93efe3acee7b..2de959c1ffb6 100644 --- a/webview-ui/src/i18n/locales/hi/chat.json +++ b/webview-ui/src/i18n/locales/hi/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo इस फ़ाइल के अंत में सामग्री जोड़ना चाहता है:", "wantsToReadAndXMore": "रू इस फ़ाइल को और {{count}} अन्य को पढ़ना चाहता है:", "wantsToReadMultiple": "Roo कई फ़ाइलें पढ़ना चाहता है:", - "wantsToApplyBatchChanges": "Roo कई फ़ाइलों में परिवर्तन लागू करना चाहता है:" + "wantsToApplyBatchChanges": "Roo कई फ़ाइलों में परिवर्तन लागू करना चाहता है:", + "wantsToGenerateImage": "Roo एक छवि बनाना चाहता है:", + "wantsToGenerateImageOutsideWorkspace": "Roo कार्यक्षेत्र के बाहर एक छवि बनाना चाहता है:", + "wantsToGenerateImageProtected": "Roo एक संरक्षित स्थान पर छवि बनाना चाहता है:", + "didGenerateImage": "Roo ने एक छवि बनाई:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo इस निर्देशिका में शीर्ष स्तर की फ़ाइलें देखना चाहता है:", diff --git a/webview-ui/src/i18n/locales/hi/common.json b/webview-ui/src/i18n/locales/hi/common.json index 7e809bd0a7eb..15039dc9001a 100644 --- a/webview-ui/src/i18n/locales/hi/common.json +++ b/webview-ui/src/i18n/locales/hi/common.json @@ -48,6 +48,11 @@ "copyError": "इमेज कॉपी करने में त्रुटि" } }, + "image": { + "tabs": { + "view": "चित्र" + } + }, "file": { "errors": { "invalidDataUri": "अमान्य डेटा URI फॉर्मेट", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 74d05f60d7f2..21b390aaddb9 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "नए कार्यों के लिए 'todos' सूची की आवश्यकता है", "description": "जब सक्षम किया जाता है, तो new_task टूल को todos पैरामीटर प्रदान करने की आवश्यकता होगी। यह सुनिश्चित करता है कि सभी नए कार्य स्पष्ट उद्देश्यों की सूची के साथ शुरू हों। जब अक्षम किया जाता है (डिफ़ॉल्ट), तो todos पैरामीटर पिछड़े संगतता के लिए वैकल्पिक रहता है।" + }, + "IMAGE_GENERATION": { + "name": "AI छवि निर्माण सक्षम करें", + "description": "जब सक्षम किया जाता है, तो Roo OpenRouter के छवि निर्माण मॉडल का उपयोग करके टेक्स्ट प्रॉम्प्ट से छवियां उत्पन्न कर सकता है। एक कॉन्फ़िगर किए गए OpenRouter API कुंजी की आवश्यकता होती है।", + "openRouterApiKeyLabel": "OpenRouter API कुंजी", + "openRouterApiKeyPlaceholder": "अपनी OpenRouter API कुंजी दर्ज करें", + "getApiKeyText": "अपनी API कुंजी प्राप्त करें", + "modelSelectionLabel": "छवि निर्माण मॉडल", + "modelSelectionDescription": "छवि निर्माण के लिए उपयोग करने वाला मॉडल चुनें", + "warningMissingKey": "⚠️ छवि निर्माण के लिए OpenRouter API कुंजी आवश्यक है। कृपया इसे ऊपर कॉन्फ़िगर करें।", + "successConfigured": "✓ छवि निर्माण कॉन्फ़िगर है और उपयोग के लिए तैयार है" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/id/chat.json b/webview-ui/src/i18n/locales/id/chat.json index 63157aa9895b..1b2f1cf56f01 100644 --- a/webview-ui/src/i18n/locales/id/chat.json +++ b/webview-ui/src/i18n/locales/id/chat.json @@ -185,6 +185,10 @@ "wantsToEditOutsideWorkspace": "Roo ingin mengedit file ini di luar workspace:", "wantsToEditProtected": "Roo ingin mengedit file konfigurasi yang dilindungi:", "wantsToApplyBatchChanges": "Roo ingin menerapkan perubahan ke beberapa file:", + "wantsToGenerateImage": "Roo ingin menghasilkan gambar:", + "wantsToGenerateImageOutsideWorkspace": "Roo ingin menghasilkan gambar di luar workspace:", + "wantsToGenerateImageProtected": "Roo ingin menghasilkan gambar di lokasi yang dilindungi:", + "didGenerateImage": "Roo telah menghasilkan gambar:", "wantsToCreate": "Roo ingin membuat file baru:", "wantsToSearchReplace": "Roo ingin mencari dan mengganti di file ini:", "didSearchReplace": "Roo melakukan pencarian dan penggantian pada file ini:", diff --git a/webview-ui/src/i18n/locales/id/common.json b/webview-ui/src/i18n/locales/id/common.json index 86818bb0842c..0dac9b2987c9 100644 --- a/webview-ui/src/i18n/locales/id/common.json +++ b/webview-ui/src/i18n/locales/id/common.json @@ -48,6 +48,11 @@ "copyError": "Error menyalin gambar" } }, + "image": { + "tabs": { + "view": "Gambar" + } + }, "file": { "errors": { "invalidDataUri": "Format data URI tidak valid", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index d8fda37d002f..61c7670078a2 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -759,6 +759,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Membutuhkan daftar 'todos' untuk tugas baru", "description": "Ketika diaktifkan, alat new_task akan membutuhkan parameter todos untuk disediakan. Ini memastikan semua tugas baru dimulai dengan daftar tujuan yang jelas. Ketika dinonaktifkan (default), parameter todos tetap opsional untuk kompatibilitas mundur." + }, + "IMAGE_GENERATION": { + "name": "Aktifkan pembuatan gambar AI", + "description": "Ketika diaktifkan, Roo dapat menghasilkan gambar dari prompt teks menggunakan model pembuatan gambar OpenRouter. Memerlukan kunci API OpenRouter yang dikonfigurasi.", + "openRouterApiKeyLabel": "Kunci API OpenRouter", + "openRouterApiKeyPlaceholder": "Masukkan kunci API OpenRouter Anda", + "getApiKeyText": "Dapatkan kunci API Anda dari", + "modelSelectionLabel": "Model Pembuatan Gambar", + "modelSelectionDescription": "Pilih model untuk pembuatan gambar", + "warningMissingKey": "⚠️ Kunci API OpenRouter diperlukan untuk pembuatan gambar. Silakan konfigurasi di atas.", + "successConfigured": "✓ Pembuatan gambar dikonfigurasi dan siap digunakan" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/it/chat.json b/webview-ui/src/i18n/locales/it/chat.json index 10c1c9826d95..e210124df0e9 100644 --- a/webview-ui/src/i18n/locales/it/chat.json +++ b/webview-ui/src/i18n/locales/it/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo vuole aggiungere contenuto alla fine di questo file:", "wantsToReadAndXMore": "Roo vuole leggere questo file e altri {{count}}:", "wantsToReadMultiple": "Roo vuole leggere più file:", - "wantsToApplyBatchChanges": "Roo vuole applicare modifiche a più file:" + "wantsToApplyBatchChanges": "Roo vuole applicare modifiche a più file:", + "wantsToGenerateImage": "Roo vuole generare un'immagine:", + "wantsToGenerateImageOutsideWorkspace": "Roo vuole generare un'immagine fuori dall'area di lavoro:", + "wantsToGenerateImageProtected": "Roo vuole generare un'immagine in una posizione protetta:", + "didGenerateImage": "Roo ha generato un'immagine:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo vuole visualizzare i file di primo livello in questa directory:", diff --git a/webview-ui/src/i18n/locales/it/common.json b/webview-ui/src/i18n/locales/it/common.json index 94f637ac3dd7..9ac9cbadad1e 100644 --- a/webview-ui/src/i18n/locales/it/common.json +++ b/webview-ui/src/i18n/locales/it/common.json @@ -48,6 +48,11 @@ "copyError": "Errore nella copia dell'immagine" } }, + "image": { + "tabs": { + "view": "Immagine" + } + }, "file": { "errors": { "invalidDataUri": "Formato URI dati non valido", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index eaad78925aae..3e383fc5640a 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Richiedi elenco 'todos' per nuove attività", "description": "Quando abilitato, lo strumento new_task richiederà la fornitura di un parametro todos. Ciò garantisce che tutte le nuove attività inizino con un elenco chiaro di obiettivi. Quando disabilitato (impostazione predefinita), il parametro todos rimane facoltativo per la compatibilità con le versioni precedenti." + }, + "IMAGE_GENERATION": { + "name": "Abilita generazione immagini AI", + "description": "Quando abilitato, Roo può generare immagini da prompt di testo utilizzando i modelli di generazione immagini di OpenRouter. Richiede una chiave API OpenRouter configurata.", + "openRouterApiKeyLabel": "Chiave API OpenRouter", + "openRouterApiKeyPlaceholder": "Inserisci la tua chiave API OpenRouter", + "getApiKeyText": "Ottieni la tua chiave API da", + "modelSelectionLabel": "Modello di generazione immagini", + "modelSelectionDescription": "Seleziona il modello per la generazione di immagini", + "warningMissingKey": "⚠️ La chiave API OpenRouter è richiesta per la generazione di immagini. Configurala sopra.", + "successConfigured": "✓ La generazione di immagini è configurata e pronta per l'uso" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/ja/chat.json b/webview-ui/src/i18n/locales/ja/chat.json index 30fc6a2cf9d3..a5b393ebea6f 100644 --- a/webview-ui/src/i18n/locales/ja/chat.json +++ b/webview-ui/src/i18n/locales/ja/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Rooはこのファイルの末尾にコンテンツを追加したい:", "wantsToReadAndXMore": "Roo はこのファイルと他に {{count}} 個のファイルを読み込もうとしています:", "wantsToReadMultiple": "Rooは複数のファイルを読み取ろうとしています:", - "wantsToApplyBatchChanges": "Rooは複数のファイルに変更を適用したい:" + "wantsToApplyBatchChanges": "Rooは複数のファイルに変更を適用したい:", + "wantsToGenerateImage": "Rooは画像を生成したい:", + "wantsToGenerateImageOutsideWorkspace": "Rooはワークスペース外で画像を生成したい:", + "wantsToGenerateImageProtected": "Rooは保護された場所で画像を生成したい:", + "didGenerateImage": "Rooは画像を生成しました:" }, "directoryOperations": { "wantsToViewTopLevel": "Rooはこのディレクトリのトップレベルファイルを表示したい:", diff --git a/webview-ui/src/i18n/locales/ja/common.json b/webview-ui/src/i18n/locales/ja/common.json index a3f6a90a22bf..a92a3cd79a58 100644 --- a/webview-ui/src/i18n/locales/ja/common.json +++ b/webview-ui/src/i18n/locales/ja/common.json @@ -48,6 +48,11 @@ "copyError": "画像のコピーエラー" } }, + "image": { + "tabs": { + "view": "画像" + } + }, "file": { "errors": { "invalidDataUri": "無効なデータURI形式", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 07a575600060..33dfc8be35a9 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "新しいタスクには'todos'リストを必須にする", "description": "有効にすると、new_taskツールはtodosパラメータの提供が必須になります。これにより、すべての新しいタスクが明確な目的のリストで開始されることが保証されます。無効(デフォルト)の場合、下位互換性のためにtodosパラメータはオプションのままです。" + }, + "IMAGE_GENERATION": { + "name": "AI画像生成を有効にする", + "description": "有効にすると、RooはOpenRouterの画像生成モデルを使用してテキストプロンプトから画像を生成できます。OpenRouter APIキーの設定が必要です。", + "openRouterApiKeyLabel": "OpenRouter APIキー", + "openRouterApiKeyPlaceholder": "OpenRouter APIキーを入力してください", + "getApiKeyText": "APIキーを取得する場所", + "modelSelectionLabel": "画像生成モデル", + "modelSelectionDescription": "画像生成に使用するモデルを選択", + "warningMissingKey": "⚠️ 画像生成にはOpenRouter APIキーが必要です。上記で設定してください。", + "successConfigured": "✓ 画像生成が設定され、使用準備完了です" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/ko/chat.json b/webview-ui/src/i18n/locales/ko/chat.json index 3fbde1f3533c..927cdfe5cf7a 100644 --- a/webview-ui/src/i18n/locales/ko/chat.json +++ b/webview-ui/src/i18n/locales/ko/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo가 이 파일의 끝에 내용을 추가하고 싶어합니다:", "wantsToReadAndXMore": "Roo가 이 파일과 {{count}}개의 파일을 더 읽으려고 합니다:", "wantsToReadMultiple": "Roo가 여러 파일을 읽으려고 합니다:", - "wantsToApplyBatchChanges": "Roo가 여러 파일에 변경 사항을 적용하고 싶어합니다:" + "wantsToApplyBatchChanges": "Roo가 여러 파일에 변경 사항을 적용하고 싶어합니다:", + "wantsToGenerateImage": "Roo가 이미지를 생성하고 싶어합니다:", + "wantsToGenerateImageOutsideWorkspace": "Roo가 워크스페이스 외부에서 이미지를 생성하고 싶어합니다:", + "wantsToGenerateImageProtected": "Roo가 보호된 위치에서 이미지를 생성하고 싶어합니다:", + "didGenerateImage": "Roo가 이미지를 생성했습니다:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo가 이 디렉토리의 최상위 파일을 보고 싶어합니다:", diff --git a/webview-ui/src/i18n/locales/ko/common.json b/webview-ui/src/i18n/locales/ko/common.json index 83d56930df4a..e8a9b7c64b97 100644 --- a/webview-ui/src/i18n/locales/ko/common.json +++ b/webview-ui/src/i18n/locales/ko/common.json @@ -48,6 +48,11 @@ "copyError": "이미지 복사 오류" } }, + "image": { + "tabs": { + "view": "이미지" + } + }, "file": { "errors": { "invalidDataUri": "잘못된 데이터 URI 형식", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 9dcfea8428e3..969da2c9ae02 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "새 작업에 'todos' 목록 필요", "description": "활성화하면 new_task 도구에 todos 매개변수를 제공해야 합니다. 이렇게 하면 모든 새 작업이 명확한 목표 목록으로 시작됩니다. 비활성화하면(기본값) 이전 버전과의 호환성을 위해 todos 매개변수는 선택 사항으로 유지됩니다." + }, + "IMAGE_GENERATION": { + "name": "AI 이미지 생성 활성화", + "description": "활성화하면 Roo는 OpenRouter의 이미지 생성 모델을 사용하여 텍스트 프롬프트에서 이미지를 생성할 수 있습니다. OpenRouter API 키 구성이 필요합니다.", + "openRouterApiKeyLabel": "OpenRouter API 키", + "openRouterApiKeyPlaceholder": "OpenRouter API 키를 입력하세요", + "getApiKeyText": "API 키를 받을 곳", + "modelSelectionLabel": "이미지 생성 모델", + "modelSelectionDescription": "이미지 생성에 사용할 모델을 선택하세요", + "warningMissingKey": "⚠️ 이미지 생성에는 OpenRouter API 키가 필요합니다. 위에서 설정해주세요.", + "successConfigured": "✓ 이미지 생성이 구성되었으며 사용할 준비가 되었습니다" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/nl/chat.json b/webview-ui/src/i18n/locales/nl/chat.json index a53f148bf268..48f9f345f9e5 100644 --- a/webview-ui/src/i18n/locales/nl/chat.json +++ b/webview-ui/src/i18n/locales/nl/chat.json @@ -170,7 +170,11 @@ "wantsToInsertAtEnd": "Roo wil inhoud toevoegen aan het einde van dit bestand:", "wantsToReadAndXMore": "Roo wil dit bestand en nog {{count}} andere lezen:", "wantsToReadMultiple": "Roo wil meerdere bestanden lezen:", - "wantsToApplyBatchChanges": "Roo wil wijzigingen toepassen op meerdere bestanden:" + "wantsToApplyBatchChanges": "Roo wil wijzigingen toepassen op meerdere bestanden:", + "wantsToGenerateImage": "Roo wil een afbeelding genereren:", + "wantsToGenerateImageOutsideWorkspace": "Roo wil een afbeelding genereren buiten de werkruimte:", + "wantsToGenerateImageProtected": "Roo wil een afbeelding genereren op een beschermde locatie:", + "didGenerateImage": "Roo heeft een afbeelding gegenereerd:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo wil de bovenliggende bestanden in deze map bekijken:", diff --git a/webview-ui/src/i18n/locales/nl/common.json b/webview-ui/src/i18n/locales/nl/common.json index d81570c70570..12a6c74365f1 100644 --- a/webview-ui/src/i18n/locales/nl/common.json +++ b/webview-ui/src/i18n/locales/nl/common.json @@ -48,6 +48,11 @@ "copyError": "Fout bij kopiëren van afbeelding" } }, + "image": { + "tabs": { + "view": "Afbeelding" + } + }, "file": { "errors": { "invalidDataUri": "Ongeldig data-URI-formaat", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 12a55c97198b..aa962a56ab98 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "'todos'-lijst vereisen voor nieuwe taken", "description": "Wanneer ingeschakeld, vereist de new_task-tool dat een todos-parameter wordt opgegeven. Dit zorgt ervoor dat alle nieuwe taken beginnen met een duidelijke lijst met doelstellingen. Wanneer uitgeschakeld (standaard), blijft de todos-parameter optioneel voor achterwaartse compatibiliteit." + }, + "IMAGE_GENERATION": { + "name": "AI-afbeeldingsgeneratie inschakelen", + "description": "Wanneer ingeschakeld, kan Roo afbeeldingen genereren van tekstprompts met behulp van OpenRouter's afbeeldingsgeneratiemodellen. Vereist een geconfigureerde OpenRouter API-sleutel.", + "openRouterApiKeyLabel": "OpenRouter API-sleutel", + "openRouterApiKeyPlaceholder": "Voer je OpenRouter API-sleutel in", + "getApiKeyText": "Haal je API-sleutel op van", + "modelSelectionLabel": "Afbeeldingsgeneratiemodel", + "modelSelectionDescription": "Selecteer het model voor afbeeldingsgeneratie", + "warningMissingKey": "⚠️ OpenRouter API-sleutel is vereist voor afbeeldingsgeneratie. Configureer deze hierboven.", + "successConfigured": "✓ Afbeeldingsgeneratie is geconfigureerd en klaar voor gebruik" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/pl/chat.json b/webview-ui/src/i18n/locales/pl/chat.json index 391aa7b3194a..f587406fa5ce 100644 --- a/webview-ui/src/i18n/locales/pl/chat.json +++ b/webview-ui/src/i18n/locales/pl/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo chce dodać zawartość na końcu tego pliku:", "wantsToReadAndXMore": "Roo chce przeczytać ten plik i {{count}} więcej:", "wantsToReadMultiple": "Roo chce odczytać wiele plików:", - "wantsToApplyBatchChanges": "Roo chce zastosować zmiany do wielu plików:" + "wantsToApplyBatchChanges": "Roo chce zastosować zmiany do wielu plików:", + "wantsToGenerateImage": "Roo chce wygenerować obraz:", + "wantsToGenerateImageOutsideWorkspace": "Roo chce wygenerować obraz poza obszarem roboczym:", + "wantsToGenerateImageProtected": "Roo chce wygenerować obraz w chronionym miejscu:", + "didGenerateImage": "Roo wygenerował obraz:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo chce zobaczyć pliki najwyższego poziomu w tym katalogu:", diff --git a/webview-ui/src/i18n/locales/pl/common.json b/webview-ui/src/i18n/locales/pl/common.json index 77679ef7c5e7..410c8dbb9c05 100644 --- a/webview-ui/src/i18n/locales/pl/common.json +++ b/webview-ui/src/i18n/locales/pl/common.json @@ -48,6 +48,11 @@ "copyError": "Błąd kopiowania obrazu" } }, + "image": { + "tabs": { + "view": "Obraz" + } + }, "file": { "errors": { "invalidDataUri": "Nieprawidłowy format URI danych", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 92b89ffeab92..ccc3868fb8ea 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Wymagaj listy 'todos' dla nowych zadań", "description": "Gdy włączone, narzędzie new_task będzie wymagało podania parametru todos. Zapewnia to, że wszystkie nowe zadania rozpoczynają się od jasnej listy celów. Gdy wyłączone (domyślnie), parametr todos pozostaje opcjonalny dla zachowania kompatybilności wstecznej." + }, + "IMAGE_GENERATION": { + "name": "Włącz generowanie obrazów AI", + "description": "Gdy włączone, Roo może generować obrazy z promptów tekstowych używając modeli generowania obrazów OpenRouter. Wymaga skonfigurowanego klucza API OpenRouter.", + "openRouterApiKeyLabel": "Klucz API OpenRouter", + "openRouterApiKeyPlaceholder": "Wprowadź swój klucz API OpenRouter", + "getApiKeyText": "Uzyskaj swój klucz API od", + "modelSelectionLabel": "Model generowania obrazów", + "modelSelectionDescription": "Wybierz model do generowania obrazów", + "warningMissingKey": "⚠️ Klucz API OpenRouter jest wymagany do generowania obrazów. Skonfiguruj go powyżej.", + "successConfigured": "✓ Generowanie obrazów jest skonfigurowane i gotowe do użycia" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/pt-BR/chat.json b/webview-ui/src/i18n/locales/pt-BR/chat.json index 12fa6932ae2b..c4ccac74584e 100644 --- a/webview-ui/src/i18n/locales/pt-BR/chat.json +++ b/webview-ui/src/i18n/locales/pt-BR/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo quer adicionar conteúdo ao final deste arquivo:", "wantsToReadAndXMore": "Roo quer ler este arquivo e mais {{count}}:", "wantsToReadMultiple": "Roo deseja ler múltiplos arquivos:", - "wantsToApplyBatchChanges": "Roo quer aplicar alterações a múltiplos arquivos:" + "wantsToApplyBatchChanges": "Roo quer aplicar alterações a múltiplos arquivos:", + "wantsToGenerateImage": "Roo quer gerar uma imagem:", + "wantsToGenerateImageOutsideWorkspace": "Roo quer gerar uma imagem fora do espaço de trabalho:", + "wantsToGenerateImageProtected": "Roo quer gerar uma imagem em um local protegido:", + "didGenerateImage": "Roo gerou uma imagem:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo quer visualizar os arquivos de nível superior neste diretório:", diff --git a/webview-ui/src/i18n/locales/pt-BR/common.json b/webview-ui/src/i18n/locales/pt-BR/common.json index 3fb4273d89cc..30d9b6dc6c1c 100644 --- a/webview-ui/src/i18n/locales/pt-BR/common.json +++ b/webview-ui/src/i18n/locales/pt-BR/common.json @@ -48,6 +48,11 @@ "copyError": "Erro ao copiar imagem" } }, + "image": { + "tabs": { + "view": "Imagem" + } + }, "file": { "errors": { "invalidDataUri": "Formato de URI de dados inválido", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 0721ba5d1881..b6674e682e77 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Exigir lista de 'todos' para novas tarefas", "description": "Quando ativado, a ferramenta new_task exigirá que um parâmetro todos seja fornecido. Isso garante que todas as novas tarefas comecem com uma lista clara de objetivos. Quando desativado (padrão), o parâmetro todos permanece opcional para compatibilidade com versões anteriores." + }, + "IMAGE_GENERATION": { + "name": "Habilitar geração de imagens com IA", + "description": "Quando habilitado, Roo pode gerar imagens a partir de prompts de texto usando os modelos de geração de imagens do OpenRouter. Requer uma chave de API do OpenRouter configurada.", + "openRouterApiKeyLabel": "Chave de API do OpenRouter", + "openRouterApiKeyPlaceholder": "Digite sua chave de API do OpenRouter", + "getApiKeyText": "Obtenha sua chave de API de", + "modelSelectionLabel": "Modelo de Geração de Imagens", + "modelSelectionDescription": "Selecione o modelo para geração de imagens", + "warningMissingKey": "⚠️ A chave de API do OpenRouter é necessária para geração de imagens. Configure-a acima.", + "successConfigured": "✓ A geração de imagens está configurada e pronta para uso" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/ru/chat.json b/webview-ui/src/i18n/locales/ru/chat.json index 0288c2bc9475..9fefd4f380d0 100644 --- a/webview-ui/src/i18n/locales/ru/chat.json +++ b/webview-ui/src/i18n/locales/ru/chat.json @@ -170,7 +170,11 @@ "wantsToInsertAtEnd": "Roo хочет добавить содержимое в конец этого файла:", "wantsToReadAndXMore": "Roo хочет прочитать этот файл и еще {{count}}:", "wantsToReadMultiple": "Roo хочет прочитать несколько файлов:", - "wantsToApplyBatchChanges": "Roo хочет применить изменения к нескольким файлам:" + "wantsToApplyBatchChanges": "Roo хочет применить изменения к нескольким файлам:", + "wantsToGenerateImage": "Roo хочет сгенерировать изображение:", + "wantsToGenerateImageOutsideWorkspace": "Roo хочет сгенерировать изображение вне рабочего пространства:", + "wantsToGenerateImageProtected": "Roo хочет сгенерировать изображение в защищённом месте:", + "didGenerateImage": "Roo сгенерировал изображение:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo хочет просмотреть файлы верхнего уровня в этой директории:", diff --git a/webview-ui/src/i18n/locales/ru/common.json b/webview-ui/src/i18n/locales/ru/common.json index f43c2e9e8bb9..8cdb1431eb19 100644 --- a/webview-ui/src/i18n/locales/ru/common.json +++ b/webview-ui/src/i18n/locales/ru/common.json @@ -48,6 +48,11 @@ "copyError": "Ошибка копирования изображения" } }, + "image": { + "tabs": { + "view": "Изображение" + } + }, "file": { "errors": { "invalidDataUri": "Неверный формат URI данных", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 0b23982c51d9..e416777719c4 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Требовать список 'todos' для новых задач", "description": "Если включено, инструмент new_task будет требовать предоставления параметра todos. Это гарантирует, что все новые задачи начинаются с четкого списка целей. Когда отключено (по умолчанию), параметр todos остается необязательным для обратной совместимости." + }, + "IMAGE_GENERATION": { + "name": "Включить генерацию изображений ИИ", + "description": "Когда включено, Roo может генерировать изображения из текстовых запросов, используя модели генерации изображений OpenRouter. Требует настроенный API-ключ OpenRouter.", + "openRouterApiKeyLabel": "API-ключ OpenRouter", + "openRouterApiKeyPlaceholder": "Введите ваш API-ключ OpenRouter", + "getApiKeyText": "Получите ваш API-ключ от", + "modelSelectionLabel": "Модель генерации изображений", + "modelSelectionDescription": "Выберите модель для генерации изображений", + "warningMissingKey": "⚠️ API-ключ OpenRouter необходим для генерации изображений. Настройте его выше.", + "successConfigured": "✓ Генерация изображений настроена и готова к использованию" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/tr/chat.json b/webview-ui/src/i18n/locales/tr/chat.json index c8dea0d545a7..12757edab63f 100644 --- a/webview-ui/src/i18n/locales/tr/chat.json +++ b/webview-ui/src/i18n/locales/tr/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo bu dosyanın sonuna içerik eklemek istiyor:", "wantsToReadAndXMore": "Roo bu dosyayı ve {{count}} tane daha okumak istiyor:", "wantsToReadMultiple": "Roo birden fazla dosya okumak istiyor:", - "wantsToApplyBatchChanges": "Roo birden fazla dosyaya değişiklik uygulamak istiyor:" + "wantsToApplyBatchChanges": "Roo birden fazla dosyaya değişiklik uygulamak istiyor:", + "wantsToGenerateImage": "Roo bir görsel oluşturmak istiyor:", + "wantsToGenerateImageOutsideWorkspace": "Roo çalışma alanının dışında bir görsel oluşturmak istiyor:", + "wantsToGenerateImageProtected": "Roo korumalı bir konumda görsel oluşturmak istiyor:", + "didGenerateImage": "Roo bir görsel oluşturdu:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo bu dizindeki üst düzey dosyaları görüntülemek istiyor:", diff --git a/webview-ui/src/i18n/locales/tr/common.json b/webview-ui/src/i18n/locales/tr/common.json index 2f3a7c957cd1..15f13fcdd36c 100644 --- a/webview-ui/src/i18n/locales/tr/common.json +++ b/webview-ui/src/i18n/locales/tr/common.json @@ -48,6 +48,11 @@ "copyError": "Görsel kopyalama hatası" } }, + "image": { + "tabs": { + "view": "Resim" + } + }, "file": { "errors": { "invalidDataUri": "Geçersiz veri URI formatı", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 1c218bc60710..0335802ba095 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Yeni görevler için 'todos' listesi gerektir", "description": "Etkinleştirildiğinde, new_task aracı bir todos parametresi sağlanmasını gerektirir. Bu, tüm yeni görevlerin net bir hedef listesiyle başlamasını sağlar. Devre dışı bırakıldığında (varsayılan), todos parametresi geriye dönük uyumluluk için isteğe bağlı kalır." + }, + "IMAGE_GENERATION": { + "name": "AI görüntü üretimini etkinleştir", + "description": "Etkinleştirildiğinde, Roo OpenRouter'ın görüntü üretim modellerini kullanarak metin istemlerinden görüntüler üretebilir. Yapılandırılmış bir OpenRouter API anahtarı gerektirir.", + "openRouterApiKeyLabel": "OpenRouter API Anahtarı", + "openRouterApiKeyPlaceholder": "OpenRouter API anahtarınızı girin", + "getApiKeyText": "API anahtarınızı alın", + "modelSelectionLabel": "Görüntü Üretim Modeli", + "modelSelectionDescription": "Görüntü üretimi için kullanılacak modeli seçin", + "warningMissingKey": "⚠️ Görüntü üretimi için OpenRouter API anahtarı gereklidir. Lütfen yukarıda yapılandırın.", + "successConfigured": "✓ Görüntü üretimi yapılandırılmış ve kullanıma hazır" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/vi/chat.json b/webview-ui/src/i18n/locales/vi/chat.json index c4d56a71af80..2d0135d9ac5f 100644 --- a/webview-ui/src/i18n/locales/vi/chat.json +++ b/webview-ui/src/i18n/locales/vi/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "Roo muốn thêm nội dung vào cuối tệp này:", "wantsToReadAndXMore": "Roo muốn đọc tệp này và {{count}} tệp khác:", "wantsToReadMultiple": "Roo muốn đọc nhiều tệp:", - "wantsToApplyBatchChanges": "Roo muốn áp dụng thay đổi cho nhiều tệp:" + "wantsToApplyBatchChanges": "Roo muốn áp dụng thay đổi cho nhiều tệp:", + "wantsToGenerateImage": "Roo muốn tạo một hình ảnh:", + "wantsToGenerateImageOutsideWorkspace": "Roo muốn tạo hình ảnh bên ngoài không gian làm việc:", + "wantsToGenerateImageProtected": "Roo muốn tạo hình ảnh ở vị trí được bảo vệ:", + "didGenerateImage": "Roo đã tạo một hình ảnh:" }, "directoryOperations": { "wantsToViewTopLevel": "Roo muốn xem các tệp cấp cao nhất trong thư mục này:", diff --git a/webview-ui/src/i18n/locales/vi/common.json b/webview-ui/src/i18n/locales/vi/common.json index 92aa029b018c..a75e1e1f4acd 100644 --- a/webview-ui/src/i18n/locales/vi/common.json +++ b/webview-ui/src/i18n/locales/vi/common.json @@ -48,6 +48,11 @@ "copyError": "Lỗi sao chép hình ảnh" } }, + "image": { + "tabs": { + "view": "Hình ảnh" + } + }, "file": { "errors": { "invalidDataUri": "Định dạng URI dữ liệu không hợp lệ", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 46ff47483adc..92565cb85ef8 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "Yêu cầu danh sách 'todos' cho các nhiệm vụ mới", "description": "Khi được bật, công cụ new_task sẽ yêu cầu cung cấp tham số todos. Điều này đảm bảo tất cả các nhiệm vụ mới bắt đầu với một danh sách mục tiêu rõ ràng. Khi bị tắt (mặc định), tham số todos vẫn là tùy chọn để tương thích ngược." + }, + "IMAGE_GENERATION": { + "name": "Bật tạo hình ảnh AI", + "description": "Khi được bật, Roo có thể tạo hình ảnh từ lời nhắc văn bản bằng các mô hình tạo hình ảnh của OpenRouter. Yêu cầu khóa API OpenRouter được cấu hình.", + "openRouterApiKeyLabel": "Khóa API OpenRouter", + "openRouterApiKeyPlaceholder": "Nhập khóa API OpenRouter của bạn", + "getApiKeyText": "Lấy khóa API của bạn từ", + "modelSelectionLabel": "Mô hình tạo hình ảnh", + "modelSelectionDescription": "Chọn mô hình để sử dụng cho việc tạo hình ảnh", + "warningMissingKey": "⚠️ Khóa API OpenRouter là bắt buộc để tạo hình ảnh. Vui lòng cấu hình ở trên.", + "successConfigured": "✓ Tạo hình ảnh đã được cấu hình và sẵn sàng sử dụng" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/zh-CN/chat.json b/webview-ui/src/i18n/locales/zh-CN/chat.json index ac95f8920904..a8491a63f662 100644 --- a/webview-ui/src/i18n/locales/zh-CN/chat.json +++ b/webview-ui/src/i18n/locales/zh-CN/chat.json @@ -175,7 +175,11 @@ "wantsToInsertAtEnd": "需要在文件末尾添加内容:", "wantsToReadAndXMore": "Roo 想读取此文件以及另外 {{count}} 个文件:", "wantsToReadMultiple": "Roo 想要读取多个文件:", - "wantsToApplyBatchChanges": "Roo 想要对多个文件应用更改:" + "wantsToApplyBatchChanges": "Roo 想要对多个文件应用更改:", + "wantsToGenerateImage": "需要生成图片:", + "wantsToGenerateImageOutsideWorkspace": "需要在工作区外生成图片:", + "wantsToGenerateImageProtected": "需要在受保护位置生成图片:", + "didGenerateImage": "已生成图片:" }, "directoryOperations": { "wantsToViewTopLevel": "需要查看目录文件列表:", diff --git a/webview-ui/src/i18n/locales/zh-CN/common.json b/webview-ui/src/i18n/locales/zh-CN/common.json index 6ff0132370a8..902bd7f7e068 100644 --- a/webview-ui/src/i18n/locales/zh-CN/common.json +++ b/webview-ui/src/i18n/locales/zh-CN/common.json @@ -48,6 +48,11 @@ "copyError": "复制图片时出错" } }, + "image": { + "tabs": { + "view": "图像" + } + }, "file": { "errors": { "invalidDataUri": "无效的数据 URI 格式", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index a6aea2cd8d71..9a3879523db1 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "要求新任务提供 'todos' 列表", "description": "启用后,new_task 工具将需要提供 todos 参数。这可以确保所有新任务都以明确的目标列表开始。禁用时(默认),todos 参数保持可选,以实现向后兼容。" + }, + "IMAGE_GENERATION": { + "name": "启用 AI 图像生成", + "description": "启用后,Roo 可以使用 OpenRouter 的图像生成模型从文本提示生成图像。需要配置 OpenRouter API 密钥。", + "openRouterApiKeyLabel": "OpenRouter API 密钥", + "openRouterApiKeyPlaceholder": "输入您的 OpenRouter API 密钥", + "getApiKeyText": "获取您的 API 密钥", + "modelSelectionLabel": "图像生成模型", + "modelSelectionDescription": "选择用于图像生成的模型", + "warningMissingKey": "⚠️ 图像生成需要 OpenRouter API 密钥。请在上方配置。", + "successConfigured": "✓ 图像生成已配置完成,可以使用" } }, "promptCaching": { diff --git a/webview-ui/src/i18n/locales/zh-TW/chat.json b/webview-ui/src/i18n/locales/zh-TW/chat.json index 8df11705d4cb..c01142cdfa16 100644 --- a/webview-ui/src/i18n/locales/zh-TW/chat.json +++ b/webview-ui/src/i18n/locales/zh-TW/chat.json @@ -182,6 +182,10 @@ "wantsToEditOutsideWorkspace": "Roo 想要編輯此工作區外的檔案:", "wantsToEditProtected": "Roo 想要編輯受保護的設定檔案:", "wantsToApplyBatchChanges": "Roo 想要對多個檔案套用變更:", + "wantsToGenerateImage": "Roo 想要產生圖片:", + "wantsToGenerateImageOutsideWorkspace": "Roo 想要在工作區外產生圖片:", + "wantsToGenerateImageProtected": "Roo 想要在受保護位置產生圖片:", + "didGenerateImage": "Roo 已產生圖片:", "wantsToCreate": "Roo 想要建立新檔案:", "wantsToSearchReplace": "Roo 想要在此檔案中搜尋和取代:", "didSearchReplace": "Roo 已在此檔案執行搜尋和取代:", diff --git a/webview-ui/src/i18n/locales/zh-TW/common.json b/webview-ui/src/i18n/locales/zh-TW/common.json index 9750590462b8..9497d369a5bf 100644 --- a/webview-ui/src/i18n/locales/zh-TW/common.json +++ b/webview-ui/src/i18n/locales/zh-TW/common.json @@ -48,6 +48,11 @@ "copyError": "複製圖片時發生錯誤" } }, + "image": { + "tabs": { + "view": "圖像" + } + }, "file": { "errors": { "invalidDataUri": "無效的資料 URI 格式", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 3b9680338029..b8ade3ca8bf7 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -730,6 +730,17 @@ "NEW_TASK_REQUIRE_TODOS": { "name": "要求新工作提供 'todos' 列表", "description": "啟用後,new_task 工具將需要提供 todos 參數。這可以確保所有新工作都以明確的目標列表開始。停用時(預設),todos 參數保持可選,以實現向後相容。" + }, + "IMAGE_GENERATION": { + "name": "啟用 AI 圖像生成", + "description": "啟用後,Roo 可以使用 OpenRouter 的圖像生成模型從文字提示生成圖像。需要設定 OpenRouter API 金鑰。", + "openRouterApiKeyLabel": "OpenRouter API 金鑰", + "openRouterApiKeyPlaceholder": "輸入您的 OpenRouter API 金鑰", + "getApiKeyText": "取得您的 API 金鑰從", + "modelSelectionLabel": "圖像生成模型", + "modelSelectionDescription": "選擇用於圖像生成的模型", + "warningMissingKey": "⚠️ 圖像生成需要 OpenRouter API 金鑰。請在上方設定。", + "successConfigured": "✓ 圖像生成已設定完成並準備使用" } }, "promptCaching": { From 548d3b48a99b903647978641377f831b2089597a Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Thu, 28 Aug 2025 02:22:38 -0400 Subject: [PATCH 026/228] Make the default image filename more generic (#7479) --- src/integrations/misc/image-handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/integrations/misc/image-handler.ts b/src/integrations/misc/image-handler.ts index 4cd7585df465..f35f700749c7 100644 --- a/src/integrations/misc/image-handler.ts +++ b/src/integrations/misc/image-handler.ts @@ -64,7 +64,7 @@ export async function saveImage(dataUri: string) { // Get workspace path or fallback to home directory const workspacePath = getWorkspacePath() const defaultPath = workspacePath || os.homedir() - const defaultFileName = `mermaid_diagram_${Date.now()}.${format}` + const defaultFileName = `img_${Date.now()}.${format}` const defaultUri = vscode.Uri.file(path.join(defaultPath, defaultFileName)) // Show save dialog From 43597b3a2065e4a5416d8732b9b3173bfc12efa6 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Thu, 28 Aug 2025 09:46:09 -0400 Subject: [PATCH 027/228] Release v3.26.2 (#7490) --- .changeset/v3.26.2.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/v3.26.2.md diff --git a/.changeset/v3.26.2.md b/.changeset/v3.26.2.md new file mode 100644 index 000000000000..fe2cbe2757dd --- /dev/null +++ b/.changeset/v3.26.2.md @@ -0,0 +1,8 @@ +--- +"roo-cline": patch +--- + +- feat: Add experimental image generation tool with OpenRouter integration (thanks @daniel-lxs!) +- Fix: Resolve GPT-5 Responses API issues with condensing and image support (#7334 by @nlbuescher, PR by @daniel-lxs) +- Fix: Hide .rooignore'd files from environment details by default (#7368 by @AlexBlack772, PR by @app/roomote) +- Fix: Exclude browser scroll actions from repetition detection (#7470 by @cgrierson-smartsheet, PR by @app/roomote) From bea068448741a2b874bde3caa15cace1e664a7c2 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Thu, 28 Aug 2025 10:00:01 -0400 Subject: [PATCH 028/228] Support free imagegen (#7493) --- src/core/tools/generateImageTool.ts | 5 +---- .../src/components/settings/ImageGenerationSettings.tsx | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/tools/generateImageTool.ts b/src/core/tools/generateImageTool.ts index 97c29e0a6216..f3ffeb55caf1 100644 --- a/src/core/tools/generateImageTool.ts +++ b/src/core/tools/generateImageTool.ts @@ -12,10 +12,7 @@ import { safeWriteJson } from "../../utils/safeWriteJson" import { OpenRouterHandler } from "../../api/providers/openrouter" // Hardcoded list of image generation models for now -const IMAGE_GENERATION_MODELS = [ - "google/gemini-2.5-flash-image-preview", - // Add more models as they become available -] +const IMAGE_GENERATION_MODELS = ["google/gemini-2.5-flash-image-preview", "google/gemini-2.5-flash-image-preview:free"] export async function generateImageTool( cline: Task, diff --git a/webview-ui/src/components/settings/ImageGenerationSettings.tsx b/webview-ui/src/components/settings/ImageGenerationSettings.tsx index f08284f7b5cb..667a31d57933 100644 --- a/webview-ui/src/components/settings/ImageGenerationSettings.tsx +++ b/webview-ui/src/components/settings/ImageGenerationSettings.tsx @@ -17,6 +17,7 @@ interface ImageGenerationSettingsProps { // Hardcoded list of image generation models const IMAGE_GENERATION_MODELS = [ { value: "google/gemini-2.5-flash-image-preview", label: "Gemini 2.5 Flash Image Preview" }, + { value: "google/gemini-2.5-flash-image-preview:free", label: "Gemini 2.5 Flash Image Preview (Free)" }, // Add more models as they become available ] From 8e666078e4d74d1d1630a70f6e6e00e6d1aed90b Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Thu, 28 Aug 2025 09:19:46 -0500 Subject: [PATCH 029/228] feat: update OpenRouter API to support input/output modalities and filter image generation models (#7492) --- .../src/lib/hooks/use-open-router-models.ts | 9 ++- .../fetchers/__tests__/openrouter.spec.ts | 55 ++++++++++++++++++- src/api/providers/fetchers/openrouter.ts | 27 +++++++-- .../ui/hooks/useOpenRouterModelProviders.ts | 10 +++- 4 files changed, 88 insertions(+), 13 deletions(-) diff --git a/apps/web-roo-code/src/lib/hooks/use-open-router-models.ts b/apps/web-roo-code/src/lib/hooks/use-open-router-models.ts index 1901d58a03ce..2988421ae53b 100644 --- a/apps/web-roo-code/src/lib/hooks/use-open-router-models.ts +++ b/apps/web-roo-code/src/lib/hooks/use-open-router-models.ts @@ -22,7 +22,8 @@ export const openRouterModelSchema = z.object({ .optional(), architecture: z .object({ - modality: z.string(), + input_modalities: z.array(z.string()).nullish(), + output_modalities: z.array(z.string()).nullish(), }) .optional(), }) @@ -47,6 +48,10 @@ export const getOpenRouterModels = async (): Promise => { } return result.data.data + .filter((rawModel) => { + // Skip image generation models (models that output images) + return !rawModel.architecture?.output_modalities?.includes("image") + }) .sort((a, b) => a.name.localeCompare(b.name)) .map((rawModel) => ({ ...rawModel, @@ -57,7 +62,7 @@ export const getOpenRouterModels = async (): Promise => { outputPrice: parsePrice(rawModel.pricing?.completion), description: rawModel.description, supportsPromptCache: false, - supportsImages: false, + supportsImages: rawModel.architecture?.input_modalities?.includes("image") ?? false, supportsThinking: false, tiers: [], }, diff --git a/src/api/providers/fetchers/__tests__/openrouter.spec.ts b/src/api/providers/fetchers/__tests__/openrouter.spec.ts index e0ab7f5c9a51..2f194875644e 100644 --- a/src/api/providers/fetchers/__tests__/openrouter.spec.ts +++ b/src/api/providers/fetchers/__tests__/openrouter.spec.ts @@ -280,7 +280,8 @@ describe("OpenRouter API", () => { const result = parseOpenRouterModel({ id: "openrouter/horizon-alpha", model: mockModel, - modality: "text", + inputModality: ["text"], + outputModality: ["text"], maxTokens: 128000, }) @@ -303,7 +304,8 @@ describe("OpenRouter API", () => { const result = parseOpenRouterModel({ id: "openrouter/horizon-beta", model: mockModel, - modality: "text", + inputModality: ["text"], + outputModality: ["text"], maxTokens: 128000, }) @@ -326,12 +328,59 @@ describe("OpenRouter API", () => { const result = parseOpenRouterModel({ id: "openrouter/other-model", model: mockModel, - modality: "text", + inputModality: ["text"], + outputModality: ["text"], maxTokens: 64000, }) expect(result.maxTokens).toBe(64000) expect(result.contextWindow).toBe(128000) }) + + it("filters out image generation models", () => { + const mockImageModel = { + name: "Image Model", + description: "Test image generation model", + context_length: 128000, + max_completion_tokens: 64000, + pricing: { + prompt: "0.000003", + completion: "0.000015", + }, + } + + const mockTextModel = { + name: "Text Model", + description: "Test text generation model", + context_length: 128000, + max_completion_tokens: 64000, + pricing: { + prompt: "0.000003", + completion: "0.000015", + }, + } + + // Model with image output should be filtered out - we only test parseOpenRouterModel + // since the filtering happens in getOpenRouterModels/getOpenRouterModelEndpoints + const textResult = parseOpenRouterModel({ + id: "test/text-model", + model: mockTextModel, + inputModality: ["text"], + outputModality: ["text"], + maxTokens: 64000, + }) + + const imageResult = parseOpenRouterModel({ + id: "test/image-model", + model: mockImageModel, + inputModality: ["text"], + outputModality: ["image"], + maxTokens: 64000, + }) + + // Both should parse successfully (filtering happens at a higher level) + expect(textResult.maxTokens).toBe(64000) + expect(imageResult.maxTokens).toBe(64000) + }) }) }) diff --git a/src/api/providers/fetchers/openrouter.ts b/src/api/providers/fetchers/openrouter.ts index 89f971a2e66a..7e3dd7609f09 100644 --- a/src/api/providers/fetchers/openrouter.ts +++ b/src/api/providers/fetchers/openrouter.ts @@ -18,7 +18,8 @@ import { parseApiPrice } from "../../../shared/cost" */ const openRouterArchitectureSchema = z.object({ - modality: z.string().nullish(), + input_modalities: z.array(z.string()).nullish(), + output_modalities: z.array(z.string()).nullish(), tokenizer: z.string().nullish(), }) @@ -110,10 +111,16 @@ export async function getOpenRouterModels(options?: ApiHandlerOptions): Promise< for (const model of data) { const { id, architecture, top_provider, supported_parameters = [] } = model + // Skip image generation models (models that output images) + if (architecture?.output_modalities?.includes("image")) { + continue + } + models[id] = parseOpenRouterModel({ id, model, - modality: architecture?.modality, + inputModality: architecture?.input_modalities, + outputModality: architecture?.output_modalities, maxTokens: top_provider?.max_completion_tokens, supportedParameters: supported_parameters, }) @@ -149,11 +156,17 @@ export async function getOpenRouterModelEndpoints( const { id, architecture, endpoints } = data + // Skip image generation models (models that output images) + if (architecture?.output_modalities?.includes("image")) { + return models + } + for (const endpoint of endpoints) { models[endpoint.tag ?? endpoint.provider_name] = parseOpenRouterModel({ id, model: endpoint, - modality: architecture?.modality, + inputModality: architecture?.input_modalities, + outputModality: architecture?.output_modalities, maxTokens: endpoint.max_completion_tokens, }) } @@ -173,13 +186,15 @@ export async function getOpenRouterModelEndpoints( export const parseOpenRouterModel = ({ id, model, - modality, + inputModality, + outputModality, maxTokens, supportedParameters, }: { id: string model: OpenRouterBaseModel - modality: string | null | undefined + inputModality: string[] | null | undefined + outputModality: string[] | null | undefined maxTokens: number | null | undefined supportedParameters?: string[] }): ModelInfo => { @@ -194,7 +209,7 @@ export const parseOpenRouterModel = ({ const modelInfo: ModelInfo = { maxTokens: maxTokens || Math.ceil(model.context_length * 0.2), contextWindow: model.context_length, - supportsImages: modality?.includes("image") ?? false, + supportsImages: inputModality?.includes("image") ?? false, supportsPromptCache, inputPrice: parseApiPrice(model.pricing?.prompt), outputPrice: parseApiPrice(model.pricing?.completion), diff --git a/webview-ui/src/components/ui/hooks/useOpenRouterModelProviders.ts b/webview-ui/src/components/ui/hooks/useOpenRouterModelProviders.ts index 3a2f23dabc56..e8c23754899a 100644 --- a/webview-ui/src/components/ui/hooks/useOpenRouterModelProviders.ts +++ b/webview-ui/src/components/ui/hooks/useOpenRouterModelProviders.ts @@ -15,7 +15,8 @@ const openRouterEndpointsSchema = z.object({ description: z.string().optional(), architecture: z .object({ - modality: z.string().nullish(), + input_modalities: z.array(z.string()).nullish(), + output_modalities: z.array(z.string()).nullish(), tokenizer: z.string().nullish(), }) .nullish(), @@ -56,6 +57,11 @@ async function getOpenRouterProvidersForModel(modelId: string) { const { description, architecture, endpoints } = result.data.data + // Skip image generation models (models that output images) + if (architecture?.output_modalities?.includes("image")) { + return models + } + for (const endpoint of endpoints) { const providerName = endpoint.tag ?? endpoint.name const inputPrice = parseApiPrice(endpoint.pricing?.prompt) @@ -66,7 +72,7 @@ async function getOpenRouterProvidersForModel(modelId: string) { const modelInfo: OpenRouterModelProvider = { maxTokens: endpoint.max_completion_tokens || endpoint.context_length, contextWindow: endpoint.context_length, - supportsImages: architecture?.modality?.includes("image"), + supportsImages: architecture?.input_modalities?.includes("image") ?? false, supportsPromptCache: typeof cacheReadsPrice !== "undefined", cacheReadsPrice, cacheWritesPrice, From 6ef9dbd87309014b4203ec8632d70d522b2e5b59 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Thu, 28 Aug 2025 10:27:41 -0400 Subject: [PATCH 030/228] Add padding to image model picker (#7494) --- webview-ui/src/components/settings/ImageGenerationSettings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webview-ui/src/components/settings/ImageGenerationSettings.tsx b/webview-ui/src/components/settings/ImageGenerationSettings.tsx index 667a31d57933..84f0c661b3bf 100644 --- a/webview-ui/src/components/settings/ImageGenerationSettings.tsx +++ b/webview-ui/src/components/settings/ImageGenerationSettings.tsx @@ -94,7 +94,7 @@ export const ImageGenerationSettings = ({ onChange={(e: any) => setSelectedModel(e.target.value)} className="w-full"> {IMAGE_GENERATION_MODELS.map((model) => ( - + {model.label} ))} From 622da63de08ef293b6481897d08bfe7859ba8767 Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:05:49 -0500 Subject: [PATCH 031/228] fix: prevent dirty state on initial mount in ImageGenerationSettings (#7495) --- .../settings/ImageGenerationSettings.tsx | 32 +++++-- .../ImageGenerationSettings.spec.tsx | 94 +++++++++++++++++++ 2 files changed, 119 insertions(+), 7 deletions(-) create mode 100644 webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx diff --git a/webview-ui/src/components/settings/ImageGenerationSettings.tsx b/webview-ui/src/components/settings/ImageGenerationSettings.tsx index 84f0c661b3bf..800e981fe90b 100644 --- a/webview-ui/src/components/settings/ImageGenerationSettings.tsx +++ b/webview-ui/src/components/settings/ImageGenerationSettings.tsx @@ -36,14 +36,32 @@ export const ImageGenerationSettings = ({ imageGenerationSettings.selectedModel || IMAGE_GENERATION_MODELS[0].value, ) - // Update parent state when local state changes + // Update local state when apiConfiguration changes (e.g., when switching profiles) useEffect(() => { + setOpenRouterApiKey(imageGenerationSettings.openRouterApiKey || "") + setSelectedModel(imageGenerationSettings.selectedModel || IMAGE_GENERATION_MODELS[0].value) + }, [imageGenerationSettings.openRouterApiKey, imageGenerationSettings.selectedModel]) + + // Helper function to update settings + const updateSettings = (newApiKey: string, newModel: string) => { const newSettings = { - openRouterApiKey, - selectedModel, + openRouterApiKey: newApiKey, + selectedModel: newModel, } - setApiConfigurationField("openRouterImageGenerationSettings", newSettings) - }, [openRouterApiKey, selectedModel, setApiConfigurationField]) + setApiConfigurationField("openRouterImageGenerationSettings", newSettings, true) + } + + // Handle API key changes + const handleApiKeyChange = (value: string) => { + setOpenRouterApiKey(value) + updateSettings(value, selectedModel) + } + + // Handle model selection changes + const handleModelChange = (value: string) => { + setSelectedModel(value) + updateSettings(openRouterApiKey, value) + } return (
@@ -67,7 +85,7 @@ export const ImageGenerationSettings = ({ setOpenRouterApiKey(e.target.value)} + onInput={(e: any) => handleApiKeyChange(e.target.value)} placeholder={t("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder")} className="w-full" type="password" @@ -91,7 +109,7 @@ export const ImageGenerationSettings = ({ setSelectedModel(e.target.value)} + onChange={(e: any) => handleModelChange(e.target.value)} className="w-full"> {IMAGE_GENERATION_MODELS.map((model) => ( diff --git a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx new file mode 100644 index 000000000000..ef3808c20baa --- /dev/null +++ b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx @@ -0,0 +1,94 @@ +import { render, fireEvent } from "@testing-library/react" +import { vi } from "vitest" +import { ImageGenerationSettings } from "../ImageGenerationSettings" +import type { ProviderSettings } from "@roo-code/types" + +// Mock the translation context +vi.mock("@/i18n/TranslationContext", () => ({ + useAppTranslation: () => ({ + t: (key: string) => key, + }), +})) + +describe("ImageGenerationSettings", () => { + const mockSetApiConfigurationField = vi.fn() + const mockOnChange = vi.fn() + + const defaultProps = { + enabled: false, + onChange: mockOnChange, + apiConfiguration: {} as ProviderSettings, + setApiConfigurationField: mockSetApiConfigurationField, + } + + beforeEach(() => { + vi.clearAllMocks() + }) + + describe("Initial Mount Behavior", () => { + it("should not call setApiConfigurationField on initial mount with empty configuration", () => { + render() + + // Should NOT call setApiConfigurationField on initial mount to prevent dirty state + expect(mockSetApiConfigurationField).not.toHaveBeenCalled() + }) + + it("should not call setApiConfigurationField on initial mount with existing configuration", () => { + const apiConfiguration = { + openRouterImageGenerationSettings: { + openRouterApiKey: "existing-key", + selectedModel: "google/gemini-2.5-flash-image-preview:free", + }, + } as ProviderSettings + + render() + + // Should NOT call setApiConfigurationField on initial mount to prevent dirty state + expect(mockSetApiConfigurationField).not.toHaveBeenCalled() + }) + }) + + describe("User Interaction Behavior", () => { + it("should call setApiConfigurationField when user changes API key", async () => { + const { getByPlaceholderText } = render() + + const apiKeyInput = getByPlaceholderText( + "settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder", + ) + + // Simulate user typing + fireEvent.input(apiKeyInput, { target: { value: "new-api-key" } }) + + // Should call setApiConfigurationField with isUserAction=true + expect(mockSetApiConfigurationField).toHaveBeenCalledWith( + "openRouterImageGenerationSettings", + { + openRouterApiKey: "new-api-key", + selectedModel: "google/gemini-2.5-flash-image-preview", + }, + true, // This should be true for user actions + ) + }) + + // Note: Testing VSCode dropdown components is complex due to their custom nature + // The key functionality (not marking as dirty on initial mount) is already tested above + }) + + describe("Conditional Rendering", () => { + it("should render input fields when enabled is true", () => { + const { getByPlaceholderText } = render() + + expect( + getByPlaceholderText("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder"), + ).toBeInTheDocument() + }) + + it("should not render input fields when enabled is false", () => { + const { queryByPlaceholderText } = render() + + expect( + queryByPlaceholderText("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder"), + ).not.toBeInTheDocument() + }) + }) +}) From 88409029aaacca0bade9153fb77c9d15ed23cb15 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Aug 2025 11:21:07 -0400 Subject: [PATCH 032/228] Changeset version bump (#7491) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens --- .changeset/v3.26.2.md | 8 -------- CHANGELOG.md | 7 +++++++ src/package.json | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) delete mode 100644 .changeset/v3.26.2.md diff --git a/.changeset/v3.26.2.md b/.changeset/v3.26.2.md deleted file mode 100644 index fe2cbe2757dd..000000000000 --- a/.changeset/v3.26.2.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"roo-cline": patch ---- - -- feat: Add experimental image generation tool with OpenRouter integration (thanks @daniel-lxs!) -- Fix: Resolve GPT-5 Responses API issues with condensing and image support (#7334 by @nlbuescher, PR by @daniel-lxs) -- Fix: Hide .rooignore'd files from environment details by default (#7368 by @AlexBlack772, PR by @app/roomote) -- Fix: Exclude browser scroll actions from repetition detection (#7470 by @cgrierson-smartsheet, PR by @app/roomote) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36255fcee013..7cfd52af29f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Roo Code Changelog +## [3.26.2] - 2025-08-28 + +- feat: Add experimental image generation tool with OpenRouter integration (thanks @daniel-lxs!) +- Fix: Resolve GPT-5 Responses API issues with condensing and image support (#7334 by @nlbuescher, PR by @daniel-lxs) +- Fix: Hide .rooignore'd files from environment details by default (#7368 by @AlexBlack772, PR by @app/roomote) +- Fix: Exclude browser scroll actions from repetition detection (#7470 by @cgrierson-smartsheet, PR by @app/roomote) + ## [3.26.1] - 2025-08-27 - Add Vercel AI Gateway provider integration (thanks @joshualipman123!) diff --git a/src/package.json b/src/package.json index 8d806d2d3006..21bf9513bd0c 100644 --- a/src/package.json +++ b/src/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "RooVeterinaryInc", - "version": "3.26.1", + "version": "3.26.2", "icon": "assets/icons/icon.png", "galleryBanner": { "color": "#617A91", From aee531a14318f3b59ef2c00ca0cfbc368ac2459f Mon Sep 17 00:00:00 2001 From: Chris Hasson Date: Thu, 28 Aug 2025 09:51:21 -0700 Subject: [PATCH 033/228] Show console logging in vitests when the --no-silent flag is set (#7467) By default, all of the tests run in silent mode with monkey-patched the console logging so no console logging will ever appear in test output. This confuses the agent- sometimes it will add console logging to help it debug things, and it won't see the logs that it expects. Adds src/utils/vitest-verbosity.ts to handle verbosity resolution and console logging. Modifies src/vitest.config.ts and webview-ui/vitest.config.ts to integrate the new verbosity control. Removes manual console suppression from src/vitest.setup.ts and webview-ui/vitest.setup.ts as it's now handled dynamically. Co-authored-by: Chris Hasson --- src/utils/vitest-verbosity.ts | 22 ++++++++++++++++++++++ src/vitest.config.ts | 8 ++++++-- src/vitest.setup.ts | 16 ---------------- webview-ui/vitest.config.ts | 8 ++++++-- webview-ui/vitest.setup.ts | 16 ---------------- 5 files changed, 34 insertions(+), 36 deletions(-) create mode 100644 src/utils/vitest-verbosity.ts diff --git a/src/utils/vitest-verbosity.ts b/src/utils/vitest-verbosity.ts new file mode 100644 index 000000000000..bd44f977d337 --- /dev/null +++ b/src/utils/vitest-verbosity.ts @@ -0,0 +1,22 @@ +export function resolveVerbosity(argv = process.argv, env = process.env) { + // Check if --no-silent flag is used (native vitest flag) + const cliNoSilent = argv.includes("--no-silent") || argv.includes("--silent=false") + const silent = !cliNoSilent // Silent by default + + // Check if verbose reporter is requested + const wantsVerboseReporter = argv.some( + (a) => a === "--reporter=verbose" || a === "-r=verbose" || a === "--reporter", + ) + + return { + silent, + reporters: ["dot", ...(wantsVerboseReporter ? ["verbose"] : [])], + onConsoleLog: (_log: string, type: string) => { + // When verbose, show everything + // When silent, allow errors/warnings and drop info/log/warn noise + if (!silent || type === "stderr") return + + return false // Drop info/log/warn noise + }, + } +} diff --git a/src/vitest.config.ts b/src/vitest.config.ts index 4e576f3c96c4..3a6854d53280 100644 --- a/src/vitest.config.ts +++ b/src/vitest.config.ts @@ -1,15 +1,19 @@ import { defineConfig } from "vitest/config" import path from "path" +import { resolveVerbosity } from "./utils/vitest-verbosity" + +const { silent, reporters, onConsoleLog } = resolveVerbosity() export default defineConfig({ test: { globals: true, setupFiles: ["./vitest.setup.ts"], watch: false, - reporters: ["dot"], - silent: true, + reporters, + silent, testTimeout: 20_000, hookTimeout: 20_000, + onConsoleLog, }, resolve: { alias: { diff --git a/src/vitest.setup.ts b/src/vitest.setup.ts index a7a2c02701d0..fd0bce1cf33f 100644 --- a/src/vitest.setup.ts +++ b/src/vitest.setup.ts @@ -15,19 +15,3 @@ export function allowNetConnect(host?: string | RegExp) { // Global mocks that many tests expect. global.structuredClone = global.structuredClone || ((obj: any) => JSON.parse(JSON.stringify(obj))) - -// Suppress console.log during tests to reduce noise. -// Keep console.error for actual errors. -const originalConsoleLog = console.log -const originalConsoleWarn = console.warn -const originalConsoleInfo = console.info - -console.log = () => {} -console.warn = () => {} -console.info = () => {} - -afterAll(() => { - console.log = originalConsoleLog - console.warn = originalConsoleWarn - console.info = originalConsoleInfo -}) diff --git a/webview-ui/vitest.config.ts b/webview-ui/vitest.config.ts index 80f3f49cf6fd..595c51348d54 100644 --- a/webview-ui/vitest.config.ts +++ b/webview-ui/vitest.config.ts @@ -1,15 +1,19 @@ import { defineConfig } from "vitest/config" import path from "path" +import { resolveVerbosity } from "../src/utils/vitest-verbosity" + +const { silent, reporters, onConsoleLog } = resolveVerbosity() export default defineConfig({ test: { globals: true, setupFiles: ["./vitest.setup.ts"], watch: false, - reporters: ["dot"], - silent: true, + reporters, + silent, environment: "jsdom", include: ["src/**/*.spec.ts", "src/**/*.spec.tsx"], + onConsoleLog, }, resolve: { alias: { diff --git a/webview-ui/vitest.setup.ts b/webview-ui/vitest.setup.ts index 12210f0ec201..ee438035e281 100644 --- a/webview-ui/vitest.setup.ts +++ b/webview-ui/vitest.setup.ts @@ -50,19 +50,3 @@ Object.defineProperty(window, "matchMedia", { // Mock scrollIntoView which is not available in jsdom Element.prototype.scrollIntoView = vi.fn() - -// Suppress console.log during tests to reduce noise. -// Keep console.error for actual errors. -const originalConsoleLog = console.log -const originalConsoleWarn = console.warn -const originalConsoleInfo = console.info - -console.log = () => {} -console.warn = () => {} -console.info = () => {} - -afterAll(() => { - console.log = originalConsoleLog - console.warn = originalConsoleWarn - console.info = originalConsoleInfo -}) From cd9e92fa9baff8aae0623984bb9f40a9d2e02119 Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Thu, 28 Aug 2025 11:18:45 -0700 Subject: [PATCH 034/228] Move @roo-code/cloud to the Roo-Code repo (#7503) --- apps/web-roo-code/package.json | 2 +- package.json | 6 +- packages/cloud/eslint.config.mjs | 20 + packages/cloud/package.json | 29 + packages/cloud/src/CloudAPI.ts | 137 ++ packages/cloud/src/CloudService.ts | 363 +++++ packages/cloud/src/CloudSettingsService.ts | 282 ++++ packages/cloud/src/CloudShareService.ts | 50 + packages/cloud/src/RefreshTimer.ts | 154 +++ packages/cloud/src/StaticSettingsService.ts | 78 ++ packages/cloud/src/StaticTokenAuthService.ts | 93 ++ packages/cloud/src/TelemetryClient.ts | 246 ++++ packages/cloud/src/WebAuthService.ts | 727 ++++++++++ packages/cloud/src/__mocks__/vscode.ts | 59 + .../CloudService.integration.test.ts | 147 ++ .../cloud/src/__tests__/CloudService.test.ts | 600 +++++++++ .../CloudSettingsService.parsing.test.ts | 172 +++ .../__tests__/CloudSettingsService.test.ts | 535 ++++++++ .../src/__tests__/CloudShareService.test.ts | 318 +++++ .../cloud/src/__tests__/RefreshTimer.test.ts | 210 +++ .../__tests__/StaticSettingsService.test.ts | 102 ++ .../__tests__/StaticTokenAuthService.spec.ts | 314 +++++ .../src/__tests__/TelemetryClient.test.ts | 740 ++++++++++ .../src/__tests__/WebAuthService.spec.ts | 1196 +++++++++++++++++ .../src/bridge/ExtensionBridgeService.ts | 290 ++++ packages/cloud/src/bridge/ExtensionManager.ts | 297 ++++ .../src/bridge/SocketConnectionManager.ts | 289 ++++ packages/cloud/src/bridge/TaskManager.ts | 279 ++++ packages/cloud/src/config.ts | 6 + packages/cloud/src/errors.ts | 42 + packages/cloud/src/importVscode.ts | 49 + packages/cloud/src/index.ts | 5 + packages/cloud/src/utils.ts | 5 + packages/cloud/tsconfig.json | 9 + packages/cloud/vitest.config.ts | 14 + packages/config-typescript/base.json | 3 +- packages/telemetry/package.json | 2 +- packages/types/npm/package.metadata.json | 2 +- packages/types/src/__tests__/ipc.test.ts | 1 - .../src/__tests__/provider-settings.test.ts | 1 - packages/types/src/cloud.ts | 618 +++++++++ packages/types/src/index.ts | 1 + .../providers/__tests__/claude-code.spec.ts | 1 - pnpm-lock.yaml | 170 ++- scripts/link-packages.ts | 340 ----- src/__tests__/command-integration.spec.ts | 4 +- src/__tests__/command-mentions.spec.ts | 1 - src/__tests__/commands.spec.ts | 1 - .../__tests__/bedrock-error-handling.spec.ts | 2 - src/api/providers/__tests__/cerebras.spec.ts | 2 - .../__tests__/claude-code-caching.spec.ts | 4 +- .../providers/__tests__/claude-code.spec.ts | 1 - src/api/providers/__tests__/constants.spec.ts | 1 - .../__tests__/gemini-handler.spec.ts | 2 +- .../__tests__/io-intelligence.spec.ts | 4 +- src/api/providers/__tests__/lite-llm.spec.ts | 1 - src/api/providers/__tests__/roo.spec.ts | 1 - .../fetchers/__tests__/lmstudio.test.ts | 7 +- .../fetchers/__tests__/ollama.test.ts | 3 +- src/api/providers/roo.ts | 1 + .../__tests__/AssistantMessageParser.spec.ts | 2 - .../__tests__/context-error-handling.test.ts | 2 +- src/core/mentions/__tests__/index.spec.ts | 3 +- .../processUserContentMentions.spec.ts | 1 - .../__tests__/get-prompt-component.spec.ts | 4 +- .../custom-instructions-global.spec.ts | 1 - ...custom-instructions-path-detection.spec.ts | 2 - .../__tests__/fetch-instructions.spec.ts | 1 - .../prompts/tools/__tests__/new-task.spec.ts | 1 - .../__tests__/AutoApprovalHandler.spec.ts | 4 +- src/core/task/__tests__/Task.dispose.test.ts | 4 +- .../__tests__/askFollowupQuestionTool.spec.ts | 1 - .../__tests__/attemptCompletionTool.spec.ts | 2 +- src/core/webview/ClineProvider.ts | 5 +- .../webview/__tests__/ClineProvider.spec.ts | 3 +- .../webview/__tests__/messageEnhancer.test.ts | 4 +- src/core/webview/webviewMessageHandler.ts | 1 + src/extension.ts | 3 +- .../__tests__/message-filter.spec.ts | 4 +- .../claude-code/__tests__/run.spec.ts | 2 - .../extract-text-large-files.spec.ts | 2 +- .../misc/__tests__/open-file.spec.ts | 4 +- src/package.json | 6 +- .../browser/__tests__/BrowserSession.spec.ts | 2 - .../__tests__/UrlContentFetcher.spec.ts | 21 +- .../__tests__/config-manager.spec.ts | 2 - .../embedders/__tests__/mistral.spec.ts | 2 +- .../embedders/__tests__/ollama.spec.ts | 2 +- .../openai-compatible-rate-limit.spec.ts | 3 +- .../embedders/__tests__/openai.spec.ts | 4 +- .../__tests__/vercel-ai-gateway.spec.ts | 1 - .../processors/__tests__/parser.vb.spec.ts | 2 - .../__tests__/get-relative-path.spec.ts | 2 +- .../__tests__/validation-helpers.spec.ts | 1 - .../__tests__/built-in-commands.spec.ts | 1 - .../__tests__/frontmatter-commands.spec.ts | 2 +- .../__tests__/gitignore-integration.spec.ts | 1 - .../glob/__tests__/gitignore-test.spec.ts | 1 - .../glob/__tests__/list-files.spec.ts | 3 +- .../marketplace/MarketplaceManager.ts | 4 +- .../marketplace/RemoteConfigLoader.ts | 22 +- src/services/mcp/__tests__/McpHub.spec.ts | 13 +- src/services/mdm/MdmService.ts | 3 +- src/services/mdm/__tests__/MdmService.spec.ts | 1 - .../roo-config/__tests__/index.spec.ts | 1 - src/shared/ExtensionMessage.ts | 4 +- src/shared/ProfileValidator.ts | 3 +- src/shared/WebviewMessage.ts | 2 +- src/shared/__tests__/ProfileValidator.spec.ts | 3 +- src/shared/__tests__/api.spec.ts | 10 +- ...experiments-preventFocusDisruption.spec.ts | 1 - .../modes-empty-prompt-component.spec.ts | 4 +- src/shared/cloud.ts | 8 - src/shared/utils/__tests__/requesty.spec.ts | 1 - src/tsconfig.json | 2 +- .../__tests__/autoImportSettings.spec.ts | 2 - src/utils/__tests__/migrateSettings.spec.ts | 4 +- src/utils/__tests__/object.spec.ts | 1 - src/utils/__tests__/safeWriteJson.test.ts | 4 +- src/utils/remoteControl.ts | 2 +- .../__tests__/command-autocomplete.spec.ts | 4 +- .../__tests__/ErrorBoundary.spec.tsx | 2 +- .../src/components/account/AccountView.tsx | 4 +- .../account/__tests__/AccountView.spec.tsx | 2 +- .../src/components/chat/ShareButton.tsx | 4 +- .../chat/__tests__/ApiConfigSelector.spec.tsx | 5 +- .../chat/__tests__/ChatView.spec.tsx | 5 +- .../chat/__tests__/CommandExecution.spec.tsx | 2 +- .../__tests__/CommandPatternSelector.spec.tsx | 2 +- .../chat/__tests__/FollowUpSuggest.spec.tsx | 3 +- .../chat/__tests__/ShareButton.spec.tsx | 7 +- .../chat/__tests__/TaskActions.spec.tsx | 7 +- .../__tests__/FormattedTextField.spec.tsx | 3 +- .../common/__tests__/MarkdownBlock.spec.tsx | 3 +- .../__tests__/MarketplaceView.spec.tsx | 7 +- .../components/settings/ApiConfigManager.tsx | 4 +- .../src/components/settings/ModelPicker.tsx | 4 +- .../ApiOptions.provider-filtering.spec.tsx | 11 +- .../ImageGenerationSettings.spec.tsx | 5 +- .../settings/__tests__/MaxCostInput.spec.tsx | 2 +- .../__tests__/MaxRequestsInput.spec.tsx | 2 +- .../settings/__tests__/ModelPicker.spec.tsx | 1 - .../TodoListSettingsControl.spec.tsx | 3 +- .../components/settings/providers/Glama.tsx | 3 +- .../settings/providers/IOIntelligence.tsx | 9 +- .../components/settings/providers/LiteLLM.tsx | 3 +- .../settings/providers/OpenAICompatible.tsx | 2 +- .../settings/providers/OpenRouter.tsx | 3 +- .../settings/providers/Requesty.tsx | 3 +- .../components/settings/providers/Unbound.tsx | 3 +- .../settings/providers/VercelAiGateway.tsx | 3 +- .../__tests__/organizationFilters.test.ts | 4 +- .../settings/utils/organizationFilters.ts | 4 +- .../components/ui/__tests__/tooltip.spec.tsx | 2 +- .../src/context/ExtensionStateContext.tsx | 3 +- webview-ui/src/hooks/useEscapeKey.spec.ts | 2 +- .../utils/__tests__/command-parser.spec.ts | 1 - webview-ui/src/utils/__tests__/format.spec.ts | 1 - .../utils/__tests__/sourceMapUtils.spec.ts | 1 - .../src/utils/__tests__/validate.test.ts | 3 +- webview-ui/src/utils/validate.ts | 3 +- webview-ui/tsconfig.json | 2 +- webview-ui/vite.config.ts | 1 + 163 files changed, 8747 insertions(+), 647 deletions(-) create mode 100644 packages/cloud/eslint.config.mjs create mode 100644 packages/cloud/package.json create mode 100644 packages/cloud/src/CloudAPI.ts create mode 100644 packages/cloud/src/CloudService.ts create mode 100644 packages/cloud/src/CloudSettingsService.ts create mode 100644 packages/cloud/src/CloudShareService.ts create mode 100644 packages/cloud/src/RefreshTimer.ts create mode 100644 packages/cloud/src/StaticSettingsService.ts create mode 100644 packages/cloud/src/StaticTokenAuthService.ts create mode 100644 packages/cloud/src/TelemetryClient.ts create mode 100644 packages/cloud/src/WebAuthService.ts create mode 100644 packages/cloud/src/__mocks__/vscode.ts create mode 100644 packages/cloud/src/__tests__/CloudService.integration.test.ts create mode 100644 packages/cloud/src/__tests__/CloudService.test.ts create mode 100644 packages/cloud/src/__tests__/CloudSettingsService.parsing.test.ts create mode 100644 packages/cloud/src/__tests__/CloudSettingsService.test.ts create mode 100644 packages/cloud/src/__tests__/CloudShareService.test.ts create mode 100644 packages/cloud/src/__tests__/RefreshTimer.test.ts create mode 100644 packages/cloud/src/__tests__/StaticSettingsService.test.ts create mode 100644 packages/cloud/src/__tests__/StaticTokenAuthService.spec.ts create mode 100644 packages/cloud/src/__tests__/TelemetryClient.test.ts create mode 100644 packages/cloud/src/__tests__/WebAuthService.spec.ts create mode 100644 packages/cloud/src/bridge/ExtensionBridgeService.ts create mode 100644 packages/cloud/src/bridge/ExtensionManager.ts create mode 100644 packages/cloud/src/bridge/SocketConnectionManager.ts create mode 100644 packages/cloud/src/bridge/TaskManager.ts create mode 100644 packages/cloud/src/config.ts create mode 100644 packages/cloud/src/errors.ts create mode 100644 packages/cloud/src/importVscode.ts create mode 100644 packages/cloud/src/index.ts create mode 100644 packages/cloud/src/utils.ts create mode 100644 packages/cloud/tsconfig.json create mode 100644 packages/cloud/vitest.config.ts create mode 100644 packages/types/src/cloud.ts delete mode 100644 scripts/link-packages.ts delete mode 100644 src/shared/cloud.ts diff --git a/apps/web-roo-code/package.json b/apps/web-roo-code/package.json index fa59cacccbe8..6aa808c9c2b0 100644 --- a/apps/web-roo-code/package.json +++ b/apps/web-roo-code/package.json @@ -22,7 +22,7 @@ "embla-carousel-auto-scroll": "^8.6.0", "embla-carousel-autoplay": "^8.6.0", "embla-carousel-react": "^8.6.0", - "framer-motion": "^12.15.0", + "framer-motion": "12.15.0", "lucide-react": "^0.518.0", "next": "^15.2.5", "next-themes": "^0.4.6", diff --git a/package.json b/package.json index cdc8a1abcaba..f7f351d3fc21 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,7 @@ "knip": "knip --include files", "update-contributors": "node scripts/update-contributors.js", "evals": "dotenvx run -f packages/evals/.env.development packages/evals/.env.local -- docker compose -f packages/evals/docker-compose.yml --profile server --profile runner up --build --scale runner=0", - "npm:publish:types": "pnpm --filter @roo-code/types npm:publish", - "link-workspace-packages": "tsx scripts/link-packages.ts", - "unlink-workspace-packages": "tsx scripts/link-packages.ts --unlink" + "npm:publish:types": "pnpm --filter @roo-code/types npm:publish" }, "devDependencies": { "@changesets/cli": "^2.27.10", @@ -47,7 +45,7 @@ "prettier": "^3.4.2", "rimraf": "^6.0.1", "tsx": "^4.19.3", - "turbo": "^2.5.3", + "turbo": "^2.5.6", "typescript": "^5.4.5" }, "lint-staged": { diff --git a/packages/cloud/eslint.config.mjs b/packages/cloud/eslint.config.mjs new file mode 100644 index 000000000000..c603a68f12df --- /dev/null +++ b/packages/cloud/eslint.config.mjs @@ -0,0 +1,20 @@ +import { config } from "@roo-code/config-eslint/base" +import globals from "globals" + +/** @type {import("eslint").Linter.Config} */ +export default [ + ...config, + { + files: ["**/*.cjs"], + languageOptions: { + globals: { + ...globals.node, + ...globals.commonjs, + }, + sourceType: "commonjs", + }, + rules: { + "@typescript-eslint/no-require-imports": "off", + }, + }, +] diff --git a/packages/cloud/package.json b/packages/cloud/package.json new file mode 100644 index 000000000000..2d4456d27398 --- /dev/null +++ b/packages/cloud/package.json @@ -0,0 +1,29 @@ +{ + "name": "@roo-code/cloud", + "description": "Roo Code Cloud services.", + "version": "0.0.0", + "type": "module", + "exports": "./src/index.ts", + "scripts": { + "lint": "eslint src --ext=ts --max-warnings=0", + "check-types": "tsc --noEmit", + "test": "vitest run", + "clean": "rimraf .turbo" + }, + "dependencies": { + "@roo-code/types": "workspace:^", + "ioredis": "^5.6.1", + "jwt-decode": "^4.0.0", + "p-wait-for": "^5.0.2", + "socket.io-client": "^4.8.1", + "zod": "^3.25.76" + }, + "devDependencies": { + "@roo-code/config-eslint": "workspace:^", + "@roo-code/config-typescript": "workspace:^", + "@types/node": "^24.1.0", + "@types/vscode": "^1.102.0", + "globals": "^16.3.0", + "vitest": "^3.2.4" + } +} diff --git a/packages/cloud/src/CloudAPI.ts b/packages/cloud/src/CloudAPI.ts new file mode 100644 index 000000000000..d1c3f89c2b89 --- /dev/null +++ b/packages/cloud/src/CloudAPI.ts @@ -0,0 +1,137 @@ +import { z } from "zod" + +import { type AuthService, type ShareVisibility, type ShareResponse, shareResponseSchema } from "@roo-code/types" + +import { getRooCodeApiUrl } from "./config.js" +import { getUserAgent } from "./utils.js" +import { AuthenticationError, CloudAPIError, NetworkError, TaskNotFoundError } from "./errors.js" + +interface CloudAPIRequestOptions extends Omit { + timeout?: number + headers?: Record +} + +export class CloudAPI { + private authService: AuthService + private log: (...args: unknown[]) => void + private baseUrl: string + + constructor(authService: AuthService, log?: (...args: unknown[]) => void) { + this.authService = authService + this.log = log || console.log + this.baseUrl = getRooCodeApiUrl() + } + + private async request( + endpoint: string, + options: CloudAPIRequestOptions & { + parseResponse?: (data: unknown) => T + } = {}, + ): Promise { + const { timeout = 30_000, parseResponse, headers = {}, ...fetchOptions } = options + + const sessionToken = this.authService.getSessionToken() + + if (!sessionToken) { + throw new AuthenticationError() + } + + const url = `${this.baseUrl}${endpoint}` + + const requestHeaders = { + "Content-Type": "application/json", + Authorization: `Bearer ${sessionToken}`, + "User-Agent": getUserAgent(), + ...headers, + } + + try { + const response = await fetch(url, { + ...fetchOptions, + headers: requestHeaders, + signal: AbortSignal.timeout(timeout), + }) + + if (!response.ok) { + await this.handleErrorResponse(response, endpoint) + } + + const data = await response.json() + + if (parseResponse) { + return parseResponse(data) + } + + return data as T + } catch (error) { + if (error instanceof TypeError && error.message.includes("fetch")) { + throw new NetworkError(`Network error while calling ${endpoint}`) + } + + if (error instanceof CloudAPIError) { + throw error + } + + if (error instanceof Error && error.name === "AbortError") { + throw new CloudAPIError(`Request to ${endpoint} timed out`, undefined, undefined) + } + + throw new CloudAPIError( + `Unexpected error while calling ${endpoint}: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + + private async handleErrorResponse(response: Response, endpoint: string): Promise { + let responseBody: unknown + + try { + responseBody = await response.json() + } catch { + responseBody = await response.text() + } + + switch (response.status) { + case 401: + throw new AuthenticationError() + case 404: + if (endpoint.includes("/share")) { + throw new TaskNotFoundError() + } + throw new CloudAPIError(`Resource not found: ${endpoint}`, 404, responseBody) + default: + throw new CloudAPIError( + `HTTP ${response.status}: ${response.statusText}`, + response.status, + responseBody, + ) + } + } + + async shareTask(taskId: string, visibility: ShareVisibility = "organization"): Promise { + this.log(`[CloudAPI] Sharing task ${taskId} with visibility: ${visibility}`) + + const response = await this.request("/api/extension/share", { + method: "POST", + body: JSON.stringify({ taskId, visibility }), + parseResponse: (data) => shareResponseSchema.parse(data), + }) + + this.log("[CloudAPI] Share response:", response) + return response + } + + async bridgeConfig() { + return this.request("/api/extension/bridge/config", { + method: "GET", + parseResponse: (data) => + z + .object({ + userId: z.string(), + socketBridgeUrl: z.string(), + token: z.string(), + }) + .parse(data), + }) + } +} diff --git a/packages/cloud/src/CloudService.ts b/packages/cloud/src/CloudService.ts new file mode 100644 index 000000000000..8c8320cba7f0 --- /dev/null +++ b/packages/cloud/src/CloudService.ts @@ -0,0 +1,363 @@ +import type { Disposable, ExtensionContext } from "vscode" +import EventEmitter from "events" + +import type { + TelemetryEvent, + ClineMessage, + CloudServiceEvents, + AuthService, + SettingsService, + CloudUserInfo, + OrganizationAllowList, + OrganizationSettings, + ShareVisibility, + UserSettingsConfig, + UserSettingsData, + UserFeatures, +} from "@roo-code/types" + +import { TaskNotFoundError } from "./errors.js" +import { WebAuthService } from "./WebAuthService.js" +import { StaticTokenAuthService } from "./StaticTokenAuthService.js" +import { CloudSettingsService } from "./CloudSettingsService.js" +import { StaticSettingsService } from "./StaticSettingsService.js" +import { CloudTelemetryClient as TelemetryClient } from "./TelemetryClient.js" +import { CloudShareService } from "./CloudShareService.js" +import { CloudAPI } from "./CloudAPI.js" + +type AuthStateChangedPayload = CloudServiceEvents["auth-state-changed"][0] +type AuthUserInfoPayload = CloudServiceEvents["user-info"][0] +type SettingsPayload = CloudServiceEvents["settings-updated"][0] + +export class CloudService extends EventEmitter implements Disposable { + private static _instance: CloudService | null = null + + private context: ExtensionContext + + private authStateListener: (data: AuthStateChangedPayload) => void + private authUserInfoListener: (data: AuthUserInfoPayload) => void + private settingsListener: (data: SettingsPayload) => void + + private isInitialized = false + private log: (...args: unknown[]) => void + + /** + * Services + */ + + private _authService: AuthService | null = null + + public get authService() { + return this._authService + } + + private _settingsService: SettingsService | null = null + + public get settingsService() { + return this._settingsService + } + + private _telemetryClient: TelemetryClient | null = null + + public get telemetryClient() { + return this._telemetryClient + } + + private _shareService: CloudShareService | null = null + + public get shareService() { + return this._shareService + } + + private _cloudAPI: CloudAPI | null = null + + public get cloudAPI() { + return this._cloudAPI + } + + private constructor(context: ExtensionContext, log?: (...args: unknown[]) => void) { + super() + + this.context = context + this.log = log || console.log + + this.authStateListener = (data: AuthStateChangedPayload) => { + this.emit("auth-state-changed", data) + } + + this.authUserInfoListener = (data: AuthUserInfoPayload) => { + this.emit("user-info", data) + } + + this.settingsListener = (data: SettingsPayload) => { + this.emit("settings-updated", data) + } + } + + public async initialize(): Promise { + if (this.isInitialized) { + return + } + + try { + // For testing you can create a token with: + // `pnpm --filter @roo-code-cloud/roomote-cli development auth job-token --job-id 1 --user-id user_2xmBhejNeDTwanM8CgIOnMgVxzC --org-id org_2wbhchVXZMQl8OS1yt0mrDazCpW` + // The token will last for 1 hour. + const cloudToken = process.env.ROO_CODE_CLOUD_TOKEN + + if (cloudToken && cloudToken.length > 0) { + this._authService = new StaticTokenAuthService(this.context, cloudToken, this.log) + } else { + this._authService = new WebAuthService(this.context, this.log) + } + + this._authService.on("auth-state-changed", this.authStateListener) + this._authService.on("user-info", this.authUserInfoListener) + await this._authService.initialize() + + // Check for static settings environment variable. + const staticOrgSettings = process.env.ROO_CODE_CLOUD_ORG_SETTINGS + + if (staticOrgSettings && staticOrgSettings.length > 0) { + this._settingsService = new StaticSettingsService(staticOrgSettings, this.log) + } else { + const cloudSettingsService = new CloudSettingsService(this.context, this._authService, this.log) + + cloudSettingsService.on("settings-updated", this.settingsListener) + await cloudSettingsService.initialize() + + this._settingsService = cloudSettingsService + } + + this._cloudAPI = new CloudAPI(this._authService, this.log) + + this._telemetryClient = new TelemetryClient(this._authService, this._settingsService) + + this._shareService = new CloudShareService(this._cloudAPI, this._settingsService, this.log) + + this.isInitialized = true + } catch (error) { + this.log("[CloudService] Failed to initialize:", error) + throw new Error(`Failed to initialize CloudService: ${error}`) + } + } + + // AuthService + + public async login(): Promise { + this.ensureInitialized() + return this.authService!.login() + } + + public async logout(): Promise { + this.ensureInitialized() + return this.authService!.logout() + } + + public isAuthenticated(): boolean { + this.ensureInitialized() + return this.authService!.isAuthenticated() + } + + public hasActiveSession(): boolean { + this.ensureInitialized() + return this.authService!.hasActiveSession() + } + + public hasOrIsAcquiringActiveSession(): boolean { + this.ensureInitialized() + return this.authService!.hasOrIsAcquiringActiveSession() + } + + public getUserInfo(): CloudUserInfo | null { + this.ensureInitialized() + return this.authService!.getUserInfo() + } + + public getOrganizationId(): string | null { + this.ensureInitialized() + const userInfo = this.authService!.getUserInfo() + return userInfo?.organizationId || null + } + + public getOrganizationName(): string | null { + this.ensureInitialized() + const userInfo = this.authService!.getUserInfo() + return userInfo?.organizationName || null + } + + public getOrganizationRole(): string | null { + this.ensureInitialized() + const userInfo = this.authService!.getUserInfo() + return userInfo?.organizationRole || null + } + + public hasStoredOrganizationId(): boolean { + this.ensureInitialized() + return this.authService!.getStoredOrganizationId() !== null + } + + public getStoredOrganizationId(): string | null { + this.ensureInitialized() + return this.authService!.getStoredOrganizationId() + } + + public getAuthState(): string { + this.ensureInitialized() + return this.authService!.getState() + } + + public async handleAuthCallback( + code: string | null, + state: string | null, + organizationId?: string | null, + ): Promise { + this.ensureInitialized() + return this.authService!.handleCallback(code, state, organizationId) + } + + // SettingsService + + public getAllowList(): OrganizationAllowList { + this.ensureInitialized() + return this.settingsService!.getAllowList() + } + + public getOrganizationSettings(): OrganizationSettings | undefined { + this.ensureInitialized() + return this.settingsService!.getSettings() + } + + public getUserSettings(): UserSettingsData | undefined { + this.ensureInitialized() + return this.settingsService!.getUserSettings() + } + + public getUserFeatures(): UserFeatures { + this.ensureInitialized() + return this.settingsService!.getUserFeatures() + } + + public getUserSettingsConfig(): UserSettingsConfig { + this.ensureInitialized() + return this.settingsService!.getUserSettingsConfig() + } + + public async updateUserSettings(settings: Partial): Promise { + this.ensureInitialized() + return this.settingsService!.updateUserSettings(settings) + } + + // TelemetryClient + + public captureEvent(event: TelemetryEvent): void { + this.ensureInitialized() + this.telemetryClient!.capture(event) + } + + // ShareService + + public async shareTask( + taskId: string, + visibility: ShareVisibility = "organization", + clineMessages?: ClineMessage[], + ) { + this.ensureInitialized() + + try { + return await this.shareService!.shareTask(taskId, visibility) + } catch (error) { + if (error instanceof TaskNotFoundError && clineMessages) { + // Backfill messages and retry. + await this.telemetryClient!.backfillMessages(clineMessages, taskId) + return await this.shareService!.shareTask(taskId, visibility) + } + + throw error + } + } + + public async canShareTask(): Promise { + this.ensureInitialized() + return this.shareService!.canShareTask() + } + + // Lifecycle + + public dispose(): void { + if (this.authService) { + this.authService.off("auth-state-changed", this.authStateListener) + this.authService.off("user-info", this.authUserInfoListener) + } + + if (this.settingsService) { + if (this.settingsService instanceof CloudSettingsService) { + this.settingsService.off("settings-updated", this.settingsListener) + } + + this.settingsService.dispose() + } + + this.isInitialized = false + } + + private ensureInitialized(): void { + if (!this.isInitialized) { + throw new Error("CloudService not initialized.") + } + } + + static get instance(): CloudService { + if (!this._instance) { + throw new Error("CloudService not initialized") + } + + return this._instance + } + + static async createInstance( + context: ExtensionContext, + log?: (...args: unknown[]) => void, + eventHandlers?: Partial<{ + [K in keyof CloudServiceEvents]: (...args: CloudServiceEvents[K]) => void + }>, + ): Promise { + if (this._instance) { + throw new Error("CloudService instance already created") + } + + this._instance = new CloudService(context, log) + + await this._instance.initialize() + + if (eventHandlers) { + for (const [event, handler] of Object.entries(eventHandlers)) { + if (handler) { + this._instance.on( + event as keyof CloudServiceEvents, + handler as (...args: CloudServiceEvents[keyof CloudServiceEvents]) => void, + ) + } + } + } + + await this._instance.authService?.broadcast() + + return this._instance + } + + static hasInstance(): boolean { + return this._instance !== null && this._instance.isInitialized + } + + static resetInstance(): void { + if (this._instance) { + this._instance.dispose() + this._instance = null + } + } + + static isEnabled(): boolean { + return !!this._instance?.isAuthenticated() + } +} diff --git a/packages/cloud/src/CloudSettingsService.ts b/packages/cloud/src/CloudSettingsService.ts new file mode 100644 index 000000000000..4117dbb0bdf0 --- /dev/null +++ b/packages/cloud/src/CloudSettingsService.ts @@ -0,0 +1,282 @@ +import EventEmitter from "events" + +import type { ExtensionContext } from "vscode" + +import { z } from "zod" + +import { + type SettingsService, + type SettingsServiceEvents, + type AuthService, + type AuthState, + type UserFeatures, + type UserSettingsConfig, + type UserSettingsData, + OrganizationAllowList, + OrganizationSettings, + organizationSettingsSchema, + userSettingsDataSchema, + ORGANIZATION_ALLOW_ALL, +} from "@roo-code/types" + +import { getRooCodeApiUrl } from "./config.js" +import { RefreshTimer } from "./RefreshTimer.js" + +const ORGANIZATION_SETTINGS_CACHE_KEY = "organization-settings" +const USER_SETTINGS_CACHE_KEY = "user-settings" + +const parseExtensionSettingsResponse = (data: unknown) => { + const shapeResult = z.object({ organization: z.unknown(), user: z.unknown() }).safeParse(data) + + if (!shapeResult.success) { + return { success: false, error: shapeResult.error } as const + } + + const orgResult = organizationSettingsSchema.safeParse(shapeResult.data.organization) + + if (!orgResult.success) { + return { success: false, error: orgResult.error } as const + } + + const userResult = userSettingsDataSchema.safeParse(shapeResult.data.user) + + if (!userResult.success) { + return { success: false, error: userResult.error } as const + } + + return { + success: true, + data: { organization: orgResult.data, user: userResult.data }, + } as const +} + +export class CloudSettingsService extends EventEmitter implements SettingsService { + private context: ExtensionContext + private authService: AuthService + private settings: OrganizationSettings | undefined = undefined + private userSettings: UserSettingsData | undefined = undefined + private timer: RefreshTimer + private log: (...args: unknown[]) => void + + constructor(context: ExtensionContext, authService: AuthService, log?: (...args: unknown[]) => void) { + super() + + this.context = context + this.authService = authService + this.log = log || console.log + + this.timer = new RefreshTimer({ + callback: async () => { + return await this.fetchSettings() + }, + successInterval: 30000, + initialBackoffMs: 1000, + maxBackoffMs: 30000, + }) + } + + public async initialize(): Promise { + this.loadCachedSettings() + + // Clear cached settings if we have missed a log out. + if (this.authService.getState() == "logged-out" && (this.settings || this.userSettings)) { + await this.removeSettings() + } + + this.authService.on("auth-state-changed", async (data: { state: AuthState; previousState: AuthState }) => { + try { + if (data.state === "active-session") { + this.timer.start() + } else if (data.previousState === "active-session") { + this.timer.stop() + + if (data.state === "logged-out") { + await this.removeSettings() + } + } + } catch (error) { + this.log(`[cloud-settings] error processing auth-state-changed: ${error}`, error) + } + }) + + if (this.authService.hasActiveSession()) { + this.timer.start() + } + } + + private async fetchSettings(): Promise { + const token = this.authService.getSessionToken() + + if (!token) { + return false + } + + try { + const response = await fetch(`${getRooCodeApiUrl()}/api/extension-settings`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }) + + if (!response.ok) { + this.log("[cloud-settings] Failed to fetch extension settings:", response.status, response.statusText) + return false + } + + const data = await response.json() + const result = parseExtensionSettingsResponse(data) + + if (!result.success) { + this.log("[cloud-settings] Invalid extension settings format:", result.error) + return false + } + + const { organization: newOrgSettings, user: newUserSettings } = result.data + + let orgChanged = false + let userChanged = false + + // Check for organization settings changes + if (!this.settings || this.settings.version !== newOrgSettings.version) { + this.settings = newOrgSettings + orgChanged = true + } + + // Check for user settings changes + if (!this.userSettings || this.userSettings.version !== newUserSettings.version) { + this.userSettings = newUserSettings + userChanged = true + } + + // Emit a single event if either settings changed + if (orgChanged || userChanged) { + this.emit("settings-updated", {} as Record) + } + + const hasChanges = orgChanged || userChanged + + if (hasChanges) { + await this.cacheSettings() + } + + return true + } catch (error) { + this.log("[cloud-settings] Error fetching extension settings:", error) + return false + } + } + + private async cacheSettings(): Promise { + // Store settings in separate globalState values + if (this.settings) { + await this.context.globalState.update(ORGANIZATION_SETTINGS_CACHE_KEY, this.settings) + } + + if (this.userSettings) { + await this.context.globalState.update(USER_SETTINGS_CACHE_KEY, this.userSettings) + } + } + + private loadCachedSettings(): void { + // Load settings from separate globalState values + this.settings = this.context.globalState.get(ORGANIZATION_SETTINGS_CACHE_KEY) + this.userSettings = this.context.globalState.get(USER_SETTINGS_CACHE_KEY) + } + + public getAllowList(): OrganizationAllowList { + return this.settings?.allowList || ORGANIZATION_ALLOW_ALL + } + + public getSettings(): OrganizationSettings | undefined { + return this.settings + } + + public getUserSettings(): UserSettingsData | undefined { + return this.userSettings + } + + public getUserFeatures(): UserFeatures { + return this.userSettings?.features || {} + } + + public getUserSettingsConfig(): UserSettingsConfig { + return this.userSettings?.settings || {} + } + + public async updateUserSettings(settings: Partial): Promise { + const token = this.authService.getSessionToken() + + if (!token) { + this.log("[cloud-settings] No session token available for updating user settings") + return false + } + + try { + const currentVersion = this.userSettings?.version + const requestBody: { + settings: Partial + version?: number + } = { + settings, + } + + // Include current version for optimistic locking if we have cached settings + if (currentVersion !== undefined) { + requestBody.version = currentVersion + } + + const response = await fetch(`${getRooCodeApiUrl()}/api/user-settings`, { + method: "PATCH", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify(requestBody), + }) + + if (!response.ok) { + if (response.status === 409) { + this.log( + "[cloud-settings] Version conflict when updating user settings - settings may have been updated elsewhere", + ) + } else { + this.log("[cloud-settings] Failed to update user settings:", response.status, response.statusText) + } + return false + } + + const updatedUserSettings = await response.json() + const result = userSettingsDataSchema.safeParse(updatedUserSettings) + + if (!result.success) { + this.log("[cloud-settings] Invalid user settings response format:", result.error) + return false + } + + if (!this.userSettings || result.data.version > this.userSettings.version) { + this.userSettings = result.data + await this.cacheSettings() + this.emit("settings-updated", {} as Record) + } + + return true + } catch (error) { + this.log("[cloud-settings] Error updating user settings:", error) + return false + } + } + + private async removeSettings(): Promise { + this.settings = undefined + this.userSettings = undefined + + // Clear both cache keys + await this.context.globalState.update(ORGANIZATION_SETTINGS_CACHE_KEY, undefined) + await this.context.globalState.update(USER_SETTINGS_CACHE_KEY, undefined) + } + + public dispose(): void { + this.removeAllListeners() + this.timer.stop() + } +} diff --git a/packages/cloud/src/CloudShareService.ts b/packages/cloud/src/CloudShareService.ts new file mode 100644 index 000000000000..dfed068f2408 --- /dev/null +++ b/packages/cloud/src/CloudShareService.ts @@ -0,0 +1,50 @@ +import type { SettingsService, ShareResponse, ShareVisibility } from "@roo-code/types" + +import { importVscode } from "./importVscode.js" +import type { CloudAPI } from "./CloudAPI.js" + +export class CloudShareService { + private cloudAPI: CloudAPI + private settingsService: SettingsService + private log: (...args: unknown[]) => void + + constructor(cloudAPI: CloudAPI, settingsService: SettingsService, log?: (...args: unknown[]) => void) { + this.cloudAPI = cloudAPI + this.settingsService = settingsService + this.log = log || console.log + } + + async shareTask(taskId: string, visibility: ShareVisibility = "organization"): Promise { + try { + const response = await this.cloudAPI.shareTask(taskId, visibility) + + if (response.success && response.shareUrl) { + const vscode = await importVscode() + + if (vscode?.env?.clipboard?.writeText) { + try { + await vscode.env.clipboard.writeText(response.shareUrl) + } catch (copyErr) { + this.log("[ShareService] Clipboard write failed (non-fatal):", copyErr) + } + } else { + this.log("[ShareService] VS Code clipboard unavailable; running outside extension host.") + } + } + + return response + } catch (error) { + this.log("[ShareService] Error sharing task:", error) + throw error + } + } + + async canShareTask(): Promise { + try { + return !!this.settingsService.getSettings()?.cloudSettings?.enableTaskSharing + } catch (error) { + this.log("[ShareService] Error checking if task can be shared:", error) + return false + } + } +} diff --git a/packages/cloud/src/RefreshTimer.ts b/packages/cloud/src/RefreshTimer.ts new file mode 100644 index 000000000000..e7294222d78f --- /dev/null +++ b/packages/cloud/src/RefreshTimer.ts @@ -0,0 +1,154 @@ +/** + * RefreshTimer - A utility for executing a callback with configurable retry behavior + * + * This timer executes a callback function and schedules the next execution based on the result: + * - If the callback succeeds (returns true), it schedules the next attempt after a fixed interval + * - If the callback fails (returns false), it uses exponential backoff up to a maximum interval + */ + +/** + * Configuration options for the RefreshTimer + */ +export interface RefreshTimerOptions { + /** + * The callback function to execute + * Should return a Promise that resolves to a boolean indicating success (true) or failure (false) + */ + callback: () => Promise + + /** + * Time in milliseconds to wait before next attempt after success + * @default 50000 (50 seconds) + */ + successInterval?: number + + /** + * Initial backoff time in milliseconds for the first failure + * @default 1000 (1 second) + */ + initialBackoffMs?: number + + /** + * Maximum backoff time in milliseconds + * @default 300000 (5 minutes) + */ + maxBackoffMs?: number +} + +/** + * A timer utility that executes a callback with configurable retry behavior + */ +export class RefreshTimer { + private callback: () => Promise + private successInterval: number + private initialBackoffMs: number + private maxBackoffMs: number + private currentBackoffMs: number + private attemptCount: number + private timerId: NodeJS.Timeout | null + private isRunning: boolean + + /** + * Creates a new RefreshTimer + * + * @param options Configuration options for the timer + */ + constructor(options: RefreshTimerOptions) { + this.callback = options.callback + this.successInterval = options.successInterval ?? 50000 // 50 seconds + this.initialBackoffMs = options.initialBackoffMs ?? 1000 // 1 second + this.maxBackoffMs = options.maxBackoffMs ?? 300000 // 5 minutes + this.currentBackoffMs = this.initialBackoffMs + this.attemptCount = 0 + this.timerId = null + this.isRunning = false + } + + /** + * Starts the timer and executes the callback immediately + */ + public start(): void { + if (this.isRunning) { + return + } + + this.isRunning = true + + // Execute the callback immediately + this.executeCallback() + } + + /** + * Stops the timer and cancels any pending execution + */ + public stop(): void { + if (!this.isRunning) { + return + } + + if (this.timerId) { + clearTimeout(this.timerId) + this.timerId = null + } + + this.isRunning = false + } + + /** + * Resets the backoff state and attempt count + * Does not affect whether the timer is running + */ + public reset(): void { + this.currentBackoffMs = this.initialBackoffMs + this.attemptCount = 0 + } + + /** + * Schedules the next attempt based on the success/failure of the current attempt + * + * @param wasSuccessful Whether the current attempt was successful + */ + private scheduleNextAttempt(wasSuccessful: boolean): void { + if (!this.isRunning) { + return + } + + if (wasSuccessful) { + // Reset backoff on success + this.currentBackoffMs = this.initialBackoffMs + this.attemptCount = 0 + + this.timerId = setTimeout(() => this.executeCallback(), this.successInterval) + } else { + // Increment attempt count + this.attemptCount++ + + // Calculate backoff time with exponential increase + // Formula: initialBackoff * 2^(attemptCount - 1) + this.currentBackoffMs = Math.min( + this.initialBackoffMs * Math.pow(2, this.attemptCount - 1), + this.maxBackoffMs, + ) + + this.timerId = setTimeout(() => this.executeCallback(), this.currentBackoffMs) + } + } + + /** + * Executes the callback and handles the result + */ + private async executeCallback(): Promise { + if (!this.isRunning) { + return + } + + try { + const result = await this.callback() + + this.scheduleNextAttempt(result) + } catch (_error) { + // Treat errors as failed attempts + this.scheduleNextAttempt(false) + } + } +} diff --git a/packages/cloud/src/StaticSettingsService.ts b/packages/cloud/src/StaticSettingsService.ts new file mode 100644 index 000000000000..29d8071703d5 --- /dev/null +++ b/packages/cloud/src/StaticSettingsService.ts @@ -0,0 +1,78 @@ +import { + type SettingsService, + type UserFeatures, + type UserSettingsConfig, + type UserSettingsData, + OrganizationAllowList, + OrganizationSettings, + organizationSettingsSchema, + ORGANIZATION_ALLOW_ALL, +} from "@roo-code/types" + +export class StaticSettingsService implements SettingsService { + private settings: OrganizationSettings + private log: (...args: unknown[]) => void + + constructor(envValue: string, log?: (...args: unknown[]) => void) { + this.log = log || console.log + this.settings = this.parseEnvironmentSettings(envValue) + } + + private parseEnvironmentSettings(envValue: string): OrganizationSettings { + try { + const decodedValue = Buffer.from(envValue, "base64").toString("utf-8") + const parsedJson = JSON.parse(decodedValue) + return organizationSettingsSchema.parse(parsedJson) + } catch (error) { + this.log( + `[StaticSettingsService] failed to parse static settings: ${error instanceof Error ? error.message : String(error)}`, + error, + ) + + throw new Error("Failed to parse static settings", { cause: error }) + } + } + + public getAllowList(): OrganizationAllowList { + return this.settings?.allowList || ORGANIZATION_ALLOW_ALL + } + + public getSettings(): OrganizationSettings | undefined { + return this.settings + } + + /** + * Returns static user settings with roomoteControlEnabled and extensionBridgeEnabled as true + */ + public getUserSettings(): UserSettingsData | undefined { + return { + features: { + roomoteControlEnabled: true, + }, + settings: { + extensionBridgeEnabled: true, + }, + version: 1, + } + } + + public getUserFeatures(): UserFeatures { + return { + roomoteControlEnabled: true, + } + } + + public getUserSettingsConfig(): UserSettingsConfig { + return { + extensionBridgeEnabled: true, + } + } + + public async updateUserSettings(_settings: Partial): Promise { + throw new Error("User settings updates are not supported in static mode") + } + + public dispose(): void { + // No resources to clean up for static settings. + } +} diff --git a/packages/cloud/src/StaticTokenAuthService.ts b/packages/cloud/src/StaticTokenAuthService.ts new file mode 100644 index 000000000000..6630a4a2e01e --- /dev/null +++ b/packages/cloud/src/StaticTokenAuthService.ts @@ -0,0 +1,93 @@ +import EventEmitter from "events" + +import { jwtDecode } from "jwt-decode" +import type { ExtensionContext } from "vscode" + +import type { JWTPayload, CloudUserInfo, AuthService, AuthServiceEvents, AuthState } from "@roo-code/types" + +export class StaticTokenAuthService extends EventEmitter implements AuthService { + private state: AuthState = "active-session" + private token: string + private log: (...args: unknown[]) => void + private userInfo: CloudUserInfo + + constructor(context: ExtensionContext, token: string, log?: (...args: unknown[]) => void) { + super() + + this.token = token + this.log = log || console.log + + this.log("[auth] Using StaticTokenAuthService") + + let payload + + try { + payload = jwtDecode(token) + } catch (error) { + this.log("[auth] Failed to parse JWT:", error) + } + + this.userInfo = { + id: payload?.r?.u || payload?.sub || undefined, + organizationId: payload?.r?.o || undefined, + extensionBridgeEnabled: true, + } + } + + public async initialize(): Promise { + this.state = "active-session" + } + + public broadcast(): void { + this.emit("auth-state-changed", { + state: this.state, + previousState: "initializing", + }) + + this.emit("user-info", { userInfo: this.userInfo }) + } + + public async login(): Promise { + throw new Error("Authentication methods are disabled in StaticTokenAuthService") + } + + public async logout(): Promise { + throw new Error("Authentication methods are disabled in StaticTokenAuthService") + } + + public async handleCallback( + _code: string | null, + _state: string | null, + _organizationId?: string | null, + ): Promise { + throw new Error("Authentication methods are disabled in StaticTokenAuthService") + } + + public getState(): AuthState { + return this.state + } + + public getSessionToken(): string | undefined { + return this.token + } + + public isAuthenticated(): boolean { + return true + } + + public hasActiveSession(): boolean { + return true + } + + public hasOrIsAcquiringActiveSession(): boolean { + return true + } + + public getUserInfo(): CloudUserInfo | null { + return this.userInfo + } + + public getStoredOrganizationId(): string | null { + return this.userInfo?.organizationId || null + } +} diff --git a/packages/cloud/src/TelemetryClient.ts b/packages/cloud/src/TelemetryClient.ts new file mode 100644 index 000000000000..4be44720ea05 --- /dev/null +++ b/packages/cloud/src/TelemetryClient.ts @@ -0,0 +1,246 @@ +import { + type TelemetryClient, + type TelemetryEvent, + type ClineMessage, + type AuthService, + type SettingsService, + TelemetryEventName, + rooCodeTelemetryEventSchema, + TelemetryPropertiesProvider, + TelemetryEventSubscription, +} from "@roo-code/types" + +import { getRooCodeApiUrl } from "./config.js" + +abstract class BaseTelemetryClient implements TelemetryClient { + protected providerRef: WeakRef | null = null + protected telemetryEnabled: boolean = false + + constructor( + public readonly subscription?: TelemetryEventSubscription, + protected readonly debug = false, + ) {} + + protected isEventCapturable(eventName: TelemetryEventName): boolean { + if (!this.subscription) { + return true + } + + return this.subscription.type === "include" + ? this.subscription.events.includes(eventName) + : !this.subscription.events.includes(eventName) + } + + /** + * Determines if a specific property should be included in telemetry events + * Override in subclasses to filter specific properties + */ + protected isPropertyCapturable(_propertyName: string): boolean { + return true + } + + protected async getEventProperties(event: TelemetryEvent): Promise { + let providerProperties: TelemetryEvent["properties"] = {} + const provider = this.providerRef?.deref() + + if (provider) { + try { + // Get properties from the provider + providerProperties = await provider.getTelemetryProperties() + } catch (error) { + // Log error but continue with capturing the event. + console.error( + `Error getting telemetry properties: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + + // Merge provider properties with event-specific properties. + // Event properties take precedence in case of conflicts. + const mergedProperties = { + ...providerProperties, + ...(event.properties || {}), + } + + // Filter out properties that shouldn't be captured by this client + return Object.fromEntries(Object.entries(mergedProperties).filter(([key]) => this.isPropertyCapturable(key))) + } + + public abstract capture(event: TelemetryEvent): Promise + + public setProvider(provider: TelemetryPropertiesProvider): void { + this.providerRef = new WeakRef(provider) + } + + public abstract updateTelemetryState(didUserOptIn: boolean): void + + public isTelemetryEnabled(): boolean { + return this.telemetryEnabled + } + + public abstract shutdown(): Promise +} + +export class CloudTelemetryClient extends BaseTelemetryClient { + constructor( + private authService: AuthService, + private settingsService: SettingsService, + debug = false, + ) { + super( + { + type: "exclude", + events: [TelemetryEventName.TASK_CONVERSATION_MESSAGE], + }, + debug, + ) + } + + private async fetch(path: string, options: RequestInit) { + if (!this.authService.isAuthenticated()) { + return + } + + const token = this.authService.getSessionToken() + + if (!token) { + console.error(`[TelemetryClient#fetch] Unauthorized: No session token available.`) + return + } + + const response = await fetch(`${getRooCodeApiUrl()}/api/${path}`, { + ...options, + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + }, + }) + + if (!response.ok) { + console.error( + `[TelemetryClient#fetch] ${options.method} ${path} -> ${response.status} ${response.statusText}`, + ) + } + } + + public override async capture(event: TelemetryEvent) { + if (!this.isTelemetryEnabled() || !this.isEventCapturable(event.event)) { + if (this.debug) { + console.info(`[TelemetryClient#capture] Skipping event: ${event.event}`) + } + + return + } + + const payload = { + type: event.event, + properties: await this.getEventProperties(event), + } + + if (this.debug) { + console.info(`[TelemetryClient#capture] ${JSON.stringify(payload)}`) + } + + const result = rooCodeTelemetryEventSchema.safeParse(payload) + + if (!result.success) { + console.error( + `[TelemetryClient#capture] Invalid telemetry event: ${result.error.message} - ${JSON.stringify(payload)}`, + ) + + return + } + + try { + await this.fetch(`events`, { + method: "POST", + body: JSON.stringify(result.data), + }) + } catch (error) { + console.error(`[TelemetryClient#capture] Error sending telemetry event: ${error}`) + } + } + + public async backfillMessages(messages: ClineMessage[], taskId: string): Promise { + if (!this.authService.isAuthenticated()) { + if (this.debug) { + console.info(`[TelemetryClient#backfillMessages] Skipping: Not authenticated`) + } + return + } + + const token = this.authService.getSessionToken() + + if (!token) { + console.error(`[TelemetryClient#backfillMessages] Unauthorized: No session token available.`) + return + } + + try { + const mergedProperties = await this.getEventProperties({ + event: TelemetryEventName.TASK_MESSAGE, + properties: { taskId }, + }) + + const formData = new FormData() + formData.append("taskId", taskId) + formData.append("properties", JSON.stringify(mergedProperties)) + + formData.append( + "file", + new File([JSON.stringify(messages)], "task.json", { + type: "application/json", + }), + ) + + if (this.debug) { + console.info( + `[TelemetryClient#backfillMessages] Uploading ${messages.length} messages for task ${taskId}`, + ) + } + + // Custom fetch for multipart - don't set Content-Type header (let browser set it) + const response = await fetch(`${getRooCodeApiUrl()}/api/events/backfill`, { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + // Note: No Content-Type header - browser will set multipart/form-data with boundary + }, + body: formData, + }) + + if (!response.ok) { + console.error( + `[TelemetryClient#backfillMessages] POST events/backfill -> ${response.status} ${response.statusText}`, + ) + } else if (this.debug) { + console.info(`[TelemetryClient#backfillMessages] Successfully uploaded messages for task ${taskId}`) + } + } catch (error) { + console.error(`[TelemetryClient#backfillMessages] Error uploading messages: ${error}`) + } + } + + public override updateTelemetryState(_didUserOptIn: boolean) {} + + public override isTelemetryEnabled(): boolean { + return true + } + + protected override isEventCapturable(eventName: TelemetryEventName): boolean { + // Ensure that this event type is supported by the telemetry client + if (!super.isEventCapturable(eventName)) { + return false + } + + // Only record message telemetry if a cloud account is present and explicitly configured to record messages + if (eventName === TelemetryEventName.TASK_MESSAGE) { + return this.settingsService.getSettings()?.cloudSettings?.recordTaskMessages || false + } + + // Other telemetry types are capturable at this point + return true + } + + public override async shutdown() {} +} diff --git a/packages/cloud/src/WebAuthService.ts b/packages/cloud/src/WebAuthService.ts new file mode 100644 index 000000000000..cb0e08754774 --- /dev/null +++ b/packages/cloud/src/WebAuthService.ts @@ -0,0 +1,727 @@ +import crypto from "crypto" +import EventEmitter from "events" + +import type { ExtensionContext } from "vscode" +import { z } from "zod" + +import type { + CloudUserInfo, + CloudOrganizationMembership, + AuthService, + AuthServiceEvents, + AuthState, +} from "@roo-code/types" + +import { getClerkBaseUrl, getRooCodeApiUrl, PRODUCTION_CLERK_BASE_URL } from "./config.js" +import { getUserAgent } from "./utils.js" +import { importVscode } from "./importVscode.js" +import { InvalidClientTokenError } from "./errors.js" +import { RefreshTimer } from "./RefreshTimer.js" + +const AUTH_STATE_KEY = "clerk-auth-state" + +/** + * AuthCredentials + */ + +const authCredentialsSchema = z.object({ + clientToken: z.string().min(1, "Client token cannot be empty"), + sessionId: z.string().min(1, "Session ID cannot be empty"), + organizationId: z.string().nullable().optional(), +}) + +type AuthCredentials = z.infer + +/** + * Clerk Schemas + */ + +const clerkSignInResponseSchema = z.object({ + response: z.object({ + created_session_id: z.string(), + }), +}) + +const clerkCreateSessionTokenResponseSchema = z.object({ + jwt: z.string(), +}) + +const clerkMeResponseSchema = z.object({ + response: z.object({ + id: z.string().optional(), + first_name: z.string().nullish(), + last_name: z.string().nullish(), + image_url: z.string().optional(), + primary_email_address_id: z.string().optional(), + email_addresses: z + .array( + z.object({ + id: z.string(), + email_address: z.string(), + }), + ) + .optional(), + public_metadata: z.record(z.any()).optional(), + }), +}) + +const clerkOrganizationMembershipsSchema = z.object({ + response: z.array( + z.object({ + id: z.string(), + role: z.string(), + permissions: z.array(z.string()).optional(), + created_at: z.number().optional(), + updated_at: z.number().optional(), + organization: z.object({ + id: z.string(), + name: z.string(), + slug: z.string().optional(), + image_url: z.string().optional(), + has_image: z.boolean().optional(), + created_at: z.number().optional(), + updated_at: z.number().optional(), + }), + }), + ), +}) + +export class WebAuthService extends EventEmitter implements AuthService { + private context: ExtensionContext + private timer: RefreshTimer + private state: AuthState = "initializing" + private log: (...args: unknown[]) => void + private readonly authCredentialsKey: string + + private credentials: AuthCredentials | null = null + private sessionToken: string | null = null + private userInfo: CloudUserInfo | null = null + private isFirstRefreshAttempt: boolean = false + + constructor(context: ExtensionContext, log?: (...args: unknown[]) => void) { + super() + + this.context = context + this.log = log || console.log + + this.log("[auth] Using WebAuthService") + + // Calculate auth credentials key based on Clerk base URL. + const clerkBaseUrl = getClerkBaseUrl() + + if (clerkBaseUrl !== PRODUCTION_CLERK_BASE_URL) { + this.authCredentialsKey = `clerk-auth-credentials-${clerkBaseUrl}` + } else { + this.authCredentialsKey = "clerk-auth-credentials" + } + + this.timer = new RefreshTimer({ + callback: async () => { + await this.refreshSession() + return true + }, + successInterval: 50_000, + initialBackoffMs: 1_000, + maxBackoffMs: 300_000, + }) + } + + private changeState(newState: AuthState): void { + const previousState = this.state + this.state = newState + this.emit("auth-state-changed", { state: newState, previousState }) + } + + private async handleCredentialsChange(): Promise { + try { + const credentials = await this.loadCredentials() + + if (credentials) { + if ( + this.credentials === null || + this.credentials.clientToken !== credentials.clientToken || + this.credentials.sessionId !== credentials.sessionId + ) { + this.transitionToAttemptingSession(credentials) + } + } else { + if (this.state !== "logged-out") { + this.transitionToLoggedOut() + } + } + } catch (error) { + this.log("[auth] Error handling credentials change:", error) + } + } + + private transitionToLoggedOut(): void { + this.timer.stop() + + this.credentials = null + this.sessionToken = null + this.userInfo = null + + this.changeState("logged-out") + + this.log("[auth] Transitioned to logged-out state") + } + + private transitionToAttemptingSession(credentials: AuthCredentials): void { + this.credentials = credentials + + this.sessionToken = null + this.userInfo = null + this.isFirstRefreshAttempt = true + + this.changeState("attempting-session") + + this.timer.start() + + this.log("[auth] Transitioned to attempting-session state") + } + + private transitionToInactiveSession(): void { + this.sessionToken = null + this.userInfo = null + + this.changeState("inactive-session") + + this.log("[auth] Transitioned to inactive-session state") + } + + /** + * Initialize the auth state + * + * This method loads tokens from storage and determines the current auth state. + * It also starts the refresh timer if we have an active session. + */ + public async initialize(): Promise { + if (this.state !== "initializing") { + this.log("[auth] initialize() called after already initialized") + return + } + + await this.handleCredentialsChange() + + this.context.subscriptions.push( + this.context.secrets.onDidChange((e) => { + if (e.key === this.authCredentialsKey) { + this.handleCredentialsChange() + } + }), + ) + } + + public broadcast(): void {} + + private async storeCredentials(credentials: AuthCredentials): Promise { + await this.context.secrets.store(this.authCredentialsKey, JSON.stringify(credentials)) + } + + private async loadCredentials(): Promise { + const credentialsJson = await this.context.secrets.get(this.authCredentialsKey) + if (!credentialsJson) return null + + try { + const parsedJson = JSON.parse(credentialsJson) + const credentials = authCredentialsSchema.parse(parsedJson) + + // Migration: If no organizationId but we have userInfo, add it + if (credentials.organizationId === undefined && this.userInfo?.organizationId) { + credentials.organizationId = this.userInfo.organizationId + await this.storeCredentials(credentials) + this.log("[auth] Migrated credentials with organizationId") + } + + return credentials + } catch (error) { + if (error instanceof z.ZodError) { + this.log("[auth] Invalid credentials format:", error.errors) + } else { + this.log("[auth] Failed to parse stored credentials:", error) + } + return null + } + } + + private async clearCredentials(): Promise { + await this.context.secrets.delete(this.authCredentialsKey) + } + + /** + * Start the login process + * + * This method initiates the authentication flow by generating a state parameter + * and opening the browser to the authorization URL. + */ + public async login(): Promise { + try { + const vscode = await importVscode() + + if (!vscode) { + throw new Error("VS Code API not available") + } + + // Generate a cryptographically random state parameter. + const state = crypto.randomBytes(16).toString("hex") + await this.context.globalState.update(AUTH_STATE_KEY, state) + const packageJSON = this.context.extension?.packageJSON + const publisher = packageJSON?.publisher ?? "RooVeterinaryInc" + const name = packageJSON?.name ?? "roo-cline" + const params = new URLSearchParams({ + state, + auth_redirect: `${vscode.env.uriScheme}://${publisher}.${name}`, + }) + const url = `${getRooCodeApiUrl()}/extension/sign-in?${params.toString()}` + await vscode.env.openExternal(vscode.Uri.parse(url)) + } catch (error) { + this.log(`[auth] Error initiating Roo Code Cloud auth: ${error}`) + throw new Error(`Failed to initiate Roo Code Cloud authentication: ${error}`) + } + } + + /** + * Handle the callback from Roo Code Cloud + * + * This method is called when the user is redirected back to the extension + * after authenticating with Roo Code Cloud. + * + * @param code The authorization code from the callback + * @param state The state parameter from the callback + * @param organizationId The organization ID from the callback (null for personal accounts) + */ + public async handleCallback( + code: string | null, + state: string | null, + organizationId?: string | null, + ): Promise { + if (!code || !state) { + const vscode = await importVscode() + + if (vscode) { + vscode.window.showInformationMessage("Invalid Roo Code Cloud sign in url") + } + + return + } + + try { + // Validate state parameter to prevent CSRF attacks. + const storedState = this.context.globalState.get(AUTH_STATE_KEY) + + if (state !== storedState) { + this.log("[auth] State mismatch in callback") + throw new Error("Invalid state parameter. Authentication request may have been tampered with.") + } + + const credentials = await this.clerkSignIn(code) + + // Set organizationId (null for personal accounts) + credentials.organizationId = organizationId || null + + await this.storeCredentials(credentials) + + const vscode = await importVscode() + + if (vscode) { + vscode.window.showInformationMessage("Successfully authenticated with Roo Code Cloud") + } + + this.log("[auth] Successfully authenticated with Roo Code Cloud") + } catch (error) { + this.log(`[auth] Error handling Roo Code Cloud callback: ${error}`) + this.changeState("logged-out") + throw new Error(`Failed to handle Roo Code Cloud callback: ${error}`) + } + } + + /** + * Log out + * + * This method removes all stored tokens and stops the refresh timer. + */ + public async logout(): Promise { + const oldCredentials = this.credentials + + try { + // Clear credentials from storage - onDidChange will handle state transitions + await this.clearCredentials() + await this.context.globalState.update(AUTH_STATE_KEY, undefined) + + if (oldCredentials) { + try { + await this.clerkLogout(oldCredentials) + } catch (error) { + this.log("[auth] Error calling clerkLogout:", error) + } + } + + const vscode = await importVscode() + + if (vscode) { + vscode.window.showInformationMessage("Logged out from Roo Code Cloud") + } + + this.log("[auth] Logged out from Roo Code Cloud") + } catch (error) { + this.log(`[auth] Error logging out from Roo Code Cloud: ${error}`) + throw new Error(`Failed to log out from Roo Code Cloud: ${error}`) + } + } + + public getState(): AuthState { + return this.state + } + + public getSessionToken(): string | undefined { + if (this.state === "active-session" && this.sessionToken) { + return this.sessionToken + } + + return + } + + /** + * Check if the user is authenticated + * + * @returns True if the user is authenticated (has an active, attempting, or inactive session) + */ + public isAuthenticated(): boolean { + return ( + this.state === "active-session" || this.state === "attempting-session" || this.state === "inactive-session" + ) + } + + public hasActiveSession(): boolean { + return this.state === "active-session" + } + + /** + * Check if the user has an active session or is currently attempting to acquire one + * + * @returns True if the user has an active session or is attempting to get one + */ + public hasOrIsAcquiringActiveSession(): boolean { + return this.state === "active-session" || this.state === "attempting-session" + } + + /** + * Refresh the session + * + * This method refreshes the session token using the client token. + */ + private async refreshSession(): Promise { + if (!this.credentials) { + this.log("[auth] Cannot refresh session: missing credentials") + return + } + + try { + const previousState = this.state + this.sessionToken = await this.clerkCreateSessionToken() + + if (previousState !== "active-session") { + this.changeState("active-session") + this.log("[auth] Transitioned to active-session state") + this.fetchUserInfo() + } else { + this.state = "active-session" + } + } catch (error) { + if (error instanceof InvalidClientTokenError) { + this.log("[auth] Invalid/Expired client token: clearing credentials") + this.clearCredentials() + } else if (this.isFirstRefreshAttempt && this.state === "attempting-session") { + this.isFirstRefreshAttempt = false + this.transitionToInactiveSession() + } + this.log("[auth] Failed to refresh session", error) + throw error + } + } + + private async fetchUserInfo(): Promise { + if (!this.credentials) { + return + } + + this.userInfo = await this.clerkMe() + this.emit("user-info", { userInfo: this.userInfo }) + } + + /** + * Extract user information from the ID token + * + * @returns User information from ID token claims or null if no ID token available + */ + public getUserInfo(): CloudUserInfo | null { + return this.userInfo + } + + /** + * Get the stored organization ID from credentials + * + * @returns The stored organization ID, null for personal accounts or if no credentials exist + */ + public getStoredOrganizationId(): string | null { + return this.credentials?.organizationId || null + } + + private async clerkSignIn(ticket: string): Promise { + const formData = new URLSearchParams() + formData.append("strategy", "ticket") + formData.append("ticket", ticket) + + const response = await fetch(`${getClerkBaseUrl()}/v1/client/sign_ins`, { + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "User-Agent": this.userAgent(), + }, + body: formData.toString(), + signal: AbortSignal.timeout(10000), + }) + + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + + const { + response: { created_session_id: sessionId }, + } = clerkSignInResponseSchema.parse(await response.json()) + + // 3. Extract the client token from the Authorization header. + const clientToken = response.headers.get("authorization") + + if (!clientToken) { + throw new Error("No authorization header found in the response") + } + + return authCredentialsSchema.parse({ clientToken, sessionId }) + } + + private async clerkCreateSessionToken(): Promise { + const formData = new URLSearchParams() + formData.append("_is_native", "1") + + // Handle 3 cases for organization_id: + // 1. Have an org id: organization_id=THE_ORG_ID + // 2. Have a personal account: organization_id= (empty string) + // 3. Don't know if you have an org id (old style credentials): don't send organization_id param at all + const organizationId = this.getStoredOrganizationId() + if (this.credentials?.organizationId !== undefined) { + // We have organization context info (either org id or personal account) + formData.append("organization_id", organizationId || "") + } + // If organizationId is undefined, don't send the param at all (old credentials) + + const response = await fetch(`${getClerkBaseUrl()}/v1/client/sessions/${this.credentials!.sessionId}/tokens`, { + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + Authorization: `Bearer ${this.credentials!.clientToken}`, + "User-Agent": this.userAgent(), + }, + body: formData.toString(), + signal: AbortSignal.timeout(10000), + }) + + if (response.status === 401 || response.status === 404) { + throw new InvalidClientTokenError() + } else if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + + const data = clerkCreateSessionTokenResponseSchema.parse(await response.json()) + + return data.jwt + } + + private async clerkMe(): Promise { + const response = await fetch(`${getClerkBaseUrl()}/v1/me`, { + headers: { + Authorization: `Bearer ${this.credentials!.clientToken}`, + "User-Agent": this.userAgent(), + }, + signal: AbortSignal.timeout(10000), + }) + + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + + const payload = await response.json() + const { response: userData } = clerkMeResponseSchema.parse(payload) + + const userInfo: CloudUserInfo = { + id: userData.id, + picture: userData.image_url, + } + + const names = [userData.first_name, userData.last_name].filter((name) => !!name) + userInfo.name = names.length > 0 ? names.join(" ") : undefined + const primaryEmailAddressId = userData.primary_email_address_id + const emailAddresses = userData.email_addresses + + if (primaryEmailAddressId && emailAddresses) { + userInfo.email = emailAddresses.find( + (email: { id: string }) => primaryEmailAddressId === email.id, + )?.email_address + } + + // Check for extension_bridge_enabled in user's public metadata + let extensionBridgeEnabled = false + if (userData.public_metadata?.extension_bridge_enabled === true) { + extensionBridgeEnabled = true + } + + // Fetch organization info if user is in organization context + try { + const storedOrgId = this.getStoredOrganizationId() + + if (this.credentials?.organizationId !== undefined) { + // We have organization context info + if (storedOrgId !== null) { + // User is in organization context - fetch user's memberships and filter + const orgMemberships = await this.clerkGetOrganizationMemberships() + const userMembership = this.findOrganizationMembership(orgMemberships, storedOrgId) + + if (userMembership) { + this.setUserOrganizationInfo(userInfo, userMembership) + + // Check organization public metadata for extension_bridge_enabled + // Organization setting takes precedence over user setting + if (await this.isExtensionBridgeEnabledForOrganization(storedOrgId)) { + extensionBridgeEnabled = true + } + + this.log("[auth] User in organization context:", { + id: userMembership.organization.id, + name: userMembership.organization.name, + role: userMembership.role, + }) + } else { + this.log("[auth] Warning: User not found in stored organization:", storedOrgId) + } + } else { + this.log("[auth] User in personal account context - not setting organization info") + } + } else { + // Old credentials without organization context - fetch organization info to determine context + const orgMemberships = await this.clerkGetOrganizationMemberships() + const primaryOrgMembership = this.findPrimaryOrganizationMembership(orgMemberships) + + if (primaryOrgMembership) { + this.setUserOrganizationInfo(userInfo, primaryOrgMembership) + + // Check organization public metadata for extension_bridge_enabled + if (await this.isExtensionBridgeEnabledForOrganization(primaryOrgMembership.organization.id)) { + extensionBridgeEnabled = true + } + + this.log("[auth] Legacy credentials: Found organization membership:", { + id: primaryOrgMembership.organization.id, + name: primaryOrgMembership.organization.name, + role: primaryOrgMembership.role, + }) + } else { + this.log("[auth] Legacy credentials: No organization memberships found") + } + } + } catch (error) { + this.log("[auth] Failed to fetch organization info:", error) + // Don't throw - organization info is optional + } + + // Set the extension bridge enabled flag + userInfo.extensionBridgeEnabled = extensionBridgeEnabled + + return userInfo + } + + private findOrganizationMembership( + memberships: CloudOrganizationMembership[], + organizationId: string, + ): CloudOrganizationMembership | undefined { + return memberships?.find((membership) => membership.organization.id === organizationId) + } + + private findPrimaryOrganizationMembership( + memberships: CloudOrganizationMembership[], + ): CloudOrganizationMembership | undefined { + return memberships && memberships.length > 0 ? memberships[0] : undefined + } + + private setUserOrganizationInfo(userInfo: CloudUserInfo, membership: CloudOrganizationMembership): void { + userInfo.organizationId = membership.organization.id + userInfo.organizationName = membership.organization.name + userInfo.organizationRole = membership.role + userInfo.organizationImageUrl = membership.organization.image_url + } + + private async clerkGetOrganizationMemberships(): Promise { + const response = await fetch(`${getClerkBaseUrl()}/v1/me/organization_memberships`, { + headers: { + Authorization: `Bearer ${this.credentials!.clientToken}`, + "User-Agent": this.userAgent(), + }, + signal: AbortSignal.timeout(10000), + }) + + return clerkOrganizationMembershipsSchema.parse(await response.json()).response + } + + private async getOrganizationMetadata( + organizationId: string, + ): Promise<{ public_metadata?: Record } | null> { + try { + const response = await fetch(`${getClerkBaseUrl()}/v1/organizations/${organizationId}`, { + headers: { + Authorization: `Bearer ${this.credentials!.clientToken}`, + "User-Agent": this.userAgent(), + }, + signal: AbortSignal.timeout(10000), + }) + + if (!response.ok) { + this.log(`[auth] Failed to fetch organization metadata: ${response.status} ${response.statusText}`) + return null + } + + const data = await response.json() + return data.response || data + } catch (error) { + this.log("[auth] Error fetching organization metadata:", error) + return null + } + } + + private async isExtensionBridgeEnabledForOrganization(organizationId: string): Promise { + const orgMetadata = await this.getOrganizationMetadata(organizationId) + return orgMetadata?.public_metadata?.extension_bridge_enabled === true + } + + private async clerkLogout(credentials: AuthCredentials): Promise { + const formData = new URLSearchParams() + formData.append("_is_native", "1") + + const response = await fetch(`${getClerkBaseUrl()}/v1/client/sessions/${credentials.sessionId}/remove`, { + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + Authorization: `Bearer ${credentials.clientToken}`, + "User-Agent": this.userAgent(), + }, + body: formData.toString(), + signal: AbortSignal.timeout(10000), + }) + + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`) + } + } + + private userAgent(): string { + return getUserAgent(this.context) + } +} diff --git a/packages/cloud/src/__mocks__/vscode.ts b/packages/cloud/src/__mocks__/vscode.ts new file mode 100644 index 000000000000..09384d195ff1 --- /dev/null +++ b/packages/cloud/src/__mocks__/vscode.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +export const window = { + showInformationMessage: vi.fn(), + showErrorMessage: vi.fn(), +} + +export const env = { + openExternal: vi.fn(), +} + +export const Uri = { + parse: vi.fn((uri: string) => ({ toString: () => uri })), +} + +export interface ExtensionContext { + secrets: { + get: (key: string) => Promise + store: (key: string, value: string) => Promise + delete: (key: string) => Promise + onDidChange: (listener: (e: { key: string }) => void) => { + dispose: () => void + } + } + globalState: { + get: (key: string) => T | undefined + update: (key: string, value: any) => Promise + } + subscriptions: any[] + extension?: { + packageJSON?: { + version?: string + publisher?: string + name?: string + } + } +} + +// Mock implementation for tests +export const mockExtensionContext: ExtensionContext = { + secrets: { + get: vi.fn().mockResolvedValue(undefined), + store: vi.fn().mockResolvedValue(undefined), + delete: vi.fn().mockResolvedValue(undefined), + onDidChange: vi.fn().mockReturnValue({ dispose: vi.fn() }), + }, + globalState: { + get: vi.fn().mockReturnValue(undefined), + update: vi.fn().mockResolvedValue(undefined), + }, + subscriptions: [], + extension: { + packageJSON: { + version: "1.0.0", + publisher: "RooVeterinaryInc", + name: "roo-cline", + }, + }, +} diff --git a/packages/cloud/src/__tests__/CloudService.integration.test.ts b/packages/cloud/src/__tests__/CloudService.integration.test.ts new file mode 100644 index 000000000000..2896b43554bb --- /dev/null +++ b/packages/cloud/src/__tests__/CloudService.integration.test.ts @@ -0,0 +1,147 @@ +// npx vitest run src/__tests__/CloudService.integration.test.ts + +import type { ExtensionContext } from "vscode" + +import { CloudService } from "../CloudService.js" +import { StaticSettingsService } from "../StaticSettingsService.js" +import { CloudSettingsService } from "../CloudSettingsService.js" + +vi.mock("vscode", () => ({ + ExtensionContext: vi.fn(), + window: { + showInformationMessage: vi.fn(), + showErrorMessage: vi.fn(), + }, + env: { + openExternal: vi.fn(), + }, + Uri: { + parse: vi.fn(), + }, +})) + +describe("CloudService Integration - Settings Service Selection", () => { + let mockContext: ExtensionContext + + beforeEach(() => { + CloudService.resetInstance() + + mockContext = { + subscriptions: [], + workspaceState: { + get: vi.fn(), + update: vi.fn(), + keys: vi.fn().mockReturnValue([]), + }, + secrets: { + get: vi.fn(), + store: vi.fn(), + delete: vi.fn(), + onDidChange: vi.fn().mockReturnValue({ dispose: vi.fn() }), + }, + globalState: { + get: vi.fn(), + update: vi.fn(), + setKeysForSync: vi.fn(), + keys: vi.fn().mockReturnValue([]), + }, + extensionUri: { scheme: "file", path: "/mock/path" }, + extensionPath: "/mock/path", + extensionMode: 1, + asAbsolutePath: vi.fn((relativePath: string) => `/mock/path/${relativePath}`), + storageUri: { scheme: "file", path: "/mock/storage" }, + extension: { + packageJSON: { + version: "1.0.0", + }, + }, + } as unknown as ExtensionContext + }) + + afterEach(() => { + CloudService.resetInstance() + delete process.env.ROO_CODE_CLOUD_ORG_SETTINGS + delete process.env.ROO_CODE_CLOUD_TOKEN + }) + + it("should use CloudSettingsService when no environment variable is set", async () => { + // Ensure no environment variables are set + delete process.env.ROO_CODE_CLOUD_ORG_SETTINGS + delete process.env.ROO_CODE_CLOUD_TOKEN + + const cloudService = await CloudService.createInstance(mockContext) + + // Access the private settingsService to check its type + const settingsService = (cloudService as unknown as { settingsService: unknown }).settingsService + expect(settingsService).toBeInstanceOf(CloudSettingsService) + }) + + it("should use StaticSettingsService when ROO_CODE_CLOUD_ORG_SETTINGS is set", async () => { + const validSettings = { + version: 1, + cloudSettings: { + recordTaskMessages: true, + enableTaskSharing: true, + taskShareExpirationDays: 30, + }, + defaultSettings: { + enableCheckpoints: true, + }, + allowList: { + allowAll: true, + providers: {}, + }, + } + + // Set the environment variable + process.env.ROO_CODE_CLOUD_ORG_SETTINGS = Buffer.from(JSON.stringify(validSettings)).toString("base64") + + const cloudService = await CloudService.createInstance(mockContext) + + // Access the private settingsService to check its type + const settingsService = (cloudService as unknown as { settingsService: unknown }).settingsService + expect(settingsService).toBeInstanceOf(StaticSettingsService) + + // Verify the settings are correctly loaded + expect(cloudService.getAllowList()).toEqual(validSettings.allowList) + }) + + it("should throw error when ROO_CODE_CLOUD_ORG_SETTINGS contains invalid data", async () => { + // Set invalid environment variable + process.env.ROO_CODE_CLOUD_ORG_SETTINGS = "invalid-base64-data" + + await expect(CloudService.createInstance(mockContext)).rejects.toThrow("Failed to initialize CloudService") + }) + + it("should prioritize static token auth when both environment variables are set", async () => { + const validSettings = { + version: 1, + cloudSettings: { + recordTaskMessages: true, + enableTaskSharing: true, + taskShareExpirationDays: 30, + }, + defaultSettings: { + enableCheckpoints: true, + }, + allowList: { + allowAll: true, + providers: {}, + }, + } + + // Set both environment variables + process.env.ROO_CODE_CLOUD_TOKEN = "test-token" + process.env.ROO_CODE_CLOUD_ORG_SETTINGS = Buffer.from(JSON.stringify(validSettings)).toString("base64") + + const cloudService = await CloudService.createInstance(mockContext) + + // Should use StaticSettingsService for settings + const settingsService = (cloudService as unknown as { settingsService: unknown }).settingsService + expect(settingsService).toBeInstanceOf(StaticSettingsService) + + // Should use StaticTokenAuthService for auth (from the existing logic) + expect(cloudService.isAuthenticated()).toBe(true) + expect(cloudService.hasActiveSession()).toBe(true) + }) +}) diff --git a/packages/cloud/src/__tests__/CloudService.test.ts b/packages/cloud/src/__tests__/CloudService.test.ts new file mode 100644 index 000000000000..a9df02d66457 --- /dev/null +++ b/packages/cloud/src/__tests__/CloudService.test.ts @@ -0,0 +1,600 @@ +// npx vitest run src/__tests__/CloudService.test.ts + +import * as vscode from "vscode" + +import type { ClineMessage } from "@roo-code/types" + +import { TaskNotFoundError } from "../errors.js" +import { CloudService } from "../CloudService.js" +import { WebAuthService } from "../WebAuthService.js" +import { CloudSettingsService } from "../CloudSettingsService.js" +import { CloudShareService } from "../CloudShareService.js" +import { CloudTelemetryClient as TelemetryClient } from "../TelemetryClient.js" + +vi.mock("vscode", () => ({ + ExtensionContext: vi.fn(), + window: { + showInformationMessage: vi.fn(), + showErrorMessage: vi.fn(), + }, + env: { + openExternal: vi.fn(), + }, + Uri: { + parse: vi.fn(), + }, +})) + +vi.mock("../WebAuthService") + +vi.mock("../CloudSettingsService") + +vi.mock("../CloudShareService") + +vi.mock("../TelemetryClient") + +describe("CloudService", () => { + let mockContext: vscode.ExtensionContext + + let mockAuthService: { + initialize: ReturnType + broadcast: ReturnType + login: ReturnType + logout: ReturnType + isAuthenticated: ReturnType + hasActiveSession: ReturnType + hasOrIsAcquiringActiveSession: ReturnType + getUserInfo: ReturnType + getState: ReturnType + getSessionToken: ReturnType + handleCallback: ReturnType + getStoredOrganizationId: ReturnType + on: ReturnType + off: ReturnType + once: ReturnType + emit: ReturnType + } + + let mockSettingsService: { + initialize: ReturnType + getSettings: ReturnType + getAllowList: ReturnType + dispose: ReturnType + on: ReturnType + off: ReturnType + } + + let mockShareService: { + shareTask: ReturnType + canShareTask: ReturnType + } + + let mockTelemetryClient: { + backfillMessages: ReturnType + } + + beforeEach(() => { + CloudService.resetInstance() + + mockContext = { + subscriptions: [], + workspaceState: { + get: vi.fn(), + update: vi.fn(), + keys: vi.fn().mockReturnValue([]), + }, + secrets: { + get: vi.fn(), + store: vi.fn(), + delete: vi.fn(), + onDidChange: vi.fn().mockReturnValue({ dispose: vi.fn() }), + }, + globalState: { + get: vi.fn(), + update: vi.fn(), + setKeysForSync: vi.fn(), + keys: vi.fn().mockReturnValue([]), + }, + extensionUri: { scheme: "file", path: "/mock/path" }, + extensionPath: "/mock/path", + extensionMode: 1, + asAbsolutePath: vi.fn((relativePath: string) => `/mock/path/${relativePath}`), + storageUri: { scheme: "file", path: "/mock/storage" }, + extension: { + packageJSON: { + version: "1.0.0", + }, + }, + } as unknown as vscode.ExtensionContext + + mockAuthService = { + initialize: vi.fn().mockResolvedValue(undefined), + broadcast: vi.fn(), + login: vi.fn(), + logout: vi.fn(), + isAuthenticated: vi.fn().mockReturnValue(false), + hasActiveSession: vi.fn().mockReturnValue(false), + hasOrIsAcquiringActiveSession: vi.fn().mockReturnValue(false), + getUserInfo: vi.fn(), + getState: vi.fn().mockReturnValue("logged-out"), + getSessionToken: vi.fn(), + handleCallback: vi.fn(), + getStoredOrganizationId: vi.fn().mockReturnValue(null), + on: vi.fn(), + off: vi.fn(), + once: vi.fn(), + emit: vi.fn(), + } + + mockSettingsService = { + initialize: vi.fn(), + getSettings: vi.fn(), + getAllowList: vi.fn(), + dispose: vi.fn(), + on: vi.fn(), + off: vi.fn(), + } + + mockShareService = { + shareTask: vi.fn(), + canShareTask: vi.fn().mockResolvedValue(true), + } + + mockTelemetryClient = { + backfillMessages: vi.fn().mockResolvedValue(undefined), + } + + vi.mocked(WebAuthService).mockImplementation(() => mockAuthService as unknown as WebAuthService) + + vi.mocked(CloudSettingsService).mockImplementation(() => mockSettingsService as unknown as CloudSettingsService) + + vi.mocked(CloudShareService).mockImplementation(() => mockShareService as unknown as CloudShareService) + + vi.mocked(TelemetryClient).mockImplementation(() => mockTelemetryClient as unknown as TelemetryClient) + }) + + afterEach(() => { + vi.clearAllMocks() + CloudService.resetInstance() + }) + + describe("createInstance", () => { + it("should create and initialize CloudService instance", async () => { + const mockLog = vi.fn() + + const cloudService = await CloudService.createInstance(mockContext, mockLog) + + expect(cloudService).toBeInstanceOf(CloudService) + expect(WebAuthService).toHaveBeenCalledWith(mockContext, expect.any(Function)) + expect(CloudSettingsService).toHaveBeenCalledWith(mockContext, mockAuthService, expect.any(Function)) + }) + + it("should set up event listeners for CloudSettingsService", async () => { + const mockLog = vi.fn() + + await CloudService.createInstance(mockContext, mockLog) + + expect(mockSettingsService.on).toHaveBeenCalledWith("settings-updated", expect.any(Function)) + }) + + it("should throw error if instance already exists", async () => { + await CloudService.createInstance(mockContext) + + await expect(CloudService.createInstance(mockContext)).rejects.toThrow( + "CloudService instance already created", + ) + }) + }) + + describe("authentication methods", () => { + let cloudService: CloudService + + beforeEach(async () => { + cloudService = await CloudService.createInstance(mockContext) + }) + + it("should delegate login to AuthService", async () => { + await cloudService.login() + expect(mockAuthService.login).toHaveBeenCalled() + }) + + it("should delegate logout to AuthService", async () => { + await cloudService.logout() + expect(mockAuthService.logout).toHaveBeenCalled() + }) + + it("should delegate isAuthenticated to AuthService", () => { + const result = cloudService.isAuthenticated() + expect(mockAuthService.isAuthenticated).toHaveBeenCalled() + expect(result).toBe(false) + }) + + it("should delegate hasActiveSession to AuthService", () => { + const result = cloudService.hasActiveSession() + expect(mockAuthService.hasActiveSession).toHaveBeenCalled() + expect(result).toBe(false) + }) + + it("should delegate getUserInfo to AuthService", async () => { + await cloudService.getUserInfo() + expect(mockAuthService.getUserInfo).toHaveBeenCalled() + }) + + it("should return organization ID from user info", () => { + const mockUserInfo = { + name: "Test User", + email: "test@example.com", + organizationId: "org_123", + organizationName: "Test Org", + organizationRole: "admin", + } + mockAuthService.getUserInfo.mockReturnValue(mockUserInfo) + + const result = cloudService.getOrganizationId() + expect(mockAuthService.getUserInfo).toHaveBeenCalled() + expect(result).toBe("org_123") + }) + + it("should return null when no organization ID available", () => { + mockAuthService.getUserInfo.mockReturnValue(null) + + const result = cloudService.getOrganizationId() + expect(result).toBe(null) + }) + + it("should return organization name from user info", () => { + const mockUserInfo = { + name: "Test User", + email: "test@example.com", + organizationId: "org_123", + organizationName: "Test Org", + organizationRole: "admin", + } + mockAuthService.getUserInfo.mockReturnValue(mockUserInfo) + + const result = cloudService.getOrganizationName() + expect(mockAuthService.getUserInfo).toHaveBeenCalled() + expect(result).toBe("Test Org") + }) + + it("should return null when no organization name available", () => { + mockAuthService.getUserInfo.mockReturnValue(null) + + const result = cloudService.getOrganizationName() + expect(result).toBe(null) + }) + + it("should return organization role from user info", () => { + const mockUserInfo = { + name: "Test User", + email: "test@example.com", + organizationId: "org_123", + organizationName: "Test Org", + organizationRole: "admin", + } + mockAuthService.getUserInfo.mockReturnValue(mockUserInfo) + + const result = cloudService.getOrganizationRole() + expect(mockAuthService.getUserInfo).toHaveBeenCalled() + expect(result).toBe("admin") + }) + + it("should return null when no organization role available", () => { + mockAuthService.getUserInfo.mockReturnValue(null) + + const result = cloudService.getOrganizationRole() + expect(result).toBe(null) + }) + + it("should delegate getAuthState to AuthService", () => { + const result = cloudService.getAuthState() + expect(mockAuthService.getState).toHaveBeenCalled() + expect(result).toBe("logged-out") + }) + + it("should delegate handleAuthCallback to AuthService", async () => { + await cloudService.handleAuthCallback("code", "state") + expect(mockAuthService.handleCallback).toHaveBeenCalledWith("code", "state", undefined) + }) + + it("should delegate handleAuthCallback with organizationId to AuthService", async () => { + await cloudService.handleAuthCallback("code", "state", "org_123") + expect(mockAuthService.handleCallback).toHaveBeenCalledWith("code", "state", "org_123") + }) + + it("should return stored organization ID from AuthService", () => { + mockAuthService.getStoredOrganizationId.mockReturnValue("org_456") + + const result = cloudService.getStoredOrganizationId() + expect(mockAuthService.getStoredOrganizationId).toHaveBeenCalled() + expect(result).toBe("org_456") + }) + + it("should return null when no stored organization ID available", () => { + mockAuthService.getStoredOrganizationId.mockReturnValue(null) + + const result = cloudService.getStoredOrganizationId() + expect(result).toBe(null) + }) + + it("should return true when stored organization ID exists", () => { + mockAuthService.getStoredOrganizationId.mockReturnValue("org_789") + + const result = cloudService.hasStoredOrganizationId() + expect(result).toBe(true) + }) + + it("should return false when no stored organization ID exists", () => { + mockAuthService.getStoredOrganizationId.mockReturnValue(null) + + const result = cloudService.hasStoredOrganizationId() + expect(result).toBe(false) + }) + }) + + describe("organization settings methods", () => { + let cloudService: CloudService + + beforeEach(async () => { + cloudService = await CloudService.createInstance(mockContext) + }) + + it("should delegate getAllowList to SettingsService", () => { + cloudService.getAllowList() + expect(mockSettingsService.getAllowList).toHaveBeenCalled() + }) + }) + + describe("error handling", () => { + it("should throw error when accessing methods before initialization", () => { + expect(() => CloudService.instance.login()).toThrow("CloudService not initialized") + }) + + it("should throw error when accessing instance before creation", () => { + expect(() => CloudService.instance).toThrow("CloudService not initialized") + }) + }) + + describe("hasInstance", () => { + it("should return false when no instance exists", () => { + expect(CloudService.hasInstance()).toBe(false) + }) + + it("should return true when instance exists and is initialized", async () => { + await CloudService.createInstance(mockContext) + expect(CloudService.hasInstance()).toBe(true) + }) + }) + + describe("dispose", () => { + it("should dispose of all services and clean up", async () => { + const cloudService = await CloudService.createInstance(mockContext) + cloudService.dispose() + + expect(mockSettingsService.dispose).toHaveBeenCalled() + }) + + it("should remove event listeners from CloudSettingsService", async () => { + // Create a mock that will pass the instanceof check + const mockCloudSettingsService = Object.create(CloudSettingsService.prototype) + Object.assign(mockCloudSettingsService, { + initialize: vi.fn(), + getSettings: vi.fn(), + getAllowList: vi.fn(), + dispose: vi.fn(), + on: vi.fn(), + off: vi.fn(), + }) + + // Override the mock to return our properly typed instance + vi.mocked(CloudSettingsService).mockImplementation(() => mockCloudSettingsService) + + const cloudService = await CloudService.createInstance(mockContext) + + // Verify the listener was added + expect(mockCloudSettingsService.on).toHaveBeenCalledWith("settings-updated", expect.any(Function)) + + // Get the listener function that was registered + const registeredListener = mockCloudSettingsService.on.mock.calls.find( + (call: unknown[]) => call[0] === "settings-updated", + )?.[1] + + cloudService.dispose() + + // Verify the listener was removed with the same function + expect(mockCloudSettingsService.off).toHaveBeenCalledWith("settings-updated", registeredListener) + }) + + it("should handle disposal when using StaticSettingsService", async () => { + // Reset the instance first + CloudService.resetInstance() + + // Mock a StaticSettingsService (which doesn't extend CloudSettingsService) + const mockStaticSettingsService = { + initialize: vi.fn(), + getSettings: vi.fn(), + getAllowList: vi.fn(), + dispose: vi.fn(), + on: vi.fn(), // Add on method to avoid initialization error + off: vi.fn(), // Add off method for disposal + } + + // Override the mock to return a service that won't pass instanceof check + vi.mocked(CloudSettingsService).mockImplementation( + () => mockStaticSettingsService as unknown as CloudSettingsService, + ) + + // This should not throw even though the service doesn't pass instanceof check + const _cloudService = await CloudService.createInstance(mockContext) + + // Should not throw when disposing + expect(() => _cloudService.dispose()).not.toThrow() + + // Should still call dispose on the settings service + expect(mockStaticSettingsService.dispose).toHaveBeenCalled() + // Should NOT call off method since it's not a CloudSettingsService instance + expect(mockStaticSettingsService.off).not.toHaveBeenCalled() + }) + }) + + describe("settings event handling", () => { + let _cloudService: CloudService + + beforeEach(async () => { + _cloudService = await CloudService.createInstance(mockContext) + }) + + it("should emit settings-updated event when settings are updated", async () => { + const settingsListener = vi.fn() + _cloudService.on("settings-updated", settingsListener) + + // Get the settings listener that was registered with the settings service + const serviceSettingsListener = mockSettingsService.on.mock.calls.find( + (call: string[]) => call[0] === "settings-updated", + )?.[1] + + expect(serviceSettingsListener).toBeDefined() + + // Simulate settings update event + const settingsData = { + settings: { + version: 2, + defaultSettings: {}, + allowList: { allowAll: true, providers: {} }, + }, + previousSettings: { + version: 1, + defaultSettings: {}, + allowList: { allowAll: true, providers: {} }, + }, + } + serviceSettingsListener(settingsData) + + expect(settingsListener).toHaveBeenCalledWith(settingsData) + }) + }) + + describe("shareTask with ClineMessage retry logic", () => { + let cloudService: CloudService + + beforeEach(async () => { + // Reset mocks for shareTask tests + vi.clearAllMocks() + + // Reset authentication state for shareTask tests + mockAuthService.isAuthenticated.mockReturnValue(true) + mockAuthService.hasActiveSession.mockReturnValue(true) + mockAuthService.hasOrIsAcquiringActiveSession.mockReturnValue(true) + mockAuthService.getState.mockReturnValue("active") + + cloudService = await CloudService.createInstance(mockContext) + }) + + it("should call shareTask without retry when successful", async () => { + const taskId = "test-task-id" + const visibility = "organization" + const clineMessages: ClineMessage[] = [ + { + ts: Date.now(), + type: "say", + say: "text", + text: "Hello world", + }, + ] + + const expectedResult = { + success: true, + shareUrl: "https://example.com/share/123", + } + mockShareService.shareTask.mockResolvedValue(expectedResult) + + const result = await cloudService.shareTask(taskId, visibility, clineMessages) + + expect(mockShareService.shareTask).toHaveBeenCalledTimes(1) + expect(mockShareService.shareTask).toHaveBeenCalledWith(taskId, visibility) + expect(mockTelemetryClient.backfillMessages).not.toHaveBeenCalled() + expect(result).toEqual(expectedResult) + }) + + it("should retry with backfill when TaskNotFoundError occurs", async () => { + const taskId = "test-task-id" + const visibility = "organization" + const clineMessages: ClineMessage[] = [ + { + ts: Date.now(), + type: "say", + say: "text", + text: "Hello world", + }, + ] + + const expectedResult = { + success: true, + shareUrl: "https://example.com/share/123", + } + + // First call throws TaskNotFoundError, second call succeeds + mockShareService.shareTask + .mockRejectedValueOnce(new TaskNotFoundError(taskId)) + .mockResolvedValueOnce(expectedResult) + + const result = await cloudService.shareTask(taskId, visibility, clineMessages) + + expect(mockShareService.shareTask).toHaveBeenCalledTimes(2) + expect(mockShareService.shareTask).toHaveBeenNthCalledWith(1, taskId, visibility) + expect(mockShareService.shareTask).toHaveBeenNthCalledWith(2, taskId, visibility) + expect(mockTelemetryClient.backfillMessages).toHaveBeenCalledTimes(1) + expect(mockTelemetryClient.backfillMessages).toHaveBeenCalledWith(clineMessages, taskId) + expect(result).toEqual(expectedResult) + }) + + it("should not retry when TaskNotFoundError occurs but no clineMessages provided", async () => { + const taskId = "test-task-id" + const visibility = "organization" + + const taskNotFoundError = new TaskNotFoundError(taskId) + mockShareService.shareTask.mockRejectedValue(taskNotFoundError) + + await expect(cloudService.shareTask(taskId, visibility)).rejects.toThrow(TaskNotFoundError) + + expect(mockShareService.shareTask).toHaveBeenCalledTimes(1) + expect(mockTelemetryClient.backfillMessages).not.toHaveBeenCalled() + }) + + it("should not retry when non-TaskNotFoundError occurs", async () => { + const taskId = "test-task-id" + const visibility = "organization" + const clineMessages: ClineMessage[] = [ + { + ts: Date.now(), + type: "say", + say: "text", + text: "Hello world", + }, + ] + + const genericError = new Error("Some other error") + mockShareService.shareTask.mockRejectedValue(genericError) + + await expect(cloudService.shareTask(taskId, visibility, clineMessages)).rejects.toThrow(genericError) + + expect(mockShareService.shareTask).toHaveBeenCalledTimes(1) + expect(mockTelemetryClient.backfillMessages).not.toHaveBeenCalled() + }) + + it("should work with default parameters", async () => { + const taskId = "test-task-id" + const expectedResult = { + success: true, + shareUrl: "https://example.com/share/123", + } + mockShareService.shareTask.mockResolvedValue(expectedResult) + + const result = await cloudService.shareTask(taskId) + + expect(mockShareService.shareTask).toHaveBeenCalledTimes(1) + expect(mockShareService.shareTask).toHaveBeenCalledWith(taskId, "organization") + expect(result).toEqual(expectedResult) + }) + }) +}) diff --git a/packages/cloud/src/__tests__/CloudSettingsService.parsing.test.ts b/packages/cloud/src/__tests__/CloudSettingsService.parsing.test.ts new file mode 100644 index 000000000000..22191ec90a7c --- /dev/null +++ b/packages/cloud/src/__tests__/CloudSettingsService.parsing.test.ts @@ -0,0 +1,172 @@ +// pnpm test src/__tests__/CloudSettingsService.parsing.test.ts + +import type { ExtensionContext } from "vscode" + +import type { AuthService } from "@roo-code/types" + +import { CloudSettingsService } from "../CloudSettingsService.js" + +describe("CloudSettingsService - Response Parsing", () => { + let mockContext: ExtensionContext + let mockAuthService: AuthService + let service: CloudSettingsService + + beforeEach(() => { + // Mock ExtensionContext + mockContext = { + globalState: { + get: vi.fn(), + update: vi.fn().mockResolvedValue(undefined), + }, + } as unknown as ExtensionContext + + // Mock AuthService with active session + mockAuthService = { + getState: vi.fn().mockReturnValue("active-session"), + hasActiveSession: vi.fn().mockReturnValue(true), + getSessionToken: vi.fn().mockReturnValue("test-token"), + on: vi.fn(), + removeListener: vi.fn(), + } as unknown as AuthService + + service = new CloudSettingsService(mockContext, mockAuthService, vi.fn()) + }) + + it("should successfully parse valid extension settings response", async () => { + // Mock fetch response with a valid settings structure + const mockResponse = { + organization: { + version: 1, + defaultSettings: {}, + allowList: { + allowAll: true, + providers: {}, + }, + }, + user: { + features: {}, + settings: {}, + version: 1, + }, + } + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponse), + }) + + // Initialize the service + await service.initialize() + + // Wait for the fetch to be called (timer executes immediately but asynchronously) + await vi.waitFor(() => { + expect(global.fetch).toHaveBeenCalled() + }) + + // Wait a bit for the async processing to complete + await new Promise((resolve) => setTimeout(resolve, 10)) + + // Verify settings were parsed correctly + const orgSettings = service.getSettings() + const userSettings = service.getUserSettings() + + expect(orgSettings).toEqual(mockResponse.organization) + expect(userSettings).toEqual(mockResponse.user) + }) + + it("should handle complex nested provider settings without type errors", async () => { + // Mock response with complex nested provider settings + const mockResponse = { + organization: { + version: 2, + defaultSettings: { + maxOpenTabsContext: 10, + maxReadFileLine: 1000, + }, + allowList: { + allowAll: false, + providers: { + anthropic: { + allowAll: true, + }, + openai: { + allowAll: false, + models: ["gpt-4", "gpt-3.5-turbo"], + }, + }, + }, + providerProfiles: { + default: { + id: "default", + apiProvider: "anthropic", + apiModelId: "claude-3-opus-20240229", + apiKey: "test-key", + modelTemperature: 0.7, + }, + }, + }, + user: { + features: { + roomoteControlEnabled: true, + }, + settings: { + extensionBridgeEnabled: true, + }, + version: 1, + }, + } + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponse), + }) + + // Initialize the service + await service.initialize() + + // Wait for the fetch to be called (timer executes immediately but asynchronously) + await vi.waitFor(() => { + expect(global.fetch).toHaveBeenCalled() + }) + + // Wait a bit for the async processing to complete + await new Promise((resolve) => setTimeout(resolve, 10)) + + // Verify complex settings were parsed correctly + const orgSettings = service.getSettings() + const userSettings = service.getUserSettings() + + expect(orgSettings).toEqual(mockResponse.organization) + expect(userSettings).toEqual(mockResponse.user) + expect(orgSettings?.providerProfiles?.default).toBeDefined() + }) + + it("should handle invalid response gracefully", async () => { + // Mock invalid response + const mockResponse = { + organization: { + // Missing required fields + version: 1, + }, + user: { + // Missing required fields + version: 1, + }, + } + + global.fetch = vi.fn().mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponse), + }) + + // Initialize the service + await service.initialize() + + // Settings should remain undefined due to validation failure + const orgSettings = service.getSettings() + const userSettings = service.getUserSettings() + + expect(orgSettings).toBeUndefined() + expect(userSettings).toBeUndefined() + }) +}) diff --git a/packages/cloud/src/__tests__/CloudSettingsService.test.ts b/packages/cloud/src/__tests__/CloudSettingsService.test.ts new file mode 100644 index 000000000000..49d61f85ced3 --- /dev/null +++ b/packages/cloud/src/__tests__/CloudSettingsService.test.ts @@ -0,0 +1,535 @@ +import type { ExtensionContext } from "vscode" + +import type { OrganizationSettings, AuthService } from "@roo-code/types" + +import { CloudSettingsService } from "../CloudSettingsService.js" +import { RefreshTimer } from "../RefreshTimer.js" + +vi.mock("../RefreshTimer") + +vi.mock("../config", () => ({ + getRooCodeApiUrl: vi.fn().mockReturnValue("https://app.roocode.com"), +})) + +global.fetch = vi.fn() + +describe("CloudSettingsService", () => { + let mockContext: ExtensionContext + let mockAuthService: { + getState: ReturnType + getSessionToken: ReturnType + hasActiveSession: ReturnType + on: ReturnType + } + let mockRefreshTimer: { + start: ReturnType + stop: ReturnType + } + let cloudSettingsService: CloudSettingsService + let mockLog: ReturnType + + const mockSettings: OrganizationSettings = { + version: 1, + defaultSettings: {}, + allowList: { + allowAll: true, + providers: {}, + }, + } + + const mockUserSettings = { + features: {}, + settings: {}, + version: 1, + } + + const mockExtensionSettingsResponse = { + organization: mockSettings, + user: mockUserSettings, + } + + beforeEach(() => { + vi.clearAllMocks() + + mockContext = { + globalState: { + get: vi.fn(), + update: vi.fn().mockResolvedValue(undefined), + }, + } as unknown as ExtensionContext + + mockAuthService = { + getState: vi.fn().mockReturnValue("logged-out"), + getSessionToken: vi.fn(), + hasActiveSession: vi.fn().mockReturnValue(false), + on: vi.fn(), + } + + mockRefreshTimer = { + start: vi.fn(), + stop: vi.fn(), + } + + mockLog = vi.fn() + + // Mock RefreshTimer constructor + vi.mocked(RefreshTimer).mockImplementation(() => mockRefreshTimer as unknown as RefreshTimer) + + cloudSettingsService = new CloudSettingsService(mockContext, mockAuthService as unknown as AuthService, mockLog) + }) + + afterEach(() => { + cloudSettingsService.dispose() + }) + + describe("constructor", () => { + it("should create CloudSettingsService with proper dependencies", () => { + expect(cloudSettingsService).toBeInstanceOf(CloudSettingsService) + expect(RefreshTimer).toHaveBeenCalledWith({ + callback: expect.any(Function), + successInterval: 30000, + initialBackoffMs: 1000, + maxBackoffMs: 30000, + }) + }) + + it("should use console.log as default logger when none provided", () => { + const service = new CloudSettingsService(mockContext, mockAuthService as unknown as AuthService) + expect(service).toBeInstanceOf(CloudSettingsService) + }) + }) + + describe("initialize", () => { + it("should load cached settings on initialization", async () => { + const cachedSettings = { + version: 1, + defaultSettings: {}, + allowList: { allowAll: true, providers: {} }, + } + + // Create a fresh mock context for this test + const testContext = { + globalState: { + get: vi.fn((key: string) => { + if (key === "organization-settings") return cachedSettings + if (key === "user-settings") return mockUserSettings + return undefined + }), + update: vi.fn().mockResolvedValue(undefined), + }, + } as unknown as ExtensionContext + + // Mock auth service to not be logged out + const testAuthService = { + getState: vi.fn().mockReturnValue("active"), + getSessionToken: vi.fn(), + hasActiveSession: vi.fn().mockReturnValue(false), + on: vi.fn(), + } + + // Create a new instance to test initialization + const testService = new CloudSettingsService( + testContext, + testAuthService as unknown as AuthService, + mockLog, + ) + await testService.initialize() + + expect(testContext.globalState.get).toHaveBeenCalledWith("organization-settings") + expect(testContext.globalState.get).toHaveBeenCalledWith("user-settings") + expect(testService.getSettings()).toEqual(cachedSettings) + + testService.dispose() + }) + + it("should clear cached settings if user is logged out", async () => { + const cachedSettings = { + version: 1, + defaultSettings: {}, + allowList: { allowAll: true, providers: {} }, + } + mockContext.globalState.get = vi.fn((key: string) => { + if (key === "organization-settings") return cachedSettings + if (key === "user-settings") return mockUserSettings + return undefined + }) + mockAuthService.getState.mockReturnValue("logged-out") + + await cloudSettingsService.initialize() + + // Check that both cache keys are cleared + const updateCalls = vi.mocked(mockContext.globalState.update).mock.calls + const orgSettingsCall = updateCalls.find((call) => call[0] === "organization-settings") + const userSettingsCall = updateCalls.find((call) => call[0] === "user-settings") + + expect(orgSettingsCall).toBeDefined() + expect(orgSettingsCall?.[1]).toBeUndefined() + expect(userSettingsCall).toBeDefined() + expect(userSettingsCall?.[1]).toBeUndefined() + }) + + it("should set up auth service event listeners", async () => { + await cloudSettingsService.initialize() + + expect(mockAuthService.on).toHaveBeenCalledWith("auth-state-changed", expect.any(Function)) + }) + + it("should start timer if user has active session", async () => { + mockAuthService.hasActiveSession.mockReturnValue(true) + + await cloudSettingsService.initialize() + + expect(mockRefreshTimer.start).toHaveBeenCalled() + }) + + it("should not start timer if user has no active session", async () => { + mockAuthService.hasActiveSession.mockReturnValue(false) + + await cloudSettingsService.initialize() + + expect(mockRefreshTimer.start).not.toHaveBeenCalled() + }) + }) + + describe("event emission", () => { + beforeEach(async () => { + await cloudSettingsService.initialize() + }) + + it("should emit 'settings-updated' event when settings change", async () => { + const eventSpy = vi.fn() + cloudSettingsService.on("settings-updated", eventSpy) + + mockAuthService.getSessionToken.mockReturnValue("valid-token") + vi.mocked(fetch).mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockExtensionSettingsResponse), + } as unknown as Response) + + // Get the callback function passed to RefreshTimer + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await timerCallback?.() + + expect(eventSpy).toHaveBeenCalledWith({}) + }) + + it("should emit event when either org or user settings change", async () => { + const eventSpy = vi.fn() + + const previousSettings = { + version: 1, + defaultSettings: {}, + allowList: { allowAll: true, providers: {} }, + } + const newSettings = { + version: 2, + defaultSettings: {}, + allowList: { allowAll: true, providers: {} }, + } + + // Create a fresh mock context for this test + const testContext = { + globalState: { + get: vi.fn((key: string) => { + if (key === "organization-settings") return previousSettings + if (key === "user-settings") return mockUserSettings + return undefined + }), + update: vi.fn().mockResolvedValue(undefined), + }, + } as unknown as ExtensionContext + + // Mock auth service to not be logged out + const testAuthService = { + getState: vi.fn().mockReturnValue("active"), + getSessionToken: vi.fn().mockReturnValue("valid-token"), + hasActiveSession: vi.fn().mockReturnValue(false), + on: vi.fn(), + } + + // Create a new service instance with cached settings + const testService = new CloudSettingsService( + testContext, + testAuthService as unknown as AuthService, + mockLog, + ) + testService.on("settings-updated", eventSpy) + await testService.initialize() + + vi.mocked(fetch).mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue({ + organization: newSettings, + user: mockUserSettings, + }), + } as unknown as Response) + + // Get the callback function passed to RefreshTimer for this instance + const timerCallback = + vi.mocked(RefreshTimer).mock.calls[vi.mocked(RefreshTimer).mock.calls.length - 1]?.[0]?.callback + + await timerCallback?.() + + expect(eventSpy).toHaveBeenCalledWith({}) + + testService.dispose() + }) + + it("should not emit event when settings version is unchanged", async () => { + const eventSpy = vi.fn() + + // Create a fresh mock context for this test + const testContext = { + globalState: { + get: vi.fn((key: string) => { + if (key === "organization-settings") return mockSettings + if (key === "user-settings") return mockUserSettings + return undefined + }), + update: vi.fn().mockResolvedValue(undefined), + }, + } as unknown as ExtensionContext + + // Mock auth service to not be logged out + const testAuthService = { + getState: vi.fn().mockReturnValue("active"), + getSessionToken: vi.fn().mockReturnValue("valid-token"), + hasActiveSession: vi.fn().mockReturnValue(false), + on: vi.fn(), + } + + // Create a new service instance with cached settings + const testService = new CloudSettingsService( + testContext, + testAuthService as unknown as AuthService, + mockLog, + ) + testService.on("settings-updated", eventSpy) + await testService.initialize() + + vi.mocked(fetch).mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockExtensionSettingsResponse), // Same version + } as unknown as Response) + + // Get the callback function passed to RefreshTimer for this instance + const timerCallback = + vi.mocked(RefreshTimer).mock.calls[vi.mocked(RefreshTimer).mock.calls.length - 1]?.[0]?.callback + + await timerCallback?.() + + expect(eventSpy).not.toHaveBeenCalled() + + testService.dispose() + }) + + it("should not emit event when fetch fails", async () => { + const eventSpy = vi.fn() + cloudSettingsService.on("settings-updated", eventSpy) + + mockAuthService.getSessionToken.mockReturnValue("valid-token") + vi.mocked(fetch).mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + } as unknown as Response) + + // Get the callback function passed to RefreshTimer + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await timerCallback?.() + + expect(eventSpy).not.toHaveBeenCalled() + }) + + it("should not emit event when no auth token available", async () => { + const eventSpy = vi.fn() + cloudSettingsService.on("settings-updated", eventSpy) + + mockAuthService.getSessionToken.mockReturnValue(null) + + // Get the callback function passed to RefreshTimer + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await timerCallback?.() + + expect(eventSpy).not.toHaveBeenCalled() + expect(fetch).not.toHaveBeenCalled() + }) + }) + + describe("fetchSettings", () => { + beforeEach(async () => { + await cloudSettingsService.initialize() + }) + + it("should fetch and cache settings successfully", async () => { + mockAuthService.getSessionToken.mockReturnValue("valid-token") + vi.mocked(fetch).mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockExtensionSettingsResponse), + } as unknown as Response) + + // Get the callback function passed to RefreshTimer + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + const result = await timerCallback?.() + + expect(result).toBe(true) + + expect(fetch).toHaveBeenCalledWith("https://app.roocode.com/api/extension-settings", { + headers: { + Authorization: "Bearer valid-token", + }, + }) + + expect(mockContext.globalState.update).toHaveBeenCalledWith("organization-settings", mockSettings) + expect(mockContext.globalState.update).toHaveBeenCalledWith("user-settings", mockUserSettings) + }) + + it("should handle fetch errors gracefully", async () => { + mockAuthService.getSessionToken.mockReturnValue("valid-token") + vi.mocked(fetch).mockRejectedValue(new Error("Network error")) + + // Get the callback function passed to RefreshTimer + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + const result = await timerCallback?.() + + expect(result).toBe(false) + + expect(mockLog).toHaveBeenCalledWith( + "[cloud-settings] Error fetching extension settings:", + expect.any(Error), + ) + }) + + it("should handle invalid response format", async () => { + mockAuthService.getSessionToken.mockReturnValue("valid-token") + vi.mocked(fetch).mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue({ invalid: "data" }), + } as unknown as Response) + + // Get the callback function passed to RefreshTimer + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + const result = await timerCallback?.() + + expect(result).toBe(false) + + expect(mockLog).toHaveBeenCalledWith( + "[cloud-settings] Invalid extension settings format:", + expect.any(Object), + ) + }) + }) + + describe("getAllowList", () => { + it("should return settings allowList when available", async () => { + mockContext.globalState.get = vi.fn((key: string) => { + if (key === "organization-settings") return mockSettings + return undefined + }) + await cloudSettingsService.initialize() + + const allowList = cloudSettingsService.getAllowList() + expect(allowList).toEqual(mockSettings.allowList) + }) + + it("should return default allow all when no settings available", () => { + const allowList = cloudSettingsService.getAllowList() + expect(allowList).toEqual({ allowAll: true, providers: {} }) + }) + }) + + describe("getSettings", () => { + it("should return current settings", async () => { + // Create a fresh mock context for this test + const testContext = { + globalState: { + get: vi.fn((key: string) => { + if (key === "organization-settings") return mockSettings + return undefined + }), + update: vi.fn().mockResolvedValue(undefined), + }, + } as unknown as ExtensionContext + + // Mock auth service to not be logged out + const testAuthService = { + getState: vi.fn().mockReturnValue("active"), + getSessionToken: vi.fn(), + hasActiveSession: vi.fn().mockReturnValue(false), + on: vi.fn(), + } + + const testService = new CloudSettingsService( + testContext, + testAuthService as unknown as AuthService, + mockLog, + ) + await testService.initialize() + + const settings = testService.getSettings() + expect(settings).toEqual(mockSettings) + + testService.dispose() + }) + + it("should return undefined when no settings available", () => { + const settings = cloudSettingsService.getSettings() + expect(settings).toBeUndefined() + }) + }) + + describe("dispose", () => { + it("should remove all listeners and stop timer", () => { + const removeAllListenersSpy = vi.spyOn(cloudSettingsService, "removeAllListeners") + + cloudSettingsService.dispose() + + expect(removeAllListenersSpy).toHaveBeenCalled() + expect(mockRefreshTimer.stop).toHaveBeenCalled() + }) + }) + + describe("auth service event handlers", () => { + it("should start timer when auth-state-changed event is triggered with active-session", async () => { + await cloudSettingsService.initialize() + + // Get the auth-state-changed handler + const authStateChangedHandler = mockAuthService.on.mock.calls.find( + (call: string[]) => call[0] === "auth-state-changed", + )?.[1] + expect(authStateChangedHandler).toBeDefined() + + // Simulate active-session state change + authStateChangedHandler({ + state: "active-session", + previousState: "attempting-session", + }) + expect(mockRefreshTimer.start).toHaveBeenCalled() + }) + + it("should stop timer and remove settings when auth-state-changed event is triggered with logged-out", async () => { + await cloudSettingsService.initialize() + + // Get the auth-state-changed handler + const authStateChangedHandler = mockAuthService.on.mock.calls.find( + (call: string[]) => call[0] === "auth-state-changed", + )?.[1] + expect(authStateChangedHandler).toBeDefined() + + // Simulate logged-out state change from active-session + await authStateChangedHandler({ + state: "logged-out", + previousState: "active-session", + }) + expect(mockRefreshTimer.stop).toHaveBeenCalled() + expect(mockContext.globalState.update).toHaveBeenCalledWith("organization-settings", undefined) + expect(mockContext.globalState.update).toHaveBeenCalledWith("user-settings", undefined) + }) + }) +}) diff --git a/packages/cloud/src/__tests__/CloudShareService.test.ts b/packages/cloud/src/__tests__/CloudShareService.test.ts new file mode 100644 index 000000000000..d8a3820b92d5 --- /dev/null +++ b/packages/cloud/src/__tests__/CloudShareService.test.ts @@ -0,0 +1,318 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { MockedFunction } from "vitest" +import * as vscode from "vscode" + +import type { SettingsService, AuthService } from "@roo-code/types" + +import { CloudAPI } from "../CloudAPI.js" +import { CloudShareService } from "../CloudShareService.js" +import { CloudAPIError, TaskNotFoundError } from "../errors.js" + +const mockFetch = vi.fn() +global.fetch = mockFetch as any + +vi.mock("vscode", () => ({ + window: { + showInformationMessage: vi.fn(), + showErrorMessage: vi.fn(), + showQuickPick: vi.fn(), + }, + env: { + clipboard: { + writeText: vi.fn(), + }, + openExternal: vi.fn(), + }, + Uri: { + parse: vi.fn(), + }, + extensions: { + getExtension: vi.fn(() => ({ + packageJSON: { version: "1.0.0" }, + })), + }, +})) + +vi.mock("../Config", () => ({ + getRooCodeApiUrl: () => "https://app.roocode.com", +})) + +vi.mock("../utils", () => ({ + getUserAgent: () => "Roo-Code 1.0.0", +})) + +describe("CloudShareService", () => { + let shareService: CloudShareService + let mockAuthService: AuthService + let mockSettingsService: SettingsService + let mockCloudAPI: CloudAPI + let mockLog: MockedFunction<(...args: unknown[]) => void> + + beforeEach(() => { + vi.clearAllMocks() + mockFetch.mockClear() + + mockLog = vi.fn() + mockAuthService = { + hasActiveSession: vi.fn(), + getSessionToken: vi.fn(), + isAuthenticated: vi.fn(), + } as any + + mockSettingsService = { + getSettings: vi.fn(), + } as any + + mockCloudAPI = new CloudAPI(mockAuthService, mockLog) + + shareService = new CloudShareService(mockCloudAPI, mockSettingsService, mockLog) + }) + + describe("shareTask", () => { + it("should share task with organization visibility and copy to clipboard", async () => { + const mockResponseData = { + success: true, + shareUrl: "https://app.roocode.com/share/abc123", + } + + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + + mockFetch.mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponseData), + }) + + const result = await shareService.shareTask("task-123", "organization") + + expect(result.success).toBe(true) + expect(result.shareUrl).toBe("https://app.roocode.com/share/abc123") + + expect(mockFetch).toHaveBeenCalledWith("https://app.roocode.com/api/extension/share", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: "Bearer session-token", + "User-Agent": "Roo-Code 1.0.0", + }, + body: JSON.stringify({ + taskId: "task-123", + visibility: "organization", + }), + signal: expect.any(AbortSignal), + }) + + expect(vscode.env.clipboard.writeText).toHaveBeenCalledWith("https://app.roocode.com/share/abc123") + }) + + it("should share task with public visibility", async () => { + const mockResponseData = { + success: true, + shareUrl: "https://app.roocode.com/share/abc123", + } + + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + + mockFetch.mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponseData), + }) + + const result = await shareService.shareTask("task-123", "public") + + expect(result.success).toBe(true) + + expect(mockFetch).toHaveBeenCalledWith("https://app.roocode.com/api/extension/share", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: "Bearer session-token", + "User-Agent": "Roo-Code 1.0.0", + }, + body: JSON.stringify({ taskId: "task-123", visibility: "public" }), + signal: expect.any(AbortSignal), + }) + }) + + it("should default to organization visibility when not specified", async () => { + const mockResponseData = { + success: true, + shareUrl: "https://app.roocode.com/share/abc123", + } + + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + mockFetch.mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponseData), + }) + + const result = await shareService.shareTask("task-123") + + expect(result.success).toBe(true) + expect(mockFetch).toHaveBeenCalledWith("https://app.roocode.com/api/extension/share", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: "Bearer session-token", + "User-Agent": "Roo-Code 1.0.0", + }, + body: JSON.stringify({ + taskId: "task-123", + visibility: "organization", + }), + signal: expect.any(AbortSignal), + }) + }) + + it("should handle API error response", async () => { + const mockResponseData = { + success: false, + error: "Task not found", + } + + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + mockFetch.mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue(mockResponseData), + }) + + const result = await shareService.shareTask("task-123", "organization") + + expect(result.success).toBe(false) + expect(result.error).toBe("Task not found") + }) + + it("should handle authentication errors", async () => { + ;(mockAuthService.getSessionToken as any).mockReturnValue(null) + + await expect(shareService.shareTask("task-123", "organization")).rejects.toThrow("Authentication required") + }) + + it("should handle unexpected errors", async () => { + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + mockFetch.mockRejectedValue(new Error("Network error")) + + await expect(shareService.shareTask("task-123", "organization")).rejects.toThrow("Network error") + }) + + it("should throw TaskNotFoundError for 404 responses", async () => { + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + mockFetch.mockResolvedValue({ + ok: false, + status: 404, + statusText: "Not Found", + json: vi.fn().mockRejectedValue(new Error("Invalid JSON")), + text: vi.fn().mockResolvedValue("Not Found"), + }) + + await expect(shareService.shareTask("task-123", "organization")).rejects.toThrow(TaskNotFoundError) + await expect(shareService.shareTask("task-123", "organization")).rejects.toThrow("Task not found") + }) + + it("should throw generic Error for non-404 HTTP errors", async () => { + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + mockFetch.mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + json: vi.fn().mockRejectedValue(new Error("Invalid JSON")), + text: vi.fn().mockResolvedValue("Internal Server Error"), + }) + + await expect(shareService.shareTask("task-123", "organization")).rejects.toThrow(CloudAPIError) + await expect(shareService.shareTask("task-123", "organization")).rejects.toThrow( + "HTTP 500: Internal Server Error", + ) + }) + + it("should create TaskNotFoundError with correct properties", async () => { + ;(mockAuthService.getSessionToken as any).mockReturnValue("session-token") + mockFetch.mockResolvedValue({ + ok: false, + status: 404, + statusText: "Not Found", + json: vi.fn().mockRejectedValue(new Error("Invalid JSON")), + text: vi.fn().mockResolvedValue("Not Found"), + }) + + try { + await shareService.shareTask("task-123", "organization") + expect.fail("Expected TaskNotFoundError to be thrown") + } catch (error) { + expect(error).toBeInstanceOf(TaskNotFoundError) + expect(error).toBeInstanceOf(Error) + expect((error as TaskNotFoundError).message).toBe("Task not found") + } + }) + }) + + describe("canShareTask", () => { + it("should return true when authenticated and sharing is enabled", async () => { + ;(mockAuthService.isAuthenticated as any).mockReturnValue(true) + ;(mockSettingsService.getSettings as any).mockReturnValue({ + cloudSettings: { + enableTaskSharing: true, + }, + }) + + const result = await shareService.canShareTask() + + expect(result).toBe(true) + }) + + it("should return false when authenticated but sharing is disabled", async () => { + ;(mockAuthService.isAuthenticated as any).mockReturnValue(true) + ;(mockSettingsService.getSettings as any).mockReturnValue({ + cloudSettings: { + enableTaskSharing: false, + }, + }) + + const result = await shareService.canShareTask() + + expect(result).toBe(false) + }) + + it("should return false when authenticated and sharing setting is undefined (default)", async () => { + ;(mockAuthService.isAuthenticated as any).mockReturnValue(true) + ;(mockSettingsService.getSettings as any).mockReturnValue({ + cloudSettings: {}, + }) + + const result = await shareService.canShareTask() + + expect(result).toBe(false) + }) + + it("should return false when authenticated and no settings available (default)", async () => { + ;(mockAuthService.isAuthenticated as any).mockReturnValue(true) + ;(mockSettingsService.getSettings as any).mockReturnValue(undefined) + + const result = await shareService.canShareTask() + + expect(result).toBe(false) + }) + + it("should return false when settings service returns undefined", async () => { + ;(mockSettingsService.getSettings as any).mockReturnValue(undefined) + + const result = await shareService.canShareTask() + + expect(result).toBe(false) + }) + + it("should handle errors gracefully", async () => { + ;(mockSettingsService.getSettings as any).mockImplementation(() => { + throw new Error("Settings error") + }) + + const result = await shareService.canShareTask() + + expect(result).toBe(false) + expect(mockLog).toHaveBeenCalledWith( + "[ShareService] Error checking if task can be shared:", + expect.any(Error), + ) + }) + }) +}) diff --git a/packages/cloud/src/__tests__/RefreshTimer.test.ts b/packages/cloud/src/__tests__/RefreshTimer.test.ts new file mode 100644 index 000000000000..4cb5d8d80356 --- /dev/null +++ b/packages/cloud/src/__tests__/RefreshTimer.test.ts @@ -0,0 +1,210 @@ +// npx vitest run src/__tests__/RefreshTimer.test.ts + +import type { Mock } from "vitest" + +import { RefreshTimer } from "../RefreshTimer.js" + +vi.useFakeTimers() + +describe("RefreshTimer", () => { + let mockCallback: Mock + let refreshTimer: RefreshTimer + + beforeEach(() => { + mockCallback = vi.fn() + mockCallback.mockResolvedValue(true) + }) + + afterEach(() => { + if (refreshTimer) { + refreshTimer.stop() + } + + vi.clearAllTimers() + vi.clearAllMocks() + }) + + it("should execute callback immediately when started", () => { + refreshTimer = new RefreshTimer({ + callback: mockCallback, + }) + + refreshTimer.start() + + expect(mockCallback).toHaveBeenCalledTimes(1) + }) + + it("should schedule next attempt after success interval when callback succeeds", async () => { + mockCallback.mockResolvedValue(true) + + refreshTimer = new RefreshTimer({ + callback: mockCallback, + successInterval: 50000, // 50 seconds + }) + + refreshTimer.start() + + // Fast-forward to execute the first callback + await Promise.resolve() + + expect(mockCallback).toHaveBeenCalledTimes(1) + + // Fast-forward 50 seconds + vi.advanceTimersByTime(50000) + + // Callback should be called again + expect(mockCallback).toHaveBeenCalledTimes(2) + }) + + it("should use exponential backoff when callback fails", async () => { + mockCallback.mockResolvedValue(false) + + refreshTimer = new RefreshTimer({ + callback: mockCallback, + initialBackoffMs: 1000, // 1 second + }) + + refreshTimer.start() + + // Fast-forward to execute the first callback + await Promise.resolve() + + expect(mockCallback).toHaveBeenCalledTimes(1) + + // Fast-forward 1 second + vi.advanceTimersByTime(1000) + + // Callback should be called again + expect(mockCallback).toHaveBeenCalledTimes(2) + + // Fast-forward to execute the second callback + await Promise.resolve() + + // Fast-forward 2 seconds + vi.advanceTimersByTime(2000) + + // Callback should be called again + expect(mockCallback).toHaveBeenCalledTimes(3) + + // Fast-forward to execute the third callback + await Promise.resolve() + }) + + it("should not exceed maximum backoff interval", async () => { + mockCallback.mockResolvedValue(false) + + refreshTimer = new RefreshTimer({ + callback: mockCallback, + initialBackoffMs: 1000, // 1 second + maxBackoffMs: 5000, // 5 seconds + }) + + refreshTimer.start() + + // Fast-forward through multiple failures to reach max backoff + await Promise.resolve() // First attempt + vi.advanceTimersByTime(1000) + + await Promise.resolve() // Second attempt (backoff = 2000ms) + vi.advanceTimersByTime(2000) + + await Promise.resolve() // Third attempt (backoff = 4000ms) + vi.advanceTimersByTime(4000) + + await Promise.resolve() // Fourth attempt (backoff would be 8000ms but max is 5000ms) + + // Should be capped at maxBackoffMs (no way to verify without logger) + }) + + it("should reset backoff after a successful attempt", async () => { + // First call fails, second succeeds, third fails + mockCallback.mockResolvedValueOnce(false).mockResolvedValueOnce(true).mockResolvedValueOnce(false) + + refreshTimer = new RefreshTimer({ + callback: mockCallback, + initialBackoffMs: 1000, + successInterval: 5000, + }) + + refreshTimer.start() + + // First attempt (fails) + await Promise.resolve() + + // Fast-forward 1 second + vi.advanceTimersByTime(1000) + + // Second attempt (succeeds) + await Promise.resolve() + + // Fast-forward 5 seconds + vi.advanceTimersByTime(5000) + + // Third attempt (fails) + await Promise.resolve() + + // Backoff should be reset to initial value (no way to verify without logger) + }) + + it("should handle errors in callback as failures", async () => { + mockCallback.mockRejectedValue(new Error("Test error")) + + refreshTimer = new RefreshTimer({ + callback: mockCallback, + initialBackoffMs: 1000, + }) + + refreshTimer.start() + + // Fast-forward to execute the callback + await Promise.resolve() + + // Error should be treated as a failure (no way to verify without logger) + }) + + it("should stop the timer and cancel pending executions", () => { + refreshTimer = new RefreshTimer({ + callback: mockCallback, + }) + + refreshTimer.start() + + // Stop the timer + refreshTimer.stop() + + // Fast-forward a long time + vi.advanceTimersByTime(1000000) + + // Callback should only have been called once (the initial call) + expect(mockCallback).toHaveBeenCalledTimes(1) + }) + + it("should reset the backoff state", async () => { + mockCallback.mockResolvedValue(false) + + refreshTimer = new RefreshTimer({ + callback: mockCallback, + initialBackoffMs: 1000, + }) + + refreshTimer.start() + + // Fast-forward through a few failures + await Promise.resolve() + vi.advanceTimersByTime(1000) + + await Promise.resolve() + vi.advanceTimersByTime(2000) + + // Reset the timer + refreshTimer.reset() + + // Stop and restart to trigger a new execution + refreshTimer.stop() + refreshTimer.start() + + await Promise.resolve() + + // Backoff should be back to initial value (no way to verify without logger) + }) +}) diff --git a/packages/cloud/src/__tests__/StaticSettingsService.test.ts b/packages/cloud/src/__tests__/StaticSettingsService.test.ts new file mode 100644 index 000000000000..f2c94a5f061c --- /dev/null +++ b/packages/cloud/src/__tests__/StaticSettingsService.test.ts @@ -0,0 +1,102 @@ +// npx vitest run src/__tests__/StaticSettingsService.test.ts + +import { StaticSettingsService } from "../StaticSettingsService.js" + +describe("StaticSettingsService", () => { + const validSettings = { + version: 1, + cloudSettings: { + recordTaskMessages: true, + enableTaskSharing: true, + taskShareExpirationDays: 30, + }, + defaultSettings: { + enableCheckpoints: true, + maxOpenTabsContext: 10, + }, + allowList: { + allowAll: false, + providers: { + anthropic: { + allowAll: true, + }, + }, + }, + } + + const validBase64 = Buffer.from(JSON.stringify(validSettings)).toString("base64") + + describe("constructor", () => { + it("should parse valid base64 encoded JSON settings", () => { + const service = new StaticSettingsService(validBase64) + expect(service.getSettings()).toEqual(validSettings) + }) + + it("should throw error for invalid base64", () => { + expect(() => new StaticSettingsService("invalid-base64!@#")).toThrow("Failed to parse static settings") + }) + + it("should throw error for invalid JSON", () => { + const invalidJson = Buffer.from("{ invalid json }").toString("base64") + expect(() => new StaticSettingsService(invalidJson)).toThrow("Failed to parse static settings") + }) + + it("should throw error for invalid schema", () => { + const invalidSettings = { invalid: "schema" } + const invalidBase64 = Buffer.from(JSON.stringify(invalidSettings)).toString("base64") + expect(() => new StaticSettingsService(invalidBase64)).toThrow("Failed to parse static settings") + }) + }) + + describe("getAllowList", () => { + it("should return the allow list from settings", () => { + const service = new StaticSettingsService(validBase64) + expect(service.getAllowList()).toEqual(validSettings.allowList) + }) + }) + + describe("getSettings", () => { + it("should return the parsed settings", () => { + const service = new StaticSettingsService(validBase64) + expect(service.getSettings()).toEqual(validSettings) + }) + }) + + describe("dispose", () => { + it("should be a no-op for static settings", () => { + const service = new StaticSettingsService(validBase64) + expect(() => service.dispose()).not.toThrow() + }) + }) + + describe("logging", () => { + it("should use provided logger for errors", () => { + const mockLog = vi.fn() + expect(() => new StaticSettingsService("invalid-base64!@#", mockLog)).toThrow() + + expect(mockLog).toHaveBeenCalledWith( + expect.stringContaining("[StaticSettingsService] failed to parse static settings:"), + expect.any(Error), + ) + }) + + it("should use console.log as default logger for errors", () => { + const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => {}) + expect(() => new StaticSettingsService("invalid-base64!@#")).toThrow() + + expect(consoleSpy).toHaveBeenCalledWith( + expect.stringContaining("[StaticSettingsService] failed to parse static settings:"), + expect.any(Error), + ) + + consoleSpy.mockRestore() + }) + + it("should not log anything for successful parsing", () => { + const mockLog = vi.fn() + new StaticSettingsService(validBase64, mockLog) + + expect(mockLog).not.toHaveBeenCalled() + }) + }) +}) diff --git a/packages/cloud/src/__tests__/StaticTokenAuthService.spec.ts b/packages/cloud/src/__tests__/StaticTokenAuthService.spec.ts new file mode 100644 index 000000000000..a3756082eac1 --- /dev/null +++ b/packages/cloud/src/__tests__/StaticTokenAuthService.spec.ts @@ -0,0 +1,314 @@ +import type { ExtensionContext } from "vscode" + +import { StaticTokenAuthService } from "../StaticTokenAuthService.js" + +vi.mock("vscode", () => ({ + window: { + showInformationMessage: vi.fn(), + }, + env: { + openExternal: vi.fn(), + uriScheme: "vscode", + }, + Uri: { + parse: vi.fn(), + }, +})) + +describe("StaticTokenAuthService", () => { + let authService: StaticTokenAuthService + let mockContext: ExtensionContext + let mockLog: (...args: unknown[]) => void + const testToken = "test-static-token" + + // Job token (t:'cj') with userId and orgId - sub is CloudJob ID + const jobTokenWithOrg = + "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJyY2MiLCJzdWIiOiIzIiwiZXhwIjoxNzU2Mjc5NzU0LCJpYXQiOjE3NTYyNzU4NTQsIm5iZiI6MTc1NjI3NTgyNCwidiI6MSwiciI6eyJ1IjoidXNlcl8yeG1CaGVqTmVEVHdhbk04Q2dJT25NZ1Z4ekMiLCJvIjoib3JnXzEyM2FiYyIsInQiOiJjaiJ9fQ.k6VgV0cZUbx75kdedaeAsVYSRT7PzxDOCseLowq6moX92B4QuqtNkPRLKtQX7pJCxjuqRwEjJxmfTeXtQ82Pyg" + + // Job token without orgId (orgId was null during creation) + const jobTokenNoOrg = + "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJyY2MiLCJzdWIiOiI1IiwiZXhwIjoxNzU2Mjc5NzU0LCJpYXQiOjE3NTYyNzU4NTQsIm5iZiI6MTc1NjI3NTgyNCwidiI6MSwiciI6eyJ1IjoidXNlcl8yeG1CaGVqTmVEVHdhbk04Q2dJT25NZ1Z4ekMiLCJ0IjoiY2oifX0.signature" + + // Auth token (t:'auth') - sub is User ID + const authToken = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJyY2MiLCJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTc1NjI3OTc1NCwiaWF0IjoxNzU2Mjc1ODU0LCJuYmYiOjE3NTYyNzU4MjQsInYiOjEsInIiOnsidSI6InVzZXJfMTIzIiwidCI6ImF1dGgifX0.signature" + + // JWT without the 'r' field (legacy format) + const legacyJWT = + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + + beforeEach(() => { + mockLog = vi.fn() + + // Create a minimal mock that satisfies the constructor requirements + const mockContextPartial = { + extension: { + packageJSON: { + publisher: "TestPublisher", + name: "test-extension", + }, + }, + globalState: { + get: vi.fn(), + update: vi.fn(), + }, + secrets: { + get: vi.fn(), + store: vi.fn(), + delete: vi.fn(), + onDidChange: vi.fn(), + }, + subscriptions: [], + } + + // Use type assertion for test mocking + mockContext = mockContextPartial as unknown as ExtensionContext + + authService = new StaticTokenAuthService(mockContext, testToken, mockLog) + }) + + afterEach(() => { + vi.clearAllMocks() + }) + + describe("constructor", () => { + it("should create instance and log static token mode", () => { + expect(authService).toBeInstanceOf(StaticTokenAuthService) + expect(mockLog).toHaveBeenCalledWith("[auth] Using StaticTokenAuthService") + }) + + it("should use console.log as default logger", () => { + const serviceWithoutLog = new StaticTokenAuthService(mockContext as unknown as ExtensionContext, testToken) + // Can't directly test console.log usage, but constructor should not throw + expect(serviceWithoutLog).toBeInstanceOf(StaticTokenAuthService) + }) + + it("should parse job token with orgId and extract userId from r.u", () => { + const serviceWithJWT = new StaticTokenAuthService(mockContext, jobTokenWithOrg, mockLog) + + const userInfo = serviceWithJWT.getUserInfo() + expect(userInfo?.id).toBe("user_2xmBhejNeDTwanM8CgIOnMgVxzC") + expect(userInfo?.organizationId).toBe("org_123abc") + expect(userInfo?.extensionBridgeEnabled).toBe(true) + }) + + it("should parse job token without orgId (null orgId case)", () => { + const serviceWithJWT = new StaticTokenAuthService(mockContext, jobTokenNoOrg, mockLog) + + const userInfo = serviceWithJWT.getUserInfo() + expect(userInfo?.id).toBe("user_2xmBhejNeDTwanM8CgIOnMgVxzC") + expect(userInfo?.organizationId).toBeUndefined() + expect(userInfo?.extensionBridgeEnabled).toBe(true) + }) + + it("should parse auth token and extract userId from r.u", () => { + const serviceWithAuthToken = new StaticTokenAuthService(mockContext, authToken, mockLog) + + const userInfo = serviceWithAuthToken.getUserInfo() + expect(userInfo?.id).toBe("user_123") + expect(userInfo?.organizationId).toBeUndefined() + expect(userInfo?.extensionBridgeEnabled).toBe(true) + }) + + it("should handle legacy JWT format with sub field", () => { + const serviceWithLegacyJWT = new StaticTokenAuthService(mockContext, legacyJWT, mockLog) + + const userInfo = serviceWithLegacyJWT.getUserInfo() + expect(userInfo?.id).toBe("user_123") + expect(userInfo?.organizationId).toBeUndefined() + expect(userInfo?.extensionBridgeEnabled).toBe(true) + }) + + it("should handle invalid JWT gracefully", () => { + const serviceWithInvalidJWT = new StaticTokenAuthService(mockContext, "invalid-jwt-token", mockLog) + + const userInfo = serviceWithInvalidJWT.getUserInfo() + expect(userInfo?.id).toBeUndefined() + expect(userInfo?.organizationId).toBeUndefined() + expect(userInfo?.extensionBridgeEnabled).toBe(true) + + expect(mockLog).toHaveBeenCalledWith("[auth] Failed to parse JWT:", expect.any(Error)) + }) + + it("should handle malformed JWT payload", () => { + // JWT with invalid base64 in payload + const malformedJWT = "header.!!!invalid-base64!!!.signature" + const serviceWithMalformedJWT = new StaticTokenAuthService(mockContext, malformedJWT, mockLog) + + const userInfo = serviceWithMalformedJWT.getUserInfo() + expect(userInfo?.id).toBeUndefined() + expect(userInfo?.organizationId).toBeUndefined() + + expect(mockLog).toHaveBeenCalledWith("[auth] Failed to parse JWT:", expect.any(Error)) + }) + }) + + describe("initialize", () => { + it("should start in active-session state", async () => { + await authService.initialize() + expect(authService.getState()).toBe("active-session") + }) + + it("should not emit events on initialize", async () => { + const authStateChangedSpy = vi.fn() + const userInfoSpy = vi.fn() + + authService.on("auth-state-changed", authStateChangedSpy) + authService.on("user-info", userInfoSpy) + + await authService.initialize() + + expect(authStateChangedSpy).not.toHaveBeenCalled() + expect(userInfoSpy).not.toHaveBeenCalled() + }) + }) + + describe("broadcast", () => { + it("should emit auth-state-changed event", () => { + const spy = vi.fn() + authService.on("auth-state-changed", spy) + + authService.broadcast() + + expect(spy).toHaveBeenCalledWith({ + state: "active-session", + previousState: "initializing", + }) + }) + + it("should emit user-info event", () => { + const spy = vi.fn() + authService.on("user-info", spy) + + authService.broadcast() + + expect(spy).toHaveBeenCalledWith({ + userInfo: expect.objectContaining({ + extensionBridgeEnabled: true, + }), + }) + }) + + it("should emit user-info with parsed JWT data", () => { + const serviceWithJWT = new StaticTokenAuthService(mockContext, jobTokenWithOrg, mockLog) + + const spy = vi.fn() + serviceWithJWT.on("user-info", spy) + + serviceWithJWT.broadcast() + + expect(spy).toHaveBeenCalledWith({ + userInfo: { + extensionBridgeEnabled: true, + id: "user_2xmBhejNeDTwanM8CgIOnMgVxzC", + organizationId: "org_123abc", + }, + }) + }) + }) + + describe("getSessionToken", () => { + it("should return the provided token", () => { + expect(authService.getSessionToken()).toBe(testToken) + }) + + it("should return different token when constructed with different token", () => { + const differentToken = "different-token" + const differentService = new StaticTokenAuthService(mockContext, differentToken, mockLog) + expect(differentService.getSessionToken()).toBe(differentToken) + }) + }) + + describe("getUserInfo", () => { + it("should return object with extensionBridgeEnabled flag", () => { + const userInfo = authService.getUserInfo() + expect(userInfo).toHaveProperty("extensionBridgeEnabled") + expect(userInfo?.extensionBridgeEnabled).toBe(true) + }) + }) + + describe("getStoredOrganizationId", () => { + it("should return null for non-JWT token", () => { + expect(authService.getStoredOrganizationId()).toBeNull() + }) + + it("should return organizationId from parsed JWT", () => { + const serviceWithJWT = new StaticTokenAuthService(mockContext, jobTokenWithOrg, mockLog) + + expect(serviceWithJWT.getStoredOrganizationId()).toBe("org_123abc") + }) + + it("should return null when JWT has no organizationId", () => { + const serviceWithNoOrg = new StaticTokenAuthService(mockContext, jobTokenNoOrg, mockLog) + + expect(serviceWithNoOrg.getStoredOrganizationId()).toBeNull() + }) + + it("should return null for legacy JWT format", () => { + const serviceWithLegacyJWT = new StaticTokenAuthService(mockContext, legacyJWT, mockLog) + + expect(serviceWithLegacyJWT.getStoredOrganizationId()).toBeNull() + }) + }) + + describe("authentication state methods", () => { + it("should always return true for isAuthenticated", () => { + expect(authService.isAuthenticated()).toBe(true) + }) + + it("should always return true for hasActiveSession", () => { + expect(authService.hasActiveSession()).toBe(true) + }) + + it("should always return true for hasOrIsAcquiringActiveSession", () => { + expect(authService.hasOrIsAcquiringActiveSession()).toBe(true) + }) + + it("should return active-session for getState", () => { + expect(authService.getState()).toBe("active-session") + }) + }) + + describe("disabled authentication methods", () => { + const expectedErrorMessage = "Authentication methods are disabled in StaticTokenAuthService" + + it("should throw error for login", async () => { + await expect(authService.login()).rejects.toThrow(expectedErrorMessage) + }) + + it("should throw error for logout", async () => { + await expect(authService.logout()).rejects.toThrow(expectedErrorMessage) + }) + + it("should throw error for handleCallback", async () => { + await expect(authService.handleCallback("code", "state")).rejects.toThrow(expectedErrorMessage) + }) + + it("should throw error for handleCallback with organization", async () => { + await expect(authService.handleCallback("code", "state", "org_123")).rejects.toThrow(expectedErrorMessage) + }) + }) + + describe("event emission", () => { + it("should be able to register and emit events via broadcast", () => { + const authStateChangedSpy = vi.fn() + const userInfoSpy = vi.fn() + + authService.on("auth-state-changed", authStateChangedSpy) + authService.on("user-info", userInfoSpy) + + authService.broadcast() + + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "active-session", + previousState: "initializing", + }) + + expect(userInfoSpy).toHaveBeenCalledWith({ + userInfo: expect.objectContaining({ + extensionBridgeEnabled: true, + }), + }) + }) + }) +}) diff --git a/packages/cloud/src/__tests__/TelemetryClient.test.ts b/packages/cloud/src/__tests__/TelemetryClient.test.ts new file mode 100644 index 000000000000..6078e601dd7b --- /dev/null +++ b/packages/cloud/src/__tests__/TelemetryClient.test.ts @@ -0,0 +1,740 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +// npx vitest run src/__tests__/TelemetryClient.test.ts + +import { type TelemetryPropertiesProvider, TelemetryEventName } from "@roo-code/types" + +import { CloudTelemetryClient as TelemetryClient } from "../TelemetryClient.js" + +const mockFetch = vi.fn() +global.fetch = mockFetch as any + +describe("TelemetryClient", () => { + const getPrivateProperty = (instance: any, propertyName: string): T => { + return instance[propertyName] + } + + let mockAuthService: any + let mockSettingsService: any + + beforeEach(() => { + vi.clearAllMocks() + + // Create a mock AuthService instead of using the singleton + mockAuthService = { + getSessionToken: vi.fn().mockReturnValue("mock-token"), + getState: vi.fn().mockReturnValue("active-session"), + isAuthenticated: vi.fn().mockReturnValue(true), + hasActiveSession: vi.fn().mockReturnValue(true), + } + + // Create a mock SettingsService + mockSettingsService = { + getSettings: vi.fn().mockReturnValue({ + cloudSettings: { + recordTaskMessages: true, + }, + }), + } + + mockFetch.mockResolvedValue({ + ok: true, + json: vi.fn().mockResolvedValue({}), + }) + + vi.spyOn(console, "info").mockImplementation(() => {}) + vi.spyOn(console, "error").mockImplementation(() => {}) + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + describe("isEventCapturable", () => { + it("should return true for events not in exclude list", () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_CREATED)).toBe(true) + expect(isEventCapturable(TelemetryEventName.LLM_COMPLETION)).toBe(true) + expect(isEventCapturable(TelemetryEventName.MODE_SWITCH)).toBe(true) + expect(isEventCapturable(TelemetryEventName.TOOL_USED)).toBe(true) + }) + + it("should return false for events in exclude list", () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_CONVERSATION_MESSAGE)).toBe(false) + }) + + it("should return true for TASK_MESSAGE events when recordTaskMessages is true", () => { + mockSettingsService.getSettings.mockReturnValue({ + cloudSettings: { + recordTaskMessages: true, + }, + }) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_MESSAGE)).toBe(true) + }) + + it("should return false for TASK_MESSAGE events when recordTaskMessages is false", () => { + mockSettingsService.getSettings.mockReturnValue({ + cloudSettings: { + recordTaskMessages: false, + }, + }) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_MESSAGE)).toBe(false) + }) + + it("should return false for TASK_MESSAGE events when recordTaskMessages is undefined", () => { + mockSettingsService.getSettings.mockReturnValue({ + cloudSettings: {}, + }) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_MESSAGE)).toBe(false) + }) + + it("should return false for TASK_MESSAGE events when cloudSettings is undefined", () => { + mockSettingsService.getSettings.mockReturnValue({}) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_MESSAGE)).toBe(false) + }) + + it("should return false for TASK_MESSAGE events when getSettings returns undefined", () => { + mockSettingsService.getSettings.mockReturnValue(undefined) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const isEventCapturable = getPrivateProperty<(eventName: TelemetryEventName) => boolean>( + client, + "isEventCapturable", + ).bind(client) + + expect(isEventCapturable(TelemetryEventName.TASK_MESSAGE)).toBe(false) + }) + }) + + describe("getEventProperties", () => { + it("should merge provider properties with event properties", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const mockProvider: TelemetryPropertiesProvider = { + getTelemetryProperties: vi.fn().mockResolvedValue({ + appVersion: "1.0.0", + vscodeVersion: "1.60.0", + platform: "darwin", + editorName: "vscode", + language: "en", + mode: "code", + }), + } + + client.setProvider(mockProvider) + + const getEventProperties = getPrivateProperty< + (event: { event: TelemetryEventName; properties?: Record }) => Promise> + >(client, "getEventProperties").bind(client) + + const result = await getEventProperties({ + event: TelemetryEventName.TASK_CREATED, + properties: { + customProp: "value", + mode: "override", // This should override the provider's mode. + }, + }) + + expect(result).toEqual({ + appVersion: "1.0.0", + vscodeVersion: "1.60.0", + platform: "darwin", + editorName: "vscode", + language: "en", + mode: "override", // Event property takes precedence. + customProp: "value", + }) + + expect(mockProvider.getTelemetryProperties).toHaveBeenCalledTimes(1) + }) + + it("should handle errors from provider gracefully", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const mockProvider: TelemetryPropertiesProvider = { + getTelemetryProperties: vi.fn().mockRejectedValue(new Error("Provider error")), + } + + const consoleErrorSpy = vi.spyOn(console, "error") + + client.setProvider(mockProvider) + + const getEventProperties = getPrivateProperty< + (event: { event: TelemetryEventName; properties?: Record }) => Promise> + >(client, "getEventProperties").bind(client) + + const result = await getEventProperties({ + event: TelemetryEventName.TASK_CREATED, + properties: { customProp: "value" }, + }) + + expect(result).toEqual({ customProp: "value" }) + expect(consoleErrorSpy).toHaveBeenCalledWith( + expect.stringContaining("Error getting telemetry properties: Provider error"), + ) + }) + + it("should return event properties when no provider is set", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const getEventProperties = getPrivateProperty< + (event: { event: TelemetryEventName; properties?: Record }) => Promise> + >(client, "getEventProperties").bind(client) + + const result = await getEventProperties({ + event: TelemetryEventName.TASK_CREATED, + properties: { customProp: "value" }, + }) + + expect(result).toEqual({ customProp: "value" }) + }) + }) + + describe("capture", () => { + it("should not capture events that are not capturable", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + await client.capture({ + event: TelemetryEventName.TASK_CONVERSATION_MESSAGE, // In exclude list. + properties: { test: "value" }, + }) + + expect(mockFetch).not.toHaveBeenCalled() + }) + + it("should not capture TASK_MESSAGE events when recordTaskMessages is false", async () => { + mockSettingsService.getSettings.mockReturnValue({ + cloudSettings: { + recordTaskMessages: false, + }, + }) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + await client.capture({ + event: TelemetryEventName.TASK_MESSAGE, + properties: { + taskId: "test-task-id", + message: { + ts: 1, + type: "say", + say: "text", + text: "test message", + }, + }, + }) + + expect(mockFetch).not.toHaveBeenCalled() + }) + + it("should not capture TASK_MESSAGE events when recordTaskMessages is undefined", async () => { + mockSettingsService.getSettings.mockReturnValue({ + cloudSettings: {}, + }) + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + await client.capture({ + event: TelemetryEventName.TASK_MESSAGE, + properties: { + taskId: "test-task-id", + message: { + ts: 1, + type: "say", + say: "text", + text: "test message", + }, + }, + }) + + expect(mockFetch).not.toHaveBeenCalled() + }) + + it("should not send request when schema validation fails", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + await client.capture({ + event: TelemetryEventName.TASK_CREATED, + properties: { test: "value" }, + }) + + expect(mockFetch).not.toHaveBeenCalled() + expect(console.error).toHaveBeenCalledWith(expect.stringContaining("Invalid telemetry event")) + }) + + it("should send request when event is capturable and validation passes", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const providerProperties = { + appName: "roo-code", + appVersion: "1.0.0", + vscodeVersion: "1.60.0", + platform: "darwin", + editorName: "vscode", + language: "en", + mode: "code", + } + + const eventProperties = { + taskId: "test-task-id", + } + + const mockValidatedData = { + type: TelemetryEventName.TASK_CREATED, + properties: { + ...providerProperties, + taskId: "test-task-id", + }, + } + + const mockProvider: TelemetryPropertiesProvider = { + getTelemetryProperties: vi.fn().mockResolvedValue(providerProperties), + } + + client.setProvider(mockProvider) + + await client.capture({ + event: TelemetryEventName.TASK_CREATED, + properties: eventProperties, + }) + + expect(mockFetch).toHaveBeenCalledWith( + "https://app.roocode.com/api/events", + expect.objectContaining({ + method: "POST", + body: JSON.stringify(mockValidatedData), + }), + ) + }) + + it("should attempt to capture TASK_MESSAGE events when recordTaskMessages is true", async () => { + mockSettingsService.getSettings.mockReturnValue({ + cloudSettings: { + recordTaskMessages: true, + }, + }) + + const eventProperties = { + appName: "roo-code", + appVersion: "1.0.0", + vscodeVersion: "1.60.0", + platform: "darwin", + editorName: "vscode", + language: "en", + mode: "code", + taskId: "test-task-id", + message: { + ts: 1, + type: "say", + say: "text", + text: "test message", + }, + } + + const mockValidatedData = { + type: TelemetryEventName.TASK_MESSAGE, + properties: eventProperties, + } + + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + await client.capture({ + event: TelemetryEventName.TASK_MESSAGE, + properties: eventProperties, + }) + + expect(mockFetch).toHaveBeenCalledWith( + "https://app.roocode.com/api/events", + expect.objectContaining({ + method: "POST", + body: JSON.stringify(mockValidatedData), + }), + ) + }) + + it("should handle fetch errors gracefully", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + mockFetch.mockRejectedValue(new Error("Network error")) + + await expect( + client.capture({ + event: TelemetryEventName.TASK_CREATED, + properties: { test: "value" }, + }), + ).resolves.not.toThrow() + }) + }) + + describe("telemetry state methods", () => { + it("should always return true for isTelemetryEnabled", () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + expect(client.isTelemetryEnabled()).toBe(true) + }) + + it("should have empty implementations for updateTelemetryState and shutdown", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + client.updateTelemetryState(true) + await client.shutdown() + }) + }) + + describe("backfillMessages", () => { + it("should not send request when not authenticated", async () => { + mockAuthService.isAuthenticated.mockReturnValue(false) + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(mockFetch).not.toHaveBeenCalled() + }) + + it("should not send request when no session token available", async () => { + mockAuthService.getSessionToken.mockReturnValue(null) + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(mockFetch).not.toHaveBeenCalled() + expect(console.error).toHaveBeenCalledWith( + "[TelemetryClient#backfillMessages] Unauthorized: No session token available.", + ) + }) + + it("should send FormData request with correct structure when authenticated", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const providerProperties = { + appName: "roo-code", + appVersion: "1.0.0", + vscodeVersion: "1.60.0", + platform: "darwin", + editorName: "vscode", + language: "en", + mode: "code", + } + + const mockProvider: TelemetryPropertiesProvider = { + getTelemetryProperties: vi.fn().mockResolvedValue(providerProperties), + } + + client.setProvider(mockProvider) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message 1", + }, + { + ts: 2, + type: "ask" as const, + ask: "followup" as const, + text: "test question", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(mockFetch).toHaveBeenCalledWith( + "https://app.roocode.com/api/events/backfill", + expect.objectContaining({ + method: "POST", + headers: { + Authorization: "Bearer mock-token", + }, + body: expect.any(FormData), + }), + ) + + // Verify FormData contents + const call = mockFetch.mock.calls[0] + const formData = call?.[1]?.body as FormData + + expect(formData.get("taskId")).toBe("test-task-id") + + // Parse and compare properties as objects since JSON.stringify order can vary + const propertiesJson = formData.get("properties") as string + const parsedProperties = JSON.parse(propertiesJson) + expect(parsedProperties).toEqual({ + taskId: "test-task-id", + ...providerProperties, + }) + // The messages are stored as a File object under the "file" key + const fileField = formData.get("file") as File + expect(fileField).toBeInstanceOf(File) + expect(fileField.name).toBe("task.json") + expect(fileField.type).toBe("application/json") + + // Read the file content to verify the messages + const fileContent = await fileField.text() + expect(fileContent).toBe(JSON.stringify(messages)) + }) + + it("should handle provider errors gracefully", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const mockProvider: TelemetryPropertiesProvider = { + getTelemetryProperties: vi.fn().mockRejectedValue(new Error("Provider error")), + } + + client.setProvider(mockProvider) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(mockFetch).toHaveBeenCalledWith( + "https://app.roocode.com/api/events/backfill", + expect.objectContaining({ + method: "POST", + headers: { + Authorization: "Bearer mock-token", + }, + body: expect.any(FormData), + }), + ) + + // Verify FormData contents - should still work with just taskId + const call = mockFetch.mock.calls[0] + const formData = call?.[1]?.body as FormData + + expect(formData.get("taskId")).toBe("test-task-id") + expect(formData.get("properties")).toBe( + JSON.stringify({ + taskId: "test-task-id", + }), + ) + + // The messages are stored as a File object under the "file" key + const fileField = formData.get("file") as File + expect(fileField).toBeInstanceOf(File) + expect(fileField.name).toBe("task.json") + expect(fileField.type).toBe("application/json") + + // Read the file content to verify the messages + const fileContent = await fileField.text() + expect(fileContent).toBe(JSON.stringify(messages)) + }) + + it("should work without provider set", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(mockFetch).toHaveBeenCalledWith( + "https://app.roocode.com/api/events/backfill", + expect.objectContaining({ + method: "POST", + headers: { + Authorization: "Bearer mock-token", + }, + body: expect.any(FormData), + }), + ) + + // Verify FormData contents - should work with just taskId + const call = mockFetch.mock.calls[0] + const formData = call?.[1]?.body as FormData + + expect(formData.get("taskId")).toBe("test-task-id") + expect(formData.get("properties")).toBe( + JSON.stringify({ + taskId: "test-task-id", + }), + ) + + // The messages are stored as a File object under the "file" key + const fileField = formData.get("file") as File + expect(fileField).toBeInstanceOf(File) + expect(fileField.name).toBe("task.json") + expect(fileField.type).toBe("application/json") + + // Read the file content to verify the messages + const fileContent = await fileField.text() + expect(fileContent).toBe(JSON.stringify(messages)) + }) + + it("should handle fetch errors gracefully", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + mockFetch.mockRejectedValue(new Error("Network error")) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await expect(client.backfillMessages(messages, "test-task-id")).resolves.not.toThrow() + + expect(console.error).toHaveBeenCalledWith( + expect.stringContaining( + "[TelemetryClient#backfillMessages] Error uploading messages: Error: Network error", + ), + ) + }) + + it("should handle HTTP error responses", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + mockFetch.mockResolvedValue({ + ok: false, + status: 404, + statusText: "Not Found", + }) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(console.error).toHaveBeenCalledWith( + "[TelemetryClient#backfillMessages] POST events/backfill -> 404 Not Found", + ) + }) + + it("should log debug information when debug is enabled", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService, true) + + const messages = [ + { + ts: 1, + type: "say" as const, + say: "text" as const, + text: "test message", + }, + ] + + await client.backfillMessages(messages, "test-task-id") + + expect(console.info).toHaveBeenCalledWith( + "[TelemetryClient#backfillMessages] Uploading 1 messages for task test-task-id", + ) + expect(console.info).toHaveBeenCalledWith( + "[TelemetryClient#backfillMessages] Successfully uploaded messages for task test-task-id", + ) + }) + + it("should handle empty messages array", async () => { + const client = new TelemetryClient(mockAuthService, mockSettingsService) + + await client.backfillMessages([], "test-task-id") + + expect(mockFetch).toHaveBeenCalledWith( + "https://app.roocode.com/api/events/backfill", + expect.objectContaining({ + method: "POST", + headers: { + Authorization: "Bearer mock-token", + }, + body: expect.any(FormData), + }), + ) + + // Verify FormData contents + const call = mockFetch.mock.calls[0] + const formData = call?.[1]?.body as FormData + + // The messages are stored as a File object under the "file" key + const fileField = formData.get("file") as File + expect(fileField).toBeInstanceOf(File) + expect(fileField.name).toBe("task.json") + expect(fileField.type).toBe("application/json") + + // Read the file content to verify the empty messages array + const fileContent = await fileField.text() + expect(fileContent).toBe("[]") + }) + }) +}) diff --git a/packages/cloud/src/__tests__/WebAuthService.spec.ts b/packages/cloud/src/__tests__/WebAuthService.spec.ts new file mode 100644 index 000000000000..dbcaf388d31f --- /dev/null +++ b/packages/cloud/src/__tests__/WebAuthService.spec.ts @@ -0,0 +1,1196 @@ +// npx vitest run src/__tests__/auth/WebAuthService.spec.ts + +import crypto from "crypto" + +import type { Mock } from "vitest" +import type { ExtensionContext } from "vscode" + +import { WebAuthService } from "../WebAuthService.js" +import { RefreshTimer } from "../RefreshTimer.js" +import { getClerkBaseUrl, getRooCodeApiUrl } from "../config.js" +import { getUserAgent } from "../utils.js" + +vi.mock("crypto") + +vi.mock("../RefreshTimer") +vi.mock("../config") +vi.mock("../utils") + +const mockFetch = vi.fn() +global.fetch = mockFetch + +vi.mock("vscode", () => ({ + window: { + showInformationMessage: vi.fn(), + showErrorMessage: vi.fn(), + }, + env: { + openExternal: vi.fn(), + uriScheme: "vscode", + }, + Uri: { + parse: vi.fn((uri: string) => ({ toString: () => uri })), + }, +})) + +describe("WebAuthService", () => { + let authService: WebAuthService + let mockTimer: { + start: Mock + stop: Mock + reset: Mock + } + let mockLog: Mock + let mockContext: { + subscriptions: { push: Mock } + secrets: { + get: Mock + store: Mock + delete: Mock + onDidChange: Mock + } + globalState: { + get: Mock + update: Mock + } + extension: { + packageJSON: { + version: string + publisher: string + name: string + } + } + } + + beforeEach(() => { + // Reset all mocks + vi.clearAllMocks() + + // Setup mock context with proper subscriptions array + mockContext = { + subscriptions: { + push: vi.fn(), + }, + secrets: { + get: vi.fn().mockResolvedValue(undefined), + store: vi.fn().mockResolvedValue(undefined), + delete: vi.fn().mockResolvedValue(undefined), + onDidChange: vi.fn().mockReturnValue({ dispose: vi.fn() }), + }, + globalState: { + get: vi.fn().mockReturnValue(undefined), + update: vi.fn().mockResolvedValue(undefined), + }, + extension: { + packageJSON: { + version: "1.0.0", + publisher: "RooVeterinaryInc", + name: "roo-cline", + }, + }, + } + + // Setup timer mock + mockTimer = { + start: vi.fn(), + stop: vi.fn(), + reset: vi.fn(), + } + const MockedRefreshTimer = vi.mocked(RefreshTimer) + MockedRefreshTimer.mockImplementation(() => mockTimer as unknown as RefreshTimer) + + // Setup config mocks - use production URL by default to maintain existing test behavior + vi.mocked(getClerkBaseUrl).mockReturnValue("https://clerk.roocode.com") + vi.mocked(getRooCodeApiUrl).mockReturnValue("https://api.test.com") + + // Setup utils mock + vi.mocked(getUserAgent).mockReturnValue("Roo-Code 1.0.0") + + // Setup crypto mock + vi.mocked(crypto.randomBytes).mockReturnValue(Buffer.from("test-random-bytes") as never) + + // Setup log mock + mockLog = vi.fn() + + authService = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + }) + + afterEach(() => { + vi.clearAllMocks() + }) + + describe("constructor", () => { + it("should initialize with correct default values", () => { + expect(authService.getState()).toBe("initializing") + expect(authService.isAuthenticated()).toBe(false) + expect(authService.hasActiveSession()).toBe(false) + expect(authService.getSessionToken()).toBeUndefined() + expect(authService.getUserInfo()).toBeNull() + }) + + it("should create RefreshTimer with correct configuration", () => { + expect(RefreshTimer).toHaveBeenCalledWith({ + callback: expect.any(Function), + successInterval: 50_000, + initialBackoffMs: 1_000, + maxBackoffMs: 300_000, + }) + }) + + it("should use console.log as default logger", () => { + const serviceWithoutLog = new WebAuthService(mockContext as unknown as ExtensionContext) + // Can't directly test console.log usage, but constructor should not throw + expect(serviceWithoutLog).toBeInstanceOf(WebAuthService) + }) + }) + + describe("initialize", () => { + it("should handle credentials change and setup event listener", async () => { + await authService.initialize() + + expect(mockContext.subscriptions.push).toHaveBeenCalled() + expect(mockContext.secrets.onDidChange).toHaveBeenCalled() + }) + + it("should not initialize twice", async () => { + await authService.initialize() + const firstCallCount = vi.mocked(mockContext.secrets.onDidChange).mock.calls.length + + await authService.initialize() + expect(mockContext.secrets.onDidChange).toHaveBeenCalledTimes(firstCallCount) + expect(mockLog).toHaveBeenCalledWith("[auth] initialize() called after already initialized") + }) + + it("should transition to logged-out when no credentials exist", async () => { + mockContext.secrets.get.mockResolvedValue(undefined) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + await authService.initialize() + + expect(authService.getState()).toBe("logged-out") + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "logged-out", + previousState: "initializing", + }) + }) + + it("should transition to attempting-session when valid credentials exist", async () => { + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + await authService.initialize() + + expect(authService.getState()).toBe("attempting-session") + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "attempting-session", + previousState: "initializing", + }) + expect(mockTimer.start).toHaveBeenCalled() + }) + + it("should handle invalid credentials gracefully", async () => { + mockContext.secrets.get.mockResolvedValue("invalid-json") + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + await authService.initialize() + + expect(authService.getState()).toBe("logged-out") + expect(mockLog).toHaveBeenCalledWith("[auth] Failed to parse stored credentials:", expect.any(Error)) + }) + + it("should handle credentials change events", async () => { + let onDidChangeCallback: (e: { key: string }) => void + + mockContext.secrets.onDidChange.mockImplementation((callback: (e: { key: string }) => void) => { + onDidChangeCallback = callback + return { dispose: vi.fn() } + }) + + await authService.initialize() + + // Simulate credentials change event + const newCredentials = { + clientToken: "new-token", + sessionId: "new-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(newCredentials)) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + onDidChangeCallback!({ key: "clerk-auth-credentials" }) + await new Promise((resolve) => setTimeout(resolve, 0)) // Wait for async handling + + expect(authStateChangedSpy).toHaveBeenCalled() + }) + }) + + describe("login", () => { + beforeEach(async () => { + await authService.initialize() + }) + + it("should generate state and open external URL", async () => { + const mockOpenExternal = vi.fn() + const vscode = await import("vscode") + vi.mocked(vscode.env.openExternal).mockImplementation(mockOpenExternal) + + await authService.login() + + expect(crypto.randomBytes).toHaveBeenCalledWith(16) + + expect(mockContext.globalState.update).toHaveBeenCalledWith( + "clerk-auth-state", + "746573742d72616e646f6d2d6279746573", + ) + + expect(mockOpenExternal).toHaveBeenCalledWith( + expect.objectContaining({ + toString: expect.any(Function), + }), + ) + }) + + it("should use package.json values for redirect URI", async () => { + const mockOpenExternal = vi.fn() + const vscode = await import("vscode") + vi.mocked(vscode.env.openExternal).mockImplementation(mockOpenExternal) + + await authService.login() + + const expectedUrl = + "https://api.test.com/extension/sign-in?state=746573742d72616e646f6d2d6279746573&auth_redirect=vscode%3A%2F%2FRooVeterinaryInc.roo-cline" + expect(mockOpenExternal).toHaveBeenCalledWith( + expect.objectContaining({ + toString: expect.any(Function), + }), + ) + + // Verify the actual URL + const calledUri = mockOpenExternal.mock.calls[0]?.[0] + expect(calledUri.toString()).toBe(expectedUrl) + }) + + it("should handle errors during login", async () => { + vi.mocked(crypto.randomBytes).mockImplementation(() => { + throw new Error("Crypto error") + }) + + await expect(authService.login()).rejects.toThrow("Failed to initiate Roo Code Cloud authentication") + expect(mockLog).toHaveBeenCalledWith("[auth] Error initiating Roo Code Cloud auth: Error: Crypto error") + }) + }) + + describe("handleCallback", () => { + beforeEach(async () => { + await authService.initialize() + }) + + it("should handle invalid parameters", async () => { + const vscode = await import("vscode") + const mockShowInfo = vi.fn() + vi.mocked(vscode.window.showInformationMessage).mockImplementation(mockShowInfo) + + await authService.handleCallback(null, "state") + expect(mockShowInfo).toHaveBeenCalledWith("Invalid Roo Code Cloud sign in url") + + await authService.handleCallback("code", null) + expect(mockShowInfo).toHaveBeenCalledWith("Invalid Roo Code Cloud sign in url") + }) + + it("should validate state parameter", async () => { + mockContext.globalState.get.mockReturnValue("stored-state") + + await expect(authService.handleCallback("code", "different-state")).rejects.toThrow( + "Failed to handle Roo Code Cloud callback", + ) + expect(mockLog).toHaveBeenCalledWith("[auth] State mismatch in callback") + }) + + it("should successfully handle valid callback", async () => { + const storedState = "valid-state" + mockContext.globalState.get.mockReturnValue(storedState) + + // Mock successful Clerk sign-in response + const mockResponse = { + ok: true, + json: () => + Promise.resolve({ + response: { created_session_id: "session-123" }, + }), + headers: { + get: (header: string) => (header === "authorization" ? "Bearer token-123" : null), + }, + } + mockFetch.mockResolvedValue(mockResponse) + + const vscode = await import("vscode") + const mockShowInfo = vi.fn() + vi.mocked(vscode.window.showInformationMessage).mockImplementation(mockShowInfo) + + await authService.handleCallback("auth-code", storedState) + + expect(mockContext.secrets.store).toHaveBeenCalledWith( + "clerk-auth-credentials", + JSON.stringify({ + clientToken: "Bearer token-123", + sessionId: "session-123", + organizationId: null, + }), + ) + expect(mockShowInfo).toHaveBeenCalledWith("Successfully authenticated with Roo Code Cloud") + }) + + it("should handle Clerk API errors", async () => { + const storedState = "valid-state" + mockContext.globalState.get.mockReturnValue(storedState) + + mockFetch.mockResolvedValue({ + ok: false, + status: 400, + statusText: "Bad Request", + }) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + await expect(authService.handleCallback("auth-code", storedState)).rejects.toThrow( + "Failed to handle Roo Code Cloud callback", + ) + expect(authStateChangedSpy).toHaveBeenCalled() + }) + }) + + describe("logout", () => { + beforeEach(async () => { + await authService.initialize() + }) + + it("should clear credentials and call Clerk logout", async () => { + // Set up credentials first by simulating a login state + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + + // Manually set the credentials in the service + authService["credentials"] = credentials + + // Mock successful logout response + mockFetch.mockResolvedValue({ ok: true }) + + const vscode = await import("vscode") + const mockShowInfo = vi.fn() + vi.mocked(vscode.window.showInformationMessage).mockImplementation(mockShowInfo) + + await authService.logout() + + expect(mockContext.secrets.delete).toHaveBeenCalledWith("clerk-auth-credentials") + expect(mockContext.globalState.update).toHaveBeenCalledWith("clerk-auth-state", undefined) + expect(mockFetch).toHaveBeenCalledWith( + "https://clerk.roocode.com/v1/client/sessions/test-session/remove", + expect.objectContaining({ + method: "POST", + headers: expect.objectContaining({ + Authorization: "Bearer test-token", + }), + }), + ) + expect(mockShowInfo).toHaveBeenCalledWith("Logged out from Roo Code Cloud") + }) + + it("should handle logout without credentials", async () => { + const vscode = await import("vscode") + const mockShowInfo = vi.fn() + vi.mocked(vscode.window.showInformationMessage).mockImplementation(mockShowInfo) + + await authService.logout() + + expect(mockContext.secrets.delete).toHaveBeenCalled() + expect(mockFetch).not.toHaveBeenCalled() + expect(mockShowInfo).toHaveBeenCalledWith("Logged out from Roo Code Cloud") + }) + + it("should handle Clerk logout errors gracefully", async () => { + // Set up credentials first by simulating a login state + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + + // Manually set the credentials in the service + authService["credentials"] = credentials + + // Mock failed logout response + mockFetch.mockRejectedValue(new Error("Network error")) + + const vscode = await import("vscode") + const mockShowInfo = vi.fn() + vi.mocked(vscode.window.showInformationMessage).mockImplementation(mockShowInfo) + + await authService.logout() + + expect(mockLog).toHaveBeenCalledWith("[auth] Error calling clerkLogout:", expect.any(Error)) + expect(mockShowInfo).toHaveBeenCalledWith("Logged out from Roo Code Cloud") + }) + }) + + describe("state management", () => { + it("should return correct state", () => { + expect(authService.getState()).toBe("initializing") + }) + + it("should return correct authentication status", async () => { + await authService.initialize() + expect(authService.isAuthenticated()).toBe(false) + + // Create a new service instance with credentials + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + + const authenticatedService = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + await authenticatedService.initialize() + + expect(authenticatedService.isAuthenticated()).toBe(true) + expect(authenticatedService.hasActiveSession()).toBe(false) + }) + + it("should return session token only for active sessions", () => { + expect(authService.getSessionToken()).toBeUndefined() + + // Manually set state to active-session for testing + // This would normally happen through refreshSession + authService["state"] = "active-session" + authService["sessionToken"] = "test-jwt" + + expect(authService.getSessionToken()).toBe("test-jwt") + }) + + it("should return correct values for new methods", async () => { + await authService.initialize() + expect(authService.hasOrIsAcquiringActiveSession()).toBe(false) + + // Create a new service instance with credentials (attempting-session) + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + + const attemptingService = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + await attemptingService.initialize() + + expect(attemptingService.hasOrIsAcquiringActiveSession()).toBe(true) + expect(attemptingService.hasActiveSession()).toBe(false) + + // Manually set state to active-session for testing + attemptingService["state"] = "active-session" + expect(attemptingService.hasOrIsAcquiringActiveSession()).toBe(true) + expect(attemptingService.hasActiveSession()).toBe(true) + }) + }) + + describe("session refresh", () => { + beforeEach(async () => { + // Set up with credentials + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + await authService.initialize() + }) + + it("should refresh session successfully", async () => { + // Mock successful token creation and user info fetch + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ jwt: "new-jwt-token" }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: { + first_name: "John", + last_name: "Doe", + image_url: "https://example.com/avatar.jpg", + primary_email_address_id: "email-1", + email_addresses: [{ id: "email-1", email_address: "john@example.com" }], + }, + }), + }) + + const authStateChangedSpy = vi.fn() + const userInfoSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + authService.on("user-info", userInfoSpy) + + // Trigger refresh by calling the timer callback + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + await timerCallback?.() + + // Wait for async operations to complete + await new Promise((resolve) => setTimeout(resolve, 0)) + + expect(authService.getState()).toBe("active-session") + expect(authService.hasActiveSession()).toBe(true) + expect(authService.getSessionToken()).toBe("new-jwt-token") + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "active-session", + previousState: "attempting-session", + }) + expect(userInfoSpy).toHaveBeenCalledWith({ + userInfo: { + id: undefined, + name: "John Doe", + email: "john@example.com", + picture: "https://example.com/avatar.jpg", + extensionBridgeEnabled: false, + }, + }) + }) + + it("should handle invalid client token error", async () => { + // Mock 401 response (invalid token) + mockFetch.mockResolvedValue({ + ok: false, + status: 401, + statusText: "Unauthorized", + }) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await expect(timerCallback?.()).rejects.toThrow() + expect(mockContext.secrets.delete).toHaveBeenCalledWith("clerk-auth-credentials") + expect(mockLog).toHaveBeenCalledWith("[auth] Invalid/Expired client token: clearing credentials") + }) + + it("should handle network errors during refresh", async () => { + mockFetch.mockRejectedValue(new Error("Network error")) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await expect(timerCallback?.()).rejects.toThrow("Network error") + expect(mockLog).toHaveBeenCalledWith("[auth] Failed to refresh session", expect.any(Error)) + }) + + it("should transition to inactive-session on first attempt failure", async () => { + // Mock failed token creation response + mockFetch.mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + }) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + // Verify we start in attempting-session state + expect(authService.getState()).toBe("attempting-session") + expect(authService["isFirstRefreshAttempt"]).toBe(true) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await expect(timerCallback?.()).rejects.toThrow() + + // Should transition to inactive-session after first failure + expect(authService.getState()).toBe("inactive-session") + expect(authService["isFirstRefreshAttempt"]).toBe(false) + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "inactive-session", + previousState: "attempting-session", + }) + }) + + it("should not transition to inactive-session on subsequent failures", async () => { + // First, transition to inactive-session by failing the first attempt + mockFetch.mockResolvedValue({ + ok: false, + status: 500, + statusText: "Internal Server Error", + }) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + await expect(timerCallback?.()).rejects.toThrow() + + // Verify we're now in inactive-session + expect(authService.getState()).toBe("inactive-session") + expect(authService["isFirstRefreshAttempt"]).toBe(false) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + // Subsequent failure should not trigger another transition + await expect(timerCallback?.()).rejects.toThrow() + + expect(authService.getState()).toBe("inactive-session") + expect(authStateChangedSpy).not.toHaveBeenCalled() + }) + + it("should clear credentials on 401 during first refresh attempt (bug fix)", async () => { + // Mock 401 response during first refresh attempt + mockFetch.mockResolvedValue({ + ok: false, + status: 401, + statusText: "Unauthorized", + }) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + await expect(timerCallback?.()).rejects.toThrow() + + // Should clear credentials (not just transition to inactive-session) + expect(mockContext.secrets.delete).toHaveBeenCalledWith("clerk-auth-credentials") + expect(mockLog).toHaveBeenCalledWith("[auth] Invalid/Expired client token: clearing credentials") + + // Simulate credentials cleared event + mockContext.secrets.get.mockResolvedValue(undefined) + await authService["handleCredentialsChange"]() + + expect(authService.getState()).toBe("logged-out") + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "logged-out", + previousState: "attempting-session", + }) + }) + }) + + describe("user info", () => { + it("should return null initially", () => { + expect(authService.getUserInfo()).toBeNull() + }) + + it("should parse user info correctly for personal accounts", async () => { + // Set up with credentials for personal account (no organizationId) + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + organizationId: null, + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + await authService.initialize() + + // Clear previous mock calls + mockFetch.mockClear() + + // Mock successful responses + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ jwt: "jwt-token" }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: { + first_name: "Jane", + last_name: "Smith", + image_url: "https://example.com/jane.jpg", + primary_email_address_id: "email-2", + email_addresses: [ + { id: "email-1", email_address: "jane.old@example.com" }, + { id: "email-2", email_address: "jane@example.com" }, + ], + }, + }), + }) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + await timerCallback?.() + + // Wait for async operations to complete + await new Promise((resolve) => setTimeout(resolve, 0)) + + const userInfo = authService.getUserInfo() + expect(userInfo).toEqual({ + id: undefined, + name: "Jane Smith", + email: "jane@example.com", + picture: "https://example.com/jane.jpg", + extensionBridgeEnabled: false, + }) + }) + + it("should parse user info correctly for organization accounts", async () => { + // Set up with credentials for organization account + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + organizationId: "org_1", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + await authService.initialize() + + // Clear previous mock calls + mockFetch.mockClear() + + // Mock successful responses + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ jwt: "jwt-token" }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: { + first_name: "Jane", + last_name: "Smith", + image_url: "https://example.com/jane.jpg", + primary_email_address_id: "email-2", + email_addresses: [ + { id: "email-1", email_address: "jane.old@example.com" }, + { id: "email-2", email_address: "jane@example.com" }, + ], + }, + }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: [ + { + id: "org_member_id_1", + role: "member", + organization: { + id: "org_1", + name: "Org 1", + }, + }, + ], + }), + }) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + await timerCallback?.() + + // Wait for async operations to complete + await new Promise((resolve) => setTimeout(resolve, 0)) + + const userInfo = authService.getUserInfo() + expect(userInfo).toEqual({ + id: undefined, + name: "Jane Smith", + email: "jane@example.com", + picture: "https://example.com/jane.jpg", + extensionBridgeEnabled: false, + organizationId: "org_1", + organizationName: "Org 1", + organizationRole: "member", + organizationImageUrl: undefined, + }) + }) + + it("should handle missing user info fields", async () => { + // Set up with credentials for personal account (no organizationId) + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + organizationId: null, + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + await authService.initialize() + + // Clear previous mock calls + mockFetch.mockClear() + + // Mock responses with minimal data + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ jwt: "jwt-token" }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: { + first_name: "John", + last_name: "Doe", + }, + }), + }) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await timerCallback?.() + + // Wait for async operations to complete + await new Promise((resolve) => setTimeout(resolve, 0)) + + const userInfo = authService.getUserInfo() + expect(userInfo).toEqual({ + id: undefined, + name: "John Doe", + email: undefined, + picture: undefined, + extensionBridgeEnabled: false, + }) + }) + }) + + describe("event emissions", () => { + it("should emit auth-state-changed event for logged-out", async () => { + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + await authService.initialize() + + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "logged-out", + previousState: "initializing", + }) + }) + + it("should emit auth-state-changed event for attempting-session", async () => { + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + await authService.initialize() + + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "attempting-session", + previousState: "initializing", + }) + }) + + it("should emit auth-state-changed event for active-session", async () => { + // Set up with credentials + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + await authService.initialize() + + // Clear previous mock calls + mockFetch.mockClear() + + // Mock both the token creation and user info fetch + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ jwt: "jwt-token" }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: { + first_name: "Test", + last_name: "User", + }, + }), + }) + + const authStateChangedSpy = vi.fn() + authService.on("auth-state-changed", authStateChangedSpy) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await timerCallback?.() + + // Wait for async operations to complete + await new Promise((resolve) => setTimeout(resolve, 0)) + + expect(authStateChangedSpy).toHaveBeenCalledWith({ + state: "active-session", + previousState: "attempting-session", + }) + }) + + it("should emit user-info event", async () => { + // Set up with credentials + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + await authService.initialize() + + // Clear previous mock calls + mockFetch.mockClear() + + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: () => Promise.resolve({ jwt: "jwt-token" }), + }) + .mockResolvedValueOnce({ + ok: true, + json: () => + Promise.resolve({ + response: { + first_name: "Test", + last_name: "User", + }, + }), + }) + + const userInfoSpy = vi.fn() + authService.on("user-info", userInfoSpy) + + const timerCallback = vi.mocked(RefreshTimer).mock.calls[0]?.[0]?.callback + + await timerCallback?.() + + // Wait for async operations to complete + await new Promise((resolve) => setTimeout(resolve, 0)) + + expect(userInfoSpy).toHaveBeenCalledWith({ + userInfo: { + id: undefined, + name: "Test User", + email: undefined, + picture: undefined, + extensionBridgeEnabled: false, + }, + }) + }) + }) + + describe("error handling", () => { + it("should handle credentials change errors", async () => { + mockContext.secrets.get.mockRejectedValue(new Error("Storage error")) + + await authService.initialize() + + expect(mockLog).toHaveBeenCalledWith("[auth] Error handling credentials change:", expect.any(Error)) + }) + + it("should handle malformed JSON in credentials", async () => { + mockContext.secrets.get.mockResolvedValue("invalid-json{") + + await authService.initialize() + + expect(authService.getState()).toBe("logged-out") + expect(mockLog).toHaveBeenCalledWith("[auth] Failed to parse stored credentials:", expect.any(Error)) + }) + + it("should handle invalid credentials schema", async () => { + mockContext.secrets.get.mockResolvedValue(JSON.stringify({ invalid: "data" })) + + await authService.initialize() + + expect(authService.getState()).toBe("logged-out") + expect(mockLog).toHaveBeenCalledWith("[auth] Invalid credentials format:", expect.any(Array)) + }) + + it("should handle missing authorization header in sign-in response", async () => { + const storedState = "valid-state" + mockContext.globalState.get.mockReturnValue(storedState) + + mockFetch.mockResolvedValue({ + ok: true, + json: () => + Promise.resolve({ + response: { created_session_id: "session-123" }, + }), + headers: { + get: () => null, // No authorization header + }, + }) + + await expect(authService.handleCallback("auth-code", storedState)).rejects.toThrow( + "Failed to handle Roo Code Cloud callback", + ) + }) + }) + + describe("timer integration", () => { + it("should stop timer on logged-out transition", async () => { + await authService.initialize() + + expect(mockTimer.stop).toHaveBeenCalled() + }) + + it("should start timer on attempting-session transition", async () => { + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + + await authService.initialize() + + expect(mockTimer.start).toHaveBeenCalled() + }) + }) + + describe("auth credentials key scoping", () => { + it("should use default key when getClerkBaseUrl returns production URL", async () => { + // Mock getClerkBaseUrl to return production URL + vi.mocked(getClerkBaseUrl).mockReturnValue("https://clerk.roocode.com") + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + + await service.initialize() + await service["storeCredentials"](credentials) + + expect(mockContext.secrets.store).toHaveBeenCalledWith( + "clerk-auth-credentials", + JSON.stringify(credentials), + ) + }) + + it("should use scoped key when getClerkBaseUrl returns custom URL", async () => { + const customUrl = "https://custom.clerk.com" + // Mock getClerkBaseUrl to return custom URL + vi.mocked(getClerkBaseUrl).mockReturnValue(customUrl) + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + + await service.initialize() + await service["storeCredentials"](credentials) + + expect(mockContext.secrets.store).toHaveBeenCalledWith( + `clerk-auth-credentials-${customUrl}`, + JSON.stringify(credentials), + ) + }) + + it("should load credentials using scoped key", async () => { + const customUrl = "https://custom.clerk.com" + vi.mocked(getClerkBaseUrl).mockReturnValue(customUrl) + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + const credentials = { + clientToken: "test-token", + sessionId: "test-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(credentials)) + + await service.initialize() + const loadedCredentials = await service["loadCredentials"]() + + expect(mockContext.secrets.get).toHaveBeenCalledWith(`clerk-auth-credentials-${customUrl}`) + expect(loadedCredentials).toEqual(credentials) + }) + + it("should clear credentials using scoped key", async () => { + const customUrl = "https://custom.clerk.com" + vi.mocked(getClerkBaseUrl).mockReturnValue(customUrl) + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + + await service.initialize() + await service["clearCredentials"]() + + expect(mockContext.secrets.delete).toHaveBeenCalledWith(`clerk-auth-credentials-${customUrl}`) + }) + + it("should listen for changes on scoped key", async () => { + const customUrl = "https://custom.clerk.com" + vi.mocked(getClerkBaseUrl).mockReturnValue(customUrl) + + let onDidChangeCallback: (e: { key: string }) => void + + mockContext.secrets.onDidChange.mockImplementation((callback: (e: { key: string }) => void) => { + onDidChangeCallback = callback + return { dispose: vi.fn() } + }) + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + await service.initialize() + + // Simulate credentials change event with scoped key + const newCredentials = { + clientToken: "new-token", + sessionId: "new-session", + } + mockContext.secrets.get.mockResolvedValue(JSON.stringify(newCredentials)) + + const authStateChangedSpy = vi.fn() + service.on("auth-state-changed", authStateChangedSpy) + + onDidChangeCallback!({ key: `clerk-auth-credentials-${customUrl}` }) + await new Promise((resolve) => setTimeout(resolve, 0)) // Wait for async handling + + expect(authStateChangedSpy).toHaveBeenCalled() + }) + + it("should not respond to changes on different scoped keys", async () => { + const customUrl = "https://custom.clerk.com" + vi.mocked(getClerkBaseUrl).mockReturnValue(customUrl) + + let onDidChangeCallback: (e: { key: string }) => void + + mockContext.secrets.onDidChange.mockImplementation((callback: (e: { key: string }) => void) => { + onDidChangeCallback = callback + return { dispose: vi.fn() } + }) + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + await service.initialize() + + const authStateChangedSpy = vi.fn() + service.on("auth-state-changed", authStateChangedSpy) + + // Simulate credentials change event with different scoped key + onDidChangeCallback!({ + key: "clerk-auth-credentials-https://other.clerk.com", + }) + await new Promise((resolve) => setTimeout(resolve, 0)) // Wait for async handling + + expect(authStateChangedSpy).not.toHaveBeenCalled() + }) + + it("should not respond to changes on default key when using scoped key", async () => { + const customUrl = "https://custom.clerk.com" + vi.mocked(getClerkBaseUrl).mockReturnValue(customUrl) + + let onDidChangeCallback: (e: { key: string }) => void + + mockContext.secrets.onDidChange.mockImplementation((callback: (e: { key: string }) => void) => { + onDidChangeCallback = callback + return { dispose: vi.fn() } + }) + + const service = new WebAuthService(mockContext as unknown as ExtensionContext, mockLog) + await service.initialize() + + const authStateChangedSpy = vi.fn() + service.on("auth-state-changed", authStateChangedSpy) + + // Simulate credentials change event with default key + onDidChangeCallback!({ key: "clerk-auth-credentials" }) + await new Promise((resolve) => setTimeout(resolve, 0)) // Wait for async handling + + expect(authStateChangedSpy).not.toHaveBeenCalled() + }) + }) +}) diff --git a/packages/cloud/src/bridge/ExtensionBridgeService.ts b/packages/cloud/src/bridge/ExtensionBridgeService.ts new file mode 100644 index 000000000000..0ab7e304f206 --- /dev/null +++ b/packages/cloud/src/bridge/ExtensionBridgeService.ts @@ -0,0 +1,290 @@ +import crypto from "crypto" + +import { + type TaskProviderLike, + type TaskLike, + type CloudUserInfo, + type ExtensionBridgeCommand, + type TaskBridgeCommand, + ConnectionState, + ExtensionSocketEvents, + TaskSocketEvents, +} from "@roo-code/types" + +import { SocketConnectionManager } from "./SocketConnectionManager.js" +import { ExtensionManager } from "./ExtensionManager.js" +import { TaskManager } from "./TaskManager.js" + +export interface ExtensionBridgeServiceOptions { + userId: string + socketBridgeUrl: string + token: string + provider: TaskProviderLike + sessionId?: string +} + +export class ExtensionBridgeService { + private static instance: ExtensionBridgeService | null = null + + // Core + private readonly userId: string + private readonly socketBridgeUrl: string + private readonly token: string + private readonly provider: TaskProviderLike + private readonly instanceId: string + + // Managers + private connectionManager: SocketConnectionManager + private extensionManager: ExtensionManager + private taskManager: TaskManager + + // Reconnection + private readonly MAX_RECONNECT_ATTEMPTS = Infinity + private readonly RECONNECT_DELAY = 1_000 + private readonly RECONNECT_DELAY_MAX = 30_000 + + public static getInstance(): ExtensionBridgeService | null { + return ExtensionBridgeService.instance + } + + public static async createInstance(options: ExtensionBridgeServiceOptions) { + console.log("[ExtensionBridgeService] createInstance") + ExtensionBridgeService.instance = new ExtensionBridgeService(options) + await ExtensionBridgeService.instance.initialize() + return ExtensionBridgeService.instance + } + + public static resetInstance() { + if (ExtensionBridgeService.instance) { + console.log("[ExtensionBridgeService] resetInstance") + ExtensionBridgeService.instance.disconnect().catch(() => {}) + ExtensionBridgeService.instance = null + } + } + + public static async handleRemoteControlState( + userInfo: CloudUserInfo | null, + remoteControlEnabled: boolean | undefined, + options: ExtensionBridgeServiceOptions, + logger?: (message: string) => void, + ) { + if (userInfo?.extensionBridgeEnabled && remoteControlEnabled) { + const existingService = ExtensionBridgeService.getInstance() + + if (!existingService) { + try { + const service = await ExtensionBridgeService.createInstance(options) + const state = service.getConnectionState() + + logger?.(`[ExtensionBridgeService#handleRemoteControlState] Instance created (state: ${state})`) + + if (state !== ConnectionState.CONNECTED) { + logger?.( + `[ExtensionBridgeService#handleRemoteControlState] Service is not connected yet, will retry in background`, + ) + } + } catch (error) { + const message = `[ExtensionBridgeService#handleRemoteControlState] Failed to create instance: ${ + error instanceof Error ? error.message : String(error) + }` + + logger?.(message) + console.error(message) + } + } else { + const state = existingService.getConnectionState() + + if (state === ConnectionState.FAILED || state === ConnectionState.DISCONNECTED) { + logger?.( + `[ExtensionBridgeService#handleRemoteControlState] Existing service is ${state}, attempting reconnection`, + ) + + existingService.reconnect().catch((error) => { + const message = `[ExtensionBridgeService#handleRemoteControlState] Reconnection failed: ${ + error instanceof Error ? error.message : String(error) + }` + + logger?.(message) + console.error(message) + }) + } + } + } else { + const existingService = ExtensionBridgeService.getInstance() + + if (existingService) { + try { + await existingService.disconnect() + ExtensionBridgeService.resetInstance() + + logger?.(`[ExtensionBridgeService#handleRemoteControlState] Service disconnected and reset`) + } catch (error) { + const message = `[ExtensionBridgeService#handleRemoteControlState] Failed to disconnect and reset instance: ${ + error instanceof Error ? error.message : String(error) + }` + + logger?.(message) + console.error(message) + } + } + } + } + + private constructor(options: ExtensionBridgeServiceOptions) { + this.userId = options.userId + this.socketBridgeUrl = options.socketBridgeUrl + this.token = options.token + this.provider = options.provider + this.instanceId = options.sessionId || crypto.randomUUID() + + this.connectionManager = new SocketConnectionManager({ + url: this.socketBridgeUrl, + socketOptions: { + query: { + token: this.token, + clientType: "extension", + instanceId: this.instanceId, + }, + transports: ["websocket", "polling"], + reconnection: true, + reconnectionAttempts: this.MAX_RECONNECT_ATTEMPTS, + reconnectionDelay: this.RECONNECT_DELAY, + reconnectionDelayMax: this.RECONNECT_DELAY_MAX, + }, + onConnect: () => this.handleConnect(), + onDisconnect: () => this.handleDisconnect(), + onReconnect: () => this.handleReconnect(), + }) + + this.extensionManager = new ExtensionManager(this.instanceId, this.userId, this.provider) + + this.taskManager = new TaskManager() + } + + private async initialize() { + // Populate the app and git properties before registering the instance. + await this.provider.getTelemetryProperties() + + await this.connectionManager.connect() + this.setupSocketListeners() + } + + private setupSocketListeners() { + const socket = this.connectionManager.getSocket() + + if (!socket) { + console.error("[ExtensionBridgeService] Socket not available") + return + } + + // Remove any existing listeners first to prevent duplicates. + socket.off(ExtensionSocketEvents.RELAYED_COMMAND) + socket.off(TaskSocketEvents.RELAYED_COMMAND) + socket.off("connected") + + socket.on(ExtensionSocketEvents.RELAYED_COMMAND, (message: ExtensionBridgeCommand) => { + console.log( + `[ExtensionBridgeService] on(${ExtensionSocketEvents.RELAYED_COMMAND}) -> ${message.type} for ${message.instanceId}`, + ) + + this.extensionManager?.handleExtensionCommand(message) + }) + + socket.on(TaskSocketEvents.RELAYED_COMMAND, (message: TaskBridgeCommand) => { + console.log( + `[ExtensionBridgeService] on(${TaskSocketEvents.RELAYED_COMMAND}) -> ${message.type} for ${message.taskId}`, + ) + + this.taskManager.handleTaskCommand(message) + }) + } + + private async handleConnect() { + const socket = this.connectionManager.getSocket() + + if (!socket) { + console.error("[ExtensionBridgeService] Socket not available after connect") + + return + } + + await this.extensionManager.onConnect(socket) + await this.taskManager.onConnect(socket) + } + + private handleDisconnect() { + this.extensionManager.onDisconnect() + this.taskManager.onDisconnect() + } + + private async handleReconnect() { + const socket = this.connectionManager.getSocket() + + if (!socket) { + console.error("[ExtensionBridgeService] Socket not available after reconnect") + + return + } + + // Re-setup socket listeners to ensure they're properly configured + // after automatic reconnection (Socket.IO's built-in reconnection) + // The socket.off() calls in setupSocketListeners prevent duplicates + this.setupSocketListeners() + + await this.extensionManager.onReconnect(socket) + await this.taskManager.onReconnect(socket) + } + + // Task API + + public async subscribeToTask(task: TaskLike): Promise { + const socket = this.connectionManager.getSocket() + + if (!socket || !this.connectionManager.isConnected()) { + console.warn("[ExtensionBridgeService] Cannot subscribe to task: not connected. Will retry when connected.") + + this.taskManager.addPendingTask(task) + + const state = this.connectionManager.getConnectionState() + + if (state === ConnectionState.DISCONNECTED || state === ConnectionState.FAILED) { + this.initialize() + } + + return + } + + await this.taskManager.subscribeToTask(task, socket) + } + + public async unsubscribeFromTask(taskId: string): Promise { + const socket = this.connectionManager.getSocket() + + if (!socket) { + return + } + + await this.taskManager.unsubscribeFromTask(taskId, socket) + } + + // Shared API + + public getConnectionState(): ConnectionState { + return this.connectionManager.getConnectionState() + } + + public async disconnect(): Promise { + await this.extensionManager.cleanup(this.connectionManager.getSocket()) + await this.taskManager.cleanup(this.connectionManager.getSocket()) + await this.connectionManager.disconnect() + ExtensionBridgeService.instance = null + } + + public async reconnect(): Promise { + await this.connectionManager.reconnect() + + // After a manual reconnect, we have a new socket instance + // so we need to set up listeners again. + this.setupSocketListeners() + } +} diff --git a/packages/cloud/src/bridge/ExtensionManager.ts b/packages/cloud/src/bridge/ExtensionManager.ts new file mode 100644 index 000000000000..335245e24c81 --- /dev/null +++ b/packages/cloud/src/bridge/ExtensionManager.ts @@ -0,0 +1,297 @@ +import type { Socket } from "socket.io-client" + +import { + type TaskProviderLike, + type ExtensionInstance, + type ExtensionBridgeCommand, + type ExtensionBridgeEvent, + RooCodeEventName, + TaskStatus, + ExtensionBridgeCommandName, + ExtensionBridgeEventName, + ExtensionSocketEvents, + HEARTBEAT_INTERVAL_MS, +} from "@roo-code/types" + +export class ExtensionManager { + private instanceId: string + private userId: string + private provider: TaskProviderLike + private extensionInstance: ExtensionInstance + private heartbeatInterval: NodeJS.Timeout | null = null + private socket: Socket | null = null + + constructor(instanceId: string, userId: string, provider: TaskProviderLike) { + this.instanceId = instanceId + this.userId = userId + this.provider = provider + + this.extensionInstance = { + instanceId: this.instanceId, + userId: this.userId, + workspacePath: this.provider.cwd, + appProperties: this.provider.appProperties, + gitProperties: this.provider.gitProperties, + lastHeartbeat: Date.now(), + task: { + taskId: "", + taskStatus: TaskStatus.None, + }, + taskHistory: [], + } + + this.setupListeners() + } + + public async onConnect(socket: Socket): Promise { + this.socket = socket + await this.registerInstance(socket) + this.startHeartbeat(socket) + } + + public onDisconnect(): void { + this.stopHeartbeat() + this.socket = null + } + + public async onReconnect(socket: Socket): Promise { + this.socket = socket + await this.registerInstance(socket) + this.startHeartbeat(socket) + } + + public async cleanup(socket: Socket | null): Promise { + this.stopHeartbeat() + + if (socket) { + await this.unregisterInstance(socket) + } + + this.socket = null + } + + public handleExtensionCommand(message: ExtensionBridgeCommand): void { + if (message.instanceId !== this.instanceId) { + console.log(`[ExtensionManager] command -> instance id mismatch | ${this.instanceId}`, { + messageInstanceId: message.instanceId, + }) + + return + } + + switch (message.type) { + case ExtensionBridgeCommandName.StartTask: { + console.log(`[ExtensionManager] command -> createTask() | ${message.instanceId}`, { + text: message.payload.text?.substring(0, 100) + "...", + hasImages: !!message.payload.images, + }) + + this.provider.createTask(message.payload.text, message.payload.images) + + break + } + case ExtensionBridgeCommandName.StopTask: { + const instance = this.updateInstance() + + if (instance.task.taskStatus === TaskStatus.Running) { + console.log(`[ExtensionManager] command -> cancelTask() | ${message.instanceId}`) + + this.provider.cancelTask() + this.provider.postStateToWebview() + } else if (instance.task.taskId) { + console.log(`[ExtensionManager] command -> clearTask() | ${message.instanceId}`) + + this.provider.clearTask() + this.provider.postStateToWebview() + } + + break + } + case ExtensionBridgeCommandName.ResumeTask: { + console.log(`[ExtensionManager] command -> resumeTask() | ${message.instanceId}`, { + taskId: message.payload.taskId, + }) + + // Resume the task from history by taskId + this.provider.resumeTask(message.payload.taskId) + + this.provider.postStateToWebview() + + break + } + } + } + + private async registerInstance(socket: Socket): Promise { + const instance = this.updateInstance() + + try { + socket.emit(ExtensionSocketEvents.REGISTER, instance) + + console.log( + `[ExtensionManager] emit() -> ${ExtensionSocketEvents.REGISTER}`, + // instance, + ) + } catch (error) { + console.error( + `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.REGISTER}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + + return + } + } + + private async unregisterInstance(socket: Socket): Promise { + const instance = this.updateInstance() + + try { + socket.emit(ExtensionSocketEvents.UNREGISTER, instance) + + console.log( + `[ExtensionManager] emit() -> ${ExtensionSocketEvents.UNREGISTER}`, + // instance, + ) + } catch (error) { + console.error( + `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.UNREGISTER}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + } + + private startHeartbeat(socket: Socket): void { + this.stopHeartbeat() + + this.heartbeatInterval = setInterval(async () => { + const instance = this.updateInstance() + + try { + socket.emit(ExtensionSocketEvents.HEARTBEAT, instance) + + // console.log( + // `[ExtensionManager] emit() -> ${ExtensionSocketEvents.HEARTBEAT}`, + // instance, + // ); + } catch (error) { + console.error( + `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.HEARTBEAT}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + }, HEARTBEAT_INTERVAL_MS) + } + + private stopHeartbeat(): void { + if (this.heartbeatInterval) { + clearInterval(this.heartbeatInterval) + this.heartbeatInterval = null + } + } + + private setupListeners(): void { + const eventMapping = [ + { + from: RooCodeEventName.TaskCreated, + to: ExtensionBridgeEventName.TaskCreated, + }, + { + from: RooCodeEventName.TaskStarted, + to: ExtensionBridgeEventName.TaskStarted, + }, + { + from: RooCodeEventName.TaskCompleted, + to: ExtensionBridgeEventName.TaskCompleted, + }, + { + from: RooCodeEventName.TaskAborted, + to: ExtensionBridgeEventName.TaskAborted, + }, + { + from: RooCodeEventName.TaskFocused, + to: ExtensionBridgeEventName.TaskFocused, + }, + { + from: RooCodeEventName.TaskUnfocused, + to: ExtensionBridgeEventName.TaskUnfocused, + }, + { + from: RooCodeEventName.TaskActive, + to: ExtensionBridgeEventName.TaskActive, + }, + { + from: RooCodeEventName.TaskInteractive, + to: ExtensionBridgeEventName.TaskInteractive, + }, + { + from: RooCodeEventName.TaskResumable, + to: ExtensionBridgeEventName.TaskResumable, + }, + { + from: RooCodeEventName.TaskIdle, + to: ExtensionBridgeEventName.TaskIdle, + }, + ] as const + + const addListener = + (type: ExtensionBridgeEventName) => + async (..._args: unknown[]) => { + this.publishEvent({ + type, + instance: this.updateInstance(), + timestamp: Date.now(), + }) + } + + eventMapping.forEach(({ from, to }) => this.provider.on(from, addListener(to))) + } + + private async publishEvent(message: ExtensionBridgeEvent): Promise { + if (!this.socket) { + console.error("[ExtensionManager] publishEvent -> socket not available") + return false + } + + try { + this.socket.emit(ExtensionSocketEvents.EVENT, message) + + console.log(`[ExtensionManager] emit() -> ${ExtensionSocketEvents.EVENT} ${message.type}`, message) + + return true + } catch (error) { + console.error( + `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.EVENT}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + + return false + } + } + + private updateInstance(): ExtensionInstance { + const task = this.provider?.getCurrentTask() + const taskHistory = this.provider?.getRecentTasks() ?? [] + + this.extensionInstance = { + ...this.extensionInstance, + appProperties: this.extensionInstance.appProperties ?? this.provider.appProperties, + gitProperties: this.extensionInstance.gitProperties ?? this.provider.gitProperties, + lastHeartbeat: Date.now(), + task: task + ? { + taskId: task.taskId, + taskStatus: task.taskStatus, + ...task.metadata, + } + : { taskId: "", taskStatus: TaskStatus.None }, + taskAsk: task?.taskAsk, + taskHistory, + } + + return this.extensionInstance + } +} diff --git a/packages/cloud/src/bridge/SocketConnectionManager.ts b/packages/cloud/src/bridge/SocketConnectionManager.ts new file mode 100644 index 000000000000..3ba9631fec21 --- /dev/null +++ b/packages/cloud/src/bridge/SocketConnectionManager.ts @@ -0,0 +1,289 @@ +import { io, type Socket } from "socket.io-client" + +import { ConnectionState, type RetryConfig } from "@roo-code/types" + +export interface SocketConnectionOptions { + url: string + socketOptions: Record + onConnect?: () => void | Promise + onDisconnect?: (reason: string) => void + onReconnect?: (attemptNumber: number) => void | Promise + onError?: (error: Error) => void + logger?: { + log: (message: string, ...args: unknown[]) => void + error: (message: string, ...args: unknown[]) => void + warn: (message: string, ...args: unknown[]) => void + } +} + +export class SocketConnectionManager { + private socket: Socket | null = null + private connectionState: ConnectionState = ConnectionState.DISCONNECTED + private retryAttempt: number = 0 + private retryTimeout: NodeJS.Timeout | null = null + private hasConnectedOnce: boolean = false + + private readonly retryConfig: RetryConfig = { + maxInitialAttempts: 10, + initialDelay: 1_000, + maxDelay: 15_000, + backoffMultiplier: 2, + } + + private readonly CONNECTION_TIMEOUT = 2_000 + private readonly options: SocketConnectionOptions + + constructor(options: SocketConnectionOptions, retryConfig?: Partial) { + this.options = options + + if (retryConfig) { + this.retryConfig = { ...this.retryConfig, ...retryConfig } + } + } + + public async connect(): Promise { + if (this.connectionState === ConnectionState.CONNECTED) { + console.log(`[SocketConnectionManager] Already connected`) + return + } + + if (this.connectionState === ConnectionState.CONNECTING || this.connectionState === ConnectionState.RETRYING) { + console.log(`[SocketConnectionManager] Connection attempt already in progress`) + + return + } + + // Start connection attempt without blocking. + this.startConnectionAttempt() + } + + private async startConnectionAttempt() { + this.retryAttempt = 0 + + try { + await this.connectWithRetry() + } catch (error) { + console.error(`[SocketConnectionManager] Initial connection attempts failed:`, error) + + // If we've never connected successfully, we've exhausted our retry attempts + // The user will need to manually retry or fix the issue + this.connectionState = ConnectionState.FAILED + } + } + + private async connectWithRetry(): Promise { + let delay = this.retryConfig.initialDelay + + while (this.retryAttempt < this.retryConfig.maxInitialAttempts) { + try { + this.connectionState = this.retryAttempt === 0 ? ConnectionState.CONNECTING : ConnectionState.RETRYING + + console.log( + `[SocketConnectionManager] Connection attempt ${this.retryAttempt + 1} / ${this.retryConfig.maxInitialAttempts}`, + ) + + await this.connectSocket() + + console.log(`[SocketConnectionManager] Connected to ${this.options.url}`) + + this.connectionState = ConnectionState.CONNECTED + this.retryAttempt = 0 + + this.clearRetryTimeouts() + + if (this.options.onConnect) { + await this.options.onConnect() + } + + return + } catch (error) { + this.retryAttempt++ + + console.error(`[SocketConnectionManager] Connection attempt ${this.retryAttempt} failed:`, error) + + if (this.socket) { + this.socket.disconnect() + this.socket = null + } + + if (this.retryAttempt >= this.retryConfig.maxInitialAttempts) { + this.connectionState = ConnectionState.FAILED + + throw new Error(`Failed to connect after ${this.retryConfig.maxInitialAttempts} attempts`) + } + + console.log(`[SocketConnectionManager] Waiting ${delay}ms before retry...`) + + await this.delay(delay) + + delay = Math.min(delay * this.retryConfig.backoffMultiplier, this.retryConfig.maxDelay) + } + } + } + + private async connectSocket(): Promise { + return new Promise((resolve, reject) => { + this.socket = io(this.options.url, this.options.socketOptions) + + const connectionTimeout = setTimeout(() => { + console.error(`[SocketConnectionManager] Connection timeout`) + + if (this.connectionState !== ConnectionState.CONNECTED) { + this.socket?.disconnect() + reject(new Error("Connection timeout")) + } + }, this.CONNECTION_TIMEOUT) + + this.socket.on("connect", async () => { + clearTimeout(connectionTimeout) + + const isReconnection = this.hasConnectedOnce + + // If this is a reconnection (not the first connect), treat it as a + // reconnect. + // This handles server restarts where 'reconnect' event might not fire. + if (isReconnection) { + console.log( + `[SocketConnectionManager] Treating connect as reconnection (server may have restarted)`, + ) + + this.connectionState = ConnectionState.CONNECTED + + if (this.options.onReconnect) { + // Call onReconnect to re-register instance. + await this.options.onReconnect(0) + } + } + + this.hasConnectedOnce = true + resolve() + }) + + this.socket.on("disconnect", (reason: string) => { + console.log(`[SocketConnectionManager] Disconnected (reason: ${reason})`) + + this.connectionState = ConnectionState.DISCONNECTED + + if (this.options.onDisconnect) { + this.options.onDisconnect(reason) + } + + // Don't attempt to reconnect if we're manually disconnecting. + const isManualDisconnect = reason === "io client disconnect" + + if (!isManualDisconnect && this.hasConnectedOnce) { + // After successful initial connection, rely entirely on Socket.IO's + // reconnection. + console.log(`[SocketConnectionManager] Socket.IO will handle reconnection (reason: ${reason})`) + } + }) + + // Listen for reconnection attempts. + this.socket.on("reconnect_attempt", (attemptNumber: number) => { + console.log(`[SocketConnectionManager] Socket.IO reconnect attempt:`, { + attemptNumber, + }) + }) + + this.socket.on("reconnect", (attemptNumber: number) => { + console.log(`[SocketConnectionManager] Socket reconnected (attempt: ${attemptNumber})`) + + this.connectionState = ConnectionState.CONNECTED + + if (this.options.onReconnect) { + this.options.onReconnect(attemptNumber) + } + }) + + this.socket.on("reconnect_error", (error: Error) => { + console.error(`[SocketConnectionManager] Socket.IO reconnect error:`, error) + }) + + this.socket.on("reconnect_failed", () => { + console.error(`[SocketConnectionManager] Socket.IO reconnection failed after all attempts`) + + this.connectionState = ConnectionState.FAILED + + // Socket.IO has exhausted its reconnection attempts + // The connection is now permanently failed until manual intervention + }) + + this.socket.on("error", (error) => { + console.error(`[SocketConnectionManager] Socket error:`, error) + + if (this.connectionState !== ConnectionState.CONNECTED) { + clearTimeout(connectionTimeout) + reject(error) + } + + if (this.options.onError) { + this.options.onError(error) + } + }) + + this.socket.on("auth_error", (error) => { + console.error(`[SocketConnectionManager] Authentication error:`, error) + clearTimeout(connectionTimeout) + reject(new Error(error.message || "Authentication failed")) + }) + }) + } + + private delay(ms: number): Promise { + return new Promise((resolve) => { + this.retryTimeout = setTimeout(resolve, ms) + }) + } + + // 1. Custom retry for initial connection attempts. + // 2. Socket.IO's built-in reconnection after successful initial connection. + + private clearRetryTimeouts() { + if (this.retryTimeout) { + clearTimeout(this.retryTimeout) + this.retryTimeout = null + } + } + + public async disconnect(): Promise { + console.log(`[SocketConnectionManager] Disconnecting...`) + + this.clearRetryTimeouts() + + if (this.socket) { + this.socket.removeAllListeners() + this.socket.disconnect() + this.socket = null + } + + this.connectionState = ConnectionState.DISCONNECTED + + console.log(`[SocketConnectionManager] Disconnected`) + } + + public getSocket(): Socket | null { + return this.socket + } + + public getConnectionState(): ConnectionState { + return this.connectionState + } + + public isConnected(): boolean { + return this.connectionState === ConnectionState.CONNECTED && this.socket?.connected === true + } + + public async reconnect(): Promise { + if (this.connectionState === ConnectionState.CONNECTED) { + console.log(`[SocketConnectionManager] Already connected`) + return + } + + console.log(`[SocketConnectionManager] Manual reconnection requested`) + + this.hasConnectedOnce = false + + await this.disconnect() + await this.connect() + } +} diff --git a/packages/cloud/src/bridge/TaskManager.ts b/packages/cloud/src/bridge/TaskManager.ts new file mode 100644 index 000000000000..3940d59f259b --- /dev/null +++ b/packages/cloud/src/bridge/TaskManager.ts @@ -0,0 +1,279 @@ +import type { Socket } from "socket.io-client" + +import { + type ClineMessage, + type TaskEvents, + type TaskLike, + type TaskBridgeCommand, + type TaskBridgeEvent, + RooCodeEventName, + TaskBridgeEventName, + TaskBridgeCommandName, + TaskSocketEvents, +} from "@roo-code/types" + +type TaskEventListener = { + [K in keyof TaskEvents]: (...args: TaskEvents[K]) => void | Promise +}[keyof TaskEvents] + +const TASK_EVENT_MAPPING: Record = { + [TaskBridgeEventName.Message]: RooCodeEventName.Message, + [TaskBridgeEventName.TaskModeSwitched]: RooCodeEventName.TaskModeSwitched, + [TaskBridgeEventName.TaskInteractive]: RooCodeEventName.TaskInteractive, +} + +export class TaskManager { + private subscribedTasks: Map = new Map() + private pendingTasks: Map = new Map() + private socket: Socket | null = null + + private taskListeners: Map> = new Map() + + constructor() {} + + public async onConnect(socket: Socket): Promise { + this.socket = socket + + // Rejoin all subscribed tasks. + for (const taskId of this.subscribedTasks.keys()) { + try { + socket.emit(TaskSocketEvents.JOIN, { taskId }) + + console.log(`[TaskManager] emit() -> ${TaskSocketEvents.JOIN} ${taskId}`) + } catch (error) { + console.error( + `[TaskManager] emit() failed -> ${TaskSocketEvents.JOIN}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + } + + // Subscribe to any pending tasks. + for (const task of this.pendingTasks.values()) { + await this.subscribeToTask(task, socket) + } + + this.pendingTasks.clear() + } + + public onDisconnect(): void { + this.socket = null + } + + public async onReconnect(socket: Socket): Promise { + this.socket = socket + + // Rejoin all subscribed tasks. + for (const taskId of this.subscribedTasks.keys()) { + try { + socket.emit(TaskSocketEvents.JOIN, { taskId }) + + console.log(`[TaskManager] emit() -> ${TaskSocketEvents.JOIN} ${taskId}`) + } catch (error) { + console.error( + `[TaskManager] emit() failed -> ${TaskSocketEvents.JOIN}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + } + } + + public async cleanup(socket: Socket | null): Promise { + if (!socket) { + return + } + + const unsubscribePromises = [] + + for (const taskId of this.subscribedTasks.keys()) { + unsubscribePromises.push(this.unsubscribeFromTask(taskId, socket)) + } + + await Promise.allSettled(unsubscribePromises) + this.subscribedTasks.clear() + this.taskListeners.clear() + this.pendingTasks.clear() + this.socket = null + } + + public addPendingTask(task: TaskLike): void { + this.pendingTasks.set(task.taskId, task) + } + + public async subscribeToTask(task: TaskLike, socket: Socket): Promise { + const taskId = task.taskId + this.subscribedTasks.set(taskId, task) + this.setupListeners(task) + + try { + socket.emit(TaskSocketEvents.JOIN, { taskId }) + console.log(`[TaskManager] emit() -> ${TaskSocketEvents.JOIN} ${taskId}`) + } catch (error) { + console.error( + `[TaskManager] emit() failed -> ${TaskSocketEvents.JOIN}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + } + + public async unsubscribeFromTask(taskId: string, socket: Socket): Promise { + const task = this.subscribedTasks.get(taskId) + + if (task) { + this.removeListeners(task) + this.subscribedTasks.delete(taskId) + } + + try { + socket.emit(TaskSocketEvents.LEAVE, { taskId }) + + console.log(`[TaskManager] emit() -> ${TaskSocketEvents.LEAVE} ${taskId}`) + } catch (error) { + console.error( + `[TaskManager] emit() failed -> ${TaskSocketEvents.LEAVE}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + } + + public handleTaskCommand(message: TaskBridgeCommand): void { + const task = this.subscribedTasks.get(message.taskId) + + if (!task) { + console.error(`[TaskManager#handleTaskCommand] Unable to find task ${message.taskId}`) + + return + } + + switch (message.type) { + case TaskBridgeCommandName.Message: + console.log( + `[TaskManager#handleTaskCommand] ${TaskBridgeCommandName.Message} ${message.taskId} -> submitUserMessage()`, + message, + ) + + task.submitUserMessage(message.payload.text, message.payload.images) + break + case TaskBridgeCommandName.ApproveAsk: + console.log( + `[TaskManager#handleTaskCommand] ${TaskBridgeCommandName.ApproveAsk} ${message.taskId} -> approveAsk()`, + message, + ) + + task.approveAsk(message.payload) + break + case TaskBridgeCommandName.DenyAsk: + console.log( + `[TaskManager#handleTaskCommand] ${TaskBridgeCommandName.DenyAsk} ${message.taskId} -> denyAsk()`, + message, + ) + + task.denyAsk(message.payload) + break + } + } + + private setupListeners(task: TaskLike): void { + if (this.taskListeners.has(task.taskId)) { + console.warn("[TaskManager] Listeners already exist for task, removing old listeners:", task.taskId) + + this.removeListeners(task) + } + + const listeners = new Map() + + const onMessage = ({ action, message }: { action: string; message: ClineMessage }) => { + this.publishEvent({ + type: TaskBridgeEventName.Message, + taskId: task.taskId, + action, + message, + }) + } + + task.on(RooCodeEventName.Message, onMessage) + listeners.set(TaskBridgeEventName.Message, onMessage) + + const onTaskModeSwitched = (mode: string) => { + this.publishEvent({ + type: TaskBridgeEventName.TaskModeSwitched, + taskId: task.taskId, + mode, + }) + } + + task.on(RooCodeEventName.TaskModeSwitched, onTaskModeSwitched) + listeners.set(TaskBridgeEventName.TaskModeSwitched, onTaskModeSwitched) + + const onTaskInteractive = (_taskId: string) => { + this.publishEvent({ + type: TaskBridgeEventName.TaskInteractive, + taskId: task.taskId, + }) + } + + task.on(RooCodeEventName.TaskInteractive, onTaskInteractive) + + listeners.set(TaskBridgeEventName.TaskInteractive, onTaskInteractive) + + this.taskListeners.set(task.taskId, listeners) + + console.log("[TaskManager] Task listeners setup complete for:", task.taskId) + } + + private removeListeners(task: TaskLike): void { + const listeners = this.taskListeners.get(task.taskId) + + if (!listeners) { + return + } + + console.log("[TaskManager] Removing task listeners for:", task.taskId) + + listeners.forEach((listener, eventName) => { + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + task.off(TASK_EVENT_MAPPING[eventName], listener as any) + } catch (error) { + console.error( + `[TaskManager] Error removing listener for ${String(eventName)} on task ${task.taskId}:`, + error, + ) + } + }) + + this.taskListeners.delete(task.taskId) + } + + private async publishEvent(message: TaskBridgeEvent): Promise { + if (!this.socket) { + console.error("[TaskManager] publishEvent -> socket not available") + return false + } + + try { + this.socket.emit(TaskSocketEvents.EVENT, message) + + if (message.type !== TaskBridgeEventName.Message) { + console.log( + `[TaskManager] emit() -> ${TaskSocketEvents.EVENT} ${message.taskId} ${message.type}`, + message, + ) + } + + return true + } catch (error) { + console.error( + `[TaskManager] emit() failed -> ${TaskSocketEvents.EVENT}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + + return false + } + } +} diff --git a/packages/cloud/src/config.ts b/packages/cloud/src/config.ts new file mode 100644 index 000000000000..cfff9d0f589d --- /dev/null +++ b/packages/cloud/src/config.ts @@ -0,0 +1,6 @@ +export const PRODUCTION_CLERK_BASE_URL = "https://clerk.roocode.com" +export const PRODUCTION_ROO_CODE_API_URL = "https://app.roocode.com" + +export const getClerkBaseUrl = () => process.env.CLERK_BASE_URL || PRODUCTION_CLERK_BASE_URL + +export const getRooCodeApiUrl = () => process.env.ROO_CODE_API_URL || PRODUCTION_ROO_CODE_API_URL diff --git a/packages/cloud/src/errors.ts b/packages/cloud/src/errors.ts new file mode 100644 index 000000000000..7400f26b39ca --- /dev/null +++ b/packages/cloud/src/errors.ts @@ -0,0 +1,42 @@ +export class CloudAPIError extends Error { + constructor( + message: string, + public statusCode?: number, + public responseBody?: unknown, + ) { + super(message) + this.name = "CloudAPIError" + Object.setPrototypeOf(this, CloudAPIError.prototype) + } +} + +export class TaskNotFoundError extends CloudAPIError { + constructor(taskId?: string) { + super(taskId ? `Task '${taskId}' not found` : "Task not found", 404) + this.name = "TaskNotFoundError" + Object.setPrototypeOf(this, TaskNotFoundError.prototype) + } +} + +export class AuthenticationError extends CloudAPIError { + constructor(message = "Authentication required") { + super(message, 401) + this.name = "AuthenticationError" + Object.setPrototypeOf(this, AuthenticationError.prototype) + } +} + +export class NetworkError extends CloudAPIError { + constructor(message = "Network error occurred") { + super(message) + this.name = "NetworkError" + Object.setPrototypeOf(this, NetworkError.prototype) + } +} + +export class InvalidClientTokenError extends Error { + constructor() { + super("Invalid/Expired client token") + Object.setPrototypeOf(this, InvalidClientTokenError.prototype) + } +} diff --git a/packages/cloud/src/importVscode.ts b/packages/cloud/src/importVscode.ts new file mode 100644 index 000000000000..b3c3c94150d6 --- /dev/null +++ b/packages/cloud/src/importVscode.ts @@ -0,0 +1,49 @@ +/** + * Utility for lazy-loading the VS Code module in environments where it's available. + * This allows the SDK to be used in both VS Code extension and Node.js environments. + * Compatible with both VSCode and Cursor extension hosts. + */ + +let vscodeModule: typeof import("vscode") | undefined + +/** + * Attempts to dynamically import the VS Code module. + * Returns undefined if not running in a VS Code/Cursor extension context. + */ +export async function importVscode(): Promise { + // Check if already loaded + if (vscodeModule) { + return vscodeModule + } + + try { + // Method 1: Check if vscode is available in global scope (common in extension hosts). + if (typeof globalThis !== "undefined" && "acquireVsCodeApi" in globalThis) { + // We're in a webview context, vscode module won't be available. + return undefined + } + + // Method 2: Try to require the module (works in most extension contexts). + if (typeof require !== "undefined") { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + vscodeModule = require("vscode") + + if (vscodeModule) { + return vscodeModule + } + } catch (error) { + console.error("Error loading VS Code module:", error) + // Fall through to dynamic import. + } + } + + // Method 3: Dynamic import (original approach, works in VSCode). + vscodeModule = await import("vscode") + return vscodeModule + } catch (error) { + // Log the original error for debugging. + console.warn("VS Code module not available in this environment:", error) + return undefined + } +} diff --git a/packages/cloud/src/index.ts b/packages/cloud/src/index.ts new file mode 100644 index 000000000000..6ba2d3e61e6a --- /dev/null +++ b/packages/cloud/src/index.ts @@ -0,0 +1,5 @@ +export * from "./config.js" + +export * from "./CloudAPI.js" +export * from "./CloudService.js" +export * from "./bridge/ExtensionBridgeService.js" diff --git a/packages/cloud/src/utils.ts b/packages/cloud/src/utils.ts new file mode 100644 index 000000000000..bd53fe1ce372 --- /dev/null +++ b/packages/cloud/src/utils.ts @@ -0,0 +1,5 @@ +import type { ExtensionContext } from "vscode" + +export function getUserAgent(context?: ExtensionContext): string { + return `Roo-Code ${context?.extension?.packageJSON?.version || "unknown"}` +} diff --git a/packages/cloud/tsconfig.json b/packages/cloud/tsconfig.json new file mode 100644 index 000000000000..01f83fb326c5 --- /dev/null +++ b/packages/cloud/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@roo-code/config-typescript/base.json", + "compilerOptions": { + "types": ["vitest/globals", "node"], + "outDir": "./dist" + }, + "include": ["src", "scripts", "*.config.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/cloud/vitest.config.ts b/packages/cloud/vitest.config.ts new file mode 100644 index 000000000000..569f1675437a --- /dev/null +++ b/packages/cloud/vitest.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vitest/config" + +export default defineConfig({ + test: { + globals: true, + environment: "node", + watch: false, + }, + resolve: { + alias: { + vscode: new URL("./src/__mocks__/vscode.ts", import.meta.url).pathname, + }, + }, +}) diff --git a/packages/config-typescript/base.json b/packages/config-typescript/base.json index 0756a8cdeff6..244a6c40b97a 100644 --- a/packages/config-typescript/base.json +++ b/packages/config-typescript/base.json @@ -14,6 +14,7 @@ "resolveJsonModule": true, "skipLibCheck": true, "strict": true, - "target": "ES2022" + "target": "ES2022", + "types": ["node"] } } diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 42d0df387c03..1d434ad290a2 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -8,7 +8,7 @@ "lint": "eslint src --ext=ts --max-warnings=0", "check-types": "tsc --noEmit", "test": "vitest run", - "clean": "rimraf dist .turbo" + "clean": "rimraf .turbo" }, "dependencies": { "@roo-code/types": "workspace:^", diff --git a/packages/types/npm/package.metadata.json b/packages/types/npm/package.metadata.json index 46978350d6a5..1b1d0d989259 100644 --- a/packages/types/npm/package.metadata.json +++ b/packages/types/npm/package.metadata.json @@ -1,6 +1,6 @@ { "name": "@roo-code/types", - "version": "1.63.0", + "version": "1.64.0", "description": "TypeScript type definitions for Roo Code.", "publishConfig": { "access": "public", diff --git a/packages/types/src/__tests__/ipc.test.ts b/packages/types/src/__tests__/ipc.test.ts index a2b4429356f4..dd0f7c5cdcc2 100644 --- a/packages/types/src/__tests__/ipc.test.ts +++ b/packages/types/src/__tests__/ipc.test.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { TaskCommandName, taskCommandSchema } from "../ipc.js" describe("IPC Types", () => { diff --git a/packages/types/src/__tests__/provider-settings.test.ts b/packages/types/src/__tests__/provider-settings.test.ts index 93a74f3c42ed..cedf9a3e2f31 100644 --- a/packages/types/src/__tests__/provider-settings.test.ts +++ b/packages/types/src/__tests__/provider-settings.test.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { getApiProtocol } from "../provider-settings.js" describe("getApiProtocol", () => { diff --git a/packages/types/src/cloud.ts b/packages/types/src/cloud.ts new file mode 100644 index 000000000000..b80c562fa3f9 --- /dev/null +++ b/packages/types/src/cloud.ts @@ -0,0 +1,618 @@ +import EventEmitter from "events" + +import { z } from "zod" + +import { RooCodeEventName } from "./events.js" +import { TaskStatus, taskMetadataSchema } from "./task.js" +import { globalSettingsSchema } from "./global-settings.js" +import { providerSettingsWithIdSchema } from "./provider-settings.js" +import { mcpMarketplaceItemSchema } from "./marketplace.js" +import { clineMessageSchema } from "./message.js" +import { staticAppPropertiesSchema, gitPropertiesSchema } from "./telemetry.js" + +/** + * JWTPayload + */ + +export interface JWTPayload { + iss?: string // Issuer (should be 'rcc') + sub?: string // Subject - CloudJob ID for job tokens (t:'cj'), User ID for auth tokens (t:'auth') + exp?: number // Expiration time + iat?: number // Issued at time + nbf?: number // Not before time + v?: number // Version (should be 1) + r?: { + u?: string // User ID (always present in valid tokens) + o?: string // Organization ID (optional - undefined when orgId is null) + t?: string // Token type: 'cj' for job tokens, 'auth' for auth tokens + } +} + +/** + * CloudUserInfo + */ + +export interface CloudUserInfo { + id?: string + name?: string + email?: string + picture?: string + organizationId?: string + organizationName?: string + organizationRole?: string + organizationImageUrl?: string + extensionBridgeEnabled?: boolean +} + +/** + * CloudOrganization + */ + +export interface CloudOrganization { + id: string + name: string + slug?: string + image_url?: string + has_image?: boolean + created_at?: number + updated_at?: number +} + +/** + * CloudOrganizationMembership + */ + +export interface CloudOrganizationMembership { + id: string + organization: CloudOrganization + role: string + permissions?: string[] + created_at?: number + updated_at?: number +} + +/** + * OrganizationAllowList + */ + +export const organizationAllowListSchema = z.object({ + allowAll: z.boolean(), + providers: z.record( + z.object({ + allowAll: z.boolean(), + models: z.array(z.string()).optional(), + }), + ), +}) + +export type OrganizationAllowList = z.infer + +/** + * OrganizationDefaultSettings + */ + +export const organizationDefaultSettingsSchema = globalSettingsSchema + .pick({ + enableCheckpoints: true, + fuzzyMatchThreshold: true, + maxOpenTabsContext: true, + maxReadFileLine: true, + maxWorkspaceFiles: true, + showRooIgnoredFiles: true, + terminalCommandDelay: true, + terminalCompressProgressBar: true, + terminalOutputLineLimit: true, + terminalShellIntegrationDisabled: true, + terminalShellIntegrationTimeout: true, + terminalZshClearEolMark: true, + }) + // Add stronger validations for some fields. + .merge( + z.object({ + maxOpenTabsContext: z.number().int().nonnegative().optional(), + maxReadFileLine: z.number().int().gte(-1).optional(), + maxWorkspaceFiles: z.number().int().nonnegative().optional(), + terminalCommandDelay: z.number().int().nonnegative().optional(), + terminalOutputLineLimit: z.number().int().nonnegative().optional(), + terminalShellIntegrationTimeout: z.number().int().nonnegative().optional(), + }), + ) + +export type OrganizationDefaultSettings = z.infer + +/** + * OrganizationCloudSettings + */ + +export const organizationCloudSettingsSchema = z.object({ + recordTaskMessages: z.boolean().optional(), + enableTaskSharing: z.boolean().optional(), + taskShareExpirationDays: z.number().int().positive().optional(), + allowMembersViewAllTasks: z.boolean().optional(), +}) + +export type OrganizationCloudSettings = z.infer + +/** + * OrganizationSettings + */ + +export const organizationSettingsSchema = z.object({ + version: z.number(), + cloudSettings: organizationCloudSettingsSchema.optional(), + defaultSettings: organizationDefaultSettingsSchema, + allowList: organizationAllowListSchema, + hiddenMcps: z.array(z.string()).optional(), + hideMarketplaceMcps: z.boolean().optional(), + mcps: z.array(mcpMarketplaceItemSchema).optional(), + providerProfiles: z.record(z.string(), providerSettingsWithIdSchema).optional(), +}) + +export type OrganizationSettings = z.infer + +/** + * User Settings Schemas + */ + +export const userFeaturesSchema = z.object({ + roomoteControlEnabled: z.boolean().optional(), +}) + +export type UserFeatures = z.infer + +export const userSettingsConfigSchema = z.object({ + extensionBridgeEnabled: z.boolean().optional(), +}) + +export type UserSettingsConfig = z.infer + +export const userSettingsDataSchema = z.object({ + features: userFeaturesSchema, + settings: userSettingsConfigSchema, + version: z.number(), +}) + +export type UserSettingsData = z.infer + +/** + * Constants + */ + +export const ORGANIZATION_ALLOW_ALL: OrganizationAllowList = { + allowAll: true, + providers: {}, +} as const + +export const ORGANIZATION_DEFAULT: OrganizationSettings = { + version: 0, + cloudSettings: { + recordTaskMessages: true, + enableTaskSharing: true, + taskShareExpirationDays: 30, + allowMembersViewAllTasks: true, + }, + defaultSettings: {}, + allowList: ORGANIZATION_ALLOW_ALL, +} as const + +/** + * ShareVisibility + */ + +export type ShareVisibility = "organization" | "public" + +/** + * ShareResponse + */ + +export const shareResponseSchema = z.object({ + success: z.boolean(), + shareUrl: z.string().optional(), + error: z.string().optional(), + isNewShare: z.boolean().optional(), + manageUrl: z.string().optional(), +}) + +export type ShareResponse = z.infer + +/** + * AuthService + */ + +export type AuthState = "initializing" | "logged-out" | "active-session" | "attempting-session" | "inactive-session" + +export interface AuthService extends EventEmitter { + // Lifecycle + initialize(): Promise + broadcast(): void + + // Authentication methods + login(): Promise + logout(): Promise + handleCallback(code: string | null, state: string | null, organizationId?: string | null): Promise + + // State methods + getState(): AuthState + isAuthenticated(): boolean + hasActiveSession(): boolean + hasOrIsAcquiringActiveSession(): boolean + + // Token and user info + getSessionToken(): string | undefined + getUserInfo(): CloudUserInfo | null + getStoredOrganizationId(): string | null +} + +/** + * AuthServiceEvents + */ + +export interface AuthServiceEvents { + "auth-state-changed": [ + data: { + state: AuthState + previousState: AuthState + }, + ] + "user-info": [data: { userInfo: CloudUserInfo }] +} + +/** + * SettingsService + */ + +/** + * Interface for settings services that provide organization settings + */ +export interface SettingsService { + /** + * Get the organization allow list + * @returns The organization allow list or default if none available + */ + getAllowList(): OrganizationAllowList + + /** + * Get the current organization settings + * @returns The organization settings or undefined if none available + */ + getSettings(): OrganizationSettings | undefined + + /** + * Get the current user settings + * @returns The user settings data or undefined if none available + */ + getUserSettings(): UserSettingsData | undefined + + /** + * Get the current user features + * @returns The user features or empty object if none available + */ + getUserFeatures(): UserFeatures + + /** + * Get the current user settings configuration + * @returns The user settings configuration or empty object if none available + */ + getUserSettingsConfig(): UserSettingsConfig + + /** + * Update user settings with partial configuration + * @param settings Partial user settings configuration to update + * @returns Promise that resolves to true if successful, false otherwise + */ + updateUserSettings(settings: Partial): Promise + + /** + * Dispose of the settings service and clean up resources + */ + dispose(): void +} + +/** + * SettingsServiceEvents + */ + +export interface SettingsServiceEvents { + "settings-updated": [data: Record] +} + +/** + * CloudServiceEvents + */ + +export type CloudServiceEvents = AuthServiceEvents & SettingsServiceEvents + +/** + * ConnectionState + */ + +export enum ConnectionState { + DISCONNECTED = "disconnected", + CONNECTING = "connecting", + CONNECTED = "connected", + RETRYING = "retrying", + FAILED = "failed", +} + +/** + * RetryConfig + */ + +export interface RetryConfig { + maxInitialAttempts: number + initialDelay: number + maxDelay: number + backoffMultiplier: number +} + +/** + * Constants + */ + +export const HEARTBEAT_INTERVAL_MS = 20_000 +export const INSTANCE_TTL_SECONDS = 60 + +/** + * ExtensionTask + */ + +const extensionTaskSchema = z.object({ + taskId: z.string(), + taskStatus: z.nativeEnum(TaskStatus), + ...taskMetadataSchema.shape, +}) + +export type ExtensionTask = z.infer + +/** + * ExtensionInstance + */ + +export const extensionInstanceSchema = z.object({ + instanceId: z.string(), + userId: z.string(), + workspacePath: z.string(), + appProperties: staticAppPropertiesSchema, + gitProperties: gitPropertiesSchema.optional(), + lastHeartbeat: z.coerce.number(), + task: extensionTaskSchema, + taskAsk: clineMessageSchema.optional(), + taskHistory: z.array(z.string()), +}) + +export type ExtensionInstance = z.infer + +/** + * ExtensionBridgeEvent + */ + +export enum ExtensionBridgeEventName { + TaskCreated = RooCodeEventName.TaskCreated, + TaskStarted = RooCodeEventName.TaskStarted, + TaskCompleted = RooCodeEventName.TaskCompleted, + TaskAborted = RooCodeEventName.TaskAborted, + TaskFocused = RooCodeEventName.TaskFocused, + TaskUnfocused = RooCodeEventName.TaskUnfocused, + TaskActive = RooCodeEventName.TaskActive, + TaskInteractive = RooCodeEventName.TaskInteractive, + TaskResumable = RooCodeEventName.TaskResumable, + TaskIdle = RooCodeEventName.TaskIdle, + + InstanceRegistered = "instance_registered", + InstanceUnregistered = "instance_unregistered", + HeartbeatUpdated = "heartbeat_updated", +} + +export const extensionBridgeEventSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskCreated), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskStarted), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskCompleted), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskAborted), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskFocused), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskUnfocused), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskActive), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskInteractive), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskResumable), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.TaskIdle), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.InstanceRegistered), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.InstanceUnregistered), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.HeartbeatUpdated), + instance: extensionInstanceSchema, + timestamp: z.number(), + }), +]) + +export type ExtensionBridgeEvent = z.infer + +/** + * ExtensionBridgeCommand + */ + +export enum ExtensionBridgeCommandName { + StartTask = "start_task", + StopTask = "stop_task", + ResumeTask = "resume_task", +} + +export const extensionBridgeCommandSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal(ExtensionBridgeCommandName.StartTask), + instanceId: z.string(), + payload: z.object({ + text: z.string(), + images: z.array(z.string()).optional(), + }), + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeCommandName.StopTask), + instanceId: z.string(), + payload: z.object({ taskId: z.string() }), + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeCommandName.ResumeTask), + instanceId: z.string(), + payload: z.object({ + taskId: z.string(), + }), + timestamp: z.number(), + }), +]) + +export type ExtensionBridgeCommand = z.infer + +/** + * TaskBridgeEvent + */ + +export enum TaskBridgeEventName { + Message = RooCodeEventName.Message, + TaskModeSwitched = RooCodeEventName.TaskModeSwitched, + TaskInteractive = RooCodeEventName.TaskInteractive, +} + +export const taskBridgeEventSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal(TaskBridgeEventName.Message), + taskId: z.string(), + action: z.string(), + message: clineMessageSchema, + }), + z.object({ + type: z.literal(TaskBridgeEventName.TaskModeSwitched), + taskId: z.string(), + mode: z.string(), + }), + z.object({ + type: z.literal(TaskBridgeEventName.TaskInteractive), + taskId: z.string(), + }), +]) + +export type TaskBridgeEvent = z.infer + +/** + * TaskBridgeCommand + */ + +export enum TaskBridgeCommandName { + Message = "message", + ApproveAsk = "approve_ask", + DenyAsk = "deny_ask", +} + +export const taskBridgeCommandSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal(TaskBridgeCommandName.Message), + taskId: z.string(), + payload: z.object({ + text: z.string(), + images: z.array(z.string()).optional(), + }), + timestamp: z.number(), + }), + z.object({ + type: z.literal(TaskBridgeCommandName.ApproveAsk), + taskId: z.string(), + payload: z.object({ + text: z.string().optional(), + images: z.array(z.string()).optional(), + }), + timestamp: z.number(), + }), + z.object({ + type: z.literal(TaskBridgeCommandName.DenyAsk), + taskId: z.string(), + payload: z.object({ + text: z.string().optional(), + images: z.array(z.string()).optional(), + }), + timestamp: z.number(), + }), +]) + +export type TaskBridgeCommand = z.infer + +/** + * ExtensionSocketEvents + */ + +export const ExtensionSocketEvents = { + CONNECTED: "extension:connected", + + REGISTER: "extension:register", + UNREGISTER: "extension:unregister", + + HEARTBEAT: "extension:heartbeat", + + EVENT: "extension:event", // event from extension instance + RELAYED_EVENT: "extension:relayed_event", // relay from server + + COMMAND: "extension:command", // command from user + RELAYED_COMMAND: "extension:relayed_command", // relay from server +} as const + +/** + * TaskSocketEvents + */ + +export const TaskSocketEvents = { + JOIN: "task:join", + LEAVE: "task:leave", + + EVENT: "task:event", // event from extension task + RELAYED_EVENT: "task:relayed_event", // relay from server + + COMMAND: "task:command", // command from user + RELAYED_COMMAND: "task:relayed_command", // relay from server +} as const diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index b151067d1d4e..38b8c750f7bf 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,4 +1,5 @@ export * from "./api.js" +export * from "./cloud.js" export * from "./codebase-index.js" export * from "./events.js" export * from "./experiment.js" diff --git a/packages/types/src/providers/__tests__/claude-code.spec.ts b/packages/types/src/providers/__tests__/claude-code.spec.ts index 8f997068f2a8..a73912d44ac1 100644 --- a/packages/types/src/providers/__tests__/claude-code.spec.ts +++ b/packages/types/src/providers/__tests__/claude-code.spec.ts @@ -1,4 +1,3 @@ -import { describe, test, expect } from "vitest" import { convertModelNameForVertex, getClaudeCodeModelId } from "../claude-code.js" describe("convertModelNameForVertex", () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e012472905a..f9ccd8512add 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,8 +71,8 @@ importers: specifier: ^4.19.3 version: 4.19.4 turbo: - specifier: ^2.5.3 - version: 2.5.4 + specifier: ^2.5.6 + version: 2.5.6 typescript: specifier: ^5.4.5 version: 5.8.3 @@ -285,8 +285,8 @@ importers: specifier: ^8.6.0 version: 8.6.0(react@18.3.1) framer-motion: - specifier: ^12.15.0 - version: 12.16.0(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 12.15.0 + version: 12.15.0(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lucide-react: specifier: ^0.518.0 version: 0.518.0(react@18.3.1) @@ -371,6 +371,46 @@ importers: specifier: ^3.2.3 version: 3.2.4(@types/debug@4.1.12)(@types/node@20.17.57)(@vitest/ui@3.2.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) + packages/cloud: + dependencies: + '@roo-code/types': + specifier: workspace:^ + version: link:../types + ioredis: + specifier: ^5.6.1 + version: 5.6.1 + jwt-decode: + specifier: ^4.0.0 + version: 4.0.0 + p-wait-for: + specifier: ^5.0.2 + version: 5.0.2 + socket.io-client: + specifier: ^4.8.1 + version: 4.8.1 + zod: + specifier: ^3.25.76 + version: 3.25.76 + devDependencies: + '@roo-code/config-eslint': + specifier: workspace:^ + version: link:../config-eslint + '@roo-code/config-typescript': + specifier: workspace:^ + version: link:../config-typescript + '@types/node': + specifier: ^24.1.0 + version: 24.2.1 + '@types/vscode': + specifier: ^1.102.0 + version: 1.103.0 + globals: + specifier: ^16.3.0 + version: 16.3.0 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(@vitest/ui@3.2.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) + packages/config-eslint: devDependencies: '@eslint/js': @@ -396,7 +436,7 @@ importers: 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.4) + version: 2.5.3(eslint@9.27.0(jiti@2.4.2))(turbo@2.5.6) globals: specifier: ^16.0.0 version: 16.1.0 @@ -578,14 +618,14 @@ importers: specifier: ^1.9.18 version: 1.9.18(zod@3.25.61) '@modelcontextprotocol/sdk': - specifier: ^1.9.0 + specifier: 1.12.0 version: 1.12.0 '@qdrant/js-client-rest': specifier: ^1.14.0 version: 1.14.0(typescript@5.8.3) '@roo-code/cloud': - specifier: ^0.29.0 - version: 0.29.0 + specifier: workspace:^ + version: link:../packages/cloud '@roo-code/ipc': specifier: workspace:^ version: link:../packages/ipc @@ -595,9 +635,6 @@ importers: '@roo-code/types': specifier: workspace:^ version: link:../packages/types - '@types/lodash.debounce': - specifier: ^4.0.9 - version: 4.0.9 '@vscode/codicons': specifier: ^0.0.36 version: 0.0.36 @@ -803,6 +840,9 @@ importers: '@types/glob': specifier: ^8.1.0 version: 8.1.0 + '@types/lodash.debounce': + specifier: ^4.0.9 + version: 4.0.9 '@types/mocha': specifier: ^10.0.10 version: 10.0.10 @@ -3346,12 +3386,6 @@ packages: cpu: [x64] os: [win32] - '@roo-code/cloud@0.29.0': - resolution: {integrity: sha512-fXN0mdkd5GezpVrCspe6atUkwvSk5D4wF80g+lc8E3aPVqEAozoI97kHNulRChGlBw7UIdd5xxbr1Z8Jtn+S/Q==} - - '@roo-code/types@1.63.0': - resolution: {integrity: sha512-pX8ftkDq1CySBbkUTIW9/QEG52ttFT/kl0ID286l0L3W22wpGRUct6PCedNI9kLDM4s5sxaUeZx7b3rUChikkw==} - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -4225,6 +4259,9 @@ packages: '@types/vscode@1.100.0': resolution: {integrity: sha512-4uNyvzHoraXEeCamR3+fzcBlh7Afs4Ifjs4epINyUX/jvdk0uzLnwiDY35UKDKnkCHP5Nu3dljl2H8lR6s+rQw==} + '@types/vscode@1.103.0': + resolution: {integrity: sha512-o4hanZAQdNfsKecexq9L3eHICd0AAvdbLk6hA60UzGXbGH/q8b/9xv2RgR7vV3ZcHuyKVq7b37IGd/+gM4Tu+Q==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -6129,8 +6166,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@12.16.0: - resolution: {integrity: sha512-xryrmD4jSBQrS2IkMdcTmiS4aSKckbS7kLDCuhUn9110SQKG1w3zlq1RTqCblewg+ZYe+m3sdtzQA6cRwo5g8Q==} + framer-motion@12.15.0: + resolution: {integrity: sha512-XKg/LnKExdLGugZrDILV7jZjI599785lDIJZLxMiiIFidCsy0a4R2ZEf+Izm67zyOuJgQYTHOmodi7igQsw3vg==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -9470,38 +9507,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.5.4: - resolution: {integrity: sha512-ah6YnH2dErojhFooxEzmvsoZQTMImaruZhFPfMKPBq8sb+hALRdvBNLqfc8NWlZq576FkfRZ/MSi4SHvVFT9PQ==} + turbo-darwin-64@2.5.6: + resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.4: - resolution: {integrity: sha512-2+Nx6LAyuXw2MdXb7pxqle3MYignLvS7OwtsP9SgtSBaMlnNlxl9BovzqdYAgkUW3AsYiQMJ/wBRb7d+xemM5A==} + turbo-darwin-arm64@2.5.6: + resolution: {integrity: sha512-LyiG+rD7JhMfYwLqB6k3LZQtYn8CQQUePbpA8mF/hMLPAekXdJo1g0bUPw8RZLwQXUIU/3BU7tXENvhSGz5DPA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.4: - resolution: {integrity: sha512-5May2kjWbc8w4XxswGAl74GZ5eM4Gr6IiroqdLhXeXyfvWEdm2mFYCSWOzz0/z5cAgqyGidF1jt1qzUR8hTmOA==} + turbo-linux-64@2.5.6: + resolution: {integrity: sha512-GOcUTT0xiT/pSnHL4YD6Yr3HreUhU8pUcGqcI2ksIF9b2/r/kRHwGFcsHgpG3+vtZF/kwsP0MV8FTlTObxsYIA==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.4: - resolution: {integrity: sha512-/2yqFaS3TbfxV3P5yG2JUI79P7OUQKOUvAnx4MV9Bdz6jqHsHwc9WZPpO4QseQm+NvmgY6ICORnoVPODxGUiJg==} + turbo-linux-arm64@2.5.6: + resolution: {integrity: sha512-10Tm15bruJEA3m0V7iZcnQBpObGBcOgUcO+sY7/2vk1bweW34LMhkWi8svjV9iDF68+KJDThnYDlYE/bc7/zzQ==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.4: - resolution: {integrity: sha512-EQUO4SmaCDhO6zYohxIjJpOKRN3wlfU7jMAj3CgcyTPvQR/UFLEKAYHqJOnJtymbQmiiM/ihX6c6W6Uq0yC7mA==} + turbo-windows-64@2.5.6: + resolution: {integrity: sha512-FyRsVpgaj76It0ludwZsNN40ytHN+17E4PFJyeliBEbxrGTc5BexlXVpufB7XlAaoaZVxbS6KT8RofLfDRyEPg==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.4: - resolution: {integrity: sha512-oQ8RrK1VS8lrxkLriotFq+PiF7iiGgkZtfLKF4DDKsmdbPo0O9R2mQxm7jHLuXraRCuIQDWMIw6dpcr7Iykf4A==} + turbo-windows-arm64@2.5.6: + resolution: {integrity: sha512-j/tWu8cMeQ7HPpKri6jvKtyXg9K1gRyhdK4tKrrchH8GNHscPX/F71zax58yYtLRWTiK04zNzPcUJuoS0+v/+Q==} cpu: [arm64] os: [win32] - turbo@2.5.4: - resolution: {integrity: sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==} + turbo@2.5.6: + resolution: {integrity: sha512-gxToHmi9oTBNB05UjUsrWf0OyN5ZXtD0apOarC1KIx232Vp3WimRNy3810QzeNSgyD5rsaIDXlxlbnOzlouo+w==} hasBin: true turndown@7.2.0: @@ -11424,8 +11461,8 @@ snapshots: '@modelcontextprotocol/sdk': 1.12.0 google-auth-library: 9.15.1 ws: 8.18.2 - zod: 3.25.61 - zod-to-json-schema: 3.24.5(zod@3.25.61) + zod: 3.25.76 + zod-to-json-schema: 3.24.5(zod@3.25.76) transitivePeerDependencies: - bufferutil - encoding @@ -11684,8 +11721,8 @@ snapshots: '@lmstudio/lms-isomorphic': 0.4.5 chalk: 4.1.2 jsonschema: 1.5.0 - zod: 3.25.61 - zod-to-json-schema: 3.24.5(zod@3.25.61) + zod: 3.25.76 + zod-to-json-schema: 3.24.5(zod@3.25.76) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11751,8 +11788,8 @@ snapshots: express-rate-limit: 7.5.0(express@5.1.0) pkce-challenge: 5.0.0 raw-body: 3.0.0 - zod: 3.25.61 - zod-to-json-schema: 3.24.5(zod@3.25.61) + zod: 3.25.76 + zod-to-json-schema: 3.24.5(zod@3.25.76) transitivePeerDependencies: - supports-color @@ -12732,23 +12769,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true - '@roo-code/cloud@0.29.0': - dependencies: - '@roo-code/types': 1.63.0 - ioredis: 5.6.1 - jwt-decode: 4.0.0 - p-wait-for: 5.0.2 - socket.io-client: 4.8.1 - zod: 3.25.76 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@roo-code/types@1.63.0': - dependencies: - zod: 3.25.76 - '@sec-ant/readable-stream@0.4.1': {} '@sevinf/maybe@0.5.0': {} @@ -13799,6 +13819,8 @@ snapshots: '@types/vscode@1.100.0': {} + '@types/vscode@1.103.0': {} + '@types/ws@8.18.1': dependencies: '@types/node': 24.2.1 @@ -15551,11 +15573,11 @@ snapshots: 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.4): + eslint-plugin-turbo@2.5.3(eslint@9.27.0(jiti@2.4.2))(turbo@2.5.6): dependencies: dotenv: 16.0.3 eslint: 9.27.0(jiti@2.4.2) - turbo: 2.5.4 + turbo: 2.5.6 eslint-scope@8.3.0: dependencies: @@ -16026,7 +16048,7 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@12.16.0(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@12.15.0(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: motion-dom: 12.16.0 motion-utils: 12.12.1 @@ -19977,32 +19999,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.5.4: + turbo-darwin-64@2.5.6: optional: true - turbo-darwin-arm64@2.5.4: + turbo-darwin-arm64@2.5.6: optional: true - turbo-linux-64@2.5.4: + turbo-linux-64@2.5.6: optional: true - turbo-linux-arm64@2.5.4: + turbo-linux-arm64@2.5.6: optional: true - turbo-windows-64@2.5.4: + turbo-windows-64@2.5.6: optional: true - turbo-windows-arm64@2.5.4: + turbo-windows-arm64@2.5.6: optional: true - turbo@2.5.4: + turbo@2.5.6: optionalDependencies: - turbo-darwin-64: 2.5.4 - turbo-darwin-arm64: 2.5.4 - turbo-linux-64: 2.5.4 - turbo-linux-arm64: 2.5.4 - turbo-windows-64: 2.5.4 - turbo-windows-arm64: 2.5.4 + turbo-darwin-64: 2.5.6 + turbo-darwin-arm64: 2.5.6 + turbo-linux-64: 2.5.6 + turbo-linux-arm64: 2.5.6 + turbo-windows-64: 2.5.6 + turbo-windows-arm64: 2.5.6 turndown@7.2.0: dependencies: @@ -20836,6 +20858,10 @@ snapshots: dependencies: zod: 3.25.61 + zod-to-json-schema@3.24.5(zod@3.25.76): + dependencies: + zod: 3.25.76 + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.61): dependencies: typescript: 5.8.3 diff --git a/scripts/link-packages.ts b/scripts/link-packages.ts deleted file mode 100644 index 97aeebd6b508..000000000000 --- a/scripts/link-packages.ts +++ /dev/null @@ -1,340 +0,0 @@ -import { spawn, execSync, type ChildProcess } from "child_process" -import * as path from "path" -import * as fs from "fs" -import { fileURLToPath } from "url" -import { glob } from "glob" - -// @ts-expect-error - TS1470: We only run this script with tsx so it will never -// compile to CJS and it's safe to ignore this tsc error. -const __filename = fileURLToPath(import.meta.url) -const __dirname = path.dirname(__filename) - -interface PackageConfig { - readonly name: string - readonly sourcePath: string - readonly targetPaths: readonly string[] - readonly replacePath?: string - readonly npmPath: string - readonly watchCommand?: string - readonly watchOutput?: { - readonly start: string[] - readonly stop: string[] - } -} - -interface Config { - readonly packages: readonly PackageConfig[] -} - -interface WatcherResult { - child: ChildProcess -} - -interface NpmPackage { - name?: string - version?: string - type: "module" - dependencies: Record - main: string - module: string - types: string - exports: { - ".": { - types: string - import: string - require: { - types: string - default: string - } - } - } - files: string[] -} - -const config: Config = { - packages: [ - { - name: "@roo-code/cloud", - sourcePath: "../Roo-Code-Cloud/packages/sdk", - targetPaths: ["src/node_modules/@roo-code/cloud"] as const, - replacePath: "node_modules/.pnpm/@roo-code+cloud*", - npmPath: "npm", - watchCommand: "pnpm build:development:watch", - watchOutput: { - start: ["CLI Building", "CLI Change detected"], - stop: ["DTS ⚡️ Build success"], - }, - }, - ], -} as const - -const args = process.argv.slice(2) -const packageName = args.find((arg) => !arg.startsWith("--")) -const watchMode = !args.includes("--no-watch") -const unlink = args.includes("--unlink") - -const packages: readonly PackageConfig[] = packageName - ? config.packages.filter((p) => p.name === packageName) - : config.packages - -if (!packages.length) { - console.error(`Package '${packageName}' not found`) - process.exit(1) -} - -function pathExists(filePath: string): boolean { - try { - fs.accessSync(filePath) - return true - } catch { - return false - } -} - -function copyRecursiveSync(src: string, dest: string): void { - const exists = pathExists(src) - - if (!exists) { - return - } - - const stats = fs.statSync(src) - const isDirectory = stats.isDirectory() - - if (isDirectory) { - if (!pathExists(dest)) { - fs.mkdirSync(dest, { recursive: true }) - } - - const children = fs.readdirSync(src) - - children.forEach((childItemName) => { - copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName)) - }) - } else { - fs.copyFileSync(src, dest) - } -} - -function generateNpmPackageJson(sourcePath: string, npmPath: string): string { - const npmDir = path.join(sourcePath, npmPath) - const npmPackagePath = path.join(npmDir, "package.json") - const npmMetadataPath = path.join(npmDir, "package.metadata.json") - const monorepoPackagePath = path.join(sourcePath, "package.json") - - if (pathExists(npmPackagePath)) { - return npmPackagePath - } - - if (!pathExists(npmMetadataPath)) { - throw new Error(`No package.metadata.json found in ${npmDir}`) - } - - const monorepoPackageContent = fs.readFileSync(monorepoPackagePath, "utf8") - - const monorepoPackage = JSON.parse(monorepoPackageContent) as { - dependencies?: Record - } - - const npmMetadataContent = fs.readFileSync(npmMetadataPath, "utf8") - const npmMetadata = JSON.parse(npmMetadataContent) as Partial - - const npmPackage: NpmPackage = { - ...npmMetadata, - type: "module", - dependencies: monorepoPackage.dependencies || {}, - main: "./dist/index.cjs", - module: "./dist/index.js", - types: "./dist/index.d.ts", - exports: { - ".": { - types: "./dist/index.d.ts", - import: "./dist/index.js", - require: { - types: "./dist/index.d.cts", - default: "./dist/index.cjs", - }, - }, - }, - files: ["dist"], - } - - fs.writeFileSync(npmPackagePath, JSON.stringify(npmPackage, null, 2) + "\n") - - return npmPackagePath -} - -function linkPackage(pkg: PackageConfig): void { - const sourcePath = path.resolve(__dirname, "..", pkg.sourcePath) - - if (!pathExists(sourcePath)) { - console.error(`❌ Source not found: ${sourcePath}`) - process.exit(1) - } - - generateNpmPackageJson(sourcePath, pkg.npmPath) - - for (const currentTargetPath of pkg.targetPaths) { - const targetPath = path.resolve(__dirname, "..", currentTargetPath) - - if (pathExists(targetPath)) { - fs.rmSync(targetPath, { recursive: true, force: true }) - } - - const parentDir = path.dirname(targetPath) - fs.mkdirSync(parentDir, { recursive: true }) - - const linkSource = pkg.npmPath ? path.join(sourcePath, pkg.npmPath) : sourcePath - copyRecursiveSync(linkSource, targetPath) - } -} - -function unlinkPackage(pkg: PackageConfig): void { - for (const currentTargetPath of pkg.targetPaths) { - const targetPath = path.resolve(__dirname, "..", currentTargetPath) - - if (pathExists(targetPath)) { - fs.rmSync(targetPath, { recursive: true, force: true }) - console.log(`🗑️ Removed ${pkg.name} from ${currentTargetPath}`) - } - } -} - -function startWatch(pkg: PackageConfig): WatcherResult { - if (!pkg.watchCommand) { - throw new Error(`Package ${pkg.name} has no watch command configured`) - } - - const commandParts = pkg.watchCommand.split(" ") - const [cmd, ...args] = commandParts - - if (!cmd) { - throw new Error(`Invalid watch command for ${pkg.name}`) - } - - console.log(`👀 Watching for changes to ${pkg.sourcePath} with ${cmd} ${args.join(" ")}`) - - const child = spawn(cmd, args, { - cwd: path.resolve(__dirname, "..", pkg.sourcePath), - stdio: "pipe", - shell: true, - }) - - let debounceTimer: NodeJS.Timeout | null = null - - const DEBOUNCE_DELAY = 500 - - if (child.stdout) { - child.stdout.on("data", (data: Buffer) => { - const output = data.toString() - - const isStarting = pkg.watchOutput?.start.some((start) => output.includes(start)) - - const isDone = pkg.watchOutput?.stop.some((stop) => output.includes(stop)) - - if (isStarting) { - console.log(`🔨 Building ${pkg.name}...`) - - if (debounceTimer) { - clearTimeout(debounceTimer) - debounceTimer = null - } - } - - if (isDone) { - console.log(`✅ Built ${pkg.name}`) - - if (debounceTimer) { - clearTimeout(debounceTimer) - } - - debounceTimer = setTimeout(() => { - linkPackage(pkg) - - console.log(`♻️ Copied ${pkg.name} to ${pkg.targetPaths.length} paths\n`) - - debounceTimer = null - }, DEBOUNCE_DELAY) - } - }) - } - - if (child.stderr) { - child.stderr.on("data", (data: Buffer) => { - console.log(`❌ "${data.toString()}"`) - }) - } - - return { child } -} - -function main(): void { - if (unlink) { - packages.forEach(unlinkPackage) - - console.log("\n📦 Restoring npm packages...") - - try { - execSync("pnpm install", { cwd: __dirname, stdio: "ignore" }) - console.log("✅ npm packages restored") - } catch (error) { - console.error(`❌ Failed to restore packages: ${error instanceof Error ? error.message : String(error)}`) - - console.log(" Run 'pnpm install' manually if needed") - } - } else { - packages.forEach((pkg) => { - linkPackage(pkg) - - if (pkg.replacePath) { - const replacePattern = path.resolve(__dirname, "..", pkg.replacePath) - - try { - const matchedPaths = glob.sync(replacePattern) - - if (matchedPaths.length > 0) { - matchedPaths.forEach((matchedPath: string) => { - if (pathExists(matchedPath)) { - fs.rmSync(matchedPath, { recursive: true, force: true }) - console.log(`🗑️ Removed ${pkg.name} from ${matchedPath}`) - } - }) - } else { - if (pathExists(replacePattern)) { - fs.rmSync(replacePattern, { recursive: true, force: true }) - console.log(`🗑️ Removed ${pkg.name} from ${replacePattern}`) - } - } - } catch (error) { - console.error( - `❌ Error processing replace path: ${error instanceof Error ? error.message : String(error)}`, - ) - } - } - }) - - if (watchMode) { - const packagesWithWatch = packages.filter( - (pkg): pkg is PackageConfig & { watchCommand: string } => pkg.watchCommand !== undefined, - ) - - const watchers = packagesWithWatch.map(startWatch) - - if (watchers.length > 0) { - process.on("SIGINT", () => { - console.log("\n👋 Stopping watchers...") - - watchers.forEach((w) => { - if (w.child) { - w.child.kill() - } - }) - - process.exit(0) - }) - } - } - } -} - -main() diff --git a/src/__tests__/command-integration.spec.ts b/src/__tests__/command-integration.spec.ts index 66621dbb3a4f..59427415f73d 100644 --- a/src/__tests__/command-integration.spec.ts +++ b/src/__tests__/command-integration.spec.ts @@ -1,7 +1,7 @@ -import { describe, it, expect } from "vitest" -import { getCommands, getCommand, getCommandNames } from "../services/command/commands" import * as path from "path" +import { getCommands, getCommand, getCommandNames } from "../services/command/commands" + describe("Command Integration Tests", () => { const testWorkspaceDir = path.join(__dirname, "../../") diff --git a/src/__tests__/command-mentions.spec.ts b/src/__tests__/command-mentions.spec.ts index cb55eb84e7ba..7ddaf3d09281 100644 --- a/src/__tests__/command-mentions.spec.ts +++ b/src/__tests__/command-mentions.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect, beforeEach, vi } from "vitest" import { parseMentions } from "../core/mentions" import { UrlContentFetcher } from "../services/browser/UrlContentFetcher" import { getCommand } from "../services/command/commands" diff --git a/src/__tests__/commands.spec.ts b/src/__tests__/commands.spec.ts index 940105006234..e3d9e81c2302 100644 --- a/src/__tests__/commands.spec.ts +++ b/src/__tests__/commands.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { getCommands, getCommand, diff --git a/src/api/providers/__tests__/bedrock-error-handling.spec.ts b/src/api/providers/__tests__/bedrock-error-handling.spec.ts index 53e582c25bf3..4f9328c2f6bc 100644 --- a/src/api/providers/__tests__/bedrock-error-handling.spec.ts +++ b/src/api/providers/__tests__/bedrock-error-handling.spec.ts @@ -1,5 +1,3 @@ -import { vi } from "vitest" - // Mock BedrockRuntimeClient and commands const mockSend = vi.fn() diff --git a/src/api/providers/__tests__/cerebras.spec.ts b/src/api/providers/__tests__/cerebras.spec.ts index 2b7668435f0d..ff4d50e6417c 100644 --- a/src/api/providers/__tests__/cerebras.spec.ts +++ b/src/api/providers/__tests__/cerebras.spec.ts @@ -1,5 +1,3 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" - // Mock i18n vi.mock("../../i18n", () => ({ t: vi.fn((key: string, params?: Record) => { diff --git a/src/api/providers/__tests__/claude-code-caching.spec.ts b/src/api/providers/__tests__/claude-code-caching.spec.ts index b7f7ff852a38..96b19964fcd1 100644 --- a/src/api/providers/__tests__/claude-code-caching.spec.ts +++ b/src/api/providers/__tests__/claude-code-caching.spec.ts @@ -1,10 +1,10 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" +import type { Anthropic } from "@anthropic-ai/sdk" + import { ClaudeCodeHandler } from "../claude-code" import { runClaudeCode } from "../../../integrations/claude-code/run" import type { ApiHandlerOptions } from "../../../shared/api" import type { ClaudeCodeMessage } from "../../../integrations/claude-code/types" import type { ApiStreamUsageChunk } from "../../transform/stream" -import type { Anthropic } from "@anthropic-ai/sdk" // Mock the runClaudeCode function vi.mock("../../../integrations/claude-code/run", () => ({ diff --git a/src/api/providers/__tests__/claude-code.spec.ts b/src/api/providers/__tests__/claude-code.spec.ts index af1bf809c43a..8d154d794f26 100644 --- a/src/api/providers/__tests__/claude-code.spec.ts +++ b/src/api/providers/__tests__/claude-code.spec.ts @@ -1,4 +1,3 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" import { ClaudeCodeHandler } from "../claude-code" import { ApiHandlerOptions } from "../../../shared/api" import { ClaudeCodeMessage } from "../../../integrations/claude-code/types" diff --git a/src/api/providers/__tests__/constants.spec.ts b/src/api/providers/__tests__/constants.spec.ts index 8a04416d72b4..ba28b44e6834 100644 --- a/src/api/providers/__tests__/constants.spec.ts +++ b/src/api/providers/__tests__/constants.spec.ts @@ -1,6 +1,5 @@ // npx vitest run src/api/providers/__tests__/constants.spec.ts -import { describe, it, expect } from "vitest" import { DEFAULT_HEADERS } from "../constants" import { Package } from "../../../shared/package" diff --git a/src/api/providers/__tests__/gemini-handler.spec.ts b/src/api/providers/__tests__/gemini-handler.spec.ts index 7c61639cfd6f..97c40fe67cb3 100644 --- a/src/api/providers/__tests__/gemini-handler.spec.ts +++ b/src/api/providers/__tests__/gemini-handler.spec.ts @@ -1,5 +1,5 @@ -import { describe, it, expect, vi } from "vitest" import { t } from "i18next" + import { GeminiHandler } from "../gemini" import type { ApiHandlerOptions } from "../../../shared/api" diff --git a/src/api/providers/__tests__/io-intelligence.spec.ts b/src/api/providers/__tests__/io-intelligence.spec.ts index 56baf711cdbf..3b46b79ee25f 100644 --- a/src/api/providers/__tests__/io-intelligence.spec.ts +++ b/src/api/providers/__tests__/io-intelligence.spec.ts @@ -1,7 +1,7 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" +import { Anthropic } from "@anthropic-ai/sdk" + import { IOIntelligenceHandler } from "../io-intelligence" import type { ApiHandlerOptions } from "../../../shared/api" -import { Anthropic } from "@anthropic-ai/sdk" const mockCreate = vi.fn() diff --git a/src/api/providers/__tests__/lite-llm.spec.ts b/src/api/providers/__tests__/lite-llm.spec.ts index 26ebbc35258a..88fa2d313c5c 100644 --- a/src/api/providers/__tests__/lite-llm.spec.ts +++ b/src/api/providers/__tests__/lite-llm.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" import OpenAI from "openai" import { Anthropic } from "@anthropic-ai/sdk" diff --git a/src/api/providers/__tests__/roo.spec.ts b/src/api/providers/__tests__/roo.spec.ts index 3b99b6576102..5509c51e0284 100644 --- a/src/api/providers/__tests__/roo.spec.ts +++ b/src/api/providers/__tests__/roo.spec.ts @@ -100,7 +100,6 @@ vitest.mock("../../../i18n", () => ({ // Import after mocks are set up import { RooHandler } from "../roo" import { CloudService } from "@roo-code/cloud" -import { t } from "../../../i18n" describe("RooHandler", () => { let handler: RooHandler diff --git a/src/api/providers/fetchers/__tests__/lmstudio.test.ts b/src/api/providers/fetchers/__tests__/lmstudio.test.ts index 8e7e36c73f9f..286ec41d6764 100644 --- a/src/api/providers/fetchers/__tests__/lmstudio.test.ts +++ b/src/api/providers/fetchers/__tests__/lmstudio.test.ts @@ -1,8 +1,9 @@ import axios from "axios" -import { vi, describe, it, expect, beforeEach } from "vitest" -import { LMStudioClient, LLM, LLMInstanceInfo, LLMInfo } from "@lmstudio/sdk" +import { LMStudioClient, LLMInstanceInfo, LLMInfo } from "@lmstudio/sdk" + +import { ModelInfo, lMStudioDefaultModelInfo } from "@roo-code/types" + import { getLMStudioModels, parseLMStudioModel } from "../lmstudio" -import { ModelInfo, lMStudioDefaultModelInfo } from "@roo-code/types" // ModelInfo is a type // Mock axios vi.mock("axios") diff --git a/src/api/providers/fetchers/__tests__/ollama.test.ts b/src/api/providers/fetchers/__tests__/ollama.test.ts index bf1bf3c6b2e6..5eb7c7686656 100644 --- a/src/api/providers/fetchers/__tests__/ollama.test.ts +++ b/src/api/providers/fetchers/__tests__/ollama.test.ts @@ -1,6 +1,5 @@ import axios from "axios" -import path from "path" -import { vi, describe, it, expect, beforeEach } from "vitest" + import { getOllamaModels, parseOllamaModel } from "../ollama" import ollamaModelsData from "./fixtures/ollama-model-details.json" diff --git a/src/api/providers/roo.ts b/src/api/providers/roo.ts index ed5cb85f87bd..44b016086276 100644 --- a/src/api/providers/roo.ts +++ b/src/api/providers/roo.ts @@ -1,4 +1,5 @@ import { Anthropic } from "@anthropic-ai/sdk" + import { rooDefaultModelId, rooModels, type RooModelId } from "@roo-code/types" import { CloudService } from "@roo-code/cloud" diff --git a/src/core/assistant-message/__tests__/AssistantMessageParser.spec.ts b/src/core/assistant-message/__tests__/AssistantMessageParser.spec.ts index 828bf9ed22bd..6b7c3915ee7e 100644 --- a/src/core/assistant-message/__tests__/AssistantMessageParser.spec.ts +++ b/src/core/assistant-message/__tests__/AssistantMessageParser.spec.ts @@ -1,10 +1,8 @@ // npx vitest src/core/assistant-message/__tests__/AssistantMessageParser.spec.ts -import { describe, it, expect, beforeEach } from "vitest" import { AssistantMessageParser } from "../AssistantMessageParser" import { AssistantMessageContent } from "../parseAssistantMessage" import { TextContent, ToolUse } from "../../../shared/tools" -import { toolNames } from "@roo-code/types" /** * Helper to filter out empty text content blocks. diff --git a/src/core/context/context-management/__tests__/context-error-handling.test.ts b/src/core/context/context-management/__tests__/context-error-handling.test.ts index 5d2321f0aad9..d26ac837f089 100644 --- a/src/core/context/context-management/__tests__/context-error-handling.test.ts +++ b/src/core/context/context-management/__tests__/context-error-handling.test.ts @@ -1,5 +1,5 @@ -import { describe, it, expect, vi } from "vitest" import { APIError } from "openai" + import { checkContextWindowExceededError } from "../context-error-handling" describe("checkContextWindowExceededError", () => { diff --git a/src/core/mentions/__tests__/index.spec.ts b/src/core/mentions/__tests__/index.spec.ts index e65dbb44e0a8..2cb24b4502e0 100644 --- a/src/core/mentions/__tests__/index.spec.ts +++ b/src/core/mentions/__tests__/index.spec.ts @@ -1,10 +1,9 @@ // npx vitest core/mentions/__tests__/index.spec.ts -import { describe, it, expect, vi, beforeEach } from "vitest" import * as vscode from "vscode" + import { parseMentions } from "../index" import { UrlContentFetcher } from "../../../services/browser/UrlContentFetcher" -import { t } from "../../../i18n" // Mock vscode vi.mock("vscode", () => ({ diff --git a/src/core/mentions/__tests__/processUserContentMentions.spec.ts b/src/core/mentions/__tests__/processUserContentMentions.spec.ts index 36bea7e0bc13..13c225042d75 100644 --- a/src/core/mentions/__tests__/processUserContentMentions.spec.ts +++ b/src/core/mentions/__tests__/processUserContentMentions.spec.ts @@ -1,6 +1,5 @@ // npx vitest core/mentions/__tests__/processUserContentMentions.spec.ts -import { describe, it, expect, vi, beforeEach } from "vitest" import { processUserContentMentions } from "../processUserContentMentions" import { parseMentions } from "../index" import { UrlContentFetcher } from "../../../services/browser/UrlContentFetcher" diff --git a/src/core/prompts/__tests__/get-prompt-component.spec.ts b/src/core/prompts/__tests__/get-prompt-component.spec.ts index 7c4229b9c634..814270f9dbc2 100644 --- a/src/core/prompts/__tests__/get-prompt-component.spec.ts +++ b/src/core/prompts/__tests__/get-prompt-component.spec.ts @@ -1,7 +1,7 @@ -import { describe, it, expect } from "vitest" -import { getPromptComponent } from "../system" import type { CustomModePrompts } from "@roo-code/types" +import { getPromptComponent } from "../system" + describe("getPromptComponent", () => { it("should return undefined for empty objects", () => { const customModePrompts: CustomModePrompts = { diff --git a/src/core/prompts/sections/__tests__/custom-instructions-global.spec.ts b/src/core/prompts/sections/__tests__/custom-instructions-global.spec.ts index 269dd554ea58..7e13096a9d41 100644 --- a/src/core/prompts/sections/__tests__/custom-instructions-global.spec.ts +++ b/src/core/prompts/sections/__tests__/custom-instructions-global.spec.ts @@ -1,5 +1,4 @@ import * as path from "path" -import { describe, it, expect, beforeEach, afterEach, vi } from "vitest" // Use vi.hoisted to ensure mocks are available during hoisting const { mockHomedir, mockStat, mockReadFile, mockReaddir, mockGetRooDirectoriesForCwd, mockGetGlobalRooDirectory } = diff --git a/src/core/prompts/sections/__tests__/custom-instructions-path-detection.spec.ts b/src/core/prompts/sections/__tests__/custom-instructions-path-detection.spec.ts index 53272a112bc4..bced3a767ef1 100644 --- a/src/core/prompts/sections/__tests__/custom-instructions-path-detection.spec.ts +++ b/src/core/prompts/sections/__tests__/custom-instructions-path-detection.spec.ts @@ -1,5 +1,3 @@ -import { describe, it, expect, vi } from "vitest" -import * as os from "os" import * as path from "path" describe("custom-instructions path detection", () => { diff --git a/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts b/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts index 29e7f0fca269..ef01f132f508 100644 --- a/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts +++ b/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { getFetchInstructionsDescription } from "../fetch-instructions" describe("getFetchInstructionsDescription", () => { diff --git a/src/core/prompts/tools/__tests__/new-task.spec.ts b/src/core/prompts/tools/__tests__/new-task.spec.ts index 94dfaf1d79e5..c110cffcd1be 100644 --- a/src/core/prompts/tools/__tests__/new-task.spec.ts +++ b/src/core/prompts/tools/__tests__/new-task.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { getNewTaskDescription } from "../new-task" import { ToolArgs } from "../types" diff --git a/src/core/task/__tests__/AutoApprovalHandler.spec.ts b/src/core/task/__tests__/AutoApprovalHandler.spec.ts index e200948a33df..4d91b1f77d6e 100644 --- a/src/core/task/__tests__/AutoApprovalHandler.spec.ts +++ b/src/core/task/__tests__/AutoApprovalHandler.spec.ts @@ -1,7 +1,7 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" -import { AutoApprovalHandler } from "../AutoApprovalHandler" import { GlobalState, ClineMessage } from "@roo-code/types" +import { AutoApprovalHandler } from "../AutoApprovalHandler" + // Mock getApiMetrics vi.mock("../../../shared/getApiMetrics", () => ({ getApiMetrics: vi.fn(), diff --git a/src/core/task/__tests__/Task.dispose.test.ts b/src/core/task/__tests__/Task.dispose.test.ts index 1d93d148a4b8..9e793fd8d83b 100644 --- a/src/core/task/__tests__/Task.dispose.test.ts +++ b/src/core/task/__tests__/Task.dispose.test.ts @@ -1,7 +1,7 @@ +import { ProviderSettings } from "@roo-code/types" + import { Task } from "../Task" import { ClineProvider } from "../../webview/ClineProvider" -import { ProviderSettings } from "@roo-code/types" -import { vi, describe, test, expect, beforeEach, afterEach } from "vitest" // Mock dependencies vi.mock("../../webview/ClineProvider") diff --git a/src/core/tools/__tests__/askFollowupQuestionTool.spec.ts b/src/core/tools/__tests__/askFollowupQuestionTool.spec.ts index fbb9ef9eb3b6..6bddddcdf13f 100644 --- a/src/core/tools/__tests__/askFollowupQuestionTool.spec.ts +++ b/src/core/tools/__tests__/askFollowupQuestionTool.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect, vi } from "vitest" import { askFollowupQuestionTool } from "../askFollowupQuestionTool" import { ToolUse } from "../../../shared/tools" diff --git a/src/core/tools/__tests__/attemptCompletionTool.spec.ts b/src/core/tools/__tests__/attemptCompletionTool.spec.ts index b39c1acac62d..fcad4d5f4925 100644 --- a/src/core/tools/__tests__/attemptCompletionTool.spec.ts +++ b/src/core/tools/__tests__/attemptCompletionTool.spec.ts @@ -1,5 +1,5 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" import { TodoItem } from "@roo-code/types" + import { AttemptCompletionToolUse } from "../../../shared/tools" // Mock the formatResponse module before importing the tool diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 9e4434745f6b..0c26858b613d 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -29,16 +29,17 @@ import { type TerminalActionId, type TerminalActionPromptType, type HistoryItem, - type ClineAsk, + type CloudUserInfo, RooCodeEventName, requestyDefaultModelId, openRouterDefaultModelId, glamaDefaultModelId, DEFAULT_TERMINAL_OUTPUT_CHARACTER_LIMIT, DEFAULT_WRITE_DELAY_MS, + ORGANIZATION_ALLOW_ALL, } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" -import { type CloudUserInfo, CloudService, ORGANIZATION_ALLOW_ALL, getRooCodeApiUrl } from "@roo-code/cloud" +import { CloudService, getRooCodeApiUrl } from "@roo-code/cloud" import { Package } from "../../shared/package" import { findLast } from "../../shared/array" diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index d61dd6b7052e..e5e7e85da5cf 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -4,9 +4,8 @@ import Anthropic from "@anthropic-ai/sdk" import * as vscode from "vscode" import axios from "axios" -import { type ProviderSettingsEntry, type ClineMessage } from "@roo-code/types" +import { type ProviderSettingsEntry, type ClineMessage, ORGANIZATION_ALLOW_ALL } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" -import { ORGANIZATION_ALLOW_ALL } from "@roo-code/cloud" import { ExtensionMessage, ExtensionState } from "../../../shared/ExtensionMessage" import { defaultModeSlug } from "../../../shared/modes" diff --git a/src/core/webview/__tests__/messageEnhancer.test.ts b/src/core/webview/__tests__/messageEnhancer.test.ts index f6f6b44e1d78..bc624821da85 100644 --- a/src/core/webview/__tests__/messageEnhancer.test.ts +++ b/src/core/webview/__tests__/messageEnhancer.test.ts @@ -1,7 +1,7 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" -import { MessageEnhancer } from "../messageEnhancer" import { ProviderSettings, ClineMessage } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" + +import { MessageEnhancer } from "../messageEnhancer" import * as singleCompletionHandlerModule from "../../../utils/single-completion-handler" import { ProviderSettingsManager } from "../../config/ProviderSettingsManager" diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index a6a7e7022aea..6bf1320ccf05 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -14,6 +14,7 @@ import { } from "@roo-code/types" import { CloudService } from "@roo-code/cloud" import { TelemetryService } from "@roo-code/telemetry" + import { type ApiMessage } from "../task-persistence/apiMessages" import { ClineProvider } from "./ClineProvider" diff --git a/src/extension.ts b/src/extension.ts index f1f413ec3617..6060bb341f59 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -12,7 +12,8 @@ try { console.warn("Failed to load environment variables:", e) } -import { CloudService, ExtensionBridgeService, type CloudUserInfo } from "@roo-code/cloud" +import type { CloudUserInfo } from "@roo-code/types" +import { CloudService, ExtensionBridgeService } from "@roo-code/cloud" import { TelemetryService, PostHogTelemetryClient } from "@roo-code/telemetry" import "./utils/path" // Necessary to have access to String.prototype.toPosix. diff --git a/src/integrations/claude-code/__tests__/message-filter.spec.ts b/src/integrations/claude-code/__tests__/message-filter.spec.ts index 25f4948cb3b0..a2fc701f4185 100644 --- a/src/integrations/claude-code/__tests__/message-filter.spec.ts +++ b/src/integrations/claude-code/__tests__/message-filter.spec.ts @@ -1,7 +1,7 @@ -import { describe, test, expect } from "vitest" -import { filterMessagesForClaudeCode } from "../message-filter" import type { Anthropic } from "@anthropic-ai/sdk" +import { filterMessagesForClaudeCode } from "../message-filter" + describe("filterMessagesForClaudeCode", () => { test("should pass through string messages unchanged", () => { const messages: Anthropic.Messages.MessageParam[] = [ diff --git a/src/integrations/claude-code/__tests__/run.spec.ts b/src/integrations/claude-code/__tests__/run.spec.ts index fa5aedcd362b..a07120c28ae1 100644 --- a/src/integrations/claude-code/__tests__/run.spec.ts +++ b/src/integrations/claude-code/__tests__/run.spec.ts @@ -1,5 +1,3 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" - // Mock i18n system vi.mock("../../i18n", () => ({ t: vi.fn((key: string, options?: Record) => { diff --git a/src/integrations/misc/__tests__/extract-text-large-files.spec.ts b/src/integrations/misc/__tests__/extract-text-large-files.spec.ts index fc2f7f54b6bf..c9e2f181f5ae 100644 --- a/src/integrations/misc/__tests__/extract-text-large-files.spec.ts +++ b/src/integrations/misc/__tests__/extract-text-large-files.spec.ts @@ -1,7 +1,7 @@ // npx vitest run integrations/misc/__tests__/extract-text-large-files.spec.ts -import { describe, it, expect, vi, beforeEach, Mock } from "vitest" import * as fs from "fs/promises" + import { extractTextFromFile } from "../extract-text" import { countFileLines } from "../line-counter" import { readLines } from "../read-lines" diff --git a/src/integrations/misc/__tests__/open-file.spec.ts b/src/integrations/misc/__tests__/open-file.spec.ts index e8f9be259dbc..f6f47e639dc3 100644 --- a/src/integrations/misc/__tests__/open-file.spec.ts +++ b/src/integrations/misc/__tests__/open-file.spec.ts @@ -1,7 +1,5 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" import * as vscode from "vscode" -import * as path from "path" -import * as os from "os" + import { openFile } from "../open-file" // Mock vscode module diff --git a/src/package.json b/src/package.json index 21bf9513bd0c..fb236d515ef6 100644 --- a/src/package.json +++ b/src/package.json @@ -427,13 +427,12 @@ "@google/genai": "^1.0.0", "@lmstudio/sdk": "^1.1.1", "@mistralai/mistralai": "^1.9.18", - "@modelcontextprotocol/sdk": "^1.9.0", + "@modelcontextprotocol/sdk": "1.12.0", "@qdrant/js-client-rest": "^1.14.0", - "@roo-code/cloud": "^0.29.0", + "@roo-code/cloud": "workspace:^", "@roo-code/ipc": "workspace:^", "@roo-code/telemetry": "workspace:^", "@roo-code/types": "workspace:^", - "@types/lodash.debounce": "^4.0.9", "@vscode/codicons": "^0.0.36", "async-mutex": "^0.5.0", "axios": "^1.7.4", @@ -504,6 +503,7 @@ "@types/diff": "^5.2.1", "@types/diff-match-patch": "^1.0.36", "@types/glob": "^8.1.0", + "@types/lodash.debounce": "^4.0.9", "@types/mocha": "^10.0.10", "@types/node": "20.x", "@types/node-cache": "^4.1.3", diff --git a/src/services/browser/__tests__/BrowserSession.spec.ts b/src/services/browser/__tests__/BrowserSession.spec.ts index 0ba43a382c07..b69fb2d14064 100644 --- a/src/services/browser/__tests__/BrowserSession.spec.ts +++ b/src/services/browser/__tests__/BrowserSession.spec.ts @@ -1,9 +1,7 @@ // npx vitest services/browser/__tests__/BrowserSession.spec.ts -import { describe, it, expect, vi, beforeEach } from "vitest" import { BrowserSession } from "../BrowserSession" import { discoverChromeHostUrl, tryChromeHostUrl } from "../browserDiscovery" -import { fileExistsAtPath } from "../../../utils/fs" // Mock dependencies vi.mock("vscode", () => ({ diff --git a/src/services/browser/__tests__/UrlContentFetcher.spec.ts b/src/services/browser/__tests__/UrlContentFetcher.spec.ts index 98c3fcd7e451..b21456e37948 100644 --- a/src/services/browser/__tests__/UrlContentFetcher.spec.ts +++ b/src/services/browser/__tests__/UrlContentFetcher.spec.ts @@ -1,10 +1,9 @@ // npx vitest services/browser/__tests__/UrlContentFetcher.spec.ts -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" -import { UrlContentFetcher } from "../UrlContentFetcher" -import { fileExistsAtPath } from "../../../utils/fs" import * as path from "path" +import { UrlContentFetcher } from "../UrlContentFetcher" + // Mock dependencies vi.mock("vscode", () => ({ ExtensionContext: vi.fn(), @@ -128,8 +127,8 @@ describe("UrlContentFetcher", () => { it("should launch browser with correct arguments on non-Linux platforms", async () => { // Ensure we're not on Linux for this test const originalPlatform = process.platform - Object.defineProperty(process, 'platform', { - value: 'darwin' // macOS + Object.defineProperty(process, "platform", { + value: "darwin", // macOS }) try { @@ -153,8 +152,8 @@ describe("UrlContentFetcher", () => { }) } finally { // Restore original platform - Object.defineProperty(process, 'platform', { - value: originalPlatform + Object.defineProperty(process, "platform", { + value: originalPlatform, }) } }) @@ -162,8 +161,8 @@ describe("UrlContentFetcher", () => { it("should launch browser with Linux-specific arguments", async () => { // Mock process.platform to be linux const originalPlatform = process.platform - Object.defineProperty(process, 'platform', { - value: 'linux' + Object.defineProperty(process, "platform", { + value: "linux", }) try { @@ -190,8 +189,8 @@ describe("UrlContentFetcher", () => { }) } finally { // Restore original platform - Object.defineProperty(process, 'platform', { - value: originalPlatform + Object.defineProperty(process, "platform", { + value: originalPlatform, }) } }) diff --git a/src/services/code-index/__tests__/config-manager.spec.ts b/src/services/code-index/__tests__/config-manager.spec.ts index 2d6e704d76c1..9fc096ba742b 100644 --- a/src/services/code-index/__tests__/config-manager.spec.ts +++ b/src/services/code-index/__tests__/config-manager.spec.ts @@ -1,8 +1,6 @@ // npx vitest services/code-index/__tests__/config-manager.spec.ts -import { describe, it, expect, beforeEach, vi } from "vitest" import { CodeIndexConfigManager } from "../config-manager" -import { ContextProxy } from "../../../core/config/ContextProxy" import { PreviousConfigSnapshot } from "../interfaces/config" // Mock ContextProxy diff --git a/src/services/code-index/embedders/__tests__/mistral.spec.ts b/src/services/code-index/embedders/__tests__/mistral.spec.ts index 50858825030c..82c741027418 100644 --- a/src/services/code-index/embedders/__tests__/mistral.spec.ts +++ b/src/services/code-index/embedders/__tests__/mistral.spec.ts @@ -1,5 +1,5 @@ -import { vitest, describe, it, expect, beforeEach } from "vitest" import type { MockedClass } from "vitest" + import { MistralEmbedder } from "../mistral" import { OpenAICompatibleEmbedder } from "../openai-compatible" diff --git a/src/services/code-index/embedders/__tests__/ollama.spec.ts b/src/services/code-index/embedders/__tests__/ollama.spec.ts index 253158dd5004..650140beacf0 100644 --- a/src/services/code-index/embedders/__tests__/ollama.spec.ts +++ b/src/services/code-index/embedders/__tests__/ollama.spec.ts @@ -1,5 +1,5 @@ -import { vitest, describe, it, expect, beforeEach, afterEach } from "vitest" import type { MockedFunction } from "vitest" + import { CodeIndexOllamaEmbedder } from "../ollama" // Mock fetch diff --git a/src/services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts b/src/services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts index 3e2acc398e24..e148b6c9329a 100644 --- a/src/services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts +++ b/src/services/code-index/embedders/__tests__/openai-compatible-rate-limit.spec.ts @@ -1,5 +1,6 @@ -import { describe, it, expect, vi, beforeEach, afterEach, MockedClass, MockedFunction } from "vitest" +import type { MockedClass, MockedFunction } from "vitest" import { OpenAI } from "openai" + import { OpenAICompatibleEmbedder } from "../openai-compatible" // Mock the OpenAI SDK diff --git a/src/services/code-index/embedders/__tests__/openai.spec.ts b/src/services/code-index/embedders/__tests__/openai.spec.ts index c8e4706f39d9..089abe151a30 100644 --- a/src/services/code-index/embedders/__tests__/openai.spec.ts +++ b/src/services/code-index/embedders/__tests__/openai.spec.ts @@ -1,8 +1,8 @@ -import { vitest, describe, it, expect, beforeEach, afterEach } from "vitest" import type { MockedClass, MockedFunction } from "vitest" import { OpenAI } from "openai" + import { OpenAiEmbedder } from "../openai" -import { MAX_BATCH_TOKENS, MAX_ITEM_TOKENS, MAX_BATCH_RETRIES, INITIAL_RETRY_DELAY_MS } from "../../constants" +import { MAX_ITEM_TOKENS, INITIAL_RETRY_DELAY_MS } from "../../constants" // Mock the OpenAI SDK vitest.mock("openai") diff --git a/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts b/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts index 0b819f9bbeb6..891339025c5b 100644 --- a/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts +++ b/src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts @@ -1,6 +1,5 @@ // npx vitest run src/services/code-index/embedders/__tests__/vercel-ai-gateway.spec.ts -import { describe, it, expect, vi, beforeEach } from "vitest" import { VercelAiGatewayEmbedder } from "../vercel-ai-gateway" import { OpenAICompatibleEmbedder } from "../openai-compatible" diff --git a/src/services/code-index/processors/__tests__/parser.vb.spec.ts b/src/services/code-index/processors/__tests__/parser.vb.spec.ts index 3b17e0d67faf..95fd73cc9a5a 100644 --- a/src/services/code-index/processors/__tests__/parser.vb.spec.ts +++ b/src/services/code-index/processors/__tests__/parser.vb.spec.ts @@ -1,6 +1,4 @@ -import { describe, it, expect, beforeEach, vi } from "vitest" import { CodeParser } from "../parser" -import * as path from "path" // Mock TelemetryService vi.mock("../../../../../packages/telemetry/src/TelemetryService", () => ({ diff --git a/src/services/code-index/shared/__tests__/get-relative-path.spec.ts b/src/services/code-index/shared/__tests__/get-relative-path.spec.ts index 5226fbf6e6c8..d5398f1332c5 100644 --- a/src/services/code-index/shared/__tests__/get-relative-path.spec.ts +++ b/src/services/code-index/shared/__tests__/get-relative-path.spec.ts @@ -1,5 +1,5 @@ -import { describe, it, expect } from "vitest" import path from "path" + import { generateNormalizedAbsolutePath, generateRelativeFilePath } from "../get-relative-path" describe("get-relative-path", () => { diff --git a/src/services/code-index/shared/__tests__/validation-helpers.spec.ts b/src/services/code-index/shared/__tests__/validation-helpers.spec.ts index 00270017db02..bf6c732a9235 100644 --- a/src/services/code-index/shared/__tests__/validation-helpers.spec.ts +++ b/src/services/code-index/shared/__tests__/validation-helpers.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { sanitizeErrorMessage } from "../validation-helpers" describe("sanitizeErrorMessage", () => { diff --git a/src/services/command/__tests__/built-in-commands.spec.ts b/src/services/command/__tests__/built-in-commands.spec.ts index 5a191b38609c..ecb2bdb0fb88 100644 --- a/src/services/command/__tests__/built-in-commands.spec.ts +++ b/src/services/command/__tests__/built-in-commands.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { getBuiltInCommands, getBuiltInCommand, getBuiltInCommandNames } from "../built-in-commands" describe("Built-in Commands", () => { diff --git a/src/services/command/__tests__/frontmatter-commands.spec.ts b/src/services/command/__tests__/frontmatter-commands.spec.ts index 3b7c4031467e..40acc8ae848a 100644 --- a/src/services/command/__tests__/frontmatter-commands.spec.ts +++ b/src/services/command/__tests__/frontmatter-commands.spec.ts @@ -1,6 +1,6 @@ -import { describe, it, expect, beforeEach, vi } from "vitest" import fs from "fs/promises" import * as path from "path" + import { getCommand, getCommands } from "../commands" // Mock fs and path modules diff --git a/src/services/glob/__tests__/gitignore-integration.spec.ts b/src/services/glob/__tests__/gitignore-integration.spec.ts index 1361816b17a5..fbd2474e1538 100644 --- a/src/services/glob/__tests__/gitignore-integration.spec.ts +++ b/src/services/glob/__tests__/gitignore-integration.spec.ts @@ -1,4 +1,3 @@ -import { vi, describe, it, expect, beforeEach, afterEach } from "vitest" import * as path from "path" import * as fs from "fs" import * as os from "os" diff --git a/src/services/glob/__tests__/gitignore-test.spec.ts b/src/services/glob/__tests__/gitignore-test.spec.ts index cef884b584cf..6928819f9c30 100644 --- a/src/services/glob/__tests__/gitignore-test.spec.ts +++ b/src/services/glob/__tests__/gitignore-test.spec.ts @@ -1,4 +1,3 @@ -import { vi, describe, it, expect, beforeEach, afterEach } from "vitest" import * as path from "path" import * as fs from "fs" import * as os from "os" diff --git a/src/services/glob/__tests__/list-files.spec.ts b/src/services/glob/__tests__/list-files.spec.ts index d855388002e8..b9873194194f 100644 --- a/src/services/glob/__tests__/list-files.spec.ts +++ b/src/services/glob/__tests__/list-files.spec.ts @@ -1,7 +1,6 @@ -import { vi, describe, it, expect, beforeEach } from "vitest" import * as path from "path" -import { listFiles } from "../list-files" import * as childProcess from "child_process" +import { listFiles } from "../list-files" vi.mock("child_process") vi.mock("fs") diff --git a/src/services/marketplace/MarketplaceManager.ts b/src/services/marketplace/MarketplaceManager.ts index 0227cdb79de1..dfde5600b9a1 100644 --- a/src/services/marketplace/MarketplaceManager.ts +++ b/src/services/marketplace/MarketplaceManager.ts @@ -4,9 +4,9 @@ import * as path from "path" import * as vscode from "vscode" import * as yaml from "yaml" -import type { MarketplaceItem, MarketplaceItemType, McpMarketplaceItem } from "@roo-code/types" +import type { OrganizationSettings, MarketplaceItem, MarketplaceItemType, McpMarketplaceItem } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" -import { type OrganizationSettings, CloudService } from "@roo-code/cloud" +import { CloudService } from "@roo-code/cloud" import { GlobalFileNames } from "../../shared/globalFileNames" import { ensureSettingsDirectoryExists } from "../../utils/globalContext" diff --git a/src/services/marketplace/RemoteConfigLoader.ts b/src/services/marketplace/RemoteConfigLoader.ts index fe66b32be088..b5851ae854db 100644 --- a/src/services/marketplace/RemoteConfigLoader.ts +++ b/src/services/marketplace/RemoteConfigLoader.ts @@ -1,11 +1,15 @@ import axios from "axios" import * as yaml from "yaml" import { z } from "zod" + +import { + type MarketplaceItem, + type MarketplaceItemType, + modeMarketplaceItemSchema, + mcpMarketplaceItemSchema, +} from "@roo-code/types" import { getRooCodeApiUrl } from "@roo-code/cloud" -import type { MarketplaceItem, MarketplaceItemType } from "@roo-code/types" -import { modeMarketplaceItemSchema, mcpMarketplaceItemSchema } from "@roo-code/types" -// Response schemas for YAML API responses const modeMarketplaceResponse = z.object({ items: z.array(modeMarketplaceItemSchema), }) @@ -38,11 +42,13 @@ export class RemoteConfigLoader { private async fetchModes(): Promise { const cacheKey = "modes" const cached = this.getFromCache(cacheKey) - if (cached) return cached + + if (cached) { + return cached + } const data = await this.fetchWithRetry(`${this.apiBaseUrl}/api/marketplace/modes`) - // Parse and validate YAML response const yamlData = yaml.parse(data) const validated = modeMarketplaceResponse.parse(yamlData) @@ -58,11 +64,13 @@ export class RemoteConfigLoader { private async fetchMcps(): Promise { const cacheKey = "mcps" const cached = this.getFromCache(cacheKey) - if (cached) return cached + + if (cached) { + return cached + } const data = await this.fetchWithRetry(`${this.apiBaseUrl}/api/marketplace/mcps`) - // Parse and validate YAML response const yamlData = yaml.parse(data) const validated = mcpMarketplaceResponse.parse(yamlData) diff --git a/src/services/mcp/__tests__/McpHub.spec.ts b/src/services/mcp/__tests__/McpHub.spec.ts index ebce2d5b2a01..1db924ed6cc8 100644 --- a/src/services/mcp/__tests__/McpHub.spec.ts +++ b/src/services/mcp/__tests__/McpHub.spec.ts @@ -1,9 +1,12 @@ -import type { McpHub as McpHubType, McpConnection, ConnectedMcpConnection, DisconnectedMcpConnection } from "../McpHub" -import type { ClineProvider } from "../../../core/webview/ClineProvider" -import type { ExtensionContext, Uri } from "vscode" -import { ServerConfigSchema, McpHub, DisableReason } from "../McpHub" import fs from "fs/promises" -import { vi, Mock } from "vitest" + +import type { Mock } from "vitest" +import type { ExtensionContext, Uri } from "vscode" + +import type { ClineProvider } from "../../../core/webview/ClineProvider" + +import type { McpHub as McpHubType, McpConnection, ConnectedMcpConnection, DisconnectedMcpConnection } from "../McpHub" +import { ServerConfigSchema, McpHub } from "../McpHub" // Mock fs/promises before importing anything that uses it vi.mock("fs/promises", () => ({ diff --git a/src/services/mdm/MdmService.ts b/src/services/mdm/MdmService.ts index 67d684b176f5..91c407514f27 100644 --- a/src/services/mdm/MdmService.ts +++ b/src/services/mdm/MdmService.ts @@ -1,11 +1,10 @@ import * as fs from "fs" import * as path from "path" import * as os from "os" -import * as vscode from "vscode" import { z } from "zod" import { CloudService, getClerkBaseUrl, PRODUCTION_CLERK_BASE_URL } from "@roo-code/cloud" -import { Package } from "../../shared/package" + import { t } from "../../i18n" // MDM Configuration Schema diff --git a/src/services/mdm/__tests__/MdmService.spec.ts b/src/services/mdm/__tests__/MdmService.spec.ts index 81ff61652b0d..31a7ba401e0d 100644 --- a/src/services/mdm/__tests__/MdmService.spec.ts +++ b/src/services/mdm/__tests__/MdmService.spec.ts @@ -1,5 +1,4 @@ import * as path from "path" -import { describe, it, expect, beforeEach, afterEach, vi } from "vitest" // Mock dependencies vi.mock("fs", () => ({ diff --git a/src/services/roo-config/__tests__/index.spec.ts b/src/services/roo-config/__tests__/index.spec.ts index 8e9bf929cc36..946bb27c7f28 100644 --- a/src/services/roo-config/__tests__/index.spec.ts +++ b/src/services/roo-config/__tests__/index.spec.ts @@ -1,5 +1,4 @@ import * as path from "path" -import { describe, it, expect, beforeEach, afterEach, vi } from "vitest" // Use vi.hoisted to ensure mocks are available during hoisting const { mockStat, mockReadFile, mockHomedir } = vi.hoisted(() => ({ diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 88121876358b..65fe18185969 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -9,8 +9,10 @@ import type { ClineMessage, MarketplaceItem, TodoItem, + CloudUserInfo, + OrganizationAllowList, + ShareVisibility, } from "@roo-code/types" -import type { CloudUserInfo, OrganizationAllowList, ShareVisibility } from "@roo-code/cloud" import { GitCommit } from "../utils/git" diff --git a/src/shared/ProfileValidator.ts b/src/shared/ProfileValidator.ts index 51eed227d3fa..57c10301a241 100644 --- a/src/shared/ProfileValidator.ts +++ b/src/shared/ProfileValidator.ts @@ -1,5 +1,4 @@ -import type { ProviderSettings } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo-code/cloud" +import type { ProviderSettings, OrganizationAllowList } from "@roo-code/types" export class ProfileValidator { public static isProfileAllowed(profile: ProviderSettings, allowList: OrganizationAllowList): boolean { diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 57bad0e40235..e2df8053409a 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -6,9 +6,9 @@ import { type ModeConfig, type InstallMarketplaceItemOptions, type MarketplaceItem, + type ShareVisibility, marketplaceItemSchema, } from "@roo-code/types" -import type { ShareVisibility } from "@roo-code/cloud" import { Mode } from "./modes" diff --git a/src/shared/__tests__/ProfileValidator.spec.ts b/src/shared/__tests__/ProfileValidator.spec.ts index 4396e8268ab4..5cfe7a720bf1 100644 --- a/src/shared/__tests__/ProfileValidator.spec.ts +++ b/src/shared/__tests__/ProfileValidator.spec.ts @@ -1,7 +1,6 @@ // npx vitest run src/shared/__tests__/ProfileValidator.spec.ts -import { type ProviderSettings } from "@roo-code/types" -import { type OrganizationAllowList } from "@roo-code/cloud" +import type { ProviderSettings, OrganizationAllowList } from "@roo-code/types" import { ProfileValidator } from "../ProfileValidator" diff --git a/src/shared/__tests__/api.spec.ts b/src/shared/__tests__/api.spec.ts index 7c25fe4197c3..aaeb1bf4447e 100644 --- a/src/shared/__tests__/api.spec.ts +++ b/src/shared/__tests__/api.spec.ts @@ -1,7 +1,11 @@ -import { describe, test, expect } from "vitest" +import { + type ModelInfo, + type ProviderSettings, + CLAUDE_CODE_DEFAULT_MAX_OUTPUT_TOKENS, + ANTHROPIC_DEFAULT_MAX_TOKENS, +} from "@roo-code/types" + import { getModelMaxOutputTokens, shouldUseReasoningBudget, shouldUseReasoningEffort } from "../api" -import type { ModelInfo, ProviderSettings } from "@roo-code/types" -import { CLAUDE_CODE_DEFAULT_MAX_OUTPUT_TOKENS, ANTHROPIC_DEFAULT_MAX_TOKENS } from "@roo-code/types" describe("getModelMaxOutputTokens", () => { const mockModel: ModelInfo = { diff --git a/src/shared/__tests__/experiments-preventFocusDisruption.spec.ts b/src/shared/__tests__/experiments-preventFocusDisruption.spec.ts index 7e5389c286b0..e9f96c7ce7e7 100644 --- a/src/shared/__tests__/experiments-preventFocusDisruption.spec.ts +++ b/src/shared/__tests__/experiments-preventFocusDisruption.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { EXPERIMENT_IDS, experimentConfigsMap, experimentDefault, experiments } from "../experiments" describe("PREVENT_FOCUS_DISRUPTION experiment", () => { diff --git a/src/shared/__tests__/modes-empty-prompt-component.spec.ts b/src/shared/__tests__/modes-empty-prompt-component.spec.ts index 5af93cb5d91e..f3be0e9927bf 100644 --- a/src/shared/__tests__/modes-empty-prompt-component.spec.ts +++ b/src/shared/__tests__/modes-empty-prompt-component.spec.ts @@ -1,7 +1,7 @@ -import { describe, it, expect } from "vitest" -import { getModeSelection, modes } from "../modes" import type { PromptComponent } from "@roo-code/types" +import { getModeSelection, modes } from "../modes" + describe("getModeSelection with empty promptComponent", () => { it("should use built-in mode instructions when promptComponent is undefined", () => { const architectMode = modes.find((m) => m.slug === "architect")! diff --git a/src/shared/cloud.ts b/src/shared/cloud.ts deleted file mode 100644 index 9adf9294a041..000000000000 --- a/src/shared/cloud.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CloudUserInfo, OrganizationAllowList, ShareVisibility } from "@roo-code/cloud" - -export type { CloudUserInfo, OrganizationAllowList, ShareVisibility } - -export const ORGANIZATION_ALLOW_ALL: OrganizationAllowList = { - allowAll: true, - providers: {}, -} as const diff --git a/src/shared/utils/__tests__/requesty.spec.ts b/src/shared/utils/__tests__/requesty.spec.ts index eddb6398432c..6ed798b1a228 100644 --- a/src/shared/utils/__tests__/requesty.spec.ts +++ b/src/shared/utils/__tests__/requesty.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect, vi, beforeEach } from "vitest" import { toRequestyServiceUrl } from "../requesty" describe("toRequestyServiceUrl", () => { diff --git a/src/tsconfig.json b/src/tsconfig.json index 90bdb860cd06..11d189aa2e0c 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -16,7 +16,7 @@ "skipLibCheck": true, "sourceMap": true, "strict": true, - "target": "es2022", + "target": "ES2022", "useDefineForClassFields": true, "useUnknownInCatchVariables": false }, diff --git a/src/utils/__tests__/autoImportSettings.spec.ts b/src/utils/__tests__/autoImportSettings.spec.ts index 2b9b42293f74..be0d769670f3 100644 --- a/src/utils/__tests__/autoImportSettings.spec.ts +++ b/src/utils/__tests__/autoImportSettings.spec.ts @@ -1,5 +1,3 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from "vitest" - // Mock dependencies vi.mock("vscode", () => ({ workspace: { diff --git a/src/utils/__tests__/migrateSettings.spec.ts b/src/utils/__tests__/migrateSettings.spec.ts index 5b8481949b5b..a64cc540cb4e 100644 --- a/src/utils/__tests__/migrateSettings.spec.ts +++ b/src/utils/__tests__/migrateSettings.spec.ts @@ -1,7 +1,5 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" import * as vscode from "vscode" -import * as fs from "fs/promises" -import * as path from "path" + import { migrateSettings } from "../migrateSettings" // Mock vscode module diff --git a/src/utils/__tests__/object.spec.ts b/src/utils/__tests__/object.spec.ts index ce9d9f5cc7ee..772de85c77ef 100644 --- a/src/utils/__tests__/object.spec.ts +++ b/src/utils/__tests__/object.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { isEmpty } from "../object" describe("isEmpty", () => { diff --git a/src/utils/__tests__/safeWriteJson.test.ts b/src/utils/__tests__/safeWriteJson.test.ts index f3b687595ac4..e18b86a02d8c 100644 --- a/src/utils/__tests__/safeWriteJson.test.ts +++ b/src/utils/__tests__/safeWriteJson.test.ts @@ -1,11 +1,11 @@ -import { vi, describe, test, expect, beforeEach, afterEach, beforeAll, afterAll } from "vitest" import * as actualFsPromises from "fs/promises" import * as fsSyncActual from "fs" import { Writable } from "stream" -import { safeWriteJson } from "../safeWriteJson" import * as path from "path" import * as os from "os" +import { safeWriteJson } from "../safeWriteJson" + const originalFsPromisesRename = actualFsPromises.rename const originalFsPromisesUnlink = actualFsPromises.unlink const originalFsPromisesWriteFile = actualFsPromises.writeFile diff --git a/src/utils/remoteControl.ts b/src/utils/remoteControl.ts index e645ce7219de..f003b522d1d6 100644 --- a/src/utils/remoteControl.ts +++ b/src/utils/remoteControl.ts @@ -1,4 +1,4 @@ -import type { CloudUserInfo } from "@roo-code/cloud" +import type { CloudUserInfo } from "@roo-code/types" /** * Determines if remote control features should be enabled diff --git a/webview-ui/src/__tests__/command-autocomplete.spec.ts b/webview-ui/src/__tests__/command-autocomplete.spec.ts index be87f3586b3e..d239128cce55 100644 --- a/webview-ui/src/__tests__/command-autocomplete.spec.ts +++ b/webview-ui/src/__tests__/command-autocomplete.spec.ts @@ -1,7 +1,7 @@ -import { describe, it, expect } from "vitest" -import { getContextMenuOptions, ContextMenuOptionType } from "../utils/context-mentions" import type { Command } from "@roo/ExtensionMessage" +import { getContextMenuOptions, ContextMenuOptionType } from "../utils/context-mentions" + describe("Command Autocomplete", () => { const mockCommands: Command[] = [ { name: "setup", source: "project" }, diff --git a/webview-ui/src/components/__tests__/ErrorBoundary.spec.tsx b/webview-ui/src/components/__tests__/ErrorBoundary.spec.tsx index 9c1f2e8c9857..1fbb6774f2d0 100644 --- a/webview-ui/src/components/__tests__/ErrorBoundary.spec.tsx +++ b/webview-ui/src/components/__tests__/ErrorBoundary.spec.tsx @@ -1,6 +1,6 @@ import React from "react" import { render, screen } from "@testing-library/react" -import { vi } from "vitest" + import ErrorBoundary from "../ErrorBoundary" // Mock telemetryClient diff --git a/webview-ui/src/components/account/AccountView.tsx b/webview-ui/src/components/account/AccountView.tsx index 2e75b2d1c6eb..25923deda372 100644 --- a/webview-ui/src/components/account/AccountView.tsx +++ b/webview-ui/src/components/account/AccountView.tsx @@ -1,9 +1,7 @@ import { useEffect, useRef } from "react" import { VSCodeButton } from "@vscode/webview-ui-toolkit/react" -import { TelemetryEventName } from "@roo-code/types" - -import type { CloudUserInfo } from "@roo/cloud" +import { type CloudUserInfo, TelemetryEventName } from "@roo-code/types" import { useAppTranslation } from "@src/i18n/TranslationContext" import { useExtensionState } from "@src/context/ExtensionStateContext" diff --git a/webview-ui/src/components/account/__tests__/AccountView.spec.tsx b/webview-ui/src/components/account/__tests__/AccountView.spec.tsx index c960ca466281..63058bd5b2a4 100644 --- a/webview-ui/src/components/account/__tests__/AccountView.spec.tsx +++ b/webview-ui/src/components/account/__tests__/AccountView.spec.tsx @@ -1,5 +1,5 @@ import { render, screen } from "@/utils/test-utils" -import { describe, it, expect, vi } from "vitest" + import { AccountView } from "../AccountView" // Mock the translation context diff --git a/webview-ui/src/components/chat/ShareButton.tsx b/webview-ui/src/components/chat/ShareButton.tsx index 4a0559fec7e6..b8584fca1160 100644 --- a/webview-ui/src/components/chat/ShareButton.tsx +++ b/webview-ui/src/components/chat/ShareButton.tsx @@ -2,9 +2,7 @@ import { useState, useEffect, useRef } from "react" import { useTranslation } from "react-i18next" import { SquareArrowOutUpRightIcon } from "lucide-react" -import { type HistoryItem, TelemetryEventName } from "@roo-code/types" - -import type { ShareVisibility } from "@roo/cloud" +import { type HistoryItem, type ShareVisibility, TelemetryEventName } from "@roo-code/types" import { vscode } from "@/utils/vscode" import { telemetryClient } from "@/utils/TelemetryClient" diff --git a/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx index d5e9cff84813..bac66255e435 100644 --- a/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ApiConfigSelector.spec.tsx @@ -1,9 +1,8 @@ -import React from "react" import { render, screen, fireEvent, waitFor } from "@/utils/test-utils" -import { describe, test, expect, vi, beforeEach } from "vitest" -import { ApiConfigSelector } from "../ApiConfigSelector" import { vscode } from "@/utils/vscode" +import { ApiConfigSelector } from "../ApiConfigSelector" + // Mock the dependencies vi.mock("@/utils/vscode", () => ({ vscode: { diff --git a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx index adea2390b996..38624f674ae4 100644 --- a/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ChatView.spec.tsx @@ -67,10 +67,7 @@ vi.mock("../../common/VersionIndicator", () => ({ })) // Get the mock function after the module is mocked -const mockVersionIndicator = vi.mocked( - // @ts-expect-error - accessing mocked module - (await import("../../common/VersionIndicator")).default, -) +const mockVersionIndicator = vi.mocked((await import("../../common/VersionIndicator")).default) vi.mock("../Announcement", () => ({ default: function MockAnnouncement({ hideAnnouncement }: { hideAnnouncement: () => void }) { diff --git a/webview-ui/src/components/chat/__tests__/CommandExecution.spec.tsx b/webview-ui/src/components/chat/__tests__/CommandExecution.spec.tsx index e25e9029f8fe..5afbdd93d4f7 100644 --- a/webview-ui/src/components/chat/__tests__/CommandExecution.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/CommandExecution.spec.tsx @@ -1,6 +1,6 @@ import React from "react" import { render, screen, fireEvent } from "@testing-library/react" -import { describe, it, expect, vi, beforeEach } from "vitest" + import { CommandExecution } from "../CommandExecution" import { ExtensionStateContext } from "../../../context/ExtensionStateContext" diff --git a/webview-ui/src/components/chat/__tests__/CommandPatternSelector.spec.tsx b/webview-ui/src/components/chat/__tests__/CommandPatternSelector.spec.tsx index c39d8afad34f..373148016f4b 100644 --- a/webview-ui/src/components/chat/__tests__/CommandPatternSelector.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/CommandPatternSelector.spec.tsx @@ -1,6 +1,6 @@ import React from "react" import { render, screen, fireEvent } from "@testing-library/react" -import { describe, it, expect, vi } from "vitest" + import { CommandPatternSelector } from "../CommandPatternSelector" import { TooltipProvider } from "../../../components/ui/tooltip" diff --git a/webview-ui/src/components/chat/__tests__/FollowUpSuggest.spec.tsx b/webview-ui/src/components/chat/__tests__/FollowUpSuggest.spec.tsx index aa3f84fd8cf1..7a9d140dd520 100644 --- a/webview-ui/src/components/chat/__tests__/FollowUpSuggest.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/FollowUpSuggest.spec.tsx @@ -1,9 +1,8 @@ import React, { createContext, useContext } from "react" import { render, screen, act } from "@testing-library/react" +import { TooltipProvider } from "@radix-ui/react-tooltip" -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" import { FollowUpSuggest } from "../FollowUpSuggest" -import { TooltipProvider } from "@radix-ui/react-tooltip" // Mock the translation hook vi.mock("@src/i18n/TranslationContext", () => ({ diff --git a/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx b/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx index cbe5620264b9..f245719bbd9d 100644 --- a/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/ShareButton.spec.tsx @@ -1,9 +1,10 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" -import { render, screen, fireEvent, waitFor } from "@/utils/test-utils" -import { ShareButton } from "../ShareButton" import { useTranslation } from "react-i18next" + +import { render, screen, fireEvent, waitFor } from "@/utils/test-utils" import { vscode } from "@/utils/vscode" +import { ShareButton } from "../ShareButton" + // Mock the vscode utility vi.mock("@/utils/vscode", () => ({ vscode: { diff --git a/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx b/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx index 4c1138944dab..791e5196b303 100644 --- a/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx +++ b/webview-ui/src/components/chat/__tests__/TaskActions.spec.tsx @@ -1,10 +1,11 @@ -import { render, screen, fireEvent } from "@/utils/test-utils" -import { vi, describe, it, expect, beforeEach } from "vitest" -import { TaskActions } from "../TaskActions" import type { HistoryItem } from "@roo-code/types" + +import { render, screen, fireEvent } from "@/utils/test-utils" import { vscode } from "@/utils/vscode" import { useExtensionState } from "@/context/ExtensionStateContext" +import { TaskActions } from "../TaskActions" + // Mock scrollIntoView for JSDOM Object.defineProperty(Element.prototype, "scrollIntoView", { value: vi.fn(), diff --git a/webview-ui/src/components/common/__tests__/FormattedTextField.spec.tsx b/webview-ui/src/components/common/__tests__/FormattedTextField.spec.tsx index 637a0b5061bd..a58f23764c5c 100644 --- a/webview-ui/src/components/common/__tests__/FormattedTextField.spec.tsx +++ b/webview-ui/src/components/common/__tests__/FormattedTextField.spec.tsx @@ -1,6 +1,5 @@ -import React from "react" -import { describe, it, expect, vi } from "vitest" import { render, screen, fireEvent } from "@testing-library/react" + import { FormattedTextField, unlimitedIntegerFormatter, unlimitedDecimalFormatter } from "../FormattedTextField" // Mock VSCodeTextField to render as regular HTML input for testing diff --git a/webview-ui/src/components/common/__tests__/MarkdownBlock.spec.tsx b/webview-ui/src/components/common/__tests__/MarkdownBlock.spec.tsx index 38a0680b229e..a0b6857a373a 100644 --- a/webview-ui/src/components/common/__tests__/MarkdownBlock.spec.tsx +++ b/webview-ui/src/components/common/__tests__/MarkdownBlock.spec.tsx @@ -1,7 +1,6 @@ -import React from "react" import { render, screen } from "@/utils/test-utils" + import MarkdownBlock from "../MarkdownBlock" -import { vi } from "vitest" vi.mock("@src/utils/vscode", () => ({ vscode: { diff --git a/webview-ui/src/components/marketplace/__tests__/MarketplaceView.spec.tsx b/webview-ui/src/components/marketplace/__tests__/MarketplaceView.spec.tsx index 57f7e9eb9d3d..1f342b9b389c 100644 --- a/webview-ui/src/components/marketplace/__tests__/MarketplaceView.spec.tsx +++ b/webview-ui/src/components/marketplace/__tests__/MarketplaceView.spec.tsx @@ -1,10 +1,11 @@ import { render, waitFor } from "@testing-library/react" -import { vi, describe, it, expect, beforeEach } from "vitest" -import { MarketplaceView } from "../MarketplaceView" -import { MarketplaceViewStateManager } from "../MarketplaceViewStateManager" + import { ExtensionStateContext } from "@/context/ExtensionStateContext" import { vscode } from "@/utils/vscode" +import { MarketplaceView } from "../MarketplaceView" +import { MarketplaceViewStateManager } from "../MarketplaceViewStateManager" + vi.mock("@/utils/vscode", () => ({ vscode: { postMessage: vi.fn(), diff --git a/webview-ui/src/components/settings/ApiConfigManager.tsx b/webview-ui/src/components/settings/ApiConfigManager.tsx index 0d18f2a55b19..366f7a81e749 100644 --- a/webview-ui/src/components/settings/ApiConfigManager.tsx +++ b/webview-ui/src/components/settings/ApiConfigManager.tsx @@ -2,9 +2,7 @@ import { memo, useEffect, useRef, useState } from "react" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" import { AlertTriangle } from "lucide-react" -import type { ProviderSettingsEntry } from "@roo-code/types" - -import type { OrganizationAllowList } from "@roo/cloud" +import type { ProviderSettingsEntry, OrganizationAllowList } from "@roo-code/types" import { useAppTranslation } from "@/i18n/TranslationContext" import { diff --git a/webview-ui/src/components/settings/ModelPicker.tsx b/webview-ui/src/components/settings/ModelPicker.tsx index e398a9f01fba..949e0a081fb7 100644 --- a/webview-ui/src/components/settings/ModelPicker.tsx +++ b/webview-ui/src/components/settings/ModelPicker.tsx @@ -3,9 +3,7 @@ import { VSCodeLink } from "@vscode/webview-ui-toolkit/react" import { Trans } from "react-i18next" import { ChevronsUpDown, Check, X } from "lucide-react" -import type { ProviderSettings, ModelInfo } from "@roo-code/types" - -import type { OrganizationAllowList } from "@roo/cloud" +import type { ProviderSettings, ModelInfo, OrganizationAllowList } from "@roo-code/types" import { useAppTranslation } from "@src/i18n/TranslationContext" import { useSelectedModel } from "@/components/ui/hooks/useSelectedModel" diff --git a/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx b/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx index 52048de95d38..17f898a5b711 100644 --- a/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ApiOptions.provider-filtering.spec.tsx @@ -1,13 +1,14 @@ -import { describe, it, expect, vi } from "vitest" import { render, screen } from "@testing-library/react" import { QueryClient, QueryClientProvider } from "@tanstack/react-query" -import ApiOptions from "../ApiOptions" -import { MODELS_BY_PROVIDER, PROVIDERS } from "../constants" -import type { ProviderSettings } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" + +import type { ProviderSettings, OrganizationAllowList } from "@roo-code/types" + import { useExtensionState } from "@src/context/ExtensionStateContext" import { useSelectedModel } from "@src/components/ui/hooks/useSelectedModel" +import ApiOptions from "../ApiOptions" +import { MODELS_BY_PROVIDER, PROVIDERS } from "../constants" + // Mock the extension state context vi.mock("@src/context/ExtensionStateContext", () => ({ useExtensionState: vi.fn(() => ({ diff --git a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx index ef3808c20baa..2d6987977228 100644 --- a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx @@ -1,8 +1,9 @@ import { render, fireEvent } from "@testing-library/react" -import { vi } from "vitest" -import { ImageGenerationSettings } from "../ImageGenerationSettings" + import type { ProviderSettings } from "@roo-code/types" +import { ImageGenerationSettings } from "../ImageGenerationSettings" + // Mock the translation context vi.mock("@/i18n/TranslationContext", () => ({ useAppTranslation: () => ({ diff --git a/webview-ui/src/components/settings/__tests__/MaxCostInput.spec.tsx b/webview-ui/src/components/settings/__tests__/MaxCostInput.spec.tsx index b57d1cba6c26..5fc7d72672fd 100644 --- a/webview-ui/src/components/settings/__tests__/MaxCostInput.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/MaxCostInput.spec.tsx @@ -1,5 +1,5 @@ import { render, screen, fireEvent } from "@testing-library/react" -import { vi } from "vitest" + import { MaxCostInput } from "../MaxCostInput" vi.mock("@/utils/vscode", () => ({ diff --git a/webview-ui/src/components/settings/__tests__/MaxRequestsInput.spec.tsx b/webview-ui/src/components/settings/__tests__/MaxRequestsInput.spec.tsx index 94940e4569ce..59b495bcd953 100644 --- a/webview-ui/src/components/settings/__tests__/MaxRequestsInput.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/MaxRequestsInput.spec.tsx @@ -1,5 +1,5 @@ import { render, screen, fireEvent } from "@testing-library/react" -import { vi } from "vitest" + import { MaxRequestsInput } from "../MaxRequestsInput" vi.mock("@/utils/vscode", () => ({ diff --git a/webview-ui/src/components/settings/__tests__/ModelPicker.spec.tsx b/webview-ui/src/components/settings/__tests__/ModelPicker.spec.tsx index 82c6da2a3ff9..eba7d0fa0582 100644 --- a/webview-ui/src/components/settings/__tests__/ModelPicker.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ModelPicker.spec.tsx @@ -3,7 +3,6 @@ import { screen, fireEvent, render } from "@/utils/test-utils" import { act } from "react" import { QueryClient, QueryClientProvider } from "@tanstack/react-query" -import { vi } from "vitest" import { ModelInfo } from "@roo-code/types" diff --git a/webview-ui/src/components/settings/__tests__/TodoListSettingsControl.spec.tsx b/webview-ui/src/components/settings/__tests__/TodoListSettingsControl.spec.tsx index 432b2c9c6116..76f65d312f57 100644 --- a/webview-ui/src/components/settings/__tests__/TodoListSettingsControl.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/TodoListSettingsControl.spec.tsx @@ -1,6 +1,5 @@ -import React from "react" import { render, screen, fireEvent } from "@testing-library/react" -import { describe, it, expect, vi } from "vitest" + import { TodoListSettingsControl } from "../TodoListSettingsControl" // Mock the translation hook diff --git a/webview-ui/src/components/settings/providers/Glama.tsx b/webview-ui/src/components/settings/providers/Glama.tsx index bc3fb71caeaf..ca1c6590ef4b 100644 --- a/webview-ui/src/components/settings/providers/Glama.tsx +++ b/webview-ui/src/components/settings/providers/Glama.tsx @@ -1,9 +1,8 @@ import { useCallback } from "react" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, glamaDefaultModelId } from "@roo-code/types" +import { type ProviderSettings, type OrganizationAllowList, glamaDefaultModelId } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import type { RouterModels } from "@roo/api" import { useAppTranslation } from "@src/i18n/TranslationContext" diff --git a/webview-ui/src/components/settings/providers/IOIntelligence.tsx b/webview-ui/src/components/settings/providers/IOIntelligence.tsx index 81e0d546f4f2..4a7f74797aeb 100644 --- a/webview-ui/src/components/settings/providers/IOIntelligence.tsx +++ b/webview-ui/src/components/settings/providers/IOIntelligence.tsx @@ -1,9 +1,12 @@ import { useCallback } from "react" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, ioIntelligenceDefaultModelId, ioIntelligenceModels } from "@roo-code/types" - -import type { OrganizationAllowList } from "@roo/cloud" +import { + type ProviderSettings, + type OrganizationAllowList, + ioIntelligenceDefaultModelId, + ioIntelligenceModels, +} from "@roo-code/types" import { useAppTranslation } from "@src/i18n/TranslationContext" import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink" diff --git a/webview-ui/src/components/settings/providers/LiteLLM.tsx b/webview-ui/src/components/settings/providers/LiteLLM.tsx index 0cb3245ea466..caf7a173febc 100644 --- a/webview-ui/src/components/settings/providers/LiteLLM.tsx +++ b/webview-ui/src/components/settings/providers/LiteLLM.tsx @@ -1,9 +1,8 @@ import { useCallback, useState, useEffect, useRef } from "react" import { VSCodeTextField, VSCodeCheckbox } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, litellmDefaultModelId } from "@roo-code/types" +import { type ProviderSettings, type OrganizationAllowList, litellmDefaultModelId } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import { RouterName } from "@roo/api" import { ExtensionMessage } from "@roo/ExtensionMessage" diff --git a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx index ee462296b5fc..736b0253c438 100644 --- a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx +++ b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx @@ -7,11 +7,11 @@ import { type ProviderSettings, type ModelInfo, type ReasoningEffort, + type OrganizationAllowList, azureOpenAiDefaultApiVersion, openAiModelInfoSaneDefaults, } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import { ExtensionMessage } from "@roo/ExtensionMessage" import { useAppTranslation } from "@src/i18n/TranslationContext" diff --git a/webview-ui/src/components/settings/providers/OpenRouter.tsx b/webview-ui/src/components/settings/providers/OpenRouter.tsx index cf8b54d0cd4e..f6cad36bf857 100644 --- a/webview-ui/src/components/settings/providers/OpenRouter.tsx +++ b/webview-ui/src/components/settings/providers/OpenRouter.tsx @@ -3,9 +3,8 @@ import { Trans } from "react-i18next" import { Checkbox } from "vscrui" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, openRouterDefaultModelId } from "@roo-code/types" +import { type ProviderSettings, type OrganizationAllowList, openRouterDefaultModelId } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import type { RouterModels } from "@roo/api" import { useAppTranslation } from "@src/i18n/TranslationContext" diff --git a/webview-ui/src/components/settings/providers/Requesty.tsx b/webview-ui/src/components/settings/providers/Requesty.tsx index f634eac89096..2f531a0eccca 100644 --- a/webview-ui/src/components/settings/providers/Requesty.tsx +++ b/webview-ui/src/components/settings/providers/Requesty.tsx @@ -1,9 +1,8 @@ import { useCallback, useEffect, useState } from "react" import { VSCodeCheckbox, VSCodeTextField } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, requestyDefaultModelId } from "@roo-code/types" +import { type ProviderSettings, type OrganizationAllowList, requestyDefaultModelId } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import type { RouterModels } from "@roo/api" import { vscode } from "@src/utils/vscode" diff --git a/webview-ui/src/components/settings/providers/Unbound.tsx b/webview-ui/src/components/settings/providers/Unbound.tsx index 2dd105a66376..0fac8e3fa121 100644 --- a/webview-ui/src/components/settings/providers/Unbound.tsx +++ b/webview-ui/src/components/settings/providers/Unbound.tsx @@ -2,9 +2,8 @@ import { useCallback, useState, useRef } from "react" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" import { useQueryClient } from "@tanstack/react-query" -import { type ProviderSettings, unboundDefaultModelId } from "@roo-code/types" +import { type ProviderSettings, type OrganizationAllowList, unboundDefaultModelId } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import type { RouterModels } from "@roo/api" import { useAppTranslation } from "@src/i18n/TranslationContext" diff --git a/webview-ui/src/components/settings/providers/VercelAiGateway.tsx b/webview-ui/src/components/settings/providers/VercelAiGateway.tsx index 8050469efcb8..e816e79e34bf 100644 --- a/webview-ui/src/components/settings/providers/VercelAiGateway.tsx +++ b/webview-ui/src/components/settings/providers/VercelAiGateway.tsx @@ -1,9 +1,8 @@ import { useCallback } from "react" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, vercelAiGatewayDefaultModelId } from "@roo-code/types" +import { type ProviderSettings, type OrganizationAllowList, vercelAiGatewayDefaultModelId } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import type { RouterModels } from "@roo/api" import { useAppTranslation } from "@src/i18n/TranslationContext" diff --git a/webview-ui/src/components/settings/utils/__tests__/organizationFilters.test.ts b/webview-ui/src/components/settings/utils/__tests__/organizationFilters.test.ts index 530e5d4942cd..84183cd3c9ea 100644 --- a/webview-ui/src/components/settings/utils/__tests__/organizationFilters.test.ts +++ b/webview-ui/src/components/settings/utils/__tests__/organizationFilters.test.ts @@ -1,6 +1,4 @@ -import type { ModelInfo } from "@roo-code/types" - -import type { OrganizationAllowList } from "@roo/cloud" +import type { ModelInfo, OrganizationAllowList } from "@roo-code/types" import { filterProviders, filterModels } from "../organizationFilters" diff --git a/webview-ui/src/components/settings/utils/organizationFilters.ts b/webview-ui/src/components/settings/utils/organizationFilters.ts index f6f129257afc..56bd5a3c33aa 100644 --- a/webview-ui/src/components/settings/utils/organizationFilters.ts +++ b/webview-ui/src/components/settings/utils/organizationFilters.ts @@ -1,6 +1,4 @@ -import type { ProviderName, ModelInfo } from "@roo-code/types" - -import type { OrganizationAllowList } from "@roo/cloud" +import type { ProviderName, ModelInfo, OrganizationAllowList } from "@roo-code/types" export const filterProviders = ( providers: Array<{ value: string; label: string }>, diff --git a/webview-ui/src/components/ui/__tests__/tooltip.spec.tsx b/webview-ui/src/components/ui/__tests__/tooltip.spec.tsx index e1cb6195452f..97d6e379773b 100644 --- a/webview-ui/src/components/ui/__tests__/tooltip.spec.tsx +++ b/webview-ui/src/components/ui/__tests__/tooltip.spec.tsx @@ -1,6 +1,6 @@ import { render, screen, waitFor } from "@testing-library/react" import userEvent from "@testing-library/user-event" -import { describe, it, expect } from "vitest" + import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip" import { StandardTooltip } from "../standard-tooltip" diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index e308ed5e64ed..bd335d7b2dab 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -8,9 +8,10 @@ import { type ExperimentId, type TodoItem, type TelemetrySetting, + type OrganizationAllowList, + ORGANIZATION_ALLOW_ALL, } from "@roo-code/types" -import { type OrganizationAllowList, ORGANIZATION_ALLOW_ALL } from "@roo/cloud" import { ExtensionMessage, ExtensionState, MarketplaceInstalledMetadata, Command } from "@roo/ExtensionMessage" import { findLastIndex } from "@roo/array" import { McpServer } from "@roo/mcp" diff --git a/webview-ui/src/hooks/useEscapeKey.spec.ts b/webview-ui/src/hooks/useEscapeKey.spec.ts index 057235b7cfaf..2e1b5ae6d9f2 100644 --- a/webview-ui/src/hooks/useEscapeKey.spec.ts +++ b/webview-ui/src/hooks/useEscapeKey.spec.ts @@ -1,5 +1,5 @@ import { renderHook } from "@testing-library/react" -import { vi } from "vitest" + import { useEscapeKey } from "./useEscapeKey" describe("useEscapeKey", () => { diff --git a/webview-ui/src/utils/__tests__/command-parser.spec.ts b/webview-ui/src/utils/__tests__/command-parser.spec.ts index 05303f87fc40..ede8ebe874b9 100644 --- a/webview-ui/src/utils/__tests__/command-parser.spec.ts +++ b/webview-ui/src/utils/__tests__/command-parser.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect } from "vitest" import { extractPatternsFromCommand } from "../command-parser" describe("extractPatternsFromCommand", () => { diff --git a/webview-ui/src/utils/__tests__/format.spec.ts b/webview-ui/src/utils/__tests__/format.spec.ts index 4d642f3f44fa..2f633d364d8b 100644 --- a/webview-ui/src/utils/__tests__/format.spec.ts +++ b/webview-ui/src/utils/__tests__/format.spec.ts @@ -1,4 +1,3 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from "vitest" import { formatLargeNumber, formatDate, formatTimeAgo } from "../format" // Mock i18next diff --git a/webview-ui/src/utils/__tests__/sourceMapUtils.spec.ts b/webview-ui/src/utils/__tests__/sourceMapUtils.spec.ts index b5bda3bcdb9f..d694655e9233 100644 --- a/webview-ui/src/utils/__tests__/sourceMapUtils.spec.ts +++ b/webview-ui/src/utils/__tests__/sourceMapUtils.spec.ts @@ -1,4 +1,3 @@ -import { vi, describe, test, expect, beforeEach } from "vitest" import { parseStackTrace, applySourceMapsToStack, enhanceErrorWithSourceMaps } from "../sourceMapUtils" // Mock console.debug to avoid cluttering test output diff --git a/webview-ui/src/utils/__tests__/validate.test.ts b/webview-ui/src/utils/__tests__/validate.test.ts index 30ccfd4463fd..2f62dd181d49 100644 --- a/webview-ui/src/utils/__tests__/validate.test.ts +++ b/webview-ui/src/utils/__tests__/validate.test.ts @@ -1,6 +1,5 @@ -import type { ProviderSettings } from "@roo-code/types" +import type { ProviderSettings, OrganizationAllowList } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import { RouterModels } from "@roo/api" import { getModelValidationError, validateApiConfigurationExcludingModelErrors } from "../validate" diff --git a/webview-ui/src/utils/validate.ts b/webview-ui/src/utils/validate.ts index 5613eb9eb8ee..1cbeba76d0b1 100644 --- a/webview-ui/src/utils/validate.ts +++ b/webview-ui/src/utils/validate.ts @@ -1,8 +1,7 @@ import i18next from "i18next" -import type { ProviderSettings } from "@roo-code/types" +import type { ProviderSettings, OrganizationAllowList } from "@roo-code/types" -import type { OrganizationAllowList } from "@roo/cloud" import { isRouterName, RouterModels } from "@roo/api" export function validateApiConfiguration( diff --git a/webview-ui/tsconfig.json b/webview-ui/tsconfig.json index 122cfca0ec7d..c075b996125a 100644 --- a/webview-ui/tsconfig.json +++ b/webview-ui/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "types": ["vitest/globals"], - "target": "es5", + "target": "ES2022", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, diff --git a/webview-ui/vite.config.ts b/webview-ui/vite.config.ts index 0579344a22ce..b38452a99024 100644 --- a/webview-ui/vite.config.ts +++ b/webview-ui/vite.config.ts @@ -5,6 +5,7 @@ import { execSync } from "child_process" import { defineConfig, type PluginOption, type Plugin } from "vite" import react from "@vitejs/plugin-react" import tailwindcss from "@tailwindcss/vite" + import { sourcemapPlugin } from "./src/vite-plugins/sourcemapPlugin" function getGitSha() { From 1e4c46fe6f05324ae4335562db1efbf372feb002 Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Fri, 29 Aug 2025 00:28:38 -0700 Subject: [PATCH 035/228] Refactor the extension bridge (#7515) --- packages/cloud/src/WebAuthService.ts | 8 +- packages/cloud/src/bridge/BaseChannel.ts | 109 +++++ .../cloud/src/bridge/BridgeOrchestrator.ts | 273 ++++++++++++ .../src/bridge/ExtensionBridgeService.ts | 290 ------------- packages/cloud/src/bridge/ExtensionChannel.ts | 220 ++++++++++ packages/cloud/src/bridge/ExtensionManager.ts | 297 ------------- ...onnectionManager.ts => SocketTransport.ts} | 69 ++-- packages/cloud/src/bridge/TaskChannel.ts | 228 ++++++++++ packages/cloud/src/bridge/TaskManager.ts | 279 ------------- .../bridge/__tests__/ExtensionChannel.test.ts | 252 ++++++++++++ .../src/bridge/__tests__/TaskChannel.test.ts | 389 ++++++++++++++++++ packages/cloud/src/bridge/index.ts | 6 + packages/cloud/src/importVscode.ts | 23 +- packages/cloud/src/index.ts | 6 +- packages/types/src/cloud.ts | 53 ++- src/core/task/Task.ts | 37 +- src/core/webview/ClineProvider.ts | 101 ++--- .../webview/__tests__/ClineProvider.spec.ts | 7 +- .../ClineProvider.sticky-mode.spec.ts | 7 +- src/core/webview/webviewMessageHandler.ts | 10 +- src/extension.ts | 18 +- src/services/mcp/McpHub.ts | 6 +- src/services/mdm/MdmService.ts | 9 +- src/utils/remoteControl.ts | 11 - 24 files changed, 1647 insertions(+), 1061 deletions(-) create mode 100644 packages/cloud/src/bridge/BaseChannel.ts create mode 100644 packages/cloud/src/bridge/BridgeOrchestrator.ts delete mode 100644 packages/cloud/src/bridge/ExtensionBridgeService.ts create mode 100644 packages/cloud/src/bridge/ExtensionChannel.ts delete mode 100644 packages/cloud/src/bridge/ExtensionManager.ts rename packages/cloud/src/bridge/{SocketConnectionManager.ts => SocketTransport.ts} (72%) create mode 100644 packages/cloud/src/bridge/TaskChannel.ts delete mode 100644 packages/cloud/src/bridge/TaskManager.ts create mode 100644 packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts create mode 100644 packages/cloud/src/bridge/__tests__/TaskChannel.test.ts create mode 100644 packages/cloud/src/bridge/index.ts delete mode 100644 src/utils/remoteControl.ts diff --git a/packages/cloud/src/WebAuthService.ts b/packages/cloud/src/WebAuthService.ts index cb0e08754774..e7c886ddcdcd 100644 --- a/packages/cloud/src/WebAuthService.ts +++ b/packages/cloud/src/WebAuthService.ts @@ -129,6 +129,7 @@ export class WebAuthService extends EventEmitter implements A private changeState(newState: AuthState): void { const previousState = this.state this.state = newState + this.log(`[auth] changeState: ${previousState} -> ${newState}`) this.emit("auth-state-changed", { state: newState, previousState }) } @@ -162,8 +163,6 @@ export class WebAuthService extends EventEmitter implements A this.userInfo = null this.changeState("logged-out") - - this.log("[auth] Transitioned to logged-out state") } private transitionToAttemptingSession(credentials: AuthCredentials): void { @@ -176,8 +175,6 @@ export class WebAuthService extends EventEmitter implements A this.changeState("attempting-session") this.timer.start() - - this.log("[auth] Transitioned to attempting-session state") } private transitionToInactiveSession(): void { @@ -185,8 +182,6 @@ export class WebAuthService extends EventEmitter implements A this.userInfo = null this.changeState("inactive-session") - - this.log("[auth] Transitioned to inactive-session state") } /** @@ -422,7 +417,6 @@ export class WebAuthService extends EventEmitter implements A if (previousState !== "active-session") { this.changeState("active-session") - this.log("[auth] Transitioned to active-session state") this.fetchUserInfo() } else { this.state = "active-session" diff --git a/packages/cloud/src/bridge/BaseChannel.ts b/packages/cloud/src/bridge/BaseChannel.ts new file mode 100644 index 000000000000..45b9b525f6c8 --- /dev/null +++ b/packages/cloud/src/bridge/BaseChannel.ts @@ -0,0 +1,109 @@ +import type { Socket } from "socket.io-client" + +/** + * Abstract base class for communication channels in the bridge system. + * Provides common functionality for bidirectional communication between + * the VSCode extension and web application. + * + * @template TCommand - Type of commands this channel can receive. + * @template TEvent - Type of events this channel can publish. + */ +export abstract class BaseChannel { + protected socket: Socket | null = null + protected readonly instanceId: string + + constructor(instanceId: string) { + this.instanceId = instanceId + } + + /** + * Called when socket connects. + */ + public async onConnect(socket: Socket): Promise { + this.socket = socket + await this.handleConnect(socket) + } + + /** + * Called when socket disconnects. + */ + public onDisconnect(): void { + this.socket = null + this.handleDisconnect() + } + + /** + * Called when socket reconnects. + */ + public async onReconnect(socket: Socket): Promise { + this.socket = socket + await this.handleReconnect(socket) + } + + /** + * Cleanup resources. + */ + public async cleanup(socket: Socket | null): Promise { + if (socket) { + await this.handleCleanup(socket) + } + + this.socket = null + } + + /** + * Emit a socket event with error handling. + */ + protected publish( + eventName: TEventName, + data: TEventData, + callback?: (params: Params) => void, + ): boolean { + if (!this.socket) { + console.error(`[${this.constructor.name}#emit] socket not available for ${eventName}`) + return false + } + + try { + // console.log(`[${this.constructor.name}#emit] emit() -> ${eventName}`, data) + this.socket.emit(eventName, data, callback) + + return true + } catch (error) { + console.error( + `[${this.constructor.name}#emit] emit() failed -> ${eventName}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + + return false + } + } + + /** + * Handle incoming commands - must be implemented by subclasses. + */ + public abstract handleCommand(command: TCommand): void + + /** + * Handle connection-specific logic. + */ + protected abstract handleConnect(socket: Socket): Promise + + /** + * Handle disconnection-specific logic. + */ + protected handleDisconnect(): void { + // Default implementation - can be overridden. + } + + /** + * Handle reconnection-specific logic. + */ + protected abstract handleReconnect(socket: Socket): Promise + + /** + * Handle cleanup-specific logic. + */ + protected abstract handleCleanup(socket: Socket): Promise +} diff --git a/packages/cloud/src/bridge/BridgeOrchestrator.ts b/packages/cloud/src/bridge/BridgeOrchestrator.ts new file mode 100644 index 000000000000..73b757e5c8fb --- /dev/null +++ b/packages/cloud/src/bridge/BridgeOrchestrator.ts @@ -0,0 +1,273 @@ +import crypto from "crypto" + +import { + type TaskProviderLike, + type TaskLike, + type CloudUserInfo, + type ExtensionBridgeCommand, + type TaskBridgeCommand, + ConnectionState, + ExtensionSocketEvents, + TaskSocketEvents, +} from "@roo-code/types" + +import { SocketTransport } from "./SocketTransport.js" +import { ExtensionChannel } from "./ExtensionChannel.js" +import { TaskChannel } from "./TaskChannel.js" + +export interface BridgeOrchestratorOptions { + userId: string + socketBridgeUrl: string + token: string + provider: TaskProviderLike + sessionId?: string +} + +/** + * Central orchestrator for the extension bridge system. + * Coordinates communication between the VSCode extension and web application + * through WebSocket connections and manages extension/task channels. + */ +export class BridgeOrchestrator { + private static instance: BridgeOrchestrator | null = null + + // Core + private readonly userId: string + private readonly socketBridgeUrl: string + private readonly token: string + private readonly provider: TaskProviderLike + private readonly instanceId: string + + // Components + private socketTransport: SocketTransport + private extensionChannel: ExtensionChannel + private taskChannel: TaskChannel + + // Reconnection + private readonly MAX_RECONNECT_ATTEMPTS = Infinity + private readonly RECONNECT_DELAY = 1_000 + private readonly RECONNECT_DELAY_MAX = 30_000 + + public static getInstance(): BridgeOrchestrator | null { + return BridgeOrchestrator.instance + } + + public static isEnabled(user?: CloudUserInfo | null, remoteControlEnabled?: boolean): boolean { + return !!(user?.id && user.extensionBridgeEnabled && remoteControlEnabled) + } + + public static async connectOrDisconnect( + userInfo: CloudUserInfo | null, + remoteControlEnabled: boolean | undefined, + options: BridgeOrchestratorOptions, + ): Promise { + const isEnabled = BridgeOrchestrator.isEnabled(userInfo, remoteControlEnabled) + const instance = BridgeOrchestrator.instance + + if (isEnabled) { + if (!instance) { + try { + console.log(`[BridgeOrchestrator#connectOrDisconnect] Connecting...`) + BridgeOrchestrator.instance = new BridgeOrchestrator(options) + await BridgeOrchestrator.instance.connect() + } catch (error) { + console.error( + `[BridgeOrchestrator#connectOrDisconnect] connect() failed: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } else { + if ( + instance.connectionState === ConnectionState.FAILED || + instance.connectionState === ConnectionState.DISCONNECTED + ) { + console.log( + `[BridgeOrchestrator#connectOrDisconnect] Re-connecting... (state: ${instance.connectionState})`, + ) + + instance.reconnect().catch((error) => { + console.error( + `[BridgeOrchestrator#connectOrDisconnect] reconnect() failed: ${error instanceof Error ? error.message : String(error)}`, + ) + }) + } else { + console.log( + `[BridgeOrchestrator#connectOrDisconnect] Already connected or connecting (state: ${instance.connectionState})`, + ) + } + } + } else { + if (instance) { + try { + console.log( + `[BridgeOrchestrator#connectOrDisconnect] Disconnecting... (state: ${instance.connectionState})`, + ) + + await instance.disconnect() + } catch (error) { + console.error( + `[BridgeOrchestrator#connectOrDisconnect] disconnect() failed: ${error instanceof Error ? error.message : String(error)}`, + ) + } finally { + BridgeOrchestrator.instance = null + } + } else { + console.log(`[BridgeOrchestrator#connectOrDisconnect] Already disconnected`) + } + } + } + + private constructor(options: BridgeOrchestratorOptions) { + this.userId = options.userId + this.socketBridgeUrl = options.socketBridgeUrl + this.token = options.token + this.provider = options.provider + this.instanceId = options.sessionId || crypto.randomUUID() + + this.socketTransport = new SocketTransport({ + url: this.socketBridgeUrl, + socketOptions: { + query: { + token: this.token, + clientType: "extension", + instanceId: this.instanceId, + }, + transports: ["websocket", "polling"], + reconnection: true, + reconnectionAttempts: this.MAX_RECONNECT_ATTEMPTS, + reconnectionDelay: this.RECONNECT_DELAY, + reconnectionDelayMax: this.RECONNECT_DELAY_MAX, + }, + onConnect: () => this.handleConnect(), + onDisconnect: () => this.handleDisconnect(), + onReconnect: () => this.handleReconnect(), + }) + + this.extensionChannel = new ExtensionChannel(this.instanceId, this.userId, this.provider) + this.taskChannel = new TaskChannel(this.instanceId) + } + + private setupSocketListeners() { + const socket = this.socketTransport.getSocket() + + if (!socket) { + console.error("[BridgeOrchestrator] Socket not available") + return + } + + // Remove any existing listeners first to prevent duplicates. + socket.off(ExtensionSocketEvents.RELAYED_COMMAND) + socket.off(TaskSocketEvents.RELAYED_COMMAND) + socket.off("connected") + + socket.on(ExtensionSocketEvents.RELAYED_COMMAND, (message: ExtensionBridgeCommand) => { + console.log( + `[BridgeOrchestrator] on(${ExtensionSocketEvents.RELAYED_COMMAND}) -> ${message.type} for ${message.instanceId}`, + ) + + this.extensionChannel?.handleCommand(message) + }) + + socket.on(TaskSocketEvents.RELAYED_COMMAND, (message: TaskBridgeCommand) => { + console.log( + `[BridgeOrchestrator] on(${TaskSocketEvents.RELAYED_COMMAND}) -> ${message.type} for ${message.taskId}`, + ) + + this.taskChannel.handleCommand(message) + }) + } + + private async handleConnect() { + const socket = this.socketTransport.getSocket() + + if (!socket) { + console.error("[BridgeOrchestrator] Socket not available after connect") + return + } + + await this.extensionChannel.onConnect(socket) + await this.taskChannel.onConnect(socket) + } + + private handleDisconnect() { + this.extensionChannel.onDisconnect() + this.taskChannel.onDisconnect() + } + + private async handleReconnect() { + const socket = this.socketTransport.getSocket() + + if (!socket) { + console.error("[BridgeOrchestrator] Socket not available after reconnect") + return + } + + // Re-setup socket listeners to ensure they're properly configured + // after automatic reconnection (Socket.IO's built-in reconnection) + // The socket.off() calls in setupSocketListeners prevent duplicates + this.setupSocketListeners() + + await this.extensionChannel.onReconnect(socket) + await this.taskChannel.onReconnect(socket) + } + + // Task API + + public async subscribeToTask(task: TaskLike): Promise { + const socket = this.socketTransport.getSocket() + + if (!socket || !this.socketTransport.isConnected()) { + console.warn("[BridgeOrchestrator] Cannot subscribe to task: not connected. Will retry when connected.") + this.taskChannel.addPendingTask(task) + + if ( + this.connectionState === ConnectionState.DISCONNECTED || + this.connectionState === ConnectionState.FAILED + ) { + await this.connect() + } + + return + } + + await this.taskChannel.subscribeToTask(task, socket) + } + + public async unsubscribeFromTask(taskId: string): Promise { + const socket = this.socketTransport.getSocket() + + if (!socket) { + return + } + + await this.taskChannel.unsubscribeFromTask(taskId, socket) + } + + // Shared API + + public get connectionState(): ConnectionState { + return this.socketTransport.getConnectionState() + } + + private async connect(): Promise { + // Populate the app and git properties before registering the instance. + await this.provider.getTelemetryProperties() + + await this.socketTransport.connect() + this.setupSocketListeners() + } + + public async disconnect(): Promise { + await this.extensionChannel.cleanup(this.socketTransport.getSocket()) + await this.taskChannel.cleanup(this.socketTransport.getSocket()) + await this.socketTransport.disconnect() + BridgeOrchestrator.instance = null + } + + public async reconnect(): Promise { + await this.socketTransport.reconnect() + + // After a manual reconnect, we have a new socket instance + // so we need to set up listeners again. + this.setupSocketListeners() + } +} diff --git a/packages/cloud/src/bridge/ExtensionBridgeService.ts b/packages/cloud/src/bridge/ExtensionBridgeService.ts deleted file mode 100644 index 0ab7e304f206..000000000000 --- a/packages/cloud/src/bridge/ExtensionBridgeService.ts +++ /dev/null @@ -1,290 +0,0 @@ -import crypto from "crypto" - -import { - type TaskProviderLike, - type TaskLike, - type CloudUserInfo, - type ExtensionBridgeCommand, - type TaskBridgeCommand, - ConnectionState, - ExtensionSocketEvents, - TaskSocketEvents, -} from "@roo-code/types" - -import { SocketConnectionManager } from "./SocketConnectionManager.js" -import { ExtensionManager } from "./ExtensionManager.js" -import { TaskManager } from "./TaskManager.js" - -export interface ExtensionBridgeServiceOptions { - userId: string - socketBridgeUrl: string - token: string - provider: TaskProviderLike - sessionId?: string -} - -export class ExtensionBridgeService { - private static instance: ExtensionBridgeService | null = null - - // Core - private readonly userId: string - private readonly socketBridgeUrl: string - private readonly token: string - private readonly provider: TaskProviderLike - private readonly instanceId: string - - // Managers - private connectionManager: SocketConnectionManager - private extensionManager: ExtensionManager - private taskManager: TaskManager - - // Reconnection - private readonly MAX_RECONNECT_ATTEMPTS = Infinity - private readonly RECONNECT_DELAY = 1_000 - private readonly RECONNECT_DELAY_MAX = 30_000 - - public static getInstance(): ExtensionBridgeService | null { - return ExtensionBridgeService.instance - } - - public static async createInstance(options: ExtensionBridgeServiceOptions) { - console.log("[ExtensionBridgeService] createInstance") - ExtensionBridgeService.instance = new ExtensionBridgeService(options) - await ExtensionBridgeService.instance.initialize() - return ExtensionBridgeService.instance - } - - public static resetInstance() { - if (ExtensionBridgeService.instance) { - console.log("[ExtensionBridgeService] resetInstance") - ExtensionBridgeService.instance.disconnect().catch(() => {}) - ExtensionBridgeService.instance = null - } - } - - public static async handleRemoteControlState( - userInfo: CloudUserInfo | null, - remoteControlEnabled: boolean | undefined, - options: ExtensionBridgeServiceOptions, - logger?: (message: string) => void, - ) { - if (userInfo?.extensionBridgeEnabled && remoteControlEnabled) { - const existingService = ExtensionBridgeService.getInstance() - - if (!existingService) { - try { - const service = await ExtensionBridgeService.createInstance(options) - const state = service.getConnectionState() - - logger?.(`[ExtensionBridgeService#handleRemoteControlState] Instance created (state: ${state})`) - - if (state !== ConnectionState.CONNECTED) { - logger?.( - `[ExtensionBridgeService#handleRemoteControlState] Service is not connected yet, will retry in background`, - ) - } - } catch (error) { - const message = `[ExtensionBridgeService#handleRemoteControlState] Failed to create instance: ${ - error instanceof Error ? error.message : String(error) - }` - - logger?.(message) - console.error(message) - } - } else { - const state = existingService.getConnectionState() - - if (state === ConnectionState.FAILED || state === ConnectionState.DISCONNECTED) { - logger?.( - `[ExtensionBridgeService#handleRemoteControlState] Existing service is ${state}, attempting reconnection`, - ) - - existingService.reconnect().catch((error) => { - const message = `[ExtensionBridgeService#handleRemoteControlState] Reconnection failed: ${ - error instanceof Error ? error.message : String(error) - }` - - logger?.(message) - console.error(message) - }) - } - } - } else { - const existingService = ExtensionBridgeService.getInstance() - - if (existingService) { - try { - await existingService.disconnect() - ExtensionBridgeService.resetInstance() - - logger?.(`[ExtensionBridgeService#handleRemoteControlState] Service disconnected and reset`) - } catch (error) { - const message = `[ExtensionBridgeService#handleRemoteControlState] Failed to disconnect and reset instance: ${ - error instanceof Error ? error.message : String(error) - }` - - logger?.(message) - console.error(message) - } - } - } - } - - private constructor(options: ExtensionBridgeServiceOptions) { - this.userId = options.userId - this.socketBridgeUrl = options.socketBridgeUrl - this.token = options.token - this.provider = options.provider - this.instanceId = options.sessionId || crypto.randomUUID() - - this.connectionManager = new SocketConnectionManager({ - url: this.socketBridgeUrl, - socketOptions: { - query: { - token: this.token, - clientType: "extension", - instanceId: this.instanceId, - }, - transports: ["websocket", "polling"], - reconnection: true, - reconnectionAttempts: this.MAX_RECONNECT_ATTEMPTS, - reconnectionDelay: this.RECONNECT_DELAY, - reconnectionDelayMax: this.RECONNECT_DELAY_MAX, - }, - onConnect: () => this.handleConnect(), - onDisconnect: () => this.handleDisconnect(), - onReconnect: () => this.handleReconnect(), - }) - - this.extensionManager = new ExtensionManager(this.instanceId, this.userId, this.provider) - - this.taskManager = new TaskManager() - } - - private async initialize() { - // Populate the app and git properties before registering the instance. - await this.provider.getTelemetryProperties() - - await this.connectionManager.connect() - this.setupSocketListeners() - } - - private setupSocketListeners() { - const socket = this.connectionManager.getSocket() - - if (!socket) { - console.error("[ExtensionBridgeService] Socket not available") - return - } - - // Remove any existing listeners first to prevent duplicates. - socket.off(ExtensionSocketEvents.RELAYED_COMMAND) - socket.off(TaskSocketEvents.RELAYED_COMMAND) - socket.off("connected") - - socket.on(ExtensionSocketEvents.RELAYED_COMMAND, (message: ExtensionBridgeCommand) => { - console.log( - `[ExtensionBridgeService] on(${ExtensionSocketEvents.RELAYED_COMMAND}) -> ${message.type} for ${message.instanceId}`, - ) - - this.extensionManager?.handleExtensionCommand(message) - }) - - socket.on(TaskSocketEvents.RELAYED_COMMAND, (message: TaskBridgeCommand) => { - console.log( - `[ExtensionBridgeService] on(${TaskSocketEvents.RELAYED_COMMAND}) -> ${message.type} for ${message.taskId}`, - ) - - this.taskManager.handleTaskCommand(message) - }) - } - - private async handleConnect() { - const socket = this.connectionManager.getSocket() - - if (!socket) { - console.error("[ExtensionBridgeService] Socket not available after connect") - - return - } - - await this.extensionManager.onConnect(socket) - await this.taskManager.onConnect(socket) - } - - private handleDisconnect() { - this.extensionManager.onDisconnect() - this.taskManager.onDisconnect() - } - - private async handleReconnect() { - const socket = this.connectionManager.getSocket() - - if (!socket) { - console.error("[ExtensionBridgeService] Socket not available after reconnect") - - return - } - - // Re-setup socket listeners to ensure they're properly configured - // after automatic reconnection (Socket.IO's built-in reconnection) - // The socket.off() calls in setupSocketListeners prevent duplicates - this.setupSocketListeners() - - await this.extensionManager.onReconnect(socket) - await this.taskManager.onReconnect(socket) - } - - // Task API - - public async subscribeToTask(task: TaskLike): Promise { - const socket = this.connectionManager.getSocket() - - if (!socket || !this.connectionManager.isConnected()) { - console.warn("[ExtensionBridgeService] Cannot subscribe to task: not connected. Will retry when connected.") - - this.taskManager.addPendingTask(task) - - const state = this.connectionManager.getConnectionState() - - if (state === ConnectionState.DISCONNECTED || state === ConnectionState.FAILED) { - this.initialize() - } - - return - } - - await this.taskManager.subscribeToTask(task, socket) - } - - public async unsubscribeFromTask(taskId: string): Promise { - const socket = this.connectionManager.getSocket() - - if (!socket) { - return - } - - await this.taskManager.unsubscribeFromTask(taskId, socket) - } - - // Shared API - - public getConnectionState(): ConnectionState { - return this.connectionManager.getConnectionState() - } - - public async disconnect(): Promise { - await this.extensionManager.cleanup(this.connectionManager.getSocket()) - await this.taskManager.cleanup(this.connectionManager.getSocket()) - await this.connectionManager.disconnect() - ExtensionBridgeService.instance = null - } - - public async reconnect(): Promise { - await this.connectionManager.reconnect() - - // After a manual reconnect, we have a new socket instance - // so we need to set up listeners again. - this.setupSocketListeners() - } -} diff --git a/packages/cloud/src/bridge/ExtensionChannel.ts b/packages/cloud/src/bridge/ExtensionChannel.ts new file mode 100644 index 000000000000..99649f76f4c3 --- /dev/null +++ b/packages/cloud/src/bridge/ExtensionChannel.ts @@ -0,0 +1,220 @@ +import type { Socket } from "socket.io-client" + +import { + type TaskProviderLike, + type TaskProviderEvents, + type ExtensionInstance, + type ExtensionBridgeCommand, + type ExtensionBridgeEvent, + RooCodeEventName, + TaskStatus, + ExtensionBridgeCommandName, + ExtensionBridgeEventName, + ExtensionSocketEvents, + HEARTBEAT_INTERVAL_MS, +} from "@roo-code/types" + +import { BaseChannel } from "./BaseChannel.js" + +/** + * Manages the extension-level communication channel. + * Handles extension registration, heartbeat, and extension-specific commands. + */ +export class ExtensionChannel extends BaseChannel< + ExtensionBridgeCommand, + ExtensionSocketEvents, + ExtensionBridgeEvent | ExtensionInstance +> { + private userId: string + private provider: TaskProviderLike + private extensionInstance: ExtensionInstance + private heartbeatInterval: NodeJS.Timeout | null = null + private eventListeners: Map void> = new Map() + + constructor(instanceId: string, userId: string, provider: TaskProviderLike) { + super(instanceId) + this.userId = userId + this.provider = provider + + this.extensionInstance = { + instanceId: this.instanceId, + userId: this.userId, + workspacePath: this.provider.cwd, + appProperties: this.provider.appProperties, + gitProperties: this.provider.gitProperties, + lastHeartbeat: Date.now(), + task: { + taskId: "", + taskStatus: TaskStatus.None, + }, + taskHistory: [], + } + + this.setupListeners() + } + + /** + * Handle extension-specific commands from the web app + */ + public handleCommand(command: ExtensionBridgeCommand): void { + if (command.instanceId !== this.instanceId) { + console.log(`[ExtensionChannel] command -> instance id mismatch | ${this.instanceId}`, { + messageInstanceId: command.instanceId, + }) + return + } + + switch (command.type) { + case ExtensionBridgeCommandName.StartTask: { + console.log(`[ExtensionChannel] command -> createTask() | ${command.instanceId}`, { + text: command.payload.text?.substring(0, 100) + "...", + hasImages: !!command.payload.images, + }) + + this.provider.createTask(command.payload.text, command.payload.images) + break + } + case ExtensionBridgeCommandName.StopTask: { + const instance = this.updateInstance() + + if (instance.task.taskStatus === TaskStatus.Running) { + console.log(`[ExtensionChannel] command -> cancelTask() | ${command.instanceId}`) + this.provider.cancelTask() + this.provider.postStateToWebview() + } else if (instance.task.taskId) { + console.log(`[ExtensionChannel] command -> clearTask() | ${command.instanceId}`) + this.provider.clearTask() + this.provider.postStateToWebview() + } + break + } + case ExtensionBridgeCommandName.ResumeTask: { + console.log(`[ExtensionChannel] command -> resumeTask() | ${command.instanceId}`, { + taskId: command.payload.taskId, + }) + + // Resume the task from history by taskId + this.provider.resumeTask(command.payload.taskId) + this.provider.postStateToWebview() + break + } + } + } + + protected async handleConnect(socket: Socket): Promise { + await this.registerInstance(socket) + this.startHeartbeat(socket) + } + + protected async handleReconnect(socket: Socket): Promise { + await this.registerInstance(socket) + this.startHeartbeat(socket) + } + + protected override handleDisconnect(): void { + this.stopHeartbeat() + } + + protected async handleCleanup(socket: Socket): Promise { + this.stopHeartbeat() + this.cleanupListeners() + await this.unregisterInstance(socket) + } + + private async registerInstance(_socket: Socket): Promise { + const instance = this.updateInstance() + await this.publish(ExtensionSocketEvents.REGISTER, instance) + } + + private async unregisterInstance(_socket: Socket): Promise { + const instance = this.updateInstance() + await this.publish(ExtensionSocketEvents.UNREGISTER, instance) + } + + private startHeartbeat(socket: Socket): void { + this.stopHeartbeat() + + this.heartbeatInterval = setInterval(async () => { + const instance = this.updateInstance() + + try { + socket.emit(ExtensionSocketEvents.HEARTBEAT, instance) + // Heartbeat is too frequent to log + } catch (error) { + console.error( + `[ExtensionChannel] emit() failed -> ${ExtensionSocketEvents.HEARTBEAT}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + }, HEARTBEAT_INTERVAL_MS) + } + + private stopHeartbeat(): void { + if (this.heartbeatInterval) { + clearInterval(this.heartbeatInterval) + this.heartbeatInterval = null + } + } + + private setupListeners(): void { + const eventMapping = [ + { from: RooCodeEventName.TaskCreated, to: ExtensionBridgeEventName.TaskCreated }, + { from: RooCodeEventName.TaskStarted, to: ExtensionBridgeEventName.TaskStarted }, + { from: RooCodeEventName.TaskCompleted, to: ExtensionBridgeEventName.TaskCompleted }, + { from: RooCodeEventName.TaskAborted, to: ExtensionBridgeEventName.TaskAborted }, + { from: RooCodeEventName.TaskFocused, to: ExtensionBridgeEventName.TaskFocused }, + { from: RooCodeEventName.TaskUnfocused, to: ExtensionBridgeEventName.TaskUnfocused }, + { from: RooCodeEventName.TaskActive, to: ExtensionBridgeEventName.TaskActive }, + { from: RooCodeEventName.TaskInteractive, to: ExtensionBridgeEventName.TaskInteractive }, + { from: RooCodeEventName.TaskResumable, to: ExtensionBridgeEventName.TaskResumable }, + { from: RooCodeEventName.TaskIdle, to: ExtensionBridgeEventName.TaskIdle }, + ] as const + + eventMapping.forEach(({ from, to }) => { + // Create and store the listener function for cleanup/ + const listener = (..._args: unknown[]) => { + this.publish(ExtensionSocketEvents.EVENT, { + type: to, + instance: this.updateInstance(), + timestamp: Date.now(), + }) + } + + this.eventListeners.set(from, listener) + this.provider.on(from, listener) + }) + } + + private cleanupListeners(): void { + this.eventListeners.forEach((listener, eventName) => { + // Cast is safe because we only store valid event names from eventMapping. + this.provider.off(eventName as keyof TaskProviderEvents, listener) + }) + + this.eventListeners.clear() + } + + private updateInstance(): ExtensionInstance { + const task = this.provider?.getCurrentTask() + const taskHistory = this.provider?.getRecentTasks() ?? [] + + this.extensionInstance = { + ...this.extensionInstance, + appProperties: this.extensionInstance.appProperties ?? this.provider.appProperties, + gitProperties: this.extensionInstance.gitProperties ?? this.provider.gitProperties, + lastHeartbeat: Date.now(), + task: task + ? { + taskId: task.taskId, + taskStatus: task.taskStatus, + ...task.metadata, + } + : { taskId: "", taskStatus: TaskStatus.None }, + taskAsk: task?.taskAsk, + taskHistory, + } + + return this.extensionInstance + } +} diff --git a/packages/cloud/src/bridge/ExtensionManager.ts b/packages/cloud/src/bridge/ExtensionManager.ts deleted file mode 100644 index 335245e24c81..000000000000 --- a/packages/cloud/src/bridge/ExtensionManager.ts +++ /dev/null @@ -1,297 +0,0 @@ -import type { Socket } from "socket.io-client" - -import { - type TaskProviderLike, - type ExtensionInstance, - type ExtensionBridgeCommand, - type ExtensionBridgeEvent, - RooCodeEventName, - TaskStatus, - ExtensionBridgeCommandName, - ExtensionBridgeEventName, - ExtensionSocketEvents, - HEARTBEAT_INTERVAL_MS, -} from "@roo-code/types" - -export class ExtensionManager { - private instanceId: string - private userId: string - private provider: TaskProviderLike - private extensionInstance: ExtensionInstance - private heartbeatInterval: NodeJS.Timeout | null = null - private socket: Socket | null = null - - constructor(instanceId: string, userId: string, provider: TaskProviderLike) { - this.instanceId = instanceId - this.userId = userId - this.provider = provider - - this.extensionInstance = { - instanceId: this.instanceId, - userId: this.userId, - workspacePath: this.provider.cwd, - appProperties: this.provider.appProperties, - gitProperties: this.provider.gitProperties, - lastHeartbeat: Date.now(), - task: { - taskId: "", - taskStatus: TaskStatus.None, - }, - taskHistory: [], - } - - this.setupListeners() - } - - public async onConnect(socket: Socket): Promise { - this.socket = socket - await this.registerInstance(socket) - this.startHeartbeat(socket) - } - - public onDisconnect(): void { - this.stopHeartbeat() - this.socket = null - } - - public async onReconnect(socket: Socket): Promise { - this.socket = socket - await this.registerInstance(socket) - this.startHeartbeat(socket) - } - - public async cleanup(socket: Socket | null): Promise { - this.stopHeartbeat() - - if (socket) { - await this.unregisterInstance(socket) - } - - this.socket = null - } - - public handleExtensionCommand(message: ExtensionBridgeCommand): void { - if (message.instanceId !== this.instanceId) { - console.log(`[ExtensionManager] command -> instance id mismatch | ${this.instanceId}`, { - messageInstanceId: message.instanceId, - }) - - return - } - - switch (message.type) { - case ExtensionBridgeCommandName.StartTask: { - console.log(`[ExtensionManager] command -> createTask() | ${message.instanceId}`, { - text: message.payload.text?.substring(0, 100) + "...", - hasImages: !!message.payload.images, - }) - - this.provider.createTask(message.payload.text, message.payload.images) - - break - } - case ExtensionBridgeCommandName.StopTask: { - const instance = this.updateInstance() - - if (instance.task.taskStatus === TaskStatus.Running) { - console.log(`[ExtensionManager] command -> cancelTask() | ${message.instanceId}`) - - this.provider.cancelTask() - this.provider.postStateToWebview() - } else if (instance.task.taskId) { - console.log(`[ExtensionManager] command -> clearTask() | ${message.instanceId}`) - - this.provider.clearTask() - this.provider.postStateToWebview() - } - - break - } - case ExtensionBridgeCommandName.ResumeTask: { - console.log(`[ExtensionManager] command -> resumeTask() | ${message.instanceId}`, { - taskId: message.payload.taskId, - }) - - // Resume the task from history by taskId - this.provider.resumeTask(message.payload.taskId) - - this.provider.postStateToWebview() - - break - } - } - } - - private async registerInstance(socket: Socket): Promise { - const instance = this.updateInstance() - - try { - socket.emit(ExtensionSocketEvents.REGISTER, instance) - - console.log( - `[ExtensionManager] emit() -> ${ExtensionSocketEvents.REGISTER}`, - // instance, - ) - } catch (error) { - console.error( - `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.REGISTER}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - - return - } - } - - private async unregisterInstance(socket: Socket): Promise { - const instance = this.updateInstance() - - try { - socket.emit(ExtensionSocketEvents.UNREGISTER, instance) - - console.log( - `[ExtensionManager] emit() -> ${ExtensionSocketEvents.UNREGISTER}`, - // instance, - ) - } catch (error) { - console.error( - `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.UNREGISTER}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - } - } - - private startHeartbeat(socket: Socket): void { - this.stopHeartbeat() - - this.heartbeatInterval = setInterval(async () => { - const instance = this.updateInstance() - - try { - socket.emit(ExtensionSocketEvents.HEARTBEAT, instance) - - // console.log( - // `[ExtensionManager] emit() -> ${ExtensionSocketEvents.HEARTBEAT}`, - // instance, - // ); - } catch (error) { - console.error( - `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.HEARTBEAT}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - } - }, HEARTBEAT_INTERVAL_MS) - } - - private stopHeartbeat(): void { - if (this.heartbeatInterval) { - clearInterval(this.heartbeatInterval) - this.heartbeatInterval = null - } - } - - private setupListeners(): void { - const eventMapping = [ - { - from: RooCodeEventName.TaskCreated, - to: ExtensionBridgeEventName.TaskCreated, - }, - { - from: RooCodeEventName.TaskStarted, - to: ExtensionBridgeEventName.TaskStarted, - }, - { - from: RooCodeEventName.TaskCompleted, - to: ExtensionBridgeEventName.TaskCompleted, - }, - { - from: RooCodeEventName.TaskAborted, - to: ExtensionBridgeEventName.TaskAborted, - }, - { - from: RooCodeEventName.TaskFocused, - to: ExtensionBridgeEventName.TaskFocused, - }, - { - from: RooCodeEventName.TaskUnfocused, - to: ExtensionBridgeEventName.TaskUnfocused, - }, - { - from: RooCodeEventName.TaskActive, - to: ExtensionBridgeEventName.TaskActive, - }, - { - from: RooCodeEventName.TaskInteractive, - to: ExtensionBridgeEventName.TaskInteractive, - }, - { - from: RooCodeEventName.TaskResumable, - to: ExtensionBridgeEventName.TaskResumable, - }, - { - from: RooCodeEventName.TaskIdle, - to: ExtensionBridgeEventName.TaskIdle, - }, - ] as const - - const addListener = - (type: ExtensionBridgeEventName) => - async (..._args: unknown[]) => { - this.publishEvent({ - type, - instance: this.updateInstance(), - timestamp: Date.now(), - }) - } - - eventMapping.forEach(({ from, to }) => this.provider.on(from, addListener(to))) - } - - private async publishEvent(message: ExtensionBridgeEvent): Promise { - if (!this.socket) { - console.error("[ExtensionManager] publishEvent -> socket not available") - return false - } - - try { - this.socket.emit(ExtensionSocketEvents.EVENT, message) - - console.log(`[ExtensionManager] emit() -> ${ExtensionSocketEvents.EVENT} ${message.type}`, message) - - return true - } catch (error) { - console.error( - `[ExtensionManager] emit() failed -> ${ExtensionSocketEvents.EVENT}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - - return false - } - } - - private updateInstance(): ExtensionInstance { - const task = this.provider?.getCurrentTask() - const taskHistory = this.provider?.getRecentTasks() ?? [] - - this.extensionInstance = { - ...this.extensionInstance, - appProperties: this.extensionInstance.appProperties ?? this.provider.appProperties, - gitProperties: this.extensionInstance.gitProperties ?? this.provider.gitProperties, - lastHeartbeat: Date.now(), - task: task - ? { - taskId: task.taskId, - taskStatus: task.taskStatus, - ...task.metadata, - } - : { taskId: "", taskStatus: TaskStatus.None }, - taskAsk: task?.taskAsk, - taskHistory, - } - - return this.extensionInstance - } -} diff --git a/packages/cloud/src/bridge/SocketConnectionManager.ts b/packages/cloud/src/bridge/SocketTransport.ts similarity index 72% rename from packages/cloud/src/bridge/SocketConnectionManager.ts rename to packages/cloud/src/bridge/SocketTransport.ts index 3ba9631fec21..5fb40e989c8a 100644 --- a/packages/cloud/src/bridge/SocketConnectionManager.ts +++ b/packages/cloud/src/bridge/SocketTransport.ts @@ -1,10 +1,10 @@ -import { io, type Socket } from "socket.io-client" +import { io, type Socket, type SocketOptions, type ManagerOptions } from "socket.io-client" import { ConnectionState, type RetryConfig } from "@roo-code/types" -export interface SocketConnectionOptions { +export interface SocketTransportOptions { url: string - socketOptions: Record + socketOptions: Partial onConnect?: () => void | Promise onDisconnect?: (reason: string) => void onReconnect?: (attemptNumber: number) => void | Promise @@ -16,7 +16,11 @@ export interface SocketConnectionOptions { } } -export class SocketConnectionManager { +/** + * Manages the WebSocket transport layer for the bridge system. + * Handles connection lifecycle, retries, and reconnection logic. + */ +export class SocketTransport { private socket: Socket | null = null private connectionState: ConnectionState = ConnectionState.DISCONNECTED private retryAttempt: number = 0 @@ -31,9 +35,9 @@ export class SocketConnectionManager { } private readonly CONNECTION_TIMEOUT = 2_000 - private readonly options: SocketConnectionOptions + private readonly options: SocketTransportOptions - constructor(options: SocketConnectionOptions, retryConfig?: Partial) { + constructor(options: SocketTransportOptions, retryConfig?: Partial) { this.options = options if (retryConfig) { @@ -43,13 +47,12 @@ export class SocketConnectionManager { public async connect(): Promise { if (this.connectionState === ConnectionState.CONNECTED) { - console.log(`[SocketConnectionManager] Already connected`) + console.log(`[SocketTransport] Already connected`) return } if (this.connectionState === ConnectionState.CONNECTING || this.connectionState === ConnectionState.RETRYING) { - console.log(`[SocketConnectionManager] Connection attempt already in progress`) - + console.log(`[SocketTransport] Connection attempt already in progress`) return } @@ -63,7 +66,9 @@ export class SocketConnectionManager { try { await this.connectWithRetry() } catch (error) { - console.error(`[SocketConnectionManager] Initial connection attempts failed:`, error) + console.error( + `[SocketTransport] Initial connection attempts failed: ${error instanceof Error ? error.message : String(error)}`, + ) // If we've never connected successfully, we've exhausted our retry attempts // The user will need to manually retry or fix the issue @@ -79,12 +84,12 @@ export class SocketConnectionManager { this.connectionState = this.retryAttempt === 0 ? ConnectionState.CONNECTING : ConnectionState.RETRYING console.log( - `[SocketConnectionManager] Connection attempt ${this.retryAttempt + 1} / ${this.retryConfig.maxInitialAttempts}`, + `[SocketTransport] Connection attempt ${this.retryAttempt + 1} / ${this.retryConfig.maxInitialAttempts}`, ) await this.connectSocket() - console.log(`[SocketConnectionManager] Connected to ${this.options.url}`) + console.log(`[SocketTransport] Connected to ${this.options.url}`) this.connectionState = ConnectionState.CONNECTED this.retryAttempt = 0 @@ -99,7 +104,7 @@ export class SocketConnectionManager { } catch (error) { this.retryAttempt++ - console.error(`[SocketConnectionManager] Connection attempt ${this.retryAttempt} failed:`, error) + console.error(`[SocketTransport] Connection attempt ${this.retryAttempt} failed:`, error) if (this.socket) { this.socket.disconnect() @@ -112,7 +117,7 @@ export class SocketConnectionManager { throw new Error(`Failed to connect after ${this.retryConfig.maxInitialAttempts} attempts`) } - console.log(`[SocketConnectionManager] Waiting ${delay}ms before retry...`) + console.log(`[SocketTransport] Waiting ${delay}ms before retry...`) await this.delay(delay) @@ -126,7 +131,7 @@ export class SocketConnectionManager { this.socket = io(this.options.url, this.options.socketOptions) const connectionTimeout = setTimeout(() => { - console.error(`[SocketConnectionManager] Connection timeout`) + console.error(`[SocketTransport] Connection timeout`) if (this.connectionState !== ConnectionState.CONNECTED) { this.socket?.disconnect() @@ -140,12 +145,9 @@ export class SocketConnectionManager { const isReconnection = this.hasConnectedOnce // If this is a reconnection (not the first connect), treat it as a - // reconnect. - // This handles server restarts where 'reconnect' event might not fire. + // reconnect. This handles server restarts where 'reconnect' event might not fire. if (isReconnection) { - console.log( - `[SocketConnectionManager] Treating connect as reconnection (server may have restarted)`, - ) + console.log(`[SocketTransport] Treating connect as reconnection (server may have restarted)`) this.connectionState = ConnectionState.CONNECTED @@ -160,7 +162,7 @@ export class SocketConnectionManager { }) this.socket.on("disconnect", (reason: string) => { - console.log(`[SocketConnectionManager] Disconnected (reason: ${reason})`) + console.log(`[SocketTransport] Disconnected (reason: ${reason})`) this.connectionState = ConnectionState.DISCONNECTED @@ -174,19 +176,19 @@ export class SocketConnectionManager { if (!isManualDisconnect && this.hasConnectedOnce) { // After successful initial connection, rely entirely on Socket.IO's // reconnection. - console.log(`[SocketConnectionManager] Socket.IO will handle reconnection (reason: ${reason})`) + console.log(`[SocketTransport] Socket.IO will handle reconnection (reason: ${reason})`) } }) // Listen for reconnection attempts. this.socket.on("reconnect_attempt", (attemptNumber: number) => { - console.log(`[SocketConnectionManager] Socket.IO reconnect attempt:`, { + console.log(`[SocketTransport] Socket.IO reconnect attempt:`, { attemptNumber, }) }) this.socket.on("reconnect", (attemptNumber: number) => { - console.log(`[SocketConnectionManager] Socket reconnected (attempt: ${attemptNumber})`) + console.log(`[SocketTransport] Socket reconnected (attempt: ${attemptNumber})`) this.connectionState = ConnectionState.CONNECTED @@ -196,11 +198,11 @@ export class SocketConnectionManager { }) this.socket.on("reconnect_error", (error: Error) => { - console.error(`[SocketConnectionManager] Socket.IO reconnect error:`, error) + console.error(`[SocketTransport] Socket.IO reconnect error:`, error) }) this.socket.on("reconnect_failed", () => { - console.error(`[SocketConnectionManager] Socket.IO reconnection failed after all attempts`) + console.error(`[SocketTransport] Socket.IO reconnection failed after all attempts`) this.connectionState = ConnectionState.FAILED @@ -209,7 +211,7 @@ export class SocketConnectionManager { }) this.socket.on("error", (error) => { - console.error(`[SocketConnectionManager] Socket error:`, error) + console.error(`[SocketTransport] Socket error:`, error) if (this.connectionState !== ConnectionState.CONNECTED) { clearTimeout(connectionTimeout) @@ -222,7 +224,7 @@ export class SocketConnectionManager { }) this.socket.on("auth_error", (error) => { - console.error(`[SocketConnectionManager] Authentication error:`, error) + console.error(`[SocketTransport] Authentication error:`, error) clearTimeout(connectionTimeout) reject(new Error(error.message || "Authentication failed")) }) @@ -235,9 +237,6 @@ export class SocketConnectionManager { }) } - // 1. Custom retry for initial connection attempts. - // 2. Socket.IO's built-in reconnection after successful initial connection. - private clearRetryTimeouts() { if (this.retryTimeout) { clearTimeout(this.retryTimeout) @@ -246,7 +245,7 @@ export class SocketConnectionManager { } public async disconnect(): Promise { - console.log(`[SocketConnectionManager] Disconnecting...`) + console.log(`[SocketTransport] Disconnecting...`) this.clearRetryTimeouts() @@ -258,7 +257,7 @@ export class SocketConnectionManager { this.connectionState = ConnectionState.DISCONNECTED - console.log(`[SocketConnectionManager] Disconnected`) + console.log(`[SocketTransport] Disconnected`) } public getSocket(): Socket | null { @@ -275,11 +274,11 @@ export class SocketConnectionManager { public async reconnect(): Promise { if (this.connectionState === ConnectionState.CONNECTED) { - console.log(`[SocketConnectionManager] Already connected`) + console.log(`[SocketTransport] Already connected`) return } - console.log(`[SocketConnectionManager] Manual reconnection requested`) + console.log(`[SocketTransport] Manual reconnection requested`) this.hasConnectedOnce = false diff --git a/packages/cloud/src/bridge/TaskChannel.ts b/packages/cloud/src/bridge/TaskChannel.ts new file mode 100644 index 000000000000..f4656dc6d2f6 --- /dev/null +++ b/packages/cloud/src/bridge/TaskChannel.ts @@ -0,0 +1,228 @@ +import type { Socket } from "socket.io-client" + +import { + type ClineMessage, + type TaskEvents, + type TaskLike, + type TaskBridgeCommand, + type TaskBridgeEvent, + type JoinResponse, + type LeaveResponse, + RooCodeEventName, + TaskBridgeEventName, + TaskBridgeCommandName, + TaskSocketEvents, +} from "@roo-code/types" + +import { BaseChannel } from "./BaseChannel.js" + +type TaskEventListener = { + [K in keyof TaskEvents]: (...args: TaskEvents[K]) => void | Promise +}[keyof TaskEvents] + +type TaskEventMapping = { + from: keyof TaskEvents + to: TaskBridgeEventName + createPayload: (task: TaskLike, ...args: any[]) => any // eslint-disable-line @typescript-eslint/no-explicit-any +} + +/** + * Manages task-level communication channels. + * Handles task subscriptions, messaging, and task-specific commands. + */ +export class TaskChannel extends BaseChannel< + TaskBridgeCommand, + TaskSocketEvents, + TaskBridgeEvent | { taskId: string } +> { + private subscribedTasks: Map = new Map() + private pendingTasks: Map = new Map() + private taskListeners: Map> = new Map() + + private readonly eventMapping: readonly TaskEventMapping[] = [ + { + from: RooCodeEventName.Message, + to: TaskBridgeEventName.Message, + createPayload: (task: TaskLike, data: { action: string; message: ClineMessage }) => ({ + type: TaskBridgeEventName.Message, + taskId: task.taskId, + action: data.action, + message: data.message, + }), + }, + { + from: RooCodeEventName.TaskModeSwitched, + to: TaskBridgeEventName.TaskModeSwitched, + createPayload: (task: TaskLike, mode: string) => ({ + type: TaskBridgeEventName.TaskModeSwitched, + taskId: task.taskId, + mode, + }), + }, + { + from: RooCodeEventName.TaskInteractive, + to: TaskBridgeEventName.TaskInteractive, + createPayload: (task: TaskLike, _taskId: string) => ({ + type: TaskBridgeEventName.TaskInteractive, + taskId: task.taskId, + }), + }, + ] as const + + constructor(instanceId: string) { + super(instanceId) + } + + public handleCommand(command: TaskBridgeCommand): void { + const task = this.subscribedTasks.get(command.taskId) + + if (!task) { + console.error(`[TaskChannel] Unable to find task ${command.taskId}`) + return + } + + switch (command.type) { + case TaskBridgeCommandName.Message: + console.log( + `[TaskChannel] ${TaskBridgeCommandName.Message} ${command.taskId} -> submitUserMessage()`, + command, + ) + task.submitUserMessage(command.payload.text, command.payload.images) + break + + case TaskBridgeCommandName.ApproveAsk: + console.log( + `[TaskChannel] ${TaskBridgeCommandName.ApproveAsk} ${command.taskId} -> approveAsk()`, + command, + ) + task.approveAsk(command.payload) + break + + case TaskBridgeCommandName.DenyAsk: + console.log(`[TaskChannel] ${TaskBridgeCommandName.DenyAsk} ${command.taskId} -> denyAsk()`, command) + task.denyAsk(command.payload) + break + } + } + + protected async handleConnect(socket: Socket): Promise { + // Rejoin all subscribed tasks. + for (const taskId of this.subscribedTasks.keys()) { + await this.publish(TaskSocketEvents.JOIN, { taskId }) + } + + // Subscribe to any pending tasks. + for (const task of this.pendingTasks.values()) { + await this.subscribeToTask(task, socket) + } + + this.pendingTasks.clear() + } + + protected async handleReconnect(_socket: Socket): Promise { + // Rejoin all subscribed tasks. + for (const taskId of this.subscribedTasks.keys()) { + await this.publish(TaskSocketEvents.JOIN, { taskId }) + } + } + + protected async handleCleanup(socket: Socket): Promise { + const unsubscribePromises = [] + + for (const taskId of this.subscribedTasks.keys()) { + unsubscribePromises.push(this.unsubscribeFromTask(taskId, socket)) + } + + await Promise.allSettled(unsubscribePromises) + this.subscribedTasks.clear() + this.taskListeners.clear() + this.pendingTasks.clear() + } + + /** + * Add a task to the pending queue (will be subscribed when connected). + */ + public addPendingTask(task: TaskLike): void { + this.pendingTasks.set(task.taskId, task) + } + + public async subscribeToTask(task: TaskLike, _socket: Socket): Promise { + const taskId = task.taskId + + await this.publish(TaskSocketEvents.JOIN, { taskId }, (response: JoinResponse) => { + if (response.success) { + console.log(`[TaskChannel#subscribeToTask] subscribed to ${taskId}`) + this.subscribedTasks.set(taskId, task) + this.setupTaskListeners(task) + } else { + console.error(`[TaskChannel#subscribeToTask] failed to subscribe to ${taskId}: ${response.error}`) + } + }) + } + + public async unsubscribeFromTask(taskId: string, _socket: Socket): Promise { + const task = this.subscribedTasks.get(taskId) + + await this.publish(TaskSocketEvents.LEAVE, { taskId }, (response: LeaveResponse) => { + if (response.success) { + console.log(`[TaskChannel#unsubscribeFromTask] unsubscribed from ${taskId}`, response) + } else { + console.error(`[TaskChannel#unsubscribeFromTask] failed to unsubscribe from ${taskId}`) + } + + // If we failed to unsubscribe then something is probably wrong and + // we should still discard this task from `subscribedTasks`. + if (task) { + this.removeTaskListeners(task) + this.subscribedTasks.delete(taskId) + } + }) + } + + private setupTaskListeners(task: TaskLike): void { + if (this.taskListeners.has(task.taskId)) { + console.warn("[TaskChannel] Listeners already exist for task, removing old listeners:", task.taskId) + this.removeTaskListeners(task) + } + + const listeners = new Map() + + this.eventMapping.forEach(({ from, to, createPayload }) => { + const listener = (...args: unknown[]) => { + const payload = createPayload(task, ...args) + this.publish(TaskSocketEvents.EVENT, payload) + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + task.on(from, listener as any) + listeners.set(to, listener) + }) + + this.taskListeners.set(task.taskId, listeners) + } + + private removeTaskListeners(task: TaskLike): void { + const listeners = this.taskListeners.get(task.taskId) + + if (!listeners) { + return + } + + this.eventMapping.forEach(({ from, to }) => { + const listener = listeners.get(to) + if (listener) { + try { + task.off(from, listener as any) // eslint-disable-line @typescript-eslint/no-explicit-any + } catch (error) { + console.error( + `[TaskChannel] task.off(${from}) failed for task ${task.taskId}: ${ + error instanceof Error ? error.message : String(error) + }`, + ) + } + } + }) + + this.taskListeners.delete(task.taskId) + } +} diff --git a/packages/cloud/src/bridge/TaskManager.ts b/packages/cloud/src/bridge/TaskManager.ts deleted file mode 100644 index 3940d59f259b..000000000000 --- a/packages/cloud/src/bridge/TaskManager.ts +++ /dev/null @@ -1,279 +0,0 @@ -import type { Socket } from "socket.io-client" - -import { - type ClineMessage, - type TaskEvents, - type TaskLike, - type TaskBridgeCommand, - type TaskBridgeEvent, - RooCodeEventName, - TaskBridgeEventName, - TaskBridgeCommandName, - TaskSocketEvents, -} from "@roo-code/types" - -type TaskEventListener = { - [K in keyof TaskEvents]: (...args: TaskEvents[K]) => void | Promise -}[keyof TaskEvents] - -const TASK_EVENT_MAPPING: Record = { - [TaskBridgeEventName.Message]: RooCodeEventName.Message, - [TaskBridgeEventName.TaskModeSwitched]: RooCodeEventName.TaskModeSwitched, - [TaskBridgeEventName.TaskInteractive]: RooCodeEventName.TaskInteractive, -} - -export class TaskManager { - private subscribedTasks: Map = new Map() - private pendingTasks: Map = new Map() - private socket: Socket | null = null - - private taskListeners: Map> = new Map() - - constructor() {} - - public async onConnect(socket: Socket): Promise { - this.socket = socket - - // Rejoin all subscribed tasks. - for (const taskId of this.subscribedTasks.keys()) { - try { - socket.emit(TaskSocketEvents.JOIN, { taskId }) - - console.log(`[TaskManager] emit() -> ${TaskSocketEvents.JOIN} ${taskId}`) - } catch (error) { - console.error( - `[TaskManager] emit() failed -> ${TaskSocketEvents.JOIN}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - } - } - - // Subscribe to any pending tasks. - for (const task of this.pendingTasks.values()) { - await this.subscribeToTask(task, socket) - } - - this.pendingTasks.clear() - } - - public onDisconnect(): void { - this.socket = null - } - - public async onReconnect(socket: Socket): Promise { - this.socket = socket - - // Rejoin all subscribed tasks. - for (const taskId of this.subscribedTasks.keys()) { - try { - socket.emit(TaskSocketEvents.JOIN, { taskId }) - - console.log(`[TaskManager] emit() -> ${TaskSocketEvents.JOIN} ${taskId}`) - } catch (error) { - console.error( - `[TaskManager] emit() failed -> ${TaskSocketEvents.JOIN}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - } - } - } - - public async cleanup(socket: Socket | null): Promise { - if (!socket) { - return - } - - const unsubscribePromises = [] - - for (const taskId of this.subscribedTasks.keys()) { - unsubscribePromises.push(this.unsubscribeFromTask(taskId, socket)) - } - - await Promise.allSettled(unsubscribePromises) - this.subscribedTasks.clear() - this.taskListeners.clear() - this.pendingTasks.clear() - this.socket = null - } - - public addPendingTask(task: TaskLike): void { - this.pendingTasks.set(task.taskId, task) - } - - public async subscribeToTask(task: TaskLike, socket: Socket): Promise { - const taskId = task.taskId - this.subscribedTasks.set(taskId, task) - this.setupListeners(task) - - try { - socket.emit(TaskSocketEvents.JOIN, { taskId }) - console.log(`[TaskManager] emit() -> ${TaskSocketEvents.JOIN} ${taskId}`) - } catch (error) { - console.error( - `[TaskManager] emit() failed -> ${TaskSocketEvents.JOIN}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - } - } - - public async unsubscribeFromTask(taskId: string, socket: Socket): Promise { - const task = this.subscribedTasks.get(taskId) - - if (task) { - this.removeListeners(task) - this.subscribedTasks.delete(taskId) - } - - try { - socket.emit(TaskSocketEvents.LEAVE, { taskId }) - - console.log(`[TaskManager] emit() -> ${TaskSocketEvents.LEAVE} ${taskId}`) - } catch (error) { - console.error( - `[TaskManager] emit() failed -> ${TaskSocketEvents.LEAVE}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - } - } - - public handleTaskCommand(message: TaskBridgeCommand): void { - const task = this.subscribedTasks.get(message.taskId) - - if (!task) { - console.error(`[TaskManager#handleTaskCommand] Unable to find task ${message.taskId}`) - - return - } - - switch (message.type) { - case TaskBridgeCommandName.Message: - console.log( - `[TaskManager#handleTaskCommand] ${TaskBridgeCommandName.Message} ${message.taskId} -> submitUserMessage()`, - message, - ) - - task.submitUserMessage(message.payload.text, message.payload.images) - break - case TaskBridgeCommandName.ApproveAsk: - console.log( - `[TaskManager#handleTaskCommand] ${TaskBridgeCommandName.ApproveAsk} ${message.taskId} -> approveAsk()`, - message, - ) - - task.approveAsk(message.payload) - break - case TaskBridgeCommandName.DenyAsk: - console.log( - `[TaskManager#handleTaskCommand] ${TaskBridgeCommandName.DenyAsk} ${message.taskId} -> denyAsk()`, - message, - ) - - task.denyAsk(message.payload) - break - } - } - - private setupListeners(task: TaskLike): void { - if (this.taskListeners.has(task.taskId)) { - console.warn("[TaskManager] Listeners already exist for task, removing old listeners:", task.taskId) - - this.removeListeners(task) - } - - const listeners = new Map() - - const onMessage = ({ action, message }: { action: string; message: ClineMessage }) => { - this.publishEvent({ - type: TaskBridgeEventName.Message, - taskId: task.taskId, - action, - message, - }) - } - - task.on(RooCodeEventName.Message, onMessage) - listeners.set(TaskBridgeEventName.Message, onMessage) - - const onTaskModeSwitched = (mode: string) => { - this.publishEvent({ - type: TaskBridgeEventName.TaskModeSwitched, - taskId: task.taskId, - mode, - }) - } - - task.on(RooCodeEventName.TaskModeSwitched, onTaskModeSwitched) - listeners.set(TaskBridgeEventName.TaskModeSwitched, onTaskModeSwitched) - - const onTaskInteractive = (_taskId: string) => { - this.publishEvent({ - type: TaskBridgeEventName.TaskInteractive, - taskId: task.taskId, - }) - } - - task.on(RooCodeEventName.TaskInteractive, onTaskInteractive) - - listeners.set(TaskBridgeEventName.TaskInteractive, onTaskInteractive) - - this.taskListeners.set(task.taskId, listeners) - - console.log("[TaskManager] Task listeners setup complete for:", task.taskId) - } - - private removeListeners(task: TaskLike): void { - const listeners = this.taskListeners.get(task.taskId) - - if (!listeners) { - return - } - - console.log("[TaskManager] Removing task listeners for:", task.taskId) - - listeners.forEach((listener, eventName) => { - try { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - task.off(TASK_EVENT_MAPPING[eventName], listener as any) - } catch (error) { - console.error( - `[TaskManager] Error removing listener for ${String(eventName)} on task ${task.taskId}:`, - error, - ) - } - }) - - this.taskListeners.delete(task.taskId) - } - - private async publishEvent(message: TaskBridgeEvent): Promise { - if (!this.socket) { - console.error("[TaskManager] publishEvent -> socket not available") - return false - } - - try { - this.socket.emit(TaskSocketEvents.EVENT, message) - - if (message.type !== TaskBridgeEventName.Message) { - console.log( - `[TaskManager] emit() -> ${TaskSocketEvents.EVENT} ${message.taskId} ${message.type}`, - message, - ) - } - - return true - } catch (error) { - console.error( - `[TaskManager] emit() failed -> ${TaskSocketEvents.EVENT}: ${ - error instanceof Error ? error.message : String(error) - }`, - ) - - return false - } - } -} diff --git a/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts b/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts new file mode 100644 index 000000000000..89979c9a66e9 --- /dev/null +++ b/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts @@ -0,0 +1,252 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { Socket } from "socket.io-client" + +import { + type TaskProviderLike, + type TaskProviderEvents, + RooCodeEventName, + ExtensionBridgeEventName, + ExtensionSocketEvents, +} from "@roo-code/types" + +import { ExtensionChannel } from "../ExtensionChannel.js" + +describe("ExtensionChannel", () => { + let mockSocket: Socket + let mockProvider: TaskProviderLike + let extensionChannel: ExtensionChannel + const instanceId = "test-instance-123" + const userId = "test-user-456" + + // Track registered event listeners + const eventListeners = new Map unknown>>() + + beforeEach(() => { + // Reset the event listeners tracker + eventListeners.clear() + + // Create mock socket + mockSocket = { + emit: vi.fn(), + on: vi.fn(), + off: vi.fn(), + disconnect: vi.fn(), + } as unknown as Socket + + // Create mock provider with event listener tracking + mockProvider = { + cwd: "/test/workspace", + appProperties: { + version: "1.0.0", + extensionVersion: "1.0.0", + }, + gitProperties: undefined, + getCurrentTask: vi.fn().mockReturnValue(undefined), + getCurrentTaskStack: vi.fn().mockReturnValue([]), + getRecentTasks: vi.fn().mockReturnValue([]), + createTask: vi.fn(), + cancelTask: vi.fn(), + clearTask: vi.fn(), + resumeTask: vi.fn(), + getState: vi.fn(), + postStateToWebview: vi.fn(), + postMessageToWebview: vi.fn(), + getTelemetryProperties: vi.fn(), + on: vi.fn((event: keyof TaskProviderEvents, listener: (...args: unknown[]) => unknown) => { + if (!eventListeners.has(event)) { + eventListeners.set(event, new Set()) + } + eventListeners.get(event)!.add(listener) + return mockProvider + }), + off: vi.fn((event: keyof TaskProviderEvents, listener: (...args: unknown[]) => unknown) => { + const listeners = eventListeners.get(event) + if (listeners) { + listeners.delete(listener) + if (listeners.size === 0) { + eventListeners.delete(event) + } + } + return mockProvider + }), + } as unknown as TaskProviderLike + + // Create extension channel instance + extensionChannel = new ExtensionChannel(instanceId, userId, mockProvider) + }) + + afterEach(() => { + vi.clearAllMocks() + }) + + describe("Event Listener Management", () => { + it("should register event listeners on initialization", () => { + // Verify that listeners were registered for all expected events + const expectedEvents: RooCodeEventName[] = [ + RooCodeEventName.TaskCreated, + RooCodeEventName.TaskStarted, + RooCodeEventName.TaskCompleted, + RooCodeEventName.TaskAborted, + RooCodeEventName.TaskFocused, + RooCodeEventName.TaskUnfocused, + RooCodeEventName.TaskActive, + RooCodeEventName.TaskInteractive, + RooCodeEventName.TaskResumable, + RooCodeEventName.TaskIdle, + ] + + // Check that on() was called for each event + expect(mockProvider.on).toHaveBeenCalledTimes(expectedEvents.length) + + // Verify each event was registered + expectedEvents.forEach((eventName) => { + expect(mockProvider.on).toHaveBeenCalledWith(eventName, expect.any(Function)) + }) + + // Verify listeners are tracked in our Map + expect(eventListeners.size).toBe(expectedEvents.length) + }) + + it("should remove all event listeners during cleanup", async () => { + // Verify initial state - listeners are registered + const initialListenerCount = eventListeners.size + expect(initialListenerCount).toBeGreaterThan(0) + + // Get the count of listeners for each event before cleanup + const listenerCountsBefore = new Map() + eventListeners.forEach((listeners, event) => { + listenerCountsBefore.set(event, listeners.size) + }) + + // Perform cleanup + await extensionChannel.cleanup(mockSocket) + + // Verify that off() was called for each registered event + expect(mockProvider.off).toHaveBeenCalledTimes(initialListenerCount) + + // Verify all listeners were removed from our tracking Map + expect(eventListeners.size).toBe(0) + + // Verify that the same listener functions that were added were removed + const onCalls = (mockProvider.on as any).mock.calls + const offCalls = (mockProvider.off as any).mock.calls + + // Each on() call should have a corresponding off() call with the same listener + onCalls.forEach(([eventName, listener]: [keyof TaskProviderEvents, any]) => { + const hasMatchingOff = offCalls.some( + ([offEvent, offListener]: [keyof TaskProviderEvents, any]) => + offEvent === eventName && offListener === listener, + ) + expect(hasMatchingOff).toBe(true) + }) + }) + + it("should not have duplicate listeners after multiple channel creations", () => { + // Create a second channel with the same provider + const secondChannel = new ExtensionChannel("instance-2", userId, mockProvider) + + // Each event should have exactly 2 listeners (one from each channel) + eventListeners.forEach((listeners) => { + expect(listeners.size).toBe(2) + }) + + // Clean up the first channel + extensionChannel.cleanup(mockSocket) + + // Each event should now have exactly 1 listener (from the second channel) + eventListeners.forEach((listeners) => { + expect(listeners.size).toBe(1) + }) + + // Clean up the second channel + secondChannel.cleanup(mockSocket) + + // All listeners should be removed + expect(eventListeners.size).toBe(0) + }) + + it("should handle cleanup even if called multiple times", async () => { + // First cleanup + await extensionChannel.cleanup(mockSocket) + const firstOffCallCount = (mockProvider.off as any).mock.calls.length + + // Second cleanup (should be safe to call again) + await extensionChannel.cleanup(mockSocket) + const secondOffCallCount = (mockProvider.off as any).mock.calls.length + + // The second cleanup shouldn't try to remove listeners again + // since the internal Map was cleared + expect(secondOffCallCount).toBe(firstOffCallCount) + }) + + it("should properly forward events to socket when listeners are triggered", async () => { + // Connect the socket to enable publishing + await extensionChannel.onConnect(mockSocket) + + // Get a listener that was registered for TaskStarted + const taskStartedListeners = eventListeners.get(RooCodeEventName.TaskStarted) + expect(taskStartedListeners).toBeDefined() + expect(taskStartedListeners!.size).toBe(1) + + // Trigger the listener + const listener = Array.from(taskStartedListeners!)[0] + if (listener) { + listener("test-task-id") + } + + // Verify the event was published to the socket + expect(mockSocket.emit).toHaveBeenCalledWith( + ExtensionSocketEvents.EVENT, + expect.objectContaining({ + type: ExtensionBridgeEventName.TaskStarted, + instance: expect.objectContaining({ + instanceId, + userId, + }), + timestamp: expect.any(Number), + }), + undefined, + ) + }) + }) + + describe("Memory Leak Prevention", () => { + it("should not accumulate listeners over multiple connect/disconnect cycles", async () => { + // Simulate multiple connect/disconnect cycles + for (let i = 0; i < 5; i++) { + await extensionChannel.onConnect(mockSocket) + extensionChannel.onDisconnect() + } + + // Listeners should still be the same count (not accumulated) + const expectedEventCount = 10 // Number of events we listen to + expect(eventListeners.size).toBe(expectedEventCount) + + // Each event should have exactly 1 listener + eventListeners.forEach((listeners) => { + expect(listeners.size).toBe(1) + }) + }) + + it("should properly clean up heartbeat interval", async () => { + // Spy on setInterval and clearInterval + const setIntervalSpy = vi.spyOn(global, "setInterval") + const clearIntervalSpy = vi.spyOn(global, "clearInterval") + + // Connect to start heartbeat + await extensionChannel.onConnect(mockSocket) + expect(setIntervalSpy).toHaveBeenCalled() + + // Get the interval ID + const intervalId = setIntervalSpy.mock.results[0]?.value + + // Cleanup should stop the heartbeat + await extensionChannel.cleanup(mockSocket) + expect(clearIntervalSpy).toHaveBeenCalledWith(intervalId) + + setIntervalSpy.mockRestore() + clearIntervalSpy.mockRestore() + }) + }) +}) diff --git a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts new file mode 100644 index 000000000000..2809ca78f8c9 --- /dev/null +++ b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts @@ -0,0 +1,389 @@ +/* eslint-disable @typescript-eslint/no-unsafe-function-type */ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { Socket } from "socket.io-client" + +import { + type TaskLike, + type ClineMessage, + RooCodeEventName, + TaskBridgeEventName, + TaskBridgeCommandName, + TaskSocketEvents, + TaskStatus, +} from "@roo-code/types" + +import { TaskChannel } from "../TaskChannel.js" + +describe("TaskChannel", () => { + let mockSocket: Socket + let taskChannel: TaskChannel + let mockTask: TaskLike + const instanceId = "test-instance-123" + const taskId = "test-task-456" + + beforeEach(() => { + // Create mock socket + mockSocket = { + emit: vi.fn(), + on: vi.fn(), + off: vi.fn(), + disconnect: vi.fn(), + } as unknown as Socket + + // Create mock task with event emitter functionality + const listeners = new Map unknown>>() + mockTask = { + taskId, + taskStatus: TaskStatus.Running, + taskAsk: undefined, + metadata: {}, + on: vi.fn((event: string, listener: (...args: unknown[]) => unknown) => { + if (!listeners.has(event)) { + listeners.set(event, new Set()) + } + listeners.get(event)!.add(listener) + return mockTask + }), + off: vi.fn((event: string, listener: (...args: unknown[]) => unknown) => { + const eventListeners = listeners.get(event) + if (eventListeners) { + eventListeners.delete(listener) + if (eventListeners.size === 0) { + listeners.delete(event) + } + } + return mockTask + }), + approveAsk: vi.fn(), + denyAsk: vi.fn(), + submitUserMessage: vi.fn(), + abortTask: vi.fn(), + // Helper to trigger events in tests + _triggerEvent: (event: string, ...args: any[]) => { + const eventListeners = listeners.get(event) + if (eventListeners) { + eventListeners.forEach((listener) => listener(...args)) + } + }, + _getListenerCount: (event: string) => { + return listeners.get(event)?.size || 0 + }, + } as unknown as TaskLike & { + _triggerEvent: (event: string, ...args: any[]) => void + _getListenerCount: (event: string) => number + } + + // Create task channel instance + taskChannel = new TaskChannel(instanceId) + }) + + afterEach(() => { + vi.clearAllMocks() + }) + + describe("Event Mapping Refactoring", () => { + it("should use the unified event mapping approach", () => { + // Access the private eventMapping through type assertion + const channel = taskChannel as any + + // Verify eventMapping exists and has the correct structure + expect(channel.eventMapping).toBeDefined() + expect(Array.isArray(channel.eventMapping)).toBe(true) + expect(channel.eventMapping.length).toBe(3) + + // Verify each mapping has the required properties + channel.eventMapping.forEach((mapping: any) => { + expect(mapping).toHaveProperty("from") + expect(mapping).toHaveProperty("to") + expect(mapping).toHaveProperty("createPayload") + expect(typeof mapping.createPayload).toBe("function") + }) + + // Verify specific mappings + expect(channel.eventMapping[0].from).toBe(RooCodeEventName.Message) + expect(channel.eventMapping[0].to).toBe(TaskBridgeEventName.Message) + + expect(channel.eventMapping[1].from).toBe(RooCodeEventName.TaskModeSwitched) + expect(channel.eventMapping[1].to).toBe(TaskBridgeEventName.TaskModeSwitched) + + expect(channel.eventMapping[2].from).toBe(RooCodeEventName.TaskInteractive) + expect(channel.eventMapping[2].to).toBe(TaskBridgeEventName.TaskInteractive) + }) + + it("should setup listeners using the event mapping", async () => { + // Mock the publish method to simulate successful subscription + const channel = taskChannel as any + channel.publish = vi.fn((event: string, data: any, callback?: Function) => { + if (event === TaskSocketEvents.JOIN && callback) { + // Simulate successful join response + callback({ success: true }) + } + return true + }) + + // Connect and subscribe to task + await taskChannel.onConnect(mockSocket) + await channel.subscribeToTask(mockTask, mockSocket) + + // Wait for async operations + await new Promise((resolve) => setTimeout(resolve, 0)) + + // Verify listeners were registered for all mapped events + const task = mockTask as any + expect(task._getListenerCount(RooCodeEventName.Message)).toBe(1) + expect(task._getListenerCount(RooCodeEventName.TaskModeSwitched)).toBe(1) + expect(task._getListenerCount(RooCodeEventName.TaskInteractive)).toBe(1) + }) + + it("should correctly transform Message event payloads", async () => { + // Setup channel with task + const channel = taskChannel as any + let publishCalls: any[] = [] + + channel.publish = vi.fn((event: string, data: any, callback?: Function) => { + publishCalls.push({ event, data }) + + if (event === TaskSocketEvents.JOIN && callback) { + callback({ success: true }) + } + + return true + }) + + await taskChannel.onConnect(mockSocket) + await channel.subscribeToTask(mockTask, mockSocket) + await new Promise((resolve) => setTimeout(resolve, 0)) + + // Clear previous calls + publishCalls = [] + + // Trigger Message event + const messageData = { + action: "test-action", + message: { type: "say", text: "Hello" } as ClineMessage, + } + + ;(mockTask as any)._triggerEvent(RooCodeEventName.Message, messageData) + + // Verify the event was published with correct payload + expect(publishCalls.length).toBe(1) + expect(publishCalls[0]).toEqual({ + event: TaskSocketEvents.EVENT, + data: { + type: TaskBridgeEventName.Message, + taskId: taskId, + action: messageData.action, + message: messageData.message, + }, + }) + }) + + it("should correctly transform TaskModeSwitched event payloads", async () => { + // Setup channel with task + const channel = taskChannel as any + let publishCalls: any[] = [] + + channel.publish = vi.fn((event: string, data: any, callback?: Function) => { + publishCalls.push({ event, data }) + + if (event === TaskSocketEvents.JOIN && callback) { + callback({ success: true }) + } + + return true + }) + + await taskChannel.onConnect(mockSocket) + await channel.subscribeToTask(mockTask, mockSocket) + await new Promise((resolve) => setTimeout(resolve, 0)) + + // Clear previous calls + publishCalls = [] + + // Trigger TaskModeSwitched event + const mode = "architect" + ;(mockTask as any)._triggerEvent(RooCodeEventName.TaskModeSwitched, mode) + + // Verify the event was published with correct payload + expect(publishCalls.length).toBe(1) + expect(publishCalls[0]).toEqual({ + event: TaskSocketEvents.EVENT, + data: { + type: TaskBridgeEventName.TaskModeSwitched, + taskId: taskId, + mode: mode, + }, + }) + }) + + it("should correctly transform TaskInteractive event payloads", async () => { + // Setup channel with task + const channel = taskChannel as any + let publishCalls: any[] = [] + + channel.publish = vi.fn((event: string, data: any, callback?: Function) => { + publishCalls.push({ event, data }) + if (event === TaskSocketEvents.JOIN && callback) { + callback({ success: true }) + } + return true + }) + + await taskChannel.onConnect(mockSocket) + await channel.subscribeToTask(mockTask, mockSocket) + await new Promise((resolve) => setTimeout(resolve, 0)) + + // Clear previous calls + publishCalls = [] + + // Trigger TaskInteractive event + ;(mockTask as any)._triggerEvent(RooCodeEventName.TaskInteractive, taskId) + + // Verify the event was published with correct payload + expect(publishCalls.length).toBe(1) + expect(publishCalls[0]).toEqual({ + event: TaskSocketEvents.EVENT, + data: { + type: TaskBridgeEventName.TaskInteractive, + taskId: taskId, + }, + }) + }) + + it("should properly clean up listeners using event mapping", async () => { + // Setup channel with task + const channel = taskChannel as any + + channel.publish = vi.fn((event: string, data: any, callback?: Function) => { + if (event === TaskSocketEvents.JOIN && callback) { + callback({ success: true }) + } + if (event === TaskSocketEvents.LEAVE && callback) { + callback({ success: true }) + } + return true + }) + + await taskChannel.onConnect(mockSocket) + await channel.subscribeToTask(mockTask, mockSocket) + await new Promise((resolve) => setTimeout(resolve, 0)) + + // Verify listeners are registered + const task = mockTask as any + expect(task._getListenerCount(RooCodeEventName.Message)).toBe(1) + expect(task._getListenerCount(RooCodeEventName.TaskModeSwitched)).toBe(1) + expect(task._getListenerCount(RooCodeEventName.TaskInteractive)).toBe(1) + + // Clean up + await taskChannel.cleanup(mockSocket) + + // Verify all listeners were removed + expect(task._getListenerCount(RooCodeEventName.Message)).toBe(0) + expect(task._getListenerCount(RooCodeEventName.TaskModeSwitched)).toBe(0) + expect(task._getListenerCount(RooCodeEventName.TaskInteractive)).toBe(0) + }) + + it("should handle duplicate listener prevention", async () => { + // Setup channel with task + await taskChannel.onConnect(mockSocket) + + // Subscribe to the same task twice + const channel = taskChannel as any + channel.subscribedTasks.set(taskId, mockTask) + channel.setupTaskListeners(mockTask) + + // Try to setup listeners again (should remove old ones first) + const warnSpy = vi.spyOn(console, "warn") + channel.setupTaskListeners(mockTask) + + // Verify warning was logged + expect(warnSpy).toHaveBeenCalledWith( + "[TaskChannel] Listeners already exist for task, removing old listeners:", + taskId, + ) + + // Verify only one set of listeners exists + const task = mockTask as any + expect(task._getListenerCount(RooCodeEventName.Message)).toBe(1) + expect(task._getListenerCount(RooCodeEventName.TaskModeSwitched)).toBe(1) + expect(task._getListenerCount(RooCodeEventName.TaskInteractive)).toBe(1) + + warnSpy.mockRestore() + }) + }) + + describe("Command Handling", () => { + beforeEach(async () => { + // Setup channel with a subscribed task + await taskChannel.onConnect(mockSocket) + const channel = taskChannel as any + channel.subscribedTasks.set(taskId, mockTask) + }) + + it("should handle Message command", () => { + const command = { + type: TaskBridgeCommandName.Message, + taskId, + timestamp: Date.now(), + payload: { + text: "Hello, world!", + images: ["image1.png"], + }, + } + + taskChannel.handleCommand(command) + + expect(mockTask.submitUserMessage).toHaveBeenCalledWith(command.payload.text, command.payload.images) + }) + + it("should handle ApproveAsk command", () => { + const command = { + type: TaskBridgeCommandName.ApproveAsk, + taskId, + timestamp: Date.now(), + payload: { + text: "Approved", + }, + } + + taskChannel.handleCommand(command) + + expect(mockTask.approveAsk).toHaveBeenCalledWith(command.payload) + }) + + it("should handle DenyAsk command", () => { + const command = { + type: TaskBridgeCommandName.DenyAsk, + taskId, + timestamp: Date.now(), + payload: { + text: "Denied", + }, + } + + taskChannel.handleCommand(command) + + expect(mockTask.denyAsk).toHaveBeenCalledWith(command.payload) + }) + + it("should log error for unknown task", () => { + const errorSpy = vi.spyOn(console, "error") + + const command = { + type: TaskBridgeCommandName.Message, + taskId: "unknown-task", + timestamp: Date.now(), + payload: { + text: "Hello", + }, + } + + taskChannel.handleCommand(command) + + expect(errorSpy).toHaveBeenCalledWith(`[TaskChannel] Unable to find task unknown-task`) + + errorSpy.mockRestore() + }) + }) +}) diff --git a/packages/cloud/src/bridge/index.ts b/packages/cloud/src/bridge/index.ts new file mode 100644 index 000000000000..94873c09fdfa --- /dev/null +++ b/packages/cloud/src/bridge/index.ts @@ -0,0 +1,6 @@ +export { type BridgeOrchestratorOptions, BridgeOrchestrator } from "./BridgeOrchestrator.js" +export { type SocketTransportOptions, SocketTransport } from "./SocketTransport.js" + +export { BaseChannel } from "./BaseChannel.js" +export { ExtensionChannel } from "./ExtensionChannel.js" +export { TaskChannel } from "./TaskChannel.js" diff --git a/packages/cloud/src/importVscode.ts b/packages/cloud/src/importVscode.ts index b3c3c94150d6..f389555afa17 100644 --- a/packages/cloud/src/importVscode.ts +++ b/packages/cloud/src/importVscode.ts @@ -7,43 +7,38 @@ let vscodeModule: typeof import("vscode") | undefined /** - * Attempts to dynamically import the VS Code module. - * Returns undefined if not running in a VS Code/Cursor extension context. + * Attempts to dynamically import the `vscode` module. + * Returns undefined if not running in a VSCode extension context. */ export async function importVscode(): Promise { - // Check if already loaded if (vscodeModule) { return vscodeModule } try { - // Method 1: Check if vscode is available in global scope (common in extension hosts). - if (typeof globalThis !== "undefined" && "acquireVsCodeApi" in globalThis) { - // We're in a webview context, vscode module won't be available. - return undefined - } - - // Method 2: Try to require the module (works in most extension contexts). if (typeof require !== "undefined") { try { // eslint-disable-next-line @typescript-eslint/no-require-imports vscodeModule = require("vscode") if (vscodeModule) { + console.log("VS Code module loaded from require") return vscodeModule } } catch (error) { - console.error("Error loading VS Code module:", error) + console.error(`Error loading VS Code module: ${error instanceof Error ? error.message : String(error)}`) // Fall through to dynamic import. } } - // Method 3: Dynamic import (original approach, works in VSCode). vscodeModule = await import("vscode") + console.log("VS Code module loaded from dynamic import") return vscodeModule } catch (error) { - // Log the original error for debugging. - console.warn("VS Code module not available in this environment:", error) + console.warn( + `VS Code module not available in this environment: ${error instanceof Error ? error.message : String(error)}`, + ) + return undefined } } diff --git a/packages/cloud/src/index.ts b/packages/cloud/src/index.ts index 6ba2d3e61e6a..dd40e6fc5279 100644 --- a/packages/cloud/src/index.ts +++ b/packages/cloud/src/index.ts @@ -1,5 +1,5 @@ export * from "./config.js" -export * from "./CloudAPI.js" -export * from "./CloudService.js" -export * from "./bridge/ExtensionBridgeService.js" +export { CloudService } from "./CloudService.js" + +export { BridgeOrchestrator } from "./bridge/index.js" diff --git a/packages/types/src/cloud.ts b/packages/types/src/cloud.ts index b80c562fa3f9..dbf79b6bfac9 100644 --- a/packages/types/src/cloud.ts +++ b/packages/types/src/cloud.ts @@ -587,32 +587,49 @@ export type TaskBridgeCommand = z.infer * ExtensionSocketEvents */ -export const ExtensionSocketEvents = { - CONNECTED: "extension:connected", +export enum ExtensionSocketEvents { + CONNECTED = "extension:connected", - REGISTER: "extension:register", - UNREGISTER: "extension:unregister", + REGISTER = "extension:register", + UNREGISTER = "extension:unregister", - HEARTBEAT: "extension:heartbeat", + HEARTBEAT = "extension:heartbeat", - EVENT: "extension:event", // event from extension instance - RELAYED_EVENT: "extension:relayed_event", // relay from server + EVENT = "extension:event", // event from extension instance + RELAYED_EVENT = "extension:relayed_event", // relay from server - COMMAND: "extension:command", // command from user - RELAYED_COMMAND: "extension:relayed_command", // relay from server -} as const + COMMAND = "extension:command", // command from user + RELAYED_COMMAND = "extension:relayed_command", // relay from server +} /** * TaskSocketEvents */ -export const TaskSocketEvents = { - JOIN: "task:join", - LEAVE: "task:leave", +export enum TaskSocketEvents { + JOIN = "task:join", + LEAVE = "task:leave", - EVENT: "task:event", // event from extension task - RELAYED_EVENT: "task:relayed_event", // relay from server + EVENT = "task:event", // event from extension task + RELAYED_EVENT = "task:relayed_event", // relay from server - COMMAND: "task:command", // command from user - RELAYED_COMMAND: "task:relayed_command", // relay from server -} as const + COMMAND = "task:command", // command from user + RELAYED_COMMAND = "task:relayed_command", // relay from server +} + +/** + * `emit()` Response Types + */ + +export type JoinResponse = { + success: boolean + error?: string + taskId?: string + timestamp?: string +} + +export type LeaveResponse = { + success: boolean + taskId?: string + timestamp?: string +} diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 60fceb2bb80d..b192440779ab 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -35,7 +35,7 @@ import { isResumableAsk, } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" -import { CloudService, ExtensionBridgeService } from "@roo-code/cloud" +import { CloudService, BridgeOrchestrator } from "@roo-code/cloud" // api import { ApiHandler, ApiHandlerCreateMessageMetadata, buildApiHandler } from "../../api" @@ -115,7 +115,7 @@ export type TaskOptions = { apiConfiguration: ProviderSettings enableDiff?: boolean enableCheckpoints?: boolean - enableTaskBridge?: boolean + enableBridge?: boolean fuzzyMatchThreshold?: number consecutiveMistakeLimit?: number task?: string @@ -255,8 +255,8 @@ export class Task extends EventEmitter implements TaskLike { checkpointServiceInitializing = false // Task Bridge - enableTaskBridge: boolean - bridgeService: ExtensionBridgeService | null = null + enableBridge: boolean + bridge: BridgeOrchestrator | null = null // Streaming isWaitingForFirstChunk = false @@ -280,7 +280,7 @@ export class Task extends EventEmitter implements TaskLike { apiConfiguration, enableDiff = false, enableCheckpoints = true, - enableTaskBridge = false, + enableBridge = false, fuzzyMatchThreshold = 1.0, consecutiveMistakeLimit = DEFAULT_CONSECUTIVE_MISTAKE_LIMIT, task, @@ -335,7 +335,7 @@ export class Task extends EventEmitter implements TaskLike { this.globalStoragePath = provider.context.globalStorageUri.fsPath this.diffViewProvider = new DiffViewProvider(this.cwd, this) this.enableCheckpoints = enableCheckpoints - this.enableTaskBridge = enableTaskBridge + this.enableBridge = enableBridge this.rootTask = rootTask this.parentTask = parentTask @@ -1082,12 +1082,12 @@ export class Task extends EventEmitter implements TaskLike { // Start / Abort / Resume private async startTask(task?: string, images?: string[]): Promise { - if (this.enableTaskBridge) { + if (this.enableBridge) { try { - this.bridgeService = this.bridgeService || ExtensionBridgeService.getInstance() + this.bridge = this.bridge || BridgeOrchestrator.getInstance() - if (this.bridgeService) { - await this.bridgeService.subscribeToTask(this) + if (this.bridge) { + await this.bridge.subscribeToTask(this) } } catch (error) { console.error( @@ -1154,14 +1154,12 @@ export class Task extends EventEmitter implements TaskLike { } private async resumeTaskFromHistory() { - // Resuming task from history - - if (this.enableTaskBridge) { + if (this.enableBridge) { try { - this.bridgeService = this.bridgeService || ExtensionBridgeService.getInstance() + this.bridge = this.bridge || BridgeOrchestrator.getInstance() - if (this.bridgeService) { - await this.bridgeService.subscribeToTask(this) + if (this.bridge) { + await this.bridge.subscribeToTask(this) } } catch (error) { console.error( @@ -1436,11 +1434,12 @@ export class Task extends EventEmitter implements TaskLike { } // Unsubscribe from TaskBridge service. - if (this.bridgeService) { - this.bridgeService + if (this.bridge) { + this.bridge .unsubscribeFromTask(this.taskId) .catch((error: unknown) => console.error("Error unsubscribing from task bridge:", error)) - this.bridgeService = null + + this.bridge = null } // Release any terminals associated with this task. diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 0c26858b613d..c37288f20d2f 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -39,7 +39,7 @@ import { ORGANIZATION_ALLOW_ALL, } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" -import { CloudService, getRooCodeApiUrl } from "@roo-code/cloud" +import { CloudService, BridgeOrchestrator, getRooCodeApiUrl } from "@roo-code/cloud" import { Package } from "../../shared/package" import { findLast } from "../../shared/array" @@ -70,7 +70,6 @@ import { fileExistsAtPath } from "../../utils/fs" import { setTtsEnabled, setTtsSpeed } from "../../utils/tts" import { getWorkspaceGitInfo } from "../../utils/git" import { getWorkspacePath } from "../../utils/path" -import { isRemoteControlEnabled } from "../../utils/remoteControl" import { setPanel } from "../../activate/registerCommands" @@ -134,7 +133,6 @@ export class ClineProvider ) { super() - this.log("ClineProvider instantiated") ClineProvider.activeInstances.add(this) this.mdmService = mdmService @@ -300,11 +298,11 @@ export class ClineProvider // Adds a new Task instance to clineStack, marking the start of a new task. // The instance is pushed to the top of the stack (LIFO order). - // When the task is completed, the top instance is removed, reactivating the previous task. + // When the task is completed, the top instance is removed, reactivating the + // previous task. async addClineToStack(task: Task) { - console.log(`[subtasks] adding task ${task.taskId}.${task.instanceId} to stack`) - - // Add this cline instance into the stack that represents the order of all the called tasks. + // Add this cline instance into the stack that represents the order of + // all the called tasks. this.clineStack.push(task) task.emit(RooCodeEventName.TaskFocused) @@ -348,15 +346,13 @@ export class ClineProvider let task = this.clineStack.pop() if (task) { - console.log(`[subtasks] removing task ${task.taskId}.${task.instanceId} from stack`) - try { // Abort the running task and set isAbandoned to true so // all running promises will exit as well. await task.abortTask(true) } catch (e) { this.log( - `[subtasks] encountered error while aborting task ${task.taskId}.${task.instanceId}: ${e.message}`, + `[removeClineFromStack] encountered error while aborting task ${task.taskId}.${task.instanceId}: ${e.message}`, ) } @@ -382,6 +378,7 @@ export class ClineProvider if (this.clineStack.length === 0) { return undefined } + return this.clineStack[this.clineStack.length - 1] } @@ -394,19 +391,22 @@ export class ClineProvider return this.clineStack.map((cline) => cline.taskId) } - // remove the current task/cline instance (at the top of the stack), so this task is finished - // and resume the previous task/cline instance (if it exists) - // this is used when a sub task is finished and the parent task needs to be resumed + // Remove the current task/cline instance (at the top of the stack), so this + // task is finished and resume the previous task/cline instance (if it + // exists). + // This is used when a subtask is finished and the parent task needs to be + // resumed. async finishSubTask(lastMessage: string) { - console.log(`[subtasks] finishing subtask ${lastMessage}`) - // remove the last cline instance from the stack (this is the finished sub task) + // Remove the last cline instance from the stack (this is the finished + // subtask). await this.removeClineFromStack() - // resume the last cline instance in the stack (if it exists - this is the 'parent' calling task) + // Resume the last cline instance in the stack (if it exists - this is + // the 'parent' calling task). await this.getCurrentTask()?.resumePausedTask(lastMessage) } - // Clear the current task without treating it as a subtask - // This is used when the user cancels a task that is not a subtask + // Clear the current task without treating it as a subtask. + // This is used when the user cancels a task that is not a subtask. async clearTask() { await this.removeClineFromStack() } @@ -621,8 +621,6 @@ export class ClineProvider } async resolveWebviewView(webviewView: vscode.WebviewView | vscode.WebviewPanel) { - this.log("Resolving webview view") - this.view = webviewView const inTabMode = "onDidChangeViewState" in webviewView @@ -741,8 +739,6 @@ export class ClineProvider // If the extension is starting a new session, clear previous task state. await this.removeClineFromStack() - - this.log("Webview view resolved") } // When initializing a new task, (not from history but from a tool command @@ -796,7 +792,7 @@ export class ClineProvider parentTask, taskNumber: this.clineStack.length + 1, onCreated: this.taskCreationCallback, - enableTaskBridge: isRemoteControlEnabled(cloudUserInfo, remoteControlEnabled), + enableBridge: BridgeOrchestrator.isEnabled(cloudUserInfo, remoteControlEnabled), initialTodos: options.initialTodos, ...options, }) @@ -804,7 +800,7 @@ export class ClineProvider await this.addClineToStack(task) this.log( - `[subtasks] ${task.parentTask ? "child" : "parent"} task ${task.taskId}.${task.instanceId} instantiated`, + `[createTask] ${task.parentTask ? "child" : "parent"} task ${task.taskId}.${task.instanceId} instantiated`, ) return task @@ -866,9 +862,6 @@ export class ClineProvider remoteControlEnabled, } = await this.getState() - // Determine if TaskBridge should be enabled - const enableTaskBridge = isRemoteControlEnabled(cloudUserInfo, remoteControlEnabled) - const task = new Task({ provider: this, apiConfiguration, @@ -882,13 +875,13 @@ export class ClineProvider parentTask: historyItem.parentTask, taskNumber: historyItem.number, onCreated: this.taskCreationCallback, - enableTaskBridge, + enableBridge: BridgeOrchestrator.isEnabled(cloudUserInfo, remoteControlEnabled), }) await this.addClineToStack(task) this.log( - `[subtasks] ${task.parentTask ? "child" : "parent"} task ${task.taskId}.${task.instanceId} instantiated`, + `[createTaskWithHistoryItem] ${task.parentTask ? "child" : "parent"} task ${task.taskId}.${task.instanceId} instantiated`, ) return task @@ -1278,7 +1271,7 @@ export class ClineProvider return } - console.log(`[subtasks] cancelling task ${cline.taskId}.${cline.instanceId}`) + console.log(`[cancelTask] cancelling task ${cline.taskId}.${cline.instanceId}`) const { historyItem } = await this.getTaskWithId(cline.taskId) // Preserve parent and root task information for history item. @@ -2199,56 +2192,50 @@ export class ClineProvider return true } - public async handleRemoteControlToggle(enabled: boolean) { - const { CloudService: CloudServiceImport, ExtensionBridgeService } = await import("@roo-code/cloud") - - const userInfo = CloudServiceImport.instance.getUserInfo() + public async remoteControlEnabled(enabled: boolean) { + const userInfo = CloudService.instance.getUserInfo() - const bridgeConfig = await CloudServiceImport.instance.cloudAPI?.bridgeConfig().catch(() => undefined) + const config = await CloudService.instance.cloudAPI?.bridgeConfig().catch(() => undefined) - if (!bridgeConfig) { - this.log("[ClineProvider#handleRemoteControlToggle] Failed to get bridge config") + if (!config) { + this.log("[ClineProvider#remoteControlEnabled] Failed to get bridge config") return } - await ExtensionBridgeService.handleRemoteControlState( - userInfo, - enabled, - { ...bridgeConfig, provider: this, sessionId: vscode.env.sessionId }, - (message: string) => this.log(message), - ) + await BridgeOrchestrator.connectOrDisconnect(userInfo, enabled, { + ...config, + provider: this, + sessionId: vscode.env.sessionId, + }) + + const bridge = BridgeOrchestrator.getInstance() - if (isRemoteControlEnabled(userInfo, enabled)) { + if (bridge) { const currentTask = this.getCurrentTask() - if (currentTask && !currentTask.bridgeService) { + if (currentTask && !currentTask.bridge) { try { - currentTask.bridgeService = ExtensionBridgeService.getInstance() - - if (currentTask.bridgeService) { - await currentTask.bridgeService.subscribeToTask(currentTask) - } + currentTask.bridge = bridge + await currentTask.bridge.subscribeToTask(currentTask) } catch (error) { - const message = `[ClineProvider#handleRemoteControlToggle] subscribeToTask failed - ${error instanceof Error ? error.message : String(error)}` + const message = `[ClineProvider#remoteControlEnabled] subscribeToTask failed - ${error instanceof Error ? error.message : String(error)}` this.log(message) console.error(message) } } } else { for (const task of this.clineStack) { - if (task.bridgeService) { + if (task.bridge) { try { - await task.bridgeService.unsubscribeFromTask(task.taskId) - task.bridgeService = null + await task.bridge.unsubscribeFromTask(task.taskId) + task.bridge = null } catch (error) { - const message = `[ClineProvider#handleRemoteControlToggle] unsubscribeFromTask failed - ${error instanceof Error ? error.message : String(error)}` + const message = `[ClineProvider#remoteControlEnabled] unsubscribeFromTask failed - ${error instanceof Error ? error.message : String(error)}` this.log(message) console.error(message) } } } - - ExtensionBridgeService.resetInstance() } } diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index e5e7e85da5cf..a09ca1a85105 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -320,11 +320,10 @@ vi.mock("@roo-code/cloud", () => ({ } }, }, - getRooCodeApiUrl: vi.fn().mockReturnValue("https://app.roocode.com"), - ORGANIZATION_ALLOW_ALL: { - allowAll: true, - providers: {}, + BridgeOrchestrator: { + isEnabled: vi.fn().mockReturnValue(false), }, + getRooCodeApiUrl: vi.fn().mockReturnValue("https://app.roocode.com"), })) afterAll(() => { diff --git a/src/core/webview/__tests__/ClineProvider.sticky-mode.spec.ts b/src/core/webview/__tests__/ClineProvider.sticky-mode.spec.ts index 0ae7b38b8167..29aefcaeba43 100644 --- a/src/core/webview/__tests__/ClineProvider.sticky-mode.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.sticky-mode.spec.ts @@ -113,11 +113,10 @@ vi.mock("@roo-code/cloud", () => ({ } }, }, - getRooCodeApiUrl: vi.fn().mockReturnValue("https://app.roocode.com"), - ORGANIZATION_ALLOW_ALL: { - allowAll: true, - providers: {}, + BridgeOrchestrator: { + isEnabled: vi.fn().mockReturnValue(false), }, + getRooCodeApiUrl: vi.fn().mockReturnValue("https://app.roocode.com"), })) vi.mock("../../../shared/modes", () => ({ diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 6bf1320ccf05..970c9d0712c9 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -937,8 +937,8 @@ export const webviewMessageHandler = async ( const mcpEnabled = message.bool ?? true await updateGlobalState("mcpEnabled", mcpEnabled) - // Delegate MCP enable/disable logic to McpHub const mcpHubInstance = provider.getMcpHub() + if (mcpHubInstance) { await mcpHubInstance.handleMcpEnabledChange(mcpEnabled) } @@ -951,17 +951,18 @@ export const webviewMessageHandler = async ( break case "remoteControlEnabled": await updateGlobalState("remoteControlEnabled", message.bool ?? false) - await provider.handleRemoteControlToggle(message.bool ?? false) + await provider.remoteControlEnabled(message.bool ?? false) await provider.postStateToWebview() break case "refreshAllMcpServers": { const mcpHub = provider.getMcpHub() + if (mcpHub) { await mcpHub.refreshAllConnections() } + break } - // playSound handler removed - now handled directly in the webview case "soundEnabled": const soundEnabled = message.bool ?? true await updateGlobalState("soundEnabled", soundEnabled) @@ -975,7 +976,7 @@ export const webviewMessageHandler = async ( case "ttsEnabled": const ttsEnabled = message.bool ?? true await updateGlobalState("ttsEnabled", ttsEnabled) - setTtsEnabled(ttsEnabled) // Add this line to update the tts utility + setTtsEnabled(ttsEnabled) await provider.postStateToWebview() break case "ttsSpeed": @@ -991,6 +992,7 @@ export const webviewMessageHandler = async ( onStop: () => provider.postMessageToWebview({ type: "ttsStop", text: message.text }), }) } + break case "stopTts": stopTts() diff --git a/src/extension.ts b/src/extension.ts index 6060bb341f59..4aa5ff11133a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -13,7 +13,7 @@ try { } import type { CloudUserInfo } from "@roo-code/types" -import { CloudService, ExtensionBridgeService } from "@roo-code/cloud" +import { CloudService, BridgeOrchestrator } from "@roo-code/cloud" import { TelemetryService, PostHogTelemetryClient } from "@roo-code/telemetry" import "./utils/path" // Necessary to have access to String.prototype.toPosix. @@ -30,7 +30,6 @@ import { CodeIndexManager } from "./services/code-index/manager" import { MdmService } from "./services/mdm/MdmService" import { migrateSettings } from "./utils/migrateSettings" import { autoImportSettings } from "./utils/autoImportSettings" -import { isRemoteControlEnabled } from "./utils/remoteControl" import { API } from "./extension/api" import { @@ -147,15 +146,10 @@ export async function activate(context: vscode.ExtensionContext) { cloudLogger(`[CloudService] isCloudAgent = ${isCloudAgent}, socketBridgeUrl = ${config.socketBridgeUrl}`) - ExtensionBridgeService.handleRemoteControlState( + await BridgeOrchestrator.connectOrDisconnect( userInfo, isCloudAgent ? true : contextProxy.getValue("remoteControlEnabled"), - { - ...config, - provider, - sessionId: vscode.env.sessionId, - }, - cloudLogger, + { ...config, provider, sessionId: vscode.env.sessionId }, ) } catch (error) { cloudLogger( @@ -333,10 +327,10 @@ export async function deactivate() { } } - const bridgeService = ExtensionBridgeService.getInstance() + const bridge = BridgeOrchestrator.getInstance() - if (bridgeService) { - await bridgeService.disconnect() + if (bridge) { + await bridge.disconnect() } await McpServerManager.cleanup(extensionContext) diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index 271c6e1fb3fd..6ec5b839e8cf 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -166,7 +166,7 @@ export class McpHub { */ public registerClient(): void { this.refCount++ - console.log(`McpHub: Client registered. Ref count: ${this.refCount}`) + // console.log(`McpHub: Client registered. Ref count: ${this.refCount}`) } /** @@ -175,7 +175,9 @@ export class McpHub { */ public async unregisterClient(): Promise { this.refCount-- - console.log(`McpHub: Client unregistered. Ref count: ${this.refCount}`) + + // console.log(`McpHub: Client unregistered. Ref count: ${this.refCount}`) + if (this.refCount <= 0) { console.log("McpHub: Last client unregistered. Disposing hub.") await this.dispose() diff --git a/src/services/mdm/MdmService.ts b/src/services/mdm/MdmService.ts index 91c407514f27..63bdbe29fcad 100644 --- a/src/services/mdm/MdmService.ts +++ b/src/services/mdm/MdmService.ts @@ -32,14 +32,13 @@ export class MdmService { public async initialize(): Promise { try { this.mdmConfig = await this.loadMdmConfig() + if (this.mdmConfig) { - this.log("[MDM] Loaded MDM configuration:", this.mdmConfig) - } else { - this.log("[MDM] No MDM configuration found") + this.log(`[MDM] Loaded MDM configuration: ${JSON.stringify(this.mdmConfig)}`) } } catch (error) { - this.log("[MDM] Error loading MDM configuration:", error) - // Don't throw - extension should work without MDM config + this.log(`[MDM] Error loading MDM configuration: ${error instanceof Error ? error.message : String(error)}`) + // Don't throw - extension should work without MDM config. } } diff --git a/src/utils/remoteControl.ts b/src/utils/remoteControl.ts deleted file mode 100644 index f003b522d1d6..000000000000 --- a/src/utils/remoteControl.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { CloudUserInfo } from "@roo-code/types" - -/** - * Determines if remote control features should be enabled - * @param cloudUserInfo - User information from cloud service - * @param remoteControlEnabled - User's remote control setting - * @returns true if remote control should be enabled - */ -export function isRemoteControlEnabled(cloudUserInfo?: CloudUserInfo | null, remoteControlEnabled?: boolean): boolean { - return !!(cloudUserInfo?.id && cloudUserInfo.extensionBridgeEnabled && remoteControlEnabled) -} From 1d46bd1bbcf785c9134287cd84cb47db9f19fe0c Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Fri, 29 Aug 2025 02:43:06 -0700 Subject: [PATCH 036/228] Implement deferred task subscriptions (#7517) --- .../cloud/src/bridge/BridgeOrchestrator.ts | 36 ++++++++++++++++- packages/cloud/src/bridge/TaskChannel.ts | 14 ++++--- .../src/bridge/__tests__/TaskChannel.test.ts | 3 +- packages/types/npm/package.metadata.json | 2 +- src/core/task/Task.ts | 37 +++++++---------- src/core/task/__tests__/Task.dispose.test.ts | 2 +- src/core/webview/ClineProvider.ts | 40 +++++++++++-------- src/extension/api.ts | 28 ++++++++++--- 8 files changed, 106 insertions(+), 56 deletions(-) diff --git a/packages/cloud/src/bridge/BridgeOrchestrator.ts b/packages/cloud/src/bridge/BridgeOrchestrator.ts index 73b757e5c8fb..952c4b3e217d 100644 --- a/packages/cloud/src/bridge/BridgeOrchestrator.ts +++ b/packages/cloud/src/bridge/BridgeOrchestrator.ts @@ -31,6 +31,8 @@ export interface BridgeOrchestratorOptions { export class BridgeOrchestrator { private static instance: BridgeOrchestrator | null = null + private static pendingTask: TaskLike | null = null + // Core private readonly userId: string private readonly socketBridgeUrl: string @@ -116,6 +118,22 @@ export class BridgeOrchestrator { } } + /** + * @TODO: What if subtasks also get spawned? We'd probably want deferred + * subscriptions for those too. + */ + public static async subscribeToTask(task: TaskLike): Promise { + const instance = BridgeOrchestrator.instance + + if (instance && instance.socketTransport.isConnected()) { + console.log(`[BridgeOrchestrator#subscribeToTask] Subscribing to task ${task.taskId}`) + await instance.subscribeToTask(task) + } else { + console.log(`[BridgeOrchestrator#subscribeToTask] Deferring subscription for task ${task.taskId}`) + BridgeOrchestrator.pendingTask = task + } + } + private constructor(options: BridgeOrchestratorOptions) { this.userId = options.userId this.socketBridgeUrl = options.socketBridgeUrl @@ -180,12 +198,27 @@ export class BridgeOrchestrator { const socket = this.socketTransport.getSocket() if (!socket) { - console.error("[BridgeOrchestrator] Socket not available after connect") + console.error("[BridgeOrchestrator#handleConnect] Socket not available") return } await this.extensionChannel.onConnect(socket) await this.taskChannel.onConnect(socket) + + if (BridgeOrchestrator.pendingTask) { + console.log( + `[BridgeOrchestrator#handleConnect] Subscribing to task ${BridgeOrchestrator.pendingTask.taskId}`, + ) + + try { + await this.subscribeToTask(BridgeOrchestrator.pendingTask) + BridgeOrchestrator.pendingTask = null + } catch (error) { + console.error( + `[BridgeOrchestrator#handleConnect] subscribeToTask() failed: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } } private handleDisconnect() { @@ -261,6 +294,7 @@ export class BridgeOrchestrator { await this.taskChannel.cleanup(this.socketTransport.getSocket()) await this.socketTransport.disconnect() BridgeOrchestrator.instance = null + BridgeOrchestrator.pendingTask = null } public async reconnect(): Promise { diff --git a/packages/cloud/src/bridge/TaskChannel.ts b/packages/cloud/src/bridge/TaskChannel.ts index f4656dc6d2f6..cf2a4a251610 100644 --- a/packages/cloud/src/bridge/TaskChannel.ts +++ b/packages/cloud/src/bridge/TaskChannel.ts @@ -163,25 +163,27 @@ export class TaskChannel extends BaseChannel< public async unsubscribeFromTask(taskId: string, _socket: Socket): Promise { const task = this.subscribedTasks.get(taskId) + if (!task) { + return + } + await this.publish(TaskSocketEvents.LEAVE, { taskId }, (response: LeaveResponse) => { if (response.success) { - console.log(`[TaskChannel#unsubscribeFromTask] unsubscribed from ${taskId}`, response) + console.log(`[TaskChannel#unsubscribeFromTask] unsubscribed from ${taskId}`) } else { console.error(`[TaskChannel#unsubscribeFromTask] failed to unsubscribe from ${taskId}`) } // If we failed to unsubscribe then something is probably wrong and // we should still discard this task from `subscribedTasks`. - if (task) { - this.removeTaskListeners(task) - this.subscribedTasks.delete(taskId) - } + this.removeTaskListeners(task) + this.subscribedTasks.delete(taskId) }) } private setupTaskListeners(task: TaskLike): void { if (this.taskListeners.has(task.taskId)) { - console.warn("[TaskChannel] Listeners already exist for task, removing old listeners:", task.taskId) + console.warn(`[TaskChannel] Listeners already exist for task, removing old listeners for ${task.taskId}`) this.removeTaskListeners(task) } diff --git a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts index 2809ca78f8c9..e69cb0ce3e88 100644 --- a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts +++ b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts @@ -299,8 +299,7 @@ describe("TaskChannel", () => { // Verify warning was logged expect(warnSpy).toHaveBeenCalledWith( - "[TaskChannel] Listeners already exist for task, removing old listeners:", - taskId, + `[TaskChannel] Listeners already exist for task, removing old listeners for ${taskId}`, ) // Verify only one set of listeners exists diff --git a/packages/types/npm/package.metadata.json b/packages/types/npm/package.metadata.json index 1b1d0d989259..1005327120ea 100644 --- a/packages/types/npm/package.metadata.json +++ b/packages/types/npm/package.metadata.json @@ -1,6 +1,6 @@ { "name": "@roo-code/types", - "version": "1.64.0", + "version": "1.65.0", "description": "TypeScript type definitions for Roo Code.", "publishConfig": { "access": "public", diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index b192440779ab..1a5092a375f5 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -256,7 +256,6 @@ export class Task extends EventEmitter implements TaskLike { // Task Bridge enableBridge: boolean - bridge: BridgeOrchestrator | null = null // Streaming isWaitingForFirstChunk = false @@ -1084,14 +1083,10 @@ export class Task extends EventEmitter implements TaskLike { private async startTask(task?: string, images?: string[]): Promise { if (this.enableBridge) { try { - this.bridge = this.bridge || BridgeOrchestrator.getInstance() - - if (this.bridge) { - await this.bridge.subscribeToTask(this) - } + await BridgeOrchestrator.subscribeToTask(this) } catch (error) { console.error( - `[Task#startTask] subscribeToTask failed - ${error instanceof Error ? error.message : String(error)}`, + `[Task#startTask] BridgeOrchestrator.subscribeToTask() failed: ${error instanceof Error ? error.message : String(error)}`, ) } } @@ -1156,14 +1151,10 @@ export class Task extends EventEmitter implements TaskLike { private async resumeTaskFromHistory() { if (this.enableBridge) { try { - this.bridge = this.bridge || BridgeOrchestrator.getInstance() - - if (this.bridge) { - await this.bridge.subscribeToTask(this) - } + await BridgeOrchestrator.subscribeToTask(this) } catch (error) { console.error( - `[Task#resumeTaskFromHistory] subscribeToTask failed - ${error instanceof Error ? error.message : String(error)}`, + `[Task#resumeTaskFromHistory] BridgeOrchestrator.subscribeToTask() failed: ${error instanceof Error ? error.message : String(error)}`, ) } } @@ -1417,10 +1408,9 @@ export class Task extends EventEmitter implements TaskLike { } public dispose(): void { - // Disposing task - console.log(`[Task] disposing task ${this.taskId}.${this.instanceId}`) + console.log(`[Task#dispose] disposing task ${this.taskId}.${this.instanceId}`) - // Remove all event listeners to prevent memory leaks + // Remove all event listeners to prevent memory leaks. try { this.removeAllListeners() } catch (error) { @@ -1433,13 +1423,14 @@ export class Task extends EventEmitter implements TaskLike { this.pauseInterval = undefined } - // Unsubscribe from TaskBridge service. - if (this.bridge) { - this.bridge - .unsubscribeFromTask(this.taskId) - .catch((error: unknown) => console.error("Error unsubscribing from task bridge:", error)) - - this.bridge = null + if (this.enableBridge) { + BridgeOrchestrator.getInstance() + ?.unsubscribeFromTask(this.taskId) + .catch((error) => + console.error( + `[Task#dispose] BridgeOrchestrator#unsubscribeFromTask() failed: ${error instanceof Error ? error.message : String(error)}`, + ), + ) } // Release any terminals associated with this task. diff --git a/src/core/task/__tests__/Task.dispose.test.ts b/src/core/task/__tests__/Task.dispose.test.ts index 9e793fd8d83b..850b050fb86a 100644 --- a/src/core/task/__tests__/Task.dispose.test.ts +++ b/src/core/task/__tests__/Task.dispose.test.ts @@ -134,7 +134,7 @@ describe("Task dispose method", () => { // Verify dispose was called and logged expect(consoleLogSpy).toHaveBeenCalledWith( - expect.stringContaining(`[Task] disposing task ${task.taskId}.${task.instanceId}`), + expect.stringContaining(`[Task#dispose] disposing task ${task.taskId}.${task.instanceId}`), ) // Verify removeAllListeners was called first (before other cleanup) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index c37288f20d2f..a7c59560e49a 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -165,6 +165,8 @@ export class ClineProvider this.marketplaceManager = new MarketplaceManager(this.context, this.customModesManager) + // Forward task events to the provider. + // We do something fairly similar for the IPC-based API. this.taskCreationCallback = (instance: Task) => { this.emit(RooCodeEventName.TaskCreated, instance) @@ -346,18 +348,18 @@ export class ClineProvider let task = this.clineStack.pop() if (task) { + task.emit(RooCodeEventName.TaskUnfocused) + try { // Abort the running task and set isAbandoned to true so // all running promises will exit as well. await task.abortTask(true) } catch (e) { this.log( - `[removeClineFromStack] encountered error while aborting task ${task.taskId}.${task.instanceId}: ${e.message}`, + `[ClineProvider#removeClineFromStack] abortTask() failed ${task.taskId}.${task.instanceId}: ${e.message}`, ) } - task.emit(RooCodeEventName.TaskUnfocused) - // Remove event listeners before clearing the reference. const cleanupFunctions = this.taskEventListeners.get(task) @@ -405,12 +407,6 @@ export class ClineProvider await this.getCurrentTask()?.resumePausedTask(lastMessage) } - // Clear the current task without treating it as a subtask. - // This is used when the user cancels a task that is not a subtask. - async clearTask() { - await this.removeClineFromStack() - } - resumeTask(taskId: string): void { // Use the existing showTaskWithId method which handles both current and historical tasks this.showTaskWithId(taskId).catch((error) => { @@ -1307,6 +1303,16 @@ export class ClineProvider await this.createTaskWithHistoryItem({ ...historyItem, rootTask, parentTask }) } + // Clear the current task without treating it as a subtask. + // This is used when the user cancels a task that is not a subtask. + async clearTask() { + if (this.clineStack.length > 0) { + const task = this.clineStack[this.clineStack.length - 1] + console.log(`[clearTask] clearing task ${task.taskId}.${task.instanceId}`) + await this.removeClineFromStack() + } + } + async updateCustomInstructions(instructions?: string) { // User may be clearing the field. await this.updateGlobalState("customInstructions", instructions || undefined) @@ -1585,6 +1591,7 @@ export class ClineProvider }) } catch (error) { console.error("Failed to fetch marketplace data:", error) + // Send empty data on error to prevent UI from hanging this.postMessageToWebview({ type: "marketplaceData", @@ -2213,24 +2220,23 @@ export class ClineProvider if (bridge) { const currentTask = this.getCurrentTask() - if (currentTask && !currentTask.bridge) { + if (currentTask && !currentTask.enableBridge) { try { - currentTask.bridge = bridge - await currentTask.bridge.subscribeToTask(currentTask) + currentTask.enableBridge = true + await BridgeOrchestrator.subscribeToTask(currentTask) } catch (error) { - const message = `[ClineProvider#remoteControlEnabled] subscribeToTask failed - ${error instanceof Error ? error.message : String(error)}` + const message = `[ClineProvider#remoteControlEnabled] BridgeOrchestrator.subscribeToTask() failed: ${error instanceof Error ? error.message : String(error)}` this.log(message) console.error(message) } } } else { for (const task of this.clineStack) { - if (task.bridge) { + if (task.enableBridge) { try { - await task.bridge.unsubscribeFromTask(task.taskId) - task.bridge = null + await BridgeOrchestrator.getInstance()?.unsubscribeFromTask(task.taskId) } catch (error) { - const message = `[ClineProvider#remoteControlEnabled] unsubscribeFromTask failed - ${error instanceof Error ? error.message : String(error)}` + const message = `[ClineProvider#remoteControlEnabled] BridgeOrchestrator#unsubscribeFromTask() failed: ${error instanceof Error ? error.message : String(error)}` this.log(message) console.error(message) } diff --git a/src/extension/api.ts b/src/extension/api.ts index 2fc51e7afbb0..9c38aabfdbfb 100644 --- a/src/extension/api.ts +++ b/src/extension/api.ts @@ -253,11 +253,29 @@ export class API extends EventEmitter implements RooCodeAPI { this.taskMap.delete(task.taskId) }) - // Optional: - // RooCodeEventName.TaskFocused - // RooCodeEventName.TaskUnfocused - // RooCodeEventName.TaskActive - // RooCodeEventName.TaskIdle + task.on(RooCodeEventName.TaskFocused, () => { + this.emit(RooCodeEventName.TaskFocused, task.taskId) + }) + + task.on(RooCodeEventName.TaskUnfocused, () => { + this.emit(RooCodeEventName.TaskUnfocused, task.taskId) + }) + + task.on(RooCodeEventName.TaskActive, () => { + this.emit(RooCodeEventName.TaskActive, task.taskId) + }) + + task.on(RooCodeEventName.TaskInteractive, () => { + this.emit(RooCodeEventName.TaskInteractive, task.taskId) + }) + + task.on(RooCodeEventName.TaskResumable, () => { + this.emit(RooCodeEventName.TaskResumable, task.taskId) + }) + + task.on(RooCodeEventName.TaskIdle, () => { + this.emit(RooCodeEventName.TaskIdle, task.taskId) + }) // Subtask Lifecycle From b22a618ee25d7264ada48989a37423462e7281c6 Mon Sep 17 00:00:00 2001 From: "roomote[bot]" <219738659+roomote[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:08:21 -0400 Subject: [PATCH 037/228] feat: add optional input image parameter to image generation tool (#7525) Co-authored-by: Roo Code Co-authored-by: Daniel Riccio --- src/api/providers/openrouter.ts | 23 +- src/core/prompts/tools/generate-image.ts | 22 +- .../tools/__tests__/generateImageTool.test.ts | 313 ++++++++++++++++++ src/core/tools/generateImageTool.ts | 74 ++++- src/shared/tools.ts | 3 +- 5 files changed, 425 insertions(+), 10 deletions(-) create mode 100644 src/core/tools/__tests__/generateImageTool.test.ts diff --git a/src/api/providers/openrouter.ts b/src/api/providers/openrouter.ts index 349e32ced38e..208ba563c644 100644 --- a/src/api/providers/openrouter.ts +++ b/src/api/providers/openrouter.ts @@ -275,9 +275,15 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH * @param prompt The text prompt for image generation * @param model The model to use for generation * @param apiKey The OpenRouter API key (must be explicitly provided) + * @param inputImage Optional base64 encoded input image data URL * @returns The generated image data and format, or an error */ - async generateImage(prompt: string, model: string, apiKey: string): Promise { + async generateImage( + prompt: string, + model: string, + apiKey: string, + inputImage?: string, + ): Promise { if (!apiKey) { return { success: false, @@ -299,7 +305,20 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH messages: [ { role: "user", - content: prompt, + content: inputImage + ? [ + { + type: "text", + text: prompt, + }, + { + type: "image_url", + image_url: { + url: inputImage, + }, + }, + ] + : prompt, }, ], modalities: ["image", "text"], diff --git a/src/core/prompts/tools/generate-image.ts b/src/core/prompts/tools/generate-image.ts index 786976522840..458b7ae8cf34 100644 --- a/src/core/prompts/tools/generate-image.ts +++ b/src/core/prompts/tools/generate-image.ts @@ -2,19 +2,35 @@ import { ToolArgs } from "./types" export function getGenerateImageDescription(args: ToolArgs): string { return `## generate_image -Description: Request to generate an image using AI models through OpenRouter API. This tool creates images from text prompts and saves them to the specified path. +Description: Request to generate or edit an image using AI models through OpenRouter API. This tool can create new images from text prompts or modify existing images based on your instructions. When an input image is provided, the AI will apply the requested edits, transformations, or enhancements to that image. Parameters: -- prompt: (required) The text prompt describing the image to generate -- path: (required) The file path where the generated image should be saved (relative to the current workspace directory ${args.cwd}). The tool will automatically add the appropriate image extension if not provided. +- prompt: (required) The text prompt describing what to generate or how to edit the image +- path: (required) The file path where the generated/edited image should be saved (relative to the current workspace directory ${args.cwd}). The tool will automatically add the appropriate image extension if not provided. +- image: (optional) The file path to an input image to edit or transform (relative to the current workspace directory ${args.cwd}). Supported formats: PNG, JPG, JPEG, GIF, WEBP. Usage: Your image description here path/to/save/image.png +path/to/input/image.jpg Example: Requesting to generate a sunset image A beautiful sunset over mountains with vibrant orange and purple colors images/sunset.png + + +Example: Editing an existing image + +Transform this image into a watercolor painting style +images/watercolor-output.png +images/original-photo.jpg + + +Example: Upscaling and enhancing an image + +Upscale this image to higher resolution, enhance details, improve clarity and sharpness while maintaining the original content and composition +images/enhanced-photo.png +images/low-res-photo.jpg ` } diff --git a/src/core/tools/__tests__/generateImageTool.test.ts b/src/core/tools/__tests__/generateImageTool.test.ts new file mode 100644 index 000000000000..ac7e1228416d --- /dev/null +++ b/src/core/tools/__tests__/generateImageTool.test.ts @@ -0,0 +1,313 @@ +import { describe, it, expect, vi, beforeEach } from "vitest" +import { generateImageTool } from "../generateImageTool" +import { ToolUse } from "../../../shared/tools" +import { Task } from "../../task/Task" +import * as fs from "fs/promises" +import * as pathUtils from "../../../utils/pathUtils" +import * as fileUtils from "../../../utils/fs" +import { formatResponse } from "../../prompts/responses" +import { EXPERIMENT_IDS } from "../../../shared/experiments" +import { OpenRouterHandler } from "../../../api/providers/openrouter" + +// Mock dependencies +vi.mock("fs/promises") +vi.mock("../../../utils/pathUtils") +vi.mock("../../../utils/fs") +vi.mock("../../../utils/safeWriteJson") +vi.mock("../../../api/providers/openrouter") + +describe("generateImageTool", () => { + let mockCline: any + let mockAskApproval: any + let mockHandleError: any + let mockPushToolResult: any + let mockRemoveClosingTag: any + + beforeEach(() => { + vi.clearAllMocks() + + // Setup mock Cline instance + mockCline = { + cwd: "/test/workspace", + consecutiveMistakeCount: 0, + recordToolError: vi.fn(), + recordToolUsage: vi.fn(), + sayAndCreateMissingParamError: vi.fn().mockResolvedValue("Missing parameter error"), + say: vi.fn(), + rooIgnoreController: { + validateAccess: vi.fn().mockReturnValue(true), + }, + rooProtectedController: { + isWriteProtected: vi.fn().mockReturnValue(false), + }, + providerRef: { + deref: vi.fn().mockReturnValue({ + getState: vi.fn().mockResolvedValue({ + experiments: { + [EXPERIMENT_IDS.IMAGE_GENERATION]: true, + }, + apiConfiguration: { + openRouterImageGenerationSettings: { + openRouterApiKey: "test-api-key", + selectedModel: "google/gemini-2.5-flash-image-preview", + }, + }, + }), + }), + }, + fileContextTracker: { + trackFileContext: vi.fn(), + }, + didEditFile: false, + } + + mockAskApproval = vi.fn().mockResolvedValue(true) + mockHandleError = vi.fn() + mockPushToolResult = vi.fn() + mockRemoveClosingTag = vi.fn((tag, content) => content || "") + + // Mock file system operations + vi.mocked(fileUtils.fileExistsAtPath).mockResolvedValue(true) + vi.mocked(fs.readFile).mockResolvedValue(Buffer.from("fake-image-data")) + vi.mocked(fs.mkdir).mockResolvedValue(undefined) + vi.mocked(fs.writeFile).mockResolvedValue(undefined) + vi.mocked(pathUtils.isPathOutsideWorkspace).mockReturnValue(false) + }) + + describe("partial block handling", () => { + it("should return early when block is partial", async () => { + const partialBlock: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Generate a test image", + path: "test-image.png", + }, + partial: true, + } + + await generateImageTool( + mockCline as Task, + partialBlock, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + // Should not process anything when partial + expect(mockAskApproval).not.toHaveBeenCalled() + expect(mockPushToolResult).not.toHaveBeenCalled() + expect(mockCline.say).not.toHaveBeenCalled() + }) + + it("should return early when block is partial even with image parameter", async () => { + const partialBlock: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Upscale this image", + path: "upscaled-image.png", + image: "source-image.png", + }, + partial: true, + } + + await generateImageTool( + mockCline as Task, + partialBlock, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + // Should not process anything when partial + expect(mockAskApproval).not.toHaveBeenCalled() + expect(mockPushToolResult).not.toHaveBeenCalled() + expect(mockCline.say).not.toHaveBeenCalled() + expect(fs.readFile).not.toHaveBeenCalled() + }) + + it("should process when block is not partial", async () => { + const completeBlock: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Generate a test image", + path: "test-image.png", + }, + partial: false, + } + + // Mock the OpenRouterHandler generateImage method + const mockGenerateImage = vi.fn().mockResolvedValue({ + success: true, + imageData: "data:image/png;base64,fakebase64data", + }) + + vi.mocked(OpenRouterHandler).mockImplementation( + () => + ({ + generateImage: mockGenerateImage, + }) as any, + ) + + await generateImageTool( + mockCline as Task, + completeBlock, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + // Should process the complete block + expect(mockAskApproval).toHaveBeenCalled() + expect(mockGenerateImage).toHaveBeenCalled() + expect(mockPushToolResult).toHaveBeenCalled() + }) + }) + + describe("missing parameters", () => { + it("should handle missing prompt parameter", async () => { + const block: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + path: "test-image.png", + }, + partial: false, + } + + await generateImageTool( + mockCline as Task, + block, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + expect(mockCline.consecutiveMistakeCount).toBe(1) + expect(mockCline.recordToolError).toHaveBeenCalledWith("generate_image") + expect(mockCline.sayAndCreateMissingParamError).toHaveBeenCalledWith("generate_image", "prompt") + expect(mockPushToolResult).toHaveBeenCalledWith("Missing parameter error") + }) + + it("should handle missing path parameter", async () => { + const block: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Generate a test image", + }, + partial: false, + } + + await generateImageTool( + mockCline as Task, + block, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + expect(mockCline.consecutiveMistakeCount).toBe(1) + expect(mockCline.recordToolError).toHaveBeenCalledWith("generate_image") + expect(mockCline.sayAndCreateMissingParamError).toHaveBeenCalledWith("generate_image", "path") + expect(mockPushToolResult).toHaveBeenCalledWith("Missing parameter error") + }) + }) + + describe("experiment validation", () => { + it("should error when image generation experiment is disabled", async () => { + // Disable the experiment + mockCline.providerRef.deref().getState.mockResolvedValue({ + experiments: { + [EXPERIMENT_IDS.IMAGE_GENERATION]: false, + }, + }) + + const block: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Generate a test image", + path: "test-image.png", + }, + partial: false, + } + + await generateImageTool( + mockCline as Task, + block, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + expect(mockPushToolResult).toHaveBeenCalledWith( + formatResponse.toolError( + "Image generation is an experimental feature that must be enabled in settings. Please enable 'Image Generation' in the Experimental Settings section.", + ), + ) + }) + }) + + describe("input image validation", () => { + it("should handle non-existent input image", async () => { + vi.mocked(fileUtils.fileExistsAtPath).mockResolvedValue(false) + + const block: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Upscale this image", + path: "upscaled.png", + image: "non-existent.png", + }, + partial: false, + } + + await generateImageTool( + mockCline as Task, + block, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + expect(mockCline.say).toHaveBeenCalledWith("error", expect.stringContaining("Input image not found")) + expect(mockPushToolResult).toHaveBeenCalledWith(expect.stringContaining("Input image not found")) + }) + + it("should handle unsupported image format", async () => { + const block: ToolUse = { + type: "tool_use", + name: "generate_image", + params: { + prompt: "Upscale this image", + path: "upscaled.png", + image: "test.bmp", // Unsupported format + }, + partial: false, + } + + await generateImageTool( + mockCline as Task, + block, + mockAskApproval, + mockHandleError, + mockPushToolResult, + mockRemoveClosingTag, + ) + + expect(mockCline.say).toHaveBeenCalledWith("error", expect.stringContaining("Unsupported image format")) + expect(mockPushToolResult).toHaveBeenCalledWith(expect.stringContaining("Unsupported image format")) + }) + }) +}) diff --git a/src/core/tools/generateImageTool.ts b/src/core/tools/generateImageTool.ts index f3ffeb55caf1..4bb67d629c38 100644 --- a/src/core/tools/generateImageTool.ts +++ b/src/core/tools/generateImageTool.ts @@ -24,6 +24,7 @@ export async function generateImageTool( ) { const prompt: string | undefined = block.params.prompt const relPath: string | undefined = block.params.path + const inputImagePath: string | undefined = block.params.image // Check if the experiment is enabled const provider = cline.providerRef.deref() @@ -39,8 +40,7 @@ export async function generateImageTool( return } - if (block.partial && (!prompt || !relPath)) { - // Wait for complete parameters + if (block.partial) { return } @@ -66,6 +66,66 @@ export async function generateImageTool( return } + // If input image is provided, validate it exists and can be read + let inputImageData: string | undefined + if (inputImagePath) { + const inputImageFullPath = path.resolve(cline.cwd, inputImagePath) + + // Check if input image exists + const inputImageExists = await fileExistsAtPath(inputImageFullPath) + if (!inputImageExists) { + await cline.say("error", `Input image not found: ${getReadablePath(cline.cwd, inputImagePath)}`) + pushToolResult( + formatResponse.toolError(`Input image not found: ${getReadablePath(cline.cwd, inputImagePath)}`), + ) + return + } + + // Validate input image access permissions + const inputImageAccessAllowed = cline.rooIgnoreController?.validateAccess(inputImagePath) + if (!inputImageAccessAllowed) { + await cline.say("rooignore_error", inputImagePath) + pushToolResult(formatResponse.toolError(formatResponse.rooIgnoreError(inputImagePath))) + return + } + + // Read the input image file + try { + const imageBuffer = await fs.readFile(inputImageFullPath) + const imageExtension = path.extname(inputImageFullPath).toLowerCase().replace(".", "") + + // Validate image format + const supportedFormats = ["png", "jpg", "jpeg", "gif", "webp"] + if (!supportedFormats.includes(imageExtension)) { + await cline.say( + "error", + `Unsupported image format: ${imageExtension}. Supported formats: ${supportedFormats.join(", ")}`, + ) + pushToolResult( + formatResponse.toolError( + `Unsupported image format: ${imageExtension}. Supported formats: ${supportedFormats.join(", ")}`, + ), + ) + return + } + + // Convert to base64 data URL + const mimeType = imageExtension === "jpg" ? "jpeg" : imageExtension + inputImageData = `data:image/${mimeType};base64,${imageBuffer.toString("base64")}` + } catch (error) { + await cline.say( + "error", + `Failed to read input image: ${error instanceof Error ? error.message : "Unknown error"}`, + ) + pushToolResult( + formatResponse.toolError( + `Failed to read input image: ${error instanceof Error ? error.message : "Unknown error"}`, + ), + ) + return + } + } + // Check if file is write-protected const isWriteProtected = cline.rooProtectedController?.isWriteProtected(relPath) || false @@ -110,6 +170,7 @@ export async function generateImageTool( const approvalMessage = JSON.stringify({ ...sharedMessageProps, content: prompt, + ...(inputImagePath && { inputImage: getReadablePath(cline.cwd, inputImagePath) }), }) const didApprove = await askApproval("tool", approvalMessage, undefined, isWriteProtected) @@ -121,8 +182,13 @@ export async function generateImageTool( // Create a temporary OpenRouter handler with minimal options const openRouterHandler = new OpenRouterHandler({} as any) - // Call the generateImage method with the explicit API key - const result = await openRouterHandler.generateImage(prompt, selectedModel, openRouterApiKey) + // Call the generateImage method with the explicit API key and optional input image + const result = await openRouterHandler.generateImage( + prompt, + selectedModel, + openRouterApiKey, + inputImageData, + ) if (!result.success) { await cline.say("error", result.error || "Failed to generate image") diff --git a/src/shared/tools.ts b/src/shared/tools.ts index f15e8ef4c939..8a8776764efd 100644 --- a/src/shared/tools.ts +++ b/src/shared/tools.ts @@ -66,6 +66,7 @@ export const toolParamNames = [ "args", "todos", "prompt", + "image", ] as const export type ToolParamName = (typeof toolParamNames)[number] @@ -167,7 +168,7 @@ export interface SearchAndReplaceToolUse extends ToolUse { export interface GenerateImageToolUse extends ToolUse { name: "generate_image" - params: Partial, "prompt" | "path">> + params: Partial, "prompt" | "path" | "image">> } // Define tool group configuration From 01458f16461a687c8815e0bbf2d0dc1ceefbd6e4 Mon Sep 17 00:00:00 2001 From: "roomote[bot]" <219738659+roomote[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:08:58 -0700 Subject: [PATCH 038/228] feat: sync extension bridge settings with cloud (#7535) - Use CloudService.getUserSettings() for remoteControlEnabled instead of global state - Update CloudService.updateUserSettings when toggling remote control - Add BridgeOrchestrator.connectOrDisconnect handling in settings update handler - Remove dependency on contentProxy/globalSettings for remote control state --------- Co-authored-by: Roo Code Co-authored-by: John Richmond <5629+jr@users.noreply.github.com> --- src/core/webview/ClineProvider.ts | 16 ++++++-- src/core/webview/webviewMessageHandler.ts | 8 +++- src/extension.ts | 45 ++++++++++++++++++++--- 3 files changed, 59 insertions(+), 10 deletions(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index a7c59560e49a..7b418d9e258e 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1892,7 +1892,7 @@ export class ClineProvider includeDiagnosticMessages: includeDiagnosticMessages ?? true, maxDiagnosticMessages: maxDiagnosticMessages ?? 50, includeTaskHistoryInEnhance: includeTaskHistoryInEnhance ?? true, - remoteControlEnabled: remoteControlEnabled ?? false, + remoteControlEnabled, } } @@ -2080,8 +2080,18 @@ export class ClineProvider maxDiagnosticMessages: stateValues.maxDiagnosticMessages ?? 50, // Add includeTaskHistoryInEnhance setting includeTaskHistoryInEnhance: stateValues.includeTaskHistoryInEnhance ?? true, - // Add remoteControlEnabled setting - remoteControlEnabled: stateValues.remoteControlEnabled ?? false, + // Add remoteControlEnabled setting - get from cloud settings + remoteControlEnabled: (() => { + try { + const cloudSettings = CloudService.instance.getUserSettings() + return cloudSettings?.settings?.extensionBridgeEnabled ?? false + } catch (error) { + console.error( + `[getState] failed to get remote control setting from cloud: ${error instanceof Error ? error.message : String(error)}`, + ) + return false + } + })(), } } diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 970c9d0712c9..0a314edde3c7 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -950,7 +950,13 @@ export const webviewMessageHandler = async ( await provider.postStateToWebview() break case "remoteControlEnabled": - await updateGlobalState("remoteControlEnabled", message.bool ?? false) + try { + await CloudService.instance.updateUserSettings({ + extensionBridgeEnabled: message.bool ?? false, + }) + } catch (error) { + provider.log(`Failed to update cloud settings for remote control: ${error}`) + } await provider.remoteControlEnabled(message.bool ?? false) await provider.postStateToWebview() break diff --git a/src/extension.ts b/src/extension.ts index 4aa5ff11133a..cb765ad718e8 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -128,7 +128,36 @@ export async function activate(context: vscode.ExtensionContext) { // Initialize Roo Code Cloud service. const postStateListener = () => ClineProvider.getVisibleInstance()?.postStateToWebview() authStateChangedHandler = postStateListener - settingsUpdatedHandler = postStateListener + + settingsUpdatedHandler = async () => { + const userInfo = CloudService.instance.getUserInfo() + if (userInfo && CloudService.instance.cloudAPI) { + try { + const config = await CloudService.instance.cloudAPI.bridgeConfig() + + const isCloudAgent = + typeof process.env.ROO_CODE_CLOUD_TOKEN === "string" && process.env.ROO_CODE_CLOUD_TOKEN.length > 0 + + const remoteControlEnabled = isCloudAgent + ? true + : (CloudService.instance.getUserSettings()?.settings?.extensionBridgeEnabled ?? false) + + cloudLogger(`[CloudService] Settings updated - remoteControlEnabled = ${remoteControlEnabled}`) + + await BridgeOrchestrator.connectOrDisconnect(userInfo, remoteControlEnabled, { + ...config, + provider, + sessionId: vscode.env.sessionId, + }) + } catch (error) { + cloudLogger( + `[CloudService] Failed to update BridgeOrchestrator on settings change: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + + postStateListener() + } userInfoHandler = async ({ userInfo }: { userInfo: CloudUserInfo }) => { postStateListener() @@ -146,11 +175,15 @@ export async function activate(context: vscode.ExtensionContext) { cloudLogger(`[CloudService] isCloudAgent = ${isCloudAgent}, socketBridgeUrl = ${config.socketBridgeUrl}`) - await BridgeOrchestrator.connectOrDisconnect( - userInfo, - isCloudAgent ? true : contextProxy.getValue("remoteControlEnabled"), - { ...config, provider, sessionId: vscode.env.sessionId }, - ) + const remoteControlEnabled = isCloudAgent + ? true + : (CloudService.instance.getUserSettings()?.settings?.extensionBridgeEnabled ?? false) + + await BridgeOrchestrator.connectOrDisconnect(userInfo, remoteControlEnabled, { + ...config, + provider, + sessionId: vscode.env.sessionId, + }) } catch (error) { cloudLogger( `[CloudService] Failed to fetch bridgeConfig: ${error instanceof Error ? error.message : String(error)}`, From c3d84d295db48a8d348d27dca914471437a6c9b6 Mon Sep 17 00:00:00 2001 From: Daniel <57051444+daniel-lxs@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:35:24 -0500 Subject: [PATCH 039/228] refactor: flatten image generation settings structure (#7536) --- packages/types/src/global-settings.ts | 25 +++- packages/types/src/provider-settings.ts | 7 - src/core/config/ContextProxy.ts | 124 ++++++++++++++---- .../config/__tests__/ContextProxy.spec.ts | 21 ++- .../tools/__tests__/generateImageTool.test.ts | 8 +- src/core/tools/generateImageTool.ts | 8 +- src/core/webview/ClineProvider.ts | 7 + .../webview/__tests__/ClineProvider.spec.ts | 2 + src/core/webview/webviewMessageHandler.ts | 8 ++ src/shared/ExtensionMessage.ts | 2 + src/shared/WebviewMessage.ts | 4 + src/shared/checkExistApiConfig.ts | 6 +- .../settings/ExperimentalSettings.tsx | 20 ++- .../settings/ImageGenerationSettings.tsx | 52 +++----- .../src/components/settings/SettingsView.tsx | 27 ++++ .../ImageGenerationSettings.spec.tsx | 53 ++++---- .../src/context/ExtensionStateContext.tsx | 2 + 17 files changed, 260 insertions(+), 116 deletions(-) diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index e8dbffb62d3c..74009ef6360d 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -42,6 +42,10 @@ export const globalSettingsSchema = z.object({ customInstructions: z.string().optional(), taskHistory: z.array(historyItemSchema).optional(), + // Image generation settings (experimental) - flattened for simplicity + openRouterImageApiKey: z.string().optional(), + openRouterImageGenerationSelectedModel: z.string().optional(), + condensingApiConfigId: z.string().optional(), customCondensingPrompt: z.string().optional(), @@ -200,11 +204,24 @@ export const SECRET_STATE_KEYS = [ "featherlessApiKey", "ioIntelligenceApiKey", "vercelAiGatewayApiKey", -] as const satisfies readonly (keyof ProviderSettings)[] -export type SecretState = Pick +] as const + +// Global secrets that are part of GlobalSettings (not ProviderSettings) +export const GLOBAL_SECRET_KEYS = [ + "openRouterImageApiKey", // For image generation +] as const + +// Type for the actual secret storage keys +type ProviderSecretKey = (typeof SECRET_STATE_KEYS)[number] +type GlobalSecretKey = (typeof GLOBAL_SECRET_KEYS)[number] + +// Type representing all secrets that can be stored +export type SecretState = Pick> & { + [K in GlobalSecretKey]?: string +} export const isSecretStateKey = (key: string): key is Keys => - SECRET_STATE_KEYS.includes(key as Keys) + SECRET_STATE_KEYS.includes(key as ProviderSecretKey) || GLOBAL_SECRET_KEYS.includes(key as GlobalSecretKey) /** * GlobalState @@ -213,7 +230,7 @@ export const isSecretStateKey = (key: string): key is Keys => export type GlobalState = Omit> export const GLOBAL_STATE_KEYS = [...GLOBAL_SETTINGS_KEYS, ...PROVIDER_SETTINGS_KEYS].filter( - (key: Keys) => !SECRET_STATE_KEYS.includes(key as Keys), + (key: Keys) => !isSecretStateKey(key), ) as Keys[] export const isGlobalStateKey = (key: string): key is Keys => diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 15833e00c4dc..b55dc8a8c3ad 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -142,13 +142,6 @@ const openRouterSchema = baseProviderSettingsSchema.extend({ openRouterBaseUrl: z.string().optional(), openRouterSpecificProvider: z.string().optional(), openRouterUseMiddleOutTransform: z.boolean().optional(), - // Image generation settings (experimental) - openRouterImageGenerationSettings: z - .object({ - openRouterApiKey: z.string().optional(), - selectedModel: z.string().optional(), - }) - .optional(), }) const bedrockSchema = apiModelIdProviderModelSchema.extend({ diff --git a/src/core/config/ContextProxy.ts b/src/core/config/ContextProxy.ts index 5535cd2ff4c9..ab952da94913 100644 --- a/src/core/config/ContextProxy.ts +++ b/src/core/config/ContextProxy.ts @@ -6,6 +6,7 @@ import { GLOBAL_SETTINGS_KEYS, SECRET_STATE_KEYS, GLOBAL_STATE_KEYS, + GLOBAL_SECRET_KEYS, type ProviderSettings, type GlobalSettings, type SecretState, @@ -61,19 +62,77 @@ export class ContextProxy { } } - const promises = SECRET_STATE_KEYS.map(async (key) => { - try { - this.secretCache[key] = await this.originalContext.secrets.get(key) - } catch (error) { - logger.error(`Error loading secret ${key}: ${error instanceof Error ? error.message : String(error)}`) - } - }) + const promises = [ + ...SECRET_STATE_KEYS.map(async (key) => { + try { + this.secretCache[key] = await this.originalContext.secrets.get(key) + } catch (error) { + logger.error( + `Error loading secret ${key}: ${error instanceof Error ? error.message : String(error)}`, + ) + } + }), + ...GLOBAL_SECRET_KEYS.map(async (key) => { + try { + this.secretCache[key] = await this.originalContext.secrets.get(key) + } catch (error) { + logger.error( + `Error loading global secret ${key}: ${error instanceof Error ? error.message : String(error)}`, + ) + } + }), + ] await Promise.all(promises) + // Migration: Check for old nested image generation settings and migrate them + await this.migrateImageGenerationSettings() + this._isInitialized = true } + /** + * Migrates old nested openRouterImageGenerationSettings to the new flattened structure + */ + private async migrateImageGenerationSettings() { + try { + // Check if there's an old nested structure + const oldNestedSettings = this.originalContext.globalState.get("openRouterImageGenerationSettings") + + if (oldNestedSettings && typeof oldNestedSettings === "object") { + logger.info("Migrating old nested image generation settings to flattened structure") + + // Migrate the API key if it exists and we don't already have one + if (oldNestedSettings.openRouterApiKey && !this.secretCache.openRouterImageApiKey) { + await this.originalContext.secrets.store( + "openRouterImageApiKey", + oldNestedSettings.openRouterApiKey, + ) + this.secretCache.openRouterImageApiKey = oldNestedSettings.openRouterApiKey + logger.info("Migrated openRouterImageApiKey to secrets") + } + + // Migrate the selected model if it exists and we don't already have one + if (oldNestedSettings.selectedModel && !this.stateCache.openRouterImageGenerationSelectedModel) { + await this.originalContext.globalState.update( + "openRouterImageGenerationSelectedModel", + oldNestedSettings.selectedModel, + ) + this.stateCache.openRouterImageGenerationSelectedModel = oldNestedSettings.selectedModel + logger.info("Migrated openRouterImageGenerationSelectedModel to global state") + } + + // Clean up the old nested structure + await this.originalContext.globalState.update("openRouterImageGenerationSettings", undefined) + logger.info("Removed old nested openRouterImageGenerationSettings") + } + } catch (error) { + logger.error( + `Error during image generation settings migration: ${error instanceof Error ? error.message : String(error)}`, + ) + } + } + public get extensionUri() { return this.originalContext.extensionUri } @@ -152,20 +211,34 @@ export class ContextProxy { * This is useful when you need to ensure the cache has the latest values */ async refreshSecrets(): Promise { - const promises = SECRET_STATE_KEYS.map(async (key) => { - try { - this.secretCache[key] = await this.originalContext.secrets.get(key) - } catch (error) { - logger.error( - `Error refreshing secret ${key}: ${error instanceof Error ? error.message : String(error)}`, - ) - } - }) + const promises = [ + ...SECRET_STATE_KEYS.map(async (key) => { + try { + this.secretCache[key] = await this.originalContext.secrets.get(key) + } catch (error) { + logger.error( + `Error refreshing secret ${key}: ${error instanceof Error ? error.message : String(error)}`, + ) + } + }), + ...GLOBAL_SECRET_KEYS.map(async (key) => { + try { + this.secretCache[key] = await this.originalContext.secrets.get(key) + } catch (error) { + logger.error( + `Error refreshing global secret ${key}: ${error instanceof Error ? error.message : String(error)}`, + ) + } + }), + ] await Promise.all(promises) } private getAllSecretState(): SecretState { - return Object.fromEntries(SECRET_STATE_KEYS.map((key) => [key, this.getSecret(key)])) + return Object.fromEntries([ + ...SECRET_STATE_KEYS.map((key) => [key, this.getSecret(key as SecretStateKey)]), + ...GLOBAL_SECRET_KEYS.map((key) => [key, this.getSecret(key as SecretStateKey)]), + ]) } /** @@ -232,18 +305,24 @@ export class ContextProxy { * RooCodeSettings */ - public setValue(key: K, value: RooCodeSettings[K]) { - return isSecretStateKey(key) ? this.storeSecret(key, value as string) : this.updateGlobalState(key, value) + public async setValue(key: K, value: RooCodeSettings[K]) { + return isSecretStateKey(key) + ? this.storeSecret(key as SecretStateKey, value as string) + : this.updateGlobalState(key as GlobalStateKey, value) } public getValue(key: K): RooCodeSettings[K] { return isSecretStateKey(key) - ? (this.getSecret(key) as RooCodeSettings[K]) - : (this.getGlobalState(key) as RooCodeSettings[K]) + ? (this.getSecret(key as SecretStateKey) as RooCodeSettings[K]) + : (this.getGlobalState(key as GlobalStateKey) as RooCodeSettings[K]) } public getValues(): RooCodeSettings { - return { ...this.getAllGlobalState(), ...this.getAllSecretState() } + const globalState = this.getAllGlobalState() + const secretState = this.getAllSecretState() + + // Simply merge all states - no nested secrets to handle + return { ...globalState, ...secretState } } public async setValues(values: RooCodeSettings) { @@ -285,6 +364,7 @@ export class ContextProxy { await Promise.all([ ...GLOBAL_STATE_KEYS.map((key) => this.originalContext.globalState.update(key, undefined)), ...SECRET_STATE_KEYS.map((key) => this.originalContext.secrets.delete(key)), + ...GLOBAL_SECRET_KEYS.map((key) => this.originalContext.secrets.delete(key)), ]) await this.initialize() diff --git a/src/core/config/__tests__/ContextProxy.spec.ts b/src/core/config/__tests__/ContextProxy.spec.ts index 86b7bbef30ba..58dae7e24e54 100644 --- a/src/core/config/__tests__/ContextProxy.spec.ts +++ b/src/core/config/__tests__/ContextProxy.spec.ts @@ -2,7 +2,7 @@ import * as vscode from "vscode" -import { GLOBAL_STATE_KEYS, SECRET_STATE_KEYS } from "@roo-code/types" +import { GLOBAL_STATE_KEYS, SECRET_STATE_KEYS, GLOBAL_SECRET_KEYS } from "@roo-code/types" import { ContextProxy } from "../ContextProxy" @@ -70,17 +70,23 @@ describe("ContextProxy", () => { describe("constructor", () => { it("should initialize state cache with all global state keys", () => { - expect(mockGlobalState.get).toHaveBeenCalledTimes(GLOBAL_STATE_KEYS.length) + // +1 for the migration check of old nested settings + expect(mockGlobalState.get).toHaveBeenCalledTimes(GLOBAL_STATE_KEYS.length + 1) for (const key of GLOBAL_STATE_KEYS) { expect(mockGlobalState.get).toHaveBeenCalledWith(key) } + // Also check for migration call + expect(mockGlobalState.get).toHaveBeenCalledWith("openRouterImageGenerationSettings") }) it("should initialize secret cache with all secret keys", () => { - expect(mockSecrets.get).toHaveBeenCalledTimes(SECRET_STATE_KEYS.length) + expect(mockSecrets.get).toHaveBeenCalledTimes(SECRET_STATE_KEYS.length + GLOBAL_SECRET_KEYS.length) for (const key of SECRET_STATE_KEYS) { expect(mockSecrets.get).toHaveBeenCalledWith(key) } + for (const key of GLOBAL_SECRET_KEYS) { + expect(mockSecrets.get).toHaveBeenCalledWith(key) + } }) }) @@ -93,8 +99,8 @@ describe("ContextProxy", () => { const result = proxy.getGlobalState("apiProvider") expect(result).toBe("deepseek") - // Original context should be called once during updateGlobalState - expect(mockGlobalState.get).toHaveBeenCalledTimes(GLOBAL_STATE_KEYS.length) // Only from initialization + // Original context should be called once during updateGlobalState (+1 for migration check) + expect(mockGlobalState.get).toHaveBeenCalledTimes(GLOBAL_STATE_KEYS.length + 1) // From initialization + migration check }) it("should handle default values correctly", async () => { @@ -403,9 +409,12 @@ describe("ContextProxy", () => { for (const key of SECRET_STATE_KEYS) { expect(mockSecrets.delete).toHaveBeenCalledWith(key) } + for (const key of GLOBAL_SECRET_KEYS) { + expect(mockSecrets.delete).toHaveBeenCalledWith(key) + } // Total calls should equal the number of secret keys - expect(mockSecrets.delete).toHaveBeenCalledTimes(SECRET_STATE_KEYS.length) + expect(mockSecrets.delete).toHaveBeenCalledTimes(SECRET_STATE_KEYS.length + GLOBAL_SECRET_KEYS.length) }) it("should reinitialize caches after reset", async () => { diff --git a/src/core/tools/__tests__/generateImageTool.test.ts b/src/core/tools/__tests__/generateImageTool.test.ts index ac7e1228416d..0a12bebbe22b 100644 --- a/src/core/tools/__tests__/generateImageTool.test.ts +++ b/src/core/tools/__tests__/generateImageTool.test.ts @@ -46,12 +46,8 @@ describe("generateImageTool", () => { experiments: { [EXPERIMENT_IDS.IMAGE_GENERATION]: true, }, - apiConfiguration: { - openRouterImageGenerationSettings: { - openRouterApiKey: "test-api-key", - selectedModel: "google/gemini-2.5-flash-image-preview", - }, - }, + openRouterImageApiKey: "test-api-key", + openRouterImageGenerationSelectedModel: "google/gemini-2.5-flash-image-preview", }), }), }, diff --git a/src/core/tools/generateImageTool.ts b/src/core/tools/generateImageTool.ts index 4bb67d629c38..775637f34b18 100644 --- a/src/core/tools/generateImageTool.ts +++ b/src/core/tools/generateImageTool.ts @@ -129,10 +129,8 @@ export async function generateImageTool( // Check if file is write-protected const isWriteProtected = cline.rooProtectedController?.isWriteProtected(relPath) || false - // Get OpenRouter API key from experimental settings ONLY (no fallback to profile) - const apiConfiguration = state?.apiConfiguration - const imageGenerationSettings = apiConfiguration?.openRouterImageGenerationSettings - const openRouterApiKey = imageGenerationSettings?.openRouterApiKey + // Get OpenRouter API key from global settings (experimental image generation) + const openRouterApiKey = state?.openRouterImageApiKey if (!openRouterApiKey) { await cline.say( @@ -148,7 +146,7 @@ export async function generateImageTool( } // Get selected model from settings or use default - const selectedModel = imageGenerationSettings?.selectedModel || IMAGE_GENERATION_MODELS[0] + const selectedModel = state?.openRouterImageGenerationSelectedModel || IMAGE_GENERATION_MODELS[0] // Determine if the path is outside the workspace const fullPath = path.resolve(cline.cwd, removeClosingTag("path", relPath)) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 7b418d9e258e..c68c3a8e458a 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1762,6 +1762,8 @@ export class ClineProvider maxDiagnosticMessages, includeTaskHistoryInEnhance, remoteControlEnabled, + openRouterImageApiKey, + openRouterImageGenerationSelectedModel, } = await this.getState() const telemetryKey = process.env.POSTHOG_API_KEY @@ -1893,6 +1895,8 @@ export class ClineProvider maxDiagnosticMessages: maxDiagnosticMessages ?? 50, includeTaskHistoryInEnhance: includeTaskHistoryInEnhance ?? true, remoteControlEnabled, + openRouterImageApiKey, + openRouterImageGenerationSelectedModel, } } @@ -2092,6 +2096,9 @@ export class ClineProvider return false } })(), + // Add image generation settings + openRouterImageApiKey: stateValues.openRouterImageApiKey, + openRouterImageGenerationSelectedModel: stateValues.openRouterImageGenerationSelectedModel, } } diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index a09ca1a85105..400ce504682a 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -546,6 +546,8 @@ describe("ClineProvider", () => { profileThresholds: {}, hasOpenedModeSelector: false, diagnosticsEnabled: true, + openRouterImageApiKey: undefined, + openRouterImageGenerationSelectedModel: undefined, } const message: ExtensionMessage = { diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 0a314edde3c7..217363c9abb9 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -1313,6 +1313,14 @@ export const webviewMessageHandler = async ( await updateGlobalState("language", message.text as Language) await provider.postStateToWebview() break + case "openRouterImageApiKey": + await provider.contextProxy.setValue("openRouterImageApiKey", message.text) + await provider.postStateToWebview() + break + case "openRouterImageGenerationSelectedModel": + await provider.contextProxy.setValue("openRouterImageGenerationSelectedModel", message.text) + await provider.postStateToWebview() + break case "showRooIgnoredFiles": await updateGlobalState("showRooIgnoredFiles", message.bool ?? false) await provider.postStateToWebview() diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 65fe18185969..63a726049814 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -273,6 +273,7 @@ export type ExtensionState = Pick< | "includeDiagnosticMessages" | "maxDiagnosticMessages" | "remoteControlEnabled" + | "openRouterImageGenerationSelectedModel" > & { version: string clineMessages: ClineMessage[] @@ -326,6 +327,7 @@ export type ExtensionState = Pick< marketplaceInstalledMetadata?: { project: Record; global: Record } profileThresholds: Record hasOpenedModeSelector: boolean + openRouterImageApiKey?: string } export interface ClineSayTool { diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index e2df8053409a..12e4dbb0f43d 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -212,6 +212,9 @@ export interface WebviewMessage { | "createCommand" | "insertTextIntoTextarea" | "showMdmAuthRequiredNotification" + | "imageGenerationSettings" + | "openRouterImageApiKey" + | "openRouterImageGenerationSelectedModel" text?: string editedMessageContent?: string tab?: "settings" | "history" | "mcp" | "modes" | "chat" | "marketplace" | "account" @@ -248,6 +251,7 @@ export interface WebviewMessage { messageTs?: number historyPreviewCollapsed?: boolean filters?: { type?: string; search?: string; tags?: string[] } + settings?: any url?: string // For openExternal mpItem?: MarketplaceItem mpInstallOptions?: InstallMarketplaceItemOptions diff --git a/src/shared/checkExistApiConfig.ts b/src/shared/checkExistApiConfig.ts index 3fc9a5ffdb51..4b9af08d5afe 100644 --- a/src/shared/checkExistApiConfig.ts +++ b/src/shared/checkExistApiConfig.ts @@ -1,4 +1,4 @@ -import { SECRET_STATE_KEYS, ProviderSettings } from "@roo-code/types" +import { SECRET_STATE_KEYS, GLOBAL_SECRET_KEYS, ProviderSettings } from "@roo-code/types" export function checkExistKey(config: ProviderSettings | undefined) { if (!config) { @@ -14,7 +14,9 @@ export function checkExistKey(config: ProviderSettings | undefined) { } // Check all secret keys from the centralized SECRET_STATE_KEYS array. - const hasSecretKey = SECRET_STATE_KEYS.some((key) => config[key] !== undefined) + // Filter out keys that are not part of ProviderSettings (global secrets are stored separately) + const providerSecretKeys = SECRET_STATE_KEYS.filter((key) => !GLOBAL_SECRET_KEYS.includes(key as any)) + const hasSecretKey = providerSecretKeys.some((key) => config[key as keyof ProviderSettings] !== undefined) // Check additional non-secret configuration properties const hasOtherConfig = [ diff --git a/webview-ui/src/components/settings/ExperimentalSettings.tsx b/webview-ui/src/components/settings/ExperimentalSettings.tsx index 4d0bb8aba6ab..6883975d02e5 100644 --- a/webview-ui/src/components/settings/ExperimentalSettings.tsx +++ b/webview-ui/src/components/settings/ExperimentalSettings.tsx @@ -19,6 +19,10 @@ type ExperimentalSettingsProps = HTMLAttributes & { setExperimentEnabled: SetExperimentEnabled apiConfiguration?: any setApiConfigurationField?: any + openRouterImageApiKey?: string + openRouterImageGenerationSelectedModel?: string + setOpenRouterImageApiKey?: (apiKey: string) => void + setImageGenerationSelectedModel?: (model: string) => void } export const ExperimentalSettings = ({ @@ -26,6 +30,10 @@ export const ExperimentalSettings = ({ setExperimentEnabled, apiConfiguration, setApiConfigurationField, + openRouterImageApiKey, + openRouterImageGenerationSelectedModel, + setOpenRouterImageApiKey, + setImageGenerationSelectedModel, className, ...props }: ExperimentalSettingsProps) => { @@ -56,7 +64,11 @@ export const ExperimentalSettings = ({ /> ) } - if (config[0] === "IMAGE_GENERATION" && apiConfiguration && setApiConfigurationField) { + if ( + config[0] === "IMAGE_GENERATION" && + setOpenRouterImageApiKey && + setImageGenerationSelectedModel + ) { return ( setExperimentEnabled(EXPERIMENT_IDS.IMAGE_GENERATION, enabled) } - apiConfiguration={apiConfiguration} - setApiConfigurationField={setApiConfigurationField} + openRouterImageApiKey={openRouterImageApiKey} + openRouterImageGenerationSelectedModel={openRouterImageGenerationSelectedModel} + setOpenRouterImageApiKey={setOpenRouterImageApiKey} + setImageGenerationSelectedModel={setImageGenerationSelectedModel} /> ) } diff --git a/webview-ui/src/components/settings/ImageGenerationSettings.tsx b/webview-ui/src/components/settings/ImageGenerationSettings.tsx index 800e981fe90b..c31f31e3169b 100644 --- a/webview-ui/src/components/settings/ImageGenerationSettings.tsx +++ b/webview-ui/src/components/settings/ImageGenerationSettings.tsx @@ -1,17 +1,14 @@ import React, { useState, useEffect } from "react" import { VSCodeCheckbox, VSCodeTextField, VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react" import { useAppTranslation } from "@/i18n/TranslationContext" -import type { ProviderSettings } from "@roo-code/types" interface ImageGenerationSettingsProps { enabled: boolean onChange: (enabled: boolean) => void - apiConfiguration: ProviderSettings - setApiConfigurationField: ( - field: K, - value: ProviderSettings[K], - isUserAction?: boolean, - ) => void + openRouterImageApiKey?: string + openRouterImageGenerationSelectedModel?: string + setOpenRouterImageApiKey: (apiKey: string) => void + setImageGenerationSelectedModel: (model: string) => void } // Hardcoded list of image generation models @@ -24,43 +21,34 @@ const IMAGE_GENERATION_MODELS = [ export const ImageGenerationSettings = ({ enabled, onChange, - apiConfiguration, - setApiConfigurationField, + openRouterImageApiKey, + openRouterImageGenerationSelectedModel, + setOpenRouterImageApiKey, + setImageGenerationSelectedModel, }: ImageGenerationSettingsProps) => { const { t } = useAppTranslation() - // Get image generation settings from apiConfiguration - const imageGenerationSettings = apiConfiguration?.openRouterImageGenerationSettings || {} - const [openRouterApiKey, setOpenRouterApiKey] = useState(imageGenerationSettings.openRouterApiKey || "") + const [apiKey, setApiKey] = useState(openRouterImageApiKey || "") const [selectedModel, setSelectedModel] = useState( - imageGenerationSettings.selectedModel || IMAGE_GENERATION_MODELS[0].value, + openRouterImageGenerationSelectedModel || IMAGE_GENERATION_MODELS[0].value, ) - // Update local state when apiConfiguration changes (e.g., when switching profiles) + // Update local state when props change (e.g., when switching profiles) useEffect(() => { - setOpenRouterApiKey(imageGenerationSettings.openRouterApiKey || "") - setSelectedModel(imageGenerationSettings.selectedModel || IMAGE_GENERATION_MODELS[0].value) - }, [imageGenerationSettings.openRouterApiKey, imageGenerationSettings.selectedModel]) - - // Helper function to update settings - const updateSettings = (newApiKey: string, newModel: string) => { - const newSettings = { - openRouterApiKey: newApiKey, - selectedModel: newModel, - } - setApiConfigurationField("openRouterImageGenerationSettings", newSettings, true) - } + setApiKey(openRouterImageApiKey || "") + setSelectedModel(openRouterImageGenerationSelectedModel || IMAGE_GENERATION_MODELS[0].value) + }, [openRouterImageApiKey, openRouterImageGenerationSelectedModel]) // Handle API key changes const handleApiKeyChange = (value: string) => { - setOpenRouterApiKey(value) - updateSettings(value, selectedModel) + setApiKey(value) + setOpenRouterImageApiKey(value) } // Handle model selection changes const handleModelChange = (value: string) => { setSelectedModel(value) - updateSettings(openRouterApiKey, value) + setImageGenerationSelectedModel(value) } return ( @@ -84,7 +72,7 @@ export const ImageGenerationSettings = ({ {t("settings:experimental.IMAGE_GENERATION.openRouterApiKeyLabel")} handleApiKeyChange(e.target.value)} placeholder={t("settings:experimental.IMAGE_GENERATION.openRouterApiKeyPlaceholder")} className="w-full" @@ -123,13 +111,13 @@ export const ImageGenerationSettings = ({
{/* Status Message */} - {enabled && !openRouterApiKey && ( + {enabled && !apiKey && (
{t("settings:experimental.IMAGE_GENERATION.warningMissingKey")}
)} - {enabled && openRouterApiKey && ( + {enabled && apiKey && (
{t("settings:experimental.IMAGE_GENERATION.successConfigured")}
diff --git a/webview-ui/src/components/settings/SettingsView.tsx b/webview-ui/src/components/settings/SettingsView.tsx index 682387ca2fa0..f680f3e5fe19 100644 --- a/webview-ui/src/components/settings/SettingsView.tsx +++ b/webview-ui/src/components/settings/SettingsView.tsx @@ -181,6 +181,8 @@ const SettingsView = forwardRef(({ onDone, t includeDiagnosticMessages, maxDiagnosticMessages, includeTaskHistoryInEnhance, + openRouterImageApiKey, + openRouterImageGenerationSelectedModel, } = cachedState const apiConfiguration = useMemo(() => cachedState.apiConfiguration ?? {}, [cachedState.apiConfiguration]) @@ -260,6 +262,20 @@ const SettingsView = forwardRef(({ onDone, t }) }, []) + const setOpenRouterImageApiKey = useCallback((apiKey: string) => { + setCachedState((prevState) => { + setChangeDetected(true) + return { ...prevState, openRouterImageApiKey: apiKey } + }) + }, []) + + const setImageGenerationSelectedModel = useCallback((model: string) => { + setCachedState((prevState) => { + setChangeDetected(true) + return { ...prevState, openRouterImageGenerationSelectedModel: model } + }) + }, []) + const setCustomSupportPromptsField = useCallback((prompts: Record) => { setCachedState((prevState) => { if (JSON.stringify(prevState.customSupportPrompts) === JSON.stringify(prompts)) { @@ -343,6 +359,11 @@ const SettingsView = forwardRef(({ onDone, t vscode.postMessage({ type: "upsertApiConfiguration", text: currentApiConfigName, apiConfiguration }) vscode.postMessage({ type: "telemetrySetting", text: telemetrySetting }) vscode.postMessage({ type: "profileThresholds", values: profileThresholds }) + vscode.postMessage({ type: "openRouterImageApiKey", text: openRouterImageApiKey }) + vscode.postMessage({ + type: "openRouterImageGenerationSelectedModel", + text: openRouterImageGenerationSelectedModel, + }) setChangeDetected(false) } } @@ -723,6 +744,12 @@ const SettingsView = forwardRef(({ onDone, t experiments={experiments} apiConfiguration={apiConfiguration} setApiConfigurationField={setApiConfigurationField} + openRouterImageApiKey={openRouterImageApiKey as string | undefined} + openRouterImageGenerationSelectedModel={ + openRouterImageGenerationSelectedModel as string | undefined + } + setOpenRouterImageApiKey={setOpenRouterImageApiKey} + setImageGenerationSelectedModel={setImageGenerationSelectedModel} /> )} diff --git a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx index 2d6987977228..cadd8f83e063 100644 --- a/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx +++ b/webview-ui/src/components/settings/__tests__/ImageGenerationSettings.spec.tsx @@ -1,7 +1,5 @@ import { render, fireEvent } from "@testing-library/react" -import type { ProviderSettings } from "@roo-code/types" - import { ImageGenerationSettings } from "../ImageGenerationSettings" // Mock the translation context @@ -12,14 +10,17 @@ vi.mock("@/i18n/TranslationContext", () => ({ })) describe("ImageGenerationSettings", () => { - const mockSetApiConfigurationField = vi.fn() + const mockSetOpenRouterImageApiKey = vi.fn() + const mockSetImageGenerationSelectedModel = vi.fn() const mockOnChange = vi.fn() const defaultProps = { enabled: false, onChange: mockOnChange, - apiConfiguration: {} as ProviderSettings, - setApiConfigurationField: mockSetApiConfigurationField, + openRouterImageApiKey: undefined, + openRouterImageGenerationSelectedModel: undefined, + setOpenRouterImageApiKey: mockSetOpenRouterImageApiKey, + setImageGenerationSelectedModel: mockSetImageGenerationSelectedModel, } beforeEach(() => { @@ -27,30 +28,31 @@ describe("ImageGenerationSettings", () => { }) describe("Initial Mount Behavior", () => { - it("should not call setApiConfigurationField on initial mount with empty configuration", () => { + it("should not call setter functions on initial mount with empty configuration", () => { render() - // Should NOT call setApiConfigurationField on initial mount to prevent dirty state - expect(mockSetApiConfigurationField).not.toHaveBeenCalled() + // Should NOT call setter functions on initial mount to prevent dirty state + expect(mockSetOpenRouterImageApiKey).not.toHaveBeenCalled() + expect(mockSetImageGenerationSelectedModel).not.toHaveBeenCalled() }) - it("should not call setApiConfigurationField on initial mount with existing configuration", () => { - const apiConfiguration = { - openRouterImageGenerationSettings: { - openRouterApiKey: "existing-key", - selectedModel: "google/gemini-2.5-flash-image-preview:free", - }, - } as ProviderSettings - - render() + it("should not call setter functions on initial mount with existing configuration", () => { + render( + , + ) - // Should NOT call setApiConfigurationField on initial mount to prevent dirty state - expect(mockSetApiConfigurationField).not.toHaveBeenCalled() + // Should NOT call setter functions on initial mount to prevent dirty state + expect(mockSetOpenRouterImageApiKey).not.toHaveBeenCalled() + expect(mockSetImageGenerationSelectedModel).not.toHaveBeenCalled() }) }) describe("User Interaction Behavior", () => { - it("should call setApiConfigurationField when user changes API key", async () => { + it("should call setimageGenerationSettings when user changes API key", async () => { const { getByPlaceholderText } = render() const apiKeyInput = getByPlaceholderText( @@ -60,15 +62,8 @@ describe("ImageGenerationSettings", () => { // Simulate user typing fireEvent.input(apiKeyInput, { target: { value: "new-api-key" } }) - // Should call setApiConfigurationField with isUserAction=true - expect(mockSetApiConfigurationField).toHaveBeenCalledWith( - "openRouterImageGenerationSettings", - { - openRouterApiKey: "new-api-key", - selectedModel: "google/gemini-2.5-flash-image-preview", - }, - true, // This should be true for user actions - ) + // Should call setimageGenerationSettings + expect(defaultProps.setOpenRouterImageApiKey).toHaveBeenCalledWith("new-api-key") }) // Note: Testing VSCode dropdown components is complex due to their custom nature diff --git a/webview-ui/src/context/ExtensionStateContext.tsx b/webview-ui/src/context/ExtensionStateContext.tsx index bd335d7b2dab..cbaf6fa04521 100644 --- a/webview-ui/src/context/ExtensionStateContext.tsx +++ b/webview-ui/src/context/ExtensionStateContext.tsx @@ -252,6 +252,8 @@ export const ExtensionStateContextProvider: React.FC<{ children: React.ReactNode alwaysAllowUpdateTodoList: true, includeDiagnosticMessages: true, maxDiagnosticMessages: 50, + openRouterImageApiKey: "", + openRouterImageGenerationSelectedModel: "", }) const [didHydrateState, setDidHydrateState] = useState(false) From 63e40d2cc8ffa4a0dcf6c78663acd1289773a534 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Fri, 29 Aug 2025 18:49:37 -0400 Subject: [PATCH 040/228] chore: add changeset for v3.26.3 (#7541) --- .changeset/v3.26.3.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/v3.26.3.md diff --git a/.changeset/v3.26.3.md b/.changeset/v3.26.3.md new file mode 100644 index 000000000000..11b0423e7e32 --- /dev/null +++ b/.changeset/v3.26.3.md @@ -0,0 +1,7 @@ +--- +"roo-cline": patch +--- + +- Add optional input image parameter to image generation tool (thanks @roomote!) +- Refactor: Flatten image generation settings structure (thanks @daniel-lxs!) +- Show console logging in vitests when the --no-silent flag is set (thanks @hassoncs!) From a1f9b7d55e5a9ca7fcdad9b8a2ef90efdedd3dd5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:53:07 -0400 Subject: [PATCH 041/228] Changeset version bump (#7542) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens --- .changeset/v3.26.3.md | 7 ------- CHANGELOG.md | 6 ++++++ src/package.json | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) delete mode 100644 .changeset/v3.26.3.md diff --git a/.changeset/v3.26.3.md b/.changeset/v3.26.3.md deleted file mode 100644 index 11b0423e7e32..000000000000 --- a/.changeset/v3.26.3.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"roo-cline": patch ---- - -- Add optional input image parameter to image generation tool (thanks @roomote!) -- Refactor: Flatten image generation settings structure (thanks @daniel-lxs!) -- Show console logging in vitests when the --no-silent flag is set (thanks @hassoncs!) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cfd52af29f9..60582573e286 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Roo Code Changelog +## [3.26.3] - 2025-08-29 + +- Add optional input image parameter to image generation tool (thanks @roomote!) +- Refactor: Flatten image generation settings structure (thanks @daniel-lxs!) +- Show console logging in vitests when the --no-silent flag is set (thanks @hassoncs!) + ## [3.26.2] - 2025-08-28 - feat: Add experimental image generation tool with OpenRouter integration (thanks @daniel-lxs!) diff --git a/src/package.json b/src/package.json index fb236d515ef6..e1d9ab1f980d 100644 --- a/src/package.json +++ b/src/package.json @@ -3,7 +3,7 @@ "displayName": "%extension.displayName%", "description": "%extension.description%", "publisher": "RooVeterinaryInc", - "version": "3.26.2", + "version": "3.26.3", "icon": "assets/icons/icon.png", "galleryBanner": { "color": "#617A91", From 20929b0f16d3daf491a75f66d013b7403523b9a9 Mon Sep 17 00:00:00 2001 From: Chris Estreich Date: Fri, 29 Aug 2025 16:48:06 -0700 Subject: [PATCH 042/228] Mode and provider profile selector (#7545) --- packages/cloud/src/bridge/BaseChannel.ts | 2 +- packages/cloud/src/bridge/ExtensionChannel.ts | 44 +- packages/cloud/src/bridge/TaskChannel.ts | 12 +- .../bridge/__tests__/ExtensionChannel.test.ts | 12 +- .../src/bridge/__tests__/TaskChannel.test.ts | 7 +- packages/types/npm/package.metadata.json | 2 +- packages/types/src/cloud.ts | 27 +- packages/types/src/events.ts | 7 + packages/types/src/provider-settings.ts | 4 +- packages/types/src/task.ts | 60 +- src/core/task/Task.ts | 19 +- src/core/webview/ClineProvider.ts | 592 ++++++++++-------- src/extension/api.ts | 37 +- src/utils/errors.ts | 5 + 14 files changed, 486 insertions(+), 344 deletions(-) create mode 100644 src/utils/errors.ts diff --git a/packages/cloud/src/bridge/BaseChannel.ts b/packages/cloud/src/bridge/BaseChannel.ts index 45b9b525f6c8..95db835d1f92 100644 --- a/packages/cloud/src/bridge/BaseChannel.ts +++ b/packages/cloud/src/bridge/BaseChannel.ts @@ -83,7 +83,7 @@ export abstract class BaseChannel /** * Handle connection-specific logic. diff --git a/packages/cloud/src/bridge/ExtensionChannel.ts b/packages/cloud/src/bridge/ExtensionChannel.ts index 99649f76f4c3..b38e3b9a8b9d 100644 --- a/packages/cloud/src/bridge/ExtensionChannel.ts +++ b/packages/cloud/src/bridge/ExtensionChannel.ts @@ -53,10 +53,7 @@ export class ExtensionChannel extends BaseChannel< this.setupListeners() } - /** - * Handle extension-specific commands from the web app - */ - public handleCommand(command: ExtensionBridgeCommand): void { + public async handleCommand(command: ExtensionBridgeCommand): Promise { if (command.instanceId !== this.instanceId) { console.log(`[ExtensionChannel] command -> instance id mismatch | ${this.instanceId}`, { messageInstanceId: command.instanceId, @@ -69,13 +66,22 @@ export class ExtensionChannel extends BaseChannel< console.log(`[ExtensionChannel] command -> createTask() | ${command.instanceId}`, { text: command.payload.text?.substring(0, 100) + "...", hasImages: !!command.payload.images, + mode: command.payload.mode, + providerProfile: command.payload.providerProfile, }) - this.provider.createTask(command.payload.text, command.payload.images) + this.provider.createTask( + command.payload.text, + command.payload.images, + undefined, // parentTask + undefined, // options + { mode: command.payload.mode, currentApiConfigName: command.payload.providerProfile }, + ) + break } case ExtensionBridgeCommandName.StopTask: { - const instance = this.updateInstance() + const instance = await this.updateInstance() if (instance.task.taskStatus === TaskStatus.Running) { console.log(`[ExtensionChannel] command -> cancelTask() | ${command.instanceId}`) @@ -86,6 +92,7 @@ export class ExtensionChannel extends BaseChannel< this.provider.clearTask() this.provider.postStateToWebview() } + break } case ExtensionBridgeCommandName.ResumeTask: { @@ -93,7 +100,6 @@ export class ExtensionChannel extends BaseChannel< taskId: command.payload.taskId, }) - // Resume the task from history by taskId this.provider.resumeTask(command.payload.taskId) this.provider.postStateToWebview() break @@ -122,12 +128,12 @@ export class ExtensionChannel extends BaseChannel< } private async registerInstance(_socket: Socket): Promise { - const instance = this.updateInstance() + const instance = await this.updateInstance() await this.publish(ExtensionSocketEvents.REGISTER, instance) } private async unregisterInstance(_socket: Socket): Promise { - const instance = this.updateInstance() + const instance = await this.updateInstance() await this.publish(ExtensionSocketEvents.UNREGISTER, instance) } @@ -135,7 +141,7 @@ export class ExtensionChannel extends BaseChannel< this.stopHeartbeat() this.heartbeatInterval = setInterval(async () => { - const instance = this.updateInstance() + const instance = await this.updateInstance() try { socket.emit(ExtensionSocketEvents.HEARTBEAT, instance) @@ -172,11 +178,11 @@ export class ExtensionChannel extends BaseChannel< ] as const eventMapping.forEach(({ from, to }) => { - // Create and store the listener function for cleanup/ - const listener = (..._args: unknown[]) => { + // Create and store the listener function for cleanup. + const listener = async (..._args: unknown[]) => { this.publish(ExtensionSocketEvents.EVENT, { type: to, - instance: this.updateInstance(), + instance: await this.updateInstance(), timestamp: Date.now(), }) } @@ -195,10 +201,16 @@ export class ExtensionChannel extends BaseChannel< this.eventListeners.clear() } - private updateInstance(): ExtensionInstance { + private async updateInstance(): Promise { const task = this.provider?.getCurrentTask() const taskHistory = this.provider?.getRecentTasks() ?? [] + const mode = await this.provider?.getMode() + const modes = (await this.provider?.getModes()) ?? [] + + const providerProfile = await this.provider?.getProviderProfile() + const providerProfiles = (await this.provider?.getProviderProfiles()) ?? [] + this.extensionInstance = { ...this.extensionInstance, appProperties: this.extensionInstance.appProperties ?? this.provider.appProperties, @@ -213,6 +225,10 @@ export class ExtensionChannel extends BaseChannel< : { taskId: "", taskStatus: TaskStatus.None }, taskAsk: task?.taskAsk, taskHistory, + mode, + providerProfile, + modes, + providerProfiles, } return this.extensionInstance diff --git a/packages/cloud/src/bridge/TaskChannel.ts b/packages/cloud/src/bridge/TaskChannel.ts index cf2a4a251610..f974a3e559b9 100644 --- a/packages/cloud/src/bridge/TaskChannel.ts +++ b/packages/cloud/src/bridge/TaskChannel.ts @@ -73,7 +73,7 @@ export class TaskChannel extends BaseChannel< super(instanceId) } - public handleCommand(command: TaskBridgeCommand): void { + public async handleCommand(command: TaskBridgeCommand): Promise { const task = this.subscribedTasks.get(command.taskId) if (!task) { @@ -87,7 +87,14 @@ export class TaskChannel extends BaseChannel< `[TaskChannel] ${TaskBridgeCommandName.Message} ${command.taskId} -> submitUserMessage()`, command, ) - task.submitUserMessage(command.payload.text, command.payload.images) + + await task.submitUserMessage( + command.payload.text, + command.payload.images, + command.payload.mode, + command.payload.providerProfile, + ) + break case TaskBridgeCommandName.ApproveAsk: @@ -95,6 +102,7 @@ export class TaskChannel extends BaseChannel< `[TaskChannel] ${TaskBridgeCommandName.ApproveAsk} ${command.taskId} -> approveAsk()`, command, ) + task.approveAsk(command.payload) break diff --git a/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts b/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts index 89979c9a66e9..7d25891840c7 100644 --- a/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts +++ b/packages/cloud/src/bridge/__tests__/ExtensionChannel.test.ts @@ -53,6 +53,13 @@ describe("ExtensionChannel", () => { postStateToWebview: vi.fn(), postMessageToWebview: vi.fn(), getTelemetryProperties: vi.fn(), + getMode: vi.fn().mockResolvedValue("code"), + getModes: vi.fn().mockResolvedValue([ + { slug: "code", name: "Code", description: "Code mode" }, + { slug: "architect", name: "Architect", description: "Architect mode" }, + ]), + getProviderProfile: vi.fn().mockResolvedValue("default"), + getProviderProfiles: vi.fn().mockResolvedValue([{ name: "default", description: "Default profile" }]), on: vi.fn((event: keyof TaskProviderEvents, listener: (...args: unknown[]) => unknown) => { if (!eventListeners.has(event)) { eventListeners.set(event, new Set()) @@ -184,6 +191,9 @@ describe("ExtensionChannel", () => { // Connect the socket to enable publishing await extensionChannel.onConnect(mockSocket) + // Clear the mock calls from the connection (which emits a register event) + ;(mockSocket.emit as any).mockClear() + // Get a listener that was registered for TaskStarted const taskStartedListeners = eventListeners.get(RooCodeEventName.TaskStarted) expect(taskStartedListeners).toBeDefined() @@ -192,7 +202,7 @@ describe("ExtensionChannel", () => { // Trigger the listener const listener = Array.from(taskStartedListeners!)[0] if (listener) { - listener("test-task-id") + await listener("test-task-id") } // Verify the event was published to the socket diff --git a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts index e69cb0ce3e88..4a6aa724684a 100644 --- a/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts +++ b/packages/cloud/src/bridge/__tests__/TaskChannel.test.ts @@ -333,7 +333,12 @@ describe("TaskChannel", () => { taskChannel.handleCommand(command) - expect(mockTask.submitUserMessage).toHaveBeenCalledWith(command.payload.text, command.payload.images) + expect(mockTask.submitUserMessage).toHaveBeenCalledWith( + command.payload.text, + command.payload.images, + undefined, + undefined, + ) }) it("should handle ApproveAsk command", () => { diff --git a/packages/types/npm/package.metadata.json b/packages/types/npm/package.metadata.json index 1005327120ea..f5ccde8888a7 100644 --- a/packages/types/npm/package.metadata.json +++ b/packages/types/npm/package.metadata.json @@ -1,6 +1,6 @@ { "name": "@roo-code/types", - "version": "1.65.0", + "version": "1.66.0", "description": "TypeScript type definitions for Roo Code.", "publishConfig": { "access": "public", diff --git a/packages/types/src/cloud.ts b/packages/types/src/cloud.ts index dbf79b6bfac9..44dec96271e9 100644 --- a/packages/types/src/cloud.ts +++ b/packages/types/src/cloud.ts @@ -378,6 +378,10 @@ export const extensionInstanceSchema = z.object({ task: extensionTaskSchema, taskAsk: clineMessageSchema.optional(), taskHistory: z.array(z.string()), + mode: z.string().optional(), + modes: z.array(z.object({ slug: z.string(), name: z.string() })).optional(), + providerProfile: z.string().optional(), + providerProfiles: z.array(z.object({ name: z.string(), provider: z.string().optional() })).optional(), }) export type ExtensionInstance = z.infer @@ -398,6 +402,9 @@ export enum ExtensionBridgeEventName { TaskResumable = RooCodeEventName.TaskResumable, TaskIdle = RooCodeEventName.TaskIdle, + ModeChanged = RooCodeEventName.ModeChanged, + ProviderProfileChanged = RooCodeEventName.ProviderProfileChanged, + InstanceRegistered = "instance_registered", InstanceUnregistered = "instance_unregistered", HeartbeatUpdated = "heartbeat_updated", @@ -469,6 +476,18 @@ export const extensionBridgeEventSchema = z.discriminatedUnion("type", [ instance: extensionInstanceSchema, timestamp: z.number(), }), + z.object({ + type: z.literal(ExtensionBridgeEventName.ModeChanged), + instance: extensionInstanceSchema, + mode: z.string(), + timestamp: z.number(), + }), + z.object({ + type: z.literal(ExtensionBridgeEventName.ProviderProfileChanged), + instance: extensionInstanceSchema, + providerProfile: z.object({ name: z.string(), provider: z.string().optional() }), + timestamp: z.number(), + }), ]) export type ExtensionBridgeEvent = z.infer @@ -490,6 +509,8 @@ export const extensionBridgeCommandSchema = z.discriminatedUnion("type", [ payload: z.object({ text: z.string(), images: z.array(z.string()).optional(), + mode: z.string().optional(), + providerProfile: z.string().optional(), }), timestamp: z.number(), }), @@ -502,9 +523,7 @@ export const extensionBridgeCommandSchema = z.discriminatedUnion("type", [ z.object({ type: z.literal(ExtensionBridgeCommandName.ResumeTask), instanceId: z.string(), - payload: z.object({ - taskId: z.string(), - }), + payload: z.object({ taskId: z.string() }), timestamp: z.number(), }), ]) @@ -558,6 +577,8 @@ export const taskBridgeCommandSchema = z.discriminatedUnion("type", [ payload: z.object({ text: z.string(), images: z.array(z.string()).optional(), + mode: z.string().optional(), + providerProfile: z.string().optional(), }), timestamp: z.number(), }), diff --git a/packages/types/src/events.ts b/packages/types/src/events.ts index 2b6b810c8102..590c2bdc885c 100644 --- a/packages/types/src/events.ts +++ b/packages/types/src/events.ts @@ -36,6 +36,10 @@ export enum RooCodeEventName { TaskTokenUsageUpdated = "taskTokenUsageUpdated", TaskToolFailed = "taskToolFailed", + // Configuration Changes + ModeChanged = "modeChanged", + ProviderProfileChanged = "providerProfileChanged", + // Evals EvalPass = "evalPass", EvalFail = "evalFail", @@ -81,6 +85,9 @@ export const rooCodeEventsSchema = z.object({ [RooCodeEventName.TaskToolFailed]: z.tuple([z.string(), toolNamesSchema, z.string()]), [RooCodeEventName.TaskTokenUsageUpdated]: z.tuple([z.string(), tokenUsageSchema]), + + [RooCodeEventName.ModeChanged]: z.tuple([z.string()]), + [RooCodeEventName.ProviderProfileChanged]: z.tuple([z.object({ name: z.string(), provider: z.string() })]), }) export type RooCodeEvents = z.infer diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index b55dc8a8c3ad..45d4a7e7808b 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -414,9 +414,11 @@ export const providerSettingsSchema = z.object({ export type ProviderSettings = z.infer export const providerSettingsWithIdSchema = providerSettingsSchema.extend({ id: z.string().optional() }) + export const discriminatedProviderSettingsWithIdSchema = providerSettingsSchemaDiscriminated.and( z.object({ id: z.string().optional() }), ) + export type ProviderSettingsWithId = z.infer export const PROVIDER_SETTINGS_KEYS = providerSettingsSchema.keyof().options @@ -454,7 +456,7 @@ export const getApiProtocol = (provider: ProviderName | undefined, modelId?: str return "anthropic" } - // Vercel AI Gateway uses anthropic protocol for anthropic models + // Vercel AI Gateway uses anthropic protocol for anthropic models. if (provider && provider === "vercel-ai-gateway" && modelId && modelId.toLowerCase().startsWith("anthropic/")) { return "anthropic" } diff --git a/packages/types/src/task.ts b/packages/types/src/task.ts index c32ca0ceec50..b00585211958 100644 --- a/packages/types/src/task.ts +++ b/packages/types/src/task.ts @@ -1,38 +1,48 @@ import { z } from "zod" import { RooCodeEventName } from "./events.js" -import { type ClineMessage, type TokenUsage } from "./message.js" -import { type ToolUsage, type ToolName } from "./tool.js" +import type { RooCodeSettings } from "./global-settings.js" +import type { ClineMessage, TokenUsage } from "./message.js" +import type { ToolUsage, ToolName } from "./tool.js" import type { StaticAppProperties, GitProperties, TelemetryProperties } from "./telemetry.js" +import type { TodoItem } from "./todo.js" /** * TaskProviderLike */ -export interface TaskProviderState { - mode?: string -} - export interface TaskProviderLike { - readonly cwd: string - readonly appProperties: StaticAppProperties - readonly gitProperties: GitProperties | undefined - + // Tasks getCurrentTask(): TaskLike | undefined - getCurrentTaskStack(): string[] getRecentTasks(): string[] - - createTask(text?: string, images?: string[], parentTask?: TaskLike): Promise + createTask( + text?: string, + images?: string[], + parentTask?: TaskLike, + options?: CreateTaskOptions, + configuration?: RooCodeSettings, + ): Promise cancelTask(): Promise clearTask(): Promise resumeTask(taskId: string): void - getState(): Promise - postStateToWebview(): Promise - postMessageToWebview(message: unknown): Promise + // Modes + getModes(): Promise<{ slug: string; name: string }[]> + getMode(): Promise + setMode(mode: string): Promise + + // Provider Profiles + getProviderProfiles(): Promise<{ name: string; provider?: string }[]> + getProviderProfile(): Promise + setProviderProfile(providerProfile: string): Promise + // Telemetry + readonly appProperties: StaticAppProperties + readonly gitProperties: GitProperties | undefined getTelemetryProperties(): Promise + readonly cwd: string + // Event Emitter on( event: K, listener: (...args: TaskProviderEvents[K]) => void | Promise, @@ -42,6 +52,9 @@ export interface TaskProviderLike { event: K, listener: (...args: TaskProviderEvents[K]) => void | Promise, ): this + + // @TODO: Find a better way to do this. + postStateToWebview(): Promise } export type TaskProviderEvents = { @@ -57,15 +70,24 @@ export type TaskProviderEvents = { [RooCodeEventName.TaskInteractive]: [taskId: string] [RooCodeEventName.TaskResumable]: [taskId: string] [RooCodeEventName.TaskIdle]: [taskId: string] - - // Subtask Lifecycle [RooCodeEventName.TaskSpawned]: [taskId: string] + [RooCodeEventName.ModeChanged]: [mode: string] + [RooCodeEventName.ProviderProfileChanged]: [config: { name: string; provider?: string }] } /** * TaskLike */ +export interface CreateTaskOptions { + enableDiff?: boolean + enableCheckpoints?: boolean + fuzzyMatchThreshold?: number + consecutiveMistakeLimit?: number + experiments?: Record + initialTodos?: TodoItem[] +} + export enum TaskStatus { Running = "running", Interactive = "interactive", @@ -94,7 +116,7 @@ export interface TaskLike { approveAsk(options?: { text?: string; images?: string[] }): void denyAsk(options?: { text?: string; images?: string[] }): void - submitUserMessage(text: string, images?: string[]): void + submitUserMessage(text: string, images?: string[], mode?: string, providerProfile?: string): Promise abortTask(): void } diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index 1a5092a375f5..655983db20be 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -10,6 +10,7 @@ import pWaitFor from "p-wait-for" import { serializeError } from "serialize-error" import { + type RooCodeSettings, type TaskLike, type TaskMetadata, type TaskEvents, @@ -23,6 +24,7 @@ import { type ClineAsk, type ToolProgressStatus, type HistoryItem, + type CreateTaskOptions, RooCodeEventName, TelemetryEventName, TaskStatus, @@ -110,7 +112,7 @@ const DEFAULT_USAGE_COLLECTION_TIMEOUT_MS = 5000 // 5 seconds const FORCED_CONTEXT_REDUCTION_PERCENT = 75 // Keep 75% of context (remove 25%) on context window errors const MAX_CONTEXT_WINDOW_RETRIES = 3 // Maximum retries for context window errors -export type TaskOptions = { +export interface TaskOptions extends CreateTaskOptions { provider: ClineProvider apiConfiguration: ProviderSettings enableDiff?: boolean @@ -845,7 +847,12 @@ export class Task extends EventEmitter implements TaskLike { this.handleWebviewAskResponse("noButtonClicked", text, images) } - public submitUserMessage(text: string, images?: string[]): void { + public async submitUserMessage( + text: string, + images?: string[], + mode?: string, + providerProfile?: string, + ): Promise { try { text = (text ?? "").trim() images = images ?? [] @@ -857,6 +864,14 @@ export class Task extends EventEmitter implements TaskLike { const provider = this.providerRef.deref() if (provider) { + if (mode) { + await provider.setMode(mode) + } + + if (providerProfile) { + await provider.setProviderProfile(providerProfile) + } + provider.postMessageToWebview({ type: "invoke", invoke: "sendMessage", text, images }) } else { console.error("[Task#submitUserMessage] Provider reference lost") diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index c68c3a8e458a..bef8d766ac29 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -30,6 +30,7 @@ import { type TerminalActionPromptType, type HistoryItem, type CloudUserInfo, + type CreateTaskOptions, RooCodeEventName, requestyDefaultModelId, openRouterDefaultModelId, @@ -37,6 +38,7 @@ import { DEFAULT_TERMINAL_OUTPUT_CHARACTER_LIMIT, DEFAULT_WRITE_DELAY_MS, ORGANIZATION_ALLOW_ALL, + DEFAULT_MODES, } from "@roo-code/types" import { TelemetryService } from "@roo-code/telemetry" import { CloudService, BridgeOrchestrator, getRooCodeApiUrl } from "@roo-code/cloud" @@ -70,6 +72,7 @@ import { fileExistsAtPath } from "../../utils/fs" import { setTtsEnabled, setTtsSpeed } from "../../utils/tts" import { getWorkspaceGitInfo } from "../../utils/git" import { getWorkspacePath } from "../../utils/path" +import { OrganizationAllowListViolationError } from "../../utils/errors" import { setPanel } from "../../activate/registerCommands" @@ -81,7 +84,7 @@ import { forceFullModelDetailsLoad, hasLoadedFullDetails } from "../../api/provi import { ContextProxy } from "../config/ContextProxy" import { ProviderSettingsManager } from "../config/ProviderSettingsManager" import { CustomModesManager } from "../config/CustomModesManager" -import { Task, TaskOptions } from "../task/Task" +import { Task } from "../task/Task" import { getSystemPromptFilePath } from "../prompts/sections/custom-system-prompt" import { webviewMessageHandler } from "./webviewMessageHandler" @@ -264,27 +267,29 @@ export class ClineProvider } /** - * Synchronize cloud profiles with local profiles + * Synchronize cloud profiles with local profiles. */ private async syncCloudProfiles() { try { const settings = CloudService.instance.getOrganizationSettings() + if (!settings?.providerProfiles) { return } const currentApiConfigName = this.getGlobalState("currentApiConfigName") + const result = await this.providerSettingsManager.syncCloudProfiles( settings.providerProfiles, currentApiConfigName, ) if (result.hasChanges) { - // Update list + // Update list. await this.updateGlobalState("listApiConfigMeta", await this.providerSettingsManager.listConfig()) if (result.activeProfileChanged && result.activeProfileId) { - // Reload full settings for new active profile + // Reload full settings for new active profile. const profile = await this.providerSettingsManager.getProfile({ id: result.activeProfileId, }) @@ -374,17 +379,6 @@ export class ClineProvider } } - // returns the current cline object in the stack (the top one) - // if the stack is empty, returns undefined - getCurrentTask(): Task | undefined { - if (this.clineStack.length === 0) { - return undefined - } - - return this.clineStack[this.clineStack.length - 1] - } - - // returns the current clineStack length (how many cline objects are in the stack) getTaskStackSize(): number { return this.clineStack.length } @@ -407,58 +401,6 @@ export class ClineProvider await this.getCurrentTask()?.resumePausedTask(lastMessage) } - resumeTask(taskId: string): void { - // Use the existing showTaskWithId method which handles both current and historical tasks - this.showTaskWithId(taskId).catch((error) => { - this.log(`Failed to resume task ${taskId}: ${error.message}`) - }) - } - - getRecentTasks(): string[] { - if (this.recentTasksCache) { - return this.recentTasksCache - } - - const history = this.getGlobalState("taskHistory") ?? [] - const workspaceTasks: HistoryItem[] = [] - - for (const item of history) { - if (!item.ts || !item.task || item.workspace !== this.cwd) { - continue - } - - workspaceTasks.push(item) - } - - if (workspaceTasks.length === 0) { - this.recentTasksCache = [] - return this.recentTasksCache - } - - workspaceTasks.sort((a, b) => b.ts - a.ts) - let recentTaskIds: string[] = [] - - if (workspaceTasks.length >= 100) { - // If we have at least 100 tasks, return tasks from the last 7 days. - const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000 - - for (const item of workspaceTasks) { - // Stop when we hit tasks older than 7 days. - if (item.ts < sevenDaysAgo) { - break - } - - recentTaskIds.push(item.id) - } - } else { - // Otherwise, return the most recent 100 tasks (or all if less than 100). - recentTaskIds = workspaceTasks.slice(0, Math.min(100, workspaceTasks.length)).map((item) => item.id) - } - - this.recentTasksCache = recentTaskIds - return this.recentTasksCache - } - /* VSCode extensions use the disposable pattern to clean up resources when the sidebar/editor tab is closed by the user or system. This applies to event listening, commands, interacting with the UI, etc. - https://vscode-docs.readthedocs.io/en/stable/extensions/patterns-and-principles/ @@ -737,82 +679,17 @@ export class ClineProvider await this.removeClineFromStack() } - // When initializing a new task, (not from history but from a tool command - // new_task) there is no need to remove the previous task since the new - // task is a subtask of the previous one, and when it finishes it is removed - // from the stack and the caller is resumed in this way we can have a chain - // of tasks, each one being a sub task of the previous one until the main - // task is finished. - public async createTask( - text?: string, - images?: string[], - parentTask?: Task, - options: Partial< - Pick< - TaskOptions, - | "enableDiff" - | "enableCheckpoints" - | "fuzzyMatchThreshold" - | "consecutiveMistakeLimit" - | "experiments" - | "initialTodos" - > - > = {}, - ) { - const { - apiConfiguration, - organizationAllowList, - diffEnabled: enableDiff, - enableCheckpoints, - fuzzyMatchThreshold, - experiments, - cloudUserInfo, - remoteControlEnabled, - } = await this.getState() - - if (!ProfileValidator.isProfileAllowed(apiConfiguration, organizationAllowList)) { - throw new OrganizationAllowListViolationError(t("common:errors.violated_organization_allowlist")) - } - - const task = new Task({ - provider: this, - apiConfiguration, - enableDiff, - enableCheckpoints, - fuzzyMatchThreshold, - consecutiveMistakeLimit: apiConfiguration.consecutiveMistakeLimit, - task: text, - images, - experiments, - rootTask: this.clineStack.length > 0 ? this.clineStack[0] : undefined, - parentTask, - taskNumber: this.clineStack.length + 1, - onCreated: this.taskCreationCallback, - enableBridge: BridgeOrchestrator.isEnabled(cloudUserInfo, remoteControlEnabled), - initialTodos: options.initialTodos, - ...options, - }) - - await this.addClineToStack(task) - - this.log( - `[createTask] ${task.parentTask ? "child" : "parent"} task ${task.taskId}.${task.instanceId} instantiated`, - ) - - return task - } - public async createTaskWithHistoryItem(historyItem: HistoryItem & { rootTask?: Task; parentTask?: Task }) { await this.removeClineFromStack() - // If the history item has a saved mode, restore it and its associated API configuration + // If the history item has a saved mode, restore it and its associated API configuration. if (historyItem.mode) { // Validate that the mode still exists const customModes = await this.customModesManager.getCustomModes() const modeExists = getModeBySlug(historyItem.mode, customModes) !== undefined if (!modeExists) { - // Mode no longer exists, fall back to default mode + // Mode no longer exists, fall back to default mode. this.log( `Mode '${historyItem.mode}' from history no longer exists. Falling back to default mode '${defaultModeSlug}'.`, ) @@ -821,14 +698,14 @@ export class ClineProvider await this.updateGlobalState("mode", historyItem.mode) - // Load the saved API config for the restored mode if it exists + // Load the saved API config for the restored mode if it exists. const savedConfigId = await this.providerSettingsManager.getModeConfigId(historyItem.mode) const listApiConfig = await this.providerSettingsManager.listConfig() - // Update listApiConfigMeta first to ensure UI has latest data + // Update listApiConfigMeta first to ensure UI has latest data. await this.updateGlobalState("listApiConfigMeta", listApiConfig) - // If this mode has a saved config, use it + // If this mode has a saved config, use it. if (savedConfigId) { const profile = listApiConfig.find(({ id }) => id === savedConfigId) @@ -836,13 +713,13 @@ export class ClineProvider try { await this.activateProviderProfile({ name: profile.name }) } catch (error) { - // Log the error but continue with task restoration + // Log the error but continue with task restoration. this.log( `Failed to restore API configuration for mode '${historyItem.mode}': ${ error instanceof Error ? error.message : String(error) }. Continuing with default configuration.`, ) - // The task will continue with the current/default configuration + // The task will continue with the current/default configuration. } } } @@ -1081,39 +958,39 @@ export class ClineProvider TelemetryService.instance.captureModeSwitch(cline.taskId, newMode) cline.emit(RooCodeEventName.TaskModeSwitched, cline.taskId, newMode) - // Store the current mode in case we need to rollback - const previousMode = (cline as any)._taskMode - try { - // Update the task history with the new mode first + // Update the task history with the new mode first. const history = this.getGlobalState("taskHistory") ?? [] const taskHistoryItem = history.find((item) => item.id === cline.taskId) + if (taskHistoryItem) { taskHistoryItem.mode = newMode await this.updateTaskHistory(taskHistoryItem) } - // Only update the task's mode after successful persistence + // Only update the task's mode after successful persistence. ;(cline as any)._taskMode = newMode } catch (error) { - // If persistence fails, log the error but don't update the in-memory state + // If persistence fails, log the error but don't update the in-memory state. this.log( `Failed to persist mode switch for task ${cline.taskId}: ${error instanceof Error ? error.message : String(error)}`, ) - // Optionally, we could emit an event to notify about the failure - // This ensures the in-memory state remains consistent with persisted state + // Optionally, we could emit an event to notify about the failure. + // This ensures the in-memory state remains consistent with persisted state. throw error } } await this.updateGlobalState("mode", newMode) - // Load the saved API config for the new mode if it exists + this.emit(RooCodeEventName.ModeChanged, newMode) + + // Load the saved API config for the new mode if it exists. const savedConfigId = await this.providerSettingsManager.getModeConfigId(newMode) const listApiConfig = await this.providerSettingsManager.listConfig() - // Update listApiConfigMeta first to ensure UI has latest data + // Update listApiConfigMeta first to ensure UI has latest data. await this.updateGlobalState("listApiConfigMeta", listApiConfig) // If this mode has a saved config, use it. @@ -1256,60 +1133,9 @@ export class ClineProvider } await this.postStateToWebview() - } - - // Task Management - - async cancelTask() { - const cline = this.getCurrentTask() - if (!cline) { - return - } - - console.log(`[cancelTask] cancelling task ${cline.taskId}.${cline.instanceId}`) - - const { historyItem } = await this.getTaskWithId(cline.taskId) - // Preserve parent and root task information for history item. - const rootTask = cline.rootTask - const parentTask = cline.parentTask - - cline.abortTask() - - await pWaitFor( - () => - this.getCurrentTask()! === undefined || - this.getCurrentTask()!.isStreaming === false || - this.getCurrentTask()!.didFinishAbortingStream || - // If only the first chunk is processed, then there's no - // need to wait for graceful abort (closes edits, browser, - // etc). - this.getCurrentTask()!.isWaitingForFirstChunk, - { - timeout: 3_000, - }, - ).catch(() => { - console.error("Failed to abort task") - }) - - if (this.getCurrentTask()) { - // 'abandoned' will prevent this Cline instance from affecting - // future Cline instances. This may happen if its hanging on a - // streaming request. - this.getCurrentTask()!.abandoned = true - } - - // Clears task again, so we need to abortTask manually above. - await this.createTaskWithHistoryItem({ ...historyItem, rootTask, parentTask }) - } - - // Clear the current task without treating it as a subtask. - // This is used when the user cancels a task that is not a subtask. - async clearTask() { - if (this.clineStack.length > 0) { - const task = this.clineStack[this.clineStack.length - 1] - console.log(`[clearTask] clearing task ${task.taskId}.${task.instanceId}`) - await this.removeClineFromStack() + if (providerSettings.apiProvider) { + this.emit(RooCodeEventName.ProviderProfileChanged, { name, provider: providerSettings.apiProvider }) } } @@ -2146,12 +1972,6 @@ export class ClineProvider await this.contextProxy.setValues(values) } - // cwd - - get cwd() { - return getWorkspacePath() - } - // dev async resetState() { @@ -2262,7 +2082,300 @@ export class ClineProvider } } + /** + * Gets the CodeIndexManager for the current active workspace + * @returns CodeIndexManager instance for the current workspace or the default one + */ + public getCurrentWorkspaceCodeIndexManager(): CodeIndexManager | undefined { + return CodeIndexManager.getInstance(this.context) + } + + /** + * Updates the code index status subscription to listen to the current workspace manager + */ + private updateCodeIndexStatusSubscription(): void { + // Get the current workspace manager + const currentManager = this.getCurrentWorkspaceCodeIndexManager() + + // If the manager hasn't changed, no need to update subscription + if (currentManager === this.currentWorkspaceManager) { + return + } + + // Dispose the old subscription if it exists + if (this.codeIndexStatusSubscription) { + this.codeIndexStatusSubscription.dispose() + this.codeIndexStatusSubscription = undefined + } + + // Update the current workspace manager reference + this.currentWorkspaceManager = currentManager + + // Subscribe to the new manager's progress updates if it exists + if (currentManager) { + this.codeIndexStatusSubscription = currentManager.onProgressUpdate((update: IndexProgressUpdate) => { + // Only send updates if this manager is still the current one + if (currentManager === this.getCurrentWorkspaceCodeIndexManager()) { + // Get the full status from the manager to ensure we have all fields correctly formatted + const fullStatus = currentManager.getCurrentStatus() + this.postMessageToWebview({ + type: "indexingStatusUpdate", + values: fullStatus, + }) + } + }) + + if (this.view) { + this.webviewDisposables.push(this.codeIndexStatusSubscription) + } + + // Send initial status for the current workspace + this.postMessageToWebview({ + type: "indexingStatusUpdate", + values: currentManager.getCurrentStatus(), + }) + } + } + + /** + * TaskProviderLike, TelemetryPropertiesProvider + */ + + public getCurrentTask(): Task | undefined { + if (this.clineStack.length === 0) { + return undefined + } + + return this.clineStack[this.clineStack.length - 1] + } + + public getRecentTasks(): string[] { + if (this.recentTasksCache) { + return this.recentTasksCache + } + + const history = this.getGlobalState("taskHistory") ?? [] + const workspaceTasks: HistoryItem[] = [] + + for (const item of history) { + if (!item.ts || !item.task || item.workspace !== this.cwd) { + continue + } + + workspaceTasks.push(item) + } + + if (workspaceTasks.length === 0) { + this.recentTasksCache = [] + return this.recentTasksCache + } + + workspaceTasks.sort((a, b) => b.ts - a.ts) + let recentTaskIds: string[] = [] + + if (workspaceTasks.length >= 100) { + // If we have at least 100 tasks, return tasks from the last 7 days. + const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000 + + for (const item of workspaceTasks) { + // Stop when we hit tasks older than 7 days. + if (item.ts < sevenDaysAgo) { + break + } + + recentTaskIds.push(item.id) + } + } else { + // Otherwise, return the most recent 100 tasks (or all if less than 100). + recentTaskIds = workspaceTasks.slice(0, Math.min(100, workspaceTasks.length)).map((item) => item.id) + } + + this.recentTasksCache = recentTaskIds + return this.recentTasksCache + } + + // When initializing a new task, (not from history but from a tool command + // new_task) there is no need to remove the previous task since the new + // task is a subtask of the previous one, and when it finishes it is removed + // from the stack and the caller is resumed in this way we can have a chain + // of tasks, each one being a sub task of the previous one until the main + // task is finished. + public async createTask( + text?: string, + images?: string[], + parentTask?: Task, + options: CreateTaskOptions = {}, + configuration: RooCodeSettings = {}, + ): Promise { + if (configuration) { + await this.setValues(configuration) + + if (configuration.allowedCommands) { + await vscode.workspace + .getConfiguration(Package.name) + .update("allowedCommands", configuration.allowedCommands, vscode.ConfigurationTarget.Global) + } + + if (configuration.deniedCommands) { + await vscode.workspace + .getConfiguration(Package.name) + .update("deniedCommands", configuration.deniedCommands, vscode.ConfigurationTarget.Global) + } + + if (configuration.commandExecutionTimeout !== undefined) { + await vscode.workspace + .getConfiguration(Package.name) + .update( + "commandExecutionTimeout", + configuration.commandExecutionTimeout, + vscode.ConfigurationTarget.Global, + ) + } + + if (configuration.currentApiConfigName) { + await this.setProviderProfile(configuration.currentApiConfigName) + } + } + + const { + apiConfiguration, + organizationAllowList, + diffEnabled: enableDiff, + enableCheckpoints, + fuzzyMatchThreshold, + experiments, + cloudUserInfo, + remoteControlEnabled, + } = await this.getState() + + if (!ProfileValidator.isProfileAllowed(apiConfiguration, organizationAllowList)) { + throw new OrganizationAllowListViolationError(t("common:errors.violated_organization_allowlist")) + } + + const task = new Task({ + provider: this, + apiConfiguration, + enableDiff, + enableCheckpoints, + fuzzyMatchThreshold, + consecutiveMistakeLimit: apiConfiguration.consecutiveMistakeLimit, + task: text, + images, + experiments, + rootTask: this.clineStack.length > 0 ? this.clineStack[0] : undefined, + parentTask, + taskNumber: this.clineStack.length + 1, + onCreated: this.taskCreationCallback, + enableBridge: BridgeOrchestrator.isEnabled(cloudUserInfo, remoteControlEnabled), + initialTodos: options.initialTodos, + ...options, + }) + + await this.addClineToStack(task) + + this.log( + `[createTask] ${task.parentTask ? "child" : "parent"} task ${task.taskId}.${task.instanceId} instantiated`, + ) + + return task + } + + public async cancelTask(): Promise { + const cline = this.getCurrentTask() + + if (!cline) { + return + } + + console.log(`[cancelTask] cancelling task ${cline.taskId}.${cline.instanceId}`) + + const { historyItem } = await this.getTaskWithId(cline.taskId) + // Preserve parent and root task information for history item. + const rootTask = cline.rootTask + const parentTask = cline.parentTask + + cline.abortTask() + + await pWaitFor( + () => + this.getCurrentTask()! === undefined || + this.getCurrentTask()!.isStreaming === false || + this.getCurrentTask()!.didFinishAbortingStream || + // If only the first chunk is processed, then there's no + // need to wait for graceful abort (closes edits, browser, + // etc). + this.getCurrentTask()!.isWaitingForFirstChunk, + { + timeout: 3_000, + }, + ).catch(() => { + console.error("Failed to abort task") + }) + + if (this.getCurrentTask()) { + // 'abandoned' will prevent this Cline instance from affecting + // future Cline instances. This may happen if its hanging on a + // streaming request. + this.getCurrentTask()!.abandoned = true + } + + // Clears task again, so we need to abortTask manually above. + await this.createTaskWithHistoryItem({ ...historyItem, rootTask, parentTask }) + } + + // Clear the current task without treating it as a subtask. + // This is used when the user cancels a task that is not a subtask. + public async clearTask(): Promise { + if (this.clineStack.length > 0) { + const task = this.clineStack[this.clineStack.length - 1] + console.log(`[clearTask] clearing task ${task.taskId}.${task.instanceId}`) + await this.removeClineFromStack() + } + } + + public resumeTask(taskId: string): void { + // Use the existing showTaskWithId method which handles both current and + // historical tasks. + this.showTaskWithId(taskId).catch((error) => { + this.log(`Failed to resume task ${taskId}: ${error.message}`) + }) + } + + // Modes + + public async getModes(): Promise<{ slug: string; name: string }[]> { + return DEFAULT_MODES.map((mode) => ({ slug: mode.slug, name: mode.name })) + } + + public async getMode(): Promise { + const { mode } = await this.getState() + return mode + } + + public async setMode(mode: string): Promise { + await this.setValues({ mode }) + } + + // Provider Profiles + + public async getProviderProfiles(): Promise<{ name: string; provider?: string }[]> { + const { listApiConfigMeta } = await this.getState() + return listApiConfigMeta.map((profile) => ({ name: profile.name, provider: profile.apiProvider })) + } + + public async getProviderProfile(): Promise { + const { currentApiConfigName } = await this.getState() + return currentApiConfigName + } + + public async setProviderProfile(name: string): Promise { + await this.activateProviderProfile({ name }) + } + + // Telemetry + private _appProperties?: StaticAppProperties + private _gitProperties?: GitProperties private getAppProperties(): StaticAppProperties { if (!this._appProperties) { @@ -2329,8 +2442,6 @@ export class ClineProvider } } - private _gitProperties?: GitProperties - private async getGitProperties(): Promise { if (!this._gitProperties) { this._gitProperties = await getWorkspaceGitInfo() @@ -2352,64 +2463,7 @@ export class ClineProvider } } - /** - * Gets the CodeIndexManager for the current active workspace - * @returns CodeIndexManager instance for the current workspace or the default one - */ - public getCurrentWorkspaceCodeIndexManager(): CodeIndexManager | undefined { - return CodeIndexManager.getInstance(this.context) - } - - /** - * Updates the code index status subscription to listen to the current workspace manager - */ - private updateCodeIndexStatusSubscription(): void { - // Get the current workspace manager - const currentManager = this.getCurrentWorkspaceCodeIndexManager() - - // If the manager hasn't changed, no need to update subscription - if (currentManager === this.currentWorkspaceManager) { - return - } - - // Dispose the old subscription if it exists - if (this.codeIndexStatusSubscription) { - this.codeIndexStatusSubscription.dispose() - this.codeIndexStatusSubscription = undefined - } - - // Update the current workspace manager reference - this.currentWorkspaceManager = currentManager - - // Subscribe to the new manager's progress updates if it exists - if (currentManager) { - this.codeIndexStatusSubscription = currentManager.onProgressUpdate((update: IndexProgressUpdate) => { - // Only send updates if this manager is still the current one - if (currentManager === this.getCurrentWorkspaceCodeIndexManager()) { - // Get the full status from the manager to ensure we have all fields correctly formatted - const fullStatus = currentManager.getCurrentStatus() - this.postMessageToWebview({ - type: "indexingStatusUpdate", - values: fullStatus, - }) - } - }) - - if (this.view) { - this.webviewDisposables.push(this.codeIndexStatusSubscription) - } - - // Send initial status for the current workspace - this.postMessageToWebview({ - type: "indexingStatusUpdate", - values: currentManager.getCurrentStatus(), - }) - } - } -} - -class OrganizationAllowListViolationError extends Error { - constructor(message: string) { - super(message) + public get cwd() { + return getWorkspacePath() } } diff --git a/src/extension/api.ts b/src/extension/api.ts index 9c38aabfdbfb..8af6d99052a8 100644 --- a/src/extension/api.ts +++ b/src/extension/api.ts @@ -11,6 +11,7 @@ import { type ProviderSettings, type ProviderSettingsEntry, type TaskEvent, + type CreateTaskOptions, RooCodeEventName, TaskCommandName, isSecretStateKey, @@ -128,46 +129,22 @@ export class API extends EventEmitter implements RooCodeAPI { provider = this.sidebarProvider } - if (configuration) { - await provider.setValues(configuration) - - if (configuration.allowedCommands) { - await vscode.workspace - .getConfiguration(Package.name) - .update("allowedCommands", configuration.allowedCommands, vscode.ConfigurationTarget.Global) - } - - if (configuration.deniedCommands) { - await vscode.workspace - .getConfiguration(Package.name) - .update("deniedCommands", configuration.deniedCommands, vscode.ConfigurationTarget.Global) - } - - if (configuration.commandExecutionTimeout !== undefined) { - await vscode.workspace - .getConfiguration(Package.name) - .update( - "commandExecutionTimeout", - configuration.commandExecutionTimeout, - vscode.ConfigurationTarget.Global, - ) - } - } - await provider.removeClineFromStack() await provider.postStateToWebview() await provider.postMessageToWebview({ type: "action", action: "chatButtonClicked" }) await provider.postMessageToWebview({ type: "invoke", invoke: "newChat", text, images }) - const cline = await provider.createTask(text, images, undefined, { + const options: CreateTaskOptions = { consecutiveMistakeLimit: Number.MAX_SAFE_INTEGER, - }) + } + + const task = await provider.createTask(text, images, undefined, options, configuration) - if (!cline) { + if (!task) { throw new Error("Failed to create task due to policy restrictions") } - return cline.taskId + return task.taskId } public async resumeTask(taskId: string): Promise { diff --git a/src/utils/errors.ts b/src/utils/errors.ts new file mode 100644 index 000000000000..546bc8311ce3 --- /dev/null +++ b/src/utils/errors.ts @@ -0,0 +1,5 @@ +export class OrganizationAllowListViolationError extends Error { + constructor(message: string) { + super(message) + } +} From 0e95f9312cba44b55f9e01b26ed9e0b317274d8d Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Fri, 29 Aug 2025 23:00:59 -0400 Subject: [PATCH 043/228] Putting the Roo in Roo-leases (#7546) --- .roo/commands/release.md | 14 +++++++++----- CHANGELOG.md | 8 ++++++++ releases/3.26.0-release.png | Bin 0 -> 1373820 bytes releases/3.26.1-release.png | Bin 0 -> 2345958 bytes releases/3.26.2-release.png | Bin 0 -> 1346392 bytes releases/3.26.3-release.png | Bin 0 -> 2190755 bytes releases/template.png | Bin 0 -> 165720 bytes 7 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 releases/3.26.0-release.png create mode 100644 releases/3.26.1-release.png create mode 100644 releases/3.26.2-release.png create mode 100644 releases/3.26.3-release.png create mode 100644 releases/template.png diff --git a/.roo/commands/release.md b/.roo/commands/release.md index 702c5ba8924d..99c6d3a9f9e2 100644 --- a/.roo/commands/release.md +++ b/.roo/commands/release.md @@ -26,15 +26,19 @@ argument-hint: patch | minor | major - Without issue: "- Add support for Gemini 2.5 Pro caching (thanks @contributor!)" - CRITICAL: Include EVERY SINGLE PR in the changeset - don't assume you know which ones are important. Count the total PRs to verify completeness and cross-reference the list to ensure nothing is missed. -6. If a major or minor release: +6. If the generate_image tool is available, create a release image at `releases/[version]-release.png` + - The image should feature a realistic-looking kangaroo doing something human-like that relates to the main highlight of the release + - Pass `releases/template.png` as the reference image for aspect ratio and kangaroo style + - Add the generated image to .changeset/v[version].md before the list of changes with format: `![X.Y.Z Release - Description](releases/X.Y.Z-release.png)` +7. If a major or minor release: - Ask the user what the three most important areas to highlight are in the release - Update the English version relevant announcement files and documentation (webview-ui/src/components/chat/Announcement.tsx, README.md, and the `latestAnnouncementId` in src/core/webview/ClineProvider.ts) - Ask the user to confirm that the English version looks good to them before proceeding - Use the new_task tool to create a subtask in `translate` mode with detailed instructions of which content needs to be translated into all supported languages (The READMEs as well as the translation strings) -7. Create a new branch for the release preparation: `git checkout -b release/v[version]` -8. Commit and push the changeset file and any documentation updates to the repository: `git add . && git commit -m "chore: add changeset for v[version]" && git push origin release/v[version]` -9. Create a pull request for the release: `gh pr create --title "Release v[version]" --body "Release preparation for v[version]. This PR includes the changeset and any necessary documentation updates." --base main --head release/v[version]` -10. The GitHub Actions workflow will automatically: +8. Create a new branch for the release preparation: `git checkout -b release/v[version]` +9. Commit and push the changeset file and any documentation updates to the repository: `git add . && git commit -m "chore: add changeset for v[version]" && git push origin release/v[version]` +10. Create a pull request for the release: `gh pr create --title "Release v[version]" --body "Release preparation for v[version]. This PR includes the changeset and any necessary documentation updates." --base main --head release/v[version]` +11. The GitHub Actions workflow will automatically: - Create a version bump PR when changesets are merged to main - Update the CHANGELOG.md with proper formatting - Publish the release when the version bump PR is merged diff --git a/CHANGELOG.md b/CHANGELOG.md index 60582573e286..1c0ff3a6ccd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,16 @@ ## [3.26.3] - 2025-08-29 +![3.26.3 Release - Kangaroo Photo Editor](releases/3.26.3-release.png) + - Add optional input image parameter to image generation tool (thanks @roomote!) - Refactor: Flatten image generation settings structure (thanks @daniel-lxs!) - Show console logging in vitests when the --no-silent flag is set (thanks @hassoncs!) ## [3.26.2] - 2025-08-28 +![3.26.2 Release - Kangaroo Digital Artist](releases/3.26.2-release.png) + - feat: Add experimental image generation tool with OpenRouter integration (thanks @daniel-lxs!) - Fix: Resolve GPT-5 Responses API issues with condensing and image support (#7334 by @nlbuescher, PR by @daniel-lxs) - Fix: Hide .rooignore'd files from environment details by default (#7368 by @AlexBlack772, PR by @app/roomote) @@ -15,6 +19,8 @@ ## [3.26.1] - 2025-08-27 +![3.26.1 Release - Kangaroo Network Engineer](releases/3.26.1-release.png) + - Add Vercel AI Gateway provider integration (thanks @joshualipman123!) - Add support for Vercel embeddings (thanks @mrubens!) - Enable on-disk storage for Qdrant vectors and HNSW index (thanks @daniel-lxs!) @@ -25,6 +31,8 @@ ## [3.26.0] - 2025-08-26 +![3.26.0 Release - Kangaroo Speed Racer](releases/3.26.0-release.png) + - Sonic -> Grok Code Fast - feat: Add Qwen Code CLI API Support with OAuth Authentication (thanks @evinelias and Cline!) - feat: Add Deepseek v3.1 to Fireworks AI provider (#7374 by @dmarkey, PR by @app/roomote) diff --git a/releases/3.26.0-release.png b/releases/3.26.0-release.png new file mode 100644 index 0000000000000000000000000000000000000000..393eaa94ebd1509825628f22542e616eb096112a GIT binary patch literal 1373820 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

0_zbCyseBaCfzezAU}1c9=pgfeg7+Fp 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®sqANMu?fU%k)Ta6I;h`@I^m(3N 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 z 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 z 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�NieYhyVo0 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

;vf|WO)usW>luPeORYwj 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"E;A$G6Gf@h1 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%0D6J+pSQgQBXULY;BMDyCLJXAVT<$CDzE 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

5xsO7d1 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

q?= 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

1RJbL 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 =T%R2>Gse*XOM`0?%A+xfEW_q&_7H_Q1V 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

6x{2Pp+K0ySR6Idh7b+>ZSVp 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

QJ^ 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%0DaH`bDwYn+X9d28NW^#cHeWNtwlBn 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%0D{m9;^=%Tk%KRst$u zsmhunozNMTW$kF?mPiLOb6JO}9Do5c7K(sf4WkOc1Lg>7ZzU80jBs=yBw)fx13JtX zgi{2X2v#C}2=oKCvJ)D?`;Q5ZGy#AIG=X}I3N!!!kOK)C)q#2yBnn`~V~`f8Q~QBH z32o6{(dkZf2WyARTc(ph`?JxPS5F@Y?y&Jr~C}E>CP;ncR2J)c$)X4%|O} z_~Fr`-yc8y)by2S=db^6`Ki~}fBD}2-+z4UjZaSf>GSg+d~xBUFVBDQ<*9f7dHD5D zcK`O{xu5=N@X=S=FTYT8_?gP(>m}otUERmb&FlK~f;u*#tQeMud!?bQIM6BZHuK#L zTt_W<|7}T@HBPwxIc8KwndT_V5@SOKK$K;Q;mm*((~QlOW?OL*fP(-4dIaGyW&Iw< z*rm!NKk9n&)rFV-dicYy&wlcs3!nby+~2=B_U>1^U;NA56K{-Mc)su8t8aoo{nIK#&OV?Ty>FFTMZIwLg9~{fiI! zpLnzD+AGaxU#L6&i^Sfi9RBg>1HWrL{*%(_d)x!3-2Eqb=PG8-#ux9=*DosL^iK- z9)YO;@e7K<^NOJh+KDTM@hkG7i}KyqgFk*V^Tn;%JKrwe`gY~koy8k>cK!R?g@4^y zx^V|4Z+<&>1!es%WQyt;VPt^qX=gZF8J-SSpqmlsW|j1D zt0u&C>%91apn8p$-ovjy$je?yz4rC$*SD8Gy|wGBZ|h(9RI~C_?7o*XKYy?5`H!6k zek|@e>s)^_eEj+F;a}LN9et{W(4Ga!Sz27s2K>Rp%R2_fB}EHFOcpF)$~W(CThCotl3p#6;oy^<|y;1IdA@!i(gc* zMel=A0fKV|^8#Vg|NLAA08SL3=9B;mXj`(t4Dogf|87Fj7Zd(~J07U{*+gS5c%PvC z`9F00mhcr#}V{3g~wi!%DzNEW9>4nJeRIoHU^Z?e_Ny=yz>N3+yDZ zc9J8nB-P^NE84oek6lMATy*77Zrkb5XgYn0I#}2ds#@lOjZ8LzdXgliRs6 zD??~NBRjO(0*YXJ0qd?j+V^%)@6M+~us>af#=>-gktMRSgcb(R2-3AcfTJd((XPk< z$bsBxP&wUP9iOG)pzn62lOZuud8%Rt!PSFr3DAU)kkMVr*VB1=I#)}BAUt^ypaL=y zPPNBMc$mEw{83wC2AGO@%S9tD!g2lB1%x#(v1IXD&}c<11-=6^*B)gX>>OfJo~VXgv_Zh=#X9JsSR_quxp4ZO6jYcf&2p-B!fgR?ORh8M+D>Vu(HEs?g>b zA{_`SU`+*NOo53dFfoNDDv$8~Yj#qlcawy76=QvGnk0{X)3WcU3vAIxWEfzb;G9OhLplM3zx(L%)!L~-Z&Ki-gRaVxcicRVpH!Qtp zt&`V$8&6eS`EBNf4^DjY)o*Ux{QK=2U*5j?`ORA&-M;yoZ*Cp^;H%6}-;JJnAu#=@ zci@Vv?Urk70dVA35D7CoD%#Ko{vqWbND2*P4 zo)7^xBNHi2LR6~F0;P#B!x(@Bv;RwU90_0mY>@^T!2-nKV+{bliXi~zA9P0n2EfS~ zU;rE$1VWXlLh0LR)B73}&iX69Ic2qGX79m4>OE#7}jdzI4z zVBk#^sb!1WKLKtTS?QjoB}7eq(sgut%^Gpv9NKoKziNQ$Up zFkoIGNM)o&L^c3$rHIh1|G~oRTa5qMw&f%NKpTLlZ-dx>8n6T9oc@%%A@(2efV+2M znxK5z_Cos3BF0Vh8eHY={&;sV*@xbpI1aAeg++it2B4zd7tNF; zd&|;;*!w?JUNcCD0GFnEK?E3$c&j>mm5>1t01@DxV4@qf*h?D>-lWuA3dC?yGexK+ z@zo@OrbwhMmKuu{mLh|lWOk8U9!elcE)7vCN~!S@S}IIShiNtC$XS>t3-DL~+A#%r5gR)YG3hxWj!HP_FCAYWo9IE)UY|098vCuBo zn%KgA3%4Hh*rY_NS0Q8oV81^O_Af$*MukKbtPLQ<{(T|#{)1?HAsw9l@WBD!83N## zql(~d3Wp%af~%MchM^!H(8QA(BBPnPl7#n!2#&_@Byf!8lv;6x!d0_HCXw2!u~t|E zb^fZZvg)C##&H4wsD})Ir3Od>SZx^q0f5HdmHM8gy39g#$81&OXds?-lr%SXpV!6U-&d1}#fhbe z=za`K;4uH3FaSXllv51GL_-*L$YBPUFNnYZw%CEt4a~tp!7Lm|l2f*j5@8qkwg(IV zeURla0FH_Z%1-dm zcBtU+f40H_vcPh{0LW4Yov%~X&BcHGkLaWCq<{2L>c<~fKK@?WgKv~R_(t&B8>J7u z9em(T%f**H*WL&}{$cr3fAih`4o!{~eNl<(3J*)^Whs4ZC5~jrH2qBQRtIH<@`$g4YY6cTLADkIei<4U zMdhTTN21y#(fO_BvT|p#-P1hb&8`IcRsy{fzOH6xlh2Zn8cHcTf4h6sinrY3-SasY~8=?I)4xD`_m-~m(X zW1*!?VZNP0tg8-5^@3rx*!c9Lu+e>kp-<{^X2(JB;8zm5xI`R1IOTB^Klpq-Q8Z8o54*bx zd+?#92j*5`4|_C=I(VZ!gqI&<0~x}}jwZeF9&fDM7e!?+tTvYQLbt3h-h)bSyxSMc zf@eRL#UA`D_~@hE{zR{rSQYm5qxJX_J;YMJIGTkvkwqPFAAk^`9_{kQv;HLN(Cvxi zHRH}cv@9~11a1LTC-&2i=Hfc+Pc%y;3b@PL(Ob_}TJH)sxyl+7>6T!)%;EJrJVAG$ zEL>hyk*M~SM1mz1!LkZ}sLby2x;%c9*{(I1EEc=n;jq~peou+lU1B!dO=g?T?s2<8 zEx>Mf2mB=-chF|@SZywo&1JSaEjFji6Nr>omzG6C=r2{@nH^~B=xu1}O4c+swPps# zrW#s1?M`oXx~8wMcW_`J+to8OJ3BhD5N{m70hK-8c-9(ew?G~=%52v^qC zr_&A9$=X!Bu{PP?-L*73J3lqKw!E~yvb1|)`p}-$&6T;usgb?Q^M}@VtuIa;+&zE# z$i~^jdoP|ka(Hw1-qrbI``7oct*$Q29y`46(7xT9dzSaD@7}v-^}yzyU9;1R^D}eP z6LV8jYb%TU_ib!!thaRbCR)%*=&+PE8A0Z{-cs63MCbz@R!Nfugs*WzOi7~|Gxk`+ zEyyh47IP`+U|S+B*gKD`)lvr3Sk|1s9!=s(qzzlUr5wzPEP@S0FWO-iF3}`1OQeHn zw?;b5uvDk5yweH}`VQ1$DQib{Q~~N9j2V~+N}mY!`XwGxeV%9NTAtN(q=4eGnKSLIs%cDK!_ILECFZ<;iQ3J69x<* zu0JPPj1vfS01V*NfdI7NMHYY0_xO8fC?fm%0 z#i@N)W)9vrec;;k!TYBVKQMjl`pn74r_cXr{@O2>zW?&>pT52M!iR@n`P<1iKRy5F ze_s6Hi;EwAdG3QRPQ3H^fmi;v`oag(&%8Bo{pHqk&n5RiS-x<8VCbwPbHLoNYN(l4 zN5|xm0a>_566}-)I>bKo(Fn2sJX?y31OGV|9Q$ucU;rQnNPsoTHYb>-7-Rrgl2BT! zS>_s+rIu~0V_WNa&Ss9QjqC3bl#MCs*RA6hD~|oR>*+Ul{qY}1KK|F)Pych_vv1CS z^6#U6{&MX%f0=#qjgd>g>^bmQ_v(G!%U80X01Rc%@)b1MwRE9v_Ds#l(aP@4lC~9l z?Tn^!P!;Kug}cNhSy{MGTG}Tn?Uq0iK)(bs0EQ%$L$dgoA~7k8j|(e@!6CIEjW8$`O3pp8;>=g|3&YEzny&g^)oMh@Xf7T z-+l|OfAsGT{6TT^_N}WQe6jNKr;|T_fAER7GWWjHbo$o~$DfOBJ{8~iVcn6Rj6Mhe zKzIuPaP=IucJ8-!?6tP9TiSOUTUHH?i@Mr5eZ#J*x$}votEeK2q5T|Jr6!e$DPSzU(!SHO{xkfZ6Vic`((FN5$9`$sK~eJ|dB;&*_PC+PKd&A-FYiC69=WU>yQ1FvgOZ=T)AjkS$y?tp-MYDY4B= zkh=G%arBgP*S+%YqwJbhY2!L4vB0jH<5W#?D#nGeX+y)RH+#U{v8k_HP$nm})iZ|L zIdkKpzJ5-b8WTo(S-y6btA$}}VA?=jn&oa0gnJap302LUvUXlmKQE1qaf2C#qmf~2 zVme#do=%oO%M5h0OMB^|9!6wD-m+g%y~s_i3LEx|n~w;4?@7P@_1eGgtbTrb_rLD6 z{q8gG$zP2;|MBdvKB#^052jt$HKSJ@n@^XX{AK0o7ag;Y7&=ZSPdUwo^{tx`Rb;M`7 zY(*YK;E4(HpMtGO{~XspxckMq82|6E0ifH(T)vPcAjXn=nAe_Q7={paKGyhUVJACt z2MI)UF+(GJ8}_+xQT<>#AdCcT-x2}NsRv_%AQ0UpaS4Aq7)0PO(K`ZIPE6MRI#L3CFEoy3*#b#4k@ zxxJ9So#+hff!P0@WbRHXZzoNV&k*G^#XFgT0=AgUSK*U`Q5Gz=Oi&bn5(9;oPZtzm zp~qa{CT1$e1mZdIHd2l%S%x72h;YaJ{sR1&3RnWVQaece?Id(EIgm?H#6}min5AHf z3|yIwBekH>F&cFi(j<8#{tnb9pSdlMxvc=Gk0asu8md4?1$HAH=4?10UJSRVCZNK721gQxX~ z^ge;kFVOo@$ya-LN+%1AWQBS(YR;ocKn;S##rF@+UjYz{hf{OJ5FN|H3QCDODT_A_0Dv_t*ZX8zmq=md z%S?Qr05Xe|7MaGWHTm?mkkMIc#wa4_zT8Lv z09>h_C)M$Q2nbd59I=)q1lI>!sAljK;QipK=sd_Nf$)Exf=B{j;F5}&e~7yd!v8^r z7c23y2nFC=us?A9W7ZwW;{o@2&c9D$h$&2DKxswr`x6F2z5plS1Oht#IpFqUBI=)o zu>s5xgrNdL1em}ZAabAZ{!^GaB!H0rEoOkaFNrQI0*Zfv1VxJ7s^DBLrh=ChgLwo+ z3T9}>+5k8?K=MD}yTr>DHl6=`uJD{t{swfSS&l4M`FdZ4UkxGX(X zmL4px8H%I_OH-(S7QITnQAh&tR&}C!D47Li;HpkXX`{gtml=b6wSy%$(L`FRNJ|lE z$PztCVl0xGiWHV&jh$?Cl5L)1hnM8_(ZV5GWtbX`P~+uA$dVPLbhNlWL20igx7U)| z>u8-##U1sKVO62_;n}g_R44hDd*=9Pb0pssqx08G4Zv0X;fqN8u`pIFJN@p6PHZ007Xi zgl3`Ar?pktg7txDS0p_gZJtVZEYyJjz*2qha%10WWB*$7;967vYE$1zWA6%N0AK(h zl<0AlH5Y+$oG`W{11Eb0VR7H@cETyT-=-Mi# zA;B_M^Q?7zdn4c3BJ^}gLj#KPacykg)Ue^`JmMX^P%{5ueD4qIPyIY|-|xnrcw_$O z@2>vpgT251%i&i61~~E7XD8nJ{MZ|x9(nEW`(OFn`fop8e*V3gAHOm7*dO|?z1V*4 zr*#J(Ppv)>o4XpFIA1w*vb^_DX=bCeV=dga5@}m5Yh5gFS%|dFm$&YUW|m`JEAg)7 zRM$$nYo$87n(SCgv@OJ1W};1#74@Uxn!#Ya$6J-Ll{A_BwOUs~VJVjyN`)F9SK(la z%^-sVIy{h|N5#1m00!{2ghVg^Eda5AL=T}DOa+7hgZYHBJ}1bmDaJ?u`VvClKun&F z$%8Tnzr%--4km#S2-tzBIkZNDFD0lEV3$3t0SEZ2F{eM_sn0q6i#ZA+Er1~RCxZw9 zLEZCzT>Mxi82=tsxz5<*Pb`Hwf>ankP+_7WHO35b-2ec*w(?yUyN+|sT03b3m#Hh4@kgvjl*?}PNAL9W413<0-8oN1s{Gt@W{J?>+b}wzvH^+kB-Z)+3$Hh^w?+G`UQ0JpnaxF z9CWnLGQ9IdjKADPhl+=(@W62?Tv+RvkUIt#fT_T$yecnS7oe-WG?hTX#JWcCEJ6Q1T)cU{Vv za@eXUS}#u*{AN#v(0LTv@U;{r_hb-`&p$;s_53p0E=0dJ2 zk0HVuZq)zXN&0^~Nf60Z%-TT{?m(j&CZQQ11mYkd2twm4ZXOxr<K(fz^Cei0j0&J@+ z&|K(`*MpW#_7Nq}AtrlqNJMUJxk@Zo@h7_j$sWv_hz_L350%~ktg|QLS)8&bpNIaQHH$*Dq zp>RbwQWYpEvpGCkz0sh@7=YdD^#olmkJ)OoSRH7V*xZ12!`O+%~G8;m7W{r&xo z4Gm*MLq`wpo0^(#$&5tOJ)!FUKy{xTa2@REFW(B`F9%*A7r5!c+*RmOc6*~3$iZ+6 zhHARqRXuKibGmcjO(nFWZd-X0fUn?8i!N9;+U0^&fKG3;3j;9d)WL~OR@b*Q)U?&3 zvM$rsIMmm*Fg39>Gqbt2dT{sZ;XTX8_wGKjzP!FTwYfZV>d@N8;`E`7#WTk@&m7-- z{Lr4`2lkveuzvRVffI)h96qq`0QNu$zvS_wM-T5?U0vANv$B8R`oaBsH}~vb-Zeiz zGr2TBySlV^VE^Xs-77QGQ_H*e)N~BFsybZJPJ3k=$XSP*ZDCNlww1Nm%GwBbzXja= z;L69M7wy)vHkbttaYELj{W~Kt02}u8gU27@@!PGH9ms6RDl&E;jLJBxy6ga!blA|# z9aSnbHt@)!N|ysNV=}1STG?fVnEecDw^erix2(u)wRf2-I?d2IYmIidLw4!ThtFn}Hhh6Jq99(%OcR@rT@>~>c6IEYFVRkHTVtg{MDLIv%Q z4Q~=zeVSNG+FbK8a z6oFHYW29=tYp@c!Au56&KWc=q_Cv!|b&yY$TbwO_3~@rR9P-#PHRkB`6h$(cX> z^TK;yT>jvTOCNrD?)@*0zxCPvKm2X+`9F{U@YSAcFE*e2X=42c;i;>h-V@fAbwk}Q zO=40N9acp8rKLTRP(~bR75bWlo(6%df$yj#005pfg)HapH^o?{7^-v3fC{k83AP!8 z0RS7Yq=Ed$T+6oAb8QV=M>EIS&h_{5!=v)Lb<4=b$f2h@pL~7p<-Z^N@at3m`1hGl z{(bsy|3382KUaVImx;$-9k}pZ&;B2DuU_k3x!SdOrEB?WX7O^@u1g>Vyz5fi?D^WU zW6|EtlJ-?+?X)gBtgaZ4m-WcPJ@T?XdAMH^?v+LQ<>iC2iXmCmu&ioC86Q{2#})B0 zN##iC#)BKLe^qe598~PhUV@snR}pO<&o&#$6GEz2EgQx zUqAcOhu_?~{hj_Vly@K>;KuEnS3me-^$(v-|MJ6;AN?tN{~ue?RqxO#-@tKa&knI(AR8byCXbB~6=~&&EIJ}XmDs2%F>Y$x6B<9| z89p7}b${c@pSN6mq5jk_2Cw~o=CRkJd!G=s929jN<7ZBa`_J(P&kCk4%NMSwdXH(d z$8~*YG`**FJ!cI4r_|lY71^WO;d9#I^NRj6^8PdW;R}Y5i;|%W@_j!j{pFv#zrHzh z>-NGow^nZ4S^f8&<$ry<_@6sV-`rWcd1vXyx2xaWUb}H;?u%P>KY!P;_i@eOCC$)9 z^~goV@CDhxX?foXaob^K$0146hP-{hY2v(o;H0E}O^}%5R8BL?Cq>BxOWUTm`;e<+ z!&J9`Zbek>zO-miC}CrmUG))yyiA z6XJ>ip0|x|t7q8i=(Yw1kOH-^yzO*P2hEpZ_`B$#URKqpwE2LbW|f=XEp9y|Z9gID zzqjtqf9?7Ao%PReZ~p5}_T?`ECw|p*?@Q?mzjm!XX`XseH+8M#_%BLMJRdpnE6d~q z+V)ei%gfBhnOON<#hW!xu zKjg#AKi*UyzyRolo9gkUP}y7AG+x~`XDMssU;qFpfRqlBK%d7_qR(A>c~dBjUbr9t z059A`)(^b@UAQIVjdl8>9Rbt`BEV1vlHIPVcA2%jkgeFBi~T1!=ml6CR)8JTLMmSa ztE0|IRC_=WUs1%yyAr7 zIXlVRyYm@X-4}cCiwF&XTvh?9-?f!n0I~ego=YP@pMnK+9*Hd^v(X`Q@4{?9xkQ8_ zg8T<(8=y7h)AMLTj@rqTnXr2b{7ySa?7IN~VC9j4p?U`}&O^lHc8mv5_-YbIfpHgL zo`hrw3WWb}qj0uCfBc0Bl=Ko(ZXkv^{jn-x0T%DgBa959wP+HEj*5K{#GIR%9WbhTs_;f+y3Oe%{QkYfEs?9<1FMFPNK z3KFJ3Qvu^v>^x;kaAJfEvrvGL0MJyRlSASa(g^)zVG&bI1?N6!^-;JAGFL|7%BehL z3MyYgCAeHr1&9Ab)IXO<1yE2SI{~P7VLy@aRb(EP-{Z)O*x>XB{_XGdIME@qNR(WuZs7wYLE15IS42~7-)W|MTI$e)aqf@cVyu z^VX-gZoPl|)-P_{-2eVp?N7f`b^N)&^mR}F1y}1KTg{3kF|98j(wFwA{H-cagT@B{ zfYw{9_tokE07&cIX^{W*B!LLXmC(84P=_+1N9K;{J#hnA!stm_eAQNeHDmxdE7j%_ zna(FuI|T|$4gipw#7e7N>(ZF~278IoQEGCPnVk`%tyE_TD)erdme2sOid9yT3Z#Gq z3Q!N`Ljr+;E7lB*FO>6Uqk}{0KES|Pb4KIUJB@#f(4K^>@g;i zb=cDXfy6696}Xn8H#b)H*qG6GMz1tQwj~ zOOxoy5+ez{JLOig(neO>C^`q(=p>mvWT%hf50OjCs1;FaJV{AZQu95Pv{O3UXkBg8OdF-6iQ3sz)K*j26wj-z+?Fi8t15U`xo3N+d%MrR({3v;8Vgm1 zLb0ll2jC=j@F~cI0r(>aDO47r4xf`A#qNIa{u8NKIT{m!kc5p@Nx@VkOgx9tEqTsy z5Apki%m5|=!r{X>N6g5U+XWhrSm#3~P&;@^8vpG+(0J9SG^wHV^5aT1o$C{+2iwx~T=9{>^Hp=i@& zs$*AOcB!ssv95Qiv46F3V6A0vt!ZGTsec7nfVy|3+Gi>oN6@X}C~ZVfF@-72lIAFY zD41vk0{~b_hNp*ke}Y;LN2vp+4aBp91Pze^K<0tYJ56As@=a9004#K&l_s>%M5we< zMIdBK6I%fTkh&-mHy{B(nF87XG`W{bFajw83{@#ZTh7u)S%x^*loD9eLPw*>*(&mM ziv3-(V4tdNR2!W$)T~+CkNAf#mG8Qq-27qlndf`&e|a2WfIshk@#B3j|MlprpPYQ- zlT&YecJhtSPQ396nmq9G-!@+SX!ZH`=70Lu_z(Wjd+mjeb3bo6`osE-N2?d^iA|iV z96T23*&oSlMB3NN+g2*um!qAlRh{7dPjs&)yI0aZtF?W*>jw7Jp|W?irhBO-yQ{i$ zA=*4y(J)$GHxjPy55&6AZ`Km5)4P*uTZPks1$0Jv>9IU!=W(^&uY^5dr}*78NS8UEcB<3=J~1}xVNRWL^oS6ReT zlD?w`!rp&EbC^Wj(#Uv9EML5(Isn)J!SF-K|0;0Or4nNR|33hL$O$OMI`75AXBj)E zF2EA%(AyCtal|^NKm*__g%9jlXgq-4Vdx|fA^gDgZv+hhm6u6)|79*zvXw5n*oH~} z@og!xG6*$bk(nYg@y(?YMgU_se{f@nTAeO{qQg454;|G?9bItd{Ft&o3)SqIr{M1p3ATJ?|aL0 z-#h*X-}5~1Zs3tWm;T`W;Ddh(UVGbn^;PG6?+8mfS!h)Vn8bsICd} z)B&E_2ke<@FJJ5BVPk1sG_9Mgb&)h~y4oYr2JMDOr6oDyZarPuTWX6IX*@h+;O`D_ zwIMD<`iIz>5KEK81320c5eU!LV#Qre07C^q4tV?t?OY5DU~B+q5(F_$5CC={P~wGU znQE*gjQ!~xLkZtnA#x@qo?0vp48%SPNCJRV0BN8J#Dx7gO8{#FC<4tu5EQ@$?G0Eh z05vvC{mnQ_03!i`MxvW6*sKU)bz*V}DfxM&jN0UV8&rE<|_ zR)cgc{?uTodMHpm=)>OmP6}N#RrZ3q0~Sy*&j&up$?(s zK&Tolm_$AMgQ>wlY7pA1(FzAjzy?F89redLfuZVt)LvRUR9Z8H7aTnuxlPwd(l7@bNrwUx!v z!O}{XuN2sOyg|F&Yqq!?PM^)@F&XSutHWkMx9lw zH7XQpgTdmoyDg9$;4ql%Hist|EcN<=E|1US4+YCAW69b?x}iCf$@CA6&+J-QUSHm` ze|lln<_^j=#`4NUy1uElu4#E;e&5>S{yocsLzC65qm|9$zBuG$_!E8Jcps7C;EDEl zVm)XQE*V^3bnW_s=xkII=Mye8I;CjRpBnHc;1c7Di_R6g;^@-jmIOLE1L$%G;i98^ zfKa>X2|(vwe;jS4w=9vVtFCEjsL8gq4E6R5_w`JT4=v5j>|S2kv$A$%@5b@{YlrqM zpWMIa=;q4ty-Vkh>^ZWrcx>PDiNm`uojY{y_})t=4_!Td_?`>LP9E8N;llZ=m#u6WiF%c4o}??<~`kROxv#Ix>r4_Knl9q)6-P&dHLTu|vj=0s(p*BR@vN3-DH zkE2R=&e0FnYsV$(<4F#<69b;qfGgGSt{(8DN4zy7?&=Xwa@bcr?5!R`vpk7G7XSkT zPShDHeXe+~GYac>LA}qN?DHfcW55~fbwqoRxgduCwuLriuR?})gE$bh8(W88nX#02 zSSva)j}V{&W*{;{H+NbCL^u?w3zq<0_*Ox!|>fF2kJo?%vdw=`! zu4msJd;Ha|E5EKg{B&&Pdg=HjN7rFf>p7OD)%4$8|LE zT&-+ZJ1@{Hh>R<0_E?54lqDiGrHKQx?)fk=|d(h z>y?)cAd{8%D=LPhl|!#GvLBqOaDE#0`j@!FSlCx6nq`Do99M`~v;)a|;G zJ@#aL&!eH)YoWPo-g@NDk`znS{+>u3M)(Kk22_m5EkApe2?zrA(y_RTBr zeYW!QKW2aR;m}iWcisPo_DjEQIPqL!|Bn)zPuCrJX7v8w*B$v$aPo?O_;g_Cq_g+1 zC9~hsvFYwP=;}UTXjwHjEgKsb4Gl}th0E2e_Zyp5RmmxJYFeF~RK_RK4r{8Xm5>cE zu857R;uFfmgc8dG$f6MYuSiU&6R19%*mJ$}+_Uk`??-n(QnB_(^`U37mw!9`$ZP%g z{!Y<)P*A^D*m{K9eoQiUQF8c6@zv*zPrqSYd%!Sw#y)vfH*{XzcUIGPMmKt1J98A10)Pvi`MrDwkpVz}0e6ABpSc6=KSRE~n2ST;!C8;iN$3e< zDu04v1;l~DRaMB`Uck!D1&sm76+jy;W(r6wK>?Nfy+S%fgn%*b%IOT_v;zzzwj%cSV$MzycRQJrN97e#g*!;-=s4)u8De8G2c1uJwt2|5 zkx(hvPU37Mao|YvAqQe7iHC-Gbb+2FGBeR&O{k{< z!M&OyP?2~z0UgJaVKxY0qeUZGhCojf0q+f&kA}3$e720rl$hCS21T4l78g)4dpHi< z#6CwEj_3yl1qw$A@pD2wQ>14IG*q6N#!*rE3JQqHsi-_0j)^@pXi!XM5Khpti;w(b8f<`~*IILET8L%;SMFSqEd?4JG zq2W1Qs6*$Rt8xmo9-+aHOrZDkVF-gpj%ZwLByrWirbQEMT{X@&WT;-uMYl&DU06(H z;j?5U;2_e1(_f&c3k^)6i6yqMBqoN)Ku3dOAg8sm#dfC1$^-zw0$vU*{EOK&6opLX zc8d6aNxZv?`P<0CZ4_Z1Q&Gs(Q^j_^CLl4D2@NGoxtA((P$25xLIM$BOR>~Wmbs{M zG-wS`RV6fSn4zy=nB#0`n&)kjlw_6BF>U>BWA`cR*gc+=??=u)-}ckDH$M2{NB_F< zr<=F_cI)=vZrytO)~%=iePivNe>OkycE#am{gV%Qd(XMs4%up!P4P*6WKdhutq!!Q zyp1YvgT_;@cGhUUbvjRt284gH_urk=I+Ge#e2e!#u6M_<2yhJ5O}>Q5lQeo0WTEs0B8W)gVp$Jt7E}$Z+ zv;Y&WV`xnZk`gRAC|YwM9=eDv|DPRX9J7zgVoZ5f%*rFNcc6zjnk*&={V}l`i2*5H zMU0(jAPprGp1JT)Mw750TB?8wv|I%_=e`j8_jyHhJW1!n+X8Zr>9H~vD^=lkaYp~u`-sX>W2hoc*+U>2( zILq1`;bv#J*%fK=RJ8k}*-)alB-M+C%4Ic!WwnFlwS$rB{!#z{vi@iXg#Sm|Q5i^N zgK;oF8r6jBO}@Cw8W!nXY?+BE*3pF;npi^>X{i!DO=hObZB&JgD!0;94yx8k(Yr`y zZ?Ut4iQtc05a6DclSt!N+p4U=x56IdB2V zKp22714bZ*+|N{nn5t5iuAFO#@{BQoIVrT)id{_-PqWn9Dt5O>d>!&oucB;J6Q8p* zZg{#*ghnn^EIgdv`&8?h=ldUgW%8+a7M^{7&kG+Ndg&j>|M=;tH$FS{#;2#>g!0&{ zpB{SoZ+l<-aQE}?E&lwS@yGwzfBy^F3qNl^_EhuUM{AevO-!7P4IQoO-dEMNr>cD| z+PN0X?1^Po6WNty&q_`2THWA!)5yMNu)WPg8_h%O%>x^CJuB6j`9#}Hv}vrWVKkB+ z0BP>34o7K&*`LxoV@gYzMC<3t9q22CN}M#l4hsciHDGY=W0EDz5rj{*o}df@E+F`6 zXb9>XNWb9Wp9~fN!0C`W7T>_+>*-vg4w;hpM+A2Z6;_Lhn+UG|Ei8eA1M~5uicGls z39mg@{T-hV!sd1pp7L0TVC)VQQis82{m`MG27$7|Gkx z8^~qzkU8=k006%`Om#)T#RLq%*b2eG?272;M#UL3Xs=izEmxxFhyey*3AN}^jGoLz z7|F{=FCKJyB{_#aO=O~qOiYD~rSh;LOx}fAdfZH40m6QNiH$BcGl1R)IDb${mzj|< zWj2<~Nfi?Ezn~UC!@2@MA4J6C6D&YdI~BtKG?{}cv(hm2KMk}2YFdzBBo<-YuS=;8N65B=G5 z&pZD6-U>eOHs4-NS9qxkFGb;{DLfGJuS6p*Pmb_M;bp0Obft#@=4Gg`_g~>*DuKQR z8Zoa9UF~6L(YKU0=&m)IqkLltXxoDKIl$Kjg!+I$7Xs6U1e$*$=R)`~+Ydns1Ofio z(GL!Nt$&LfCxH2I0vzo7#xMZj0eBHV3+n`6Ie`EZP2v`avL|$Uah+iyT7&ASB>#lKXJ@f3R5!uK#9<5B&bJoOnQ^+}{Yw0iZvO zDv%!_4>ij}EvSRk+aU4Oh#WD21wEP|Ie@KluoQN-(#^tdeVh=0(*jgpt`eO$A3+er zQ3nZ{ARq`*<-~`9PzacU03qP!qy=&^0~j#yK+b^%bOo3yH&f|CcO8kZDPV}v7tY-U zl)LhaiD(AQ0L#Hds}S9mM@3^-Gz5aMESz)3FQy5|94SX?k{JVfZ?&r;Q(7}pRyS5s zJ6KjfT3$a^(Kr^VLoFj^^<%h%dZccsyl%9tb|g|uOpZqC$07~m<&ERet$wtu0X2@4 zqi0>iXhjp6g(@TEjd-$gw4!0GykV@eVZ5?w997Dj#!)+3Gt?W=7AGp2CdwMd!SEuL zjboM2j!N9W0qV$5C4%Zr6Xm!)vNfyxyKW75!FsfYkqWe}Ce$)sf%c((7z4XEvB@29wofwi-=Vo!*G*W}8E;x1iNVs^X!t%0O9VOJ{a)Y-Vy{t!rS);tHAU zzEDLf9Ib0?%FItqUO0a6%+W*3i>qzj)94WViC*-f7)lRf(1idzhQMkDk(JgChT*EA z%L-Sv9341ZR&<^xBIrCcPN0^uI=J-sI--*~fvzlSLH*0&T8~uV%LF$=Elifx43|^` zeo)hptxm*ilkuMRmZ6@^)X31{?9}eX*|o*_&DEv-yBAL$*mHXS`q4d0$M>yXKDqb& zku_A_f9}xb6Z@{6J@Uvs=O4Os`r6r}*Df4?;L6#Duibm;{F#eqPn;a$JwH1?JUZ3dGajz#b5yi@VvwnTX`?a( zbCid0$49e}%M$PPK%z-6rm*Pqrux0r1D<5R2mJ57o)ntfi~6{*N(4|>C3?ZqRBu^`ME3D%7UYDQ5R zsvAQUe=a5$t#Htb)`KjC%E3Sy?@Y}g1nO3!au99Ho$B|XJx{^G;(EV3(dUALCD4mr z7i1V@9aUYn%8aeD(;0;%20I!l;QR*Ef^mYboK0^&hpL}Be;!l^Z{c`u?uWbD6ox{KT%L(xQe|hD@ukZQjt1BOVb^hId9)JDQy}$W* z{wHq_Uw=7s;ko*QPsNuWEEzfH&K|NfEbFVM)m6jFNT0H-TOQ8HOThcD40R}j?Xp0t z)YmL@H3*$Gd`DVfuSUkVr+Bs$A1XCGTQyXyNj|DTW14TP;oEBkjyk@hf$wbMyPE{= zR)M!e;Oi2V^a;Zgiqx99`%G}{vD(YO9eC!wg_l0t^VZiJZ~trK&99e!`;UpI-x<2^ z_t~RA&Tc%CUB0Jh=}OP?)$H=suEon;%U8OVFLx~g08le}JleOnq;1t%H?4~eE6e-j z5oG=H@_uE-fV_M_Q86g58j@5E0bx#TTp6EKCnlAN32D_>+1~5xuYJ*Y>Zff006bbd zbD?JbO7`fJ$<6PF=I#s4-dnZuaB}nU_Vds7J@Dex)32U;`NMC3|Nj<|1VCf}p!&_* zx9)xav$a2dI`^v&N1l4S_n|*_Uin?a@#ks|Ka<$^bp7$4k3aNs-I1RJC-3nOo$(Kz zbYu@&JNKH}H|$+|9bNm3&1;6{6<`5sSgf4Am|DJuS`>*%ZF)vmI|H%*HPgD7r(i)_@CR$-`rlg_3hfN+q-Yx+>7A3CoXI-}@2CF(pR$sAJj9F=z;lC|wqbnI8QZps?g zWc6!??t_Y^HBG~^zvp16@36ULO18i?I&61{D({x*!Zm(t7>ln^@x}$+^uczB;0Wfek zGd!(SS1ZlgMs~C?O8SNMo1E%pe*K2DgsAtPnm7No_U~`kKEJ)^%R3!^_{zHW zjAPdi9Sh%A^j%O6URI1=3!eN{+4&bsjz4FgdPv`XB60NDQ=i;A|H+-xpWhjI<7)r_ z8h5#yXFLtlp882o-MF`Q)K@p^M`i7Z51y8N?qsho)r+2uzGROl-t9|v`%}GvbYDgD zcy)H(9BE*w-5fOl01Sn_NTA!vl2heYYekDUnFU3kc*Y&?#QZ-Q@bxDE3 z?uxeiVx7KNS0JACL_3uZOaTP6KLV@)fL+hH!~lShCeUycXgI0I-2_0YOcj#2a;DUT zh9006K+jSAAfe-HsK#vH%k^oO`fIrKdR?3r3G9Kc-3>xdgk^* z006cV>cNmbfD-~xXDknZz5h5ZfC%s}V(%bviU=uS7CJesy9()q5b<4DbznR8{^I~v z2AQJ}8-qfF9}UyML(P)zAoI2tae&Odn6s^jy^X}(N#a8~0?1AA(HIc*K_7|*G~rGV z{^bGp3z-W50Ev&jCjq^nOA45>o%qC}Grx^k4}c2X9V84Jp#DYdy9$`!%LhXTj@k?9 zQW{Ukky^QO8(p9W@BnRs%-Mm?7-;{Z{ip9F^NJxJU&j)gSt2t-sHfqfDgZ zA~Bt(E(B*E8i7I{JerF}j(K!p9*w&bxHkl7#K&Z*>>LA!CNH2#bKDF-5h2BbbIM%M zBwK;%pq2+T`WgoKqf{i|w1HrJ?D~h0Pzokv0A>;#_z%p?Oae=gkr+y%1w<~v`7Q<~ zXNH1k!RH(+Ap>PJ@IVw|5{M#v6T)XXh#?D$2^SDo32uF0ACi$dkb*$sf)oK6JNk>U zx-t-^bEIf4G{WeZ5Z46p%X}IU^h2;SLFNG(yi(+xj9M) zLuw%lbVY0+eFBOnxWsJWn}SGxz=pqNa=}Z>z{aa@tsc}{OX(E-?;hbTesf3b@O*OZanbiH?yyP zTKC9nMDtCk0Td#K2s$FS~yIKpD z(s`=2&ZO1_NdQ_$TJi$bXEk1cd*4lSW_4>`z+)X#fD6KmjDx`$QV2KxyU4 zEj&3S0f+$raH)(QOaWA8v;zQOvX^SjekEi8I3#MT2vY!w6=q}txlt%L2`~!~kpIZ^ zJh_1_(X+)`mPpGMU>N{`n$A}+a~Ob<2^jzif(wWc1E8=8!XNPX0~ZkX^;1xVCBbp} zTg?7MApaJP&z2Z~q?j&*3;>)EK#=~E=x7qB2;g=y0TR$b5@Sn0KthoJfXW3kr!9=r z2qd@!A|OHo1Dgz+g3LgMe{1wyymc|5xpBp@qnlVz2tIerzJdjK3#eSefWwD|NqcDDwQzvwpTb5J?DyvufFg&mkRd2$ zii+71_&u}4B=&!;7&FX}un01oVh+xV0)8b41xqe~(7|_xTCf@eWMO~=vn+?Yuw@K^ zj;pYXb$+cQh5-QdM$AGwd^GE;%D6B`t*flX9clGdb_8O;>|c`V57!KZ(`bM<7(oO0 zn*MM#8p;Bq?x||`fpvu9-6e^h5PGv#bvnzMP5zYHUMA6dcq$u9itiz*frUyLD8Mk~ zR+iGiQab5M7ftP=X}wfakmjnS`)b*d3@6&pNsh2;#_2U9jJhFK<1n{%nA1AI?Hpof z1{j$>R<@Us>0)$sF?+Jiz6`y)ot|x`_cYPF8|axdwJk+zh!w;lq_Qy8?PnNVETt8c zXC!8}#KJ}oeTj)B#!nVV$TA{hiy*y-B|`gYgjr$(l;{y7HZa7{4H*+!^emAM{Suf$ zEd$grbf7~b($ZlPT<3K7ZKwgal%gXw^HdI@)+^F`MFyYP;NhdM7P%Fz9LUt*l|b-{ zVB@N&7<&MkGp?Ejd1opb4$lX-BQUY3A!Z*a*kBd~ry~^O3VMm7chpRv@OAAM4VN1>E(r~2~I8jnF2bs*wkweLr znxI8u;Yh()5+f6xD5;67u*nS}og-!o)`j9-<+X!R^p(~*Uk4(kC_rPLu`gDJc$YW?$IOO zgbY2|8L&k&`tTx32D%&)GfRr@E-QNXu+idjd(LEbj?BSRy0|JAdM6>{f^evZgW1VB zQ1^0G0glSgR{GhhAOsO>LR?J=S6d=5mWwShi8U^^B_xhoiK|}XZjg8ykx9MHQh$dm zm{o=c4ACiTdfDEz*Vla_GI4Kw<@>dVp2=K(ap=+4rhoYM(zAcweDR}$Fa7PrtDl~E z^YgQB{PWBk|2+NrXQy8M^w=N%dhmB2@A=hxyMFfe%#(i{eelJ;i_dl*|6%i0 z8eFgMS*h(>sLjl$+ozK)<5dmArKuiYRhzS{$>>X}9hGuRSfmSZLMR8|Mg@`31KeLY7l%m4!FnMQ zOs6Q>lEJ|2VHg7dibjqCJps5$DjW2qfhR8<8N2r`Q)AtzFhpxUn{S_>wn-q&jatd?s?byz@LKG-eMao z8JZHh8d->@@-fst97yhED&4tAe>M2W!O^ew0@uIB$Hc+rEHzfy)%sXEKV9QxVGq0C zmXhnrc*YP!n&*rlr3vtK0X`}$Jl$K`zYN&10Py>32%>+i4WI+EAU5{q=d^-}KBy6#`vfWg834E* zBswF5W7J?607C+7ZHS`@vDLwx=Uo%vYJ*&Th-(T9?Nt(YTIK^KVI`&sk_9kRP@sjN z1CoWB@nmyO4*&!M8m0aQw1~tD$^nW{vw}zn2sSB#%>;1}ks=_&c!1R3DDgFj-PLGY zd{ZeK7=GO7HOf??cbprTf|Op62*!y57z6Nb=U;{5a51|h-4>6ak_4Bko z4lGWjR(QZP9+t*~t}H|8rpavR_D18PJQ^Pj7w^iad~YY|fAdJ&NsOK7dxpY?1bIx7 z3q}^gkdMSGAoB|$n_Gxp8NpO{tbH!oIfLF2)tR~KE>zB^I_HudGs(`mMEgvT7j@jz2*=k}Eb?BU{&MZ`S&f-;}&UjV_YMf7Z z&ZW^-Q2$JB*;EErl|tL?f(o8Hhju27I%gKrUC5w<`loRpwAxe`tP|SNBAsBwKBGmd z@wU=ku;z3YErnWU(Ay1_)tMR8jy9cYpFx&rovvyctEd|;s~IS%?k!36gwuT$b%XJi z@rJ%#ldH#ihNeRm@rr1wGMWmORfJ>7L|tRNrmnOy7A&g_mX()AD&1bc&R|yS3>vLL ztv2X%CZo}6x4SeNBQk|bFIVXl$dp=*)~GjH^d_rLXI3lqT8+t|x9ANPwZ>$!x@``h z-yik`!X;&uk*Z{KN6*mY!pzFv?xD$GS2^6HkRj-z`w&K^5>=J5XGhYrpx ztS4K?OVdN8wL@j~BcXJEY0W@+(^#~1vZ`ew+B_9)nToYe#oJ~Rt+UBCbeU%0Qlhhs zPFKf#inu79b2XWHbh#7gilb}ShEC300xDC<_NnTQ=|me^!!%k?qHQ|WK3UlWm`Yt; zYh87+K9%fkZ|==B&x{T4*)_kpx@&V~;rRZI1FMTC_N|^fvhT#k%D%v~lJO9|VOIJ=F`tkQ4c>JMz?m2(#;d{oauI*_Vn2*$> z10O1@8^&2610i%N>xN3|M#A+YVN^DZmNuaJXj$V}S<`5^akLa!{V3`HW&H>ku7_%e zOY26UTO%x0)&%{_n$QAAnW#g8}T(2e}BT z0av2W8Sio8R0dZr1)Bn4@mu?T_5QIx{^QhJpI!Rk zt1BM@`Oo=3e}3%Mzis~d{e@@V8omC9uJg~;?|VExe_v$eoG)|0-ne2(Pa6|sx{7{n zd5@+nt19hKmUOC0ISqHjp3h+VZ3XN|;F zBX!qGJ+(4#y%c{{iqYq#yGiP4kp|i&zBZ{pBMJ71L;bSKNo{(MwdY)L;Ror{FLXcl z_SCQbvGnSfE3bXI{L&Y5zx>Y<5b#z2oHKK@(suPo%PngD*}$_1bv=0B!;8{~aLz&uIYM`S#YGTlatX&yCkUU-OD4QtniGrQl|y4%paYHV83 zH7-}qUra3DXKGzjrKU9LDP8T1GBv5Lp3>INs;j4!$w{>Tn(ApqY)qLL!=(RHs8NA= zjWnr=>dnVmjz3dAf7RZ7ykz!T=KPEOSARcr@9+BWd)YX2UXeW^>^#P5J)$`AL-!v( zbo};h`)}X30RV8;I(1byd5?bjnsN3)Nt9{NB91cH`E@ty`-%Zgs!=nfKn`DCQqlj$KucUXc%;mk*xSj-A(y zoRRk&llL4^4Ib5xoK$2Eh#K}t>UT?Omqn>LY4yA_v#(^}sK5Jwsc})8Mu#?QYFIWm zE*t6>HR)MdbXZv0&GELe+|6uvGt=G7FUd%%234tXZS9Pvc3P2`5QKYJ?nb($nlOgF zhUutfI_hZF8mc8tx78wJIqDhqI-0$fYO5hzYN+-GnzM;s(kE)zLLB;eTIqqRAcve5B)TJ=9eYMe(ssO zZt6IZJoXEq0Q&UKsW0w~zWFc1#3ftPE>{zH|9$n7p4xGDdc+IaNB}Vc+?echC%W-d zqQ{%;^(K3~scvtw+n4OEY#vK?&6>mY=xc|KMs^zD5-ApF^H_4K%xo!d@+P~SRh`~= zr$3qXMgarx<2(S6{EY$ak1N^%*Z`3nfaL*{j>-a-Vmq0)oxjucMAZZ2x&qc zM{Y%BArmwJc3>F*5>LsHnhGIxK)jQN3}-{qa)F{bLEtSNV4Q^yRzN3I1H}bI05$NX z5C8zq6~H>csN7Cu0FYQaDXaoI2U$LyozGzB(OEbf0Am2fY!Cq0BKE;S{a75hm_-Qo z?kIvaY^QK`6f<{#asc-J6Pf`ZCeq$kRhQ9wBY|iLo=ZPhO1l^m93_2 z#fDP2N*Z4cCe%;_Y6$b^sS7!(e5QOSpgRP?G8QKQ2uD)DP_Q@}Gh4@JC?HG|eBzjm z1U#PL^rx~h#XorA6p%eHK!a}BRuNO4k9kEX*g1n4DHIeI7GK1yN2Ht*0B}K*nKBAf zQOuARVx`{#mZ%Wi{cMH~sn00cnS$&y0o zDo;V>$*2(i4*&oaQsjXVh{PfA0BJE{n1H2#(2}HZftZBG&%^Qz#ULiEKxdCBF>&NJ zp322ndjwh-!Er(R&BKs7s6r!&gAbD?-hnZmZ6wa!B%t>}mv}q+eZkEyEkK9NRnc-` zojSSzVm%oGJy1UIv~+=<@K*r!KVP@y`bVXa4(>QBU0`7dtxTbXDX_4F$jqo)5nGwh zl;zRoJL$4*RPo(ZQ658zE@A;!LlK%e3Xf1*A~TnZ4PmCjjfT%8fw@R%ED~FaC03FI zD1eHk98m#+t2_-o?cmrB=vs0PKwWnU?s!_W!1(2s&>q=?eDe(S-06;}A5AggH(?o={Z}C<)G652R zPhUbX`=dpQfGknfA01yq9Q9y`Tj=8qLM~d?RWLwgY za?J9NrNwCyp!lbQIBPyjp2wEuapideWxhzAFV*HtGzC&^p+s9CR{sx3A8^nqP+-JQ zP6!}CmJP@tKsE#!JL}0DDW*LVQ`lk}TLK<@R0rV#2?3a(b4TaO>0AY!r)2Wg3@{DW zS=P`6YKA~X2iZwzXYy4n0WN`uS_{V4u=rXQDur6MP=`vEK*tv7SOS=Y77+w`qvsl0 z8%J#9E1hyfiQXBv1nS*o9lj{0%8h{tu&cZk^3x+N&hi#dd8fyMLXCN_zDM4Zs&tJV3vaD3=VX@+$K=ixC$#zj!kAp##dN{Du-C(mKp*w6MEK^NRb(X z5`$l;adYK1j?~N&nOFh?n9zs~GRu-BB$lAol zz%^57B!ph+IVyHN1Y!$Osb^xhEIp@5}gm36q(j5(fGuuL@ipMSdSV}-6Pg{q>yLiK?foRc>|ByT4wSjoh6N-L{~-a zK%#Y`Ix|VE(L)^G;EN<;s0ea~V|W-f*XuIXN1wB24>uX9CZ<`CK? zq1K0tukr|09zHff&RhbOTcC6cH6Fg&4J~R^LFN^L-w-fokuD(A280^FSc}Xj)dwZI zphO=M>w;okNQ6vZA~8lJ#&VIdOl%5EP301EL}ErIw1^C4V$^Pl$gEMhEv~dDRL(Sd zG%G!|>OiA9(4_J;s(eiDMIr@ixoPPDQ^Kbt1!dsssJOAdVr(gf%*sK3I`1`-0(dP0` z-=2N^4%i!*&{^h#f#oDfgWZPs_Bl@-W`(y2nvIc7~t#!ua zrm#rk<0+izMq-LEz9lrm`&DSbBuiSzx)2Z?K{^UwPf#tgj2014_osS+S zS~`FMTR;MOVS_Y~mJl2!6G;QW1%&k*I4YcQgMIfP&kNE5M9eZvczIa92r}phx|C10lg{FW4VydhtEN_tdNDiW+W7;nJTqX zB^HXvM3tE75(`aaVn}R20VH*@6b`!F$xwKx5TS4V&ZwB#pNb>>acI94SD=N834#Do z5TR883_ulGC}Ok~&<3D_5&&A28C58#6k93KZYK%NG@wV+I`;k~aQU_HwRghT-z$CK z?Z!vnxcJsTuD|`)2j2Sl%8YrrH{Ptzwio6 z9b#(2kQ1XRp(}h0RRBEc>HskO5Or;kq4m>MKm^26`xz?e!%$!VK#A&J97>N$pI8_0 znxjIMpQrZ&?TikB%`t_&7ssA^c@Tu|oN0B z3vm5|m~aaY^KZ@x1Na+2Ho(^i`2oHLFx-eqfdB(g1Y49PElSki4_N|IUxUO`2j;Dp z_!=eXlhji$awK`?2%J?ly1{G=g`ElF0e}P`1A->3B7j~0UN*W|fD?E)xkLdUZgis- zRI=6BR6tb4#v%j&4-gfc5WrHom?{sz_Hrj#VlCvWcQVD>$*jBc$#>-!gB4KjMgvIT zu|{mfb{) zca3dk#y8QbG9!Ds#x}Z8=dtz7IBMTOC0ZL=B!lZ+6MMVHk!`{()N=xQcA(BYd&{v3hFH!SijI-i~ZfS5JSsp(PSaR>Z2q6;X#bU~&3vF2BPa zbbEp>cfjfLo6UBu)~wT+l`6efYgB7=YPC+SF={m?mD(Vcs_~>juQMSt>MdrIL$9}J zv}U!&tWX+ECa1;bDT!1?lj&q_OSXS}W@&wVc5QXf2k*JGw7jRiZ?3vyrlw~h(LNJxolJGjH}tPG^es0IEH(BmHw~^d53aQg zt+fvAMrF(3Dp5z)29>qe!PWL*G;6hWcz4?{^lTg6jXUpd89<%E8V6Sz2bSymb~X1S zTWRW=YHVoeY;EdnZSK!>PK^xBjgPG@%{E>$)pS*tM?0sjCJpJgkAN}Crhwi!X$o-eDKXCcc>knMHeE!{(e|+OubQZf<5_Vb_Th#}6GjGBCD?zHL$+ zGu54QvDT?r`&6Q1Dgltv90rr-tGgC3yfmLe@87P4L}or`opXuI94_bMoyg|m9dijl zL>2%{$}Xn6kuBA9FW2-eS9dR^dzWjFbuXv8(d1%HFKSsrvyi2GR?rmNC*eYRleaO(4*jnAdTK&K(D(m{85zVSWo%`2n z`&Uo}SsEGI6TAl4jUK%6>=N2Z*m{=O;$o_6R|0Gy2FE)W??MMS8||E_>X@l)o2qP` zs%o36XqhNScYZUZ;FLE{RyI#opt5DE3R&w6s#LZ>V>!$Pgd^NI28craSP38~qoLZ7 zP~C7@<3vUCG&*(YRMhvcwU6xUo<2ITaB_V2#o2xLE*!pp>F9$?#~xZf_R!MthgVKq zUq12Bu450)9eHr}*dx=Y9-le)ta; zr8d;63ATY3AkeM}cB+FJO-Yx!B&#m%QHKY#l_Q4ujH!OZ-FL2Z{?WRVzv_A9&B>p6pzGD6@1==lqrIuB!k5?7Ey?y4tmLrE}q8 z+uViv$y4$E1L3YczNTH~>PbUlOcxu`#71<9F@0iO8y`2OCbfw%ZEDhxo;B9Y8Efaw z^$VuDc{CY2`2Dq4{@HZuna=%>_8feqZstPG+@-!_kJs;itbEt~mCFw#*B_}n@Ob9@ z&qp5m&FoW<0dV760sy#^g8-m%`{uW|uf6}-`X4`?fBroH03LXy_nzOkpZ-sD$w_s3Rtfbfb$VJ|GowgNDpF&b>M3>2v>LU?C$y<4W8GZU z%EQr>M}iZV9fRj0yRP@%^U~;pe;m5{yS{s0G7Mc1WlwQ?P6=l2GydQ=;kWnCf@s*nS!p4Rwq9xA2u*WJSNwTsJo6|qrG?W`8{ubY#_M|gn_hP{?&GwKnn48E(=hFAm~_{UyQ%>I02ZL?Az#fPBrv7=y^zw>=T7vv zVp(sp+Y|2s0H9?YJ!#G129^SSuDCcF5CJaaY4TWdn#^j6H2Ra>zG#;(nguH3Dq#EZ z5QIPRZeJ|xi)Y-i4tKQOiy;A+mB^@^mEgyx@pl3lJ)e;I-9Z)Z#N<4AQ~?^%pwT@| zs4Zg4KmZB2>4j);!IqgJ1As2sNrkZeJc9fOi`nLH@%!V@eu54NKm|e@0If400!DF) z0On_hsA}x}N0mG(AG^yz^>+u2ok!>HWN>!UI6J5uG`WMy-a%pQfFuCc_9DiX4ltAO z?-QE9pbAh(2hIs1-oJ>6a|HkrAo_2|mAeYDQ~+QG5EQ=+001I^0P6u1fzrUXLUuj` z%L~aYVG)D7lf>Kx?ACNZ2#Rt9L_3Ng37~)>;Aq@*u@O)Q03q1hNx)XLgUre0E08$( zAQ>gtM&_cC6axSi(GCi?0P-#P!1)fWK7#EOVIfmW;i>X-010ONCyRh9rii<(kb^~i zId>IdvUm~?on8t{!4T-#ViSX}MdQAFnj{ZhCamjwcOK*JJnG#A%sh0-I4Y({55boL zErlR*z}!2?7(AdgC&HP56Q3`m@nuxLoWw=LJs{IZmkbhHiHk+W@xDO#ECh^)DQ9q$ z7OqyvgkXFUgz!r-2?U`Y2g-9~Y!r?HZ3qU=SXUqy*N<*pE~c75LtvJI%+67klNhQV90n za!8Wd5>$aGVVn?vwSvV(EI2e!wxjTNqKk-SM++!CbkwK=y7TEG9b0PRDeVG{TcGm_ zA=2N^Ljygf8;x_xJVOCX0jL=I5s`Q~^=VX6xZ9|_?F>O4Qv|w_d=;4w5DP`9r3rNm zFdT`9X(xa{n4>C$+yWI{2yO=wx?Tb`RiL2@_24Cgcz-mkwm_=A*v1gq7(z7KwW4-9 z@R!Q+=#o5|dX_1Tp{$_{KtksZeMw zmN-Zf7fIrw$O2SVh^j7S=*yXwDAShUy6Po?c4^swDmAZf+i&bWZJD^&z31`p`RAH{ z^7ix_e?R%xe_s3i%X>fh>cn5ZoOdI!Vop~vrVS6M zLRpo!Rpo6^d+OBQI<==(gUp@Q0R~X5abXO=lhV2qkOAOMYMcqZJ85tyAPK;e(0Sr| zPu%QFS^a5Lnox_gN@XpT>b+u(12O<)CY}s503@IR;8dG@I&0AA0098ABLW!!7Qfo) zQRtlj0AK?d0O0>Ig9d=yz?bOx5*=Tv=Zb;rm?P4%g&K}X!x3s&d=(S@SOg#dK~6ndouIS+-1t)xTTJ$BF&;rt>Zz#nq~iO9KB08DB^6O-v! z)R(?R3IyalfE^NKCpqx|EFesf0%2icSU&&;EUW{J1OG7yfi(bFIA$6fDJQ8dFQUt_ zv@f9-n`8XXN5+yB@Kps8b-rAeuQujuEd_d8k_!1*eV&I4j9EpJ^ zF>+B|V&sVRSVBR^6YDu5^n^07ggT}`#{`eOo+H$9L^?1uiGEQcJ@l6v_;BS+JoE#T znt2j4D)};G7SzH=b!pf=j=s_3*wTAawrnw^nmcX_L~sxy@ADNXg2 zrU%OEhr_jl7!2qOCA&cYpsK@L+2*b4fUNddCYZ>U;C5G8lRa2#_Qo{!u*w=xn0!)$ zSE~2O^lq8KEjM`NMh}{l8hsL@Ut$hOt>rRzT2|62s~VM8FUae6D_ZxeGKW;?!>H$w ztarbxXG7AxN0MC?b}jNd=XseqUS^8lH6iSt5cZDC1}CJ0BeIbp#l*0DVo)(LARg@z z_jhsITLiVWlB$&4SD~_(X{=$Dr9@>e(U?osrkp8_rE)`w!WdG5m8guUUaBwzRmPCY zP(rjQjX?!Ar7@r~g_MSX(%@Ga1Go}Y8&FG7u1DsV>HQL&7nQg(+E$syR-tuNAyZk) zRhBZTAtcuNg@jWZkOrqv=@Kg4BBe*HM!#O4NaaO!k=i5Ccx4*DRO3Sx5t^m;iM2jd zL9?Kz+AUPLcrqtX>flIiT&bNSu@GKBjm}s7;?wG6ZT0+*?v(nUyY^}L(cT*qm|1|V2)@C72Gu}2?UN?j# zqucEzwFY-oW3N!#%2n0~I!kJMIXZ7@Yq{E5p|(WSmU1*#i_BK3wpD1X73gH5qkulp zQmM3*D=nyhrN)j0Z}0u(`$vEOx6`lu{ru~nUVQ8GE6C8W z^Nr8Xy#C4YKm7IJZ$DiB<)0US^!nHXFZP{zrt83?ZA(|1CQsB39Z2_Y)DLVn4D4$f z+TSz;%s-uzhr6baWTuaFOdRf-JlZpTq#M}`vSZolL)oc=*{K7aBHkt=k(Rog1 z=Ho46k=ov1w9{4AX!Iqtj!LDuRHX5MM6d+(s6iV*V4(5!6utq2@OnCMID(P6dJ0dE zDiqAZMCIwdQvXx{03ZNKL_t(&JoNbjCB*xq7QpQRGXVZ5fCMl}6kzoL13(9^mXLJD z3_@B8rT_w7pxirNL(P!|0l!vGBA821`73c+Ku*p#hYEmhum;ESD|0ynK)|IYW>K-~ z066-&1XmB%FkpjH1;HSMF#y8*4@d)~$Ph6akZqtSW&`^_{(8&NFBavvfUpz?9cu%y zAV-pm)pdk2Aj?DVJWymopQgaO;aL48l8)-TDlflMdnk4!YFNRC;ML z2Mw$H(xgQAKZNsBrB<5ELXlXgXep_cSQQu~3SieiGO>jsvQp58j?~PMVhI7z8-P_& zgl3A^M1u|%vd~BoXqakm={##A5RC4ey$E^=z)Pp z9RQEK64YzCXs*)7#k@3xW1781yn`dzp+t+YRRPH0F$MFu)_z}Y+?gnn*!cz@4V_q} zn<95IAY9!8D!w?+00R8=LAHi49Nn+WO|l54AZ?JVA((#x7_kVTS(ro!{QFyw0O$&E zbs>U22xkfS*ce)1YJ&_=6bN$kkYs?hh5f{y=i=@$%Mj00%C}ZZTq%jCPKLFAw=jSv zMW9KF-Te^tA81s7WjBoh$`17i0z~u~0KX9E3BX*lG_K=zu)fa_y)Cq+9@I;K5*( zg9YgY9yVHo!pV@^8FB|x>0qi{OiTbpM<(~srH*30K93=RFrNb2-T9Qe^2por$afb| zzn4cv14YPLri#qId}8^;#PZ3>l~dzO$Htb9kHh4N@g+3t zVRjR zg7u)Spq^+wYbQ}TzItM8<@or@aai-}sp+-TXs;%hPfV?xoF-O?Hiz~K?Z)cKsoke0 z*6=={`WmccVhwEtt@#)n!V2sX+RxFYW1~yQ#}-lj*!c4C(Z!>qi$_p7GJj}b=0NxO zddJXeWA{RJ$7H;DG|@Iz-@VW^wmGzLcy|5Fp>q$NxOiVjwl|rs4~DDUzHl&95e!9w zr4ffGXtFv@Hjm2_aC!qar^o8>T5L{@)~HnK)WH0s*Xba}-(<3@RYsM{U^H5_I-^>x z*Xv9=tx=`c%auBf)}%K$lxm~d;_`WePM6=|@VVTfaCx$}v1530VR6ra<&A@t@miNJ zWO0|InltUaBNNlpbJJ7%cCX%d>CCmuXD*#RJvG1DH@%UW+}Ad~-Z`<6o!r+ozS%dk zzklukD*I*+49p!Em_Il$dk|Fy=MSL+9Gp9d$^mp9<_`DI9qF4pfF_4_9Uh!N*gt=$ zA2rS%>YG7}zEgfA3Df zAXam?ni-^4i<-ntEo?C}Gcz+wmW39}GRkbn6jMyG9Xl|SNrrc5cV=gj*tfnqa`yM! z%scgbr%qL!qth+x)CcdoFnVU=*xu^wrM-s>IxujM7dB zJ5}_im-nPs_GVP|BcxaKrj_@g2a;aa4MuryYH2UTv~XlAt*j@ltT(-^7otIBJt?K# zDW$!rO)l-ufT+?yMn!*C9|rP&WGGUOkjm zHJDX7luBTR zTHcpJptOfTYDsrWNl#KyXF@@{IlnCtw+Qiht#SEnL@*;RzdgR7JrRv5>Wt5Ci_2>@ z=e5S?Hlr~yIS^Ec%5E`bHioA+gk{u+rq_pOG(_dL#ucNXqhVOn6K_# zZW`Ha9pCAk-s_w>)j74-K6$cj`c&)WUh~8*2mp+3*H4_Rn>k;1{941>-L^B&`fhwP zc>nwHXMddj;x99=|AN}_XMgIu_g%}y*EKtj3g@n844g@5JrPwo6OupZm(lH$(&m}i zY>2PZ##FkS%G|;W-6OD4LU@522qAzXf))d$l0$QW#V9n#EjY(DILAFC$2~a9EjSAq zt|1_efCjjQ=4!(V+(Xe|G^NNLA+*Rnyac^cx<*vEnQGi(>OJDy^r?eBWlNFW=Tny+ z7N39J@agY5p8d7s+21;z{H5{sZ_CcSDOh@tJ$faxdoQzXBdu{ct!Xu*c_pK9HKPUe z0J57`Gn$qXYv!WMMnm%ZJyYA<&2?^Zb(*LeO-zkze4Pujb;^ zTRf86bSZ7xIZ+ z5;t%;ZR(TCt;Y!y*ZmuI^u@;wC3D)mac%CXN6xTE?yzh2pmS!w8Ug@anzWwCmJ`wK zn=a`+ins<@Or6vO0RSTLAIAe~WzlueA6+Ahs>UhvwbJN1iK!0wf@14^>(&FCcKjRG zb>)kJZF^aZ4=Z+FRBgY^TYaJ^S(H?+$-B<0rmpL5zVZ9wcRnw__kHt6?ZP!}^RB-2 zw5EAi)qTeM-0QSI{8;kCyV|!uHvjZf%fEhX{`cFaf4^(Se*gBL-gW%&Q|C`VHUIci z=GTAGt=&_$?aC|Ho$9tVjhn)vIacO4H)oQcGa0zS>ZCTugl1VxJvXR`WlX1eB-7lJ7`jxpPqrwu zL>^VGifd3Ow5Z}6g`s6kV;a>pj;e{Jxx}KDwB+H2w{Zi#e#3RRoJ3M>{R_OjzTI7x#J$-}IqaaPV^#Or@F{qMWh zzrAh$?{`@*|L)RrEnw<)%=%-;hFw|7vbb!;weO1G{5{{P+wKj!PN`$j6Srpn_~Wtv zdOQ8McjaIFLs7ZxlGv$_1dW)%RA`6-B>K$0Om#~2B|eqCr5cJXKFLNh@| z9)x6&k*N>Q(1m889?u9U5zvQaNZbO^Tm4}>(2_lZTFhyF#Ma@E9S#QAveCwbAp#L# z%vsMpOyVB0=b{Y-+C5n@#7FG;*wy%R);}=&A0dOw7;6LkpE58Qn9b%eiDN#(iE zM|KW24icK!#e&L*his3N%I(>N2C@~EZ_fsXVf;YQgXJ8uVdG?f`Ugj8|9OP+pGU|a zTF}wwg*IqtcZpg16}Bw76-9{s{^$IT@07g(QZ6MB|d^Trz`CV({&lJbR|Vo+Tu+(GF2?*q(I+JnY;fWFCNmT8IHa z83+0hX(BRR;=*#`)8*DUx!4Aa@!9~L4v}ys!kqgOdzJ*ee-1ztVUISd6rmj`O@gd0 ziQu3{TU3hBigKV?O4OZ$UlMdjvCJ=eg$7b`-cftrVJwminxJU!2?_xMYs~XuPjKEI zRJvoz#oeDxmf)UQrv6^Emk@(vs+QQST+)>G!6k{68(rR#f*)M)o>CkA2x3BD z0C)%-R8)?d!gi)$5nu}Nd1x3sR~pZS!ElI0Tip)vJ(j`svo^Iqy*!Gi@8(&vH|82)te{B8Y4>eDJ zpL+T0@U>^2y;pRVyB<07uF1nL<}Ro3dSzg_BA`&_l_fExNcD+Qy;)|6m*`^U+8Cua zTB(axYNO=tCIp3tNu`UFyGJNIA`u*QQ7Y7VVPWnh^L$t;-Ms0|4GMJR^p%Q0b zfl@D!dvGPL4k9&6;K&xKc~TdV!d>QURJr=9-2*h*AZL$2M^|6D+9+|-iMtL=;|11)tm#1jfM-j_ME~!}%xy^6=?^V10{zSmbRZOre=n>L z^Z;-jz(JJ&-wIa@*ii{?XDCXrr9cIM4H*J#K$ik_03u}INSnx-j9Ul>01FVvtWt$g zO2QN$<;pF@Dl3JHrP{;F-C(2hvNQPD>HX|LdyTtw^C2<5ncs3gudX%tHup z6H46#GI#XB@MT(_3_WoVp45#eapR+YsXJfhf#EJx=!AG8GDHf!NM#Ty4XBkk8pSGu zSZNSD8jt}!PM%^%Pl=-!YQ;*h0V)KeL=9ePDQeZ;sFgeW$cP>^US$+0^gM-*51HxS zVoiWj8$oCQ7{apA-%bQwNQOsHvU^~%dq5%t0D@D|pGlv{9N*{yznH=RP}qY2fL~0J zk15Y9BFi%@(-@j=0Av`$v%Mog1lSw>!46LI@H4wYiAt!WE=Z{jP`U$D9sx>Mf2E7R z(%oO-=C9BO$lU#99zimFq|!G<9#W);s+Y#K%ToH4*<+3clj@Qgb@?&p@_ALsw7h6c zQ8Fqk92DjEiVOPqxt+Y67I8tlq^Lz!(jqTyP*yf7s~Y6h)zYdeQAL@!xI~bfBS=n{ zm=aV$agLrQXG5g3KGI1S?yL`Y)&bP|2xo%{BT|hHb>SLAgtIQf$s<(l5w3O*Q)|PV zbzy3KxRWl_QA_yBLmb_Mojih_;4m0>hB$(|9Q(?_T^=lV3sRy}x-j%xssWjfSZDN$ zYBV|OB9z)tg?ot1B~a?@FLm~lIS0rz0aDz`oCD>WAO$$MgV3S;0D%hEAh}Dh+%*VI zl)J%MG#6a?Y9Fx^1RnTGPp;g+Qy9219SHHFO{)t+@1Oy$1*3Yc>H|qnC9k2H@>--b+{s{*EM4c}(%sOA_LC_+@ zH{QcLM&oI6F`8U`V)X&ZUZEKQro7PjvWTS0==9q7+$M8QvpE-H0BHM{3`zhUNrfGW zXcL&*0u&ADwP8sWfw4vYQMq2B>AHXm|eXQ;@y1W z-F?jNKJji|ac*AmuHJE|)72|p;~B5pG*`lH4Dk9-GcW!y^yvG}o8L5? ze^I`EKX>XvM(<`y)A7XW$%OKeRH^1N5*!IvD%?L8JlP{TxS-XJD%c z${-RJ6(E6hupG4{La`YO2@v!__6New3Ok0Zgyh!1m10Eqfi_q~th%49%r;&PyqnR`)U&3g(A{|3WdNOgmZ-+5ET%>Fd_^<7P^vw#~=Lu2eARZGxp{? zBLEi=Q5hg`w#VuMWUkY}S-d_OY6Vayq(#_+{I#0IQaH%H4OMIUj`POx`?`f!hV`%9 zmtVTgJ=Pw79B|^9&%zU*xzD0DUInatp$LA@`+Ay~$#5_tSt62Py!lILn?2r2s|>CIX^KjU=&7uJUtN z1%X7Z3iy1O*!%CG^kFHz!Ltu}`bO|aLlU}yrog(jpu`I~^)yT|grTQ_SK5;zHrNSV zEkrsxPhXu{p)o{qT!ZXX-nJ60jlcycanQ|(byyVuvis?BZ$bo^raaIDrXM)*J#pf{ zF9QUGy{Hf^K%GA5kcLA7L=PPY3Fn*gs#_J<~cckAUpv zfrZwg#nz#vwqZcW=yJ#CO8dxi`^akh*lPReD(+uyA6{$)W2Jd;xoKdrX<(^!Xtj0t zMC;HB>O>zpTA`tPHZQ*EhN7S5mCICFCQ-09to6Dy0y z7uQx-Pb@9W&5X}YkIzhxFD=YZPmWEF4iEPA&dp5EO-=RmbT_xO4i1kFj*K?8cGtEI zS2T|m)(w@nOw@GE)^^R+_8hP4nXl_PUfnfU-8om?Jy+Frtg7Q!Ro6U1Wyf4a$4q6{ zd`0J6Mdz{dj#)6e<|@06Rdmi*p!Q(ovFe`r+P;OFzJ;pp`SPw~mEE|%8&KV|P}MVE ziH+*+1!#K~tGX8|yN{#JN?2#EynVI;FOHWwUeg2XRQ13ZG`^;Hv95oqzJIx{e+8kY zZ@Id6skV2yws)znZ@Ctscd-Wb^exr&E+Yf2k7hw<-+^7-yFeIl(avKP=qKu!Eko#> zEAN;qYey~oET~0yQrbFQa)7CVrt!SSvE2HRoZ6wBx?zlw+`7@c`Z3g>Uq6ypH=5rt zo?nmbu>xcxqhTzkZZx}QIK6T(wY)#2v_Gl1C%L3IrK~@#awwyEB)5K|xNWYYd$DHV zMB~Ut%fxp3)*CN{d34|Mb25Tl@V#)Lr_fZ2hys=^HtHXENK?Gn!V?87AZw9mdo) z&y-eUa*J15r(afIKz3hXF2bOB@yw=4(%c;t>arS&?c_Bf~a zxMlX6TGwJawp=s%6funwQ@z+!10MgVTB)g4VyczJ*2`lXPz#X&69faqQ8m(-MtN+b zD!xgT*cRNn6V$rnRk`F+G#AuyDtqxk#rEelJ1_EApJ*C(+y<_CEL1>={`ju#hj$%6ylegEyS9J5>-h0q=UW0l zcD(zsr zm|7en8idg;PRTvS{BiGsacz39Dz;G`)8LrU;*!+voY3MJ*Ca7jvwd<|o@p#Y3PYF7 z_RQe<=ZhmMWHEJ)39U}%R(Vt{KcIl2O`*BQQ#G+hMg^?XY?UbSRs8xlMP^UVI;%264lWE!%h9QGyOk?=x3zB=;v2EY<{l)Te3p3jm8#_wKWCm_aNMQ$Qo!Ov@5$Sm z+AUT3L=;c}{W$+$Z)g7YuI%+c6xA!PNi7~J4cdeneO#3eD1gd!F=g7Q5`A=$&IGzC zI#VGQQz-yCpom;O$ew4T%~w!DxhbPT?VA933?eOhlcb2;Y#fwFsUniV#nnFvE5?I! zUylO-;NlO>GKS^o!?N_??$1P>#;`1}$UI|sj%Q?!HY82t8e~P49I|tOEN}3BqLzEu zjzlMS{U0m(LKpzk{U79O z1MLqmixM>fmSjvO1Ab)CbUaFSzy?$d0J)+qu>5~yP5IcCa+pLtOrinoG3=;^?P!N> z={W13hPn75dH+Kz3c>vIku|UYVRC=!2bKgVA09COPzhf@!36|DxR$g-)(`;r=-?FX zeTe|j<$q*B|Im_-#vHL@*wQ$547LrOjqU-L8c;s8K#QOoAb(^@`tT^_s6Cr5@jzQb zbU(l;1ouP7bpU961O~z(Ylej#+k(QiWr-;~)lmu$N-pdO|i#2W9spbo>9 z{ed;}1CTVJqxOK}pCZKhXDSjVlC`3V(X++Mz;vJkI!gZVC>2e#p-Cv<_je?rO(k6n z$-mfBPi9DIOgY^_MrBHAEHRxWq%!yv8jnijQt50mlS^RM`C_F9toLvP-7uAhrQ^h8hD6O!38-=#pkfw+#3;~yK=wTl?z5z1Vnd34Y6m$D zC>fM!s|(b!bP;D1(P)1J|!-KVFqXq4WLIlha4YdA1F2n<-AoRr}vCyY{#D;O$ntsHZ zany!+)ZW30#6`pG9ne?ZktK0q%iXyO9Y=+rXGq;CLbT0P;g3K78l?oKxh?ujxLeo& z03ZNKL_t)H(6^U<*q(Wa#6CjhSUCvocw&k~PLnAZDkV#SprVWARDqnzM^IvR6B(H; zB|D%!JNzJ)WC8kl4+8-d4?PO_g#wu|9(t+}Ea4FT2PYEOiNbcKahw@E4TI}S=VAlx zvN=vxG|3UN;E+Ate-ov*LSL3k`NsZ+p2PNf}6X45q5X=q@G)k9f8oZLe}AVKwr&PG#z-s$kx! zYF*QI+I!|s*yhuO{Wqysze>OKW#akQVauQSkKHyjp7AJJaZ8_eN$OX}v^j>?Duc^p z{smI6OqnrRqBTpj1piNrToy4 zLb;nj3hDnmi8EJn;Mrgcoj4*Vwh#vZ-h%}2S0|EdLQKJ(? zKnH$*s5PMr2=!fD5FoVuIR-$;08nux0N8Q()<0|c(r_ujfi?i910r#3C>)|b;Qvlx zJ%9r-0PMBL$^N($fJ&$Wz!kAn02nqDECzrDf$h+5D@ABaRNFvQKx9o4S(7C;6p^L9 zz=|ZaCJQaeA`80oC|hAAa4&d@I>3>RO3##iO) zr*idIxdy6S1CZh9=I@AGC$|6QoAvi-HoDOOMk$FB5*$Cd@ znZ}@Gy?=t%FV@v7($zcC1;NYY>K)~VT2GS;f|p6-ZF2FAcJYgG_KDX7r8|ceImb3Q zCwIAKjd~Q#xR=hkR~*+?FX^gRJ*t-6suw+Kmt3mn)s-`<@=0YGdY2kflnf|JdYmiz z)RkS1l^yEJHs{(lr`l#^MXkK3OqN%q%qnm+XSqbCxdtS-`I=ZE|K;yn<25E(SQ|Vl=sVp{vA!%i9aC0`N3B>kon%YHgUxJw)La zBy$arX#Aw;lXW2wpl}UTx&=9UgsHXRE`~@C?^wN`*%*-Q8Jy}JlI|Ok=^v5p7n$RS z+HkM~5F)bzP1*jDS^klz&GCa4b>;+^a*z>d%Jny)@i4_FG{ZY2)exBE8I*Z+0w z)gQ+``%UkiUo~HOU32nr(ebM}!+V*XYiW)1Db*7xl_O~w>E$CCRijze6FIe0*|k$S zH4`~?6Zv&h`3+NrP18lq)5R^bWv%m7or~2SOVu3|W> z4UwspfwB2sVd?1Wtu{m|+(N`^e~!$+61&rdt`r^w)yeGlyi({-EL#m8e+N(kAhDEW zth7wR;>;wh*o?K89qn-#fXqTKTS^K`MS++Ba0h|+ABHJ#0f7QUhH)8z9pgY!7#9H$ z-hAxzKalXnB?3%BbNiqekPr&CJMiXXu!vfL1Ce2Z@!uBYF=T{}(}5%ag9siF(gFlQ z5K#nxlOu>1HIQI>&jm#I{b>@yu!4XvK>iwH!3TvhZA8@u=_MMW2PI&Qp)PR=@CHeHF0y)VT1u+wsp`7G4=neCf0G zRp9wQXewsV*MKC{JBW>JxltXM?PYG_$bDF7(IJ#^QX`cR0hSr51o@8y zNP)-_Jxz`b9a*eZtNmS_{Fzb%q@~OC4A7W0VqzaGPAfCgKvY0a#r*YHMF8s!;B`Q6 zK&qz@z;0^_M3CUk?)C1K3N>30Hz=sg+kogcyLBvGt>&N6jN`f!Q zhpF@?Dh3$X^^XTY6oEm+25=;RU^Jp10J!+^bMRuR12~#6fi@P1fIL&go~dHbWQkX@ z*egj4#Q})~JCMK-FEGXnJrjTk$bh~7Mzi1m@q9x9I>bm2fV4o8z$;ncmBjZ-=6NM? z4Q8%3hV2pzAqvR!hwmZC@IZY4IQ^-(K7c~l?**$twL+{#Usu%9iLwC6feJKLq{G}n z23(J?X9BGd)DY0+p1}Sj)00K6B(9?+ne&UowjUg^x1pjv9xpDt{@C{Q*^SFnEBn){ z`*Z7;W=~w2S-miejP;AConF5%y|zEIesN~wA{cAuXV>>%rpu++s_G!gC%M#9aY%bhqsbK?9ITmtOb)$@2f9*lpG|7Y$6G=5_F%fubjF1VC&SC#I)SFzpKtm=N)A5_Sbv*A=}wS=jiO_q;^**o#hI(QsoT!{t8E>(ormu$)rlL zP|D`;Ib5NDFXZt=Jgx+{BGigS3L#&_Ke!@ zEHn59X*>)Dzfix>_}t>kme!7rmbS^^!TG82g_+6or?$_XIWu$oM9=7Q_vmWh#EIeA zjgi^SiQ~It$M+@{PfaYHnp{3Ty?lBGVdd=1%IWEqGcza7O|PDxLXU3c9C{`bOJ^pR z&rU9%L&oUB>G7qr6D#P{`H28TmXaj{9!u?5)~HKhe@4b^?!Ez=Xj z=uT$G`8;HZD=SMYCwKSO*Vc|5n_HNlUpRgY8N;K4eFJ^t6BAQYlfwi3?Je!q zRkhu{edANple5SA$LAWl#v8h4dL}mpXLko?cZTOr4Ieu-eEjs#{HcMtQ-kxT0QNu$ zzXp$;8aM`R|NN=`*}cBGlLN?@JJmP4*E74Tt!AbGKN;023H$#53=j~muvbKE4q%Ab<7sG&J?vw z=QmI0H%%6{OqX`fSM@E`4y-nfZnjPCc24j0%$@C-J%`XYceZ!tT-Vg;_Q{j2<2%h` zyA8uTbwk^=2&21o6K5M{FEuaUY~Q}$bN2pbj%G31vg(lEJv*{+NQE=={#;-1g|4_UP=ksLbY=94J;m zh|BAU%WaFzX^YEkg*K-xHn%kG2i_2@r%uZ-lYiw?N3_8r~jLqwa z&F_lI>yFOriZ1AhE$oXf=rD&> zTQLz)JQ#siE*OX`8bU@mTxB?-XehF1B&=XCykIc0cqF=PJg#CYwsJDIdM17LV%O6@ zC(qr;8a!Pvaw@j|cx=OB;rN;S>C4F@``I&Bi;mx@TD@Jrd9VHKwM z+rRFFPt|d+vKd3sxJT}=E^kzuJL;S^pib*^Ngr^{8Z@uR{|hmI?ziu{e|p#R<4;|0-!=Z@ZSv#addz;Js^503TvL`V z$%$oul!-x)J`XJ zvr~Mdlext$wL_EC<`~~7GgY#Ea_IV0sxAqE;hDh;EClJ}m_ScmNRq_{icQ zB=F&TwjY2MgP`okS^p3fIAlft*phz8k^un#8@d&VWlQ7O(Am}$2T&9^3R(Xj;qb!; zM@b)8P>zt;44Ib1b406sXhjEw0Bf`k?T`%}Vhm^X?SmumV}4}K zMEf;hjpt$3cqsCQBwrF;N@0MllZ~$Dsn9Y;W7pIkj530SVAib*NTen4VP$8ctjXZ#7?N7$dq)IjP0!8x~RA=N{(9Y zpp>$t5}HUt70Ae38JVXbapiVEzJ&JdVhalYkRA79JILHe#u4oLx3J?|l0cmm0svg4 zJ(PVw&LWiqn!q%k3zZLQz?dalP2wo6=;9+J{$UdLV|#~>p_&JNXAhGEM<^022Q^9P zjy7U^wLeGYLlJq9xNdfA7c2toY{hl45$J4020Mv2S>{Jp1X7eiG^bFSb2!7*XZ0B*^=N2c}$xkX+V)V=~S|;uG!M{UhXrgBM&T-`sPbKGi1hOu}7R(8!OevNpvwXT?{b)=t2G$b5wx$U!{#w zX-$q00|-}Y!yI)H5CecBfCwjDq*`y%7-Q7NXdD0tl{)*1R7Ro9gDY`y5UL3-8IHt7 zsPK?E8J%2x)mQ=8SsUo&?yqq6k~$g0Dy>L?WdI}^t{4XZ5QqQ(gb*-?4QdJMe_;Q| z>HiP|kkEjUp78!-;(92ikzjg#5iSA%_IvyH6#zDb4)D*sK-lk3u>WJqew?;XIY{1r zUmSpa`q;~lbu|dTKi8HDwlx*U0I)dl0rL+m_lti&Wn zLNX&h@jo>B5RDEY7`xqr(DQZn2ttR@sYRXOj#qo2HUuM7jStZ&WZ*<{7~rf6)#$=B z`Y??l+|_`La2F$nAq*Y55S_+wG{D6W;bIJPF-Cx6-P7diWpeX2x%rsfy(8VcBHg`A z7*WuA9~iElQLe^F7szc7bJB*WJc5-TA?O?9s55E24uO@&#-LY z$UOh3e7~qXUsJAkM3z@*npa4&At*tQVF*q%1SWWb%Q)FHD9IR-VhBps2d5Z<({#8B zL2oM1$5rc+It*FEo`o}> z&9tU=(!GA#wRX(4e$=B0Vc4U2(5<1%t+G{9Qs6%*P5tE|>KXR5=SjNGPg{A|- z(!Ikoy~8qmkP(`W3}0l2XQ56s(kl#2K|ey8Cqi(lXGkhx7=u&54o<=Aq@o|h6DuKm z!XbF5J)zC?4o8>E^o`6$Ps7)gq|P_kD@D*EaCO}T;5dBJf7q47l_@x@{B#mERxC;^yDA`(g?u#JrH z!~;7#sVoB7iKs0@ouTHEkeK|ys9gW3Y`@6dfav^y=)&N*5*z@iicYPK%WRI%X)@=v zB;>c73)+(kIuH``TN84d&Do7{S&gxojnNr(QE9cNl$!8_@-TC0Xnb*STwzFDQHU8C zs4WSJFNM}z8XR8|6ki+^UmAq^<8gmnG43ouZHT!H?6{)f*ka;ra9k-G9BeKNNvH@* ztO!r4ib$%ANUDxZu0e=Mu8l~pHl@}_rGthf2o$2==8>zjAn#r)MmBC zW}z)yOMG@qY*tH5W>ZX7Q*0*Kv02SA*)7qiALNeP;`2Mr`Q7ma-R7eHr1G(ps;Tt) z<2mhX1%11vqvvbpZ#1vn>p1ze|KjV>o4=ZR_}kehzdiQ+_wz6QIQQa@6Hk6OaPPae zD{t!do|G@&EEqqR)xDY7vXEXslUg;JS~;9vIg(j5mQgj9T{D?eGnrdAonJqdTQ`wc zJC54Irs>j_x$^d7m7R+<-OKg8YmNPD%>!!<{i`)y$IIJhN}HzhYezE5dXfs-qBCp5 zlFIyJ@(iIV?*0kRUQu$l5P_pFTVVu=U?`w-#;QA@4FHh<2S?CKVk^Pp&vvw9n~*)ZQn1uzScElkJ6L3Dygh=>G01%NeH3ph{+zzG+&KOY_x z0l>QvehCxX&?HcJNMvLjFalv}AexZmAmvD0+3?3w!x1^#(s_sNSr#;DFr!J%H86 znIeQ!_8cb?-^rGX`dzKL8fy-S0obwC=m}8Sa)Muu%vDkNE_NKXCDX~8?Pkewv*hY6 zc>1GkcWVbVlj|&32ME-GeD73!;jmBJuK(Drp!KheTiUp4>E%j!~Ktmg|^myV7eFIJANfsN(Kr-V= z6YCiwqq}p6t8*Y#gkB;c1s)Q{<&gMK$HX!W!s9Q21b>S7z{QXG>!E-EtpM`2*zZgh zYk}%VYT)YQn66PIc>qb`!`6f`G!cC7bXRkI>BKpodq>UCF$uQZFhI z0D#&BA1GM>Z@$k#NC5Kvi3$J^`=!f#K;KyId7vaLBl7*R_aA};SUf;+;O>X|0EG|4 z3H~nt;Elr!@3oEB+3FtCB9y1*=4m5jleSo76R}(Doh!*J060a1o zXNuS>MTBbta2UWWG@8YpiDF}d(9OmK~)5PxJ^cT9*LxHgrjG z^Z4l-Pj@aqT04Jt*D>53!ko^zq@(iQ-rOH_qH$I+q&@S_J#Y% z*hW43cegIw-MWa|3wJj6?_lHZ_Qkt9mps-8xI(HE8g%oEH33Ss zt5oJBmM9TKBAGxa5{sl#v0NmS@%a*wK+5Nf*c=|0BNT9@T&{>K5cBvFK3Bxy@Dcc2 zu|lDCb2B(PdHDE+rDWt6l+~8jG-nl6dj>?f=)K%Mebu_akm$7Xy5`olj=|pEvA+K4 zkFXP(u0wnJ z#>SbO>j-CWZk)Zje)^NO(>G3>x=vtq?~|2N*U?j2J@d)xX@qO5r><|DyS=h^y{&ts zw4k6UH!D3cAwMIvwxqbPy=A1YeP*rU}=}Wt-4{w~gd;Rn$mrmWhc>3(l%B`zsE}h-nU0dGS*w|QGJ9TPrbA5e& zZuZ2=;@XLo!Qp{{;r{-ifsxU%zTUp7irU7e)`6j+-oF06p|PH!iMqDou94-jrL%LJ zR~C1#FP^-Cu&{d_;|Ad5C&vLd7WO`Q-*W>U9^bt&kFaz7*!H!#t!uNJS5P~*b#)eD z;|jvu)|I)z@1{~YDhGxy<7SFv(08NjzhA2bZe{ z7OMxB>xY5szhz>(bM|!a{Mr76{lUeH{l_o%&7bd`JKr;VwtMDu+r(b$*iO^vZvD`9 z&ERI$z((cJM$On>r;L4kRgv+mc&Oh(id(^gex9QlG>ao-1 zJsZWHCkk2@^P1*!8fLTWrVz5~CNpctGOEYYDh5-_`qRn>(#rcY1NTpR001BWNklp+6)k98UWU&3e-86SuvPVjv1NIDLf2NK9E&4ga^a;jEbR*%Hhna5sb0S+VRZV ziHzEbwA!h(nyJ*<+2s29)V32j!{^J^?l)iidhpqwroR2>@!$Qh`1>D@|Mp+wZ~nXU z-tQaEy(wF`TQIzz)47q^vXa@nl-azT-EyL^bF-vxr?hvgq<5pZXFb1TC8upEqw#oh z?M!mbOj6Z!a?LD4O6^>7&0K2TTx!F7O8qfF!(3X^VisDbWg)9=x#0Mfu1EisG<_|1 z@O07e>6p5O*v6%Tk-gI6*TMV0@JY>yJ8ip|-fI9H1OVRs zwDHUT>V5vFmQR0Od+nQ={WoPhFLIY3W*z@Defn1J!rg|G&r+wag|zO3G_D6Wtaw$- z8cU{h1!MZ6aed*0d(Mbk_ONUEpi6qcsdXc^Yfqmy;*{9on9!z-Z$+)6xkVY*EQ@ZC z$2I^(ejGCDRPpu7xJG3{t17iyl`|yI8d78og}0v!ZrKW`UG=G6jqE;Kvi79@)T^4E z&#OaXAO%}`ZzJI4pB`~bGv)ikZ;+HA$Qn0rBfBxq)u$pq;$BYb!d{?RPhbs zh)M^aY^E`drca@1QyhG=g<+-A*jhzgonvA%8XycUVS8uL-Q($Qu{5_Bs%tdW1sQQ< z7n8jvlB6+#;bbB?MM9>(V<<@#Vy6lrJB3r6BgxK@R817!J&xvK2Ivx*hGe=f6}5Knv{r9`pzrO4H$Gf60{u#OXdF8FIGA@2D zt=r^gO^S+VojT72E+Q^6-<5p<0RT-xvwL#AM|_Pw zp++BHZHTWh##HD{#k%NXT~rb1ew*@ik@*Oq2Og0NG60de2*F9^G1*PdehKIWk^$;O z2C~r2%0YRUDnjqZu7Sx!1ppv4OBaIE|HE?)VOfCi9Aj8Erv1q@hG!WKoryxfPPCFj|c!*LTrF*NhP8Vmvs0UKz6_ur0o2o4EH zKZPg)`0#+Yhw$bTo$p~y{kb53@c6$UhJyzXCpcIH)BXT=|A&?|2tQcSAOK*6!vL5I z=&&urhQ_v`vTbQ>3lbCLe=R5w2EYLTwBS*DE?Z%s3e<-&`#%? z0svMN!BG+)ZO70)#gZmG0ud2`B^iV_F-sEXh@Hb>TVV15${-sidY)*rMq#VaCe)rO zx1x#A$Rl>_kFA*>9;N=`2>CyckUy}bp-%yACn-F%4^^Uu&l_}BC1!@Wx?cXIp97N_=lF)eO5j*-3d-TPi9JQxd zkm*)5rZtmo%NE%4Bz6dV1x4aWmpQRi;P>ab$#||3o<_`53t5hQri@P)^Qi(MU8H1) z9jRPUIYmzi-2m`n*>llv*&%!G$F@KK1?t&$5C}ov6SO6_0|o*oGRK+1ai;PJ3LsbT z{tH}a0u2rAqdAT?45=kmbd=2h7!xI7-45^O+ z+^b3-cgjDmE?e_xJY(p*Z0Ne?J#Y)b*md2|a?zt=*FAqln{(VPbzB1hfHq}ltvsky z?w>F7PL~;zrD%(%2LS+yE>@z^Ae?b1%JxZmE#xa0M%={Cf(uJ$E5o%qe z6NbhZtuaJtj8UjZ2I#2*%0RWbW1{6S2 z3J3sTuzuD65Mfhz!XFYB`2ES4{hufZ z0A3(2LHJ`sCmROR+mSmA7S!`i1w17$!(Gj}r2*>e=*u~PxV6F4F^AER=h^59SF_O|4 zDe26VwEyt%j`r}1LI8)mXQYP@g2}_1K%~|uQtKV*j%{}@lN$_+M#J2}Ss&>JZhDxg z^@-N`MteXTqw|YJ(EG<~{bKakMyGUsFdEjoW%!vgeN7p@ky(Bb83B-Zo)r+8xR}fW7`SOjuXbVWn`e;fF`0L@G;flEdQA8$wwr@n1cUZb-aEdWF*$|Yd^EbQu#=3Y$yL!jCp|2VG z!axN>JUZnSlI9D4hA z$f$|StdGyEkIk%$g)271g53~<4w0QvAD2-Jr!wlIGiqb9>fvk#I;@2@vkt8W$ZUvC zN4MQ%M#ye7=QJnew4ysn%4<)|Z%rxeNG@nkE^JFJ>P#u>OfBp{NGWVjEACD&?M*B0 zNiFV4E9pxGqcg3fE48>grKmftq&K~!FRcWff?=tp-KoW0DaGB;Q`(nShA;p-y6Uma zx=FNq%x_yn8?f@BQ#Df;8y9Z1Z$9Wg^L+5io6+0fjNSis;^Ft>kG>yy@SDEd-?m-) zqHgz5#q!Of$^G1(&CHg?%!av)n#uI4(R8#wte!xd&&-{tBw5|ErXk_LmO?w8_h#&b^XiL-3t}%vxQCL*;NB6CG83M z&FDjnNG?NPD$lTVH(#@(-XwDk7K22vfhF>w30%osHI=I-IY0maXcpN@)Y`FCwoH%& zAhR7Q!2S>70rqSs+&bczJOl~Iga9?B62cO}DiY@Z0h%BOpb`QuAVMFQK}ZDu+`eZ7 zA|e6w_nv(Q!QmsbBi#K^D=T1*cYx`X3krH2M1L^2 zwrm9s0BGznMGvq5@xb+O&v&v%Ee`~UKny_WP5~+vcQW?x+e4LrGoc=gxr5Z?1Mfc} z1K@1W)!5@ufj!R&Y%b9KlLhYR#f2g^Mih_wrgy7?3#EQ(5@R$?>|qZ~e0<0R;i~Nf z?uS_JhuH3i9Nhnt>ZAxRiLP66iz*juLLFUw95tR?v4$qqat-mWsjY66$29HdeCA)$ z3`yvdWk?Kkp;79S>l{(84lk5A`SDafSdZ6}CD9=;Bzn5ofMWng=vP260N7w8M!E!Y z{23xWQ|hU63Q?>4$$VG31jhi-{!Qiy?qkRq*U=;fibMwxqZSj(Nc9x#YbJ}K6Wq;k zs3VI#$YM9L!rQlOJY#S-xOAMQ%ceQSD+99l`edpqlItEVHkd{3Cbm;BS!Coo1#z4M z=yFfCqd!CLLzMy@5aD^JD}cVAsxZ>t`|AnOU?RaE!UJfS+~>WbWTxavT@Yot&gBhs0L`b42Vfv<}b=;K62GmZx&3Lx=6o<|e}KuthAc>HlN07n86 zg#$CY0yU#D)0pK1Oa2bt6ho~Q)x{P}6AiTH?6Q5ta{Q?ih4n=*_wPJAfBWg)wMUy5?k??JpFDAHU~ao@c(tZ?wx(;gX>g%`c58O+!qUmB8~eA; z-*|NG?$f)EUM+9zB&23WM92FFNBD zN{L*haMXw;avop844ZBEL_scdMi?;MCvFYxg4_YMm4@Cq^pM8&1#=N4BrH+8hs zw=~o?j1Bb7Pfst-&264oJ$35L=I;43m+qdtcxQM2?wQLE_OCzQzy8_&wMQ4OAK)Uw z4P<BAlJlMMQVDsX`t&0y3Hc<m47Sif+8{lcf~7w>Oeg3GPLMeh+U#MPh&-9HRlJAd!Q z`A=8Q-Ca3zd+GG;#WS}S_HHih-GYe7?hPDcfUv>bHp2DeJ2&9$$xjwe-dx=KWDyTL zwu^9Mb{m2XQ|p(J#(sScCTaRBx<|oPJ!!x@xtKJg`wpO!%G(i z7xw$+&-NZW-!*rpefm`E#9s60ZvF6P?ZA4?z(!^Ndgb6o)yPi$pmpWFi_iWx9 zIQe+!?6dwe&j(IF>D_(UwRXGh_?71Aa}A?=wF8@#J!=&`C(1jQOWPOAIu=UXj+eF_ z!tI*SHF z+d5m`GFR4etgQ7|Mf*Z|+d^6UVrl1MY1dM5$5K(}Qeo#xVfR|mz;5Z(rP{3rU7vh2 z{_@ZB-~I2(AAVT*!@rk*_wSjn{(IozA6hScUAc6xaCkqbV=J?HH3Pi=t9c#kMO~W} zgF6+2yOo2xRYSYw16w6M>j;INYkBP}`5mhT9jk?1YlU6w1s!WeU28=>>j>zI2*v$d z<^4M)eVb+dTa`=KJ0JcrdHPD;;F{rL9BtzZ9j;N@T1AAH|>=hw|wzo|L z{N)E3v$u2RZ#SNNnmKzTs_Rr(^G0yv3Ga$y`l3mF;e@_$+)y;(kvFQ%A9K$h@yH#C z>DZ3#KB>zabxQ7ZO6qV*Y*Qz;p;npD3cmh?7IkvFV^W(UzFCt5{i?(c_wwU8d#?)4 zedXJ^7v6CysCnDJZY`i;D|YB|{_1BH+n-nOy)52&?$LL}ZSWJ9zN^Za{bSz`KlT0Vr-2{e4gL6b@W;2qZ{H5Rd)N2wUDY4|9eL@E>%c{) znk}cQO-03;tZZ3WFrz4&cdlM?DxQ^P45{+Q1G`Qc>sCa`eS-LQL0p?Mx!X`M>0dsp z%N}%2?oubUyQFlwrgdpEdt6f5WzqHgkW#j99@Ch?GNv=VvbX^S;)rsUxzQ=9MV;6r zkFMqitbBiWBN06PdPv13)qKTwvB1q2R_Kx8s1g9{vQy57d zO4fu^T}%{B6w@`AF;!K7(e+pnGO8gUk3y{jAtdW^6AD zWB?}UnF~>0{CDfW-nISZr|$oGm;LI00*^gNKlvnX{l2{N1TS-xnKI%0$b3U&zAh|R8QUk+_Fi(IkiL4hUW#Qy6oP z9KqSgN9?)wEID1^O5&(2DZ)dxFaUL;Ed!OWwq{5U<0^rpWc~sF51EVh0!JyB0tk!! z64Jg<1OQHdt`!ZkS&u?GIRN!oKx_a6hb;)@RV)Gw4tgufM>asH@)5}DLKpy2`w7Y4 z1KJ-T+xftf@_`lh^1s*k{lMbAGVp<~A7=fW^$&*x)erXjqm>C3Ai}@{u!=7p{4u8A z`4DRf93?aD=v+Gnq{&;@F+R2+e|VJg3rPPbqv`1W9o`234%tAy|Hs(-4>ABY1kn)V zs2$smE;?$*w;%yY&S5OMY)Rr;+4GOuaSqu!d~CxyWXVK0Y{Rjn2!I=hrLbkmFf9!K z2pVI}`p|;*i^JsqJWK|Pe_IaP`hg@YH%RXw$I*J~SEz6R^v8Hn&Tc5%?Lgm8u3V*eLoC<%z zaL5V_C=ocIoZ?v?R0fFc7$SR?#2W2P;cLdjTvZ(ODIBq79kFBLmW6t3(G9bt6pozE zQ!zwprdZ7oIWdHebOGAG%j^!E{tOE{>QNi&QCsR!WZ0rloMu6$Tho{%7MslBQw3tG zNKTiis3H}Kub_&QG>M8Pk+GfR0vCzEMI>|)3*E$gcLC3p%T;k10tYIeLl;RH@SK(C z>gYiM{W|(pvWJIo$d+^1mJMGL5*vP%sC)~Gz>+Gmb5N2nO97SZOyxP#xDW}Ta3TF4 zz6of%%~9DfW!5zDd+H=mZa7NeTcX`PQ(?n$q6pj_>U8c9=xnNN}S39AH zomgipHrk22ND^PF+@GolpeO@qPN7VViQyW>@`z;{lGt9E!r(GlbhF&t0Qi42Jn8!)0I{=!&=CWB|FHrvgQH+_Kn8%pmC@M1{!hcY*^v7W%s(Pf0$>O* z`H#qsj(-PfLYo5;9uQLmhyFnf07(CB4=MmKsF28y8UMKiGZmEGkcq5+&;bT1VC?sY z7IOc&RtJFrTtGl3oc=_80FNjvAasCjDS`uo3=u&)s0la-O91~5$O4OT1%Sw!DzPGq zp`}PHNg@lf5dAZClq@_#lO1BKj)>i?HQsifA@;#h)R+WDQYteogPEGiO3VBYV?csu zV1j2*g5E#g5D;e!j57wr8-wDpM?Thwd%y@pJ@IV!wuvbZt;7)(Xz>49oI2 zcDegv93u z#~t|4gW`&TF*B*gKdm`9uQ#MkQ5Ke18j(~HnOqT$4wFz@iDreFOHn^M8<|v2 zP#!{$t>&3EbGlG>&~g@7sqD|L9L%m7%&i>At?WlAs2VD)9Vw_8 z&aWBDtsTm(8O*8f&#msys~OC#9?Yp6%!OG4dDTPt)kA27Y?uY>WTCbijTz3X8%4kb z{gZ`Fb46(P*tuHXzg07KwsG!i+v=T;?FU_Fp7mUQ)%(ep1Gm2Ez4cAU<<~7|pVeXDh2^F{>T|0BMzD>6N2d)sxxPlex8%dG%BI4bue;)2PjBn9OgSE^e7G zX**utu~6N!QrElMG`P_`wAnng(K@o#I=a<7ve`Ja);O?Q)3aFBajc|q65V-bSr2+L zu^Bb!OXVMvZ@@atYJ*AY8Z313<;aW-k(SDLA+yzF4gzKb0!Kgi`bmU~9|r*76i00j zr2tAY$C1p1XaV8$CjtNz)N(*Yz@Dij4nZn_sjy?cj{&^b2ex-m;FNzEQ4?T`*@1uv zh!6uH7=dsAz@CK_gBd@U0$|@gK>>sngGmqrAY=ycLxjJ#H5NueE;(`2u;ZyI;7-+21X{8XlB`JrH$ngay!--<9cm$9;C$fy=WBrHhYOJd zLfscf0#NI0hq+leVx3H?*Lub(Ayqt69oOt%^RU!L001BWNklwnZy*AWc6Tp=jC<;9lYx%NOUQC&RB?AV3hSY%F z`d$o7xxknaiqM@VbY;o(bdeif3KiURoYzm4g7=?bq6bcSV5=vH zXmn(ej!>G#bpU#@SPMk}3SYFt53imnoZQbFIUioJ5L`B)PwiAjHhN|BxhJ%FXZL#~ zw{d;5m8MF4daKYkl`8jUf=?ea@)N=UiUU3$x)S7np@>0&UI*V70btDl!cBjW=?_!9 zSxO(4!k2a6%E!XLDnAGSD6sr5$O3xB#~FL*e321FM)NOe@U z{QvWxRv#R;MSB|usbO~a+Wl9*zVZ00>yN&?`S{CEo_vLH0~wFMy7lC1gxgQQA&gs3 zzant^+1Iz9eS`Y%JpTsScbOQlMYL=JPMN_V}lIW?!EzOAgjEiO6B;N_?F^!Eug z1%$>%#HHt!RF_s%rCZN$eEQ9fmso?g83 zazU&+>G?>^t9~M)TWy9p`P~suBN$(-i@W{ z?Um{CTg&^~%NKVR?p)frac1rO#=`lX<*Vm*?%X_g5a9ex%H*_jS~wex7W^{+1WU;IzKl%KRbPFYHECJysx)^c6xSdX12AnySAaZ zp{b>*rLD24wXM6awyC?Sv8R1_Vd3P>-D^)T+d;T_B|0U6R9>zc2 zzx^DIJeUG=(S=|^n05R4*;~)f;ib;Q;paq)E_C+R)3eY%KYQ~j#xr!SGYB`Ip1Jkx z^o^%`*Pooc@f1Cr-D^*Fu70+C>A}{e`x_VTZSLQLaK-+o>&V72hV9Fbb}v8Lxs1lV z4~krVxPA$u4y)(xE}p(UfAYr6=9S5{i{mFQjVxanTG}62JU6g#eqj0h&@y)YFYga6 zUmRY#IJkJeZ~k2Ov2z_Wr&}iWnnrgTN49E*)@ujWY6do{`Zg*D)~koNn#NDJ&hB>{ zztX#Ub8z$1q3wG^+xG{y?)I(S>{+_jK6jyQ`b_KisphehjU(IjgBx`N2y69&>-7UC z>Uvk|`j+c^m+ShM>-$$~dzTu}Vb20WL*Ghc|1!o(L+>)6Z?ztc??L0yu$6}X6ZM$& z2u(z%8v7BJn+DLU+KGmN6O9Aw4TBp9=!y-)2wU~T+jYa+wIe5M#?I8vU1`~V*!Rgd zQ=k9W@n8PW>hFJ8`R%`!fBnz-um5}K;qTind|ADGuXyxgPRC|u%W7uxN>1x)VdrLP z&sNpYZq3N4`tdUur)!2!)(r1f4eS7hcB|p+Ud`}c_3%l+$ZpN(Ud`w!G^KX@bi>5i z+VNBMW2dW^uD9I#y?OjfPT%SLfjv|0e01IM;;~cBn|Er~Aosuj+|%((pHEzVF@5dT z#LYK5&%giof#d(}{{;bX0ATyqe;s`Fm!8MJ@4ElHrmJ7qoOw~Y{Um?&LH5F@`Ac`( zPCv^#emk!JTtw@3Sks1I^@3N~tY_)8p=iQTIH50qNPxazQeQY0)wvVfyQeQ2SEqJr z(z-OMU7D0G=j0B@q;_?3mpY}>8Fi+0JEe5Gq;|Qb_c*5Zrmj97c=os6$A3v%x)<7h z(!XKTvwFq1VKZXzQqj(f>T_S!p8Klgd9yM}H{%$B&Ia{Mh&QZTr98 zb^iNZ_y4{f{_*X|k8j7`y&e7Ohv9cW4ZeF<@!S6mJ^RM3|B_4NuDWhZUcM$SUzSy^ zDyo(pYgW|N%ZlPTY4(^?-k36b#HnybnLR8{=+tEN2b9hQR~*x34QP_#<~_3dJu-XU zvU;3TI%KhR!q8F&?`(!4o#mOy^3LLg6pJIPWpPakbF(U;SsGc%@y=kl#Z%NKswRr& z8clPHqPa&?U9iXBC4%l2#nQ$i+fEf`?-*w16k_ifN^uOMI7d*NB4`>D!!4TO76aaY z4>QZd%LV`M={N>x-=liJrz6KiQ=5A-HU5xQ78$dA&+=fL$hS=q1H4R=KbdaBMqi^CxQV4NE`)C zsIh0OENP;TAu$=~L~NL1n#kFjB{@O{rjf&hpON7Cp>VNCEEiV>Kve;z`{!C>iW|b+ ze+2W%SWs{nfWon)a*tr+D2aX8&H?A(IayU=R<4C2UdVz98mWVnfnxi=>L5> zKNV-|6Y9Q1dr%PYAwl~?oV9#k1c3E^4^#mTu1Lr3e#S@Oz6aMoCho^$tbu^YlI&o| zfEa)c)#0!mI*aay{EMR`Gypw7meN2Hs1ISuUkFH`i8l1Zwv0oz5E3|I!$MC0eB3mF zHB)3wN6*dSV_W7CTL*LsbOJ1Chpd=~vG?DCEX2xiVjNcC9JX~hgl_CGOl%(bKN5bSAug2$i67BV>^7EjFJ3TSLTg~_#}^K7VGI~vEH z&Lgt~WTt?^6w$d-8e7ca%bc8Dy}dmRMh~7;K@-SmTrq_!wRaHNvJMnYVOPkMT0-7d>hyF~LF?=wTkU=YY&9O<>2AkU4U?z>y(z z!cKoDDo;t`pxv>+mddfRXIj|Mj#yKUT9J-ek&arEENsb^_7oc`-Hz@+LXVUuqKhO< zv4kO!(ZSvCM3*>Gg(?zPM&?NDc_M~fEb)*@bYg{{$PH~oa#{Z648LNUOEg2|!Dov2 zQ~{qMmeB=Dw52HVzmpxMvdkV^E6bf)k%6vU8A;faS>v-2DP)nm|M0 zYJj=`T4ySRf>hS%W1>r}=whp%TL${zWHv0N9a~KkxwGX)uF9K@wqu|GMM1j0#-}BT zJnYcUMWnTt80{rq6sb2&?n_q$P?Z5xRUp+dnBg2jcZp`Y$8iiPe4kudSf!)6U6tJD zoHe1&Uvw$k@TfhbYq{XnaoxM~6Ys7Yo~>7n_2+eEJ0AHbJhG0vrcA11ApqbQUM~+S zllkRKeX^v+B&j|@Vu+XNV&(c+859A;Ds-_5ZM4iCT>lDfBn|^a{OtNCsQ(X20dx^+ zeUvjWhexTkCP%kWnX{izVc<#K9Yii{p~gX=W((CkiHlICm8lI17jH**f3-Fc#{dG9 zE;s<7bQj261cV5%Ov9CEcoNh)vqerU@ct`V0xST)Q_vv*AZHu|0D%05#sv)kaQ!<- zNK7pMOH=>=1CofHx1j?0k1a*~ za{$1~USvfQS&_w7Bn)JbMHUpvQS{e=qqdaltX=%v9#DEdSVJIC7qd?>5!W7 zAK;4zcRb;&Pw);(@D9fA_>e@xeUEy)g3R8*N#L0c2KF0I@bV}61SNU}CU^%X0)mpf zgHwD$l6^x{eX&m;Jouq0;NK5TCEy#D<{O&g3l4o`Bc%I;r~5@@_=TnWg{Jw3X9PrK z_=l$>_@OouPWeZs`9-ArMWT@@-k~YR;6$x|oU1pG$h&w(0TaDA!xM`l5{ux_Tnw4= zXnJBrNJ@2RW>aWRTUbF~c;RqZ*+h8tTxjj_kov{2=CzR4jnK}W(C(eEp54g7(-Fh_ zrqN4rlb7PBub5{pnx`+sO`VAu-7^htg?BB5HckbX^@irOgr-%8Cs#%!Rhp8jA`>f2 z$yHz^RYs;%no_Dvsa2?rO09}ctA^Bgu&bleDov@?rnH(!bO=3_(J9qnBqO8Bl#C`; zqAB3zPlfR?IHfu|ttK|TE+(x8qZWV;Q)|)6v1zqv1vC*~qB1hM+>~4qm5ieWN#!vq zXxYlB#PXQr@@Q;FCs!PFqBa!}lTv|h0AIZfKh?7ExT27lg21Re|Hxdwh)f@XDG0u4 zP#IuE-z)UZ2~Q7<&cX4RqNvpJ*z_uMPMtZYJ|V9$F|R2xzbUDpIXR#3s<)>VwWk!d zr53fO7PqDqx1|-erIn!0Hs~zrOf76nE@(-}ZHUdPi%6*qPb?2lDi2O52}vjoNvaG_ zsR~C=Afq8Ry9pRkb6eu_T7d{Cuf?2;X0<|_*OCM|_>gy>Ufi8l+=Yy^_g?-KWEXd) z7jqm>~M+)nP3hPD-Y7s^NFnt6qLUcllP(PaAFjmkoUf4JZ1pO^@ z#jVFn+m|YOH)@CW8mIP~k6mkCxz)6Jzh(Dv+nHxAXP-BpdfK@4pl112`OM{_!Bcr1 z8`;f^S#@*iRTC-YqbX&>85Lu>)swk3lX2Hb?^0#^TuI}2Zp}bOc^CRX(T5n4SmGO% zqYqAT@riTPN6K7-`6?fd%)o$Z02lQ473ko>_3uQ+gg@ki7=R;%ttMmxepU{E`Tzn% zkN^xQBLMbB91^f+97qD#vE+7`2#6>Su!E$28D{*K+rF0v01|%~hDSo(0C4)-GKsSa z8z>-<+puH=O%MbRerEh9S{BjDu$F+-=D^F3!2;fYdqNuk$Oqvq&6X*~;RF#*pdfSt zpa=k}2k4k1h>l(;)qJTNU+N-MxN=0!mSiZOv;u-4p#_;|&sLKKu4KL&iHCFf1scr$ z??e_jk$Gx+^uh|lzgmhA2vsN|J&EUr1pr(QiU7E35cm~f1|dubggyRFXd;d!VEJG4 zRK+^o)NS3u1AYHFw}N4(;2auHXKyd2Qw2<#fXR?DgdSX%NM%TcD5#98O{cjhTZjW~ zCBD`|z1&olJbbQX^-j&!!H~Bvr5BCwww^!a?HFP&^q>jd9Hcs?#GNj2XGpbl$m`bgo&;+JRu_^!%@4OcWR(fLD-UB@V?5`)n1BBSGH&sSZ_xNCVVW+<@ z9)o^lU#8NRq4c3Cy{SZ;08a<%f2B8}3V_DbRo=7%wE&9Ml|ebG&}^YGMyQVx8{>F}7zb@MSBG8vAPf*EHpYuQ%_3vG z(3l|dOb`<6K!$j}J`T0$Q0SE?^v1dZU?+(5iDJ(Lks(2bI*oBcT`XT`7U#0%?s>qchbfutw8L(=FJrC+s>`=>hMPGhPx;!vCueoo@ z-9Mf#bV2Wb|KAU+KC~cNPGEjs(~<*yzRJ+FR+dXW7PW_|nc<+q=`BF4Z(boSvFzru_E8VcPuzQG4&@H)z1U7r*@UbBJ49fB5FY z-RHZPAFiDGWOC(v@9a*?=xWRGa`)8M=+fEc-5Vz_J-Be|>5T`U-+%Vy(=Wbx{>9h( zS8v87WQ4^g1V+RLM#hIlnmzr)J-{9BYw+@S(|S3(>eMdoE*^R}y{Fp6O{R1b2xT0; zNFb8%MG}!%u24FQB}xuQ=)mUkctQbR!sUt_*gOu02jo9|iAW^n@&$aJKr8|&V5wB0 z*0}ozo8l6(N-FD{I{R{qD?NPz9bMc#Jbi;B(gg9@4x)?@$36f-`s!l<^3mb9zOf>!Lv7T`1H$r&%V0<^s7&w zetGxto7)dx-Fo!$=A#$4AHKNx@Fm~@YEkE_n-8J${Ef$Bv#V7VV?g-yC>Ec=1y&`?QNd8aAxbw$<2jhbH|U(&CN{DOizvu zkIqibF3iu5jg3{+)U|hYx3+av*EH5OwA3`V7F9KO4o`QCE=+G;IeY8*)%&lnKl<{M z&%V0x*_-PRzqtPBiyM!=xc2b%b%aN+q4Uv~H$Fpn1NP%DuYLCV>Z8}!9^v-k7uUc> z<6oinDxQMIUwa49be+c!!ObJs}J8?dxS5CJJIy( z4_>1cFy36n*TR>B@zD9;i|YvJ>JPsl4pDpM;hQUX7BT%A?!WSX1KwOihiJfqS6A-8 zy8PhP<@;Y;zW?gVgD)-vUL)hu{g;>Sze2e9DZ&>Q@4iCVzy0Fet!HOGd3O57V}!G) zz5dy$>yHsm-*|fV=JRv6F>XDB7zU0poWAvZ@5a-etB8)$y zYnR7PTpnG$2sm+RboJ86%Egi8OG8VS1{e1GkDu?EJKH{ex_NxJVPv~uXsdQ$t-61; zs&}=r_e6F7TFuaA)5Ko;%(?Dk7yFm44W76@ymo73rGTI_L23D(e=*J zjrR9wL&HW;3j>HA7(50mz+Aw3=lFKlyr0v)k<|?H zzqxIzgi;hdFEWx%zoX<&8EA*Gf!N}?mwN~yBk@3ETU$iWbAb7=AD+U zdp&2K4DCOky!2w`>dRv{zL>uG<;l;#|M%PfzX|})!Xx zSH7w~^|IpR^Mcg}1eo}D!R>I)Escko;am~Ma(Wi3Wr+m%_!~iC}i>Hl+ zlZJvx)W-FkH20tOESqu3>~qWLb4>?0r}a3c_c&+txMugcX7xFz_iEC5T+!K#K25=7 z@%}eG_kY)U?+=N`KlQ0uGuE8YSFLz8Y{X36DBOKfzyHg&OTR4Mf2~=#6ZYtjCI9ob z{>Ps>e)^&J?T=mme%t=PZ+rj!Zt#bnMt=DB=nwxIef#gew?7ts`*+{n=bFCD&TVI1 zTlO@KTdL|cMb(OP&nuv(K16WXK!REhhLW?S)SrlHz zG^EfyVrechbk|s_OEeJvxJA?4qo{6CG-Low6z52)I+E-dPEtjXog&EUaEdyD;bNk@ zm>4cmOxI|JYZNwO96Zbp`XrVr<#6sVvVdu6GvCD~sck!}7`DMAY!joy?d{ zW?UaPWyB$Mf|9im{>9(h{{61wZ$EYX^Ih7@e`*>|sY}GJN=h;<*)wXSV;r`>a_{A26K%zw#p->LLXCRh$+`a z6%)e0+K4<|B=-JC=B%y4NKPo5fCT=7(=t9?x9vx@nPTzaX4h> zaM%u~RFeogAkHCsjy+pW7iq{`r4?NS1MD48KiVl!`A$|0@nI70Fo|>6o^u#;`oDMj zvmx7>%EJ`^Y+M0ANd9t(Qhup^N|hhL+kfM|5g~7vJ0a(&8Wj|iTl18ZY z9>f3+20-T_2n@h29k!)gQP_42o(+<;ZamWgH^ zhzVQL4r6tJLpDqc5*Kad?AZ$RFv(mwdNPM>nMbUdhb@6?=&%j*unp^|t;11UsK&6c zgEa8N)~pYY(myy%`|t?mV=Ja5nUA)Lz@o!eqK^RlfMkv>g=b6V+EaNnrjWrAv$!G# zS4f8(f4)79V@u`OqL#+Bqx0?QJbNb3p1~#2c@!2D2Y}0xDYj#Z*#d=|R_Enus4h)u ztjiKRsYqNYjVmLu#I_7R*3QKVVX&hFs(L#HX#CoP%&!EEQL-EzS!z2vt*0y}?ti%W?9lR4>$(j~V;Ym|DCWo%Jh>x7gziLX&y;}tuRZs$E&C%Y z<{@j=Asg0V8wXqmfPSI)mQ)ei!rP+<$WhUG&QzWgji;va)D&nnH~`>6=W8fjCwn%i z50V^Iwk)NcgA%ni*sy0qQ9ecB$`E-l#d^9(OBL$S9^8iGVkbZwULyio>PTvWAuY*2?@0TZws8z;yD3b@AvuB-)Ry38{+U9-lzMFm{pZbs8 z4;;Vm+keZa>zY^NIbF$?d+wrJ+QdI3jjEInBE5f5F(unQEEf9Gt>b@D&2x1 z0H88*B<>Dk7YC8Xf$zlTt9c?9q0C*THY#xdz{$hk$=%P{%}?pm0aT{J z`%f1UGQS6;|No}|d_c&9WqUCp4?z(0p2-KawK1^|=wOq1R-pa+KF6QJIS}}TzyQaZ z%(Fe<1tP)*SOFN@HV07wU;(nj7bV01tjRdc0J4rEA^?D3LlW7LP%E~^up$f!Z~pg_(*nXX{KGTQS$`ng$q0zdL^ci>q(uAKKtFeNdVqB*QBlR{%s81;+y8O=NOuL~?0la&cr* zNmO!qWKwB#a%ogjSyWVfD*lO{-xo8{r+>Vck2CL+7H#F2+t=PME!(GWL`Gvoa!pubWn?1ZaIb_6eek4LnNq4vDK)0#>L}EL6Td1t zr6wA?@?+BLqA_C9Yv23yt76ltV^V8k(`usA@EFvlf)SmH03QF?^xC)#!u5~r`q;EO z)MBFfS~MmK23JL=R>Y)M#(;r?3MsH=%=D%Mrul_u1V!b9#N>y^7o(2@-EdrX zU0hB>d|snDuQ4INB?+OR8M6M1+fu>T-=0?7kzU-921Z+2aXS$hNG3KyR;V}r=mZv64Leys)h<`h6`#4m;G3A{djTx zSV_Y~Y2yU4%Nr)k8z)N}#!DK;iyJ0N8YWR&R6mM`jT8dVta0r6hw1sXBl)$XXtn&B z;r!Y$)KgGDo?ky!SU+Bb&@@rpJYC#8Tih~N+P+ZUxl-M?Su?a(J9fTi>SE3Ojk=|q zb<4NvmTpzgU$2t)qNhQXD(-o=WJ+2W?L{F z=uYFgkU459*O>wZcWNpI7U5A-xI_#<4U~Kb&mqw8y|90SE?wegI2F=mXn< z006lA?V%JvffM#|K>$O60jHo7TC5@foQ8@61z-k2AB3rXaCSez6oj4l#QPSm0Kn?L zz=Q~dKL;uQwglZjXa78@cRP=5O(VWxj&h!CUKoeJO}`Q9st*w%yXrRbQC_+0Z{mE zB(4U_0Dw*aQ6&JXzrY%#hTMN#Ltw{qvg143@in&aDX1x$NaN{WdY*n2aPe#Hsn?qI z&z19^$pC$pqjk+`Oz==$2=f&^ot&MiXV=ueV+*(g2jRR)HmH(jP@IvVUGt`VNGzZtj? zsgJf5Xec}lL+rs2xzjMHLOo4vz>>2%sz^%~deA`T7cL&G$D}>-0|Fl+0U!JNfry_8QoX*w;iDoF`QPI`jSpn;L&X4A_f>k)9ldEPADR-4 z_aR~c45crzG66z)7)t?z>@b5^O?99f{2mYqV1m;hlmMW`U_w8zDlrva6cA7LRC>j^ z##WV1oXY81jwu@mN^cVRBsq9Q@N_YJT?|hf!_!6c46%GeEK~^?5>P8NB#4a(Vgq*N z8_Z%%8H5axK0&BA0}+tkO!UiqQ2 zGlA_M#c~d&$i2uCJxSq(|Ar|wU>j~ou@Qf*mM6sA6TNj ziUn2V=oNe6{uj@``u*cCfA{E%-#&ixTkyGKKmKR0e}nP;qu1X*e*K%rZvao;{1yT1 zFMs>w%ilct3bo%Ohu~ zp1>*Sc>-6#?fWTcz_TyEd-~OP*no-8-~0v*hILTqo9~`}3DXbOfkR^Aclhx8$8Wy> z4B_>67{7k->eu&QeEZ3huP)zvar)|`wKKP-SI_rOZ?%oAwhpa!Pi&1XoL$+yzIW-t zg-@Q`eE90&voD{&{^jRieEs6}*IOsgre+t$Ca0OxvXV1$LZZ#Vrs%Nf`0(gtzmRBm zgSSfKCRb|QwZ85;Ph?9~&LXi~Adm4BDyR~6zsC#y}Z*gk)ktH&nyHWn_N-CSFqTbi9b zxq0H;-qywQyIX6^i^pa+*H@3t&yG)wj*gBk9A8{KzA!jA+}hUJ)i+pG*HTnoQ{U2A z*V>a`(NNRYThTN;IDh)$y)SM){^rJK-=Ox^XJ3Ev=*t_Az5;juqc1;!r~tVBZ$1JL zhq%Utz}Kj~`S@!L=(&kIZ$AC{_S0Y9diu?+r(fR!`>Wfy0Oj^mD1X8I-`s||=nx8J zZa+aizr6kAm$!-1nI}Z)%s00l<6C+PSGn~VO^35LAAfoC$=9DeC9e48t@pJo#25tV zfBf}r0&w>0n{bm~;r7d0kG~{t{wA6WgTK7_*_%%uqo3iTD2L7d|u zj&nTt;?g|`37m&wg%{^>-N63sXZv@aU;OmtrB7d7y7&6>{nwWsyuOT#d+6|si}zmc z-+g)R_KQ3ft809xYXV`bdt$qLViWx?_e}0|Pi}WlqMjXuE;NiVCbqjK5q1F+M7z^7zSD!& zoZ9P|I@L3CrW;*!=4|gQ0dyPZyN~VnEL`bcx!Hg6vyrP`%{=_=@t1#D`R1RCU;X3w zoBx@5`scn|-?yImqH^I*!Qfe30dOL-c{QhPy|8nmtarO+nU<;ZtuyCaX7*dA z&oxgWoNb;y*ED^u1$EBtx6WN?o7-T2H+nI%?^I^rPI&dPu$uYe$(&48`iWQT)*O5x#(Lt?^|)qt7OKzY|g86##l6EESik#*-IQck51`whCQ+d0ht5t zS%a=Q1FkuP?s-FQIRh@411{Nv+T3A}?7@(pz0Rk9?|uA-`fK0CPTcaXIT6%;(x++L zyJ0(i`gZBg^Rm+~%WnTF|J%P6{p)T04?p$%@V4(?KMwr+-M|m;2LAPK;K#R^^XJFG zpZ?wR?;mo${EOGdXUfjAil#kP)1IPfTT!zvDO(a3Ey^pF)pctwb*rk{&2sC_uN@@0{EzjcO2vmUDdz9K5sHzPX%$ z0;#E55#QvT+M!NvRmRtgLW`Kj6q~Q8YJTsGz$>kYtIfs)R!>F2Yh9;8f8cB1GU^t`Kp%{j1G}|MN?GexRNaPw)*v1r=9wC*k zP30QWWWE_({~~+e3M=n2W^AV@eNdd%&q?a#q>XS=CurG=;V=IR(#L=Qsq3Hbl3x77 zsc}zJwWg_BV#f85!<#6k4#(!x-jla|$8W03*PJq@V<+#<{o%*se||Upmv}NKHXB*JqkW6iGx-K+R7n-3D$67PJ{{$TQUw=F%DY+r~gq~mNf;u>NXSy8?u9iJ?H^^ zY(cRk@!2Xrj+3u7O>orK0o}%7Yr2IE6YY-(rQ4$M60@n18k5WE5O8)SO{RcrQ?w`g}()cPGS4rV0DCmP=N| z>BN(%5V%q$Q>dT|lw^*CX^t4}_9`cK}M|M33uAECc|YdHTK zyYxOgk-J!^auO)i4iZN+(au4N1s-@GTeCj4VxaFK`ZAy&0ew#_Kw5)ugEsQu*;i1w zPISJ822Oux342J;%kKqp@*t zwsBC~a$V5A(q5#q6QK>J!A@Yb6&dZso^}#1d#Mje;YV@|Bs+!CT%(!VB%V*6G@?!( z*QHDuQs>UQly7)6p79>|BzW$#h_#n7+ppqwUYk~)g-+l1>$&b(dsE z>u@qPDniPoeg#tBY>8K@$dD-3CrI^iQf;gpM1W(k20)bD9iTiQ0t!=jge%;`oxt^P zI$#0PMJja>Dp2~2QtM4>ZG_S_SnA{}QX052cL%YCDRgED932EsJc)})?tudUzK(AG zPVRwD9)V77zDl*1%tQ-J(OOvb$bWYE13+F}K4oc@p9?vNSDC$jr({~rwikO80(6#rbC11VtW0b(C2 z(EHfZc%Xw#;aFj(KaK}*fg=bz_ieG4-->*Y`%gpyaGF0KJNmf?+QK+&0HOjEh%rD* z#$-ffPyhzkKSg3ol>qxcE&{MbAmbtcvJljONkU5!>XceA94!Ry7IH5ew_rPO6DcH~ z6q!hhN+L%klA{y>1@`h;)Vu0JE!qsy;N^ z2&Hy89>E#zfhq0*DXzc*l;jbZsteBW3eWb5%!3MmC`kYJk16tv%J+)Q#Z`6b+Tb)D z)&cem&pfCAh{4jbz-&`&N-l{=ERIMhLTyx134$rH$drJ33L_GVO-W@yMxR_7nN$LF zH}S>c@kQb0qOkbFaC1qRxfs*S6bC1k1|?SprPPL`H;3kQhUWE$myCv0PNSF6h{om6 zmeugC-N^parr~qZ;}>HmFU3t?HcwxPpSm0~elD_aH>`Czv}Q82peHQ7AvB>p)Lb5B zE{{m4h``#jkx7*ii3sJ93FS~0@V-7ED!D2;xr)fs$JzZj!9S%k2G<8bGCsKMD@~A( z59I;}1`z&$D?b|h=+PJ)5~z+&t%^yniOQ%krPV-@L2^|Lk=>tMfm$>RwM2q{bZU9b zL2RHRF0DE?wK6uX3gQHi`;QhxExHHd2GHG>nG#DQ(SwQuhNYnByg(2S$O?$a^b1S# z2}wg=4+#H2rAT^!DKpTN861-vZpIHkr7R}B8W{GofoI>GU6+_wpO^~;0SS4HN%_sm zc`d00%_#*H|=lklU1i#^f}{X4FI`12Yo1{^Lu7;=%hL7+(5Oqi`Y)=OR zLIP<;T^Xgl$jHD&00^0=r>HZdxHGGyH?yP{x80c~U75w5nUMS6flg&WK|ogqR0+Vy z%+el+5R~`jmiOgU^yXFc=T`#lPeJuiQO$5s?NDj`SV`SzVeN2n-FPXu`$r0E!Pj3@ zH&IYKnqNCq2+@L(f|?<4^w$jMRS!W3p=KnvaxkxQIInUfr)oI2dL*|7kXJpNUp+#^ z28tRc3hT!U>nDpFr%Re=OIqhk+m}ka)=GQU%LY%DjhreQJ6$?*rett0zh@_>eJ!JL zA+2U6t!gs0d?c~BKcT2MxwtQ-WFWm_IHPJfr*jUup_j`W# z+;iHHSr;O#A3g=SlSV zy4yLi-!YDiJ!E%`ZMBV|y_-z~r|P;EE8C_^8^-gi1~N)I6Z4zVeI6KBWDn0W1|)m? z#K`rb0xv&~+=n4DQ2AP5*@JIW1;qUs7%&<>^yP|YIGFg9I3{EQAO~{CP@Ka~hz-9V-Zczy&fWWF2O5%d?ifc!6( z3~Fd+I~g@>BWpQ|YNslxMz>pZdUa=B}V^mzFb34J#uV z3Ci#zbo9WZ@}SFL zkp*8v0LC5@Q3Q+P-9;vMiP=?Ra+8@zo<1UPe~Tq9IViU>x}rO-u{EkD%a&*Mj--jL z?n2`cvHoW)MY32o5sQ;^Ve9q`NR zG17S*Z~;LP02EB%fi%g06PVltI(KE5GGoxca-n_q-JXk2ns*;XHY_r@?!%-_LJDJjV$veIrIQ9Xp}GYC&nR6 zfq>%31OO!wBmI9H)=1EE(P@AKR}wdA4EZa>eLgcGq%D)u?xLi9WVW z7LdX-L~(QxTzxcG7sWHg@s05UOM=jh!6yOPP#@rv;HV7XnXw!Ium;5l?HPe3W8UG# zOifroZhKzuMttLBKz@hFnkuxWa*gpELmbU3l%)+9S`tJ)$uu=&Rv4N{ns+Eg=}(qh z@dB+o$IFGOaHT0opvUD+7id{hlQW+F^Fyxa(b0u0LXYCNpMLp11p0sT=-IE{efG;o zAAS2Stk(Yymf?T$?R%eo_wJ|PLIC}f?;d~h%g3L7_xMw+g^>C$A3uliI(R-q{)1>c zqy&)h976L?KmYd0^Me>Yw4eR*0MEaD@)?37UjH48^Qj|V4}-ui)c?7o{qB7@*3tP} zY!J-&6dU3BH>iF8`8V%l-Oy#c_vyE2kjI~WgYf>R-y#oO|EEy9@a`uEg#~w?es$yF zCzsy-aQoWB<-J>DOXs^zo^BdkZ5~+b7&|>QzrT3q#`fj==Wo7u^Zti-AAj=x$Dcp_ z{}4US9*4v)hGfzyJc;=*H-qY^SA3=|11_e|@4o;1-us^eo_ull$rtyYesTZl=MO*p>fZa$w=Ta^Ti2YQkx^EV zS6@+9R#;F~Rx;YxIXm7zHPX8_H?g@qdu3GV4nPuc0a(a4xXmG5fqo?geUrBjmU2|tkXLn6gN8$0t;_}wg>fW){^B3Ov@Ydrm zZomKKjrYEI>%HeUe_WgY)}!aQ-uvvkEkZKmHsJ zdFpU}evlz}{~+!UTvd-T{woOg!)Uh;c(+y4_W_a}Jjfc;!-~0ILy=Ry2e0=%t$Cuyv=+d31moO=g ztM@;?{@~fQ2cKSh_}PsI2%lbm@X56Y&ro~y{wJ63eSGfi4|Z=p*}C@b`o()I`=Ago zw|#T^^o@y)8z~Ba&2JwO3(b|?)ghyvlrT@&bChMG>&f74sBNUt(J8! zmv=8$oLH(ju~OB&TGP8$Kd{+4vfVjxwrBc6|NP~Fg{ysYm--hl4dK~~J#!a(X3lj@ z?{`n_LqvXZuj}M)_r!kB(E?7vh4aP~-ZXxuXJkx#hOyA^I@5ENm#F?H6 z;Fte;`SR7v z*N_Ex@fsPB33&DD`xh@ZzW#Invp;pe|JxJyzH7ezMfLv267!HIJp z6fWLL9K0Cau^ryL9@MbnR|7==_KI0QtQ5efblQ4+%IEl0eD7ZJ;6>l61w+B8p>Pbf z+T3Av&Y&iLL{~VfFC5kt4C@M!J!UF7X*oU_+PzzM=QlMsziqtpoA{Y~_NHzBj$M1h z8Q;3in9=JQ=RVB&_>X0Of6@B#RoAPRJwN==`|lqHe|RAZJ zoz|gFKcUVz;Thk+3oN9WQ-P*m7e~~@Adn5QWMdq~5Jyl)6TG7+x>$-Xn&cHhP=c;6 zP6?#{M0F%V9f3enN08N#B-BkCO;JZvyrRfnQ6#S@hCZIIi=%2$n?yIHP<6>PLki23 z$~UI4Z3S}Qg0`%}z2@?^iW+|UFeh`AncUA#A7!RakaAZ;KK@I`i`PAWdv)TUuTwt$ zhqC#cSIvf^Y=IixL5XZ8MR&-Xw*zJ$_)Wf}sN9riO+`;VnEKs|S*!w}>=Q@;sN$P7 ziS@epT76sJ}h4!p05wf10yV77n*Af%h88q8^d#glPaTg z8om4yNkRiztfNYdIG)OxE;&Ntqu<-!zKND_$QI~=GxdQP7zI$4DJ;tnlCBTU&<3X) zf-;ODnYy5K$PEN%pj~K_uL*J@3*W@()E&`(EcA~tt>f6BE=!k?`Dz?f<_xs;ENrnq zQ~;1b1Ay-~>m+Lg!fj#>dw2F9uc7?>o$ z|4jgZ058U(L;MAV{(poErT`2gzyyrwpY*1ygVhHU?{#*xj&cED;DI&xE(Zd?(C3(g zF$PishYrYpNXR(kdZ71v7#WUb`v<@%fFSx$#^B)eryg~uI@EyONOX51(*@6P@}Rm9 z*fgn`t@3xHh|mKOo~57&HO}q~7dPr5;PxSdq^%pn1;=s0v7KBQ&TeRvhK)vZ2Ax~R zAy*1kkwE_W5#pOiNN*ma9df3lM=JCLhi6C$46z4=?*by9OdOeoK%j7lG!B8r!P8i7 zB&rjh>_ViYOY$JG+=-|g#ti~1g&A&SHUuBh;S?^$Qo_Me_&8wc5#bmzSi#0tP&jgl zr^eSe$S*J`B|WLGx;Qc>#!KhN6>EtsDV`xAFl8i`g2+)2STZ~lL~98Q5uPr@(?ukP zL`GL==xQQeibrFT1<=wk&?VS%Gyy!5QZRvE^rQ)lK)gdZ#+&GUCvsfSE;@SZ){R5a?_olTGIGsXP%wC}m5e9GQ$Q7xNWzfl|Sf%Q#Xo zLnvemL^K}sq41=5ju_A4lQ?|3KqS?AhGp@_FCKaLSH^dLtNrsIR{rw0lfQozd-Xef zdWVO|AV8yWr3$84LE^|Tx?RCB56)p%#$iYZp?iaV#EpK~jqZf!9wTy{DIy%x6UXwz zv%E-bH7xmOdyyf~53zp82e8%14`B)iBM=Lm5RPDa5m??hmX`-p;l}WEqbppgo~~56 z3svSskvdUjE)1m;UFpK~c4nzv*cum>)|snw;^=y}uXA-3aW0R%-DNfS#kq%iCS z!iWY*Vz(?~R8h3xUAJZGxfVG0ZtVW^?AyOCxc}S2`@hL~>z9f9p9fF9=hJ%CRJEhY zo7ZHFc_(yxhBwMWDn$N8LVK>*nl3V9G61Fop&lrJAP3+`03hfhWgrC{A;F3OusVP+ zDS|FkrVqs`06+{tX^vJHqZNh-nI>4I^yQ<^ph(N$tLZ!yovUDQ6&wL103=GYOl|Yj z_$hV%Uitu~##gGch?OS3T*sAYcoH>G0ExVrLKQ=xWC~P{1i*m;Fjr1x0Sgd?DIu{S z`cHy;UPPb?50?K!6a_v|_#Z`p5n$at*|Fpw>HypwEAa_fCg8^$0JcKkp# zLQEgx^=vF3;HVYA{CJG?-$5S)$p8n}Kig4ffOT*b3UD072mjF%CSYfQ`T$3{0M8ZA zbAg~gh&}?4jdxH0@tr{v7;GmT&&fk@3@1EBkRG9`j&O{}WWLUt5Eq{aXM3b;K#W^p ztb0(*e}PV~JqE#u;2Q(9{=TtB-#CXKd5pGbv6witsg7CfjM_+t(__(mK3VoiRS zoG&23>=$Q&Hr~fS-h#>eS}-kNhqSNRKi(%W-h!nTKpP+^$sCwu2?SapK+u5`Y7PRi zv;z8H>$~J}Om_oC4K^bb_WVLUS8e;*{ z`llF!GkijGY!P|3$O6CULVIL^Z%lzbI^PzV@1P9Q2c#NReU?oI#3`GE3~z=F=8^!lK<(xABFKqymyCG){CMImt|A+hLEi$mg2 zTN0WGn!TY3#gKkT0AeDb>`w%~eq@9Kc@ak9pIC~3aTXOr)dFTCBRn3VBpmVzklP3Y zg#e)bk4OQ8r$EsIlsF_{-QtTQ5{e-^g4zTS0|>|T0KyZGMsg0!;OjH;Ndn%Jybgt*MwgzQ?71qRjMI!t93w02|CYasKHTpk*K zJP=bz4glHYQb1fqa6(mBN?lY&V@y_4Y;H?jep_5#Ydiu}0DuCpBL|R>*OZvsl$6_& zl-HV^-;w}oz>V>_4M}-TNse84Ey?+mM`#G78$#fb_p94H<_ENGn0Z<@<*n$K@u%xhW7ZCT82 zoXxD6Osg16D;rKJ9ZD$diOFk^&FhHI?@TG`$tWAhs2Iqq9?q{vho3BLnJj9ZE^L`9 z!BE~YU)i->)4f{TcdD*`qiN_gde&_l+ie@$ZXe(4IJws~arVT-UZl*E7BmA0ScU-7?~oNZs0ko2Jsl)M&|=j91SklQdw`^m3_|%d zEY?qzxzl9s6!1XMAJPL5_s4_*fDXum>L3L=5DY-S4&4rf0icg7P2}o``(si8SkIr9 zY+xauK~D%ct_IJ6l?VhLX!#NlxGJasz;XaMmI}vK;yEfJPlM-b2wYeN zk7s+~9K``#pa62imj6TOpP}$@_?ZfKwgOTDkO1)XpvfpGa3?jmNsv?`bz4d9A*yJ^is^=X3kHZ*+@~JUezoxjnSNA`f zs3sr?Kn%cxr$NuUl9�NOMZ-T6)*1!pZX~y{lsXY_dFnt_q^w@*MC2VIg~})J~QAk!5zW{6OHBBJ-un zd|{=(1bJ*!EJJ`cNmzP-jHv>UFc|=fLnq(>2dV=OwP6xAI7a<%!BmAE+5i@en8-|V zqyf-%iZT8lPy#U0JZ&;tirAVW@k>{RXgo-s~fisPAMr9rv! zfHbLJYVpW!$JRS#Q)lZ}udAbr`NnvWHBn+qmWO1UQfs(A@pN@4x?6ZApcP^nKzW$w zlguzj){f8GrcogAc!Y@X?nK9r*YQ zus=o~z(dqJ_I~)~ga3nvu_gLFcc2@?&TG3LENR z@P{9L;n@7oDLzE6;`0X|esS-^FYkQ-QS5u5QUC$&JC7kKeC5suXK%i@e*W(K>1#vt zd+lTEb$#>oy^Afw>phd(GwWAQox8Jh`ToV*@4fZl!~0L3z5BsukDq=1>F2+^``~F< zY)VjMd{|UMOk!q8RJ=VX!fX$;_#y;Z10rsFO9)JB-$@L(LX9ZHodT{roN=6uB5Eycx8QIVOd*Sds}-) zPuIXe-{{=z($4<*y>r)Z+HLJC8rR_x@)$?|;0oajveqrnaoKvM{f@w5YzSqOYrC zdTem!fGek%Ix;W()z;esky21Tc-~qh*859rz zu@6S|1O89mLR0kc)0+>08t4XecH|g7z4_=fEXWS+TfqNwFyPGx7{kv480{ty_`umQ z&Yx#MQuOE-Rsofq>1`wfoO5-~IUFJD@kPcjL*{)ko{+?=A1XJrDZ8H>WmlIuZaQtJj9s zt_`eR>s!9wy?m`}@oLw?mG;?-tyAZk#&_$6PgnJ=m3J*4?^rBtpRedxtms^M zwbInT-ZFd|{rG|P5R>~SCiYPaRg&nZ(F8E?w2g0}w)5mJLdV!nC)ym}M*Z7I5ze#^ zZ+48F=^Q=XIkI_TH=q7S@kDcxsJA=?Uy4f{~oTtGUKhudi zAU|rMTwuFrVz+B@=fni8(&(Dp@0vc_J#)4Ps{`mpn7hqPo8U?y3{gxp>^Uy%fz`Bv^jaceG-xZ?b8=KrZ2TmU+$c}+%b2hbN))_9H3+V zYWv)kwz;cKtGC+U`Az)DrL5ll^scSoiaGy^`GV1NEvMdYTEE+K_Q}x2r$ZOsAGz}3 z*o{vh0r2#@fBf+B)yr2eUcP+!;?*nEzJm7qmoL`8`BU#lf9!hvo3=aOHr@EL_S|R3 zH=dN7daro((eYF7c3t?WVBv0T?}do=t?-u3poSIS+6CY0d0WM-U(JHGV$P?0#$GXN zubfTl+e;Zb?^iQ#E;;E_K4~eRG!&2Pi^mNm6Z)btWAV7<_=Kf&(o`~OIX+{roHrkz z2_L$ab>`#ZOJ9YK-S%rcAJTc&w{_2F^h)fb-xmG-Rn?1E9WP(?zkJpE@0WewzaDz^ zYV_5skyo#VfB1gj)r-~_uTnnvvti+ptof|GW>Z$ZA*optRV}egXM|Nt@`hE#JuFBckmrn8D(52FPKP(I+biaE1*2X$1E$h(OUX%d;h3pl1PlGw3&JYd z0i`UzB34i-KcZTZ(xFQ4QfKvfCbjXxDpKKA1 zhNO!ns-y6#aDpm~s0hOYLq!D9D;y|*yrRhJ7_v9U^{3r55S{ zsJb|sE|IEDpsM2;di0YZmG6_Qu;o6kOnp63^m?}F^;}L&ZaX!3gqhgK&KPB;o+Re2 zhCKUg=MS&@{_(2&AForN{X^M$(W`P(Rxm>hYokTAl4Coijb{QE9t6(Z^{m*CWK2fQ zJedC7i@D#wp8oTz%1{5{S-GT&Z}Lv4)x=gEEdP%@ZUh;CoBHs{^rw_~3 zhvyk03iM%lhVWcnXpSK)H!!g*DyuFz@x5C@%>l^JC5bGZh z6A%y^;2&>555H0~m8~MPJc%p?>P+UUh-^NSI;)N5&T`JVl-gk*Ay|lW@fnwphXt zikU(&LoB031&z@BNWdvv$;!$mDzR znIaKOBBKdpM79)trd&vTCmhGggMG|{?fl0G_GxKo8CgPj`s^L)_n)B6B87kCDa4DB`0O$x*88 zD9!UIO?i~=b&R2QVyc}O8fUi7nQL<4`?x~_Aduu0LDt4mO{q-3VnIZcB(YbPJ)tUF z)wQ3qp1c#a_gUe4e`x>mAA`UC=g6=A+420ZC6E3$VefPQ;k%Zm^Sa^{O~y%ea-U~p zvn;e)98fB<=SZxXVoRzc0U$yTS^5~UK3Zyw7VD!V21gD6lmNuKaL57Z4srl8eYmGC zTw#EM0EID9Wr|UnqQI{W5-V+d8HfNgKm=Gt<0`0Z1(OFF03uJbTy0Zm{gm1OmEK>W z^_3_sLQjK0uIEX#0I7x}0u2C`K*_}Te;7O^ovVQ8KSxewd!m-YmJ%5fB3(pg06+(r zE+8@l1oV*yaPd?g4srlIHxfu;|C9s3!to%=jnxEjpbh||OmM+$HzLm&(*edp_7J`Y z@*hX^-$CX>WV;=({czl{<^P!8FXq97f8kiHGo~%f{*f~1M@Ar6@(*bP*Z*vylk#1O z0vC+v9~6Kw_J7#)5IEz6P98#MoB*{>9s(zaL696nw+BymOk{CV`W{2y8oFR71K_{B z&0%VDsFx|s+Y+Wh@Cnyg0Ny6#2Y8!8k&WPG3RPRe0p?JRF;tCUKIo(IiO^ajH9i0> zX6t++bk<0{4Iv5{2wJoYjA*SbT5pfhp%#Gl!X_B@Xah2QWA*lE$6kZo(KAMCi_-c; zsm&1zLx@}#DAxtcb)iaQq?aXD>ze}Ki836RH=@XIb6Pag^ z!pMK3^6ilj{r3saMMoKeGJqy1D9soI->lY%Jm087zvv?W==^|~LWt%^=LSY+1x9BF zL}mL$LK_g7;~xP_(fuPc{ZSi{Z4b+|!z%SmOvxa_KO)mN9CqMx z++NaW&uX?ORoa0lKi3|fV-L@^M`YWO5s_n$%<)5GM&|iO=J}%zVCVWrA=}Yno~V5E zqR?glLNxN{_{X4KIlky6M5DuV1ETW+V=zRamz;}5}AO`i%MN<(Jl?&aXasnc<17WTJ0np|g0G%$<;mHHU2?)>h3(Z8W zFPg3pG)rkd!6}x&6mvk5$v@HPmtgcyH25Xx?ePY%6D&c=mY@`SXu4lS76OzDpqGhV zYA|GF(4`iKK=K2!7vYIzVTs2fEdlwDve3kGgy8s+ptzF2=tAG{JX=_{EiBhJJl`Ik z?;BYZ5OX{*t|BzKHY(GR0BDZSYm3Wmi_d9`M{RCPY;IF@R$WYXV@ys%OjccVW*yen zMy6Lsq=BYFcuFN0Y1QE%y#W3LfF46_6mTv93sY=HO>Aa$Y-Vk2R!vN1ZFE*mTxM;2 zR$Ux2AazlffXza=pbG8XYUE%2i9P}>p@g$^wVn8HCqZZjry+?rU> zl2p)|RM?(W)Q;NZqK>rE6KN&gfYRQy<9+Gn{pn?cX%$0hWkV@tgUKcRiG{rh1>LbZ z9Z}is;Ta7fsdb_0wa7qom{Qc0cDy&EaxlMstf*7#g=Tb%2 zN>%Sh^}w0>q3yboBPS^FVRh?KU zZ=Wh{9xtpL$u93rE$)cVZj4B+^ouSq1!rjek`(4hu{MOS@@LDfz~Ro*QMek2{sZIQ zLG+)%_QFc-ltf4gI4bXyAQ*tv=;2uq`p0wvu;@Rs=}-*-2>`n6faRYq#RP<*8UWci z%!a*mPzCUyi#-^y>K{jk_5RqBe@A>@jO7U+0pLbE$P?gbSbf0%$s7Rr4^8Y)9>yes zf2sq(sDUUL?GI==LD1g~m>h*ziNHYuz?Cd;AqzZc==X|_D@D+9WjZ2Le8?3`0Fb%P zB(@V(h~sKJINmsxH=d2f`VoFw{tp7bDm)vjK;&vcE10V$^0Wl5#vLR1aV-3IbFlre zRqn`*^~(SNAOJ~3K~yYQ_>Tt)AO!;SVR_-uAxtGLvE6e1JKN6Z!56=Zx&0gc%7?bo zpV>A)jkx@6*u`&x&m;dA0lOdDHlCW-9_yALnpPj_mLC~6J}~Zm;eYN|6mu$0U~>@% z;Y9u{OOmx=l^v2tQTVdNTCPZselg%U8opnSSI(Ha@{FbPdd&PYOZA4UEYO8-z)O5_ zA}djBBZ}-Ku`fwvr%3EniJc+$WytL`xi3-X<0iJCo+O@Dt_(06V#5P-6T-`Daypx{ zI;xVJl0$Rt=2$PUK(@r}&h~O)D+waC2UmsXsfp;O;;2b{9gzoh07S?EKpKD`&;e-@ zyFnB-;m?ra~V$}br z1w&$Fs(eM}IEha@PanlrM=;e99DR&uP?k2jR2^Mz&1y?-o;yCeo8Nb;bM<=T^!bwh zjkftKnXU62U4+PzB(x?A5PXuL2*8veFeUIUAQHfbWI((lE5I?vihYvMrY^QDsGvQ% zdbsrDE_zDmn3BcTRI+D~PiAAw`i;`D&BTULh9-=yi)HEo3{3>jCyr~5W9Xw9KtmKw zRR*~*)vio$B3J(gdP+HpbHQ`msFI}8wmVP1xb@!itJvb->kmG?cK_q+_n%$A_skJ? zybeo%KgQZ;5KqKHmTw(|CZFAWh`N1@aP#5E$oba8k8Wa{z@m=r1wZTpz^(^q^P{&O ze1!Qw0{^>cDCmQ=A31u0@za41KfZ+-w-7+F789*SBi#RS5UjJ~L^mINbmPHC2je_I zr~B~c{SU9-`{4TB53XXk^3DgB-+p@bt;gHfAFiJV1>o`J3q6zDO?}H19n!;4%+P-}E;#-ey+(};H|eA{UdBqX@T)s>BZ$`jVH<*+RN)3i;kDo);D+d^mcZ4*EcjbH+QVApV`{o z-`=}&^PTq|JpJs>yPv#;-qXA2y?A!x9-5+$uD|o)l{+6?di%-6+wY&h{rKYTC+BY= z6Le$?p=E{Fg90JR@zcu-BMrG+1%LDP~Xwov^YI^YGr9_eeu%n#?1>` z4{n^le{Jvj?$Y(`#fzusAKci!cWvjb^XoS+Y}~qV`tq6iv&&Ok3zOIOH_mOXEKZN_ ztS|1YFD*`tuFX!I-CEn-TwYn2oSU4Q7(2OsYGYw>addQKY<#S}t+V4q*YNmc_rOT^ z!1&nId_!ATNkwB-b5}#pKUrxi=6`bG7F_KGvo-PDT_0SzHn@7NZ|!>DskeGh-RfPx z)4hJDYwdQ&%3H1TS6ikp)Q|5~4Q`fquatHymbA^60%ptG=g{w*nw}N(gQszDy=iEp zacC2vVGtSX4TI|q1E}2qV{oH>V7+l*y=f4&YYhXZKm@pVrM_>izHhZ289kuo+tk0> z*uUC5fUttlGI$E1d2qF50CV;qC<8YQI6P}DgKL=Z?8hrQ*7F9AKz^o-)o;d*FJms#LDgd{r5-T`eNqsZ&yD1%f>hVIQ7jxSHAfB^oM^M zeDJH*b05_#y;DARv8d~Ge*0=p>vCTEYQc$9#a-*={imykx9UfC8^-n<$IsS}?$?d( zq0RacK*QKx)A)V^!pXBuC(kyXJl8aFu5sdA(eudc?7Y`^_I-r@3r~lyJsW-N`Nos){{F*@A6}q;FA+fe z7vldf{`KO;+E;(-{_v0O@BOyv&M)h(eN}nx)6&x)6rOrqu=1#IpKn>1BUnT}7GipRY(x}`ANU$l{!w$TMK^n*RB_@2mb!D{~xc@pZ~+_#8vOA zZDq+KGpU~$+d)t4Rdww7P2crBc}HHhAGD5)$eyFulfh=~B} zDPj|WuXdqJju82HzLz>M$sC@o4^Gzwr|W~#bwTO+;0%38ram~!5Soc#1RJ=3Ou!M8 zX$nP~83Jvf6Ipl&^ii1(dY>ae;?FvSV>rnD9U1^QrqqeVeG?Rb!S71J5&#tbQ4fsI z#}WO9NF@t-fDXtZ2z&rGEcpkPe<1yL!nppA5)R4&P547w|4&$-ctGjnM0(SO4A}xFOd;TyBS~;T`|~Dn{*bX~J4X0} zM*dOY_pl2YnEG9@=)WsQKm<65{vUFtya_b@R1oQPp&W6c9&&+l0Vh1ogUoQJ(A`N4 z9GU4(WVqnzI1;0-aBy3&;!}jU}Y9_+%!Vz+k$Ns7G)V7ZM%M_) zM+jV3ve1dZdjrpU!-H`M?m8B-f9_8IxjXF_u9P<+F+=(v;P&~6@CS!lOa=h&P<2MY zGC-s^fVGL>N}vYx1fB~9Cl9tWCI}1(037Eij^jcUcmP8Hdg}KiFccm% z87w7aDjY081P4Je%dsR8vI1CQK#8M!x>IGYbeStn?o5#$BZ-a?0Zv3QYL8OHN2%f? zRLNnw;wV#n6r%qcCx$lyBmj6O7oNpkWcQHylf1$y+Bljqo#k61jBJsn4$1Rpz3a}H z`mP16yq9_ZH$C6}bMvp?pa16%7ytRgnZLg1{rVrdZ~r=U{;{?FvaxJKlQZp|Jm?wS zE)A^}2OSst7l%(N4K#|hMml`=@4TGi zKc&WBrSnII)XPWcX%t9xJh2AT0S59P7HUN*CLbyQ7y>1Y>q+CtDWC%^1@?col*AO1 zm?G4Y8A1|WNJOCV9eUax6dsPu#ZkHL2MheM#r^~=?vJqmIh>FiAUk-0e#`+l7=Ew> z0EF*h?LWr;4*`9y3kj+LoDT#8uqFR^N1=eDKWO|qSb!X>`yC!v92=b)dV=9l6~=nP zu^bm18i((S=L6S2-m(0j=L(EKd`tltn18SY0RNaf@0bT4asYV#QG)0wS$34JI>yl+ z5g3k$%}1q{LlVn>$+Uhl^?xAO_g;gB*hwFAl-%7jFuPHw7k| zkS8#~=pS#e$LnlydV8GCH&*W(XM{3{M5BL_DKNznoM{QkvV`YZqKhmE6{ge%Q+B(h zWWZ7}Zmpj3shu%bjGK-R846DrGMfzv6~@Q{b7-b1D9s#*kZKM}H6aA1VJ&(IspjBx zOK=*38MPs)mLM>ELekA4$VjyWgQl)eaEdiJ1zt-CvXd=8N;_B_POy`Kizz(a9+n0( z5Sir{mE|9m?H7^hADM|-dl)eDz#xw0`9bJJsi*}zB+U|t`Js9P<9!NFwFQ9$wBzik zwP37J2YrH4%;-IWIf*y;#Ton(41Q?3Vl_T7TAvt=B}#3H^2VU{!C-|}YmGtksrQYC z0|SywLCNsyg5ZT)Lo=)(E}dx$&#^&*B-eAVWev+Tg`^t- zQ_vlv^G`7bru&3sp?BXux+Ea3JUFR3BCReuvmqwCDK57;KDQ+gLX*lv5=w*OiUMK_u)I+|7_mhN0dYlG*+)@ed@({mTybC=YKwy7 zpj;z3t|&CFG&H^>B)&8x0qQnT8=O!S43!N~P7#t&9F$NT9A6ZI`XrPDL3=zb5#%Mp zF{UPvV#b)Aq8)M$8IW&?&Hy7WvmODIoHOb{1Ooa10aSQOMOX?tyfQSYA}p~oB&jMS zsRAJsYthRIPp(3J!c!{4QXP88fQa-O^kO5@Ya=u2qcR(!psjbXBt>U7MQ1ffWi~}* zG(~1Kg{RhqrPKu_RH13~jVrasmiWb$h9p-nAQZOk8XnKZlEim)yy~Hh<6X%Gtx*{@!3m}46Kx90(AW|crWlDP zl+khu)G}^_=6k(d=opqj}-*QPx1hYpM-+ZS2&I# z2WmgskAQrD6srJ`c^s_tm$*7)fw8bY4j_S`KONgk6=P)q;veM!L~d9?fCn8*4>)#F zVEI1;`pM{*rPz@GfZTvXE|?;A!{~ruIR+VimN_JUT|pE0r&0h=3C1%;97ptDs^iG? zc)AcMfQT$73K#u?ccF=KTrG~P_F#KKte>Lg6Ka$iQ@n@5XKz@(SJ8I0#8fksQLNBemDNty8EU1^r!Z{=fV4*$6op> zboaBsz31VVzV<);aroKK!_R*nb?w`zo4*OX_-)|1&ja^93EKL=y#83T`jn!Hz)Ad_ z#X&fp4=>_)`LkCAkN%i`>3Qh%Th_)!SxhxS9zqov*&-DV{e1MGQx$$ZODaJT<}9@1 zWkCdKAWrB{5cw0u{uD_7N$f`u_!0#+lE8;7w9>>jhTKk+S(&Opy4>c*@^a@WhypK~ zSV!fm6)InwIXc3YS{h&8lu=WYTAm)75on2!$&9X4DSEvWo|*zG%39$4$5a7;3rK*q zd`Jlp_!^2L$ggNhpEeX-Js*C2!Y6Z(?^i;Shl#9lEbmaZcPK*@Ojiamyh1qI2(~VY zXGsCN9#~>;Av;3+2Sor7dB>Ch4nqG_2t4<5T;doa1(sy4IS~>7)s8uaD3vKnkcp*o^6bg2WJNsc1i+sS*9eOEsbqX zWEx_qUV&7pFS^y=boO||3GYJUqmOw(!@!jX&-QLUK7HjO1OczVw~N|qkM^#=yLa>5 z-5c+MaRbB6cd-ECduMOHd-leobEv)k=zPTjR^;XEv@ZZeKsO|JLr6`)98|Jb&ZS^}Fxiy!Yht z&HLHK6){N}e!-#pI!uK}Y}N z>$HaKg5r+e{-*X5(Q(N}i=W15^S1bFeZ#{Ovf@$-a*LY_kJpsdRF_v*mz6ghFR!g@ zsH?57Yia4|>KzyvpITViSY6+}c>V6%_dmFB^WBY$54Nv7+PV4=faV8H&eaEJV1Dkd zpMU4nxpz*Te`oX3{WF*Do;rJLX5(T_U2|SeMn!R9b4_Jab#+H`(@_73xryP``I*h- znd|4a-noAM=7p_$S9jh%zj^ue+=b2g8+%J{U)p%<+{W(m#O1A}>pLswR;PBCrcW(Q zZmlh>FVCM@om*R+nHd`%AM9IQoZa8q7#kWI9UhsUoLO30URhb0IypHtIo&@nJUBQ! zJ~iFg*;Uij-qADA)Y{$L-rF-WR@c#6*4W=Xv^;tG#@fYur!T*|cK+V#xp!92-&r~L z&Kkn`y9lQ)-d(?V4`Jit{f*1_HZR`aynG+My3>Gr&|ZFU`XaV@@xkUrn1s_8@13~} zdp7~7|AW&o8>oE%hhIGK!zLQ);$0Z|BG&WLgAK>Xj#FHIfH_g0`{>?7eKs5;fD_xq z4&1nKfAhjUH1nv>=7qbP*wwB>|GSt647jjMcfkYgJ=i>dck}!m?Cj_T!dtfSqrHCN z4jg^~v(Mc*b?y!teC_O=wf(nO_iium-&xwbwX}O{argGp-t9GbyYHea-$J*<^~bx{ z-`~CQ{?7IHcCNpRaOUc}>lYs^pS`=VduR6a&52XjPp(}XUA;EAe6?@+O3(6@?v)$e zYqxt(-|O3X)VKGfcklh~oyQ$#9=5IBX_~)LH+iXIV5_uiwX|cQxMjAWX}Y+1s<>$q zwWTdHrEN21P!=#>fqw9GEFc_jpMxb7$Y`5KMrqp|C^ogtm$l9wZ=ESeyIMhM2_1O6 zWu^?;=`w`Y>5BH*s?IrtijEmHT4m>4W&3nx$4phnY-QVYc{`w@eWtu^7PY8PW%~^D z@0hFXoUJ~wP}{Xw-L+8Dy;9x1T-Ci?)4PgL+qYKNzh2wFQ9HO*ck*28(v9x3k4Nu* zx$yDt*T4PS*02Ay^_zd4{?$JhzWCe7d%rtz^?Ci;{fhC+#ocEL+Sl^iR`c6d3OmCTd(hs^ivG>A{?p|HXUYdR%LWimA0OC+&4KNT zfgRMA5A9dY-srgho5Yc;IsNA{PMi)dpYtzU$Q?dkvv8ww=}y!7!;Y>5{JP=JFUv1J zFW&vA=*$PXE01y(ALK3HZ#nxx&cfZOzKdZUyP>Vy{!ORsb&I|=i+(jrzST>%>LqK{ zqP=?2UNxWCzn?yGDY$XjRyl30nDwccHI>gG7|W;4m9suI^FH+})}~YD`ZasYY5%q} z0d3pXyzz{va+O~^C#_sm)vtQhEqhii$c|4-^2UT&1EP#R zOXXZ#?|$m=h4A(>L5&;M+7Yd#ui*J-f)^Gz$IRVAuh+0*0 zyEc13liRP!>Ge!(<_4A0Z8;2|ESf2utWP5Ak|>5`iZPL-izn$5P)jky6V=gpRTNGY z>7fe8dqt7Ff#HX$jwY+4N!W^h5cu_qqQlbuSQ^^Y#uB|i{+Fx)79dCfs3XW;;lSXh ziK1#_sM-7BmIU${J%rWLcABPSw z6DkY{EGMWKV1ZCDumCZfAooBA<{uXVgy!8Knt#X*mj5Fl1LFd6BnC*1urGw{9l$hT ze`5Ck#W9Bf014CMC1b|_rTd3W02aq59de;K5&(x?D3Ct@kPf+G%s)^EKsxN?h~1Na zR005MAk-NMd_1Vm1Ska{QrI3urYnx_PN2KEQ=L7iM7E47Ft`xJM_lMXKSqAz80AeT z$}f&$$q67MLg%F&bz>kL!?BzlRP{uj3!djr;=7Z11iFaKlu+1WGD|?9vGHW487`g(32$@DwzjipoWg8(uWNnl9AQcv=bv`IRh@mt5&%Hb>fRF;;7o#S&?=CiqyB zbmn-OcL+ynp$qgBu7)bm(FBkNAhQt^5{9Rit|n1s1d50Ni<;RU=p`^j6i|%QFofPz zfj3pCrU)PbKx8WjEV&0$>P8d0QpGM5u`5~PL=+q%vJc~dU<%=o2lMBy)c=7u6tXht zjsDqD{Qo!?|32dJ-$y$J3X8ztkvV)wqKL#SiIgptutY+ZK*$t` z*dh^=FQ9P+be@3D7t)0yu3REg$W&%|LJhTV=kUbspUpn}e`h{9GIj5bj4q01CiVsVfCdulOiYbci50MBpDL@Q)A#hY7;NM9~qV@Gx0;ge>QdBJcnJAOJ~3 zK~y?Ql^>;h9c8GY0)UPs0GJvlw$6oXbP@P?$N~teaFQmDZp`HPmx!ZVWog5nh4b3x zUEA30h`o=iKK=9h-@d>9!^`)-fAQYGUOf2z)#hJbRzLYu%$ZMo`)--5w+;CV-YLV1 z*iLD9gE+8E>{leVW=m5#DIi z9N}$5Efi9C8ADYD)P{Q*!qvt|wK+;_j@DXZHTHP5U$QzV!z(P$JNCFHxkj7btj%gu zXSJ#`n!OV%y`qa%q1j$g+>qey6RWYsprh12F&b-(+8X0+i}UsYLt~HA*kjOMwKZDp z6OCGLpD2wzT5XGl){gv98f%o!9t9N@SSbcFG}cJ1JxXnjR3jVpv_|ReF-HGbU~>ve zG6yGF!?3hRaFS1OqS-&*;2&r3i_uvR2GKa+69wn;0UPrp8(N(;+5v|Lb?~-CXdRoD zNR1^zZHYirgyuwL4D&LDDGgyteW<54SfLG3=z`_yK$$u~t_f6VgFJNrIUq!#4@K}Y z!Ss3|SR%bGkzVE~m=hZUnxc3IbiVOAzj(c0g4Q=4Lju4a?`@4yS)&!^NClcGdm_34 zEFsyz0Tovolvo*_RvVSofDoJAh;jbFGWpo-W(a?0)<>q-g{4*nC6ookmiosO+aq%= zp&5{dfeZ&EUCbe9v@D;nOrOv!OK7G~Se6gEokFv$a4RAMA;S`qVGql;hh^D90cbDU zM7w-KGwhJD$ijAIqSh}03O*p25uWWEk>?wpV++smkIKhtJD?4UE)0n)363iXj4KL^ zg#<%zTxm#rX;6GI+6;^-3K9w$AA8&{rqnmO#2#5>izu*! z=9xg2Bi|I7YYETyi!BRDs*1{LOe#2$Ue=#mGm>9F4gvs8Q^n}Hw0*v`W2K}EJ-_Xj zk6o#lyjC^yR^7s#`lZ_qb2l4jt~XC!Y?-*wGQQV5w%0PY(>Su#KDN^_zTGyu)jD#f zW#}|Q)4)b!|5{DgLRs5XQNwsnql`OhaLd10I7(e7_7pyg0ac~y269uNC0?x&}CR1 zfZUM)z+s#2R4I-wb!Y_x;SUYI$ibk?F@k0k&wh9A|B!F?4Z0N7}vGz6Z`gQvk`TtJR&fg{{c z;6kdvovm_%h5xD_l>=Z^z6;aKm8C|%Q^h4GeXsx4eCD}!^;z`QZ|gt!{m{pM=za97 zz7PM{_2D0y?tgdu-mjw0e;&B^Jn-C?f#<&ozw&L=)o-G&er><-rDov~NfzKH_H*|P zC5f!^^rrCh9|f+x6LbD){Psb9Q70SSH|BSNK%Ib`&!i+Ks(~HDaT{Im%(tAa6jqyAq@+5c$WZIG| zG*QI@OM<{BnPX1iS`zr?M4kl}`#YBWJM@7e;%`KV=a~{g6#)5t645wlWS$|GYlvZK zBiZ_BK1LIy2+0gBZVN5$;22{07RV*gy~A^Qmh0v(X0^|IMHF*=QbfKPTx$x~7%MQw z;aQ%Cobhiu6VYdiz*1JUpFDl#-onn!*)!J`w{I-&+*~|!ePQdy;`a6VGuP&~t}kp~ zTim*~w0(VP_xjS#jpdyiOWQY=wyv-4+*sYdzTyCK?%setTi3w9i#!O|mQlNV!_ltn zUSHn6hWXL4*H^*+pAO60uopSkc5kfiVBNN^Fa0$B9{5oQ7-1WBp>}x-j#}Bhxx9U2 zdFvXS0vj1dgX=`E;`-v5tLRb}0oUd?ub`I(uWs|o?E2-2-!dtw@l>L z4yBiOXH@j$)ee=mOg8o|b&sDJoZA~;K0mQ~VRrNC^7c)1J*Upz+PQr1=G~{;=dVP^ zr3Qw_`S^wV2ge45#Q6G$S!}^p-yoZRh)+O>Z%CMLK&V!4^->vBUOG=DdWcneda1=y zPrg7b5Qt<_xqvTZF*!6EgUjLy1!5sz#N+Z=EDnRlWHH%XCRZeY!~m5FgRBKRGeCcxr3^)b{xs?>yeRcz1g9+QRm&na%678&}c0zqE66ZtKR( z>Fbm0*G{fqomjs%wSM*F>iN;-{jTA~qN1YQ%(SY~;?~-l@`A#Smd1&({)L(0`I)he zrI~AIPv5R*jEtU~n3_2` zIel_wv97hdvc9#kv$wXfy|(E@_t43*x~{Z>rizYG$y1k3 zu3bF2cH!jO<%v_5CQn^PnA*5JvvFl+<0``J>1%VRuc3Bk^XlB@HH2A&4b)ymvw<*= zeHLaq$* z73}aE(;L^O(IK1H(SXR9-nato<~6KE{%cq_)EWFU&>3C)rP<9ZbLcX#SAjg}sHt`I z(k{Wv*>qgP!68!{*o$>s>L%u2zcPg;VeQhy>ZQq5Xiu(Q7+<+CwsLWD?J_zwy2yp? zx0ZKrubz8n?d;w4^N`Y5zi@Z$+&jyAZ_fki|E6dNhL^7lEM4wdxO`&qa_8ce zu9X{Ir|xubJ?uUEr0>#4{Z~I3xb|t^<&V40e{^E+N%Pvhn(1rh!+Ry&r;1wV@*5{| z>qhesYDaTxMzd>1bE-%3>&6P|#|!F4bE}bmEVpJXr)DIt4%(dR;q2;>?CRkhtS8z$ zXluZqQ#FK;T{)ang*J!Lm<4s?`L!b;`&2hpST~kmJBm0Ks z#^I2<(c*^5;>L+0gr=#&=1Ip&j^ei2;?}w1_Qj(1rJ|12;{#`^XD+wzy*qmEtHn?M zc>34>Jokt1&;9ZH-QRz|`prK^pZvc2t*`3VA08jORMdSYw{Yg(w&k4mmAsC% z{Py+yj`jSmt)j_m9S?sWH*`6x|9pDqnc%Xyfbxahp|i&)FBeVUs9C+&wDF*2^I_ZG z;}aJ@=)L;s!h7HR`QI~_N`sE*DhPDm#j6*)|w@I zEy7~Lz<%2J<&fqTTh*+sdd^z2V5tU}YZol_%l76|zHO)NZCk!=+kWjkLG3$%O=m21 z8@9o#neY9+_8+gCU%Wi=8sh#vFJAY(em(U1^~u*Sr(eIEdi`?Z^{dvu{t*A}uMDRi zX-2La2Cf@fktR2q(2qk~!$tu$nq@ zIb-xvZ1+x3^IBNPR$$AfxpK*HeAZk!rz;xO;4aw1mVab4yEMr)%Av8BAsXQ{XUTKXd3iK3#o-9Pa1~tx9=@F6u$M#m)5+L*+ zl5Ka6eQ4Km-=@ z0YKvK!NM`5RDm~vC37b6Q6Eg^myMndNL-Z*S$G)J{&jMwxe_=>J(v*XC$b&+0OUCa zj6f_97{E4<;t!aA4nV;22XHQiGXagmI)-ClEB%RB=$~@LoqX7hbi|!>7!m-4L++$E z-LMJ(S6Jf@2>_P^DPRZnKg5Dvh#2X=gAs@b%>FKv|0DKGa%2Utb>*1YuM0-JgT?ew zi)969ux#9wiUs`W26kR|9|I!fXm zCOFDa7>C^Hzi=V{!qxG90lm-9juQU+F#f-f;D2`1{b2e35#rB}fZFrVf%ymjvty7R z_}LKx+WW>~kE2J4M~;#XA0@nb825{#xFgO)XIF}o8+wC?E*=zjGK;|AQbE*L$Pn^b zA|YEWWFd(7bRL(+VNwok@aY1l~~y-LeqgbZ5Qc!G06Zg&Y7;c!VTEI7Ad2 zCJGMWz;l!=IZ9O?qkA8tc^#vvoS7O|j?R^5au-?g@<5_0f}%}eTCzBS$3-#ivW!vB zk|llnIsch^@z=iS`0gK9{{8Zk7e9Rd!;8<;sCe ziUmag6qba<6cHFg9I*fMi3}lu4haBv3J+7);CfJb9vJ7`4)18_Zv_4BakKhLqo z-=X?@5W6QiN&y@azK%=)w%DJ@`HAWW1OPzz7bJoYIDc>~S3JkfK@)_n@jsCNb%+6A zH34p*E5O3!g5lVMBmtI(03`rS3;+g!=sy?zT|##qQ~-Ezop3y751xw$v`+3kXB@}L z9fJo39QP;=-CDduc>aH32@?cNJb@1>6qXR?5p14{1s)YPp-LtnIlWK^CJ-$tSpp^W z0p(>iTdZb@02~Cdh9lN;BpNQzGwC@%Ij!YlfhW{*kVlG~dahKD_VUDfp4350jowQ= zS7zc$4IJz!wAbNBJvmq(mPmu{52g^pF?@v|NK2dJynRy*fmz0&EcErM4@lDmq-gvT zHGT;?|0Dy%WHYU>7(CxMs?Zi$V8i%-Y!SIWVcDjTOhXWS%c9m0m}!DF;1CkEhUfZ( zW?Dkhi~$Kc-)M~`Tx|+g8$-NJ!74+5moW%Ir9*dNpi&bc*Z9eGelo3}9Nm-}Ur!w} z{N>s}xh_bm4v=Xeel7KevI&{DuT%w)sQknVKas*$tn`zrkl$af4wPzwr224)DN1aP z6$?4yRNXAk!jGz=5p~kf9EG^5SgbEw_ zOCeJEiM;$oN;@2NFpj?z8(e}-CYl_nHbkn0sgP)3PT=K38zR?+pvgf_ktRs!9VpR- zDvZ%;TapoOm3;r$lAy$ju+-{E$2#}y#<;wLI)K>R=BSK@sPwvs)au~GGXJ;|-{?Yg z&lm$!wY~`&TdcPw+8awkU|E@1wJlC#kJq5q7N@nwX>EyGd!icB5(#P>>Yt#o#;cLv z9;*@r2N+Ctoo3oGT-QYOK65JAX()TBh`fo z)qxyO8$)cSqTk{?Es3kagCu}A2^P6~K?xql3q-*9_y}0&pU6~!{Zon_E8@d3up$6# z$v>VB;=mr5EHKak{g@BHxPUNK0J_W#Tlnumg9-qT1CaoT@&oM;6+9kvP!w>*;{I42 z07eG{s=@~;0XJa(hoC?DZ2@ci4`Tg*gH0;>hC4_exM2K0Ze)=QnNMQMvCuyx0C+Nk z8<}&&oeFC8B+&BmV9I}7{_ln7dUg)>8Sj3$qY$tcdNbV0WYTjS2r5e1kS z09S)W|Fw9a12Q5fS!lwu)Hs@ws|=Ew2@?l4$8!v^s58eH ziwQCOYB*)UN2GO5%7`o|v3Fb9H3t+|c~)=+ge!;@Q#py^;Cdk-6QWxt*c;o#8pa z2r?Ehdwv%Ibr_!89-iGAncW(m+ZsYP)(sg$vpYjGXxH}O46?U}X0`^W&!83o^~YN9 zgFSo3(Gy0S-x)z?nZ-68nA;vjC!IyW2A{{SVGcHjrng3CpwH+mItsg(**!Qr@}O5S zhaCl*yXazuXOL%iWOiq8W@}((dvJPZaOzC&1TcfQ4xOs$nk#7>%dYH8EA31uXp7Hp zO)6^7tmr9iI$7Vn*gCj&Vr=uo$<3~bGd)w=Lv!d=?@g{;Slzzz_Jb!4tvzXZC9$bF zacS8}89C8OsX>vkAOh?cj9R~-aNmG1y~(c98ojj!wbrCisXZ0mUfu?kw^kzclt`oi zu|zBsi^UQF6a?_uOfEt-a#Re<#o-+tLl(p z^6@kKh8pc*w!k>Q@Px?Z%#fJml+5C+{F>vn?Fs4m@hRDb$IGjmS}STB$||a>Y8$$H z2N#yt7M9odF5SHR*8PpMw?>vP^v~}1%mMN556UDffLiqekey19wL_0_q(&Bb$DD|fD)efaj(YkO-q zb{5{bxboKi(yhIfx6iF#-#fLtJiR{Ex4%4gZF_cmX>@CO;`HM9#@zV%^@UTjQ)f3% zElp3aF3g@;U09u&n4da1H#4=fwK+dOH#|HtJTf{mI(DM7fBfX)z{pHT-)Q&HSYt2UJpnSXJ(Jr#lUse0+x-Yr z+x^qnEjqV{?vufpJt@>i`r?}#DI38{`=6*?xR^9nA`6|Bh2phVFUJ0@AgBV-G0;o4&3RR+Uc9z!EAJj z9n=|3elH9H!}g-1kb&NsnVs&b?H+XO)HWRAFkq;i?&&k#Q(LHW|Lh(bA9?y`P>U{X z3j^x5)jNq^{uwj_-IH5rLOM@wbfU?@fQ+t_o9OmNhYu~B8(F+CzIQ3Ftd4ma{cPWsjK5_SBICc^e=)uZ|BVU_L)m9WZ+b?zaF{&&B)!a`)+;Sb?I62nRjazZdHz7EbZOQZ<)_+oXD*o%dQ&EtQtrw?@cc0 zPATn5Dd|Z?MsZhCVOLU7S7PCbwI`r%g(t8ByOWE$l8d`iihB`~in;-XU5N!~s7}-cjj8$o03ZNKL_t&`37y4p zqGC8#a&b>`ad%>IPfAHITt-=MYFU3u`Cw|*U|Q8sdd+Bh^;mk%$&9+GjKbw8-?B{>{=x}4p- zl-0bD)3TJ?x>(S$QqZp|)e|YT(@E8nDK%3F$u$!x zHPb1zGgv#DT0fUkH<#QnpW3>XHF}}#(eLAjuVnR|Pj1@`Jw6{;v5-HwUo>_;bL4XI z%v+VqcWO`FZQOmY{rm^r*FKwj{Ow=<{lmXsy!amC{x2Ox0O)`Jdii4co4<5_{O9@y zzplFVUCE{Ad1pS%KJ_GZ?q1r=z3hd1^?Oe<7T$>(yd2hjHmGgew{Fc^wd7N|V5?d5 zsadhst(mKrELD&Ih#%Nb8NCqPyzEzt_RibtS1fhQmbz7+mQ%L&)4nHmeNXK9wCx78 z?}fDN1~+eooxGC$=-2K4dfoHt^@*3SI=_G2^~39~?_c-7d_D5|_2{ctldoTnzI@sK z*B@fu{@S{H-!^&6I(pMQbWPWL!8~+X+r4k>JE!m3Q`VnSRxf*&O!KpbSjjz}`C}oS zJGnErGbe5&4qb@s+K%Yj3O{issOglxY)*50#!@-2sh;v5+tF7~iX*CpQFY3cPJPax zA#YfpJK&vmLK<7o4L;8D&81l~=$1^>QY`6AdltTmbUo9j6 z5GdLh3ML3l(!|m*EnkK%o^D8>n-ZDkM7lnPs*a$kqtGsrI*P0gr)$C)>JWw|goO;R zD1tl^uZ)sdBH5;RnmUrMiJ|EdNZzqTuXu`gB3GZrHf7QD*%VWryRD2AP{9taU_~_G z!GQ*Q@@&ycqu1>-^9DX+8CE%JpxPFMXDH>ABzXLuvJfW$U;jv?`c~pe!9w0AU&c$rb2vQfW^hLG)iw5g7?QZx@>M2vI=bs=a&@ z^+B2FdCGte2}siirs;yx^g$WM;4H`rIO+g`GO*kL#sUl2#{VXiX zk9Kjv@4-HbkpjW0e~b~x3Cjv#hk)&<7;qvW8<>I|Yw)og0Pzs8{SXhilMcBO-gG4# zawo!?eK+LC6o4Ii03Z)Q`h_c|^b0|MY?VD0>qq0f>4tF!{pf!a6o4I}e8>S{VgP`{ zE>z(5ai$&yVOT19t~umJJp`)1SOUO}a>y0!q8xE`Bmk&b0)PtaKv;zVx(v7~P()+6 zQh6ZRO5ov`a=P3m_DOJODi1r6kHAq3SCYhoB6Y^|oX|`5U>rkJ>P|a?qk&Q=g-c=x zsVpIx&IL{(0^JQ{2AHk{251bBS$Mh##}E_PQX*I8Mit;_5cJ2<`5tt>E1831@bL_; z8-?vg;li*m=bU3WE_x%V0)<3t^VInZRX$9S27$)+qQK&PFA7IZ<9XBh5dCNJ)eM0* zU8v$n)GBYAk15LT8*j76+wJi-|3s^Al8Rv#=Ut2chre+#EEq1C~C>hZd6ws6-Q*CDRuIox|8T`6ega*qzKqF zA&VxU(|8OzkI5GCSP~usIe9E9n?dEV=t3Tq%cpYqbe@QbemZ)3dU~t;5_s)9Z>)X( zv+IAt-TDLV{@P7I|hOYO|mxG>djOr1O1sV-8Y2^VWZrP@%LHcX}u0}3E)`M<+fnj)2^C@*7_$`B#f1PeXwT&am6 z)YAFhbe@XBQP4OFmcW}Q(ux%(xwj4Yf1m=uPpR>hsjMQ50*EWtpu3%mAXc-4PzS&k zdNcSSAWY-Re*y(603<*J#1aATKTSZS1AylW1ORvd3Z?--<~aZh|H=PX^%qnD+{t{% z0g$*q^7}gkd$|WKiR0|x^oLRa7DnigaRk9aex~CPN9*Q@?-RH#I2M)(U^xl`T>t+R zgE2jTpCkkv%D|8Y!198?{6pkpnE>!O;~WV9Snuxy`2ap70I*B|qyzvQCwG=Jj*WVv zzv_^w^5Fg#`l|$L;2>5mCNRWklRy&_=m^LV5fK<-tXx7&qzMm{6KF7TBxHkMLzAbVP0;uz=>yV?LFtx| zY+FRWJ+jaWJnsd5QAM`!e4nsfb4WIp06>RB4!{_kX$jBq0g9MxV^E4AFj;MlQksJ0 zdVh(xP3moj2)>sML87vWJbf@A!y-_axpE@{Pj2EXEdr$vPhk}*ZG2BF-_s`WvNsLOS8U{njVwn>R%&5-TA7|UrqY+?9mvuE*qQ*g zw?A895# zpr@JbY2qqO9Hoit2{!7(Q<`}SGf(Bi1>3?`_=wQ!)%weIL7v7Cr8(5o6e>5MsR)v4 z1JEv^msOy&Kq&@PV;H$I14pLk$_+d;39xBoOZ051fg{zkB|452%lcqoigjogORQ&! z&}%nvF(-J?E)ncyNuUGdctmQZ0DYgSnL=n8d~dKt8iq)Vxp(xSYnA%=+lGy2#Y((1bGom?CRLt~oeE z>zkl5Map#{QgxujI{>mQ+8~i8P^1YGtAoTE2LdIKkO&cJkr5;YKoSD&l4u}H;W$c) zoak6>pjaCKsSB)+6b=CoYNh%Ri7prh0V71F5A`&L%MD?k#!$I2Oks{tS)#psVpKjc zsP(eOsjRU|pBSY%Qei@Wc0(Z}q6-ltXoDdQ3#u$3SoSCk{!GJWs2pphI`oc*$qd-w zrU*}Cq(i!0ZjAB-M9PiPQbUx?7%ekK0qGlR4UrOz08Xq86KKMOx(JCWN@-8j1Z7yG zib7LsVscy4O8fF40Wen5JXz8@4NJy47K?f|3x@WOPu-|mzFW8XuzBxE>$wlxE`8K- z@uSvrPg=I$ZP~ovymF^;?ydUCD|KV%>PPnLhjto=cN&JyG+;Ei_5Ev&{p+>8tF=8V zH78aoIu?(&%#<{p%&!^FF7Hh*Igyat6ahsWrM9SiLvV(dEkSOG6l+5GUIA>mjV>}_ zX#fq0t0r^RB(^sc<*~dRWdR5Dd`tvj=)*IVIHm&6RKQm|u=vR_ULYCvO%EOq8kQSi zp!VRGfrld*K$Uq=F@*q3FaWi9Y?mYA??!dR`k{s5N@UO>0f55@h0sq5ENvjhss}KM zVC>fe<^q1~0cBeWK z*)AlG6OrYPex`8L9uT$n#&f+0TooRH1Hf@Go9Bh+dV9d88qYJ}cse{!3)%o2Z}b3z z<9c~;v7T6=03LyhRT8kh$U+@aYDFE$Vl$p06V)vFUHK;H{1>*Z&wRE%4cq@L@!D5e zH@?cb_D$J4zp8)tcX@CBGU)8*;WvIAdi_@+*M1psqq6GP#`RJbvK`X9$q61m<)f!3X+Y_D#I$1SebjjhFT zjUHUR8wbsd4i8EI29nT-=NkwD3!Y~r^YsL-jwZMB&EX6sx&X7(FGC(tp-yh{N^DR? zR|tJGS%w(CC53N{rv1p~{}anU2GB8fEZ9HL@0DAzG=PGn>S|i8SvZfhkgKjZ*}qh;8v4 zLj>0t%`rr?w9#Bc4BHsXHpFm^u{?7uYPkkv#PQ7#{pUdr0JF^rJaYoylEAZItvSiD zmy2MGXB*xEPXUf z6M{YYe||XzE1< z^3OJ*!(ns2rGKuucMeY12S#J>Tr=!~^P;_Q_Pzx)T75U#HQ&^OhB^SUn|rZ7&@Og~ljOM<@COB{rp|J;H!O_-t&)0U%)pX6)bk5Xv&Q!Kdl{ZfoH=N9?8A>hbipy<| z%&d<{tqo7BiA=AH&uz&l?JlSuDry)lZ5b=?n5^iStUNJO-@DX0wA|9aGBS7i%I$}D z-~FJdyf!8!J2E~kE+I2IKFv2Y+CMZdAT%y0JSj9P0r`WY<24qm-eNac{VcwLTC-JW z@KNiGBB@d$Qz%s4o=TNiA{9v_LZOJyblm>TLQw&0TJFNUz2}mcw97m})ll?oZ za~HNwT|al`)}_5$=Qhr-oV<2=`u@eu+qDnD{mawio2zpZBYi8glS|VROOxX>W5YYAPi>xB9v>U+>mQhzpFcS<+11m3 za(Z@jd}eTTYG7=#y75G1b9a7advBV(zyZ>g?txwdDq7DiY?eQJK} zgFMJzgQ2z?{BR%wW>lkLdloRvV@J(HPjsR#I9FBIeANkbC&L9ePF>yeAETyct{Po- z&wOn!99Z2o3%k%!CuS--rz<;WD>`S&+Na9fr%_vmJ_YSl$WzrdTZ^s@&BMrg$LN{v zlUoBbXNP9b4bNW~S-Lp7ba7<);?UBCfyE1bbLYEf&!3n+-!=uhwJp<^TIO%It-aH= z|9;P5R%#$mf0MZ)f|@H5|Ps$mfI1Q+ZA5W8(BOMb$leI zVj{75Idkyr@y!SAcfLIN=^xjB`|sU9zS#ZK52t_s{nB@TAA0h;w(Fl)tlcjfJ)hgP zk=3%4(YTP&FrVGBl-<0L+q#(3ypY{Em)S6zRy&hWF&*dI|i5LrAFQ8E%)VlJ>^ zp5JU0k22RDCr#grAAdVz_Fnz|hnWj^Bl<6gp4bm)*|OEG znkyI06^lOAi`M!zbKRP$dc{(;Y_D668#tFdaw)iFHK1YDuj!P%dEM5sX=~rMo!GIT z*td1=`?l@d8+UC@JK=M;3qJZ&%lEI_U%c*p2@(J9f4%O1^?LC2>w%ZAhhG7@|N5fk zSO0AO{4Y(<{t~_ZZsfxKfXQ3vN0E8xvVHuj-_&*6$R$J9uBLg@vtmJ%H!95TH`OjC zj$bQSzMC=gR>Js|4@N`iu zbu7U%lA($9_KOWq2<`8VxO6H(;TuL)L{U7$Y3ew#I)S21q3F}t<{YLzlV->!8?qSo z0$y+#-M^9%(L{`BrY7}LQbwI}maI?y-1o1SgMWQ7^!JzfpZwjl^f-F|lib_iX59YH zGJQu}vF6>jZyUdDpLko@xGO7OO4xXR{!gzK{`ckVpI=u!|A(?-K^51aj;~c?(SKb` zr8cTe8&RT*DAq?78X^mHp?R9nT!{XMVF>_W@Xs=YWEsM8gHoy@vKo}Ocp_g<5$b6Y z^lMY?LYE#P@^M^mFW*E1g!MD@!I|2?^aI)-jQK|&3{t>4FfySH%rF2)5bPCdLtH2# zZ23P6FhLa0mq-#j#u|0;m9>ijH9H0OlcADwY7img>76;E)^X zkUQzHJNbw^gxcS9Avlx(e&Iqq4D|uzL+(JS|0YJ=0}K3Ny+0XS{!jjiCI}fo>El8< z>`cL8_dv@7$pBY~>?5F`YDe6tN8Bh7@pn5|_>Zyu&_Kl(1OO%NP z4&sSy9HEKH*RjMVI^XDRv`5B;g-7^HRo*ykEt)F@BvNryKAtY}V2E8AA{V;YnI?9j zA_$x*JQoVj8J;CMPLLBqPnR?_t8bz=*NyUq3*{G1WYBd05PmERz#rfk?q{G7K>VMh zgkK!N9djkQc~G3($j(aG`@tw6VZ5L;BI0H2y7_< z2$3*OB(@62Qg|>uaZFDFOF=*eJn{oW0G_G9XaiI@x)MiIfN&sH=1zg=KYC7gCJLND zMV5!&?!%6tzccNPW7J<9qoVc=C#-d*z3EDO(~a?_2kS7AcbF(VMwYwKlrD6IGgW?s zC_G9K979fu%!TFc%2GSg)hOF>5M=&DMKIYrlCDo?S@XC-72^1AY2Kuw z>XfnfQsC;N^t<1V{{CMNzW?FdA71?W#f$I${qn1Szj*ZTmlMDIclOP1!e<}b8ZVfN zSGAdws`zeYRFf>EO5#@}w&w_aQiYZzi6v2DN{|@hWQJIoE?TOC1ON~L>7%5&D2Xmi z3UU81M=5|@AMRh{y!4RcH9n`@hPdis)WF8~{yr^6yjjLn{ytopbLzd1936H@_!e|M1m>+0MB(K03Zk8!9gwZfYXERC%4gO|i`!85S(1SSGxHZa2#k8Geeb0;y~No)@?2T~{$ zkW|J~cxWmKG(H~wSU`@2;BZpVLmWoefd+pE2{eq42`VxUK!7rh|7>Cc z&0KT}^v#d?ld#}?~YBJ}4{M;B`7LiJCvX|Buy5of7|hYYcWBeBpivJp&u z)EmI|CP7G1fzgbhRzYxt6rn^2{(^uKDF^gOiCh)-S4KtVsLKQBQtOzpJ5Yee8qZyi6KC&^A)IVJTD7VuBVHE7!K0TLNB^NMH8whJOu!K z(s)=32eLSj8YOW6M7A6X$JlZbOAebX8IdU`Ffl0`Owb0;1UVW4%ag=}J_Lq@$OL(M z)Q7;5piKf(fgGr7nfcVnjl*)+A+Nhj{sOpp#QfIyyr$UP zrl^d%h_vd^#N&Q3h31e9eL%98Pqai6#8X(=G84yu>t7~3*Xbq^Yr0) zT6hW{p2{Zj_Lpe<#TtJRw1FZ`uuu~q@bcp+?QFS)g&oB}R|O+rIU$)3M`q>70c;1* zrpyOj*#B|bxSn>l!p@P~k-=5ic?w?+7`^~cyJIiQ)5?_F*q+F+gQ2hs)xn;oSdDM0 zB`iNMu`)WdCAFj{uX?z+e!Qf4qNHW21QGztg?-xvBNt2OZdaYU-?aOr(6^{ zec5~K^PZcZow)X_?flc$y~hn3_v@D5shfSP`sC&6k@MAqyVV0*)qNW^7;5|0YkJqK zdRD8t*DAYK%R85jx6TzcPUO{$Gt z;(7YAC03fyNagFuTrG(UbpQY^Py<070Q&TCRG`m;(FEZT&^J0$iNij>cpw6jqpyER z^)n&ikCg>LO&`z!(H#o`6d2_n^aN@@fCMWJa8LvNM>YUjNCrp`RDa=@gw%r~!=!`7 zKL+(fz^#j(2A((J$Qt0RXNSj;F%&K>HVmh4rE3VtxN-sb@qzYf0qb->x@{`;Q=p8M4I z=I^)}U9KX(!=exuSqRmTf^oDSrRYSr7g< z;re&MJD-G}{oH@+S-{?BVVA%2Kl|Kv=9zZ!f$_{&;^byfFy@)vc@~1u$Af2f;~I!u zBaZH+3@QvR8qvfwdW9bs`6LkqcCI!|WQ(WkBZWQ*Vrvpj6+#f{Jy;4?hSH6ta%FiF zggQ6AcWP>pk1f)b<%OOT2z)a^U~uPZ@H{_bC-DQayrAOiBCNsw(48e_%QWU)1o zXNY2`18M4DOF~&xQBPdOSmoIH@{!%-nsKQuS?CilwxtMsVwsu{rZ$YFi{R*^xcXR* z4g&WaeKf}y%QMDuO$P}8j0gxJPJmGfVQGLko+X}#*%(Ir z>tor5Xtpkjtwo6BYNMFm5e#J*!#kW~jN_Wo;fZX03{M*hB4h59U${`+=@P0)mwNm} zano2y^LSz7a7n{(al=qy?La|Ye_`DqpnjmBw!fgJA9D^C)DGm=^yk+&TJRTC_vKgh z6;$^YK#MStU)`Tq)rSG?1r$~f6x9qC*A5ms`lDk}&zb>*qMCu?x}hR8Eb>>wu!S{) z$e)Kg)DEIeWaL$&{s;qTz}zb2LEQ$CKgTf?>I3aie(gX`RbOsRUv4!58euT2YA~~M zAPYlgd0%ElUq*RvCZH$%cvo6UXL3<{d~S0@MomysSwP(JfVdL>*b?+z8IoKXnNb&) z*PKw$mR#JCUe=RciB2(C*f3gHH-uhwL(kO8?&T*RKOdQxO-#*AOvy<}%a2RSicZdm zP05Z;&J2l4vIa(2gF`KW!Ir>KgEdHPw3_UJK7k=dyPw71&t&uS^wP=|YK2lQQ>a8z zxlkl#a|K*j>(65_8R#FA!DiB#3>t$*rP0V#I*rNUiZn)RWKu@X@!HDz_VT)BtAD7- zQ{!#+w?`!Ctf6X4kWWCYe`I=eYF=Ds2|{dIQAkW$T3%^!S!H=`U1LXkV@pR_MO{^0 zTUYP!?9%Gli&w9{b!YSJ)e{pNr5)1+O{2vv<9Q7unU(!%?$OTberC>g%e@n;UBTI@>0O`nFFk?5!_dKfi}n09<)+ZSU>#8y8Q_-Pl>X zyfJ%id*RaN^u^ON>oY^E;{&IsN6)S=u1$}eKee#GzBD^{Vtk-;ae8ENW_WXTd1`cI z_Tc2K>y&#_{8$s#?Z*viQc}!k+Jsff$sjXrnZ5q#_sZ_o~-h=lD46e zw$YsWft2H2#Vup#Cdozbcv){&MPFuF51_IyyP`j*av-+~-9>}>)#y$}@8dvW-Ed*u zNMS8%hYM;)^6N(OYKQV_hf$kT)1QOxLv*L1`>+lb11udAPe1EHG`Q|U}RSJ zXH@lPR-v11B&&Kjs~Ytg&aE5DsU6C$8O*Lj?ND~@a8B)TRtV~pv2eWGjvuX#B zKf4AF$*e&G4x!r>8+;(Msz1G|Kci+Ky?PKC>6Lxx6d9H1ECZRygKcJ3^<`A{rdRf6 zRQ6@UChX0q>PxTePOI!ee&~QUD|*t4weLOYx%S!6y>G_f|Lx4PKg@jkhxzA!ocrVt(;xqC_}yQgxcPbG-usoy zZ{SV8({@3L5zx2NQn}&;@ z9AA1nZ*V`e?NnCtVn)M!TEkp=!+d7rTzcb7TElE|%~X8lcue_NSmA(w?g@Klhb_I$ zC%x62-s*#lv{ox>Q(KVXlhI*LZ!@O08`C??Stra{-KL!W=>FZ7Cx46{zLMU5KC%6D zaQS>-<$T`oen#(haPww#_kQBg#f+2JidOGeZNJxi`PuY)-~8p@Km33R0KdXQ|EPKW z^5wr@{4n?BpE^GLW5c809KZ2({`t?cPJfWH{BHczJ8>uPq|Du|*nXNa`%ZAr#enub zzm_eZ`ctNw6;t(!scOkovudhcHPtNJ>eu|5)?$V(B#&PSZQBTJI~~xuZR^;!p4hW@ zowaxF1)bOnYTNd2ITNvTr}(qKw7-1a`QmlY53jqwhlqdwtJi%mf%9h&WB%#>*Xzb_ zf2e)>=h}CF-}dy6CqDUW-1?({lQ+x*m$fI(8hbBThcD~9_VsPs(z1D8?wDukWYo}p z+4iIA-S-Ms@1{;(OPjfY-kP|9bH4SfhVoeid()|~p55^NbAAo0%KZL{Z~oNyw|{5e ze{RelFqcj!Q#z&5HG<$0wmpYw$)K3iX$U?UbXz9NH=FL0Nj9f~$COIaB~tVWRDB{1 z+W7x3Rev2F*Oh$>qxYXT#`oU6zfNL{RSc(?nVCUFQb{FdW{b&|j50GbGsYB$9fuQ# z89GUKsFO|_lh}^mUi--1_Zwr4t$p^vDxEqo=UQ{}JT+WrCF&6FYJtCA7-$p*8^xh! zaiB>QXpjUNMZQ{rw?^!*8=| z&b3ckCeGKNdH?WFzaPQ`!1zc1HjW;$)GfBxPC2T_+%@BlN=yKh4cJTiT&2CPvR-Gp z2ZVr7o9=d`J8j7}XK|}N*@Aw3$%c_k`yx}gh9!4#RNw)?mOBdg+AOx5DYu)8>d-Qd zM5{B=YL7QLpaS3l4S)tAm$4PSqC#;%qQx0+!QKEZa$6#wqsqdde>N%mgOz`>uxfu6 zAlh1v+)5Mb3b=~-P!oWb5u=v^rr21>QD)O6*}xV^F~kpK0FVb{YCq`zNd7DJ!yt(P zQ67VI2oV2YazNN9m@dqtL#@DkEY9_=#vM<|?!$-Mpo?tBVwK34JpL4UNtd?p6sx!5!q&4nF-7JnfxtAGdj z{so+DDmMoO9RlrZJ{2^A9{2=sLEeV~>i+=W=My=Fq;L?CO%u@g28ILx1ir?`lwAgwB_;gbJ=m zO(&H3OhqmvgG+N+N`cy`v4@mapIGY8e0l7DI77CBPrxc3%Ig8t}K@=$zw|kc+vtw zlFyOku`nmZmgKU;+2A1oXGJcyn#iK@vv66){6fBkL!oh593g`%Wb;IX2<=^v$K>WSn0YKFmB(U9ScH$`Z8H!(*0P=k!aWw4f@wm2nmG{Q@Ii{zEAM&iV%mkbx0(resdu=K(QL zfG)^%ApqPEK|KJExG7Q^?LGgTl>4S3@cfSOoYAL{JC87E{=w0`^?h1BD~OhR8rIP{^tZ z(l?n+5-Grqfd4XQ&Qt*f^*@0wjvTVcLX56KOuhiSKt#WaD>aL?ezh$%M*t*Ry~Q2i zjgxG4#2RdoIu!N@_IFLT1d6)?C0(HZlj)A&2$yvQ(w**Ps}tW)(QVa}Xz`_510@~) z;x=Eh#Tlu!1TqG9Qe_Q`wJsqj8aYHtyF_glDRHHV5;}Z^m5^Hq836Hw(#BKRxNB@AWIzf*xm)!h)Ob=^z`-7#Yz2j_ zfRl`^C}7D8SRmp-Aq_uqwlAQ8Ty&q%Fa=r$U&|2aKvPVJk#w;h1yiVJi41^F3iQ~v z#lR5jsUkf^s-?61qKRqU6beurJ1jB2=#7>H6XQx zWcHBE78IL&0)v~Yvaw}Gw#0}{hvWz`>wE zk2`1_eO?+q7^X;r`F1V27!%FKi_w9Nun07M72wnru6T2}ytfDw0A;NU%iE_j?b8)q zODelS?x3b?X?5pJRp)eh>%w&7c%o(y=aM&DLe*MViQE+Ct6hZL#*;fxz+G8p=gOeN zky<%Y8|ML<%!NKUg>qn)9mHp3c69&X$erlSVaaSPsSWbbd7?hgBVnax%3y5@nf!a$b9fZQcRX8|u zZ~;QQLxDPk5(TJIa#5>9TXUfx@Mcj5T!WP8pYBF;38jap_MlDi)gGS8!`JxuTAxq@ z3;1)@$-2?<_L+u(H67!ddlzl%pV`s3cxT^| zJ^d?=^sGMDyXD&8ftzC|UYU9H?G;acxbD{Hn_l^H>nmSvdF9IuFaB}OGoQ>p{^61< z@6McmbK%L?#tuF|yz9x4ZP!LOJvz4j+{n5!!>djWuRJlj`sDD+Ve63 z!6p0prgwEuZR;4@)I7MhwtKdseQ|O9SW(qLFx~Bpw_3urdT+VLnO0eo5<^6&4e(W7 z^iN@dm8+F5GBa@p;B1kFjxBn?1y_hV7V_@SL^pVzflU0Tp$?GzMoj+W5fJ^Ks|17* zKF|Z`fszU}fZzy(o(w?opQHhJq&g5b4*>rF4duZgX(52dDNri_+CHETM9k^@%y|P~ zYXQLhL3vPx{e*EqS%4Bft_f8(ncl51dSzOdKw-(Db8_fJJ_kR;u_QE*{lTa`R{H@E zUj}3VK>y-7SRV#qmV+*LGvpq++zAjrWcs6rW=LtLipW*q8)KrUA}NUeYa_L7yIxi)0KKC+$_j+qLUc-CeSfCHMOC=;&csO97*%NDsRB%ukD>O`6mEvX!_;_j_}Cgh zS0CmYBP>mjp>&A-DOu~ZefRbDm%fsOt2j!xz!>H0!#r(}tM;<>0j{NpFob#f$QfZA}-%mcRee{U_7>gQRUQmo(|sVH!XeVxd)ZWR<|2&_7oPECL&(ez0}0 zHb80w5!w(o`wg)*VU8-u*93TmaDg_gGsl$1B8obguZt9DLo`E}sS6OA0AKABXaho( zpQrG09SPKO4G~*$v#)kI(Y{3K zty6ew^pR$5uu1N%6T7Q~t_q2?X<`=MXX}ozysJXdF_US< zoOk_LtZFb+(HG401WLOh%6h{U{YBM7$@;P4ripaRWO>JQ4ccAz67;!hdzNNe7gcpk zca5z)bn4>e8&B3Y_cV3%p(w9u&eXLwb__Ik4%W9Xh?Z3OqbYARkw}-P%WG1lmEJ&+ zCm3`3L%wiPG@15A;ufdZ?(|yh9<$XcQ)pxgm0Y3JX?1FqS|SpQ#1a9Y&*SnWB9THS zhCZL~^mwb9TE~{HT)KASg0ZPsxur8pAn6R3*h8i6NZRU;d19p%Eeo0l7N%-D zlNHUiZ3}9eyW0E52B#J;U$?G*bfTkoaBz6h&RzRYpSgJY{IwTeedF=xUYc0Fr+s{V z$N0MX{$00W98Yz1c212?tXQ^q)ykzyrYEPyN7k-bcKqP3 zD`$^hI(g*jD;HnA`S=H~zwpMbYcD@}>FG-+E*;%->BzP#$9Ft_=D>^B&)+z8=*-@2 z$F^;_aAfbnEvwJ$+jjQg?qj<)ZCk(M%;9|}5A8d7?9j$FtM~2Lc6i^O6UUD2*|~G) zjy-$#9XfFM#M<@SHf`Izb=RJm*;R{IuAiJ)GqZB*$l`TFOExavwy%HL=I+JYhga|K zoY|gfok2Im(&k0wZ8Kz4w804a?^kp#sp?!--HFZ(d`h5x_wpJPJsnmdy#)4)M!J_~x|Wo8!v`tvUR=?=1Wls0ymN7;b8#7@cTCSk z$4q(0V${L{=pfNr9n)nUXnb*b=aRCHC1vfXU0m8egZkCIvvmWjn@2ZvOm6L&**Umu z-}uTy3)dZ)-f&{crc+C{oL;>7^z@c9i#DH~+H`Jm%Z15pmly83vFPA4GbdkKe&y}e zPkplSl|Sux`@4M~{q^7{KOOq?Z-+kpdEbYB-Tv11>t6b5>5Y#jPrp9A|7PE&D_yh4 zJEr%xjBjro-cZvwTh_KXQ9l;08t|6(pyw7_QIj>&Xb#tz!}X{&1#3;gYGbI*9I7)0 z>-2$I1Bzh1A&A;KL!eFvgZ26V%rb`SP2mPhq|p{@bHv;1@iu3&!;xsS#ae9f7F(>< z9BDE|8jYbwV-Rh;aW10Grf9RJsKpv~EOdTR*XfUjrK=yU-tt(-krxNg-Cp?E2RmQ?^5eX-ipZsInr4O4=y;F1W^{PEDRgwh2#rLXq-zu8D8d-WF zxcIDh>V#+VxO@Bv&;U~>{4=LL3r_~8PZupeQ@#C(`khaeuDO(4c_F^~QgFp3|B6eI z<(H!~=c0?xR~>nI=#zgf!&(0zRsSo*#^3L6`2GHxUw>b7=iY|<_hRfNES*EF7 zI{5Jq8}I(!@!IFMwpsL*N)!G3U^^uK2iy3eHh#EG5NYQ}+PVH_j< zynpKmZ!O7w2LicD_ zrPy9WSgJ?HGVk83`S4cqi`Ub?e%<}W>y>X@PyFd-X)EziJSOfByZ@55MpG+x_uR z{%sgLVys?lsRjukXVruwGvde$Im-r}r321%zq6#rnd&0Lk?OK1yBvuQC*<$9yHcI; zy5Z8cg~m`dE(UcIY7a|p#}Yttrrc(Z*1A&d_IL{lSEAJsgM5En5CGvxg2b^i0lGl$ zREu-Y9JobpkLPog^XUQ-?$2U~vYFy+rYM^s#9}@|hDb{&Yz(oXfB?n+`7~Ijkf&hF zOz6cthl!>CnUMQWasasuk`e${02pD;`2qX~?$2jQa>ybBvJ?OX4TynU5D3BsuoUhb znpwahg?E4hDCB~k&zvGZ8_@hh);ubE9*sSp&dI_tkH&h0f?Waf*jU*g6n>xr03>>V zFn9!;20x7P;)g-^A4eV+(EkDg1(xpzXg-I*&!wS0lmfs`3whZEJS_cBWEbLv@w$L( z!SN6|G_lYaWk}40Y$a1@KyOtvftn=(#GsI`%b^JK&^8M>ISiq|6lI7^ITU_ALqOq( znLIg9tmcXoEWU)w78J7h6c(RKh#5R7ohPI66%?Kdl$01^^uETDT38YjTW(@X^@P&M zm1t;u6=Zgb^aUI-g#ZG8DU>rs3K~zI&ywY^6)5sKTA|9Rwg*)s=y^oh!3| z^uNr;1N7f1P`LzZr$FQ6D(r;PF4THN8jw9u7y~9p-0Ls*1v6e>h1*;130By_D6z&C zuG4!eG|r6HS*f=H2Ou+)N)07)bFs=+thOc<`jFll^aP8{HaAbK0sRl2oWoNxxiSh{ zoXaGsCh(ld19%Z!ptGq&HjM}F&>Sfy0Laq@ol&Cs;0%nOrHOeMNX*7ez`R1@kpl8; zfxu@AA4PT{H?NS$DFqj9sT%p4jmmrl)RFjzvCKt(vqC~MCB zKQDa!hxdLI{ps(;fBLuKh}c!%001BWNklc9S(j@~Xa!&iAmb}le1(cHSM%g* zLLwKclq$Q{;D^w;3`U2=V6!Uq2C2a;GdaX{hQA%iJFzcP63Wl3yoG$J(7_(m!y|DgAMEd`757O>>-`=W~GQv{Dt z_>UCu9w{ImDI|dLD#S$+aL(hz|9rvxLOxmyeH-&B=vyM@0U5?ezqLG;BA=^ch#f4M zhbeZ@1g3mKpUcr@b9A|UbAiZ)USlazH(lLVZ|>av^3L72?%dt|^)KDe{kdfK>!IoE z-UY`UEj!GWt4w9nx+Hi2s6(wve-qdMxNFo9Ra#f2+EuP{W;8CW34yhMbk0((1E7Ds zyHx8;Yk&YK)w|MqSEi9B?0u`E>_zlYS5n-D9s|JNvOmg03b7?7buK`RL2E<8Vv`l z0I`K?j!@0yLmdDM63|Hw0Gt3I*&p11=X8E3EE$&m$Ky~3K$-x{=6ryeVp11q&gmCi z0i@{M$j4eh1=uQpMES7|0EyuLM+FF!f^eq)Tnp9$kdiO?PYpoj1E?0RGtu|5sKa zJ1d`sORLZ|5nXnf^HCI_5!NH5Mq55>ULI8LpcXoL%z3%Yd3p4Cd5rn_jQM$VSiX=2 zgaHLtMZw*O52o;RegQ*}PZ#8YLA(&I5oFK=*fm9jjpHHm=R%0d17RLMK5Ux+g$OVS zB1)1xOpMTZ8n(nD()iT&l*wP|h}3(Mt-fL`0TgR?L>p}3dUSPjgrNe!9dALi{3Ymp zwI^8C9nSPbGTos}cd)e6Qw%OTkp7RAg1kvg0HoSHF_3gO`AQ+J+Yl6@3oE*$D(xZ# zM*kHktO9i9h17Bzp#L&6TVetx0EN`bQ#kl?r%2@%DqI3NTFWI=I0>nZB``C%20B-Z zRljleE?1q;QWS8|wO(GpQRcJdc}#geiU)j7!5nFWz5yAOb)c3BZ62ls3Rsvb;9vm| zQ277^5Ic*isDu*TTCnW6hC-@~V1H4HNL?sVQDkH&QClcg6pEEpv63QCQ1}We4~3j2 zP%_0jLTMp14!*%7vIaypztHLxm_3Bv!BUzT5(7;DP$N!BR?@gijP)xE2}L1KNh0+W zo~)23FCb*-W{}60kfmYhCy@`n7IQ2S{?%M-=R$?;QWZd7&*`UQ?u5V{fsQ3I3)McA zHEHrzdg9HIvfg;rKuP^rS@TqR+cfC^bT6syLGQijO?Yul$8=Tubb0G!Y2#S3W(b`^ zu2`cbSgCOqON~LEYA$meuzoS5jk81+uGoUkRTdO&m`Fi+HiQXkIM5*KWB+#sh|E~f z0(6myE;8atGqeIcE;51rEV+yjCRq?rH3Gu)WDT0ggl<|KDDrUeRUQ$pJP_#vD0o^Q zUyUVh&`F5)1!?S%!wyF%K|3{ptc}>rA}8TyW&>th3N1Xc$ZTx69X+bDWOg>@3?P6- zaIj_2;VIE$hZE=ll?!+Rm4~B*3>TipCox9Q@bFYWMUlJKVkEbm#g<`*%M*a{T2*m*1Iv@}u=HeYx%RKks_$n>}xTv-8cbx4!nL z^)G#~>egpVAOB$b%DW3MyfJ?4<A8Wyas=>ZO)q;VoqGZd}p50rE{V@>8@wZR88 zfWn%P8Y6s-4}BcW%>Wq#=D?t71797P`_B}bSy0ml);$b?0oU%Bu*@Hb{h>i7Sp)zw zK`@EOp&9_{10WFquf;czCINH4!DJnP02F~}4+iIg(BQx>0ze69Xyob5CG7#!b1DCr z1E3Nl^iM8;ewa!sp`gO=Q6W;e32nK7Hj$)*$eTxmXAl+TsZq&AWOpv$aK z3V`_l!1rZ1>tAM}Nx>C>35dUqE_2c3D4aBjjViZOQ43=Cpm;+OTR=)kYNw(NN*zq8 z%~;%5vE(#*ux6>e6tRsVMCZSeP>mq1_(%K8-!;ATga6D&)`M?5kG|(R`j+ST z+unn3aP>v#IVoR^K82SmbwNnn9J!Yzc4?ENB_l_wCXa?YHfy7OVta;fNw5u3o;l7n zL|FO|Lmv~m>nRc|`mhX{i>dN6l^&MHPgi;;`WGtoVUE(rl6x2`4?~FpL;qSY2eoP+ zQxjt8BQ$leK<1(<-4BTz+L0~B!If-dfT{Gd)B%nr%u$C4Z4@N=zdSV4na@fHP+UFel}YR>v9rp}7ULK^8Cy zK?0ll0{X8B^7TQUIhLyl*Z6Ao#9J1*Gn1b3L07uko(P(X)cPn>7cJC=^0lD?wV$aC z@(fTtz>&Lnz#6)_YM;ziF7;IMEoq^pgrkdy?WOKapC#F@3DsH>)m(FsrnGU?9;V7o zQ@Yq{be9PVj74ZMsk2fFkbNc40M0V0yL=A!N39nHDE}z2EikqO0MH*h1J^44J6NOe z*UEjha=b9M4Zz_+QHi%xEpbNN}CpDU=j^ZLETsjYSG|Sx_L6)G>I-j zB~25h&65yl8MFY5qru5yG^=5P)YvI)n#AL%Me9zc8^=qVCNj-v`H9ljN!V2LM0#!` zZ~)|%%gD8wVW%a{uuWLE32hDbf)+?OPT-M=;>K~ZY=ahICa+vaB{*T;(e& zjU>y$$?{~TE}AH}xC2gq*yE2lJV8$=;`I5gE|1F>a{EFKm(OIfDwQgYO08CEv}&zJ zt(8gTY!;VbbNB>@$L9)#0zO}CarkPQ+Q$|xS+QYL-}t02ny`B#u29PAEwcI&;gU*k zQQ93U_Cz!FU1MEi%QN*o)g43KBQrh2i>exXhQ=3;E?hh~ws2@8cKPh#TTfhm{nisNK6&NkXRf~T%;nq9U3>2Gi7O}e+`M%7vEw^0 zAKv-&`J<1YKX~Tgmi?QSpFXhd%)xEv5AHgBVE2(78}{$maQ)ng6Z>}`Kd^V(hP8+G z?mBn+_~}z8j~+R6)4VF%eU@d zvSnZ6f~9Sv>xNeCZ<*SjZkL-#7s52337%!?HMGpeU*yiPnsTtA-;rqtV(iw0(4Vna*W(3)VCZ zZ|s=b*1Kf)(DHqwvj@gj9hz8kbm6*V3)i2VTz_hO!|Ab&=f<{P8r${Q)Pb8br(a!m z^_?|0KimB3*Sp^RVgJWJ9s2C2!=L|r4)QWzQ_yZ?taMSJq=ov>F1nT2H0MQ=xWdRL(M`GoysIOyNi? zT%`(Ui41idY1GQ?X}P0RW-F1{VNzxU4o>t-ng+ zt5SN(6|ORcD}!3JqyjIj@}Ti5rMFt?tx@@Em3|a;>QJL9+^h_@DkJThqHb-xSDPHr zrAKs`31jtQYx5fa@V=6DS6Yt0I{NfytKR%!>nH!%{^`HAe)zXluYEuL)aQezUT@!e zqh-bE#_2=NQ~R10?rT`Mzj4w2#)bRq7w)T@+FL%fqhw%nQP&zz(=to-LVadbT{56b z^+Q{{K$9L+mkg;(M%2Z_s*)i^dRUPeQhUw^xE_wF6+0C4y2 zTp7SG_wMcgAjlcZe^lRTPdHvhvZ+^Gptsg57K9}6`WMJJ@*X%jN#1Zwtp5*$=Q&-;E zaO;azPky}Yi4SIOygPO6&CyG5Htu;cweoyy`Kj`Cmm79G*|h7a%!Wq;69)~Q>og6^ zR5eTVHA}R0OL{*1ZtcDMjW2#IPc0C|dIXU!eyCks)FVywiXxpvu!ZAqJ+fT7kD-;HejS8^nId^cM%4C7~8^s7VlL5Ct2A-a3)DM(n8- zxvPZkYMH-Y;;Z4?%LI;cxw}f?ZbB#9%`2tfd{*`D8x5b_uKoFgrZ+E^oY)XwIZ^J2 zW&r(nR`K1nEPFl2)y(y_@dBM3UkA(6&h&P%f_?1hFe^Grq!%;GmNRSDvm3S-b{!79 z{?o?ae&6-4dt3i?xAC37JNCbxI{jYN#rGQ@|2(?)1;v6xrp1@SJDv}0dbarBYtb#w zwO{%4=uf{N`tjcWpYKn6@=xvPVN>m5Tg{}cViX*JGsBM30e5E5neKO#^g2qqLH{S! z=}dtMu(P<+S=`}FwYZAgT*d7`0JJVLhH8KSP@vZ(4;u&oO%7YeRM@Q1T5n0aGuh?@ zZJ!oryv+?a*;Z$=*&c5~7pzKt^nYx*fMh=q0FX1zJJynzAwR<+TvU+3Pjrf!q%90kU3}k zi{8Y^$^X^?01Y6{V@Lo|q6tW6UC7)oBs(0)zAxmG!~muNNQ+?hJUV+mdIw>!vl-lM zIyalinMY;KqX6^-h(9b$VAXzZ7EH2nzCWn;XBCpBzN8`$q(}pHT*%9z@N?+AY#KL* zPUO(JxeV0u=7TE$4+MgME#Tk+1=tAMU^az=^H~Y>b%`vALZLpFDxk8J1#EdCM?vMt z3mD>g1-yszxoELRav9k)g2Go9vSkGfA%iCY8Wf8-28L}BtNOi~O(Kqn+jzJfx? z3b_g@p~+)N(bq-eX&4|~fZno=bdiQD)iVU@00$q zk!Q?8~go?$LQE|$19vC2l08~B`=j?K2g@m+#5JM>dA)ERiI^)@aAYdBSk0E|I8rqsRq$j=o>WT6WFnPHuF)#=X1T#8RGax~5Ypht z%nT8FVb?-t9(v;z8JJ@9g0Cf0Z|OY9ZDk5{9GQhB1>B!4vjh4sG|@#S0BukQ-YpilZx0n`>hT);z}hw@1Z1eZY+3bLt^YzpXifsF@M zm_-rH%SUSw4@1=pAN@}Axf+(#Nhtj+nX`~@EFcUyEOi!JokQqz`KEl4og#BnWL~Pm zPuD~kx){q?%&}JT-HnoPw=6lTu34q++HD*^;otCB>i8>duY9%bhhJX1bMNcB_rCk> z-nVz|{qfG-*YDol@#kNQI{|(5Us-X}z^N zU#-Sfp>y zN@G~6@k&&Xo5+=#cpwW87PAtKQ)TjLtwFs#Y;r`+&X~y_)megSlTWF4%XKc9)*)5f z#VVUv1^PcCrA3H^fCLH?UvA`)R=_enTcTx)K>~;^RI^a zKn76Q5-53L<1~Co|Cf_|04WEAZFsTwFIzI_35n| zfv)C!%o&JsvDZ8b^hKbbAG(YR)jo|qW%5WULy;$y7D(j< zGI_p4js^>a@_e4WkO#m$g{Pv6bZnW0qqg%5ZlT2|vib#P56|RgYwa|-i7L_+@SuF5 z0BejCK>j}7JE6e)g&h9^j-(Jn|0J@H+FYP^g!wq~(EpdlM~@2-bUqr-V*rN?|9A9x z83Op!=uCi<0Xp6@;@=<6CaghO)ucD$KFkqcn|AeQe&UvDuB^8u8 z7?ezi#?mM}QZ+@z6qyBTpURxD_^N#ImPlD|qI#&LVLa2ku%c~IdHbTuj+yGN#kJi_ zYJdP(T;0B?9KG;2jU{UbLuH+=M1v(*rEw&shA>a*0t{VbMZui2iZ!uCW)`-6X9$fn zs0hRU?>rp{$76jMz=eed$Ok7eVjiv(6By`1BjkzWNzjoO=qYFczJUrk;3QJ42e26H z&I7~Dhq?#AXQfsSI``CW6atNhukmtKE&%AIb_S5rkbzF&qpgujHF(!hFag?AU{a4o zYyi0y8yOPP)73y1gAhDZYGHy3JnER45|D#u%4{rj^OJ$#J4wE<4t{^l;yjgZ)bn^e;Kkw`3pMOZTFk?GsyD zMmE(CuCMNyEpK01+OnvmVIomIj4lhVM2jQZWbjw2aVdbzSR~emgj!JUBIFJrP9!!= z?AtI&19bp&p_vBvdm{t=f1v|%Kr|uf0Mg)_MBgC_19l5AU?#voqW|QV%pkvf!1_s> zAU&7^3$;|>v~-x$(#=@~2(H?@jftS3+ms3t#%!v-3HQ+E0;t3#DEfIw}be0O+xa zDs@u$R!7yMiG#Ohjy>D7{HW5`!8asDmZZ><2%hLws zZh+bawql_*!866%mL3>bf2MwFck}eV?&Sy5y(@W^xX>I$N6SDDwdk8v`4fT$jfkQ<-d z5#DAsv@ltP<}Qd-lDil{b76tX1>ws62--IMWx( z^aVo(1D|P2Cl>ZM7{uZGA(neFGgs6Wt>VI|e74dWI`ox~f__QB>Bq z`jW{=NhX%A^o0{Px6d62+r0s^)9v*6ec`ax=`z`@2BT4LFzWPromL|f2?-8CaCmGM zi@{*9nH;f5?g>O=CDo1X{R@|`T{ye8w5HMG3fejnjV~HsIJ0QUij7-$Y~8tk$KE5CuHJb5wY>8AR+>B;eBGt(o3qcc;JlOsd3OO|ZgwC=>A zJx^V`^y;n0-+bwr*Ka-X(o>gTd-mGx=dM0+cHiY=JDxsw;O3)89zC+-^3k1-p4@fm z_?~0CH=NwJ;oQ+3mrm|`^z@Nqdp4gwvge7*=T08ny>I)*V+Z%0K6?1{vBRfMoVal2 z9Z z9U5GJth#@ducXTvZw1Ae;%-k#kGHhfSK8+*>+@wm^2Lk(_2mov75%>QK7Yjmbdvb- zWUz7|P_e)Vb5Zo8WqjrRzKQ{FdA~c|?;C5>aQ&vz001BWNklCnmC{B=!=ivsCG+PBPVTLp+*3ETw|ZiCW_U-UZ)321wX7A-kjyzWZvzMJi*ULCpi{?=E&{P~w(f4h6T+xA@9mgmZMKG%2d?J`UNcov=U zEIjQPKjIoY>Y6y>U3k1`&7v zFSS4Z$B`Gl9=-MD^0)r7_QM~Sy!z+l)@$)~mpw~PxE39(-}}Vsn_p~s;x>d9BvVUTqxoe%Sb)}+VxwdJQwsD2N zZkeWWY3GMuuex`??$(FWzgFz85qm48-U^w&S{kSo zdMhQtdXcx5KsR4kh16Xob=C^))qA!S{rQdJPhP6HeZBaZvke2?rABY5(pe=z%b->K zb$o9F+lltx#PhZCe4T{9o9Sw0y4$&t0d8!Jo0#O5%rMJl*|i&(4cjPPM*_Eh+Wg!7 zJ-`0G?ccvQz55U6p4%m-K4`h|dE1RogWH}FwC&PQolWk4CA|GsV9Tx0=I7cT{rK>Y z_YVJX_rOoTPk#DO-NX@7?P5#yxHU84s2FjS58Fx?ILa2-N_wru-S%|1t)$ad++oMz zEbefm+U|v?n<>f(8~yj z|1>$`jm~(JBiU?EqPE2zZ??x9?XgBE0>It??o_kVnJC~YAr~8veG%w+vZOgISq{$Y zN5K&3c}n!!qA%bmb4Y<8hJ?abbL1BEj*yKtf3g_=u?>*S1rzE3a-lxpzk>krW5J&X z%0J{J6a?haCHa6|K>rcSoazon@S%@eGRK)iTKmo~WM|Ph^XX6lFpt5>VsNq<+$=hG zK8=$Fj=^l4`wyTeq>2Mx&nA5Z=8;SQhW_VaN&utD|EU1rsDI}CCPZ>*Y&8G6_74jY`0N5JxSqs5T_z&Pt%$%3c%AxWK zSYjGi!WAod5*1IZV)7&mjuI)^}Omm1u1 zvyZQKvE?>GVHYS}e5Dh0_*yq#;}IJILW5sq@CprHsW~9GMkM+Ws015>W@j-#|Gtdd zpYet(oWU})uT1C8sGa3XTe;d+sk2pTtQn;_EiJs~j?QUhOM;wy|?xt=A}Qu*?Ht~ie)%wqwt1K%Nyhbsf1lSSdp zr-IW1lx5@-aAE)rfc2dUSP$m|GxW%Ra*p#DITUt2gPlubOA5VDpPk zxdPt9d0b2n@a7i^a_EwIXcd|m{ZzB)qWM(*L$EyiAt)E%Wzi)Cgq9_B@|1p#+)Wc$ z3JGHlOO?e^Wpj1egdtC8qe|TrxsRgoGt^OrricL&K$SdKgE-U$1VHsledjLI=uyw= ztMNlGG(Y$G#_#@p>(1RT@7?6Z^q~@)!33s6PN&tRZbyP003~$NB=CjS*CWXO#vVPY+lkg)+#e(VH5g6~)qXimCDLQ2$3FICzl3L6TU(k@fl#BwX@NTDXcDgp;~i%?NkYc!W0>BJ}-VZ75Q9pM3T>z!XQVQ|3Dink1YNGY6tk996Xtg1OLZ) z!1v5i0sGG3#j6I38^$s%3(H#;Rklq-;(yoT+O8!v9gAx^ z7gx2wX-BvAQdo|fHmkr4+`@N+CtbDx^wFQv&P4R?QIPtIe~TU zjWiJo6F}Z#jQ&GXJZ`19BL&-7pajs4WDX{J%8}by3YSnH(l|@3!P-DcSE6R5yme7y z|H_WBjlEOb`xfo&p4#5IaC`gYuI8zIbu-87S6*n|dZX*`t-)y` zYwd-u*)v_sPj)Ri+O_yV_soH=nSGtpdpZ{G>X_QmI}`SIF*8Ur09;N% z(g47(2uw7f0pP2nldTAIKiC|Y4g>&H1~5oDAgomdEDqViIiMxE9MsMc0K5l|!N3Lq z)=zdw^dG8lcyqr3Tm*p6YG@S&56l3_Gam&*sF7&ha|D3a%@C;PQ#iQ{VLnHe!w?j3 z<#dUShUpC;0Dugz&5c0E0+j(^000s|42hi~b3ze-#6gofFacnuq9tW^x)hB&X)*^z zVl9+dsS-O)pbmCz@z*V4h^-W^lVWvY#!O}+kDNn?6}aC@wU%aEIq2OTo_n;O}F~GWcel4rl(X} zpOdV6TD$dy(CLrMZ~QrZ^^eI%KdO4-tNNSYR6qMo^2S$@%U{H<{n2^+?a-+=gXiDZ zPai|)DtbsNkU{!?q1aB9Ito#U?FC%3#MLyg?XjudSK5{z(FQxEkU?22FsJyYBv&8f z>WVmqs5;WYvm_~UD~S7RLu`GRr3*6k5uH0Z-oJ>g@)02N<6~)q3~h*s<@GTx4Hu4fQ}VIyKSz&c`fvOsezxZhXjAj9{~5jnsfRM@eM@+V~nf=;Qn`mr0Xw~8h{FrKFC5HeUz&U z2@D~sF3iwG)|7M)glj11iPIDo=z+WwJLv&!e5P}N{%6ZXahC>!TmAT zj|&2PwGTW4NHU<7R1Lx<0@z8|3(`O`Z>7XhCbFg2G820Jpb~O)pP~^;y}u$>J07nc zi&g_9Eem5Mk)qE7+VjOFTl|sDDMkqdV`t1KpAvG75$-1U#J{KKj?R(x#fVW zhd_h7Kb(QNLCCM~!%EzEb+ja&8$|0?^aU&XQ3NV_$+>|{560Q?b}C?xu)A{DQGnbO zUM5fu#{e6L=tYwOSPUHlEF8@A_{&iA;w90Fy?!`mSO!wUafGnikH4hLSKR4NwmD)= zwxR}W1Vz0))@YA4*<;PFREIa!&cushsdk3VR#SPVv!POI0dH43?0CY2HdkIg1nEUsLo zE=r|KYML9nhx#X$OfFlqaQWJyMN1ulnB3@A*@L!lsn#Acx^XG&)b%Hxdg|Gm&)j-( z&#{XOrZ?4hFRE%AjHMf6sk&IAq_?wmd~{%JaKTXj;G&7~B~#<8mMuBBd)K)mhpt~d z|H9Lcz4^j3Z$AIjt508j<*AFWKYj7V>&LI1*nRo%wx`b>eEjsmM-T5fe`v>JXO3Pu zeelq>)u#_`Ie&c5qh}7CJG|%g!9ADH96xh(&yl^`&m2E=^3Z|9`*xo_dGhkbb4Lyz zJ#gso$up-99yz*u-=W?6PaHjUY1z8nqf0hU%x)fCv3c>veM5^kb&ao{*>-fsze{{rKovBV2<^bI3E_b@yUDAzOPrAng{Z3B_^xfnn4p&K!3!N1Jm*Xf# zi}gB-yB)<{_Ed*8-eF6$*%BT06i$f+SIllFTBWqllm4%iyf@R2A^SdeX)lbF0vzut z>-CiOx=Yc*J+3mK5HOL@4ddw^7aSGZW0$K0ZMG91NjDlqeKd%(ZlQyAYAf!v<4F__ zv~a2e(sD~6IoFnIvnShaiB<<5#CDx%vfY|MEjsviOS}z*E!pk>8UXFO&tEYRsU0n9 zoJ_VZF6&-Vyn>A{|5hx%rZ^{+WSu<^psj_VUgZ!NxX zd&Oh#uYLZDEpL3g`-8t8_~hq9pa1R1=YL1-zK?(0`p)-jU-{GYQ=bf;d$Z%f^G%x` zYgl=%amn$fMf+P9?QI4FfGv%~8>)I{Q_WMM%0W+Yw<+A9@l?v}B_eY|WQvK*NdWqd zF`*$QfIwIHB0dU35nmq_;0{k87J&6-t_&1Hxy$9Aa;c+CY)y-- z#R5~3hl6iQ@k}YgoaCWNa{Ji1apJreFdg9uL3y!_g zy6IZu^3$~w2WrRn)=loM8Q)hsv9D%gU){pJ)l+-R$95+AH-$QY05DWeDpEs|Sg$13 zEiUSkCVCa|etEKAkz61z9*|@7U!ERSlufFj0$@^_9t*8JyZXI2`ojvUtJLDff9A137c>T571GhTP+#Y%C!=1PP^!HzX{pIdm6u;iN_uC!R zx%caxyZ`v@&c4t8HucsI1228ue*N>NiyzgWc&B{ttEJmtDBXIide4hJ=iV;fannD0 z)j4ye7Yo{4XLI=1Pl=%yQ$2VP2TydGV4KDy~z{gWS$ z|8Q^Fo%<{AfYi_WU+-`D_5Q{?_qW`=zu^u*|C{dLU-t9wjZc3X+WMq#)m8tR>+V%o z>?=fzL~@cr1+pE{QwkE}S=ef;^2FMP4-#jjRB`|0enpRRl9 zk6T{*V)mJjht9v&u=nZ41JCvze`)OE8^h;rS8u=Wn>uLd-l%I^qitQQ@7SPkUuW-G zZ|PWLYh7(~oR_1T!I~zsr8bzd5 zh9cZ3@Kgz06+%~q)K#hQHKl4Rwr!|fIG#>dmbeoQ3U|50Rwf}SC~pnl+rW3%6Yd7W z)5P^ObG)rwe;3Ww!t!asZsrrc(Y*0_tCoylegX#kLHL9IQ}dh_JeD|{)c;|KbJ-FM^aJ=vhYA2ITVf~#6JQZ6 z!w{qQW%PDm$Wvm?AAtVzm=7?0ru2d6Ki2;taewB2(f?c~sr)0vp1^?2U;}`;`haYj z@Bzxt`40y$7ll9r%qxIA(JU%An@-H9bLTUF20(2#lYlw^1~-d_eS^XE7jV)n%3QL4 zR^c4tk4p;J^X7KJ#u@ztR*%8p66A~$ISjltCUmk$jcYI&hQk13VYKBuHhD;BJ2?~{ zdYMxBDyUM^BZb_D3b=nL;64nSW#b)j9?G5jIJp!ag()ILN~uaOkg7RC1%)l3u!IG4 zJ~(1Bg%nWj5K%Z%x=>9QsTmUVDy=KvC@4H7TVm$P9fZt56&eeKDyGCh6KQD@9be<- zD=jRshA-3e6||EB*cYm zK>|T;d^EoI`Pv&FE&u8t zSN?tHqu+o3;x3ANZ~b=X(SQ85?Bl;RUj8Jt^@YIHC2#*>N6R*IV}jSb5I*(7SKP-zi>4S463yHT@s>0AmjTobr#Md@K?L0w<)BP5uL?Ux4zN;s@xz zFrO~Kec_zu4=f`gm2V!n1cSB@1gQ};Mi@tH(6K!L5CFIgDk~osY89{{>pze2prvD!pZZ8H4HEz~%nG1B6_3*% z&ZeSCjQ)daP!@#^o5Dgs4P4E4?x3giLq&xcAbDxm)) z4Uk7>g=07veMlNx$p+;XbU{oRyp`5)qdNg#gBhD`=e6I*Xb-sTO}p zTOi#TD(eoGb%)BjqUAlI(k@8$F9s7}M^OV<1tgk$Fw*Wzwzy->)=T;3Je`ZJwld@ficnKXDDr`0kV2^%RIAAf zxY9hXERT>C@KDI12!J3>;l+6@^xOavf!QDwh)z@ZZ{||@a|Is|_@9pc-EX@l) zUsTbyDBUm-uN(-KcDsujOx|*}Jt5Hr0Av?~ybqI2O2uPNkU-Uv;SZV&`Hju(ST&^4m-b)YgNwE=jl z@(5Hw0Ps{Ut{jdH1JI=9tiF(^E#zs?69(FK0bf(V(>^!`K%c1saH$0<0*ob~Ab=q< z(gDaefB=ygJK};Vu8A%-F~mlu6sqCK9C?n^0Y17i2V3D3>Ov}e+8n6%6?ev~M>4I` z4GUJbk8bFm+}bm>9km_fTU*Ar)QxPZ9NnFnJXF5yOzp-iE&HG8KK07TmA98X`|+9= zKHvP>*W2IxX6M`A?|Jtxd*1tD_d7rAcF?j5yfrGbt zc0Sp)>1xO7^BpTrwJkZ)I&-jP(Y~h1-K~?m+ZOI_9^c+LvK2+c(B|6y^;JEq$~%^o zw#+2zCnMEE;qn1ry4RI#w?~_e!CI}S9NoH)4Ak&k3{Q2Kalwp zF8nZAQuGrmL|YSs`aeTtqodC#wbR5v08qtdI#xiU0~3H1fgtP*@Bna8B{mu`0ZuB+ zvNEJlIzUJ3q7{KcaL~|$2>R|iHp@MAG_jo`^UzfhhAIruwkph!2dH4Z>n)V}DN=tv z3W=`(h0I?l4^ovun!?YJd(lb773x`h6`W}bTj%<7m1EoT1Qu0#foJldW9<#ojx5EC z;s5|307*naR2TGz-cufYPkHn`$A!{?wlZkE* zpCzt-T5{#1*!9npo$K;BngW@JB6VZUL_1CHg1*SfQ~CJj@?gidK*L&d=`>rL5ttG} zN3qbB7D6IqT5L;+9dT>AR~e|FDeO#bfUS>kjZrqvujlE5{aq6#cbcW~qhP8*yB|{f z0g?A{v;fdER6eHK$2SIfYP&E{qi$Kw5S!R)KZnHeRglFGtD|+X@h_I>A(;Rm05It9 z$J#yt=G-8xhynB<7WW5x0K8%V(*S<19{T`8Spb0k935!;aL5V+s0;wl03PN5n3^z4 z6CrdVp(#SqhXvZ$*0P=&XK8^tNEoAF2A~e{G!Z_Ur9%qC4)n4=HV_0d8tS|!HP zMJ?up(G({P5s@(>wx+b?l=vD$tLM(1e*vpT<}2DDKGg&JM0Q7Ht^Lmspq@ za7_U31eKSmM&CdHM2c{I0~>e1HbCPebbg*59bQyyOUj&SrKdvat5yZ-Q7D3S3e@`N z6e_Sl5Oi?VV(7mX8w1oxeYH}^{jb7y0@YGamE2p49R(^Sj#7!EgelVIQrPHLf*x8J zJdHVAQv?b1!vMJBWceT%W`c_*!1P!iCs^9+N0ILFm3I5FM82=I$CvI2X8QaXZTFS+ z_{n7ecJK3-_TWGZ_XIHV9?0~Qa{<{egKY+|181PD4=<0`Dg%H%fCA8V(B$!_yZvP( z_zw7c0APL4JoL{k13U7eXPz?h@L&~mB)1b@p(*JyLIrHlnK~diruF+q}iFj5pooLxJ{{>GqZ3)idZwx{7NT z3@luI@Z`BS-g;+j(b7yqTc)^1+h;Ia^ahjOXt6t77OP#SGs+YSi9{w6NuUmZ;AwPP zG%s3`Y3LnXx_QUU+RZboH!qxBKeBi>UDu*CJ2W=G(Ou*S6&pQKxyhrp`h&^pctuO3 zqOr2AzqG!)ym>)m-$d(ziMo#AmfrCNlS`*&H!oSgZOyhlE7oq?vSZ(wi;q5f?Xj0$ zf9;hw-Z*sna`*VU`tC)EvQ}THG*ebJF+4mmIy}_ZGd?^zH8!+<)zVeVXLfDf^!SyF zPd#?!$!lj{x%JqGZ@loEu2cJV9NMw*(#gYD&YV2DclW*>+b*3yd+o}j zr_Y={dG5lI6Q>RyIlk}6i9Lr->^XdDcEkSF+mEf@b7FeK-i7P;Os(0qXye|M`_HU9 zaieGD!9c~Jy{HK)ITEe*M4Kbo;VK4T9ktG4)bDhqyIiSGCmwf#v_-okiK4@i>cnja z3GSm=_GG6$4$|;;K+jt&u@=D46K&RHhc(%b0)y#jvpvpYs0?rcmw=+zjru?#ba_g9 zyf6-V_bBWD-*-SJK8E$twE{r@;<-M#YqV3WwGHsSo!kYq9rjd*J<(xHwA)gs#hpYO zd_dHJgKV|LTg|Z+bG*eCZ?h&^(TFt$#|*P#?Z%=O6C8gl@BztoXGxDYvmj789Icy( zH!Un~TUyq=vTDJ)x{*yyCJCvU-)A3u@CxB-)`P}vwH27 z%*@I1i9^+6`)fvb){pIM9NW?~vZ-MZJ*&(no2J551Flq;F>3*j6HSluF$hg}Yqt z&WODo8G-}%Ykc7FPgtsnh;)$Q-6 z9{*(E)a$LAAFp42rfT9~_4wZE@qJaJduk^3){O6|o7_`9u_rUOGuFEy)V|WyxKvj@ zrb-XW6MfQnw>Z`%jrYjneJB*kelq=ERy-t6k1ET@)fJOK0F;h}R-IY@!N04vJ=wPL zYTfcP#iIvOlZU#tUoKyDCNOa%G<7Vx|P-~996fBo%OK>zQc z_yywbFL&9$u=eO%ReN74-w6aj)vo6|PrsGganrZ* zif`FP-|`FI#b?~pX9CMF#Mj?QY<;?D>(il4PX^ZB2(NpreCN&NjwfrL`ef{f`%8bj zzx>zxD}TMe>KDlU2dSUC5bIFq{{876?l#*o*FEbV^Q^h*oV^%W zeKo!J`L6394?Owl@YA0SKly3Lnb#Mbe|^Wxf8O@eSIeLHVD-(D0d+XD| z^S66XzC3pMt;N^hTlLIGOK-f_wCCx-;-j{~UFQC6#=b3vzAf6WP3HdXu7T~I{w?SM zOJBE2S+%(J-7jbF{$Baq`;yX8S=opv(JzQ}i;KGDiGE2@w;m{BBzO6>&s8M(uAcw%764^_ou4H@HX@Otwf-M2=&lB&8$EdH#WpgOt9mVyv$-|>2iAIDrUnLTGt`}>p$+gd+)%V z`@4U=-}u(w-8)|mZF#}B?wRoB=UmIKX$B6f797!yoKg)OvrL`S4xQ|{^2xEk-9Prj zy<l~jHH$4Z6PAh*TV~i&HfSjwu$2xt(tY-Hk3HRGE$**!(F6kk65WQVQa zVE%)`0&FsjHG;6Rd=>?Gg&YQv%jQG+KPCWRM-R|{P_!mF1H1~!CFB$mg?yFFQ<}@y z{~@3AhXRO4=8m6YzarG5K1*dxsJt?)7WAPQ$%`xQkW7dQ$l9@GI&a+ zKtmU)m{Kq!q=5dgmMgRKl^&klLl>K=LOn-jrHgb7sX?f73shFNL=RdeN+VaM<46n? zo+h6_ujB@%*dkClrAD9BEe$U21n{O!g9mJ|We`<@&hF5K|c< zN<&C#2rD4>KOoimL>iA+?HqkOoyekr^b`7rJ`BNnD3A4rT-N{OF#b;t{eSY9|C7u7 zLk<&7;tu2CJd8c&v9ic~VhSe*1(lskVdc`;Idl}P96BS1#Vp`3*fOTv#W5u~))KBR zhF*h2N}E`y;WLG78jnL4@fji!T_|PzLQ8jjq=lIRP;r9hC!;^(r7Jao1| z5xk5h)Iv>x)WVjbw|gB$pr(q9B*Z}z>f!ZMY(VQW#0Fg7uY)Q9um^?W=^rUfco^NX(-O=F??)gbsad0=*~7-E@I9pD<*zwe#5O`CLsl&y*{4uYEQ!e%{-A$knpNTs5mtPia%b>Y^T{A6>>9G`?E3w@T@$)VNWA z1ds*@fHIXmt#+1bJf#|}`>$~nYh7tAM*pD>z+I~Mlo`F{W?!YnTMh((HLf&;V>M9GQtLHS(oKvBIj*xYR~3mH;X;I%8&6+-Q$#ECHp-qtK(%(kat9Ig{x*KkED4kiHDIGB6|lZS%z0Fcr+(zyx% zF68x7NQECV#~%!VrT=&0e*t#-#mK&NPN)aGe1(N9QobIv%>i(q%lZc{p#Wbo3L%7; z4-gh$?_aVMU{3m;E-Iws;($3a06PQY;s6RmQb?Cl7&7n!Aanm|*dc(#^f9cTk0pTe zv5E{SB$I4M{?-%vT5^jak4+O z)Q7Su594?Ug8G0705brz3YKYOXBUEpFr@S25~^G(LDo{uU7$$<0K2t7aS+D+aUYEk zdAOfL<3olx^}mz=$qM9B1^F}~jjiGcO#-!FWh*xLtE`a*ccRskZ1*Hv(cRHrL=phC zwg^Z7p&P0X3j~oSz@f6Pa9LNdw9}u0p7i9}Xxgt@nSd=Rf=SifwB1x`5 zlFOIm@}xP0B$p%3L#IBWq>FWIg@vni@C|NA|JS<+jf1VW(!}V>sLBWbcTpZ&oR3@R z5RyEeB%d!W6vztr(gM^c(57HkE)W1%nh*;M=3-SJ^xwpW5TNXoL$X0sI1lGKaFWbb zlVD;1Dg)q$1Z0E!fz5ytRL%k1SI~G0%7bw#==aH}*mIZyQ~|CG!16?eunZ`opoKw| zPiW#PJW6vM2!KRO6iWc5no^!YC2~s&|vdqx_%4@fOMxT zQfu**Y3&KIE|y60_lI2*us?984^2cS*Rm|v~il)LKRwQLK8)3q|POS8>j*! z2=ed@g*+|k_=?l{wWMtWq;F$qSL`99qCoA4dd}h%69BLbMtfQnU2CIh3!B`2zCSPP|rSb;(y0JKyg2-brljR3G|OaNeA zd!PgiPyr`4;ya=dn-GAJ0LUMS!36;`>r;JO;zN7m3y&t3pUrH(-gNM}zH_%nufDVRnNL=} z_~nMzzuEl8w>#hZZuh%C?0NUc-S7Ok?Tzm?y!Oq?7rt8Z^rsV7-yJ@Gd+@|7eFtxL z?|PzRnhq*J_+moLF=0>#!&Op=2Ui#zQ2v6cFSb~(FnHxyHBX{*7jk9u(Q_3` zoWqi!Cz3**nkEAMABNb9Re-E?v5f@~zlkOR4uB5UzJUJI(DSRv44M8?7gY>e{|t!( z5Py*V2gx9s#7Y&T)g3gkgDvwiMf%vlUc!)|itL3FCsh`p$pZ{UfG+njDRCihe1zCvIE0w~Y|EMF1|S~c9jb3B_c;!>MD`D zN+r&uJk%)hWEg5UTOVZW!dzpNqmL4XFp5~JzOjA*P2uHY)SjgaF?ATz2jn_H=mKmI z=JN5h0l2yN>tt2qOo<6C#!?5_YG|37Ad5`l2S7iFVf`T1_XpITMG^p-0GTGwhJ}F- zAar3u8^JpMekMr?U>5-}0mchp(SP!gFtwl!bLZRz!W=9F#L}X@hd8RB&=kqnMYV>+ zq1u6%Emo)t@k}8e)Cxp+I z)RERk8a2T>pigWi3U?XbR74m;B2$zucNNH-g+L4W2t$;q4$&1}kd{)onJN@MmdeM` z%rOC6ji0Lt5ZJ%~wZxqEk&mMTdV^;w64+7_XPMkvrSjLSf(^<*gDTLV2!INZ!e65d z)F}h?sFnMH20$H6s7@WKm;0)fXs*9T;;I0H0Z)b4S}d|AX*^{fjVNTx&^?GHG}vQJ zMKwc_%E39zy_7`ryK!`37`@vISUJGo-gK9@tji04Ch7yu?oD_4O1kg@D0-m9+yGvn z%TvpKec7_SSce z9XosJ+~up?Bjf!OQv(x=ItPYp+d4~Y8cQnbODgJ86?Mt-nrKN`B$X~I&O}os{z#F_ zAM^x6{%Dau8ubQ44!6hda9OQ3o!(%z*^Nen&tG`- z^7S)kE}S`c@%ZWU`;VO3vH#fSJ;!&Qcy!bLvr9K08kyZOyJZt z1DRf1q`_X)?2My_=T>{H)tPK}#@n5VPG`K$f%=IKN4(u01N0m-1nrJwn>`5~)ME6! z4Kn=!KyNiinz2=ElQDv#(HLzq#hT4U&E{AuxtKi#+4NwNS&Rd$GCLgr=yy5DRQ+_9 zv!nw8q_o?yj&>KBxo^kZgFVr1hva>9Fqi{K;LQCvJ_f+?TOi*y-fBy|L0YhrttHlKDrzX8-Sz$t`#$;W!Owp_{Kvl^`0VGM@Bgs=^{z44xH>Ar0h3$|1bZmu8R(m1@az8^iMEKfB}g{uc$sSabfUgfTk+KPpy zINyl#{c&DD&lu$yB0PPBhv9xm`8NOofUekt9+LrDbax05nlK+-zzuPMDUOAJ(h~3q z$jBUJB5R4joa6)gALr>~JY$TDwt)KPB!L2GfE3pR8~|Z0AuOdlYld&DAncVKdj;XF z=DX{KzGg|NQx;jENRFz@78&YSd4~5FZ@S)k?)IXWzS{KB&wIZ5*TJuU+4IFe*T4JM zCC`5~bm8sxoln;;KT|nzuwr~)*~spS(cRUPd#lFwRFChe9NSqov^~+YA=tLcQ9onI zjH!wj$P+!%SeGc;A>^77%I^eX?YqEVV$E8dQ`FD>Gy2@=0Z8LYf{8uROE=nk?9k$W#`fxAFJK}T>F{VM<4%q*IR%7CwKtd zx%1my^aq%LyLW&4?asgM{#jyNKVG!;>7pIag|1el&RL^??hoFM90#O)q`1^UZJ9-ukTb*sY@3bIyrFj`4$zk$sNQeU9;crUg5k z1G}6(Tl_;iyrbLoEwlEP^@{Rk9q)gGj;H4N4+JH{lCn`r$*?FfATJ(JBnQONE@7xm z5NPH5n*^aYVYm&of>66S+98d$OTw)}$o+2-2V2B}W`Va+PD%rPT;QQSkruG28GyJE_PN3ZRJ91TIwtpIx+%R zM&hj%dg{228WcQl6AyC#n|Qt!wzmZcfM7Sx-NFiVu_6ORYKllL6jUtZmd`S)*RqTji)FJ!mNzu%{O|OZy!qJ+|U5 zdr6nAq}`Tk$2CUiibTTq&CX;?tZq2nGHDD|vcVY1Lufoqr9EGu%i<`Q3Wp_H>%t0q z0Q$$9>_rWr_JgYd(47~g{~y!=xKqHmqlLZc4y7YiK&Wy-$6o}%B3LcrM8G-OWC=s4 z=gPqZIFBvIf+Ub}T)%4Ixo0>EVf zWXeC#0HhND18|84o~|5l>&>651DIbxkj}s$-BZZQqOh`PoE$o&{9~k^JDAn$_XDLW%Ve(w4RmG=k>kF~Q_ApPfeqpIZu3 zERd-Ap!=`n@a0tS@Dxx$c|%sfkQV?XC!w$;RJIiGM4^TuRIwylx{xg3HgFXlzS_@M z`4|!_dTU1S$mn0gk(#7>pGf22%Pl;)1!^_qX13G>uio&Iu7`Jdsg^P*Qd^p@%=AJq9O(Cao|>l5k2Vq-*Vjw&26u{pw3dxaXGQ0*3} zoN~R_;z+u@rFLi9WJwy$#VUPNsPs$Jewo^*(E4Ork5uK9DxD&^Lnw2I6&{J&D^a_p z8Wb)mbUae6SB8#3Z5JplT#1IkSFnT%@GcfeX@rDINU1z=AqTt=C|qFyOPI$J&ZiTP z6tW)%c^~#43IP4b!T3M948Z;KnV1h?{qJnX|76qAIB)>@%=r{HIuqukp9*n$F^vtz zbu?Bsot4dC=CYUt1cT79Wj2w>%w;L*EE$_ECFnwe%I8rDK20c~@C8)9u#hh*;E4(Z zGKx@56@X`CAtBG@2y@x|Jhq^aBPj&IB`tbkXG?8ttmi`&Km`DP6F1_NJ|oWdGon{= z^oorQJEfRr6K2yy*>ph`$eRmusDdmC^ykwADCSX62LgmH&>&Wn%7RR2K5zrr^f;F; z&8ABpE+ifX(u=f2#`OUOAo~9hwgo1uQXVSgJwg*^F=Yij9aHAyq1Pg%hbFe>a`o99 z?R>T-i=)dXOu0g5fz($h_0bezhAPa|6md+&Ty(Q`)ro_h(%6tPvqaOl(a^ikK7HD^ z=|=MSt8FiRwc^XapZWW*kNxwvD}Vd-(D%PA`QYcSXa7`s=#9woCw#+aJl*>pjhjrB z%k-s_n&gnWs0U1deGMvaEefTlO697AaAef3a*eZG<0#WOzy<)dYJ0KTUZMr%pR^Vn zfJ+VTQoTE4^j4U?M8RGEEpy-TKbO0^CY615$LSZx!ltYS3^^PCm1LIP2OUH||f07*naR1YdZ zzyUxJ07s-o!4;|4d^KC3en0@onS42eE29%qQUZv^l~K4@_6OtsRBZMOR=@zs;z3*) zP{<^`dBt-z0Z;@0P(G>oLjhudOxP!VcSR(okFkCs-h!xrDJ;OE=uis4z-|F_4EK{+ z{~-G#f-N)1DgnuZj+BBGfk+eJLK+Gv4j@H=P@6~Qe^be1e^EXu_(MejOh7J$qyaz( z=znEXxH(vSKO5}Y(X|y_ZJAi|j0qJ0xwLtC^oOAWfC~Bk81x4YAd3o-O+zs+hdv*i zff@5bPYr~Ca!`-}ZXs+uhcd?jWRZ|A75X_~_RYs-0dwGQE{({e^T=v|Tm~N>74JU+ zL0}j_=b>+k##OR}Mxn;5vZeICN^7(cy`8#?K|T-2^JtwVTx$*2*rRohNWClG^0w7S@6)futlyn4&J3QbS(Bvp;gg4k&vpe4ED**z)2^2z=)>SMsh6QRjM`B_M z4Q!!-i>}%dBVTG3NX;TF3M7_W#d3>OX_Kiy3rHxp5)vavVq}R84B!%V3=|>_U8JE1 zRTRFe5NvW)RDrq>>$gz3AfrzTbbuTXD7wrogWY{0fL#Q8Xc^c#hALd@;gI00o5*7y>9Yf{cJ1jxd`LK^-it^-Jj5PP($S@Ahn+<%w-8M4S=qsqFh3p%NOVH zfMY-#ED%WY`Dkk*n8g<6umw3xK@JH0gTVvH0nzz+bTEsC|13uQ$;ic0aX=SQ2~sl( z1zuPH?it{`0g6e5Y&j|JPXU#G%m-j_AMkw~7z|a?cq$5flX7w#4&Ms)3S*(X!^rO!LA_%fia`nd+?ZMT3O{d?Gc4ucUHSg#i7dnA12S#otjdM0&Q&%#~Yt3Oirv;3*u0 z+{TsJSYi{->&F}ePXiVXKuW0!2q*%e5ZXfMXfY+Aq4LQ*bdtV;7DNAlN&_Dtn3JuC ztagzB2mp~8W8z>?%#>K!GCR-!3cFC}SJ_kMV2v-;UQ{)lZeCc|v$ADqecRZEj`2;c zW1E_XH`FdzTh_HQ-nJ~%wA|CY+S$I|)wjbxaX7a0Y{ljq&4*s-JM$)bPo94IliBCL z*m(Qf9dCcX?c!?y*F~<^?~Cr_U(VRYx|A1 z^_LrG&(+Tyubn(lH@>HCbZ5=b*6N|nHA9=L1~*hLSYLr&t$S9byJu7FOOvgO;|-HV zwPWF`fna&Rr=$ZtwObq-sVpBf_HVYYzUbZevj6n^p-Z2KE`Jt(_Gfk5GLG0tmw7>?Na|uJ zeRKtSU9yH04dmUAyP0J5=Z#bFkSt@d52ulgqS}bssNnPb4M;YHzA`i6)9VJY) zkF5){3}KcNRh^kJ?sEH;P62N(17VU8Ln{_DdifCJD6d4>pqmQ?$=Dj%Wtb7Tfl zs#~7!;V5iaf**4LfY*cZFI$ZX01cK8(uH6FTuCq|1cWO9NY`J?76drzAXgp6H3xpC z=7IOGCX5My0BIq>(L)Pb{~-Gl;Tb@ApQ{DYe}+25R0UZoA6FmFQ3bq?vO~4KWNZe%-XBupNT^XSz&eeL+x5Ux-SQ^v; z0|Pc$5P-FexVjL5zYx$Y!uH5OmY{D*AL1ASgefGj6p3AFnYTjWug184gTi00^w+8U zbzmCos}wua&U8=h@P=gjl4Sc*O{7WeD3!a)WsXvwF-908`3yk;W}VTK2}fc^Z{QJ} z^^YNVfVoNJ-BS#}x_3?{1+w6MWf)#B=|JHsZbz*fby95}!00hOXbKU%(>T+)rrc!9Z0wY$-#&=yi?J7_Om zo?>#>XuRExc8yj{p(iCc3=bRzS`v+SfZrf2Lw=S{e2|?O`iDbB+jk~f>_zpqNF62s zYRtiEQ=r-!uD3=SoFGOFkOX`cC2)9nI~_nOl)@7ihzO-SUGZjLam(n;>K9*oWBIzx z?fpY7T??w}T8c`_-O*%Gy1c5PwX1)qzO}o!vbLzW%oB=vgE4n7YWD>VR=e5e1QTF? zz#R+)B2l}`V=!8@dYw*ZFc>U4y;-4Di)C_&LLrmOjTTE$DwU~isBYef_E zTY1Ys+t769*y6UK#VfY#U9oBJB>ySKz}carHiJPEm^d9(ZtN;`1)0|hY#+$arOMmw{E`t{8KMK|HRubJ@fvn z&)vRt$K56Xy>-d*SetXZBt{zWd2D`(M3r{-rBtZe2d{%*De`ojY{y(Dv(R z4!rQ#*(WX?f9lb*SI?Y${LwR4&!0K6clX7!Cof(&bL!-Y^JmXqxqAKlrK{JTc=q&# zYX?r9-*)K4?&BBtoW3%e}vZvhFQ zM5_abGv4M(cA#)3+R(T?-iA8>_hSeiBkV~?oVNf(-eQh50dyX1G=}R9p?cKnAsX;t z6D9zf(ZZ0GpKJqBY(Vzg$)W)?ZbKu$Z2l zTm8zPr=R(J;L>> zyOyS!CW96I&QzNz+@Nx2#MY$17!w$aaB6>;&_@9M*F{JUfQv_95K{ipND*cN;DSj2 z=^H_pae*-*vX)3~X>`StVd;N~twdx^3C#(fAqJd*5k-tJ#JI);*8oA7l00KEVNS8l z#e}7lYcAthGaOqb$5G97)$+ZKd~dTT)F~|*P!^A?Gt>HpHJ;H!>FrN+UVCrpo8NEy z^52L5a_9IDcMg5`+tyG2vGkR%2QR(XzW2H6FBeEZvVH$Uq*@_c;td9-3+=2URzgm=+#_tX)` z#D3fO0srIyQ}33leK$6J^N+p%{H^`M3+9H^rrI^V?|-}L{{6;V?@LQZR8+-*hItKu%Gc0$**;tsfu#j$pOqQ#kPjpGUcQ>dDybP;M7p>eYm z_5z_kiwzP$KmerLY(-5jC<1803VV&tI8d|b`s|E1kz@cGbfHUh0=$CVCG9F80Mt0I zPMAd#%n9-^<`VOB7-G6m$5q(qB0~XNkwq6}0ZcDJFAf};8NC2vd|#5ol;$v`IO|`O z!^D2SIPzFncmR}zKsX310s#$>^FS|XPM4V67Yzg`&;gK={SOy#9?1hwR}!F~m&cxm zCi6)xAPnqMzy=@-H~`2H$67#mlE%#{oP&KyDWQk+SdU=o|405?1OSBvmrr{cIXRiqFh@P&AMY>Hk12WMR|F915Q)wHV?}45b4Lwg5^C+s|WV z6|(bb!a}B$#+3`@dWq7=muOjhIg5}nI1&_0j-18;^rnEREM%iT3K@&1<_L8lC@(bt zjtq772A0gjQFw)#5L1d?#*I9wg)K4&6n2#(SO+=}`nIaiz?u+CsfsDbI z&;?QoPnO4#CVhh|{=0iD5oY>BKsDSl{Jl6l@GXEzBR|DiS9?GRZl+Spi zkO@#^0gIFgnpem|=gfR6I~&SJ(0`VZ!vNtx9=~Acakw-Ahc4n$`3$On&XEv=OvJ#r zKTRN}5TXK(pn$_K;ED1D;(VSoha;n)cVr>@k0|H#t_dXry;ckK;N%C1n--c7y{)6r zQ-s<=z6NV1>+?D4JeE8c|4eexj{+xCV|i-fd@B6(vS|SQXH)nXZ4+ccsy;spePk+; zH3!Y11+WVOK5sE2#hVX?sgT!;O_IUN0xD)8ct8VyQ7~{_zztA%4^w&bXrf$}qL6Rk zD!l^qvZM0S#r6Wil*`s;F*Wnq+8mBCmuD*wc?%@yWi~`tMj6@|(~v@UYQD2h>}!`r z&;@*2UAtD_xyw3!+`016(C(WRSKse_?d#QF{B8TU|JeN1KbC*^bMJFs)t>*Lc-u?i zna4bRCtU5j?e!Z>nI-y?adm8gGSsOGv?$$m3U{5_SEu&Ws-0CDSEbsSQ8_Xi2!Q^9 z18|nA?WmJR9kLog?E3SFA+= zVo)MATc~0S)GVHoK`3a1oWUa{fTRops{moq|2f5fkOKnyUn&QDfC2Q!x&L#jNxDqGhu38S@L6;3YtTYcb?;Q%OGn zZZ3t3ivYM;4+0nhGS{0z!oGZL|4ZP!Z4B|v~%hIR4@d_cELh)!DVCR7L_$= z@KsnNjlhS)Yi+9y-8G{P)^MFATw{yW0s&Ce~X}@+4ZJRv_8pDyp{xE48ka)D+|?9SpGnt8at-Cb~?Zt2QAq@gydZ+#-^hMRL?J z31ud5otB%qG9yP0N?}Zij)6j?Wk|Giv4$d2(F*Kky3qd?C8#=AuCk+6B672_ZcJJv}f4z#IU! z0{?g507#C9&VRrG;1hsC*7QL?i&Tihj?npRG5Q9u>i`G=6<~8?jQ%UAxI-o6gzSBMqfr{i;MJrLg`>ht)xUgM!;Xj^V{m-M3hxh$ivhLA zA5)3ZUM2QAo*SnM)Ib18O)YRNedjM*-~P+yx4v8d z<~OTf{qu?!zMOvg-A4ln8$!$z92ez{Cr^eL)q$L380zF^?us^WaMEVAUGXy9F8UC-(gX^*g zJ3k8^*aZuWbCX~m0F?pQ5gOPR^i|VAISP{mSPlqF1F6W9ggg_-ngAMU3;@>|bpfFy zWEQF3BhzC7Kxxfm@UzgxnI%Dy%@9Iq0uWSIn%GJOh~Es!{!%+j9b(AcWL`fV2UP@y zzzl2vKnIZ@YoWjh+Ezjf%o5?!0kk^L0Fqoxc_BjFytOOnuKvTL+)fM+;p)vy=rA;1wm!r(gcybp%TUBJM7gFSy3W_w+#g8RG1NYQ?Db)`AxhVU80d)&l!8KZ zjgP5zv(+B9%xGv{u1+>_6b=Bm(epYW`yj}JLG1um!}kNkqYIN209gG$_(1m`RPr%6 z4kZFuFek{?fY|{0M8Feh0vPuR0gFI71M4uI04Bg_JVF@4Tucc7ZJ-IWReqi^lBEnJ zo#jXB2b7vHRUZ}@LxeU2s1N`{QNAIJg3yO}PzMm^=|Vh!`-419NT3PvwIP8vDA1x+ zf&y4K3}XHM8nwSdU`dK>37#b?wnl|!v;{xkQbb1wY>IMB5tc5%)CUN2kcQ2tT-K{^SN{R145$-u|VMF(#Pq2uT3Q5(h{1^|1ZKBi3k9KD~b3-U}MktHT^ zl*rr_YJZ(N(4Yx5$$ZuNqV{n8xUHl!+BoT{9uc}q<=%3kEy*{7{{eat&1VX;K)R6N z$n5rbi@&tjQ{3%Lq9=_`fcqhHA9XsQlZFl;^4Jj<##0@b8$f{vQ>bn8qRC{t7iQrF zQh=>{NND~691j>htkQ-t^v=1B;H|ka9Pjymhqsu-`Y}?U>~N(zTuF@S zRO2GcMpv@glWK7%TX6*dZ~*8FaTSwaOP8;-(_h*d%An||Y#$q2vgZ2JH=nxsVq4!( zV|#CF*Fa-?Pf2w{sFNB2#HK?b9)@#XriLAtf{woVA063jVrhA zU$^_n%%<&QE7wL!%3YzjKT&S=Ce#+MEf_a>qef5M=1W($40+;JiR#vPO?$erJ67FZ z**?@YwzO?%@%XZh)9ZFluiL%xz{ySfPp;o_c>l3;7q8uT_SQ=;z4H1iuf1{L`1#t# zuBOI@$+4lCg_FysCzsAljSejsS^~$rSjy!So;{TtlzmAUM%=Ulbv({brkN17o znZ&j%OU=y8%*@;^W=6}hWLvTfl9`!pnVBhUJIrws$KgySL!p5)XDEqnz0ZECmCWy6 zXQx(mb#--htGcS5{oVWXedYP*UVrJ<2k*ZA`Tck9zxDFH*Kfc3%2W4Vx%t+eYcJnC z_59Uiw=SJ{^3?uUZ=QMm$+NHAIR4_b6SprNy?kuXmE-&FTswK|+KFeboqhW1`O9aH zJ$2*q<#VU6UOac<{F&3IPF}lq`b)TA<^Fk0zkUM4wjW&=s0)cG!wB9 zs##O*wj_iVrfs(A47)i-q|uv<;RZvb(HO=NYceNVEQuCtvek-Sm@Wzc4sc5@H{#%mmmLzBl7BnAg!`c5f zoZoN7d4HVxj}i0D7TC{bBh~;+@m4fLtY(U~7^5wQXtN>GY=k9f3+R1&oVk8*Fs>R3 z)GZ7*jwM=`XF66Ede>LZ-Hh%ZYUb~(8Qxtxvaez3;ii>m+qYcrJ9vBknK#Cs_;A$= zzuxrLA9uX}-TsgMeCV^kOn&~?gJ1l4-^YL2e(#%AuYNW1%*TBf?=~KOxv=HQ=<@Tv zc?azsTWpQ1Ty+z{rj?2Iwb|}bj#vk^?)H9 zd9DVbw^ih8mxX&(@%ftUB5mbTQ|l)0=<)2n+da>Gy7K;?cm45)qksA7_@90}`uz{P zzWnEkx4s#?`EkpE=WAD8EG(ML4eiZC?5SF`r)Fed&B*?$MSF9DI}&}H{T*xU4aETa@|M0&{?*Db+o8J!H`CZ>rU$&k5pzX|iJ?G!+IQ34?*>@M; z_^9Rd+m(l2%kF(Cckq?e-WOB5pU>@iKE3-+?#x@=AO3apA5&vLLX7`3wfv{4Wj}xn zfMzCsdbIMEU~SJoe$Y zTVMOK|Lp78%{Rg;&P7*VjIO*KU3DeA;zD@!h2WP#cWnRwAOJ~3K~&l^&XLK$!lU+q zJ%hL3yD~L(>d{Zfe){p$)KuN}E4Ip2qn~`eZ)&RRm5&v<5qafe^uvdu z@0BLNh5`C8Qgh|$0a>bFogGl8`xWsnRlG+Q?NG#fMzG#ao`e zSNXzkvoC$s@b1_3@BY62xeprCJvBmivnt#o4>gJX4LoNB&siz-)Ciq5LPxE{+aU2Z zOT0}2S0mTe!1p$DT#am36J-CrXxhSYwQzjx{BVyTF(8QcbNoHL=paA2P?BFN$}bmI ztYQ_`Flsk)T6WR;PrBau>%j*Pj{f`6p&zCScmJl_@VsH!b={(K%6TWmZF^Z&8#xtg z`IW2L$))tzVs>U_&&1NeY zN{1!h01m*A>jz|zE#7KPG~41W&SZx>(dmr0JCdy^(7D=`YImbEa}rIv6!tWUqk+XUsGBX0E#xhP|FOR1mY6t z%a{BNHkq~vmf(d%?Z0%|41fqp5i`ILVeAjo>^}}j37nlrQO3b2e=Z>a%pidN6ix|v z!}4a)xHD;-nKZNn=s-~84-UPYpHV^>3WQ%$UK9Xk6|DuhGjW#ybO4Zf*dc&B8`qM8 z06^oQEzhFzaK07W2t#&@Q%d3D^*M8>xK@?ICkwTzU@c4Oe7uY~3m2_|Z2;z2lu<<# zwp^q#sSGxu+{hNHA!*2kdSNzK$>OP)Xqe2?Q8*~HRJNMI(eT6uuGGSYUVJNVqc^Z* zc9A|JHODpfoJboIC|x3zN1$}d^*+5lF44I~8kbn>=BZtLjfbal0Z>ZuHhtwO^-;7&Kw6CL~vT#B#epV&aR9e2G=0bV$@LxyCKmcx5`T zLho1T15&M5q;m2V7LLTo5^7lj4HE@0f0PWql+Kf|g>s%mDUhkeYOP#vP#6pfqd}@x z3zTZULc^45Xd)E=qS=x;Ow46-dZjQ8`;M z8!%J6GLD$UQ_#g)hFC`x>8Oz0&@iFB9-zAdAan8AmaPEh~jK7x8Sm zXckR03nR7&f(7umX`&Je@j-+oG{G!L=nH011Q-DX$^BV0O#XoyYXPhYHWdO;tNl^70-f7X!u%i`9FUKNiegV_c)n11AA73S^!-vd<^(fQG^zrIw(TdXmx-t zcbDc&UCul|0)-EZc-{&n~5-_>6HFn{=NZ2j|r(QBUG6R!4s_Qp-7 z!niR#qDu~H!#$c{o7&f`^fV|v^=c1v0Du7Ctk$@zG|mc*Bd>85w622AQ-N#$(LCV? zPy_*)JQZO7>#H>TtBu|Yog=L>hvhn-RO1pVtb8eW0DujE(kj(D)JDJ29)kf&hSi)CxKmG(5loapk!DUrON;#=nFl082m^DANBWB(ONeseDZEFDEGfgeov? z08maRdIhAo13(HXe!2*zw4XhJCBHZU{GtkA4S-(ULXkB@%!5m?ycl$O(HNju{!e88 z#naG#5uRdC;AvH$yx0K%Jpunk;8xHXbM`a^sDy+;Kyw%~!4Q~%Yy4@1Gw@@xX^)i@ z`v3q3R7!n(4s}K;b!Hh2x}`v-V}k%doPvv)Tpk#JU{YH#rAz)9@WT0p_d>DaLomwp5Dom=$wBq(DfwgNN&-~!3e zvybft+bQJ3-MXq{4)7_B^;Eu4+cuv}pY zM~J3#1mZa&(Hw!WOn|1MQm&wsCoDtDS)e`4VG3t6gk>xd6#g@WxDNo_fH4B7_~)KY zC;CwcW)#1qcrXwxAi^@H80a4$$^qVo%!9gq=l}o*UR4LcxvZvpd411{I$Zu=-LbT? zbu`z!Fj+S*l<#pw8_+3CZBL7J0hZj!0&O21Fm`ZBmAM!a2NSaYZidWFle!pk4_K#4 z95k_=0%iavy2wHknyEs7!%zeUvH)Fm!0r`00e}NA6zL1Jgyk>5d2n+8wgoPxdWk*& z5^g0S^HemU4qd>|Z3kCsLw5#zrJJvEa+HvcXNk>_IOglYgPQQ4;1f0j*g%+zt%hOC znsN@dRwle>as2|}Ny`))u$iq6YXF8~wiI~Q$h8{XVJe^Yhunrz!dw0_J}7`CS7X=8n=C>ltN zXe(A)o40uS_J{Gd~eYcAC15G>$R`_cH>*W-}>&?JMMkA^Zxfc zKlpy@z3(>N{bt=;e^~YEZK8?;heDO}JlP(50$Ksg zp?bZqO6|%kY-#8Q(1&>%A4lb4%bnng4At>Oe&0&?Jxu5NK^35bX|NehnIbb7Ctz!3 zs*vadFypTgJ=9~L03$$wuuB95q!&X`Zb9oq(jR&+u%kHk3BbZ6`r8rS0L5M+e$j5^ zXK@G}8zinupms<>000{Rfx=4MMU|oZ8x|TTh|tkU6WdTw#a0Tg@n_0xG^vG1%G0nb z03Esk9FXOgSQ$ze4bcBk{!bQJs3IF#Xd{aqN^=m+R$$bC$OpNXb&KTQ^($$~J2K7#;V z5k$*5Vkb{vps|!RnVYNeF^my`uZCfWa?LT4GCA_!$~M zO#_y>RBeEw^D{9Hh@$e*Rc@BX%a9pugWDB>JXhspsXc71j{{}z#X5HmGz4J!4KC6L zm=A&L0a6eq_-lgT7>s=aSh@gi3&17+paDb(TVP^Iv4UPtI0S^S32+1j8?>9T~dXN0GZoQX5zAWvE>O zBXmg6u(&9kjXN4U`|4Y|a@Ebz zOm#F}8I0$HiJUu>^e3|6Od(ZS6H286i9{rsjiqx|m)BsnDYQC`!GuC@wwj$@PcUY( zdSoiKOrbOyts1RPAeM@xQj^v04n=A@dPdi7Shjh`!nIqMZrQWpz_DE?E^Rn?Y;5E9 znzkN;!yiai`BOD|S6FTL>s>K-ye3iA>4??XqgC!yZ6Md!Jh-@`4c!k6RJ0D(_l^vW zZ`rW_>%CW>e($9l z_g;Pajpr`BdF#@ujzx86K=t zm(CoyaQgVQOBXJjJn_WU%jeFVJbU`|C8rbpSZ{#sB-?Chv=GgMv|vlNT5+PE!24M7PFexu z(`<@0qqjE2T20d{;QeVfq3by8Fr@fR(Kd`KYMn0m2Mqu^0OD;H^uFnCTc*dEo9nNd z@2^=Ds9PLuUY=@Snd)4f?Ok6nZ)@ee?Uh5jsuu09S$ec_&AGN6PxKzTGynXXV^7^* z^~#r<-udH>55C*|@t^m9_Ll>n|8>vDf7w# za`f#rHgD9|OqeRhY*l04+U3!fRhiB;wevPM4sL0jzomX)Lq+EV2mn>{(8iKhGHDKz^Ud^2Y%FgJ!ho+7aQxMFCIo84`3{b3$Uz%AFN5XNBBV zkUH}sTUKn(2`m||Db6v*+4=+ujw!`4rg+9QnsSU8t~tj+Vaai=1&%e(u~%@NH5^wx z$JM|G1W>0e(x*%gYBGzo70b-6n>-`OvwLrKKK1eV{l9Gg!;c65^kDMO5B7cg!=^9( zvGk3v=U)G)VbAT#iF4WE{popoGK0HwgL?|YdkaH*Du;Jh4DZSgZjbkF@VBqF*Duvq zE>dO&C5b*UF8>#U74TeXYCxHpFH6mnr{~LZ!_w>mWyPqvYD`_TL{=DytUtf^*Z*qT z_gwd`C+pWd{i)Vtugtsh?y@_dPk!*nA0IxP zf`3>8n4Wn!_2Aea|9AOEe_Q;{_rov!Vg7T!nS1S%zRMrYzy4|W`S<%Syf^Xe=N;$n z)*gSeaOm~?q1OrrU(N1&vHHS$y&wH;^j}kB52wa{np%o$|0fHpW1jmx#@}c<|pbW?~FflZ}Q$B&V2gqmX|;4KK)YVjvJZvSMnRK zX4YR$uf3FBeL1q?V)w<@xBc#~yZ-Wz)>AKdJN7Pm>fMV|56}Mi&kIviCm%dK{^P@~ zAOFc-w{Gl{KOA^4)%WVh^2~_5uvnH|Bug)lr-xM8VFmau3@EdMvh-X@68#~%mFXUB zrdt(j)xWmO5@=Efnw8!TQ?}~uUuW-p7CHWGddc21TS*0C%0(*C6sWiM&k$cO%c;!1FY5T+J+3lfd65 z33mwt9XwyVAlxg6^zmZ@oInpZ)X$5}=cg73GNZ!mGJattt6~kOajT$xFKzBg+dF@q zeDv_>zaAa2{XEw5g(()meyZ-@4)vD zj(+>#P0p*X35R76$UNYeoLm;2Ic=fDC|WU0JG8H zJl2LzammI7xsIhq@Br{|)LwM|$x;ylfRd?jTB3je!YAQ&NAXP9j)oo%+@6J|wpfcT z(d%fSwH=046j9z|NwO!9=5A zrp$r{jI-&|5=`$QTz|nKfUy6i6KEi586Cg_m;xjr2tv>qz$h*(#ioO^F`c*^gM-ir zea5syFJ|~)j872+#32&&gc~pbe2Bad1rzykZg(aHI{@S4J}&bow!lU!gHJ3t_p*y- z0OX>(KnX?+VW2;6CW&9P0;cgxsN9)U&MX>l7M1@vnP@vGdig>o1Zw|rK`NPBN)@1y zuf$zo$ZaKns^$Y+fyzfOoJ|&znKG`#AlEsBN)tn%p>tJCo{G*<(m5(7SA`zZIBFO^ zbMz#Zmc&sr_ZAW(aFDkooqMkp?h*2UF&c?Pe*=o12skRP2_ZuBXP0lD5M(m>LmCo^%SdK7H2jxEx0#5$hTz!B@2A{|Sj=gG8U zl~$tGsEj6+$)K|tjZTZfZq_?&DuY3(*9#RYzEa1LqY*3kGE#8iCW!@83Qt91E8(bP z0!XTaCYnVPqM>LBMeukzlYl-!P}noboW~&vE`T~$reHRMU&;^wT!<+wO6G(&mvJ|~)mS1!eU18Dn?lX$p+Kn#`sz`I%{;2BQhndND65C!0 zE_=ei;G(DZsH1harEa64Fs@IJ=n{jPXsmA z0^>x#7^6yXLZ2nYI3R2Z01HJ$91v47-2qTE008n2Q%q<8MV$b50~DJHu!MjDm}4|4 z29BZKkP(i=*eF<9PQwnsSRugO07WZc!Vds*|G^u8G%W*w06-D_*Blzg^byU#Mj3r(8GS|><1w7&2i!jh0My4yDZeVg9stk;Kz$rL1k9X6MXxFWhj-j#h0Fip zBuhB3Vunl<{)0I?QQu8C17pY!ZUP_>K=h&jK)3~9KXE>E05C*Uj*=xdp;M~L znl}2-Xsr>t;n0{l)8RlP8R$~4w}tEMk$Pvm*_~|jraS!Eu3(`r1devSkwSkk*W(Aj zopxOQ-{g!pp{X~GVL@qd5;g^@G|sft8008yK)m4spdXTJMT1QhO#sEw46%+W(Xk~4 z2&sW3M(0EwQ)XaFu}ioV&Fkn2Els7P>NFICnqtsVj5?B5OV((~N)1`5qsTQB3GN9H zs3}4XL2&_`Hy0Ox3kb#wIM$*afQ}Eg9K-;e-7aU!2{j%I@?sp=XqQ%$0l-Zc^hwB} zV_6almFOuNAI_w7VF^P}!r+(SQz{td06R|ziUM0i;>)N)6+>=dsw`}couhNGG&Y9H zOjj65B6S&0His)KWs7ICM6)@8UP1`ZGlS(0RXpm;IpIvcYg4SVgNn>W@AoN31|S=Ll_RMI0#m-Q(3=sd*5w+|GQ1^e7*LK-%q^qn`O^`zUb!tp^JA1PQ2cA;Q6*4Pd9J4 zT0e27X6$Ii!h?A<+8o%P>))L3-(2Y1SlPRwqI+!t`T$mC+R%7=X{>%xq;@!1J>OU8 zcW1j?sWw}z$rP&7c=9S|Mqx`yOi`geDA4-R_so*pf%_!2L5BxU{WCBSACq$|fPNx) zLC_*VfPf(H4>Ka{9*jFea4UcbHvyQiNI-Cw4A@fGRCEgv;64D*5A;;RG?=gjo`(KI zUkI9V)wH4&FgOE~xk{17B{%tGdXH4=sfcR zdiZel(B%9bPxWnmx^u%tficdK$3)@COi$&bMG-k=m7{t9>+$ zm!|bobwP?QK+^}Px&T?_p{d=V4aiOIkpm)on5%WOv~I4}kIDW;n_o7z5a19VzZy*V zfy8|nTmA-%How{skFfIv4Zsgo^V$fm?#EOdY#>}LrH2Ueu$DkL2M~S$&}5(uvs8Y* zDg3xPROzWX+%Uvbg;|CeM*~ms3<(}&(nCBz7=>{eX&5U9ph=*uK_7qt&4kdX1B?w& zfc-#Nphqu>Dg*UOU$x3xA-1OE&a}W7tm<0av2bJ8$kyu4RZBM>o4;xw)F6jzOo2kV z&`grps2Vp*@8es-EUlNR@v<~N{A~o-z&;|f{1L7pil<@R#1Q48-7`keN8q77fzE&^ z&lE#{4z4N2HOF}7INy@Q)vR&!EOZa(BLZWTrS=QWNxmsAwC5zQN{%Thv?hVwr1qfu z88SzPZbi!J0+G%KdH+-=jKdSyG&MEg!I@gb>J2>Z#+XCXI-o5e0~>LtTJ5nWTeQ&} zuCs*d&EW=1q|q8{v?W?F-vD0jPPfAg(Ux;vZuGhG1ha?`208-Su5h6z(=fkdXyWoS zw_kbp-380Wo4fmCxw>>!Q=y?VThm(8(vz=m3uUXVftbY`^M=!rWWgPbn;jm#)u}gI zb!MyC?$jF0Dy>nj(d&#>gVFo-i)8=+AOJ~3K~$mAn&e821pTkmX$*Rs$CIwCPFL5a zYU^9)&hHiFd3&C6FVpFel% z#PQRoPhYrv?e>eWKJ)y`w_bYl&KvJve(tr&tG7-(@#2Atx3-p?dP7{aO%ds zo3Cs<`&{kNCSShCnrL<;TCK5G8}NMEpvoRa0&-6%Z1L8jJ8rz)9>?oILLaBvOT7N{7ZKiKlAa*SH9f*?jLvE|9;=6kp18H z>7RCf_}!-W{y6dKmy4eLc;L$2)}t>~Ye54&?69Y5 zG}<(t=~z|MzrJDKriQ^yH3RDkofFB%5r3f{{Y8wydWE|nLT58v_)nDiV*wz-Ge&=& zDO&y-h-*Ovy0r+$7cFQ5JX1noO^R%3i6aj_z^;PKT@X7mB5OuqNpnmIjxoV8ByrL| zje={;fDf=a$G28+ECseD$F)`PtQA~aCD&2Qb=UFSO+s(0EZC)r%~dCdw7JEG>Irkp zM%U1x^vX0V+whCO?Yj70-S%fImYqt?+mo8R zBQc5r8YXjg9Dj{Llxg~6TKfvwT5b^f-M*19Dc>;No{fdPOx+C|s^NaFpn#DFw8 zAW08O)AOa71@gkEsuCzbvh2d}+Vcm#{8uv;02n zm|Bj@|5rW)0bpVZC_t_6d=owTvUB})*V^lzbywYMF1uHpbx)u;Z8$E7abQEIr z7@j|3T{LN1G-)0>sGGY_(Y;IAyT`upkY)G~dN#Q3a`)NS_r3Gg*-yXQ^4jN}r(Vo% zyO!B>HMi+T#pWCN^;gnsFXq-=s@;Bb%l)sfO-(&9HFa}pYRhMTuH5+a`KhTB|Nh@o zKTWOw=r4P}{^#)@9-RC4!_=aq6CeL^{|^uQU;A8=S9RMtahouG$fTeVjMTSzg91R~V(K#2znnwp0f0Cs^9VEES=b-Ag!~JoX9ivk z*Zvn{7KZXaUdAHkarr+1{NWL1s=x_=`fFS=h{+Rx6#}LZ9|PzK&j8REATwJ|BvoO_ zOfq{my2s-yd6vi=o^l461xZ^PHfyEu${Av=L?_o-q*^OShDO0kI&g1vOf&=o7OM_> z@1fy28kd=9d?Omoab;G4+QHX)B>JFO7vw5DT!mX^2rF$#ojapLr*2(Hto2I`VX-ct zv_`eggjna68oXk?m#6i}Oz1A!Bh+~XS`Sa>;cEdECD4H|04RU0hp%y>5NZi;KNnkK z6KI2$Xsg1K5GmXurAMUkiZwo=#w*Zx1R57#Y3Io-T(OZOGI7Laj>saEIVDn;RqM~$ zlL13SqwuIS9;L>m(0Rlfmr!Nn%FP_95#ZHAKqv$12Uq>Gg*vWS&zII`pW;QyU2Ae};21!7yQt_24f!e^5XlQ&TO+XkHs)29-^ky|! z(4nJ_18J@@o{B6~m$T(FDD1~@2gwXFdlo>P_$74kwDiU8+ z%2v!`N@vo=v*^N^ID0m$=-i8r6TwWV{TDq>6+T85&7^<^0AOuO5v?(cB$!DS%%Gy< z5Y6ysgS=EcEOF-wAFWnKl?wT0r#|5`W!PNvEV5)4RWt)z{+3Wh=;e=<^Jb7hX#fEL zZ4d&o|AZ?*u>*iAK)=BnVTfCmU0aBTcB)TVHT-uGM!6p_5%XQ2?!vICuw%Y4UUM$8dO_+3Zq+Ta48HP*P~qoB_$XM(*uI-io+rP#cCHo55HJ)Qk8a$Ud>mWDRY zl5M_hmp|7HPJL*a?+F+B&{))q2CJ!dXROJAH2_xvI@x__#G7hGufhUAN@faj6c)Nj zN7%-a0WzZ^DDxC>msR0>J%|BBpfeFe4BUSjV1EqsV)kD{)#<1v9mS%f*mY!^j%3kN zEPArRK+FxrQp$kU$0i2zxOt%g2dYa0bSH0Bmrw#UOh*AqJFl%MHh52kTnJ1$N zm2|0&p@1d;j@HJ~SQ#o4Ri-N!Y089(IUFf=5EYkl#Lxu55zgU@O8LT4p(P4SFa zR4Ne6=JKIMfCb`hDH{MpvzZY1gpTeT2nS#x(cwXWfZ!nc*&P~=Pd$9A;>Q zNi25ar3RCXL{)&>pFnn{HTC-L2CWW&`WGQe>XbeyGYO`)=#KZ#KUB$F*<%Zsp5gF2DWx z=#w7~UAo(M;??d0x7)U(q2Q(JyV0GuB~owjSLr+zYDZRXO-fBMp)SN%`?*RFTkc|F z`v<1fhGrOG7mOtV5Jhaz2Y_V~3`znqfQ5NM;2tbC(IqA-`aUJ-#><3#hlq4P2ml}k z2ypua`a_6{w#LSJbC_au+|t1Q7aROa%~-uaGd2eF0oVyH5FO^NROz$;Aa{@?Rti9Yi~@hHB-P0^ z23Qg!Td3j+<$RUHS2J9{{AlaOn?uLm>e_QBvG~-$>G#x;rZRz%2048%Md~FJ0)Wgz zk-Df-Ctc~LDLr(Bj}C?Z0SZ_F`^to7=$H{hS1ef`i1cq}s$4X=hc0u`L{65>%T)&1 ziXcnwV=4S7m^koEfLKDv15Df^0NH;t*4oia}++BJ}Pln z(DZ4tJ|pn9$U=Rl%BA|6HKvwb@gu|S^-$$T=fYj+)XGu&*lHg~ z2lloE;Rl=af>kdIGjP~yKSvYf>LWr+9FqIc8Bk>YaJ6B=EdX#summX2XbQ+64E#aC zHAdJ32#5%55sbYApsN7Pb+y4#UC?LC?<@2&r2&RHj`oD933Cl`Tuch+A)X$yiE!$l zYY1};;7ma10oa%~j8R1)Y}HFB0Re$2uJG3@JXH#J1>cyE+p|h{j%)B61GzwWCX ztNWS<$IYI~y4D5j*6(VlomZ&r%2am=b$*h}$wY5qg7?CHzu58@jj14g56mCD0}-|% z$~DHI^wj`Kf4(WkGetoIKr@yY#{@kY;AUw?%VS()6iWh8fh8`oCNL=|A~eS(j;z?8 z<(m^CTT);QF%|Y1WpoNpiY}DswoGaaL2rJl-H~X+<qYI-aOwm{thzYWP*%o)nQ`ht2?y6H>%H zSRY{oP^SmK7P9uRL4dZSt+_LVgn-{AjoS!Pgnu9r9j;>QBs}yH`ULC@0E@9I(DAbX z4ngt0-=H(mW{WjjBaP;8y(v^@4r8Y!bo&IT;x=MUEG@u}xiTGYqQf9VI0JVD3q8@A zfpA5iJJFJF8rXX9@SE@5+q!SEv9mW--4rV{7MeR7y83$;jCKqxOjb1qQWeRn#(Zr{ zEL-CW#x3rE)g83^LRObor8n8V9+SzDBoDoF<8+y*fp}Uu6J>+ZK!ErY5$UqBP(~U*>!yBrpfUwhc_QOyKVB+ z&V#4+9zC;r^5nJa&)j+8)!TPozH$A@v!_m+JbLid(LI~jtsETa9-7y?Y2(@x#}8k- za{lg{FW-On&5z!D^EaQ~`}Ie6zj*)EFYmqj>FdwE`_hejuiSX=g{!YWar(J)`<^+o z|AkAFPoLU*;lP%s&+L2V!jVgdcOBWf_WYr}C-!bVeQ5XO-ktk)@7lj-_r>#Pu3o)( z;o^n!=PzBjeEq`Z8&5v>!t<}a`|{n7o_*uq#XE0Yc>bLuH(%U(^7_8Zw+=n|;=1EE zHl4e*?({PQn~qfVPgr6^4!sSg2`D}#C^~imuoG=9X4qk-&7NwrB-_k@&c~^CNVqqf z!bI(VlQG<=52E>cBg{7&qu{J-g;G{r`=7-1u$bd-P2snI@>nnuuq0cF{61a?_5S8W zt0~?BR38BQV2%)eh~K&eb9zUD`iGiKT{%y&=ZK=82 zGXp!a1KV>0J8}ct)BRh+UF&`At1NX(G=&Aq^nf(hBZ_p3B3+_rwQ`^PLGwB*6bKmL8i$Nw|&{`aFVel>dg z%duNuE_mXz`PV+_zkGke&5xHq^Lg)u_nS_?({byIp|Ae6EwU-hr&MkTNgBuSYo%;K~&p-O<+SJtc zFaJJp^W)P~Qzst%G!PDIr(QZYHHDsPKk(eL5C5?1A3ycH_Jyi)TvM}LQMpu6 zSgfiX)fN`Y((|OretD{2neEkQ`c2s(O>9sZ9+XFhVqJq{dwVSPUFhCP9_bK=aRgh% z{$_c!T^Q`*_&WrFZdssJ=Brf%Yvh4ik+)V7Y?1_;CBYVvr;ZEu5_y5Wz_V8hzyP3L z(o>hZCRuLp^d_+c0jd8!=SQw^YoxRt#ASgSPxU zYi_PB(+836vZcE%sV+;Z(~|74fB?{rPMeNYN4#-CzGKW3u4O9R9JPm|^D&f8l2BjD zQZPXPsCTE^olw`0PQopYWUD>d0!(AH1@ti90%#z3*y2pJx{_^fkmtLU&U86PHC>@E zDk=dC?DmI2!3?p1t8y~I1Xwu>*ICbINXUE@OKzeF)TL0%k6uem2{&Mj{b6A82__2x zAP7B$me6HH-k)Fr!Mk9?;W^V3Aj}~U&m>ShB%HE`Rsb}^CES3gbNaXm00J_bMDhN# z007Ma|EB;zKz_JbJYeIzKf(0p{hVek`6c)eBq$k#)IWoVrZb9O!B_ym^F*aKp2s^t z<&lMIz9l+`uLK+oKxv>HyNoVk@|8-xO|G?YWd^21M;B?CG6PR(<|wRS@P-@T86qo9 zWI9rO){)k` z)3Cldpmao)uDIHjlA6K-onNT)@pV3)*27i1c+ec+=4;T@#Y4k4jT8M%ISMCF;pQtn zLakqI&xkl6%syGY@bs=Nx7Pbqf=ED^UM zs8ra+QY#vqx{~74{Wpr^l)LF~Qfq@|h0t80}29S^Fq4W_5X^u|f8k8Ba2Azt--J9{2~|9UjL|*dAk8D3O@aFl%pX`-LK2c`GK(f0 zw^UVnoAjz+2~~nq{QMG(2AW0Y1MP<-m;p2V8D%{DlYwslBY^M$k7?c@(Lo1*m9Ghj zjR~G6$WnMo0&^)(KbxnU4O3&8&`L%lYnhLt4ARs=rasO#rMc#Uz+NNuw#q_1^2Cs; zV!670y{>DQeqd6+@T7J8igVpFt_`<*n_u*9e8IQj1>frDJWHSO4qtTjpKx{UceHM^ z)T}iWmg%z#HOYDEXpbt;s`53ey!9GigW6N8ao1?Q)lmEIs?fMW2GBV38fQ-J%xRzr zAg6U>{*ODS_hdl;@Z^pDN^_vnf~MXIFafqi<@$g~?Zg6rnJ+U56eh9KCfB<)X1~rB zHaepwSHkK}np|dYEgODl1UZhg&{VOG7n_q&@Lk2&9 zV);LbDD$U_NHkITwEZt31E47p1Pch80E^)u2LYhyAxv}zz+2$je=>&r5PCxq`cIdV z=s5e&fc+s8d4C+`bnpizB!P08bPn}rSAc0H0MC?CCI3}IV$OzsD`rVK1knG>=riZg z{!jWp=Kd2JKq(mnfZ627O2~u(0B8WXX#o5KNbC|4dph;cD|T9uu|GT3drJu@&@|zF z78Rd@i@X>?UharBL9aln-G@f7 z=yDrtGzF_v&ZN}n=PImpp%!@S1Ye$Tngyo3oB|nSsLhAe8>R!%&}m4hrHOPjiJmIf z(`0&zOhZ*^X$C#ntRvg?RJWe&(NWOUZ6w(Zy<|P{!Wt&H{EsF|mW0f6Ct2&m|bU^t(nyF|TEwqfL z>V{&~{eeuIBV23nWK=eEnRl{eX6*QC!UPx_Q|x3)Jq)Q2@FVgNRT`qp!%TUYAq&u@ zZo0%y7ZWwzM7cMCivjXGLjdN$4B)>5oDR4>1OY~9r0`)%;NXG(1LPkqL5m{ef_*X= z*_+sMJ6GZ0sa!mjo2$ec0A!`jbU?{#$+!c6#3LF_G(|lCn+gBiRRA&o4_gI5#$QLl z)Bl)(9U#a*ct7Dz=x5|TQ)Fd|(8ss2qz<9RudpNxo=SJTHB^|Js$WpqzPz?~Rnx$R zmU$Z+2G&>itj@J9jW;axRrK59ZCYQA)Sl<+lPqnLsmroW6>M`Y-`OJZ^{C=Q#=D{ll z-ursny>GX^_sy2~zTW)K*BjpW{i>J0Tz2czk((b3o`1XV_{(j3pKaQDqjt@Os%0lC zMA7Qr8`$+OMumA9G+~Qh&C+_*DVay%nwu!_;Nk2WT!pW zVhJ_seAQ}KLFLHFttp8yE zAVgpwjQaql!AjF60r1@lf%{L#RsTc>06Nv6^AfgbCR#MWv*ABv8x58OKqw+(Phh%G zBh|U3I+slEmFnFru@>D8Lo*FW4o)6y8C440e;NvG^NU*n%uxG}lm4I$$RN;a6f70c z6)uX*NtW8EG6%Z5vMxTDz4NEU_0Q5*KFS<<-ZQjK7jIVEV;r7_#*o{?)s}dxzhxrS zyNRufl!_f?a{nBOmn097$aQ{`To(offfXmW?pk<%wz zIHn{^A5lg-1m4EkR25I@Wh-2Kb(kUbu;f8D)&SU$@%OQm#iT!*Nc}5uZ-K(cgz$1z zKE66A(|erlW6senr4kL>;NvIiBu#y^Y#k+5Ew1cl#oPFaHomWpYtHjcIgTd5Q78F^ zO1`sMpI@R#%%^E$bWM=1Md7FG{0x1Np%2k@0k#3s(>$$@uk~>?uHkvZVxym>ax+ve zn##@8254$8UF~CPyiB=^Be!$3Ztu`msz}4t1Xx->3+#MxQX71F!w_2R1FXYs0k95e z097=mkaQubF1DwlN22gE z3~{E~%TNcHnkZKnF70_<14e$*iz7CCB(9YmAJsOSZ z&~Eqz=C~qICvoMa?i}Bg5L)6wD@+A?zr+*}=)6i>RBjH74IaA4tk8Llrf@1=-`_eo zuW|0;?uGeuGehE_$-N8>bWTtWL8dv%F-Ez@sK68xfK6qD$m#RVNdjGs779QHi1W>8 zVO(Iwl7KPFhjrpyz%+$9#)#6L)%XfBXG(01E8JNy{x!yg)}+uJ7aD^srL}~_BD2N7 zhh<1q_M{`xR!o9No1hR6Z2H<9$qpwZ?jg4hMyV+xHQ$9nKo|#<29`Qurs~F17m=OE zmH0&F-32-K4nVFa0Rddh@27}o2~nX7uh21Fu-{dDM17Yjx zNVd6)&aN}4@UgvZ_K@l-Tuo<1`wkpvas_0JF4-AfP*m>yi)u*0*;mx-@2NqPcbhXbL zZXZ}s)7D+x+>x(s$yPU~s~gibE!mouShgyZDFhQ4Uo_zj#{!YK!{@hqJZ6W>Y;$XL zMzvP2fiUQeMw8j1)9B@LxkM^e>5Q>#MSVwK--4whD>tmzx?}yGLz@m9UAyPd#=Qqu zZ`(aEwlYywZ}tYm*#<`>FEu(9cE358G6k~cK;9891ar-i%Jzo2V_l=`>IRm#Em%1? zv18fhBV(Hnt=N5X!J6G04xT%5>Dj#}uI@g1e#fCxlgH1UyL{vPJ#+<)(l`|rK=)#o37{ncl``Rv}ucVGJG%{!mJ zb^F~HZ`^<7#yfW|ymIpx)c&8`_1wAr&z(7N;o!C_hj&~$vg`ceT_^T!J3G1W;I{SK zH>^BzVAp}YJ9cl|I=O$(`Lic3Up#;5{G|&Qubeq|@wpdXeg3t(FT8Q@x!2#n`O^DW zUwZHCtv7a`dusCL3wti#T665?z9(MWa`E>3O-C~ABj#{}HQsEEwOV5>FpalaW9_zh zhb`7-jkjB(#KIydACNnV7IPfH`k0y1jLAR1{4oZb^x;OR{f{)7qs^9B8z$+uqm5WG zH3)?*+2O!^f1vkZ17RCB^0g(}0pcHTAsP;B1jHX5a@b+miaiF3H2)&f2fcd}5m3t? zE0*~iAt04+1TSAe{TO4dMY2EaZ4-e02{9moRRK^bnhnt=SO>cTSdx&xvuAr^-`c94RoV7sF?5eq=(i?Xb%8pC zD=)Gn;VcKl|DTyZ81JJiMsW!!wGkFJkHLQOVFK4CK<7zwQUn4(PKuiVq>h5bmKR&I zLUWpLO!19Lt|7@qQ)8NE&hShbzB$XYlKI<} zp)PH7u0FZIm|tS5nlLr4bN1~CPn@ql^kUyrpDupuyA>b*W96s+Tz>C=7rgp)_qC6j z4!xXPbt%2zaJ+wKvVVJ`Z(Dlqj#U44G|kT2nI1q(wglSOd74*R>Xv8=3l*tBNwimt z1pslhM;h;!#row55CEh}EC8g36!{TV#bQ;(s4NEpz|pV%*?Qo)&fQPetT~$=J)9pu zIeg^V+Razu=|33tP=?;LY2WP(d`?}Bnw(8#Z zOJ4o`k{5nEcKgc(PyTw~+9z|bd^mRVlU29AT=?4W$G-ky#ZQk`Je(T;@zHV=4<0Rh zFtzl-6q+tW3m;7_{@YZ?TYo5=e>1S-8UL22JezJh)?RV1x!_xU-aUTGz3hZ*?3iou zG20?Y{ac3)Tjn3K4NY2xCJp_2)ScT*{ktr4_Za5xRCI3A_3YI3?sSfyY&rk>qT3($ zUwyms;B(Q9H=^rq#5dneY`z}faxK33T71LRmJ=@x-MZg&>gDLh%iBKr_T=CGz443h z5C8jzYg1EeKKk?M>%TugHFbPys`c6jq0w^{hwhx2n!5DhQQyfI$L{@h$3K4PeDyO; z-D-XPgt}^(JhxbxU#Q9r%hQ9>M87IG&yXK5WEXks7cAN~xbZ~)g_nEpe%tWdpJH9x znz_CKIe>uL`N0;xuT>W9k_6kufi`iVRT^lN`0J#>I%&8;5^59$n?%7DNvK5@Y7sbV z*yfzTQOS2yfX-y8tXoSZ>Syn zX}MKpvC*>d2q`*J7965Q7ty1mB=3A$XdxrIxc1B&d%pSM@Yg>a|I>r0zlnY_*rEbe0QrB`i5ZVYftTT`8daL#2PB*$KG+c2}a!m1u>M|5%F)I{>4n;92ko zZuMq5mG)#gTUiQZ9smG9c|Oi*&c?O*B{VTzr01y|EUBrSqXZ}rP79C)Dz+RWfWX2R z3PMW(8T8A1Ia7)g`d9#X~dN&p4~k)fXe2-U>OWX^Q=01t!I`Li%z z8h`<0qQI0t1HB69!I0~KGDmP&#jOU|lywG(2V9(10x~-qOi3Imir6rN!g~zuFa;bF z>0E_eWmV~%B87!5F)+khnncf(o4HCGM`1_7lv&XrmkWan4;ohRPtx1I~gNBOcNP{6zFSlmZ_N>H`6q#chcTVFa~t9HwzWm_EKpU%8derNu)GNlsdjtE>+3(7K1san1682Q(yhxcmFo? z{eRBd`pj%=ULrFX1u8XLsvvWvka&T#6~Ky_Vgu*_965!jW=TvenS~)W(}c!3EcxSL ze#@Id6V9XyX3>Q>K_ntFKV-H7zeG;O{RC7Z;U?0fLz={uQFsvLJZTw6QVtYr6-}U| zfvu(zy@bM5K)oy*jI2v&km#R@Q})mi0;C;u)bVFfpo$-t+w&eLaj^FQ2k#H}ar6}C z`>ML@ho}5J#^j!0>A-#%XV|kT3v3LHZ!75 z%u_|X)xj1e768<~dX=YE?Wxvyt2Ayv0HH%&gTkFxIkOsPR_g}uUtKY>dQVpGMv*gm z3l@Ks87M#ny(_J@Mxg^h?c^(L*Z{yJl$*pVs~mR#=6{<{6rBK^GK~Xk09KLGDpH_>7CHa~auaj_$k73>=ZbZ|2mm4tgRf>ns2F_c z0{|0XE)f3-77(QVIZ_DrH2NQx{FmcgJQeo`;3fb93N&5Xk8}5=pS^!+IO9)DaiSlR z{>-8h@XKoWAsKfDkfvJ!$c&$DfhA-D_YdiQ85!sON%ZNAKc4}A$~>=_`iEcxUWN+9dBAI6mb#V<3>FMb z7h+(GP)8Q&$TB@ysVD37;VA8JrTAk2D1l30GK^p^^e6NK3*;=!=I=OoRFc+9~b@;v>!Q%1*!m~{y8#W z%wb8OoQ2n97tu-h@G#L$IVa!L$J2 z0s){uS+}5~eMwEvipGJpjq^6v&s|&9y&~JTBw9P{$@ZATO^zuElGA2z)CyHzj$dg<*?7Tvfv@50;N$6jjR|6Jp?>$Pjn zS1vhGSac{mxI5dwEz`R-)wMCxwJzViF4wsx-M%8-zB1V|9&cV6Z5R#LE(lc3^X2;i z1)k`z#ad0F24kQ`>qXbRoZOm#iVw*D1~@86Pcvn9i~zFIu`vM7_?sBeEdhum20j3$ zRg01TMH0s!`KrvFDD0A@O=(cg}S?IK8A zB~7T789XwrOQCm5^)9+VJ(J9ygDyE-^h1!8ab-~2FE-P_uNeG(sS+ziVusYev{>~| zWdCVcCjj|M?xcuqRGFP3bJF>0>-fpgxp!md-w9p58+-cG*t1{eZ-3MH;`i~B?+3R( z8((?K-n^9SD4_3w##1rTK_auGZ-6Uz(Pd7m+((uBu`7U+CUsF|Zi*D#eJL_GS?Vs~ zsN45EJ9zPa)!NGqo31r)yOJ2$r4BdoG(MWp%#yhTsvt`qWXk;zG6DeS_;N>11jAbd8sx_P}jDx^b796#i^tY$sb`;^N|cCJHP7a12qj9X3(F z35EO^_=A?9EgNt}=d=KTGdmargjxS!4vZ`DIfQ92wiDpu>`$>pK=%s{2%7J6{(N7y{^) z6srEw!LJE$)d36w@(V3Vg}+wrt`J%i0!xf%3bVBSp2a&m7i@}G4ePwMDpwx;WEgTA zNo16n0t$OrXbi9wPN~-K^X6)j4IWE4VDi^`Gd1pH$n4jeg92NOj>f$ZDVjCGv8DKy zgutBO8RI-~Cyw$>QJnOL)IS&Z2XKv8HbBeGF%Gs17MNmkPlYAZDRbxL&WzZa;^`A; zDlo=GXa}SwbYE1?5~Dj1bgPHPX%4XCYqiCi(ESFQ+Mp%B6%f6t4p+7dd`(kOagU4c z!9A78_~X=k7tZ*1ISE%)oOy>_Kh^+TxUpb5U*AFW2e=_A-|2w7JZuC^|A?eK(Nd5s zY6C>>-d)VvV<7?i6S#|2+FdomqGNdUcXqScdXN!ATC&t2NsH`+To zzV*=LoA*B0f9y;}OHV~(SGKx65Uq@4s?kp-SKpp*Y)@3w#4?rsSlSbgT3lYe#i2Et zH3qZMY}Faju-vHB7!@k5Sf-T9)l!*KB2!2uN|{71kw~?Ay+4*}?jIajvaEe@sB6K< z!WHY5Z{9tzb^nTOd$$}qx^~B|!KJGjdgps$$v`rjZ|>E&!cvo4Ve#7{1xqmROVv4I zm5y*#rg5NkXuQ6E$-u?x_UjMd{QTXQzP$Uw+qW*?efGk;cP_kox2wCCuaO~>|bK67~g!ENi-EgLzsYvb_)yZ3G1ym#m3gL`)!J#^^M{sSjYoH%>- z{PicFefEXdZol@<%kO>q>{}n6efss2PrrKNsaFqOdw%PgXEvUB_UN5=Hl2O0erU5l z+impM*rCcEU_RI{w~fg7TX5k&F7t1(0&EB7iA21au+oh*86uGSH(=<$KGdKKHB1wA z0Ksogv_jH9)dd0or1IO*MzD2oD~4J?bAT-gUIO6a8*eego3;>dYJ=Cd5;6c$?~l6; z+OP)DhD-Yi`++80_}>Jj{b&lPAJ71d*aN^Ancm4F`3Eg&(nX-;AF}_E7GtE<5Cw(6 z1a81+XF9E!Zd)Di?w>vX(xN^mX#_dmb zOupQI?(V`TK3eheZ#H7+|E`a}-}~vG_I&cE?H_)>?wzlfz5Lbiv!C={ez)Q9OPNhK zBFoOW=j}JPY*bY)lck2G(SC8TOYCbGds@WqMya<+8|k!X212!?@#ZDjjulnCYpZ+L zRCKRQw=Ip@o}*smX_9!FbZJ zkKg<2^85e0ofdzng@76@`)@1+I)ZFc9h;8xyEy0d; z&ZZT{n#J1uLV0RH6zvg4x`g3QVWe9U>y;+@<%t1VazL6Ilx2ownPEkKk*YAN$d5`g z3nOdJAN}fItq1OO?tZFz_1Vnmk=*iQ!-t=#+k7QCem*gNKDQ18fVLyA4qkq5#q(br z`|z7bknVrMT2B|n||_U{|M_}j)$|GMJsZE`Bt6}uelmsb1k~|W@!C&|GKNu4Oi=qKfm*j z|9j|PKOFgKYW){~?YMsL(6|3Q@vk3teE+v&xXi!jna>uy`OWD^AOKXJd^0$5uKw8b z7pA7JOg-p3|LUT*zTE!5KXknInYMnVzJ5Yey-c1Tm8XVe$$65*fIKs(%g;AvhvbQo z^`{s7@lnUyf9ZJVFHQIUxALopg}FNiWZ`+5be}ZZ&iA(n{B6QOn>f@d4z)`o?b1-2 zIM^)mHwy#JqF}2uf}U*=_?kriCLR_5c#aB=Ezhx4a2-`VcdgLhf|Y}IaiCM^>ktIH z1>s&%q>u0KVmX^=mRh={hGDO#I-59=ehK>1S1jcw7I0$2oa91YZaFi%oSI+BY}iWf zKV^9BPm@y*j{ft<9shh7dhI(}*Fk!2)tvCioZv#>|HMXk*(I#lC?`H5%q-=n$Lr6$ zx$oN_4u1W^5fA|W4hW#e6^5#Xrph66VbGMFYt0YX^8?mQzd7A&PN5SBuKiDSSb<~K zVS&>fxRuzGZSnf~x%S1zPz_VzVk=!7bRVd8m5B@`Y$a1^H%IH-8NjSrV?g_Xf`e2W zx;=0vp!^@*ZxD_<_INY40!DWuE#6GK+L1zIH==PLO8uB3sL5kVh+IFK(nWf%($10? z%Q*@#_yz8+gu+*I6jq8rGaDE6L*AcRbo#|eVSoaaVLxH$41lUTBFitv)CkP|Cyajy zoq#T#g`EIE9-vCFiz!jUPat~!LkXbpiiv(Q5nN&hs{Tpr8Pk0KS-1}XCuAXrI(-Zj zV#C&8%Q(42Ef)UIB2QN|QZWSx!~p&*oLvRT1f{3}6x9M6KoN)nZJc=k^@1g{XaY4{ ztp~tI*yxzdk_)81bO_=Nhf$Q09hDpZcF z%#u{uQW|Gk=}0M^Nx3~CvnQ3#tj1emjMQ2ZO}b!>+>zCL3Nl+-Vohkgd8IueHiVRx zh{~Qc1Zqs-dXX{0Qn*+OCsXdE6GKR-5;HSpXygUMLxzZ`9xE1#u>>Zzz{G+?fu6?G z(YRVVSIgq*nOr@CZ(vKzfd9qK`ZR$7jrvJ!HJPnOYchpKI$z5WshMIhwq%I)bdioB zF`%P`DK?^q@Tp}+G*02d)WDZvh>BD%ROp3DG_MoNbrO|UqEf5$8mrroU&uNB>HmH2 zC(f7uuKB~1>$&er8dtOBRwGBE;7Vi+fvlV*g#;QJpJFRPnm|*|m6N$jmek5t*w9}A zeWE!G+01g@j57XAK;i)R8wyh4g$f#1h3nq5bhN7yytiUK3W`8o&Qp*DO1fB06)8zP zX*o|`&Qqd=B(5ACy)ejSqJx${o2YgL3=}%XxQ~}}9xG$x{66Pb*pGGbsESWUvGPo;FEP0wJ75!ij!x-^6%rDCZ~qeg(L4UoaazBn!(Z z5)xTLp-HIdH$oPpBNoI4XhR{S0{-KG`hj1^49JM`3GV+)Djx)ZX@d7`P(frQjv9@l zh1!tZloWyh;H64zx%2PwNJY?zv$ZhvKz&Q7XoYV_?AEA8M^45d&<>y(AKowT(eH_ zhJtAT03ZNKL_t)SU9QWFsuP3iXpbh;ruH={JoRc{gW6Z8_SUG~m1-xH|7+X@jkBP3 z6_n1L2CDu+0MJg)=-oMkH*fG3%)SaspxW%OH2De!cSdcA$_;+8)+JEdcnUKn_7nvG zjoGJngpIDK$sMN`oV7ZmR={MK;_`nM z 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

>nT4x#@>OoJ)+5rmg=&ug1)2g% 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

+UWW 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 z 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ΆJ2lmga&HTj)d84UspJnotf73(RGp}|1^{d(M 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

sp!whDHvABtUhXCML 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%0AURgK%K$Ibb1Q`Is{{c2b1W?#?t@ZhfS@UF)WsI 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%0D*9{ohLecVxBT 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 {qrTcHQdoI1 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�w6ktvVXG603*e-B`eMBX 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