Skip to main content
Glama
ooples

MCP Console Automation Server

IProtocol.ts4.79 kB
import { EventEmitter } from 'events'; import { ConsoleSession, ConsoleOutput, SessionOptions, ConsoleType, HealthCheckResult, } from '../types/index.js'; /** * Core protocol interface that all console protocols must implement */ export interface IProtocol extends EventEmitter { readonly type: ConsoleType; readonly capabilities: ProtocolCapabilities; // Lifecycle methods initialize(): Promise<void>; dispose(): Promise<void>; // Session management createSession(options: SessionOptions): Promise<ConsoleSession>; closeSession(sessionId: string): Promise<void>; getAllSessions(): ConsoleSession[]; getActiveSessions(): ConsoleSession[]; getSessionCount(): number; // Command execution executeCommand( sessionId: string, command: string, args?: string[] ): Promise<void>; sendInput(sessionId: string, input: string): Promise<void>; getOutput(sessionId: string, since?: Date): Promise<ConsoleOutput[]>; // Session state management getSessionState(sessionId: string): Promise<SessionState>; // Health and monitoring getHealthStatus(): Promise<ProtocolHealthStatus>; // Error handling and recovery handleError( error: Error, context: ErrorContext ): Promise<ErrorRecoveryResult>; recoverSession(sessionId: string): Promise<boolean>; // Resource management getResourceUsage(): ResourceUsage; cleanup(): Promise<void>; } /** * Protocol capabilities and configuration */ export interface ProtocolCapabilities { supportsStreaming: boolean; supportsFileTransfer: boolean; supportsX11Forwarding: boolean; supportsPortForwarding: boolean; supportsAuthentication: boolean; supportsEncryption: boolean; supportsCompression: boolean; supportsMultiplexing: boolean; supportsKeepAlive: boolean; supportsReconnection: boolean; supportsBinaryData: boolean; supportsCustomEnvironment: boolean; supportsWorkingDirectory: boolean; supportsSignals: boolean; supportsResizing: boolean; supportsPTY: boolean; maxConcurrentSessions: number; defaultTimeout: number; supportedEncodings: string[]; supportedAuthMethods: string[]; platformSupport: { windows: boolean; linux: boolean; macos: boolean; freebsd: boolean; }; } /** * Protocol health status */ export interface ProtocolHealthStatus { isHealthy: boolean; lastChecked: Date; errors: string[]; warnings: string[]; metrics: { activeSessions: number; totalSessions: number; averageLatency: number; successRate: number; uptime: number; }; dependencies: { [key: string]: { available: boolean; version?: string; error?: string; }; }; } /** * Session state information */ export interface SessionState { sessionId: string; status: | 'running' | 'stopped' | 'crashed' | 'terminated' | 'failed' | 'paused' | 'initializing' | 'recovering' | 'closed'; isOneShot: boolean; isPersistent: boolean; createdAt: Date; lastActivity?: Date; pid?: number; exitCode?: number; completionDetected?: boolean; // For interactive apps that need auto-quit metadata?: Record<string, any>; } /** * Command execution options */ export interface CommandExecutionOptions { timeout?: number; workingDirectory?: string; environment?: Record<string, string>; encoding?: string; shell?: boolean; detached?: boolean; uid?: number; gid?: number; windowsVerbatimArguments?: boolean; windowsHide?: boolean; signal?: AbortSignal; } /** * Wait operation configuration */ export interface WaitOptions { timeout?: number; interval?: number; condition?: (output: string) => boolean; pattern?: RegExp; maxAttempts?: number; } /** * Wait operation result */ export interface WaitResult { success: boolean; output?: string; timeout: boolean; attempts: number; duration: number; error?: string; } // Note: HealthCheckResult is imported from types/index.ts /** * Error Context and Recovery */ export interface ErrorContext { sessionId?: string; command?: string; timestamp: Date; operation?: string; stack?: string; metadata?: Record<string, any>; } export interface ErrorRecoveryResult { recovered: boolean; strategy: string; attempts: number; duration: number; newSessionId?: string; error?: string; } /** * Resource usage information */ export interface ResourceUsage { memory: { used: number; available: number; peak: number; }; cpu: { usage: number; load: number[]; }; network: { bytesIn: number; bytesOut: number; connectionsActive: number; }; storage: { bytesRead: number; bytesWritten: number; }; sessions: { active: number; total: number; peak: number; }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ooples/mcp-console-automation'

If you have feedback or need assistance with the MCP directory API, please join our Discord server