import type { ExecutionContextBase, ExecutionContextEvent, ExecutionRoutingStrategy, } from '../execution/index.js' import type { AuthConfig } from './core.js' export type { ExecutionEnvironment, ExecutionCapability, ExecutionContextBase, } from '../execution/index.js' export type { CommandOptions, CommandResult, CommandTermination, CommandExecutor, RemoteCommandHandler, } from '../execution/index.js' export type { ExecutionRoutingStrategy, ExecutionContextLifecycle } from '../execution/index.js' export type { ExecutionContextEventListener } from '../execution/index.js' export interface RemoteTarget { type: 'ssh' | 'rdp' | 'api' host: string port?: number auth?: AuthConfig metadata?: Record } export interface LocalExecutionContextConfig extends ExecutionContextBase { environment: 'local' cwd: string fsAccess: boolean envVars?: Record shell?: string /** Retained bytes per stdout/stderr stream. Defaults to 4 MiB; maximum 64 MiB. */ maxOutputBytes?: number } export interface RemoteExecutionContextConfig extends ExecutionContextBase { environment: 'remote' target: RemoteTarget } export interface HybridExecutionContextConfig extends ExecutionContextBase { environment: 'hybrid' local: Omit remotes: RemoteTarget[] routingStrategy?: ExecutionRoutingStrategy } export type ExecutionContextConfig = | LocalExecutionContextConfig | RemoteExecutionContextConfig | HybridExecutionContextConfig export type ConnectorExecutionContextEvent = | ExecutionContextEvent | { type: 'remote_connected'; contextId: string; target: RemoteTarget } | { type: 'remote_disconnected'; contextId: string; host: string }