# Task ID: 71 **Title:** Define ProxyModel Public Type Contract **Status:** done **Dependencies:** None **Priority:** high **Description:** Create the core TypeScript types for the ProxyModel framework that stages will import from `mcpctl/proxymodel`. This establishes the public API contract that stage authors write against. **Details:** Create `src/mcplocal/src/proxymodel/types.ts` with: ```typescript export interface StageHandler { (content: string, ctx: StageContext): Promise; } export interface StageContext { contentType: 'prompt' | 'toolResult' | 'resource'; sourceName: string; projectName: string; sessionId: string; originalContent: string; llm: LLMProvider; cache: CacheProvider; log: Logger; config: Record; } export interface StageResult { content: string; sections?: Section[]; metadata?: Record; } export interface Section { id: string; title: string; content: string; } export interface LLMProvider { complete(prompt: string, options?: { system?: string; maxTokens?: number }): Promise; available(): boolean; } export interface CacheProvider { getOrCompute(key: string, compute: () => Promise): Promise; hash(content: string): string; get(key: string): Promise; set(key: string, value: string): Promise; } export interface Logger { debug(msg: string): void; info(msg: string): void; warn(msg: string): void; error(msg: string): void; } ``` Also create `src/mcplocal/src/proxymodel/index.ts` as the public entrypoint that re-exports these types. Update `package.json` exports to expose `mcpctl/proxymodel`. **Test Strategy:** Unit tests verifying type exports are accessible from the public entrypoint. Create a sample stage file that imports from `mcpctl/proxymodel` and verify it compiles without errors.