




















@@ -90,6 +90,7 @@ import { resolveModelAsync } from "./model.js";
9090import { createEmbeddedRunReplayState, observeReplayMetadata } from "./replay-state.js";
9191import { handleAssistantFailover } from "./run/assistant-failover.js";
9292import { createEmbeddedRunAuthController } from "./run/auth-controller.js";
93+import { resolveAuthProfileFailureReason } from "./run/auth-profile-failure-policy.js";
9394import { runEmbeddedAttemptWithBackend } from "./run/backend.js";
9495import { createFailoverDecisionLogger } from "./run/failover-observation.js";
9596import { mergeRetryFailoverReason, resolveRunFailoverDecision } from "./run/failover-policy.js";
@@ -669,16 +670,11 @@ export async function runEmbeddedPiAgent(
669670modelId: failure.modelId,
670671});
671672};
672-const resolveAuthProfileFailureReason = (
673-failoverReason: FailoverReason | null,
674-): AuthProfileFailureReason | null => {
675-// Timeouts are transport/model-path failures, not auth health signals,
676-// so they should not persist auth-profile failure state.
677-if (!failoverReason || failoverReason === "timeout") {
678-return null;
679-}
680-return failoverReason;
681-};
673+const resolveRunAuthProfileFailureReason = (failoverReason: FailoverReason | null) =>
674+resolveAuthProfileFailureReason({
675+ failoverReason,
676+policy: params.authProfileFailurePolicy,
677+});
682678const maybeBackoffBeforeOverloadFailover = async (reason: FailoverReason | null) => {
683679if (reason !== "overloaded" || overloadFailoverBackoffMs <= 0) {
684680return;
@@ -1485,7 +1481,7 @@ export async function runEmbeddedPiAgent(
14851481const promptFailoverReason =
14861482promptErrorDetails.reason ?? classifyFailoverReason(errorText, { provider });
14871483const promptProfileFailureReason =
1488-resolveAuthProfileFailureReason(promptFailoverReason);
1484+resolveRunAuthProfileFailureReason(promptFailoverReason);
14891485await maybeMarkAuthProfileFailure({
14901486profileId: lastProfileId,
14911487reason: promptProfileFailureReason,
@@ -1630,7 +1626,7 @@ export async function runEmbeddedPiAgent(
16301626},
16311627);
16321628const assistantProfileFailureReason =
1633-resolveAuthProfileFailureReason(assistantFailoverReason);
1629+resolveRunAuthProfileFailureReason(assistantFailoverReason);
16341630const cloudCodeAssistFormatError = attempt.cloudCodeAssistFormatError;
16351631const imageDimensionError = parseImageDimensionError(
16361632assistantForFailover?.errorMessage ?? "",
@@ -2047,7 +2043,7 @@ export async function runEmbeddedPiAgent(
20472043if (lastProfileId) {
20482044await maybeMarkAuthProfileFailure({
20492045profileId: lastProfileId,
2050-reason: resolveAuthProfileFailureReason(assistantFailoverReason),
2046+reason: resolveRunAuthProfileFailureReason(assistantFailoverReason),
20512047});
20522048}
20532049return {
@@ -2157,7 +2153,7 @@ export async function runEmbeddedPiAgent(
21572153if (lastProfileId) {
21582154await maybeMarkAuthProfileFailure({
21592155profileId: lastProfileId,
2160-reason: resolveAuthProfileFailureReason(assistantFailoverReason),
2156+reason: resolveRunAuthProfileFailureReason(assistantFailoverReason),
21612157});
21622158}
21632159此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。