| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477 |
- import type {
- GlobalSettings,
- ProviderSettingsEntry,
- ProviderSettings,
- HistoryItem,
- ModeConfig,
- TelemetrySetting,
- Experiments,
- ClineMessage,
- MarketplaceItem,
- TodoItem,
- CloudUserInfo,
- CloudOrganizationMembership,
- OrganizationAllowList,
- ShareVisibility,
- QueuedMessage,
- } from "@roo-code/types"
- import { GitCommit } from "../utils/git"
- import { McpServer } from "./mcp"
- import { Mode } from "./modes"
- import { ModelRecord, RouterModels } from "./api"
- // Command interface for frontend/backend communication
- export interface Command {
- name: string
- source: "global" | "project" | "built-in"
- filePath?: string
- description?: string
- argumentHint?: string
- }
- // Type for marketplace installed metadata
- export interface MarketplaceInstalledMetadata {
- project: Record<string, { type: string }>
- global: Record<string, { type: string }>
- }
- // Indexing status types
- export interface IndexingStatus {
- systemStatus: string
- message?: string
- processedItems: number
- totalItems: number
- currentItemUnit?: string
- workspacePath?: string
- }
- export interface IndexingStatusUpdateMessage {
- type: "indexingStatusUpdate"
- values: IndexingStatus
- }
- export interface LanguageModelChatSelector {
- vendor?: string
- family?: string
- version?: string
- id?: string
- }
- // Represents JSON data that is sent from extension to webview, called
- // ExtensionMessage and has 'type' enum which can be 'plusButtonClicked' or
- // 'settingsButtonClicked' or 'hello'. Webview will hold state.
- export interface ExtensionMessage {
- type:
- | "action"
- | "state"
- | "selectedImages"
- | "theme"
- | "workspaceUpdated"
- | "invoke"
- | "messageUpdated"
- | "mcpServers"
- | "enhancedPrompt"
- | "commitSearchResults"
- | "listApiConfig"
- | "routerModels"
- | "openAiModels"
- | "ollamaModels"
- | "lmStudioModels"
- | "vsCodeLmModels"
- | "huggingFaceModels"
- | "vsCodeLmApiAvailable"
- | "updatePrompt"
- | "systemPrompt"
- | "autoApprovalEnabled"
- | "updateCustomMode"
- | "deleteCustomMode"
- | "exportModeResult"
- | "importModeResult"
- | "checkRulesDirectoryResult"
- | "deleteCustomModeCheck"
- | "currentCheckpointUpdated"
- | "checkpointInitWarning"
- | "showHumanRelayDialog"
- | "humanRelayResponse"
- | "humanRelayCancel"
- | "browserToolEnabled"
- | "browserConnectionResult"
- | "remoteBrowserEnabled"
- | "ttsStart"
- | "ttsStop"
- | "maxReadFileLine"
- | "fileSearchResults"
- | "toggleApiConfigPin"
- | "acceptInput"
- | "setHistoryPreviewCollapsed"
- | "commandExecutionStatus"
- | "mcpExecutionStatus"
- | "vsCodeSetting"
- | "authenticatedUser"
- | "condenseTaskContextResponse"
- | "singleRouterModelFetchResponse"
- | "rooCreditBalance"
- | "indexingStatusUpdate"
- | "indexCleared"
- | "codebaseIndexConfig"
- | "marketplaceInstallResult"
- | "marketplaceRemoveResult"
- | "marketplaceData"
- | "shareTaskSuccess"
- | "codeIndexSettingsSaved"
- | "codeIndexSecretStatus"
- | "showDeleteMessageDialog"
- | "showEditMessageDialog"
- | "commands"
- | "insertTextIntoTextarea"
- | "dismissedUpsells"
- | "organizationSwitchResult"
- | "interactionRequired"
- | "browserSessionUpdate"
- | "browserSessionNavigate"
- text?: string
- payload?: any // Add a generic payload for now, can refine later
- // Checkpoint warning message
- checkpointWarning?: {
- type: "WAIT_TIMEOUT" | "INIT_TIMEOUT"
- timeout: number
- }
- action?:
- | "chatButtonClicked"
- | "mcpButtonClicked"
- | "settingsButtonClicked"
- | "historyButtonClicked"
- | "promptsButtonClicked"
- | "marketplaceButtonClicked"
- | "cloudButtonClicked"
- | "didBecomeVisible"
- | "focusInput"
- | "switchTab"
- | "toggleAutoApprove"
- invoke?: "newChat" | "sendMessage" | "primaryButtonClick" | "secondaryButtonClick" | "setChatBoxMessage"
- state?: ExtensionState
- images?: string[]
- filePaths?: string[]
- openedTabs?: Array<{
- label: string
- isActive: boolean
- path?: string
- }>
- clineMessage?: ClineMessage
- routerModels?: RouterModels
- openAiModels?: string[]
- ollamaModels?: ModelRecord
- lmStudioModels?: ModelRecord
- vsCodeLmModels?: { vendor?: string; family?: string; version?: string; id?: string }[]
- huggingFaceModels?: Array<{
- id: string
- object: string
- created: number
- owned_by: string
- providers: Array<{
- provider: string
- status: "live" | "staging" | "error"
- supports_tools?: boolean
- supports_structured_output?: boolean
- context_length?: number
- pricing?: {
- input: number
- output: number
- }
- }>
- }>
- mcpServers?: McpServer[]
- commits?: GitCommit[]
- listApiConfig?: ProviderSettingsEntry[]
- mode?: Mode
- customMode?: ModeConfig
- slug?: string
- success?: boolean
- values?: Record<string, any>
- requestId?: string
- promptText?: string
- results?: { path: string; type: "file" | "folder"; label?: string }[]
- error?: string
- setting?: string
- value?: any
- hasContent?: boolean // For checkRulesDirectoryResult
- items?: MarketplaceItem[]
- userInfo?: CloudUserInfo
- organizationAllowList?: OrganizationAllowList
- tab?: string
- marketplaceItems?: MarketplaceItem[]
- organizationMcps?: MarketplaceItem[]
- marketplaceInstalledMetadata?: MarketplaceInstalledMetadata
- errors?: string[]
- visibility?: ShareVisibility
- rulesFolderPath?: string
- settings?: any
- messageTs?: number
- hasCheckpoint?: boolean
- context?: string
- commands?: Command[]
- queuedMessages?: QueuedMessage[]
- list?: string[] // For dismissedUpsells
- organizationId?: string | null // For organizationSwitchResult
- browserSessionMessages?: ClineMessage[] // For browser session panel updates
- isBrowserSessionActive?: boolean // For browser session panel updates
- stepIndex?: number // For browserSessionNavigate: the target step index to display
- }
- export type ExtensionState = Pick<
- GlobalSettings,
- | "currentApiConfigName"
- | "listApiConfigMeta"
- | "pinnedApiConfigs"
- | "customInstructions"
- | "dismissedUpsells"
- | "autoApprovalEnabled"
- | "alwaysAllowReadOnly"
- | "alwaysAllowReadOnlyOutsideWorkspace"
- | "alwaysAllowWrite"
- | "alwaysAllowWriteOutsideWorkspace"
- | "alwaysAllowWriteProtected"
- | "alwaysAllowBrowser"
- | "alwaysApproveResubmit"
- | "alwaysAllowMcp"
- | "alwaysAllowModeSwitch"
- | "alwaysAllowSubtasks"
- | "alwaysAllowFollowupQuestions"
- | "alwaysAllowExecute"
- | "alwaysAllowUpdateTodoList"
- | "followupAutoApproveTimeoutMs"
- | "allowedCommands"
- | "deniedCommands"
- | "allowedMaxRequests"
- | "allowedMaxCost"
- | "browserToolEnabled"
- | "browserViewportSize"
- | "screenshotQuality"
- | "remoteBrowserEnabled"
- | "cachedChromeHostUrl"
- | "remoteBrowserHost"
- | "ttsEnabled"
- | "ttsSpeed"
- | "soundEnabled"
- | "soundVolume"
- | "maxConcurrentFileReads"
- | "terminalOutputLineLimit"
- | "terminalOutputCharacterLimit"
- | "terminalShellIntegrationTimeout"
- | "terminalShellIntegrationDisabled"
- | "terminalCommandDelay"
- | "terminalPowershellCounter"
- | "terminalZshClearEolMark"
- | "terminalZshOhMy"
- | "terminalZshP10k"
- | "terminalZdotdir"
- | "terminalCompressProgressBar"
- | "diagnosticsEnabled"
- | "diffEnabled"
- | "fuzzyMatchThreshold"
- | "language"
- | "modeApiConfigs"
- | "customModePrompts"
- | "customSupportPrompts"
- | "enhancementApiConfigId"
- | "condensingApiConfigId"
- | "customCondensingPrompt"
- | "codebaseIndexConfig"
- | "codebaseIndexModels"
- | "profileThresholds"
- | "includeDiagnosticMessages"
- | "maxDiagnosticMessages"
- | "openRouterImageGenerationSelectedModel"
- | "includeTaskHistoryInEnhance"
- | "reasoningBlockCollapsed"
- | "includeCurrentTime"
- | "includeCurrentCost"
- | "maxGitStatusFiles"
- > & {
- version: string
- clineMessages: ClineMessage[]
- currentTaskItem?: HistoryItem
- currentTaskTodos?: TodoItem[] // Initial todos for the current task
- apiConfiguration: ProviderSettings
- uriScheme?: string
- shouldShowAnnouncement: boolean
- taskHistory: HistoryItem[]
- writeDelayMs: number
- requestDelaySeconds: number
- enableCheckpoints: boolean
- checkpointTimeout: number // Timeout for checkpoint initialization in seconds (default: 15)
- maxOpenTabsContext: number // Maximum number of VSCode open tabs to include in context (0-500)
- maxWorkspaceFiles: number // Maximum number of files to include in current working directory details (0-500)
- showRooIgnoredFiles: boolean // Whether to show .rooignore'd files in listings
- maxReadFileLine: number // Maximum number of lines to read from a file before truncating
- maxImageFileSize: number // Maximum size of image files to process in MB
- maxTotalImageSize: number // Maximum total size for all images in a single read operation in MB
- experiments: Experiments // Map of experiment IDs to their enabled state
- mcpEnabled: boolean
- enableMcpServerCreation: boolean
- mode: Mode
- customModes: ModeConfig[]
- toolRequirements?: Record<string, boolean> // Map of tool names to their requirements (e.g. {"apply_diff": true} if diffEnabled)
- cwd?: string // Current working directory
- telemetrySetting: TelemetrySetting
- telemetryKey?: string
- machineId?: string
- renderContext: "sidebar" | "editor"
- settingsImportedAt?: number
- historyPreviewCollapsed?: boolean
- cloudUserInfo: CloudUserInfo | null
- cloudIsAuthenticated: boolean
- cloudApiUrl?: string
- cloudOrganizations?: CloudOrganizationMembership[]
- sharingEnabled: boolean
- organizationAllowList: OrganizationAllowList
- organizationSettingsVersion?: number
- isBrowserSessionActive: boolean // Actual browser session state
- autoCondenseContext: boolean
- autoCondenseContextPercent: number
- marketplaceItems?: MarketplaceItem[]
- marketplaceInstalledMetadata?: { project: Record<string, any>; global: Record<string, any> }
- profileThresholds: Record<string, number>
- hasOpenedModeSelector: boolean
- openRouterImageApiKey?: string
- openRouterUseMiddleOutTransform?: boolean
- messageQueue?: QueuedMessage[]
- lastShownAnnouncementId?: string
- apiModelId?: string
- mcpServers?: McpServer[]
- hasSystemPromptOverride?: boolean
- mdmCompliant?: boolean
- remoteControlEnabled: boolean
- taskSyncEnabled: boolean
- featureRoomoteControlEnabled: boolean
- }
- export interface ClineSayTool {
- tool:
- | "editedExistingFile"
- | "appliedDiff"
- | "newFileCreated"
- | "codebaseSearch"
- | "readFile"
- | "fetchInstructions"
- | "listFilesTopLevel"
- | "listFilesRecursive"
- | "listCodeDefinitionNames"
- | "searchFiles"
- | "switchMode"
- | "newTask"
- | "finishTask"
- | "insertContent"
- | "generateImage"
- | "imageGenerated"
- | "runSlashCommand"
- | "updateTodoList"
- path?: string
- diff?: string
- content?: string
- // Unified diff statistics computed by the extension
- diffStats?: { added: number; removed: number }
- regex?: string
- filePattern?: string
- mode?: string
- reason?: string
- isOutsideWorkspace?: boolean
- isProtected?: boolean
- additionalFileCount?: number // Number of additional files in the same read_file request
- lineNumber?: number
- query?: string
- batchFiles?: Array<{
- path: string
- lineSnippet: string
- isOutsideWorkspace?: boolean
- key: string
- content?: string
- }>
- batchDiffs?: Array<{
- path: string
- changeCount: number
- key: string
- content: string
- // Per-file unified diff statistics computed by the extension
- diffStats?: { added: number; removed: number }
- diffs?: Array<{
- content: string
- startLine?: number
- }>
- }>
- question?: string
- imageData?: string // Base64 encoded image data for generated images
- // Properties for runSlashCommand tool
- command?: string
- args?: string
- source?: string
- description?: string
- }
- // Must keep in sync with system prompt.
- export const browserActions = [
- "launch",
- "click",
- "hover",
- "type",
- "press",
- "scroll_down",
- "scroll_up",
- "resize",
- "close",
- ] as const
- export type BrowserAction = (typeof browserActions)[number]
- export interface ClineSayBrowserAction {
- action: BrowserAction
- coordinate?: string
- size?: string
- text?: string
- executedCoordinate?: string
- }
- export type BrowserActionResult = {
- screenshot?: string
- logs?: string
- currentUrl?: string
- currentMousePosition?: string
- viewportWidth?: number
- viewportHeight?: number
- }
- export interface ClineAskUseMcpServer {
- serverName: string
- type: "use_mcp_tool" | "access_mcp_resource"
- toolName?: string
- arguments?: string
- uri?: string
- response?: string
- }
- export interface ClineApiReqInfo {
- request?: string
- tokensIn?: number
- tokensOut?: number
- cacheWrites?: number
- cacheReads?: number
- cost?: number
- cancelReason?: ClineApiReqCancelReason
- streamingFailedMessage?: string
- apiProtocol?: "anthropic" | "openai"
- }
- export type ClineApiReqCancelReason = "streaming_failed" | "user_cancelled"
|