import { log } from "./utils/cli.ts"; import type { DiffCoverageState } from "./utils/diffCoverage.ts"; import { type ProgressComment, type ProgressCommentType, parseProgressComment, } from "./utils/progressComment.ts"; import type { TodoTracker } from "./utils/todoTracking.ts"; export type BackgroundProcess = { pid: number; outputPath: string; pidPath: string; }; export type BrowserDaemon = { binDir: string; error?: never } | { binDir?: never; error: string }; export type StoredPushDest = { remoteName: string; remoteBranch: string; localBranch: string; }; export type CommentableLines = { RIGHT: Set; LEFT: Set }; export interface ToolState { pushUrl?: string; pushDest?: StoredPushDest; initialHead?: { kind: "branch"; name: string } | { kind: "detached"; sha: string }; issueNumber?: number; checkoutSha?: string; commentableLinesByFile?: Map; commentableLinesPullNumber?: number; commentableLinesCheckoutSha?: string | undefined; beforeSha?: string; selectedMode?: string; prepushFailureCount: number; backgroundProcesses: Map; browserDaemon?: BrowserDaemon | undefined; review?: { id: number; nodeId: string; reviewedSha: string | undefined; }; reviewReplies?: Map< number, { commentId: number; url: string | undefined; bodyWithFooter: string } >; dependencyInstallation?: { status: "not_started" | "in_progress" | "completed" | "failed"; promise: Promise | undefined; results: unknown[] | undefined; }; progressComment: ProgressComment | null | undefined; hadProgressComment: boolean; lastProgressBody?: string; wasUpdated?: boolean; finalSummaryWritten?: boolean; existingPlanCommentId?: number; previousPlanBody?: string; output?: string | undefined; model?: string | undefined; todoTracker?: TodoTracker | undefined; diffCoverage?: DiffCoverageState | undefined; } interface InitToolStateParams { progressComment: { id: string; type: ProgressCommentType } | undefined; } export function initToolState(params: InitToolStateParams): ToolState { const resolved = parseProgressComment(params.progressComment); if (resolved) { log.info(`ยป using pre-created progress comment: ${resolved.id} (${resolved.type})`); } return { progressComment: resolved, hadProgressComment: !!resolved, prepushFailureCount: 0, backgroundProcesses: new Map(), }; }