diff --git a/.gitignore b/.gitignore index 188d39de8..30b9dfe79 100644 --- a/.gitignore +++ b/.gitignore @@ -124,3 +124,4 @@ plugins-development apps/stage-pocket/ios/buildServer.json .ghfs/ .docs/superpowers +apps/stage-tamagotchi/electron.vite.config.*.mjs diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml index 6a9258aaa..fa975984d 100644 --- a/packages/i18n/src/locales/en/settings.yaml +++ b/packages/i18n/src/locales/en/settings.yaml @@ -19,13 +19,31 @@ dialogs: baseUrl: Base URL baseUrlHelp: API endpoint URL (use default if unsure) accountId: Account ID + validationRunning: Running tests validationSuccess: Configuration validation success + validationPartial: Configuration partially validated validationFailed: Configuration validation failed validationError: 'Validation error: {error}' + testGeneration: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping test failed + retryPingCheck: Retry skipForNow: Skip for now saveAndContinue: Save and Continue next: Next retry: Retry + credentialsSafeLabel: Keep your API keys and credentials safe! + credentialsSafeLocal: >- + AIRI is running pure locally in your PC, and we will never steal + your credentials for AI / LLM providers. But keep in mind that your API + keys are sensitive information. Make sure to keep them safe and do not + share them with anyone. + credentialsSafeOpenSource: >- + AIRI is open sourced at {github}, if you want to check how we handle + your credentials, feel free to inspect our code. + enableChatCheck: >- + Allow airi to send a "ping" message to the first available chat model to + check availability start: Let's do it! loginPrompt: Sign in to use the official AIRI provider for the best experience. loginAction: Sign in diff --git a/packages/i18n/src/locales/es/settings.yaml b/packages/i18n/src/locales/es/settings.yaml index a8cd6f789..0542e4f25 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: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping falló 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 cbea3226c..3ed71e47a 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: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping é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 f7bc82ea0..bd013c471 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: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping テストに失敗 skipForNow: 今はスキップ saveAndContinue: 保存して続行 next: 次へ diff --git a/packages/i18n/src/locales/ko/settings.yaml b/packages/i18n/src/locales/ko/settings.yaml index fd13d7759..7217ee671 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: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping 테스트 실패 skipForNow: 지금은 건너뛰기 saveAndContinue: 저장 및 계속 next: 다음 diff --git a/packages/i18n/src/locales/ru/settings.yaml b/packages/i18n/src/locales/ru/settings.yaml index a18cd92a6..7c2c99103 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: Успешная проверка конфигурации + validationPartial: Конфигурация частично проверена validationFailed: Проверка конфигурации не удалась validationError: 'Ошибка проверки: {error}' + testGeneration: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping не удался skipForNow: Пропустить на сейчас saveAndContinue: Сохранить и продолжить next: Далее diff --git a/packages/i18n/src/locales/vi/settings.yaml b/packages/i18n/src/locales/vi/settings.yaml index 136f4dbc9..3362dcfbf 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: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping 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 2add444f7..286e88350 100644 --- a/packages/i18n/src/locales/zh-Hans/settings.yaml +++ b/packages/i18n/src/locales/zh-Hans/settings.yaml @@ -18,13 +18,26 @@ dialogs: baseUrl: 基础 URL baseUrlHelp: API 端点 URL(如果不确定请使用默认值) accountId: 账户 ID + validationRunning: 正在验证配置 validationSuccess: 配置验证成功 + validationPartial: 配置部分验证通过 validationFailed: 配置验证失败 validationError: '验证错误:{error}' + testGeneration: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping 测试失败 + retryPingCheck: 再试一次 skipForNow: 暂时跳过 saveAndContinue: 保存并继续 next: 下一步 retry: 重试 + credentialsSafeLabel: 请妥善保管你的 API 密钥和凭据! + credentialsSafeLocal: >- + AIRI 完全在你的计算机中本地运行,我们绝不会窃取你的 AI / LLM + 服务商凭据。但请注意,你的 API 密钥是敏感信息,请妥善保管,不要与任何人分享。 + credentialsSafeOpenSource: >- + AIRI 已在 {github} 开源,如果你想了解我们如何处理你的凭据,欢迎查阅我们的代码。 + enableChatCheck: 允许 airi 向第一个可用的聊天模型发送 "ping" 消息来检查可用性 start: 开始吧! loginPrompt: Sign in to use the official AIRI provider for the best experience. loginAction: Sign in diff --git a/packages/i18n/src/locales/zh-Hant/settings.yaml b/packages/i18n/src/locales/zh-Hant/settings.yaml index 4b347ade3..3de11ac64 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: Ping API + testGenerationRunning: Ping... + testGenerationFailed: Ping 測試失敗 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 948592b14..bd94ef687 100644 --- a/packages/stage-pages/src/pages/settings/providers/chat/[providerId].vue +++ b/packages/stage-pages/src/pages/settings/providers/chat/[providerId].vue @@ -109,7 +109,6 @@ function goToModelSelection() { /> - - - - { /> - ('unchecked') const validationError = ref() @@ -39,9 +41,10 @@ function initializeForm() { apiKey.value = '' accountId.value = '' - // Reset validation + // Reset validation and chat check validation.value = 'unchecked' validationError.value = undefined + enableChatCheck.value = true } // Watch for provider changes @@ -67,6 +70,10 @@ const needsBaseUrl = computed(() => { return props.selectedProvider.id !== 'cloudflare-workers-ai' }) +const showChatCheckOption = computed(() => { + return props.selectedProvider?.validators.chatPingCheckAvailable +}) + const canProceed = computed(() => { if (!props.selectedProviderId) return false @@ -103,7 +110,9 @@ async function validateConfiguration() { // Validate using provider's validator const metadata = providersStore.getProviderMetadata(props.selectedProvider.id) - const validationResult = await metadata.validators.validateProviderConfig(config) + const validationResult = await metadata.validators.validateProviderConfig(config, { + skipChatPingCheck: !enableChatCheck.value, + }) validation.value = validationResult.valid ? 'succeed' : 'failed' if (validation.value === 'failed') { validationError.value = validationResult.reason @@ -112,11 +121,10 @@ async function validateConfiguration() { catch (error) { validation.value = 'failed' validationError.value = t('settings.dialogs.onboarding.validationError', { - error: error instanceof Error ? error.message : String(error), + error: errorMessageFrom(error) ?? 'Unknown error', }) } } - async function handleNext() { await validateConfiguration() if (validation.value === 'succeed') { @@ -184,15 +192,19 @@ initializeForm()
- +
- AIRI is running pure locally in your browser, and we will never steal your credentials for AI / LLM providers. But keep in mind that your API keys are sensitive information. Make sure to keep them safe and do not share them with anyone. + {{ t('settings.dialogs.onboarding.credentialsSafeLocal') }}
- AIRI is open sourced at
- , if you want to check how we handle your credentials, feel free to inspect our code. + + +
@@ -226,6 +238,14 @@ initializeForm()
+ + +