export type GitOutcome = { status: 'pushed'; sha: string; } | { status: 'committed-local'; sha: string; } | { status: 'skipped'; reason: string; }; /** Create the repo if missing; stamp safety excludes. Never sets a git * identity - commits use whatever user.name/user.email already exists in * the repo or global gitconfig (no injected names of any kind). */ export declare function ensureRepo(cwd: string): void; /** Porcelain v1 entries: "XY path" (renames collapse to the new path). */ export declare function snapshotGit(cwd: string): Set; /** * Commit exactly what changed since `before`, then push when origin exists. * Returns the outcome for logging / the closing comment. Never throws. * Commit message = the task title only - no author injection, no agent or * tool traces; git uses the machine's own configured identity. * * Refuses to commit on the default branch (main/master) — only worktrees * should produce commits. Returns `skipped` with reason 'on-default-branch' * when the working directory is on main/master. */ export declare function autoCommitSession(cwd: string, before: Set, meta: { taskTitle: string; }): Promise;