import { posix } from "node:path"; import type { AgentPaths, CodingAgentId, ConnectMethod } from "../coding-agents.js"; export declare const platformPath: (platform: NodeJS.Platform) => typeof posix; export declare const configHome: (paths: AgentPaths) => string; /** * `CLAUDE_CONFIG_DIR` replaces the default folder rather than adding to it. The * Relay channel resolves the same way, so both sides always read one file * (packages/claude-code/src/config.ts, `defaultChannelDir`). */ export declare const claudeConfigDir: (env: NodeJS.ProcessEnv, home: string, platform?: NodeJS.Platform) => string; export declare const codexHome: (env: NodeJS.ProcessEnv, home: string, platform?: NodeJS.Platform) => string; export declare const hermesHome: (env: NodeJS.ProcessEnv, home: string, platform?: NodeJS.Platform) => string; export declare const openclawHome: (home: string, platform?: NodeJS.Platform) => string; export declare const piHome: (home: string, platform?: NodeJS.Platform) => string; export interface CodingAgent { id: CodingAgentId; label: string; /** Other words a person may type for it; the id itself always works. */ aliases: readonly string[]; /** Its own command on PATH, when Relay runs one or names one. */ command?: string; /** Installed when any of these exists. Empty strings are skipped. */ installedIf: (paths: AgentPaths) => string[]; connect: ConnectMethod; start?: { kind: "command"; command: string; args: string[]; prompt: string; } /** * Connect keeps running and answers Relay messages with the agent's own * headless command. It is for an agent that cannot start a turn by itself: * Codex reaches Relay through MCP, and MCP only answers a question the * person already asked it. */ | { kind: "bridge"; command: string; prompt: string; } | { kind: "claude-bridge"; command: string; prompt: string; } /** * Connect keeps running and answers Relay messages by driving the agent * over the Agent Client Protocol (acp-bridge.ts). `args` is the ACP * sub-command, confirmed from the agent's own docs (`cursor-agent acp`, * `gemini --experimental-acp`, `opencode acp`, `cline --acp`). It is * required: an agent whose ACP command is not confirmed is not wired here. */ | { kind: "acp-bridge"; command: string; args: readonly string[]; prompt: string; } | { kind: "pi-bridge"; command: string; prompt: string; } | { kind: "restart"; instruction: string; }; /** What `@vercel/detect-agent` calls it when we are running inside it. */ detectedAs: readonly string[]; /** One sentence connect says when the agent answers only after its own sign-in. */ signIn?: string; } //# sourceMappingURL=shared.d.ts.map