refactor: centralize active billing error context resolution

This commit is contained in:
Gustavo Madeira Santana 2026-02-18 21:44:28 -05:00
parent be8136878c
commit d4340e2236
1 changed files with 28 additions and 11 deletions

View File

@ -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<EmbeddedPiRunResult> {
@ -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,