export const IMPORT_KINDS = [ "cursor", "claude-code", "claude-desktop", "codex", "opencode", "windsurf", "vscode", ] as const; export type ImportKind = (typeof IMPORT_KINDS)[number]; export type ConfigFormat = "jsonc" | "toml"; export type EntrySource = "config" | "import"; export interface ArchivedEntry { path: string; format: ConfigFormat; keyPath: string[]; value: unknown; source: EntrySource; sourceId?: string; importKind?: ImportKind; } export interface BlockRecord { name: string; blockedAt: string; cwd: string; entries: ArchivedEntry[]; } export interface McpcState { version: 1; records: BlockRecord[]; } export interface SourceOccurrence extends ArchivedEntry { name: string; } export interface DiscoveryOptions { cwd: string; homeDir?: string; agentDir?: string; overrideConfigPath?: string; } export interface DiscoverySnapshot { occurrencesByName: Map; activeNames: Set; activeImportKinds: Set; diagnostics: string[]; } export type ServerVisibility = "enabled" | "blocked" | "conflict"; export interface ServerListItem { name: string; visibility: ServerVisibility; sourceCount: number; conflictDetails: string[]; } export interface ActionResult { name: string; changed: boolean; outcome: | "blocked" | "enabled" | "cleaned" | "already-blocked" | "not-blocked" | "not-found" | "conflict" | "not-stale"; details: string[]; }