Gate model fallback session.status retries
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
+6
-3
@@ -22,7 +22,7 @@ import { getAgentConfigKey } from "../shared/agent-display-names";
|
|||||||
import { log } from "../shared/logger";
|
import { log } from "../shared/logger";
|
||||||
import { shouldRetryError } from "../shared/model-error-classifier";
|
import { shouldRetryError } from "../shared/model-error-classifier";
|
||||||
import { buildFallbackChainFromModels } from "../shared/fallback-chain-from-models";
|
import { buildFallbackChainFromModels } from "../shared/fallback-chain-from-models";
|
||||||
import { extractRetryAttempt, normalizeRetryStatusMessage } from "../shared/retry-status-utils";
|
import { extractRetryAttempt, extractRetryStatusModel, normalizeRetryStatusMessage } from "../shared/retry-status-utils";
|
||||||
import { clearSessionModel, setSessionModel } from "../shared/session-model-state";
|
import { clearSessionModel, setSessionModel } from "../shared/session-model-state";
|
||||||
import { deleteSessionTools } from "../shared/session-tools-store";
|
import { deleteSessionTools } from "../shared/session-tools-store";
|
||||||
import { lspManager } from "../tools";
|
import { lspManager } from "../tools";
|
||||||
@@ -387,11 +387,14 @@ export function createEventHandler(args: {
|
|||||||
if (sessionID && status?.type === "retry" && isModelFallbackEnabled && !isRuntimeFallbackEnabled) {
|
if (sessionID && status?.type === "retry" && isModelFallbackEnabled && !isRuntimeFallbackEnabled) {
|
||||||
try {
|
try {
|
||||||
const retryMessage = typeof status.message === "string" ? status.message : "";
|
const retryMessage = typeof status.message === "string" ? status.message : "";
|
||||||
const parsedForKey = extractProviderModelFromErrorMessage(retryMessage);
|
|
||||||
const retryAttempt = extractRetryAttempt(status.attempt, retryMessage);
|
const retryAttempt = extractRetryAttempt(status.attempt, retryMessage);
|
||||||
|
const retryModel =
|
||||||
|
extractRetryStatusModel(retryMessage) ??
|
||||||
|
lastKnownModelBySession.get(sessionID)?.modelID ??
|
||||||
|
"unknown-model";
|
||||||
// Deduplicate countdown updates for the same retry attempt/model.
|
// Deduplicate countdown updates for the same retry attempt/model.
|
||||||
// Messages like "retrying in 7m 56s" change every second but should only trigger once.
|
// Messages like "retrying in 7m 56s" change every second but should only trigger once.
|
||||||
const retryKey = `${retryAttempt}:${parsedForKey.providerID ?? ""}/${parsedForKey.modelID ?? ""}:${normalizeRetryStatusMessage(retryMessage)}`;
|
const retryKey = `${retryAttempt}:${retryModel}:${normalizeRetryStatusMessage(retryMessage)}`;
|
||||||
if (lastHandledRetryStatusKey.get(sessionID) === retryKey) {
|
if (lastHandledRetryStatusKey.get(sessionID) === retryKey) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user