feat(maestro): show blocked work on session rows and warn on kill in the web UI (#83)
This commit is contained in:
@@ -31,6 +31,11 @@ export interface Session {
|
||||
* observed it (`#{pane_current_path}`) — distinct from `cwd` (the spawn dir).
|
||||
* Drives the directory-based session tree. Absent until first observed. */
|
||||
current_cwd?: string | null;
|
||||
/** What currently blocks an unforced kill of this session (#83), as the
|
||||
* daemon's watcher last probed it. Absent until probed and for sessions
|
||||
* without a worktree; all counts default to 0 on the wire for older
|
||||
* daemons. */
|
||||
blocked_work?: InTheWay | null;
|
||||
}
|
||||
|
||||
/** One directory's immediate subdirectories (NAP-329). */
|
||||
@@ -180,6 +185,19 @@ export function reasonLabel(reason: RetainedReason): string {
|
||||
return reason;
|
||||
}
|
||||
|
||||
/** #83: this session's blocked-work breakdown when something actually blocks
|
||||
* an unforced kill; `null` while clear or not yet probed. Render it with
|
||||
* {@link formatInTheWay} so every client phrases it identically. */
|
||||
export function sessionBlockers(s: Session): InTheWay | null {
|
||||
const w = s.blocked_work;
|
||||
if (!w) return null;
|
||||
const blocked =
|
||||
(w.uncommitted_files ?? 0) > 0 ||
|
||||
(w.untracked_files ?? 0) > 0 ||
|
||||
(w.unpushed_commits ?? 0) > 0;
|
||||
return blocked ? w : null;
|
||||
}
|
||||
|
||||
export interface CreateSessionRequest {
|
||||
cwd: string;
|
||||
command: string;
|
||||
|
||||
Reference in New Issue
Block a user