/** * Agent lane snapshot for the lanes dashboard (demo / sanity check). */ import type { TrellisVcsEngine } from '../engine.js'; import type { LaneMeta } from '../vcs/lane.js'; export interface LaneRow { id: string; status: LaneMeta['status']; issueId?: string; issueTitle?: string; claimedSessionId?: string; sessionId?: string; agentId: string; opCount: number; fileCount: number; worktreePath?: string; baseBranch: string; targetBranch: string; isActive: boolean; createdAt: string; updatedAt: string; } export interface IssueRow { id: string; title?: string; status?: string; priority?: string; labels: string[]; createdAt?: string; claimedLaneId?: string; claimedSessionId?: string; laneCount: number; laneIds: string[]; } export interface MilestoneRow { id: string; message?: string; createdAt?: string; createdBy?: string; fileCount: number; affectedFiles: string[]; } export interface LanesSnapshotExtras { /** Bound HTTP port for the dashboard (status bar). */ port?: number; /** Connected SSE viewers (admin/dashboard clients). */ viewers?: number; } export interface LanesSnapshot { at: string; rootPath: string; integrationBranch: string; activeLaneId?: string; /** Dashboard listen port when served via lanes-dashboard. */ port?: number; /** Connected SSE clients watching this dashboard. */ viewers: number; /** Distinct agentIds on active lanes. */ activeAgents: number; promoteLock: { locked: boolean; stale?: boolean; laneId?: string; pid?: number; acquiredAt?: string; }; lanes: LaneRow[]; issues: IssueRow[]; milestones: MilestoneRow[]; inProgressIssues: Array<{ id: string; title?: string; claimedLaneId?: string; claimedSessionId?: string; }>; } export declare function buildLanesSnapshot(engine: TrellisVcsEngine, rootPath: string, extras?: LanesSnapshotExtras): LanesSnapshot; //# sourceMappingURL=lanes-snapshot.d.ts.map