Files
mcpctl/.taskmaster/tasks/task_082.md

67 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

# Task ID: 82
**Title:** Integrate Pipeline Executor into Router
**Status:** done
**Dependencies:** 80 ✓, 81 ✓
**Priority:** high
**Description:** Modify the McpRouter to route content through the proxymodel pipeline, keeping the gating logic cleanly separated from content processing.
**Details:**
Modify `src/mcplocal/src/router.ts` to:
1. Add proxyModel resolution during router creation:
```typescript
import { loadProxyModels } from './proxymodel/loader';
import { executePipeline } from './proxymodel/executor';
interface RouterOptions {
proxyModelName?: string;
// ... existing options
}
async function createRouter(opts: RouterOptions): Promise<McpRouter> {
const proxyModels = await loadProxyModels();
const proxyModel = proxyModels.get(opts.proxyModelName ?? 'default');
// ...
}
```
2. Add content processing method:
```typescript
async processContent(
content: string,
type: 'prompt' | 'toolResult',
sourceName: string,
sessionId: string
): Promise<StageResult> {
if (!this.proxyModel) return { content };
const appliesTo = this.proxyModel.spec.appliesTo ?? ['prompts', 'toolResults'];
if (!appliesTo.includes(type === 'prompt' ? 'prompts' : 'toolResults')) {
return { content };
}
return executePipeline({
content,
contentType: type,
sourceName,
projectName: this.projectName,
sessionId,
proxyModel: this.proxyModel,
providerRegistry: this.providerRegistry,
cache: this.cache,
});
}
```
3. Call processContent at the appropriate points in the request flow (prompt serving, tool result handling) WITHOUT interweaving with gating logic.
**Test Strategy:**
Integration tests: default proxymodel passes content through unchanged, subindex proxymodel produces summaries, appliesTo filtering works correctly, gating still works as before with proxymodel processing happening at the right stage.