blob: 9534669c8f41ef3762ba2faf13f6704fc9c56bc9 [file]
import type { ConnectionTestResult, TextFileImportPreflightFailureReason, UiLocale } from '@maka/core';
import { generalizedErrorMessage, generalizedErrorMessageChinese } from '@maka/core';
import { getShellCopy } from './locales/shell-copy.js';
const SESSION_READ_MESSAGES_ERROR_MARKER = 'MAKA_SESSION_READ_MESSAGES_ERROR:';
export function messageReadErrorMessage(error: unknown, locale: UiLocale): string {
return sessionMessageErrorMessage(error, getShellCopy(locale).errors.messageRead, locale);
}
export function messageRefreshErrorMessage(error: unknown, locale: UiLocale): string {
return sessionMessageErrorMessage(error, getShellCopy(locale).errors.messageRefresh, locale);
}
function sessionMessageErrorMessage(error: unknown, fallback: string, locale: UiLocale): string {
const raw = error instanceof Error ? error.message : String(error);
const markerIndex = raw.indexOf(SESSION_READ_MESSAGES_ERROR_MARKER);
if (markerIndex < 0 || locale === 'en') return localizedErrorMessage(error, fallback, locale);
const marked = raw.slice(markerIndex + SESSION_READ_MESSAGES_ERROR_MARKER.length).trim();
return marked.split(/\r?\n/, 1)[0]?.trim() || fallback;
}
function localizedErrorMessage(error: unknown, fallback: string, locale: UiLocale): string {
return locale === 'zh' ? generalizedErrorMessageChinese(error, fallback) : generalizedErrorMessage(error, fallback);
}
export function commandPaletteActionErrorMessage(error: unknown, fallback: string, locale: UiLocale): string {
return localizedErrorMessage(error, fallback, locale);
}
export function openPathActionErrorMessage(
error: unknown,
key: 'workspace' | 'project' | 'skills',
locale: UiLocale,
): string {
const copy = getShellCopy(locale);
return localizedErrorMessage(error, copy.errors.openPath(copy.paths[key]), locale);
}
export function commandPaletteConnectionTestFailureMessage(result: ConnectionTestResult, locale: UiLocale): string {
const fallback = commandPaletteConnectionTestFailureFallback(result, locale);
if (!result.errorMessage) return fallback;
return localizedErrorMessage(new Error(result.errorMessage), fallback, locale);
}
function commandPaletteConnectionTestFailureFallback(result: ConnectionTestResult, locale: UiLocale): string {
const copy = getShellCopy(locale).commandActions.connectionFailures;
if (result.statusCode === 429) return copy.rateLimit;
if (result.errorClass === 'timeout') return copy.timeout;
if (result.errorClass === 'auth' || result.statusCode === 401 || result.statusCode === 403) {
return copy.auth;
}
if (result.errorClass === 'network') return copy.network;
if (result.errorClass === 'provider_unavailable' || (result.statusCode && result.statusCode >= 500)) {
return copy.provider;
}
return copy.unknown;
}
export function openSkillFailureCopy(
reason: 'invalid_id' | 'missing' | 'blocked_path' | 'not_file' | 'not_directory' | 'open_failed',
locale: UiLocale,
): string {
return getShellCopy(locale).skillActions.openFailures[reason];
}