export type ConfigKind = "code-quality"; export interface CommandConfig { bin: string; args?: string[]; cwd?: string; env?: Record; config?: string; timeoutMs?: number; diagnosticExitCodes?: number[]; } export interface MatchableConfig { id: string; enabled?: boolean; include?: string[]; exclude?: string[]; rootMarkers?: string[]; maxFileSizeBytes?: number; } export interface CodeQualityToolConfig extends MatchableConfig { formatter?: CommandConfig; linter?: CommandConfig; } export interface CodeQualityConfigFile { version?: number; tools?: CodeQualityToolConfig[]; } export interface ConfigLayer { scope: "global" | "project"; path: string; dir: string; raw: string; hash: string; items: TItem[]; } export interface LoadedConfig { items: TItem[]; layers: ConfigLayer[]; warnings: string[]; } export interface PathPlaceholders { workspace: string; root: string; file: string; relFile: string; dir: string; relDir: string; config: string; configDir: string; } export interface ResolvedCommand { id: string; bin: string; args: string[]; cwd: string; env?: Record; timeoutMs?: number; configPath?: string; placeholders: PathPlaceholders; } export interface CommandRunResult { id: string; bin: string; args: string[]; cwd: string; stdout: string; stderr: string; code: number; killed: boolean; durationMs: number; }