mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-11 05:11:49 +01:00
refactor(native): build every model rejection result in one place
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
1 parent
263ef18098
commit
05e89386e8
1 file changed
+11
-21
@@ -293,27 +293,17 @@ export function createNativeProviderFailureObservation(provider: { kind: string;
|
|||||||
errorMessage: NATIVE_PROVIDER_OVERLOADED_MESSAGE,
|
errorMessage: NATIVE_PROVIDER_OVERLOADED_MESSAGE,
|
||||||
diagnostic: { ...NATIVE_PROVIDER_OVERLOADED_DIAGNOSTIC },
|
diagnostic: { ...NATIVE_PROVIDER_OVERLOADED_DIAGNOSTIC },
|
||||||
};
|
};
|
||||||
if (turnId === missingModelTurnId) return {
|
// Every model rejection shares one result; only its closed diagnostic differs.
|
||||||
errorCode: "native_provider_model_rejected" as const,
|
const modelRejection = <T>(diagnostic: T) => ({
|
||||||
errorMessage: NATIVE_MODEL_REJECTION_MESSAGE,
|
errorCode: "native_provider_model_rejected" as const, errorMessage: NATIVE_MODEL_REJECTION_MESSAGE, diagnostic,
|
||||||
diagnostic: { ...NATIVE_MODEL_NOT_FOUND_DIAGNOSTIC },
|
});
|
||||||
};
|
if (turnId === missingModelTurnId) return modelRejection({ ...NATIVE_MODEL_NOT_FOUND_DIAGNOSTIC });
|
||||||
if (turnId !== rejectedTurnId) {
|
if (turnId === rejectedTurnId) return modelRejection({ ...NATIVE_MODEL_REJECTION_DIAGNOSTIC });
|
||||||
// A driver's closed category marks a rejected model for any provider. Only an
|
// A driver's closed category marks a rejected model for any provider. Only an
|
||||||
// action-required rejection qualifies; a transient one may succeed on retry.
|
// action-required rejection qualifies; a transient one may succeed on retry.
|
||||||
if (!modelUnavailableTurn(turnId)) return null;
|
if (!modelUnavailableTurn(turnId)) return null;
|
||||||
const failure = providerFailures.get(turnId)!;
|
const failure = providerFailures.get(turnId)!;
|
||||||
return {
|
return modelRejection(failedTurns.get(turnId) ?? { provider: failure.provider, category: failure.category });
|
||||||
errorCode: "native_provider_model_rejected" as const,
|
|
||||||
errorMessage: NATIVE_MODEL_REJECTION_MESSAGE,
|
|
||||||
diagnostic: failedTurns.get(turnId) ?? { provider: failure.provider, category: failure.category },
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
errorCode: "native_provider_model_rejected" as const,
|
|
||||||
errorMessage: NATIVE_MODEL_REJECTION_MESSAGE,
|
|
||||||
diagnostic: { ...NATIVE_MODEL_REJECTION_DIAGNOSTIC },
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
/** Diagnostics only: the failed turn that `forTerminal` did not classify. */
|
/** Diagnostics only: the failed turn that `forTerminal` did not classify. */
|
||||||
unclassifiedTurnFailure(turnId: string | null | undefined, terminal: PrpTerminalState) {
|
unclassifiedTurnFailure(turnId: string | null | undefined, terminal: PrpTerminalState) {
|
||||||
|
|||||||
Reference in new issue
Block a user