From d4340e223684527a6cc6d3d413078cc2f829c2dd Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Wed, 18 Feb 2026 21:44:28 -0500 Subject: [PATCH] refactor: centralize active billing error context resolution --- src/agents/pi-embedded-runner/run.ts | 39 ++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/agents/pi-embedded-runner/run.ts b/src/agents/pi-embedded-runner/run.ts index 1c5114bac06..72e9f3999ac 100644 --- a/src/agents/pi-embedded-runner/run.ts +++ b/src/agents/pi-embedded-runner/run.ts @@ -160,6 +160,17 @@ const toNormalizedUsage = (usage: UsageAccumulator) => { }; }; +function resolveActiveErrorContext(params: { + lastAssistant: { provider?: string; model?: string } | undefined; + provider: string; + model: string; +}): { provider: string; model: string } { + return { + provider: params.lastAssistant?.provider ?? params.provider, + model: params.lastAssistant?.model ?? params.model, + }; +} + export async function runEmbeddedPiAgent( params: RunEmbeddedPiAgentParams, ): Promise { @@ -549,14 +560,17 @@ export async function runEmbeddedPiAgent( const lastTurnTotal = lastAssistantUsage?.total ?? attemptUsage?.total; const attemptCompactionCount = Math.max(0, attempt.compactionCount ?? 0); autoCompactionCount += attemptCompactionCount; - const activeErrorProvider = lastAssistant?.provider ?? provider; - const activeErrorModel = lastAssistant?.model ?? modelId; + const activeErrorContext = resolveActiveErrorContext({ + lastAssistant, + provider, + model: modelId, + }); const formattedAssistantErrorText = lastAssistant ? formatAssistantErrorText(lastAssistant, { cfg: params.config, sessionKey: params.sessionKey ?? params.sessionId, - provider: activeErrorProvider, - model: activeErrorModel, + provider: activeErrorContext.provider, + model: activeErrorContext.model, }) : undefined; const assistantErrorText = @@ -922,8 +936,8 @@ export async function runEmbeddedPiAgent( ? formatAssistantErrorText(lastAssistant, { cfg: params.config, sessionKey: params.sessionKey ?? params.sessionId, - provider: activeErrorProvider, - model: activeErrorModel, + provider: activeErrorContext.provider, + model: activeErrorContext.model, }) : undefined) || lastAssistant?.errorMessage?.trim() || @@ -932,7 +946,10 @@ export async function runEmbeddedPiAgent( : rateLimitFailure ? "LLM request rate limited." : billingFailure - ? formatBillingErrorMessage(activeErrorProvider, activeErrorModel) + ? formatBillingErrorMessage( + activeErrorContext.provider, + activeErrorContext.model, + ) : authFailure ? "LLM request unauthorized." : "LLM request failed."); @@ -941,8 +958,8 @@ export async function runEmbeddedPiAgent( (isTimeoutErrorMessage(message) ? 408 : undefined); throw new FailoverError(message, { reason: assistantFailoverReason ?? "unknown", - provider: activeErrorProvider, - model: activeErrorModel, + provider: activeErrorContext.provider, + model: activeErrorContext.model, profileId: lastProfileId, status, }); @@ -977,8 +994,8 @@ export async function runEmbeddedPiAgent( lastToolError: attempt.lastToolError, config: params.config, sessionKey: params.sessionKey ?? params.sessionId, - provider: activeErrorProvider, - model: activeErrorModel, + provider: activeErrorContext.provider, + model: activeErrorContext.model, verboseLevel: params.verboseLevel, reasoningLevel: params.reasoningLevel, toolResultFormat: resolvedToolResultFormat,