import type { DirectToolsSpec } from "./direct-tools.js"; export type ServerFilter = { allow?: string[]; deny?: string[]; }; export type CombinerBlock = { servers?: ServerFilter; exposeResources?: boolean; prompts?: boolean; /** Direct tool promotion: glob allowlist over combined tool names (e.g. * ["combiner__status", "github_search_*"]), or "search" to register tools as * first-class Pi tools the first time mcp({search}) matches them. */ directTools?: string[] | "search"; }; export type CombinerEntry = { url?: string; bearerTokenEnv?: string; combiner?: CombinerBlock; }; export type LadderResult = { /** Merged combiner entry (later files win). Empty object when absent everywhere. */ entry: CombinerEntry; /** Non-combiner server names seen in the ladder — reported (not connected) in v1. */ otherServers: string[]; /** Files that existed and were read, in ladder order. */ sources: string[]; }; /** The ladder, lowest precedence first. Mirrors pi-mcp-adapter's documented order. */ export declare function ladderPaths(cwd: string): string[]; /** Recognize "our" entry: explicit name, explicit marker, or url origin match. */ export declare function isCombinerEntry(name: string, entry: Record, combinerOrigin: string | undefined): boolean; /** Walk the ladder (cwd-relative project files included) and merge. */ export declare function readLadder(cwd: string, combinerOrigin: string | undefined): LadderResult; export type SessionConfig = { /** Token-stripped base URL incl. /mcp. */ baseUrl: string; bearerTokenEnv: string | undefined; /** Explicit token from the configured URL path (user override), if any. */ urlToken: string | undefined; serverFilter: ServerFilter | undefined; directSpec: DirectToolsSpec | undefined; entry: CombinerEntry; otherServers: string[]; sources: string[]; }; export type ResolveSessionConfigOptions = { /** Session working directory (project layers read from here). */ cwd: string; /** Explicit env URL (host-owned or PI_MCP_COMBINER_URL), highest precedence. */ envUrl: string | undefined; /** Settings-file URL, next precedence. */ settingsUrl: string | undefined; /** Serve-side default (host:port/mcp) for origin matching and the fallback. */ defaultUrl: string; }; /** Extract an explicit /mcp/ path token from a URL, if present. */ export declare function urlTokenOf(url: string): string | undefined; /** Normalize a URL back to bare /mcp (strip any token path). */ export declare function stripUrlToken(url: string): string; /** Resolve the full per-session config. Pure — no env or settings reads inside. */ export declare function resolveSessionConfig(opts: ResolveSessionConfigOptions): SessionConfig; //# sourceMappingURL=config-ladder.d.ts.map