run402-mcp
Version:
MCP server for Run402 — full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. Paid with x402/MPP. Includes $0.03 image generation.
155 lines • 5.92 kB
TypeScript
/**
* `r.buzz.doctor()` — the zero-mutation Buzz setup preflight
* (`run402.buzz-doctor.v1`), owned by the Node SDK: the managed session's
* shell and Node runtime, the Run402 CLI, the managed Buzz CLI sidecar and
* its capabilities, the public agent identity, the Run402 API and console
* origins (measured with `r.diagnostics.probeOrigin`), the Buzz relay (a
* DNS-pinned NIP-11 read), and the explicit wallet profile. Every check's
* status is `ok | warning | blocked`; a blocked or warning check carries
* exactly one repair action from the frozen matrix below.
*
* `run402 doctor --buzz` is a shim over this. The Run402 CLI facts (its
* version, how it was installed, whether it is current) are the calling
* program's own, supplied as hooks; without them the `run402_cli` check
* reports the CLI unavailable.
*/
import { Buzz } from "../namespaces/buzz.js";
import type { Client } from "../kernel.js";
import { Diagnostics, type OriginProbeResult } from "./diagnostics.js";
export declare const BUZZ_DOCTOR_TIMEOUT_MS = 3000;
export declare const BUZZ_DOCTOR_MAX_RESPONSE_BYTES: number;
export declare const BUZZ_DOCTOR_MIN_NODE_MAJOR = 22;
export declare const BUZZ_DOCTOR_MIN_RUN402_VERSION = "4.17.2";
export declare const BUZZ_DOCTOR_REPAIR_MATRIX: Readonly<{
BUZZ_PREFLIGHT_SHELL_UNAVAILABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_NODE_UNAVAILABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_NODE_INCOMPATIBLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_RUN402_UNAVAILABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_RUN402_INCOMPATIBLE: {
type: string[];
surface: string;
};
BUZZ_PREFLIGHT_RUN402_UPDATE_AVAILABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_BUZZ_CLI_UNAVAILABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_BUZZ_CLI_INCOMPATIBLE: {
type: string;
surface: string;
};
BUZZ_AGENT_TARGET_REQUIRED: {
type: string;
surface: string;
};
BUZZ_AGENT_TARGET_UNVERIFIED: {
type: string[];
surface: string[];
};
BUZZ_AGENT_TARGET_MISMATCH: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_API_UNREACHABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_CONSOLE_UNREACHABLE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_RELAY_UNSAFE: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_RELAY_UNREACHABLE: {
type: string[];
surface: string;
};
BUZZ_PREFLIGHT_WALLET_PROFILE_REQUIRED: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_WALLET_PROFILE_NOT_FOUND: {
type: string;
surface: string;
};
BUZZ_PREFLIGHT_WALLET_PROFILE_MISMATCH: {
type: string;
surface: string;
};
}>;
export declare function normalizeNostrSubject(value: any): string | null;
/** What the Run402 CLI knows about itself, supplied by the CLI when it runs the preflight. */
export interface BuzzDoctorRun402CliHooks {
/** The executing CLI's version. */
currentVersion: () => string;
/** How the executing CLI was installed: `{ kind, confidence, package_manager }`. */
detectInstall: (ctx: {
cwd: string;
env: Record<string, string | undefined>;
argv: string[];
execPath: string;
}) => any;
/** The CLI's own update check (a doctor check; `status: "warning"` offers an upgrade). */
updateCheck?: (opts: Record<string, unknown>) => Promise<any>;
}
export interface BuzzDoctorOptions {
/** The intended managed agent's public key, hex (see {@link normalizeNostrSubject}). */
expectedSubjectHex?: string | null;
/** The Run402 CLI's facts; absent, the `run402_cli` check reports the CLI unavailable. */
run402Cli?: BuzzDoctorRun402CliHooks;
env?: Record<string, string | undefined>;
argv?: string[];
execPath?: string;
cliExecutable?: string | null;
cwd?: string;
platform?: NodeJS.Platform;
now?: number;
runCommand?: (command: string, args: string[], options?: Record<string, unknown>) => any;
lookup?: (hostname: string, options: any) => Promise<any>;
pinnedRelayRead?: (relay: any, record: any, options: {
timeoutMs: number;
maxBytes: number;
}) => Promise<any>;
/** Measures an origin; defaults to `r.diagnostics.probeOrigin`. */
originProbe?: (url: URL, options: {
timeoutMs: number;
maxBytes: number;
}) => Promise<OriginProbeResult>;
getActiveProfile?: () => string;
profileExistsImpl?: (name: string) => boolean;
readMetaImpl?: (name: string) => any;
apiOrigin?: string;
consoleOrigin?: string;
}
export declare function buildBuzzDoctorReport({ expectedSubjectHex, run402Cli, env, argv, execPath, cliExecutable, cwd, platform, now, runCommand, lookup, pinnedRelayRead, originProbe, getActiveProfile, profileExistsImpl, readMetaImpl, apiOrigin, consoleOrigin, }?: BuzzDoctorOptions): Promise<any>;
export declare function defaultPinnedRelayRead(relay: any, record: any, { timeoutMs, maxBytes }?: any): Promise<unknown>;
export declare function isPublicAddress(address: any): boolean;
export declare function pinnedLookup(record: any, expectedHostname: any): (hostname: any, options: any, callback: any) => void;
/**
* `r.buzz` on the Node entry: the isomorphic Buzz workflows plus the
* zero-mutation setup preflight.
*/
export declare class NodeBuzz extends Buzz {
#private;
constructor(client: Client, diagnostics: Diagnostics);
/** The `run402.buzz-doctor.v1` report. Read-only: nothing is created, signed, or published. */
doctor(opts?: BuzzDoctorOptions): Promise<any>;
}
//# sourceMappingURL=buzz-doctor.d.ts.map