feat: add wizard auth selector
This commit is contained in:
+97
-8
@@ -558,14 +558,44 @@ var TRANSLATIONS = {
|
||||
'wizard.step2.change': 'Change',
|
||||
'wizard.step2.auth_none': 'No auth',
|
||||
'wizard.step2.auth_bearer': 'Bearer token',
|
||||
'wizard.step2.auth_basic': 'Basic auth',
|
||||
'wizard.step2.auth_apikey': 'API key',
|
||||
'wizard.step2.register_new': 'Register new upstream',
|
||||
'wizard.step2.name': 'Name',
|
||||
'wizard.step2.base_url': 'Base URL',
|
||||
'wizard.step2.unique_hint': 'Unique identifier for this upstream.',
|
||||
'wizard.step2.base_url_hint': 'Root URL — no trailing slash. Supports ${secrets.*}.',
|
||||
'wizard.step2.auth_headers': 'Auth headers',
|
||||
'wizard.step2.auth_headers_hint': 'These headers are sent on every request to this upstream. Use secrets for credentials.',
|
||||
'wizard.step2.base_url_hint': 'Root URL without a trailing slash. Auth is configured separately below.',
|
||||
'wizard.step2.auth_selector': 'Upstream auth',
|
||||
'wizard.step2.auth_selector_hint': 'Use secrets-backed auth profiles instead of embedding credential headers in the upstream definition.',
|
||||
'wizard.step2.auth_mode.none': 'No auth',
|
||||
'wizard.step2.auth_mode.existing': 'Use existing auth profile',
|
||||
'wizard.step2.auth_mode.create': 'Create auth profile now',
|
||||
'wizard.step2.auth_profile': 'Auth profile',
|
||||
'wizard.step2.auth_profile_hint': 'Selected profile will be resolved at runtime and attached through `execution_config.auth_profile_ref`.',
|
||||
'wizard.step2.auth_profile_empty': 'No auth profiles yet. Create one below or on the Secrets page.',
|
||||
'wizard.step2.create_profile_title': 'Create auth profile',
|
||||
'wizard.step2.create_profile_subtitle': 'Create a reusable profile backed by encrypted workspace secrets.',
|
||||
'wizard.step2.profile_name': 'Profile name',
|
||||
'wizard.step2.profile_kind': 'Auth kind',
|
||||
'wizard.step2.auth_kind.bearer': 'Bearer token',
|
||||
'wizard.step2.auth_kind.basic': 'Basic auth',
|
||||
'wizard.step2.auth_kind.api_key_header': 'API key header',
|
||||
'wizard.step2.auth_kind.api_key_query': 'API key query',
|
||||
'wizard.step2.header_name': 'Header name',
|
||||
'wizard.step2.query_param': 'Query param',
|
||||
'wizard.step2.username_secret': 'Username secret',
|
||||
'wizard.step2.password_secret': 'Password secret',
|
||||
'wizard.step2.secret_value': 'Secret',
|
||||
'wizard.step2.quick_secret': 'Quick create secret',
|
||||
'wizard.step2.manage_secrets': 'Open secrets page',
|
||||
'wizard.step2.static_headers': 'Static headers (optional)',
|
||||
'wizard.step2.static_headers_hint': 'Optional non-secret headers sent on every request to this upstream. Use auth profiles for credentials.',
|
||||
'wizard.step2.quick_secret_title': 'Quick create secret',
|
||||
'wizard.step2.quick_secret_name': 'Secret name',
|
||||
'wizard.step2.quick_secret_kind': 'Secret kind',
|
||||
'wizard.step2.quick_secret_value': 'Secret value',
|
||||
'wizard.step2.quick_secret_hint': 'The plaintext is encrypted immediately and will not be returned again.',
|
||||
'wizard.step2.quick_secret_submit': 'Create secret',
|
||||
'wizard.step2.save_upstream': 'Save upstream',
|
||||
'wizard.step2.endpoint_title': 'Endpoint',
|
||||
'wizard.step2.endpoint_subtitle': 'Path and HTTP method for this specific operation',
|
||||
@@ -657,7 +687,7 @@ var TRANSLATIONS = {
|
||||
'wizard.step4.protocol_agnostic_title': 'Schemas are protocol-agnostic',
|
||||
'wizard.step4.protocol_agnostic_body': 'These schemas describe the MCP contract, not the upstream wire format. Field mapping in Step 5 translates between the two. You can upload a sample JSON response to auto-generate the output schema.',
|
||||
'wizard.step5.title': 'Mapping and execution',
|
||||
'wizard.step5.subtitle': 'Define how MCP tool arguments map to upstream request fields, and how the upstream response maps back to MCP output. Then set execution parameters — auth is configured per-upstream in step 3.',
|
||||
'wizard.step5.subtitle': 'Define how MCP tool arguments map to upstream request fields, and how the upstream response maps back to MCP output. Then set execution parameters — auth is configured per-upstream in step 2.',
|
||||
'wizard.step5.input_request': 'Input → Request',
|
||||
'wizard.step5.output_response': 'Response → Output',
|
||||
'wizard.step5.execution': 'Execution',
|
||||
@@ -706,6 +736,21 @@ var TRANSLATIONS = {
|
||||
'wizard.error.tool_name': 'Tool name is required',
|
||||
'wizard.error.parser_unavailable': 'YAML parser is not available',
|
||||
'wizard.error.select_upstream': 'Select or register an upstream first',
|
||||
'wizard.error.auth_profile_required': 'Select an auth profile or switch upstream auth to No auth.',
|
||||
'wizard.error.auth_profile_name': 'Auth profile name is required.',
|
||||
'wizard.error.secret_required': 'Select the secret required by this auth profile.',
|
||||
'wizard.error.basic_secrets_required': 'Select both username and password secrets.',
|
||||
'wizard.error.header_name_required': 'Header name is required for this auth profile.',
|
||||
'wizard.error.query_param_required': 'Query parameter name is required for this auth profile.',
|
||||
'wizard.error.secret_name_required': 'Secret name is required.',
|
||||
'wizard.error.secret_value_required': 'Secret value is required.',
|
||||
'wizard.error.save_upstream_first': 'Save the upstream after creating a new auth profile before continuing.',
|
||||
'wizard.toast.auth_profile_created_title': 'Auth profile created',
|
||||
'wizard.toast.auth_profile_created_body': 'New upstream auth profile is ready and selected.',
|
||||
'wizard.toast.auth_profile_error_title': 'Auth profile creation failed',
|
||||
'wizard.toast.quick_secret_created_title': 'Secret created',
|
||||
'wizard.toast.quick_secret_created_body': 'The new secret is now available in the auth selector.',
|
||||
'wizard.toast.quick_secret_error_title': 'Secret creation failed',
|
||||
'wizard.error.save': 'Failed to save operation',
|
||||
'wizard.error.save_title': 'Save failed',
|
||||
'wizard.save.created': 'Draft created',
|
||||
@@ -1443,9 +1488,38 @@ var TRANSLATIONS = {
|
||||
'wizard.step2.name': 'Имя',
|
||||
'wizard.step2.base_url': 'Base URL',
|
||||
'wizard.step2.unique_hint': 'Уникальный идентификатор этого upstream-а.',
|
||||
'wizard.step2.base_url_hint': 'Корневой URL без завершающего слеша. Поддерживает ${secrets.*}.',
|
||||
'wizard.step2.auth_headers': 'Auth headers',
|
||||
'wizard.step2.auth_headers_hint': 'Эти заголовки отправляются с каждым запросом в этот upstream. Используйте secrets для учетных данных.',
|
||||
'wizard.step2.base_url_hint': 'Корневой URL без завершающего слеша. Auth настраивается отдельно ниже.',
|
||||
'wizard.step2.auth_selector': 'Upstream auth',
|
||||
'wizard.step2.auth_selector_hint': 'Используйте secrets-backed auth profiles вместо встраивания credential headers в определение upstream-а.',
|
||||
'wizard.step2.auth_mode.none': 'Без авторизации',
|
||||
'wizard.step2.auth_mode.existing': 'Использовать существующий auth profile',
|
||||
'wizard.step2.auth_mode.create': 'Создать auth profile сейчас',
|
||||
'wizard.step2.auth_profile': 'Auth profile',
|
||||
'wizard.step2.auth_profile_hint': 'Выбранный профиль будет резолвиться в runtime и подключаться через `execution_config.auth_profile_ref`.',
|
||||
'wizard.step2.auth_profile_empty': 'Auth profiles пока нет. Создайте его ниже или на странице Secrets.',
|
||||
'wizard.step2.create_profile_title': 'Создать auth profile',
|
||||
'wizard.step2.create_profile_subtitle': 'Создайте переиспользуемый профиль на базе зашифрованных workspace secrets.',
|
||||
'wizard.step2.profile_name': 'Имя профиля',
|
||||
'wizard.step2.profile_kind': 'Тип auth',
|
||||
'wizard.step2.auth_kind.bearer': 'Bearer token',
|
||||
'wizard.step2.auth_kind.basic': 'Basic auth',
|
||||
'wizard.step2.auth_kind.api_key_header': 'API key header',
|
||||
'wizard.step2.auth_kind.api_key_query': 'API key query',
|
||||
'wizard.step2.header_name': 'Имя заголовка',
|
||||
'wizard.step2.query_param': 'Query param',
|
||||
'wizard.step2.username_secret': 'Секрет логина',
|
||||
'wizard.step2.password_secret': 'Секрет пароля',
|
||||
'wizard.step2.secret_value': 'Секрет',
|
||||
'wizard.step2.quick_secret': 'Быстро создать секрет',
|
||||
'wizard.step2.manage_secrets': 'Открыть страницу Secrets',
|
||||
'wizard.step2.static_headers': 'Статические заголовки (опционально)',
|
||||
'wizard.step2.static_headers_hint': 'Необязательные не-секретные заголовки для каждого запроса к этому upstream-у. Для credential flows используйте auth profiles.',
|
||||
'wizard.step2.quick_secret_title': 'Быстро создать секрет',
|
||||
'wizard.step2.quick_secret_name': 'Имя секрета',
|
||||
'wizard.step2.quick_secret_kind': 'Тип секрета',
|
||||
'wizard.step2.quick_secret_value': 'Значение секрета',
|
||||
'wizard.step2.quick_secret_hint': 'Plaintext сразу шифруется и больше не возвращается.',
|
||||
'wizard.step2.quick_secret_submit': 'Создать секрет',
|
||||
'wizard.step2.save_upstream': 'Сохранить upstream',
|
||||
'wizard.step2.endpoint_title': 'Endpoint',
|
||||
'wizard.step2.endpoint_subtitle': 'Путь и HTTP-метод для конкретной операции',
|
||||
@@ -1537,7 +1611,7 @@ var TRANSLATIONS = {
|
||||
'wizard.step4.protocol_agnostic_title': 'Схемы не зависят от протокола',
|
||||
'wizard.step4.protocol_agnostic_body': 'Эти схемы описывают MCP-контракт, а не wire-format upstream-а. Маппинг на шаге 5 переводит одно в другое. Можно загрузить sample JSON-ответа, чтобы автоматически сгенерировать output schema.',
|
||||
'wizard.step5.title': 'Mapping и исполнение',
|
||||
'wizard.step5.subtitle': 'Определите, как аргументы MCP-инструмента мапятся в поля upstream-запроса и как ответ upstream-а мапится обратно в MCP output. Затем задайте execution-параметры — auth настраивается на уровне upstream на шаге 3.',
|
||||
'wizard.step5.subtitle': 'Определите, как аргументы MCP-инструмента мапятся в поля upstream-запроса и как ответ upstream-а мапится обратно в MCP output. Затем задайте execution-параметры — auth настраивается на уровне upstream на шаге 2.',
|
||||
'wizard.step5.input_request': 'Input → Request',
|
||||
'wizard.step5.output_response': 'Response → Output',
|
||||
'wizard.step5.execution': 'Исполнение',
|
||||
@@ -1586,6 +1660,21 @@ var TRANSLATIONS = {
|
||||
'wizard.error.tool_name': 'Имя инструмента обязательно',
|
||||
'wizard.error.parser_unavailable': 'YAML parser недоступен',
|
||||
'wizard.error.select_upstream': 'Сначала выберите или зарегистрируйте upstream',
|
||||
'wizard.error.auth_profile_required': 'Выберите auth profile или переключите upstream auth в режим «Без авторизации».',
|
||||
'wizard.error.auth_profile_name': 'Нужно указать имя auth profile.',
|
||||
'wizard.error.secret_required': 'Выберите секрет, необходимый для этого auth profile.',
|
||||
'wizard.error.basic_secrets_required': 'Выберите секреты и для логина, и для пароля.',
|
||||
'wizard.error.header_name_required': 'Для этого auth profile нужно указать имя заголовка.',
|
||||
'wizard.error.query_param_required': 'Для этого auth profile нужно указать имя query-параметра.',
|
||||
'wizard.error.secret_name_required': 'Нужно указать имя секрета.',
|
||||
'wizard.error.secret_value_required': 'Нужно указать значение секрета.',
|
||||
'wizard.error.save_upstream_first': 'Сначала сохраните upstream после создания нового auth profile.',
|
||||
'wizard.toast.auth_profile_created_title': 'Auth profile создан',
|
||||
'wizard.toast.auth_profile_created_body': 'Новый upstream auth profile готов и уже выбран.',
|
||||
'wizard.toast.auth_profile_error_title': 'Не удалось создать auth profile',
|
||||
'wizard.toast.quick_secret_created_title': 'Секрет создан',
|
||||
'wizard.toast.quick_secret_created_body': 'Новый секрет уже доступен в auth selector.',
|
||||
'wizard.toast.quick_secret_error_title': 'Не удалось создать секрет',
|
||||
'wizard.error.save': 'Не удалось сохранить операцию',
|
||||
'wizard.error.save_title': 'Не удалось сохранить',
|
||||
'wizard.save.created': 'Черновик создан',
|
||||
|
||||
Reference in New Issue
Block a user