import type { StreamFn } from "@earendil-works/pi-agent-core"; import type { ExtensionCommandContext } from "@earendil-works/pi-coding-agent"; import { type ForgeToolDefs } from "../../forge-tools.js"; import { getSessionRegistry } from "../../session-registry.js"; /** * Test-only seam (forge-cli#17). Resolves a StreamFn for a given dispatch * context — ceremony or per-phase. Production callers leave this undefined. */ export type SprintStreamFnFactory = (ctx: { kind: "task-phase" | "ceremony"; persona: string; phase?: string; taskId?: string; }) => StreamFn | undefined; export type SprintCeremonyResult = { verdict: "complete" | "partial" | "revision-required"; model?: string; provider?: string; durationMs: number; errorMessage?: string; }; export declare function dispatchSprintCeremony(params: { sprintId: string; mode: "complete" | "partial"; completedTaskIds: string[]; pausedAfterIndex?: number; cwd: string; forgeRoot: string; ctx: ExtensionCommandContext; registry: ReturnType; streamFnFactory?: SprintStreamFnFactory; forgeToolDefs?: ForgeToolDefs; }): Promise;