Move all hand-synced cross-app wire contracts into one built workspace package, @boocode/contracts, consumed by server/web/coder/coder-web via workspace:* + a per-subpath exports map. The ws-frames and provider-config Zod schemas are schema-first (z.infer); MessageMetadata, ErrorReason, AgentSessionConfig, the provider snapshot types, and WorktreeRiskReport are each single-sourced. Deletes the byte-identical copies and their parity tests, fixes a live AgentSessionConfig drift (coder dead copy removed, unified to the web required/nullable shape), removes the dead pending_change WS arms in the fallback SPA, and inverts the build order (contracts builds first) across root build, Dockerfile, and the coder deploy docs. Reverses the shared-package decision declined in v2.5.12. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
14 lines
639 B
TypeScript
14 lines
639 B
TypeScript
// Single source of truth for the worktree work-loss guard type.
|
|
// WorktreeRiskReport: returned by BooCoder's checkWorktreeWorkAtRisk, passed
|
|
// through the server, and consumed by the web dialog. Three-way contract.
|
|
|
|
export interface WorktreeRiskReport {
|
|
worktreePath: string;
|
|
branch: string;
|
|
dirty: boolean;
|
|
unpushed: number; // commits ahead of upstream, or -1 if no upstream is set
|
|
unmerged: number; // commits on this branch not in the project default branch
|
|
atRisk: boolean; // dirty || unmerged > 0 || (upstream && unpushed > 0) || git error
|
|
error?: string; // populated on a git failure; presence forces atRisk
|
|
}
|