@shelltender/server
Version:
Server-side terminal session management for Shelltender
36 lines • 1.72 kB
TypeScript
import { EventEmitter } from 'events';
import { TerminalSession, SessionOptions } from '@shelltender/core';
import { SessionStore } from './SessionStore.js';
import { ISessionManager } from './interfaces/ISessionManager.js';
export interface SessionMetadata {
id: string;
command: string;
args: string[];
createdAt: Date;
isActive: boolean;
}
export declare class SessionManager extends EventEmitter implements ISessionManager {
private sessions;
private sessionStore;
private restoredSessions;
constructor(sessionStore: SessionStore);
private restoreSessions;
private setupPtyHandlers;
createSession(options?: SessionOptions): TerminalSession;
getSession(sessionId: string): TerminalSession | null;
writeToSession(sessionId: string, data: string): boolean;
sendCommand(sessionId: string, command: string): boolean;
sendRawInput(sessionId: string, data: string): boolean;
sendKey(sessionId: string, key: 'ctrl-c' | 'ctrl-d' | 'ctrl-z' | 'ctrl-r' | 'tab' | 'escape' | 'up' | 'down' | 'left' | 'right'): boolean;
resizeSession(sessionId: string, cols: number, rows: number): boolean;
addClient(sessionId: string, clientId: string): void;
removeClient(sessionId: string, clientId: string): void;
getAllSessions(): TerminalSession[];
killSession(sessionId: string): boolean;
onData(callback: (sessionId: string, data: string, metadata?: any) => void): () => void;
onSessionEnd(callback: (sessionId: string) => void): () => void;
getActiveSessionIds(): string[];
getSessionMetadata(sessionId: string): SessionMetadata | null;
getAllSessionMetadata(): SessionMetadata[];
}
//# sourceMappingURL=SessionManager.d.ts.map