import { type AgentId } from './registry.js'; import type { DetectionMap } from './detect.js'; export type StepAction = { type: 'exec'; bin: string; args: string[]; /** arg indices to mask when rendering */ redact?: number[]; /** ran before the main command; exit 0 means "already configured" → skip */ probe?: { args: string[]; }; /** non-zero exit with output matching /already .../ counts as skipped */ tolerateAlready?: boolean; } | { type: 'npx-skills'; args: string[]; } | { type: 'merge-json'; file: string; jsonPath: string[]; value: unknown; } | { type: 'ensure-toml-block'; file: string; table: string; block: string; } | { type: 'skip'; reason: string; }; export interface SetupStep { id: string; agent: AgentId; category: 'skills' | 'plugins' | 'mcp'; title: string; action: StepAction; } export interface PlanInput { /** injected for testability; os.homedir() in production */ home: string; agents: AgentId[]; include: { skills: boolean; plugins: boolean; mcp: boolean; }; apiKey?: string; claudePlugins: string[]; skills: { all: boolean; names: string[]; }; detection: DetectionMap; } export declare function buildSetupPlan(input: PlanInput): SetupStep[]; //# sourceMappingURL=planner.d.ts.map