xc-mcp
Version:
MCP server that wraps Xcode command-line tools for iOS/macOS development workflows
73 lines • 2.24 kB
TypeScript
import { XcodeProject } from '../types/xcode.js';
export interface BuildConfig {
scheme: string;
configuration: string;
destination?: string;
sdk?: string;
derivedDataPath?: string;
}
export interface BuildMetrics {
timestamp: Date;
config: BuildConfig;
success: boolean;
duration?: number;
errorCount: number;
warningCount: number;
buildSizeBytes: number;
}
export interface ProjectInfo {
path: string;
lastModified: Date;
projectData: XcodeProject;
preferredScheme?: string;
lastSuccessfulConfig?: BuildConfig;
}
export interface DependencyInfo {
lastChecked: Date;
packageResolved?: Record<string, unknown>;
podfileLock?: string;
carthageResolved?: string;
}
export declare class ProjectCache {
private projectConfigs;
private buildHistory;
private dependencyCache;
private cacheMaxAge;
constructor();
setCacheMaxAge(milliseconds: number): void;
getCacheMaxAge(): number;
clearCache(): void;
getProjectInfo(projectPath: string, force?: boolean): Promise<ProjectInfo>;
getPreferredBuildConfig(projectPath: string): Promise<BuildConfig | null>;
recordBuildResult(projectPath: string, config: BuildConfig, metrics: Omit<BuildMetrics, 'config'>): void;
getBuildHistory(projectPath: string, limit?: number): BuildMetrics[];
getPerformanceTrends(projectPath: string): {
avgBuildTime?: number;
successRate: number;
recentErrorCount: number;
buildTimeImprovement?: number;
};
getDependencyInfo(projectPath: string): Promise<DependencyInfo | null>;
getCacheStats(): {
projectCount: number;
buildHistoryCount: number;
dependencyCount: number;
cacheMaxAgeMs: number;
cacheMaxAgeHuman: string;
};
private isProjectCacheValid;
private isDependencyCacheValid;
private normalizePath;
private formatDuration;
/**
* Load persisted state from disk
*/
private loadPersistedState;
/**
* Persist state to disk with debouncing
*/
private saveStateTimeout;
private persistStateDebounced;
}
export declare const projectCache: ProjectCache;
//# sourceMappingURL=project-cache.d.ts.map