@mesh-tech/mesh-cli
Version:
CLI for Mesh platform development utilities
52 lines (51 loc) • 2.13 kB
TypeScript
import * as net from 'node:net';
export interface RunnerManifest {
tenant: string;
pid: number;
pgid: number;
token: string;
controlPort: number;
socksPort: number;
ports: number[];
startedAt: string;
}
export interface ControlResponse {
token: string;
tenant: string;
pid: number;
socksPort: number;
listening: number[];
bindErrors: Record<string, string>;
}
export declare function mintRunnerToken(): string;
export declare function readRunnerManifest(file: string): RunnerManifest | null;
export declare function writeRunnerManifest(file: string, manifest: RunnerManifest): void;
export declare function clearRunnerManifest(file: string, token?: string): void;
export declare function getProcessGroupId(pid: number): number | null;
export declare function parseRunnerPidsFromPs(psOutput: string, tenant: string, exclude?: number): number[];
export declare function discoverRunnerPids(tenant: string, exclude?: number): number[];
export declare function startControlServer(payload: () => ControlResponse): Promise<{
server: net.Server;
port: number;
}>;
export declare function queryControl(port: number, timeoutMs?: number): Promise<ControlResponse | null>;
export interface OwnershipCheck {
ok: boolean;
reason: string;
resp?: ControlResponse;
}
export declare function verifyRunnerOwnership(args: {
manifest: RunnerManifest | null;
expectedSocksPort: number;
expectedPorts: number[];
isPidAlive?: (pid: number) => boolean;
query?: (port: number) => Promise<ControlResponse | null>;
}): Promise<OwnershipCheck>;
export declare function pollOwnership(check: () => Promise<OwnershipCheck>, deadlineMs: number): Promise<OwnershipCheck>;
export declare function describePortOwner(port: number): string | null;
export interface SquattedPort {
port: number;
owner: string | null;
}
export declare function findSquattedPorts(ports: number[], accepts: (port: number) => Promise<boolean>): Promise<SquattedPort[]>;
export declare function buildSquatterError(tenant: string, squatted: SquattedPort[], detail?: string): string;