/** * Regenerable / heavy / per-user artifacts under `.setup-agents/` that must never * be committed. Authored + shareable artifacts (state/, config.json, rules/, * skills/, sf-skills/, playbooks/, project-knowledge.md, insights/) are NOT listed * here — they stay tracked so the team shares them. */ export declare const IGNORED_SETUP_AGENTS_PATHS: string[]; /** Render the managed block body (markers + a short note + the ignore patterns). */ export declare function renderGitignoreBlock(protectedPaths?: readonly string[]): string; export type GitignoreUpdate = { /** The full `.gitignore` content to write, or null when no write is needed. */ content: string | null; /** 'created' (new file), 'inserted' (block added), 'updated' (block body changed), 'unchanged'. */ action: 'created' | 'inserted' | 'updated' | 'unchanged'; }; /** * Compute the next `.gitignore` content for a given existing content (null when * the file does not exist). Pure — the caller performs the write. Idempotent: * an already-current block yields `{ content: null, action: 'unchanged' }`. */ export declare function computeGitignoreUpdate(existing: string | null, protectedPaths?: readonly string[]): GitignoreUpdate; /** * Ensure the project `.gitignore` at `cwd` carries the managed setup-agents block. * Returns the action taken. The write is delegated to `writeFile` so callers can * route through their {@link FileWriter}/atomic-write of choice and honor logging. */ export declare function ensureGitignoreBlock(cwd: string, writeFile: (path: string, content: string) => void, protectedPaths?: readonly string[]): GitignoreUpdate['action'];