| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- // type that represents json data that is sent from extension to webview, called ExtensionMessage and has 'type' enum which can be 'plusButtonClicked' or 'settingsButtonClicked' or 'hello'
- import { ApiConfiguration, ApiProvider, ModelInfo } from "./api"
- import { HistoryItem } from "./HistoryItem"
- import { McpServer } from "./mcp"
- import { GitCommit } from "../utils/git"
- import { Mode, CustomModePrompts, ModeConfig } from "./modes"
- import { CustomSupportPrompts } from "./support-prompt"
- import { ExperimentId } from "./experiments"
- export interface LanguageModelChatSelector {
- vendor?: string
- family?: string
- version?: string
- id?: string
- }
- // webview will hold state
- export interface ExtensionMessage {
- type:
- | "action"
- | "state"
- | "selectedImages"
- | "ollamaModels"
- | "lmStudioModels"
- | "theme"
- | "workspaceUpdated"
- | "invoke"
- | "partialMessage"
- | "openRouterModels"
- | "glamaModels"
- | "unboundModels"
- | "requestyModels"
- | "openAiModels"
- | "mcpServers"
- | "enhancedPrompt"
- | "commitSearchResults"
- | "listApiConfig"
- | "vsCodeLmModels"
- | "vsCodeLmApiAvailable"
- | "requestVsCodeLmModels"
- | "updatePrompt"
- | "systemPrompt"
- | "autoApprovalEnabled"
- | "updateCustomMode"
- | "deleteCustomMode"
- | "currentCheckpointUpdated"
- text?: string
- action?:
- | "chatButtonClicked"
- | "mcpButtonClicked"
- | "settingsButtonClicked"
- | "historyButtonClicked"
- | "promptsButtonClicked"
- | "didBecomeVisible"
- invoke?: "sendMessage" | "primaryButtonClick" | "secondaryButtonClick" | "setChatBoxMessage"
- state?: ExtensionState
- images?: string[]
- ollamaModels?: string[]
- lmStudioModels?: string[]
- vsCodeLmModels?: { vendor?: string; family?: string; version?: string; id?: string }[]
- filePaths?: string[]
- openedTabs?: Array<{
- label: string
- isActive: boolean
- path?: string
- }>
- partialMessage?: ClineMessage
- openRouterModels?: Record<string, ModelInfo>
- glamaModels?: Record<string, ModelInfo>
- unboundModels?: Record<string, ModelInfo>
- requestyModels?: Record<string, ModelInfo>
- openAiModels?: string[]
- mcpServers?: McpServer[]
- commits?: GitCommit[]
- listApiConfig?: ApiConfigMeta[]
- mode?: Mode
- customMode?: ModeConfig
- slug?: string
- }
- export interface ApiConfigMeta {
- id: string
- name: string
- apiProvider?: ApiProvider
- }
- export interface ExtensionState {
- version: string
- clineMessages: ClineMessage[]
- taskHistory: HistoryItem[]
- shouldShowAnnouncement: boolean
- apiConfiguration?: ApiConfiguration
- currentApiConfigName?: string
- listApiConfigMeta?: ApiConfigMeta[]
- customInstructions?: string
- customModePrompts?: CustomModePrompts
- customSupportPrompts?: CustomSupportPrompts
- alwaysAllowReadOnly?: boolean
- alwaysAllowWrite?: boolean
- alwaysAllowExecute?: boolean
- alwaysAllowBrowser?: boolean
- alwaysAllowMcp?: boolean
- alwaysApproveResubmit?: boolean
- alwaysAllowModeSwitch?: boolean
- requestDelaySeconds: number
- rateLimitSeconds: number // Minimum time between successive requests (0 = disabled)
- uriScheme?: string
- currentTaskItem?: HistoryItem
- allowedCommands?: string[]
- soundEnabled?: boolean
- soundVolume?: number
- diffEnabled?: boolean
- checkpointsEnabled: boolean
- browserViewportSize?: string
- screenshotQuality?: number
- fuzzyMatchThreshold?: number
- preferredLanguage: string
- writeDelayMs: number
- terminalOutputLineLimit?: number
- mcpEnabled: boolean
- enableMcpServerCreation: boolean
- mode: Mode
- modeApiConfigs?: Record<Mode, string>
- enhancementApiConfigId?: string
- experiments: Record<ExperimentId, boolean> // Map of experiment IDs to their enabled state
- autoApprovalEnabled?: boolean
- customModes: ModeConfig[]
- toolRequirements?: Record<string, boolean> // Map of tool names to their requirements (e.g. {"apply_diff": true} if diffEnabled)
- maxOpenTabsContext: number // Maximum number of VSCode open tabs to include in context (0-500)
- cwd?: string // Current working directory
- }
- export interface ClineMessage {
- ts: number
- type: "ask" | "say"
- ask?: ClineAsk
- say?: ClineSay
- text?: string
- images?: string[]
- partial?: boolean
- reasoning?: string
- conversationHistoryIndex?: number
- checkpoint?: Record<string, unknown>
- }
- export type ClineAsk =
- | "followup"
- | "command"
- | "command_output"
- | "completion_result"
- | "tool"
- | "api_req_failed"
- | "resume_task"
- | "resume_completed_task"
- | "mistake_limit_reached"
- | "browser_action_launch"
- | "use_mcp_server"
- export type ClineSay =
- | "task"
- | "error"
- | "api_req_started"
- | "api_req_finished"
- | "api_req_retried"
- | "api_req_retry_delayed"
- | "api_req_deleted"
- | "text"
- | "reasoning"
- | "completion_result"
- | "user_feedback"
- | "user_feedback_diff"
- | "command_output"
- | "tool"
- | "shell_integration_warning"
- | "browser_action"
- | "browser_action_result"
- | "command"
- | "mcp_server_request_started"
- | "mcp_server_response"
- | "new_task_started"
- | "new_task"
- | "checkpoint_saved"
- export interface ClineSayTool {
- tool:
- | "editedExistingFile"
- | "appliedDiff"
- | "newFileCreated"
- | "readFile"
- | "listFilesTopLevel"
- | "listFilesRecursive"
- | "listCodeDefinitionNames"
- | "searchFiles"
- | "switchMode"
- | "newTask"
- path?: string
- diff?: string
- content?: string
- regex?: string
- filePattern?: string
- mode?: string
- reason?: string
- }
- // must keep in sync with system prompt
- export const browserActions = ["launch", "click", "type", "scroll_down", "scroll_up", "close"] as const
- export type BrowserAction = (typeof browserActions)[number]
- export interface ClineSayBrowserAction {
- action: BrowserAction
- coordinate?: string
- text?: string
- }
- export type BrowserActionResult = {
- screenshot?: string
- logs?: string
- currentUrl?: string
- currentMousePosition?: string
- }
- export interface ClineAskUseMcpServer {
- serverName: string
- type: "use_mcp_tool" | "access_mcp_resource"
- toolName?: string
- arguments?: string
- uri?: string
- }
- export interface ClineApiReqInfo {
- request?: string
- tokensIn?: number
- tokensOut?: number
- cacheWrites?: number
- cacheReads?: number
- cost?: number
- cancelReason?: ClineApiReqCancelReason
- streamingFailedMessage?: string
- }
- export type ClineApiReqCancelReason = "streaming_failed" | "user_cancelled"
|