/** * Ownership-aware Git completion checks for the end-of-turn status ritual. * * The heartbeat's durable `files_touched` ledger is the ownership boundary. We * inspect only those paths, plus any enclosing submodule gitlinks, so a peer's * active edits elsewhere in a shared checkout do not block this session. */ import { type AgentFinalizationDisposition } from "../config.js"; export interface GitFinalizationResult { ok: boolean; claim_history_complete: boolean; dirty_paths: string[]; unpushed_repos: string[]; behind_repos: string[]; stale_submodules: string[]; diverged_submodules: string[]; host_output_paths: string[]; unsupported_paths: UnsupportedFinalizationPath[]; unverifiable_paths: string[]; unverifiable_repos: string[]; repos_checked: string[]; } export type UnsupportedFinalizationReason = "outside_finalization_roots" | "invalid_finalization_root" | "ambiguous_finalization_roots" | "path_escapes_finalization_root" | "git_repository_unavailable" | "output_path_is_git"; export interface UnsupportedFinalizationPath { path: string; reason: UnsupportedFinalizationReason; } export interface ClaimFinalizationDescriptor { disposition: AgentFinalizationDisposition; root: string; } export type ClaimFinalizationDecision = { allow: true; path: string; descriptor: ClaimFinalizationDescriptor; authorityRoot: string; repo?: { root: string; path: string; }; } | { allow: false; path: string; reason: UnsupportedFinalizationReason; }; export interface SessionWriteClaims { paths: string[]; complete: boolean; } /** * Read every write claim made by this session, including claims released after * a commit. Current heartbeat claims describe dirty ownership; this history is * what keeps the touched repository in scope until its commits are pushed. */ export declare function readSessionWriteClaims(coordRoot: string, instanceId: string, _sessionId: string): SessionWriteClaims; /** * Resolve one guarded write to the host's single supported end-turn * disposition. Claim event data never grants authority: every call starts from * the project-owned finalization roots and only then inspects the selected * repository or output tree. */ export declare function classifyWriteClaimFinalization(coordRoot: string, heldPath: string): ClaimFinalizationDecision; /** Check that this session's held paths are committed and their repositories are pushed. */ export declare function checkGitFinalization(coordRoot: string, heldPaths: readonly string[], options?: { claimHistoryComplete?: boolean; }): GitFinalizationResult; export declare function formatGitFinalizationFailure(result: GitFinalizationResult, bin: string): string; export declare function formatWriteClaimFinalizationDenial(decision: Extract, bin: string): string; //# sourceMappingURL=finalization.d.ts.map