Files
Netcatty/infrastructure/scripts/screenSnapshotRegistry.ts
T
陈大猫 4735e9ace0 fix: bastion script waits and keyboard-like sendLine (#1960) (#2055)
Keep only the confirmed product fixes for 奇安信-style auto-login:

1. Seed startup screen from viewport or live buffer so on-screen menus
   stay waitable (never mark the whole buffer consumed at script start).
2. sendLine emits body then CR separately, matching real keyboard input.
3. After sendLine, consume only pre-send buffer length so peer prompts
   that arrive between body and Enter remain matchable for the next step.
2026-07-09 17:58:18 +08:00

36 lines
788 B
TypeScript

export type ScreenSnapshotProvider = () => {
rows: number;
cols: number;
currentRow: number;
lines: string[];
/** Optional origin marker (e.g. hibernate-viewport). */
source?: string;
};
const providers = new Map<string, ScreenSnapshotProvider>();
export function registerScreenSnapshotProvider(
sessionId: string,
provider: ScreenSnapshotProvider,
): () => void {
providers.set(sessionId, provider);
return () => {
if (providers.get(sessionId) === provider) {
providers.delete(sessionId);
}
};
}
export function captureScreenSnapshot(sessionId: string) {
const provider = providers.get(sessionId);
if (!provider) {
return {
rows: 24,
cols: 80,
currentRow: 0,
lines: [] as string[],
};
}
return provider();
}