|
@@ -6,7 +6,10 @@ import {
|
|
|
isServerRunning,
|
|
isServerRunning,
|
|
|
type Multiplexer,
|
|
type Multiplexer,
|
|
|
} from '../multiplexer';
|
|
} from '../multiplexer';
|
|
|
-import type { BackgroundJobBoard } from '../utils/background-job-board';
|
|
|
|
|
|
|
+import type {
|
|
|
|
|
+ BackgroundJobBoard,
|
|
|
|
|
+ BackgroundJobState,
|
|
|
|
|
+} from '../utils/background-job-board';
|
|
|
import { log } from '../utils/logger';
|
|
import { log } from '../utils/logger';
|
|
|
|
|
|
|
|
interface TrackedSession {
|
|
interface TrackedSession {
|
|
@@ -252,7 +255,7 @@ export class MultiplexerSessionManager {
|
|
|
tracked: this.sessions.has(sessionId),
|
|
tracked: this.sessions.has(sessionId),
|
|
|
known: this.knownSessions.has(sessionId),
|
|
known: this.knownSessions.has(sessionId),
|
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
|
- backgroundJobState: this.backgroundJobBoard?.getState(sessionId),
|
|
|
|
|
|
|
+ backgroundJobState: this.backgroundJobState(sessionId),
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
await this.closeSession(sessionId, 'idle');
|
|
await this.closeSession(sessionId, 'idle');
|
|
@@ -273,7 +276,7 @@ export class MultiplexerSessionManager {
|
|
|
tracked: this.sessions.has(sessionId),
|
|
tracked: this.sessions.has(sessionId),
|
|
|
known: this.knownSessions.has(sessionId),
|
|
known: this.knownSessions.has(sessionId),
|
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
|
- backgroundJobState: this.backgroundJobBoard?.getState(sessionId),
|
|
|
|
|
|
|
+ backgroundJobState: this.backgroundJobState(sessionId),
|
|
|
});
|
|
});
|
|
|
await this.closeSession(sessionId, 'idle');
|
|
await this.closeSession(sessionId, 'idle');
|
|
|
return;
|
|
return;
|
|
@@ -290,7 +293,7 @@ export class MultiplexerSessionManager {
|
|
|
tracked: this.sessions.has(sessionId),
|
|
tracked: this.sessions.has(sessionId),
|
|
|
known: this.knownSessions.has(sessionId),
|
|
known: this.knownSessions.has(sessionId),
|
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
|
- backgroundJobState: this.backgroundJobBoard?.getState(sessionId),
|
|
|
|
|
|
|
+ backgroundJobState: this.backgroundJobState(sessionId),
|
|
|
});
|
|
});
|
|
|
await this.respawnIfKnown(sessionId);
|
|
await this.respawnIfKnown(sessionId);
|
|
|
}
|
|
}
|
|
@@ -309,7 +312,7 @@ export class MultiplexerSessionManager {
|
|
|
tracked: this.sessions.has(sessionId),
|
|
tracked: this.sessions.has(sessionId),
|
|
|
known: this.knownSessions.has(sessionId),
|
|
known: this.knownSessions.has(sessionId),
|
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
ownerInstanceId: this.sessions.get(sessionId)?.ownerInstanceId,
|
|
|
- backgroundJobState: this.backgroundJobBoard?.getState(sessionId),
|
|
|
|
|
|
|
+ backgroundJobState: this.backgroundJobState(sessionId),
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
this.deferredIdleCloses.delete(sessionId);
|
|
this.deferredIdleCloses.delete(sessionId);
|
|
@@ -456,7 +459,7 @@ export class MultiplexerSessionManager {
|
|
|
sessionId,
|
|
sessionId,
|
|
|
paneId: tracked.paneId,
|
|
paneId: tracked.paneId,
|
|
|
reason,
|
|
reason,
|
|
|
- backgroundJobState: this.backgroundJobBoard?.getState(sessionId),
|
|
|
|
|
|
|
+ backgroundJobState: this.backgroundJobState(sessionId),
|
|
|
},
|
|
},
|
|
|
);
|
|
);
|
|
|
return;
|
|
return;
|
|
@@ -470,7 +473,7 @@ export class MultiplexerSessionManager {
|
|
|
sessionId,
|
|
sessionId,
|
|
|
paneId: tracked.paneId,
|
|
paneId: tracked.paneId,
|
|
|
reason,
|
|
reason,
|
|
|
- backgroundJobState: this.backgroundJobBoard?.getState(sessionId),
|
|
|
|
|
|
|
+ backgroundJobState: this.backgroundJobState(sessionId),
|
|
|
parentId: tracked.parentId,
|
|
parentId: tracked.parentId,
|
|
|
title: tracked.title,
|
|
title: tracked.title,
|
|
|
});
|
|
});
|
|
@@ -606,6 +609,12 @@ export class MultiplexerSessionManager {
|
|
|
return event.properties?.info?.id ?? event.properties?.sessionID;
|
|
return event.properties?.info?.id ?? event.properties?.sessionID;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private backgroundJobState(
|
|
|
|
|
+ sessionId: string,
|
|
|
|
|
+ ): BackgroundJobState | undefined {
|
|
|
|
|
+ return this.backgroundJobBoard?.getState(sessionId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private isRunningBackgroundJob(sessionId: string): boolean {
|
|
private isRunningBackgroundJob(sessionId: string): boolean {
|
|
|
return this.backgroundJobBoard?.isRunning(sessionId) ?? false; // ponytail: intent-revealing query
|
|
return this.backgroundJobBoard?.isRunning(sessionId) ?? false; // ponytail: intent-revealing query
|
|
|
}
|
|
}
|