/**
 * `log_phase` MCP tool — the agent-facing writer the G-track severed (AP.3).
 *
 * Given a phase name, it writes BOTH halves the gate depends on:
 *   (a) the durable phase ledger — TS-owned filesystem YAML via
 *       `runtime/phase_ledger.ts` (retire-Rust: replaced `engine.task.log_phase`
 *       with the same `~/.opensquid/phase_ledger/<task>/<phase>.yaml`), and
 *   (b) the session phase-state the workflow gate (AP.4) reads.
 *
 * Phases CANNOT be mirrored from any store (no store records "which phase the
 * agent just finished") — so this is necessarily agent-driven. Skipping it is
 * nonetheless caught: the rule #8 gate blocks the commit until all phases are
 * logged. Enforcement is autonomous; the action is the agent's.
 *
 * Session resolution: the MCP server is a SEPARATE process from the hooks, so
 * it reads `.current-session` (the live pointer the UserPromptSubmit hook
 * records — the same mechanism the `automation` CLI uses) to find the session,
 * then `active-task.json` for the task to log against. No active task → loud
 * error (you cannot log a phase with no task — ties to rule #1).
 *
 * No agent-loop logic: opensquid persists what the agent declares. No engine
 * dependency — the durable ledger is TS-owned filesystem YAML.
 *
 * Imports from: zod, ../../runtime/*.
 * Imported by: mcp/server.ts (handler map).
 */
import { z } from 'zod';
export declare const LogPhaseSchema: z.ZodObject<{
    phase: z.ZodEnum<["pre_research", "learn", "code", "test", "audit", "post_research", "fix"]>;
    note: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    phase: "code" | "pre_research" | "learn" | "test" | "audit" | "post_research" | "fix";
    note?: string | undefined;
}, {
    phase: "code" | "pre_research" | "learn" | "test" | "audit" | "post_research" | "fix";
    note?: string | undefined;
}>;
export type LogPhaseArgs = z.infer<typeof LogPhaseSchema>;
export interface LogPhaseOutput {
    ok: true;
    task_id: string;
    phase: string;
    /** Phases logged so far for the active task. */
    phases_logged: string[];
    /** True once all 7 REQUIRED phases are present (the gate then unblocks commit). */
    complete: boolean;
}
export declare function handleLogPhase(args: LogPhaseArgs): Promise<LogPhaseOutput>;
//# sourceMappingURL=log_phase.d.ts.map