/** * #2640 — init defers to the installed ruflo Claude Code plugins. * * When `ruflo-core@ruflo` is installed for this project (and not switched off * in `enabledPlugins`), the agents, commands and skills that the installed * `*@ruflo` plugins ship are not copied into `.claude/` again, and the * standalone `claude-flow` MCP server is not registered (the plugin provides * one). `init --full` keeps copying everything. * * Read-only: only reads Claude Code's own records * (`/plugins/installed_plugins.json`, settings files) and the plugin * install directories they point to. A missing or malformed record means * "no plugin", i.e. today's behaviour. */ import { type ReadFs } from '../mods/plugin-resolve.js'; export declare const RUFLO_CORE_PLUGIN = "ruflo-core@ruflo"; export interface DirEntry { name: string; isDirectory: boolean; } /** Filesystem reads detection needs; injectable for tests. */ export interface DedupFs extends ReadFs { listDir(path: string): DirEntry[]; } export declare const nodeDedupFs: DedupFs; /** What the installed plugins already provide, by the name Claude Code loads it under. */ export interface PluginProvided { /** Installed `*@ruflo` plugin ids that contributed. */ plugins: string[]; /** agent / command basename (with `.md`) → plugin id */ agents: Map; commands: Map; /** skill directory name → plugin id */ skills: Map; } export interface DetectOptions { configDir?: string; env?: NodeJS.ProcessEnv; home?: string; fs?: DedupFs; } /** * The agents, commands and skills the installed ruflo plugins provide for * this project, or `null` when `ruflo-core@ruflo` is not installed and * enabled here (then init behaves exactly as before). */ export declare function detectRufloPlugins(projectRoot: string, opts?: DetectOptions): PluginProvided | null; /** Init's record of what it left to the plugins. */ export interface PluginDedupReport { plugins: string[]; skipped: { agents: string[]; commands: string[]; skills: string[]; }; mcpServerSkipped: boolean; } export declare function emptyDedupReport(provided: PluginProvided): PluginDedupReport; /** Lines for the summary `ruflo init` prints. Empty when nothing was skipped. */ export declare function formatPluginDedupSummary(report: PluginDedupReport): string[]; //# sourceMappingURL=plugin-dedup.d.ts.map