/** * Manages active MCP channel connections per session. * * Tracks connected channel subprocesses, routes messages between * glasses (via WS bridge) and Claude sessions (via channels), * and manages pending permission requests. */ import * as net from "node:net"; import type { PendingPermission } from "./types.js"; export interface ChannelConnection { sessionId: string; conn: net.Socket; registeredAt: string; } type BroadcastListener = (event: Record) => void; export declare function registerBroadcastListener(listener: BroadcastListener): void; export declare function registerChannel(sessionId: string, conn: net.Socket): void; export declare function unregisterChannel(sessionId: string): void; export declare function hasChannel(sessionId: string): boolean; export declare function getChannelCount(): number; /** Push a message from glasses into a session's channel (voice text, context). */ export declare function pushToChannel(sessionId: string, content: string, meta?: Record): boolean; /** Forward a permission request from a channel subprocess to WS clients (glasses). */ export declare function handlePermissionRequest(sessionId: string, requestId: string, toolName: string, description: string, inputPreview?: string): void; /** Resolve a pending permission request. */ export declare function resolvePermission(requestId: string, behavior: "allow" | "deny"): boolean; /** Forward a channel reply (Claude → glasses display). */ export declare function handleChannelReply(sessionId: string, message: string): void; /** Get pending permissions, optionally filtered by session. */ export declare function listPendingPermissions(sessionId?: string): PendingPermission[]; export declare function startPermissionCleanup(): void; /** Cleanup all channels (e.g., on daemon shutdown). */ export declare function shutdownAllChannels(): void; export {};