From 90772a3267e9acdc8c24449aa3391c4a089f947a Mon Sep 17 00:00:00 2001 From: Nihal Jain Date: Tue, 5 May 2026 04:21:40 +0530 Subject: [PATCH] fix: update model aliases and enhance event parsing for Copilot provider - Fixes #219 --- src/models.ts | 5 +++++ src/providers/copilot.ts | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/models.ts b/src/models.ts index c756fb2..f338c14 100644 --- a/src/models.ts +++ b/src/models.ts @@ -130,6 +130,11 @@ const BUILTIN_ALIASES: Record = { 'anthropic--claude-4.5-opus': 'claude-opus-4-5', 'anthropic--claude-4.5-sonnet': 'claude-sonnet-4-5', 'anthropic--claude-4.5-haiku': 'claude-haiku-4-5', + 'claude-sonnet-4.6': 'claude-sonnet-4-6', + 'claude-sonnet-4.5': 'claude-sonnet-4-5', + 'claude-opus-4.7': 'claude-opus-4-7', + 'claude-opus-4.6': 'claude-opus-4-6', + 'claude-opus-4.5': 'claude-opus-4-5', 'cursor-auto': 'claude-sonnet-4-5', 'cursor-agent-auto': 'claude-sonnet-4-5', 'copilot-auto': 'claude-sonnet-4-5', diff --git a/src/providers/copilot.ts b/src/providers/copilot.ts index baa4dcf..01a1b1f 100644 --- a/src/providers/copilot.ts +++ b/src/providers/copilot.ts @@ -70,6 +70,7 @@ type LegacyCopilotEvent = | { type: 'session.model_change'; timestamp?: string; data: { newModel: string } } | { type: 'user.message'; timestamp?: string; data: { content: string; interactionId?: string } } | { type: 'assistant.message'; timestamp?: string; data: { messageId: string; outputTokens: number; interactionId?: string; toolRequests?: LegacyToolRequest[] } } + | { type: string; timestamp?: string; data: Record } function parseLegacyEvents(content: string, sessionId: string, seenKeys: Set): ParsedProviderCall[] { const results: ParsedProviderCall[] = [] @@ -85,8 +86,14 @@ function parseLegacyEvents(content: string, sessionId: string, seenKeys: Set = [ { prefix: 'toolu_bdrk_', model: COPILOT_ANTHROPIC_AUTO }, { prefix: 'toolu_vrtx_', model: COPILOT_ANTHROPIC_AUTO }, { prefix: 'tooluse_', model: COPILOT_ANTHROPIC_AUTO }, + { prefix: 'toolu_', model: COPILOT_ANTHROPIC_AUTO }, // OpenAI tool-call IDs. { prefix: 'call_', model: COPILOT_OPENAI_AUTO }, ] @@ -166,6 +174,12 @@ function inferModelFromToolCallIds(events: TranscriptEvent[]): string { const modelCounts = new Map() for (const e of events) { + // Some newer events (like tool.execution_complete) explicitly include the model ID. + const data = e.data as { model?: string } + if (typeof data.model === 'string' && data.model) { + modelCounts.set(data.model, (modelCounts.get(data.model) ?? 0) + 100) + } + if (e.type !== 'assistant.message') continue const msg = e as { data: { toolRequests?: TranscriptToolRequest[] } } for (const t of msg.data.toolRequests ?? []) { @@ -182,7 +196,7 @@ function inferModelFromToolCallIds(events: TranscriptEvent[]): string { return [...modelCounts.entries()].sort((a, b) => b[1] - a[1])[0]![0] } - return 'copilot-auto' + return COPILOT_OPENAI_AUTO } function parseTranscriptEvents(content: string, sessionId: string, seenKeys: Set): ParsedProviderCall[] {