mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-21 00:21:25 +00:00
181 lines
4.8 KiB
TypeScript
181 lines
4.8 KiB
TypeScript
/**
|
|
* Additional VSCode API classes for extension support
|
|
*
|
|
* This file contains supplementary classes and types that extensions may need.
|
|
*/
|
|
|
|
import { Range } from "./Range.js"
|
|
import type { IUri, IRange, IPosition, DiagnosticSeverity, DiagnosticTag } from "../types.js"
|
|
|
|
/**
|
|
* Represents a location in source code (URI + Range or Position)
|
|
*/
|
|
export class Location {
|
|
constructor(
|
|
public uri: IUri,
|
|
public range: IRange | IPosition,
|
|
) {}
|
|
}
|
|
|
|
/**
|
|
* Related diagnostic information
|
|
*/
|
|
export class DiagnosticRelatedInformation {
|
|
constructor(
|
|
public location: Location,
|
|
public message: string,
|
|
) {}
|
|
}
|
|
|
|
/**
|
|
* Represents a diagnostic (error, warning, etc.)
|
|
*/
|
|
export class Diagnostic {
|
|
range: Range
|
|
message: string
|
|
severity: DiagnosticSeverity
|
|
source?: string
|
|
code?: string | number | { value: string | number; target: IUri }
|
|
relatedInformation?: DiagnosticRelatedInformation[]
|
|
tags?: DiagnosticTag[]
|
|
|
|
constructor(range: IRange, message: string, severity?: DiagnosticSeverity) {
|
|
this.range = range as Range
|
|
this.message = message
|
|
this.severity = severity !== undefined ? severity : 0 // Error
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Theme color reference
|
|
*/
|
|
export class ThemeColor {
|
|
constructor(public id: string) {}
|
|
}
|
|
|
|
/**
|
|
* Theme icon reference
|
|
*/
|
|
export class ThemeIcon {
|
|
constructor(
|
|
public id: string,
|
|
public color?: ThemeColor,
|
|
) {}
|
|
}
|
|
|
|
/**
|
|
* Code action kind for categorizing code actions
|
|
*/
|
|
export class CodeActionKind {
|
|
static readonly Empty = new CodeActionKind("")
|
|
static readonly QuickFix = new CodeActionKind("quickfix")
|
|
static readonly Refactor = new CodeActionKind("refactor")
|
|
static readonly RefactorExtract = new CodeActionKind("refactor.extract")
|
|
static readonly RefactorInline = new CodeActionKind("refactor.inline")
|
|
static readonly RefactorRewrite = new CodeActionKind("refactor.rewrite")
|
|
static readonly Source = new CodeActionKind("source")
|
|
static readonly SourceOrganizeImports = new CodeActionKind("source.organizeImports")
|
|
|
|
constructor(public value: string) {}
|
|
|
|
append(parts: string): CodeActionKind {
|
|
return new CodeActionKind(this.value ? `${this.value}.${parts}` : parts)
|
|
}
|
|
|
|
intersects(other: CodeActionKind): boolean {
|
|
return this.contains(other) || other.contains(this)
|
|
}
|
|
|
|
contains(other: CodeActionKind): boolean {
|
|
return this.value === other.value || other.value.startsWith(this.value + ".")
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Code lens for displaying inline information
|
|
*/
|
|
export class CodeLens {
|
|
public range: Range
|
|
public command?: { command: string; title: string; arguments?: unknown[] } | undefined
|
|
public isResolved: boolean = false
|
|
|
|
constructor(range: IRange, command?: { command: string; title: string; arguments?: unknown[] } | undefined) {
|
|
this.range = range as Range
|
|
this.command = command
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Language Model API parts
|
|
*/
|
|
export class LanguageModelTextPart {
|
|
constructor(public value: string) {}
|
|
}
|
|
|
|
export class LanguageModelToolCallPart {
|
|
constructor(
|
|
public callId: string,
|
|
public name: string,
|
|
public input: unknown,
|
|
) {}
|
|
}
|
|
|
|
export class LanguageModelToolResultPart {
|
|
constructor(
|
|
public callId: string,
|
|
public content: unknown[],
|
|
) {}
|
|
}
|
|
|
|
/**
|
|
* File system error with specific error codes
|
|
*/
|
|
export class FileSystemError extends Error {
|
|
public code: string
|
|
|
|
constructor(message: string, code: string = "Unknown") {
|
|
super(message)
|
|
this.name = "FileSystemError"
|
|
this.code = code
|
|
}
|
|
|
|
static FileNotFound(messageOrUri?: string | IUri): FileSystemError {
|
|
const message =
|
|
typeof messageOrUri === "string" ? messageOrUri : `File not found: ${messageOrUri?.fsPath || "unknown"}`
|
|
return new FileSystemError(message, "FileNotFound")
|
|
}
|
|
|
|
static FileExists(messageOrUri?: string | IUri): FileSystemError {
|
|
const message =
|
|
typeof messageOrUri === "string" ? messageOrUri : `File exists: ${messageOrUri?.fsPath || "unknown"}`
|
|
return new FileSystemError(message, "FileExists")
|
|
}
|
|
|
|
static FileNotADirectory(messageOrUri?: string | IUri): FileSystemError {
|
|
const message =
|
|
typeof messageOrUri === "string"
|
|
? messageOrUri
|
|
: `File is not a directory: ${messageOrUri?.fsPath || "unknown"}`
|
|
return new FileSystemError(message, "FileNotADirectory")
|
|
}
|
|
|
|
static FileIsADirectory(messageOrUri?: string | IUri): FileSystemError {
|
|
const message =
|
|
typeof messageOrUri === "string"
|
|
? messageOrUri
|
|
: `File is a directory: ${messageOrUri?.fsPath || "unknown"}`
|
|
return new FileSystemError(message, "FileIsADirectory")
|
|
}
|
|
|
|
static NoPermissions(messageOrUri?: string | IUri): FileSystemError {
|
|
const message =
|
|
typeof messageOrUri === "string" ? messageOrUri : `No permissions: ${messageOrUri?.fsPath || "unknown"}`
|
|
return new FileSystemError(message, "NoPermissions")
|
|
}
|
|
|
|
static Unavailable(messageOrUri?: string | IUri): FileSystemError {
|
|
const message =
|
|
typeof messageOrUri === "string" ? messageOrUri : `Unavailable: ${messageOrUri?.fsPath || "unknown"}`
|
|
return new FileSystemError(message, "Unavailable")
|
|
}
|
|
}
|