import type { ClientOptions } from '../utils/types.js'; /** * Supported client types. * * Represents the set of known MCP client applications supported by this project. */ export type ClientType = 'claude' | 'claude-code' | 'cursor' | 'windsurf' | 'vscode' | 'warp'; /** * MCP server configuration object used in client configuration files. * * Defines the parameters needed to launch the MCP server in the context of a client application. */ export interface ServerConfig { /** Command-line arguments to pass when launching the MCP server. */ args: string[]; /** Base command to execute (typically 'npx' or similar). */ command: string; /** Optional environment variables to set when executing the command. */ env?: Record; /** Optional list of capabilities supported by the client integration. */ capabilities?: string[]; /** Transport type; required by some clients (e.g. Claude Code requires "stdio"). */ type?: string; /** When true, tools are loaded on-demand via Tool Search instead of upfront. */ defer_loading?: boolean; } /** * Generic client configuration format shared across different MCP clients. * * Defines the structure of the configuration file used by client applications * to specify MCP server settings. */ export interface ClientConfig { /** Dictionary of MCP server configurations, keyed by server identifier. */ mcpServers: Record; /** Additional client-specific configuration fields. */ [key: string]: any; } /** * Interface for client managers responsible for handling client-specific configuration. * * Client managers locate, read, and update configuration files * to integrate MCP server support into client applications. */ export interface ClientManager { /** * Returns the absolute path to the client's configuration file. * * @returns The full filesystem path to the configuration file. * @throws Error if the configuration directory cannot be created or accessed. */ getConfigPath(): string; /** * Updates the client's configuration with OpenZiti MCP server settings. * * @param options - Configuration options, including enabled tools and read-only mode. * @returns A Promise that resolves when the configuration update has been completed successfully. * @throws Error if the configuration cannot be written to disk. */ configure(options: ClientOptions): Promise; } /** * Platform-specific path templates. * * Provides OS-specific configuration directory paths for Darwin (macOS), Windows, and Linux. */ export interface PlatformPaths { /** Path template for macOS platforms ('darwin'). */ darwin: string; /** Path template for Windows platforms ('win32'). */ win32: string; /** Path template for Linux platforms ('linux'). */ linux: string; }