mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
* feat: apply changes from local main * fix: add missing types * feat: deduplicate code blocks coming out of parser * feat: implement a cache manager to improve cache handling * refactor: move code index service initialization to extension and remove await from indexing process * fix: return undefined instead of throwing if no workspace is detected * feat: allow auto approve if it is active for read tools * refactor: improve UI of the results and allow opening the ranges directly in the editor * refactor: use dependency injection to improve performance * feat: implement result filtering by directory path * refactor: centralize path normalization logic * refactor: remove unnecessary barrel file * refactor: prevent restarting the service if no settings change * fix: the indexing process should never be awaited * refactor: cleanup unused method * refactor: remove batch limits for ollama * refactor(parser): simplify method signatures and improve chunking logic - Remove redundant min/max chars parameters - Add better handling for oversized lines - Improve chunking logic with segment handling - Clean up method signatures and parameter ordering * fix(settings): make select inputs full width in CodeIndexSettings * refactor: increase max list file limit * feat(ui): improve codebase search result display formatting * test: add tests for cache and config managers * test: create unit tests for parser and scanner * feat(parser): improve segment hash uniqueness - Added startCharIndex to segment hash calculation in _chunkTextByLines - Track character position when splitting oversized lines - Ensures unique identification of segments from same line * feat(file-watcher): add error logging and optional ignoreController injection * fix: allow getting the state if the service is disabled * fix: set the embedding models when cline provider is initialized * feat: use zod to validate form * feat(file-watcher): enhance file watcher for batched deletions and improved vector store interactions Improve file watcher to handle file deletions in batches and optimize vector store operations. * feat(CodeIndexSettings): move OpenAI key input to a conditional rendering block * feat(CodeIndexSettings): update button visibility based on indexing status * feat(file-watcher): refactor vscode mock and enhance file watcher tests * fix(CodeIndexManager): do not await startIndexing on configuration changes * feat(types): add codeIndexOpenAiKey and codeIndexQdrantApiKey to ProviderSettings and IpcMessage * feat(FileWatcher): enhance file processing with batch operations and new status handling * fix(webviewMessageHandler): handle errors during CodeIndexManager initialization * refactor(CodeIndexManager): streamline service creation by consolidating into a single method * feat(CodeIndex): implement minimum search score configuration and update search methods * refactor(CodeIndexSettings): replace ApiConfiguration with ProviderSettings and update related methods * refactor: move contants to centralized file * refactor(constants): rename CODEBASE_INDEX_SEARCH_MIN_SCORE to SEARCH_MIN_SCORE * feat(QdrantVectorStore): enhance search functionality with new query structure and indexing * feat(FileWatcher): implement batch processing and retry logic for upserting points * fix(CodeIndexSettings): rename setProviderSettingsField to setApiConfigurationField and move model label * fix(ChatRow): remove limit from search query messages * refactor(CodebaseSearchResult): remove unused props from component * feat: implement batch processing for file events in FileWatcher - Introduced a new mechanism to accumulate file events (create, change, delete) and process them in batches. - Added debounce functionality to optimize processing frequency. - Emitted events for batch processing start, progress updates, and completion with detailed summaries. - Refactored existing processing logic to handle batch deletions and upserts efficiently. - Enhanced error handling and logging for better traceability during batch operations. * feat(CodeIndex): implement batch processing and update progress reporting * fix: define a default url for qdrant * feat(CodeIndexManager): add initialization check and update startIndexing logic * feat(CodeIndexSettings): validate Qdrant URL and update settings commitment logic * feat: refactor progress calculation and update progress bar rendering * refactor: remove webview provider and related methods * fix: simplify indexing status update by directly using update values * feat: integrate .gitignore support into file processing and scanning logic * fix: update clearCacheFile method to write an empty object instead of deleting the cache file * Revert this * Run prettier * fix: add new dependencies for qdrant client and directory scanner * feat: add codebase search functionality to localization files * feat: add localization strings for codebase indexing settings * feat: integrate CodeIndexSettings into ExperimentalSettings and update settings localization * refactor: remove console logs from various components for cleaner output * feat: enhance capabilities section and codebase search tool description * feat: add code indexing localization for multiple languages * fix: correct indentation for CodeIndexSettings component in ExperimentalSettings * refactor: update unit tests to properly test current functionality * feat: add mock implementation for p-limit and update Jest config * feat: track file creation, change, and deletion events in accumulatedEvents * refactor: simplify file watcher tests by removing waitForFileProcessingToFinish and using direct event accumulation * refactor: mock ContextProxy's getValue method to return current config name in ClineProvider tests * refactor: mock missing properties required by codebase indexing manager --------- Co-authored-by: cte <cestreich@gmail.com>
304 lines
7.7 KiB
TypeScript
304 lines
7.7 KiB
TypeScript
import { GitCommit } from "../utils/git"
|
|
|
|
import {
|
|
GlobalSettings,
|
|
ProviderSettingsEntry,
|
|
ProviderSettings,
|
|
HistoryItem,
|
|
ModeConfig,
|
|
TelemetrySetting,
|
|
ExperimentId,
|
|
ClineAsk,
|
|
ClineSay,
|
|
ToolProgressStatus,
|
|
ClineMessage,
|
|
} from "../schemas"
|
|
import { McpServer } from "./mcp"
|
|
import { Mode } from "./modes"
|
|
import { RouterModels } from "./api"
|
|
|
|
export type { ProviderSettingsEntry, ToolProgressStatus }
|
|
|
|
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"
|
|
| "partialMessage"
|
|
| "mcpServers"
|
|
| "enhancedPrompt"
|
|
| "commitSearchResults"
|
|
| "listApiConfig"
|
|
| "routerModels"
|
|
| "openAiModels"
|
|
| "ollamaModels"
|
|
| "lmStudioModels"
|
|
| "vsCodeLmModels"
|
|
| "vsCodeLmApiAvailable"
|
|
| "updatePrompt"
|
|
| "systemPrompt"
|
|
| "autoApprovalEnabled"
|
|
| "updateCustomMode"
|
|
| "deleteCustomMode"
|
|
| "currentCheckpointUpdated"
|
|
| "showHumanRelayDialog"
|
|
| "humanRelayResponse"
|
|
| "humanRelayCancel"
|
|
| "browserToolEnabled"
|
|
| "browserConnectionResult"
|
|
| "remoteBrowserEnabled"
|
|
| "ttsStart"
|
|
| "ttsStop"
|
|
| "maxReadFileLine"
|
|
| "fileSearchResults"
|
|
| "toggleApiConfigPin"
|
|
| "acceptInput"
|
|
| "setHistoryPreviewCollapsed"
|
|
| "commandExecutionStatus"
|
|
| "vsCodeSetting"
|
|
| "condenseTaskContextResponse"
|
|
| "singleRouterModelFetchResponse"
|
|
| "indexingStatusUpdate"
|
|
| "indexCleared"
|
|
| "codebaseIndexConfig"
|
|
text?: string
|
|
action?:
|
|
| "chatButtonClicked"
|
|
| "mcpButtonClicked"
|
|
| "settingsButtonClicked"
|
|
| "historyButtonClicked"
|
|
| "promptsButtonClicked"
|
|
| "didBecomeVisible"
|
|
| "focusInput"
|
|
invoke?: "newChat" | "sendMessage" | "primaryButtonClick" | "secondaryButtonClick" | "setChatBoxMessage"
|
|
state?: ExtensionState
|
|
images?: string[]
|
|
filePaths?: string[]
|
|
openedTabs?: Array<{
|
|
label: string
|
|
isActive: boolean
|
|
path?: string
|
|
}>
|
|
partialMessage?: ClineMessage
|
|
routerModels?: RouterModels
|
|
openAiModels?: string[]
|
|
ollamaModels?: string[]
|
|
lmStudioModels?: string[]
|
|
vsCodeLmModels?: { vendor?: string; family?: string; version?: string; id?: string }[]
|
|
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
|
|
}
|
|
|
|
export type ExtensionState = Pick<
|
|
GlobalSettings,
|
|
| "currentApiConfigName"
|
|
| "listApiConfigMeta"
|
|
| "pinnedApiConfigs"
|
|
// | "lastShownAnnouncementId"
|
|
| "customInstructions"
|
|
// | "taskHistory" // Optional in GlobalSettings, required here.
|
|
| "autoApprovalEnabled"
|
|
| "alwaysAllowReadOnly"
|
|
| "alwaysAllowReadOnlyOutsideWorkspace"
|
|
| "alwaysAllowWrite"
|
|
| "alwaysAllowWriteOutsideWorkspace"
|
|
// | "writeDelayMs" // Optional in GlobalSettings, required here.
|
|
| "alwaysAllowBrowser"
|
|
| "alwaysApproveResubmit"
|
|
// | "requestDelaySeconds" // Optional in GlobalSettings, required here.
|
|
| "alwaysAllowMcp"
|
|
| "alwaysAllowModeSwitch"
|
|
| "alwaysAllowSubtasks"
|
|
| "alwaysAllowExecute"
|
|
| "allowedCommands"
|
|
| "allowedMaxRequests"
|
|
| "browserToolEnabled"
|
|
| "browserViewportSize"
|
|
| "screenshotQuality"
|
|
| "remoteBrowserEnabled"
|
|
| "remoteBrowserHost"
|
|
// | "enableCheckpoints" // Optional in GlobalSettings, required here.
|
|
| "ttsEnabled"
|
|
| "ttsSpeed"
|
|
| "soundEnabled"
|
|
| "soundVolume"
|
|
// | "maxOpenTabsContext" // Optional in GlobalSettings, required here.
|
|
// | "maxWorkspaceFiles" // Optional in GlobalSettings, required here.
|
|
// | "showRooIgnoredFiles" // Optional in GlobalSettings, required here.
|
|
// | "maxReadFileLine" // Optional in GlobalSettings, required here.
|
|
| "terminalOutputLineLimit"
|
|
| "terminalShellIntegrationTimeout"
|
|
| "terminalShellIntegrationDisabled"
|
|
| "terminalCommandDelay"
|
|
| "terminalPowershellCounter"
|
|
| "terminalZshClearEolMark"
|
|
| "terminalZshOhMy"
|
|
| "terminalZshP10k"
|
|
| "terminalZdotdir"
|
|
| "terminalCompressProgressBar"
|
|
| "diffEnabled"
|
|
| "fuzzyMatchThreshold"
|
|
// | "experiments" // Optional in GlobalSettings, required here.
|
|
| "language"
|
|
// | "telemetrySetting" // Optional in GlobalSettings, required here.
|
|
// | "mcpEnabled" // Optional in GlobalSettings, required here.
|
|
// | "enableMcpServerCreation" // Optional in GlobalSettings, required here.
|
|
// | "mode" // Optional in GlobalSettings, required here.
|
|
| "modeApiConfigs"
|
|
// | "customModes" // Optional in GlobalSettings, required here.
|
|
| "customModePrompts"
|
|
| "customSupportPrompts"
|
|
| "enhancementApiConfigId"
|
|
| "condensingApiConfigId"
|
|
| "customCondensingPrompt"
|
|
| "codebaseIndexConfig"
|
|
| "codebaseIndexModels"
|
|
> & {
|
|
version: string
|
|
clineMessages: ClineMessage[]
|
|
currentTaskItem?: HistoryItem
|
|
apiConfiguration?: ProviderSettings
|
|
uriScheme?: string
|
|
shouldShowAnnouncement: boolean
|
|
|
|
taskHistory: HistoryItem[]
|
|
|
|
writeDelayMs: number
|
|
requestDelaySeconds: number
|
|
|
|
enableCheckpoints: boolean
|
|
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
|
|
|
|
experiments: Record<ExperimentId, boolean> // 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
|
|
autoCondenseContextPercent: number
|
|
}
|
|
|
|
export type { ClineMessage, ClineAsk, ClineSay }
|
|
|
|
export interface ClineSayTool {
|
|
tool:
|
|
| "editedExistingFile"
|
|
| "appliedDiff"
|
|
| "newFileCreated"
|
|
| "codebaseSearch"
|
|
| "readFile"
|
|
| "fetchInstructions"
|
|
| "listFilesTopLevel"
|
|
| "listFilesRecursive"
|
|
| "listCodeDefinitionNames"
|
|
| "searchFiles"
|
|
| "switchMode"
|
|
| "newTask"
|
|
| "finishTask"
|
|
| "searchAndReplace"
|
|
| "insertContent"
|
|
path?: string
|
|
diff?: string
|
|
content?: string
|
|
regex?: string
|
|
filePattern?: string
|
|
mode?: string
|
|
reason?: string
|
|
isOutsideWorkspace?: boolean
|
|
search?: string
|
|
replace?: string
|
|
useRegex?: boolean
|
|
ignoreCase?: boolean
|
|
startLine?: number
|
|
endLine?: number
|
|
lineNumber?: number
|
|
query?: string
|
|
}
|
|
|
|
// Must keep in sync with system prompt.
|
|
export const browserActions = [
|
|
"launch",
|
|
"click",
|
|
"hover",
|
|
"type",
|
|
"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
|
|
}
|
|
|
|
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"
|