import { GatewayAuth } from "./auth.js"; import type { AgentRequestPayload, GatewayConfig } from "./types.js"; export declare function isLoopbackHostname(hostname: string): boolean; export declare function isGatewayOriginAllowed(params: { origin: string; requestUrl: string | URL; gatewayHost: string; gatewayPort: number; controlUiEnabled: boolean; controlUiPort: number; }): boolean; export declare function resolveExecutionWorkspaceOverride(payload: AgentRequestPayload | undefined): string | null; export declare function resolveExecutionConfigDirOverride(payload: AgentRequestPayload | undefined): string | null; /** * Wingman Gateway Server * Manages WebSocket connections for AI agent swarming */ export declare class GatewayServer { private config; private nodeManager; private groupManager; private auth; private server; private boundPort; private startedAt; private messagesProcessed; private pingInterval; private discoveryService; private logger; private wingmanConfig; private router; private sessionManagers; private workspace; private configDir; private uiServer; private controlUiEnabled; private controlUiPort; private controlUiSamePort; private uiDistDir; private browserRelayServer; private webhookStore; private routineStore; private nodeApprovalStore; private smsPolicyStore; private internalHooks; private discordAdapter; private teamsAdapter; private sessionSubscriptions; private socketSubscriptions; private connectedClients; private activeAgentRequests; private activeSessionRequests; private queuedSessionRequests; private requestSessionKeys; private pendingNodeRequests; private terminalSessionManager; private nodePairingRequired; private bridgeQueues; private bridgePollWaiters; constructor(config?: Partial); /** * Start the gateway server */ start(): Promise; /** * Stop the gateway server */ stop(): Promise; getPort(): number; private startAdapters; private stopAdapters; /** * Start discovery service */ private startDiscovery; /** * Handle WebSocket connection open */ private handleOpen; /** * Handle WebSocket message */ private handleMessage; /** * Handle WebSocket connection close */ private handleClose; /** * Handle WebSocket drain (backpressure) */ private handleDrain; /** * Handle client connect handshake */ private handleConnect; /** * Handle agent execution request */ private handleAgentRequest; private executeAgentRequest; private processNextQueuedAgentRequest; private handleAgentCancel; private buildSessionQueueKey; private removeQueuedRequestById; /** * Handle node registration */ private handleRegister; /** * Handle session subscription request */ private handleSessionSubscribe; /** * Handle session unsubscription request */ private handleSessionUnsubscribe; /** * Handle node unregistration */ private handleUnregister; /** * Handle join group request */ private handleJoinGroup; /** * Handle leave group request */ private handleLeaveGroup; /** * Handle broadcast message */ private handleBroadcast; /** * Handle direct message */ private handleDirect; /** * Handle node tool invocation request */ private handleNodeRequest; /** * Route node stream/response messages back to the original requester */ private handleNodeResponse; /** * Handle ping message */ private handlePing; /** * Handle pong message */ private handlePong; private cleanupPendingNodeRequestsForSocket; private clearPendingNodeRequest; private extractNodeErrorMessage; private isNodeApprovedForExecution; private listConnectedNodeIdsForRequester; private listConnectedNodeTargetsForRequester; private resolveNodeRequestTimeout; private resolveNodeTarget; private invokeNodeTool; /** * Send a message to a WebSocket */ private sendMessage; private sendMessageWithRetry; /** * Send an error message */ private sendError; private sendAgentComplete; private sendAgentError; private cancelSocketAgentRequests; private attachSessionContext; private broadcastSessionEvent; private broadcastToClients; private addSessionSubscription; private removeSessionSubscription; private clearSessionSubscriptions; private resolveStateDir; private resolveAgentWorkspace; private resolveConfigDirPath; private getHttpContext; private persistWingmanConfig; private getBuiltInTools; private resolveOutputRoot; private resolveDefaultOutputDir; private resolveFsRoots; private resolveFsPath; private isPathWithinRoots; private resolveControlUiDir; private getSessionManager; /** * Handle health check request */ private handleHealthCheck; /** * Handle stats request */ private handleStats; /** * Get gateway statistics */ private getStats; /** * Start ping interval to check for stale connections */ private startPingInterval; /** * Log a message */ private log; private isRequestOriginAllowed; private withApiCors; private resolveTrustedTailscaleUser; private resolveHttpAuthPayload; private requireHttpAuth; private handleUiRequest; /** * Get the auth instance */ getAuth(): GatewayAuth; /** * Get the server config */ getConfig(): GatewayConfig; /** * Handle HTTP bridge send request */ private handleBridgeSend; /** * Handle HTTP bridge poll request */ private handleBridgePoll; /** * Generate a unique node ID */ private generateNodeId; }