openhands / src /utils /acp-error-codes.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
a070805 verified
Raw
History Blame Contribute Delete
1.27 kB
import { I18nKey } from "#/i18n/declaration";
/**
* Structured `code` values the SDK's ACPAgent puts on a ConversationErrorEvent
* (see software-agent-sdk `acp_agent.py`). The banner uses them to show a
* code-specific header and, for credential failures, a recovery action.
*/
export const ACP_AUTH_REQUIRED_CODE = "ACPAuthRequired";
const ACP_ERROR_HEADER_KEYS: Record<string, I18nKey> = {
ACPAuthRequired: I18nKey.ERROR$ACP_AUTH_REQUIRED_TITLE,
// Spawn/init/prompt/usage-policy failures share the generic "Agent error"
// header; their detail already carries the specific cause.
ACPSpawnError: I18nKey.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,
ACPInitError: I18nKey.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,
ACPPromptError: I18nKey.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,
UsagePolicyRefusal: I18nKey.CHAT_INTERFACE$AGENT_ERROR_MESSAGE,
};
/** Localized header key for an error code, or null when the code is unknown. */
export function getAcpErrorHeaderKey(code?: string | null): I18nKey | null {
if (!code) return null;
return ACP_ERROR_HEADER_KEYS[code] ?? null;
}
/** Whether the error is a credential failure that warrants a re-auth action. */
export function isAcpAuthErrorCode(code?: string | null): boolean {
return code === ACP_AUTH_REQUIRED_CODE;
}