/** vigiles's own directory in a project. */ export declare const VIGILES_DIR = ".vigiles"; /** The execution tier of coverage (`coverage-artifact.ts`). */ export declare const COVERAGE_ARTIFACT_FILE = "coverage.json"; /** The flight-recorder ledger (`observe.ts`). */ export declare const LEDGER_FILE = "runs.jsonl"; /** Compiled hooks' named state, `record()`/`state()` (`hook-state-store.ts`). */ export declare const HOOK_STATE_DIR = "state"; /** The skill in progress (`adapters/claude-code/skill-runtime.ts`). */ export declare const ACTIVE_SKILL_FILE = "active-skill.json"; /** The subagent stack in progress (`adapters/claude-code/agent-runtime.ts`). */ export declare const ACTIVE_AGENT_FILE = "active-agent.json"; /** Inside-an-effect-boundary marker (`adapters/claude-code/effect-region.ts`). */ export declare const EFFECT_ACTIVE_FILE = "effect-active.json"; /** The calls a guard allowed this session (`core/guards.ts`). */ export declare const GUARD_LEDGER_FILE = "guard-ledger.json"; /** What an `observe`-mode hook would have blocked (`hook-runtime.ts`). */ export declare const HOOK_OBSERVATIONS_FILE = "hook-observations.jsonl"; /** Recorded model runs for eval replay, the default `cacheDir` (`eval.ts`). */ export declare const EVAL_CACHE_DIR = "eval-cache"; /** One per-checkout path under `.vigiles/`. */ export interface LocalFile { /** The name directly under `.vigiles/`. */ readonly name: string; /** A directory (its whole subtree is local) rather than a single file. */ readonly dir: boolean; } /** Every per-checkout path vigiles writes under `.vigiles/`. The one list. */ export declare const LOCAL_FILES: readonly LocalFile[]; /** * The names under `.vigiles/` that ARE the project's and must stay committable. * Not used at runtime — it is the other half of the classification the guard in * `local-files.test.ts` holds the source to, and the list that test checks is * NOT ignored. */ export declare const COMMITTED_PATHS: readonly string[]; /** The header comment on a `.vigiles/.gitignore` vigiles creates. */ /** The ignore file vigiles keeps inside `.vigiles/`. One spelling for every reader. */ export declare const LOCAL_GITIGNORE_FILE = ".gitignore"; export declare const LOCAL_GITIGNORE_HEADER: readonly string[]; /** The ignore lines, in order: every local path, then the file itself. */ export declare function localIgnoreEntries(): string[]; /** * Keep `/.gitignore` listing every local path. Call it where a * local file is written — not from `vigiles init`, which a project may never * run, while the write always happens. * * - Absent → created with {@link LOCAL_GITIGNORE_HEADER} and every entry. * - Every entry IN EFFECT → not touched (no rewrite, no mtime change). * - Otherwise the entries not in effect are appended and nothing is removed * or reordered. Appending is enough because git's last matching rule wins. * * "In effect" is judged the way git reads the file, not by text membership: * lines in order, a later negation cancels an earlier `/entry` (see * {@link inEffect}), and leading whitespace is part of the pattern (only * trailing whitespace is dropped). * Both cases were measured with `git check-ignore`: `/coverage.json` followed * by `!/coverage.json`, and ` /coverage.json`, each leave the file NOT * ignored while a trimmed set would call the entry present. * * Costs one read on the hot path. Best-effort: any fs error is swallowed — * keeping git tidy must never break a hook, a test run or an audit. */ /** * The entries a `.vigiles/.gitignore` with this content does NOT put in effect. * One reader for both questions — "what to append" ({@link ensureLocalFilesIgnored}) * and "does the committed copy already carry them" (the CLI's tracked-file check). */ export declare function entriesNotInEffect(content: string): string[]; export declare function ensureLocalFilesIgnored(vigilesDir: string): void; //# sourceMappingURL=local-files.d.ts.map