mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
482 lines
12 KiB
TypeScript
482 lines
12 KiB
TypeScript
import type {
|
|
GlobalSettings,
|
|
ProviderSettingsEntry,
|
|
ProviderSettings,
|
|
HistoryItem,
|
|
ModeConfig,
|
|
TelemetrySetting,
|
|
Experiments,
|
|
ClineMessage,
|
|
MarketplaceItem,
|
|
TodoItem,
|
|
CloudUserInfo,
|
|
CloudOrganizationMembership,
|
|
OrganizationAllowList,
|
|
ShareVisibility,
|
|
QueuedMessage,
|
|
SerializedCustomToolDefinition,
|
|
} 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"
|
|
| "condenseTaskContextStarted"
|
|
| "condenseTaskContextResponse"
|
|
| "singleRouterModelFetchResponse"
|
|
| "rooCreditBalance"
|
|
| "indexingStatusUpdate"
|
|
| "indexCleared"
|
|
| "codebaseIndexConfig"
|
|
| "marketplaceInstallResult"
|
|
| "marketplaceRemoveResult"
|
|
| "marketplaceData"
|
|
| "shareTaskSuccess"
|
|
| "codeIndexSettingsSaved"
|
|
| "codeIndexSecretStatus"
|
|
| "showDeleteMessageDialog"
|
|
| "showEditMessageDialog"
|
|
| "commands"
|
|
| "insertTextIntoTextarea"
|
|
| "dismissedUpsells"
|
|
| "organizationSwitchResult"
|
|
| "interactionRequired"
|
|
| "browserSessionUpdate"
|
|
| "browserSessionNavigate"
|
|
| "claudeCodeRateLimits"
|
|
| "customToolsResult"
|
|
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"
|
|
| "settingsButtonClicked"
|
|
| "historyButtonClicked"
|
|
| "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
|
|
tools?: SerializedCustomToolDefinition[] // For customToolsResult
|
|
}
|
|
|
|
export type ExtensionState = Pick<
|
|
GlobalSettings,
|
|
| "currentApiConfigName"
|
|
| "listApiConfigMeta"
|
|
| "pinnedApiConfigs"
|
|
| "customInstructions"
|
|
| "dismissedUpsells"
|
|
| "autoApprovalEnabled"
|
|
| "alwaysAllowReadOnly"
|
|
| "alwaysAllowReadOnlyOutsideWorkspace"
|
|
| "alwaysAllowWrite"
|
|
| "alwaysAllowWriteOutsideWorkspace"
|
|
| "alwaysAllowWriteProtected"
|
|
| "alwaysAllowBrowser"
|
|
| "alwaysAllowMcp"
|
|
| "alwaysAllowModeSwitch"
|
|
| "alwaysAllowSubtasks"
|
|
| "alwaysAllowFollowupQuestions"
|
|
| "alwaysAllowExecute"
|
|
| "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"
|
|
| "imageGenerationProvider"
|
|
| "openRouterImageGenerationSelectedModel"
|
|
| "includeTaskHistoryInEnhance"
|
|
| "reasoningBlockCollapsed"
|
|
| "enterBehavior"
|
|
| "includeCurrentTime"
|
|
| "includeCurrentCost"
|
|
| "maxGitStatusFiles"
|
|
| "requestDelaySeconds"
|
|
> & {
|
|
version: string
|
|
clineMessages: ClineMessage[]
|
|
currentTaskItem?: HistoryItem
|
|
currentTaskTodos?: TodoItem[] // Initial todos for the current task
|
|
apiConfiguration: ProviderSettings
|
|
uriScheme?: string
|
|
shouldShowAnnouncement: boolean
|
|
|
|
taskHistory: HistoryItem[]
|
|
|
|
writeDelayMs: 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
|
|
publicSharingEnabled: 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
|
|
claudeCodeIsAuthenticated?: boolean
|
|
debug?: boolean
|
|
}
|
|
|
|
export interface ClineSayTool {
|
|
tool:
|
|
| "editedExistingFile"
|
|
| "appliedDiff"
|
|
| "newFileCreated"
|
|
| "codebaseSearch"
|
|
| "readFile"
|
|
| "fetchInstructions"
|
|
| "listFilesTopLevel"
|
|
| "listFilesRecursive"
|
|
| "searchFiles"
|
|
| "switchMode"
|
|
| "newTask"
|
|
| "finishTask"
|
|
| "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",
|
|
"screenshot",
|
|
] 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"
|