feat(shared): add core domain types

Pod/Engineer, EngineerContext (live pre-push signal), Collision, and
Intervention — the type contract between frontend and backend.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kartikeya
2026-06-27 14:07:11 -07:00
parent 7dd613d250
commit 42c0de52b7
8 changed files with 134 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
export type CollisionSeverity = 'info' | 'warn' | 'critical';
/**
* A detected overlap between two or more engineers' live work, fused from
* vision-derived contexts and GitHub state.
*/
export interface Collision {
id: string;
podId: string;
/** File both engineers are touching. */
file: string;
/** Symbol-level overlap, if known. */
symbol?: string;
/** Engineer ids involved in the overlap. */
engineers: string[];
severity: CollisionSeverity;
/** Snapshot of relevant GitHub state at detection time. */
githubState?: GithubStateSnapshot;
detectedAt: string;
}
export interface GithubStateSnapshot {
/** Open branches touching the file, keyed by engineer/login. */
branches?: Record<string, string>;
/** Open PR numbers touching the file. */
openPrs?: number[];
/** Whether any involved engineer has unpushed local changes. */
unpushed?: boolean;
}