mirror of https://github.com/openclaw/openclaw.git
refactor: centralize active billing error context resolution
This commit is contained in:
parent
be8136878c
commit
d4340e2236
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue