diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml
index 9cea061ff..477204e4c 100644
--- a/packages/i18n/src/locales/en/settings.yaml
+++ b/packages/i18n/src/locales/en/settings.yaml
@@ -20,8 +20,12 @@ dialogs:
baseUrlHelp: API endpoint URL (use default if unsure)
accountId: Account ID
validationSuccess: Configuration validation success
+ validationPartial: Configuration partially validated
validationFailed: Configuration validation failed
validationError: 'Validation error: {error}'
+ testGeneration: Test Generation
+ testGenerationRunning: Testing...
+ testGenerationFailed: Generation test failed
skipForNow: Skip for now
saveAndContinue: Save and Continue
next: Next
diff --git a/packages/i18n/src/locales/es/settings.yaml b/packages/i18n/src/locales/es/settings.yaml
index e78e5a76a..706c15014 100644
--- a/packages/i18n/src/locales/es/settings.yaml
+++ b/packages/i18n/src/locales/es/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: URL del endpoint de la API (usa el predeterminado si no estás seguro)
accountId: ID de Cuenta
validationSuccess: La validación de la configuración fue exitosa
+ validationPartial: Configuración parcialmente validada
validationFailed: La validación de la configuración falló
validationError: 'Error de validación: {error}'
+ testGeneration: Prueba de Generación
+ testGenerationRunning: Probando...
+ testGenerationFailed: Prueba de generación fallida
skipForNow: Omitir por ahora
saveAndContinue: Guardar y Continuar
next: Siguiente
diff --git a/packages/i18n/src/locales/fr/settings.yaml b/packages/i18n/src/locales/fr/settings.yaml
index 5b3ac2c8c..a97caeee5 100644
--- a/packages/i18n/src/locales/fr/settings.yaml
+++ b/packages/i18n/src/locales/fr/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: URL de l'endpoint API (utilisez la valeur par défaut si vous n’êtes pas sûr)
accountId: ID du compte
validationSuccess: Validation de la configuration réussie
+ validationPartial: Configuration partiellement validée
validationFailed: La validation de la configuration a échouée.
validationError: 'Erreur de validation: {error}'
+ testGeneration: Test de génération
+ testGenerationRunning: Test en cours...
+ testGenerationFailed: Test de génération échoué
skipForNow: Passer pour l'instant
saveAndContinue: Sauvegarder et Continuer
next: Suivant
diff --git a/packages/i18n/src/locales/ja/settings.yaml b/packages/i18n/src/locales/ja/settings.yaml
index 0ce5eb43e..8b43cd390 100644
--- a/packages/i18n/src/locales/ja/settings.yaml
+++ b/packages/i18n/src/locales/ja/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: APIエンドポイントURL(不明な場合はデフォルトを使用)
accountId: アカウントID
validationSuccess: 設定検証に成功
+ validationPartial: 設定が部分的に検証されました
validationFailed: 設定検証に失敗
validationError: '検証エラー: {error}'
+ testGeneration: 生成テスト
+ testGenerationRunning: テスト中...
+ testGenerationFailed: 生成テストに失敗
skipForNow: 今はスキップ
saveAndContinue: 保存して続行
next: 次へ
diff --git a/packages/i18n/src/locales/ko/settings.yaml b/packages/i18n/src/locales/ko/settings.yaml
index 555ce7891..31fcbc489 100644
--- a/packages/i18n/src/locales/ko/settings.yaml
+++ b/packages/i18n/src/locales/ko/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: API 엔드포인트 URL(확실하지 않은 경우 기본값 사용)
accountId: 계정 ID
validationSuccess: 구성 검증 성공
+ validationPartial: 구성이 부분적으로 검증됨
validationFailed: 구성 검증 실패
validationError: '검증 오류: {error}'
+ testGeneration: 생성 테스트
+ testGenerationRunning: 테스트 중...
+ testGenerationFailed: 생성 테스트 실패
skipForNow: 지금은 건너뛰기
saveAndContinue: 저장 및 계속
next: 다음
diff --git a/packages/i18n/src/locales/ru/settings.yaml b/packages/i18n/src/locales/ru/settings.yaml
index 69ca57b6d..2329cdf0c 100644
--- a/packages/i18n/src/locales/ru/settings.yaml
+++ b/packages/i18n/src/locales/ru/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: URL конечной точки API (оставьте по умолчанию, если не уверены)
accountId: ID аккаунта
validationSuccess: Configuration validation success
+ validationPartial: Конфигурация частично проверена
validationFailed: Проверка конфигурации не удалась
validationError: 'Ошибка проверки: {error}'
+ testGeneration: Тест генерации
+ testGenerationRunning: Тестирование...
+ testGenerationFailed: Тест генерации не удался
skipForNow: Пропустить на сейчас
saveAndContinue: Сохранить и продолжить
next: Далее
diff --git a/packages/i18n/src/locales/vi/settings.yaml b/packages/i18n/src/locales/vi/settings.yaml
index 72aaebc05..9a682c001 100644
--- a/packages/i18n/src/locales/vi/settings.yaml
+++ b/packages/i18n/src/locales/vi/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: Địa chỉ API đầu cuối (dùng mặc định nếu không chắc)
accountId: ID tài khoản
validationSuccess: Xác thực cấu hình thành công
+ validationPartial: Cấu hình được xác thực một phần
validationFailed: Xác thực cấu hình thất bại
validationError: 'Lỗi xác thực: {error}'
+ testGeneration: Kiểm tra tạo
+ testGenerationRunning: Đang kiểm tra...
+ testGenerationFailed: Kiểm tra tạo thất bại
skipForNow: Bỏ qua
saveAndContinue: Lưu và tiếp tục
next: Tiếp
diff --git a/packages/i18n/src/locales/zh-Hans/settings.yaml b/packages/i18n/src/locales/zh-Hans/settings.yaml
index c9f8bd5ba..dacc31344 100644
--- a/packages/i18n/src/locales/zh-Hans/settings.yaml
+++ b/packages/i18n/src/locales/zh-Hans/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: API 端点 URL(如果不确定请使用默认值)
accountId: 账户 ID
validationSuccess: 配置验证成功
+ validationPartial: 配置部分验证通过
validationFailed: 配置验证失败
validationError: '验证错误:{error}'
+ testGeneration: 测试生成
+ testGenerationRunning: 测试中...
+ testGenerationFailed: 生成测试失败
skipForNow: 暂时跳过
saveAndContinue: 保存并继续
next: 下一步
diff --git a/packages/i18n/src/locales/zh-Hant/settings.yaml b/packages/i18n/src/locales/zh-Hant/settings.yaml
index b09fd77eb..91dab73ba 100644
--- a/packages/i18n/src/locales/zh-Hant/settings.yaml
+++ b/packages/i18n/src/locales/zh-Hant/settings.yaml
@@ -19,8 +19,12 @@ dialogs:
baseUrlHelp: API 端點 URL(如果不確定請使用預設值)
accountId: 帳號 ID
validationSuccess: 設定驗證成功
+ validationPartial: 設定部分驗證通過
validationFailed: 設定驗證失敗
validationError: '驗證錯誤:{error}'
+ testGeneration: 測試生成
+ testGenerationRunning: 測試中...
+ testGenerationFailed: 生成測試失敗
skipForNow: 先略過
saveAndContinue: 儲存並繼續
next: 下一步
diff --git a/packages/stage-pages/src/pages/settings/providers/chat/[providerId].vue b/packages/stage-pages/src/pages/settings/providers/chat/[providerId].vue
index 48a49d4c5..360a65bd3 100644
--- a/packages/stage-pages/src/pages/settings/providers/chat/[providerId].vue
+++ b/packages/stage-pages/src/pages/settings/providers/chat/[providerId].vue
@@ -2,13 +2,13 @@
import type { RemovableRef } from '@vueuse/core'
import {
- Alert,
ProviderAdvancedSettings,
ProviderApiKeyInput,
ProviderBaseUrlInput,
ProviderBasicSettings,
ProviderSettingsContainer,
ProviderSettingsLayout,
+ ProviderValidationAlerts,
} from '@proj-airi/stage-ui/components'
import { useProviderValidation } from '@proj-airi/stage-ui/composables/use-provider-validation'
import { useConsciousnessStore } from '@proj-airi/stage-ui/stores/modules/consciousness'
@@ -53,6 +53,11 @@ const {
validationMessage,
handleResetSettings,
forceValid,
+ hasManualValidators,
+ isManualTesting,
+ manualTestPassed,
+ manualTestMessage,
+ runManualTest,
} = useProviderValidation(providerId)
function goToModelSelection() {
@@ -88,39 +93,18 @@ function goToModelSelection() {
-
-
-