import { z } from "zod" import type { ProviderSettings, PromptComponent, ModeConfig, InstallMarketplaceItemOptions, MarketplaceItem, ShareVisibility, } from "@roo-code/types" import { marketplaceItemSchema } from "@roo-code/types" import { Mode } from "./modes" export type ClineAskResponse = "yesButtonClicked" | "noButtonClicked" | "messageResponse" | "objectResponse" export type PromptMode = Mode | "enhance" export type AudioType = "notification" | "celebration" | "progress_loop" export interface UpdateTodoListPayload { todos: any[] } export interface WebviewMessage { type: | "updateTodoList" | "deleteMultipleTasksWithIds" | "currentApiConfigName" | "saveApiConfiguration" | "upsertApiConfiguration" | "deleteApiConfiguration" | "loadApiConfiguration" | "loadApiConfigurationById" | "renameApiConfiguration" | "getListApiConfiguration" | "customInstructions" | "allowedCommands" | "deniedCommands" | "alwaysAllowReadOnly" | "alwaysAllowReadOnlyOutsideWorkspace" | "alwaysAllowWrite" | "alwaysAllowWriteOutsideWorkspace" | "alwaysAllowWriteProtected" | "alwaysAllowExecute" | "alwaysAllowFollowupQuestions" | "alwaysAllowUpdateTodoList" | "followupAutoApproveTimeoutMs" | "webviewDidLaunch" | "newTask" | "askResponse" | "terminalOperation" | "clearTask" | "didShowAnnouncement" | "selectImages" | "exportCurrentTask" | "shareCurrentTask" | "showTaskWithId" | "deleteTaskWithId" | "exportTaskWithId" | "importSettings" | "exportSettings" | "resetState" | "flushRouterModels" | "requestRouterModels" | "requestOpenAiModels" | "requestOllamaModels" | "requestLmStudioModels" | "requestVsCodeLmModels" | "openImage" | "saveImage" | "openFile" | "openMention" | "cancelTask" | "updateVSCodeSetting" | "getVSCodeSetting" | "vsCodeSetting" | "alwaysAllowBrowser" | "alwaysAllowMcp" | "alwaysAllowModeSwitch" | "allowedMaxRequests" | "alwaysAllowSubtasks" | "alwaysAllowUpdateTodoList" | "autoCondenseContext" | "autoCondenseContextPercent" | "condensingApiConfigId" | "updateCondensingPrompt" | "playSound" | "playTts" | "stopTts" | "soundEnabled" | "ttsEnabled" | "ttsSpeed" | "soundVolume" | "diffEnabled" | "enableCheckpoints" | "browserViewportSize" | "screenshotQuality" | "remoteBrowserHost" | "openMcpSettings" | "openProjectMcpSettings" | "restartMcpServer" | "refreshAllMcpServers" | "toggleToolAlwaysAllow" | "toggleToolEnabledForPrompt" | "toggleMcpServer" | "updateMcpTimeout" | "fuzzyMatchThreshold" | "writeDelayMs" | "enhancePrompt" | "enhancedPrompt" | "draggedImages" | "deleteMessage" | "deleteMessageConfirm" | "submitEditedMessage" | "editMessageConfirm" | "terminalOutputLineLimit" | "terminalShellIntegrationTimeout" | "terminalShellIntegrationDisabled" | "terminalCommandDelay" | "terminalPowershellCounter" | "terminalZshClearEolMark" | "terminalZshOhMy" | "terminalZshP10k" | "terminalZdotdir" | "terminalCompressProgressBar" | "mcpEnabled" | "enableMcpServerCreation" | "searchCommits" | "alwaysApproveResubmit" | "requestDelaySeconds" | "setApiConfigPassword" | "mode" | "updatePrompt" | "updateSupportPrompt" | "getSystemPrompt" | "copySystemPrompt" | "systemPrompt" | "enhancementApiConfigId" | "updateExperimental" | "autoApprovalEnabled" | "updateCustomMode" | "deleteCustomMode" | "setopenAiCustomModelInfo" | "openCustomModesSettings" | "checkpointDiff" | "checkpointRestore" | "deleteMcpServer" | "maxOpenTabsContext" | "maxWorkspaceFiles" | "humanRelayResponse" | "humanRelayCancel" | "browserToolEnabled" | "codebaseIndexEnabled" | "telemetrySetting" | "showRooIgnoredFiles" | "testBrowserConnection" | "browserConnectionResult" | "remoteBrowserEnabled" | "language" | "maxReadFileLine" | "maxConcurrentFileReads" | "searchFiles" | "toggleApiConfigPin" | "setHistoryPreviewCollapsed" | "hasOpenedModeSelector" | "accountButtonClicked" | "rooCloudSignIn" | "rooCloudSignOut" | "condenseTaskContextRequest" | "requestIndexingStatus" | "startIndexing" | "clearIndexData" | "indexingStatusUpdate" | "indexCleared" | "focusPanelRequest" | "profileThresholds" | "setHistoryPreviewCollapsed" | "openExternal" | "filterMarketplaceItems" | "marketplaceButtonClicked" | "installMarketplaceItem" | "installMarketplaceItemWithParameters" | "cancelMarketplaceInstall" | "removeInstalledMarketplaceItem" | "marketplaceInstallResult" | "fetchMarketplaceData" | "switchTab" | "profileThresholds" | "shareTaskSuccess" | "exportMode" | "exportModeResult" | "importMode" | "importModeResult" | "checkRulesDirectory" | "checkRulesDirectoryResult" | "saveCodeIndexSettingsAtomic" | "requestCodeIndexSecretStatus" text?: string editedMessageContent?: string tab?: "settings" | "history" | "mcp" | "modes" | "chat" | "marketplace" | "account" disabled?: boolean context?: string dataUri?: string askResponse?: ClineAskResponse apiConfiguration?: ProviderSettings images?: string[] bool?: boolean value?: number commands?: string[] audioType?: AudioType serverName?: string toolName?: string alwaysAllow?: boolean isEnabled?: boolean mode?: Mode promptMode?: PromptMode customPrompt?: PromptComponent dataUrls?: string[] values?: Record query?: string setting?: string slug?: string modeConfig?: ModeConfig timeout?: number payload?: WebViewMessagePayload source?: "global" | "project" requestId?: string ids?: string[] hasSystemPromptOverride?: boolean terminalOperation?: "continue" | "abort" messageTs?: number historyPreviewCollapsed?: boolean filters?: { type?: string; search?: string; tags?: string[] } url?: string // For openExternal mpItem?: MarketplaceItem mpInstallOptions?: InstallMarketplaceItemOptions config?: Record // Add config to the payload visibility?: ShareVisibility // For share visibility hasContent?: boolean // For checkRulesDirectoryResult checkOnly?: boolean // For deleteCustomMode check codeIndexSettings?: { // Global state settings codebaseIndexEnabled: boolean codebaseIndexQdrantUrl: string codebaseIndexEmbedderProvider: "openai" | "ollama" | "openai-compatible" | "gemini" codebaseIndexEmbedderBaseUrl?: string codebaseIndexEmbedderModelId: string codebaseIndexEmbedderModelDimension?: number // Generic dimension for all providers codebaseIndexOpenAiCompatibleBaseUrl?: string codebaseIndexSearchMaxResults?: number codebaseIndexSearchMinScore?: number // Secret settings codeIndexOpenAiKey?: string codeIndexQdrantApiKey?: string codebaseIndexOpenAiCompatibleApiKey?: string codebaseIndexGeminiApiKey?: string } } export const checkoutDiffPayloadSchema = z.object({ ts: z.number(), previousCommitHash: z.string().optional(), commitHash: z.string(), mode: z.enum(["full", "checkpoint"]), }) export type CheckpointDiffPayload = z.infer export const checkoutRestorePayloadSchema = z.object({ ts: z.number(), commitHash: z.string(), mode: z.enum(["preview", "restore"]), }) export type CheckpointRestorePayload = z.infer export interface IndexingStatusPayload { state: "Standby" | "Indexing" | "Indexed" | "Error" message: string } export interface IndexClearedPayload { success: boolean error?: string } export const installMarketplaceItemWithParametersPayloadSchema = z.object({ item: marketplaceItemSchema, parameters: z.record(z.string(), z.any()), }) export type InstallMarketplaceItemWithParametersPayload = z.infer< typeof installMarketplaceItemWithParametersPayloadSchema > export type WebViewMessagePayload = | CheckpointDiffPayload | CheckpointRestorePayload | IndexingStatusPayload | IndexClearedPayload | InstallMarketplaceItemWithParametersPayload | UpdateTodoListPayload