( provider: Provider, aimockPort?: number, testId?: string, )
| 25 | } |
| 26 | |
| 27 | function createSummarizeAdapter( |
| 28 | provider: Provider, |
| 29 | aimockPort?: number, |
| 30 | testId?: string, |
| 31 | ) { |
| 32 | const headers = testHeaders(testId) |
| 33 | const factories: Record<string, () => any> = { |
| 34 | openai: () => |
| 35 | createOpenaiSummarize('gpt-4o', DUMMY_KEY, { |
| 36 | baseURL: openaiUrl(aimockPort), |
| 37 | defaultHeaders: headers, |
| 38 | }), |
| 39 | anthropic: () => |
| 40 | createAnthropicSummarize('claude-sonnet-4-5', DUMMY_KEY, { |
| 41 | baseURL: llmockBase(aimockPort), |
| 42 | defaultHeaders: headers, |
| 43 | }), |
| 44 | gemini: () => |
| 45 | createGeminiSummarize(DUMMY_KEY, 'gemini-2.5-flash', { |
| 46 | httpOptions: { baseUrl: llmockBase(aimockPort), headers }, |
| 47 | }), |
| 48 | ollama: () => createOllamaSummarize('mistral', llmockBase(aimockPort)), |
| 49 | grok: () => |
| 50 | createGrokSummarize('grok-build-0.1', DUMMY_KEY, { |
| 51 | baseURL: openaiUrl(aimockPort), |
| 52 | defaultHeaders: headers, |
| 53 | }), |
| 54 | // Both OpenRouter provider rows use the OpenRouter summarize adapter: |
| 55 | // `createOpenRouterSummarize` wraps the OpenRouter chat-completions |
| 56 | // text adapter regardless of whether the caller selected the Chat |
| 57 | // Completions or Responses surface, so a single factory backs both |
| 58 | // matrix entries. |
| 59 | openrouter: () => |
| 60 | createOpenRouterSummarize('openai/gpt-4o', DUMMY_KEY, { |
| 61 | serverURL: openaiUrl(aimockPort), |
| 62 | headers, |
| 63 | }), |
| 64 | 'openrouter-responses': () => |
| 65 | createOpenRouterSummarize('openai/gpt-4o', DUMMY_KEY, { |
| 66 | serverURL: openaiUrl(aimockPort), |
| 67 | headers, |
| 68 | }), |
| 69 | } |
| 70 | return factories[provider]?.() |
| 71 | } |
| 72 | |
| 73 | export const Route = createFileRoute('/api/summarize')({ |
| 74 | server: { |
no test coverage detected