85 lines
2.4 KiB
TypeScript
85 lines
2.4 KiB
TypeScript
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<number>; LEFT: Set<number> };
|
|
|
|
export interface ToolState {
|
|
pushUrl?: string;
|
|
pushDest?: StoredPushDest;
|
|
initialHead?: { kind: "branch"; name: string } | { kind: "detached"; sha: string };
|
|
issueNumber?: number;
|
|
checkoutSha?: string;
|
|
commentableLinesByFile?: Map<string, CommentableLines>;
|
|
commentableLinesPullNumber?: number;
|
|
commentableLinesCheckoutSha?: string | undefined;
|
|
beforeSha?: string;
|
|
selectedMode?: string;
|
|
prepushFailureCount: number;
|
|
backgroundProcesses: Map<string, BackgroundProcess>;
|
|
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<unknown[]> | 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(),
|
|
};
|
|
}
|