diff --git a/doc/administration/gitlab_duo_self_hosted/configure_duo_features.md b/doc/administration/gitlab_duo_self_hosted/configure_duo_features.md index eeb034b2052158a14c3496aaafa5675d14bd3a80..f5323f22514c317182c70cb7f05d37fbd7e5288e 100644 --- a/doc/administration/gitlab_duo_self_hosted/configure_duo_features.md +++ b/doc/administration/gitlab_duo_self_hosted/configure_duo_features.md @@ -54,8 +54,8 @@ Prerequisites: To configure a self-hosted model: 1. On the left sidebar, at the bottom, select **Admin**. -1. Select **Self-hosted models**. - - If the **Self-hosted models** menu item is not available, synchronize your +1. Select **GitLab Duo Self-Hosted**. + - If the **GitLab Duo Self-Hosted** menu item is not available, synchronize your subscription after purchase: 1. On the left sidebar, select **Subscription**. 1. In **Subscription details**, to the right of **Last sync**, select @@ -115,8 +115,8 @@ Prerequisites: ### View configured features 1. On the left sidebar, at the bottom, select **Admin**. -1. Select **Self-hosted models**. - - If the **Self-hosted models** menu item is not available, synchronize your +1. Select **GitLab Duo Self-Hosted**. + - If the **GitLab Duo Self-Hosted** menu item is not available, synchronize your subscription after purchase: 1. On the left sidebar, select **Subscription**. 1. In **Subscription details**, to the right of **Last sync**, select @@ -128,6 +128,6 @@ Prerequisites: Configure the GitLab Duo feature to send queries to the configured self-hosted model: 1. On the left sidebar, at the bottom, select **Admin**. -1. Select **Self-hosted models**. -1. Select the **AI-powered features** tab. +1. Select **GitLab Duo Self-Hosted**. +1. Select the **GitLab Duo Self-Hosted** tab. 1. For the feature you want to configure, from the dropdown list, choose the self-hosted model you want to use. For example, `Mistral`. diff --git a/ee/app/assets/javascripts/ai/settings/components/ai_gateway_url_input_form.vue b/ee/app/assets/javascripts/ai/settings/components/ai_gateway_url_input_form.vue index aa3778005be3ce44de99b91335d65b4854370839..107c186d51b1129ad0e827376ecfdfa8630bca96 100644 --- a/ee/app/assets/javascripts/ai/settings/components/ai_gateway_url_input_form.vue +++ b/ee/app/assets/javascripts/ai/settings/components/ai_gateway_url_input_form.vue @@ -14,7 +14,7 @@ export default { i18n: { label: s__('AiPowered|Local AI Gateway URL'), description: s__( - 'AiPowered|Enter the URL for your local AI Gateway. This endpoint is used for self-hosted models requests.%{br}The URL must be a complete URL, including either the "http://" or "https://" protocol. For example "http://EXAMPLE-URL".%{br}For more information, see how to %{linkStart}install the GitLab AI Gateway.%{linkEnd}', + 'AiPowered|Enter the URL for your local AI Gateway. This endpoint is used for GitLab Duo Self-Hosted requests.%{br}The URL must be a complete URL, including either the "http://" or "https://" protocol. For example "http://EXAMPLE-URL".%{br}For more information, see how to %{linkStart}install the GitLab AI Gateway.%{linkEnd}', ), }, aiGatewaySetupUrl: helpPagePath('install/install_ai_gateway'), diff --git a/ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/app.vue b/ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/app.vue index 238537334abdcea34bc1def691361f0a96e82a36..ad71ec35d720308002e4f13c8c4937138facddd6 100644 --- a/ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/app.vue +++ b/ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/app.vue @@ -17,7 +17,7 @@ export default { PageHeading, }, i18n: { - title: s__('AdminSelfHostedModels|Self-hosted models'), + title: s__('AdminSelfHostedModels|GitLab Duo Self-Hosted'), description: s__( 'AdminSelfHostedModels|Manage GitLab Duo by configuring and assigning self-hosted models to AI-powered features.', ), diff --git a/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/index.js b/ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/index.js similarity index 87% rename from ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/index.js rename to ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/index.js index 58a625aab96e7950aa42a64a25e8d6eadcc662f4..164a03571256bd66b4dc26eb60a4f51460fb41e2 100644 --- a/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/index.js +++ b/ee/app/assets/javascripts/pages/admin/ai/duo_self_hosted/index.js @@ -1,7 +1,7 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import createDefaultClient from '~/lib/graphql'; -import createRouter from '../duo_self_hosted/router'; +import createRouter from './router'; Vue.use(VueApollo); @@ -10,7 +10,7 @@ const apolloProvider = new VueApollo({ }); function mountSelfHostedModelsApp() { - const el = document.getElementById('js-self-hosted-models'); + const el = document.getElementById('js-duo-self-hosted'); if (!el) { return null; diff --git a/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/edit_self_hosted_model.vue b/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/edit_self_hosted_model.vue index 3435b9d4cc5beeb072f22f537eb37f98baf09e55..78ef363c42e2c50da2a8d7106f083dbb0e41c90a 100644 --- a/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/edit_self_hosted_model.vue +++ b/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/edit_self_hosted_model.vue @@ -21,7 +21,7 @@ export default { i18n: { title: s__('AdminSelfHostedModels|Edit self-hosted model'), description: s__( - 'AdminSelfHostedModels|Edit the AI model that can be used for GitLab Duo features.', + 'AdminSelfHostedModels|Edit the AI model that can be used for GitLab Duo self-hosted features.', ), errorMessage: s__( 'AdminSelfHostedModels|An error occurred while loading the self-hosted model. Please try again.', diff --git a/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/new_self_hosted_model.vue b/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/new_self_hosted_model.vue index 428a3f6a2334d9640beb5939cf3a042b922b59fa..470a3de584a86dd5aaeaae5d9c90351ff37d2c77 100644 --- a/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/new_self_hosted_model.vue +++ b/ee/app/assets/javascripts/pages/admin/ai/self_hosted_models/components/new_self_hosted_model.vue @@ -12,7 +12,7 @@ export default { i18n: { title: s__('AdminSelfHostedModels|Add self-hosted model'), description: s__( - 'AdminSelfHostedModels|Add a new AI model that can be used for GitLab Duo features.', + 'AdminSelfHostedModels|Add a new AI model that can be used for GitLab Duo self-hosted features.', ), }, mutationData: { diff --git a/ee/app/controllers/admin/ai/self_hosted_models_controller.rb b/ee/app/controllers/admin/ai/duo_self_hosted_controller.rb similarity index 84% rename from ee/app/controllers/admin/ai/self_hosted_models_controller.rb rename to ee/app/controllers/admin/ai/duo_self_hosted_controller.rb index 561aca0cb7e521a7cda40653e65a14b8ee245768..bb3995d6a182252ef89e82b24704e51b03d6bdc8 100644 --- a/ee/app/controllers/admin/ai/self_hosted_models_controller.rb +++ b/ee/app/controllers/admin/ai/duo_self_hosted_controller.rb @@ -2,7 +2,7 @@ module Admin module Ai - class SelfHostedModelsController < Admin::ApplicationController + class DuoSelfHostedController < Admin::ApplicationController feature_category :"self-hosted_models" urgency :low diff --git a/ee/app/helpers/admin/application_settings_helper.rb b/ee/app/helpers/admin/application_settings_helper.rb index 1f0ed75999bd7720cb1545a1f3bf916633a21121..48b698a4396b07b5d63879e7d5ff45a2e60663e3 100644 --- a/ee/app/helpers/admin/application_settings_helper.rb +++ b/ee/app/helpers/admin/application_settings_helper.rb @@ -89,7 +89,7 @@ def ai_settings_helper_data duo_pro_visible: code_suggestions_purchased.to_s, disabled_direct_connection_method: disabled_direct_code_suggestions.to_s, beta_self_hosted_models_enabled: beta_self_hosted_models_enabled.to_s, - toggle_beta_models_path: toggle_beta_models_admin_ai_self_hosted_models_path, + toggle_beta_models_path: admin_ai_duo_self_hosted_toggle_beta_models_path, can_manage_self_hosted_models: can_manage_self_hosted_models.to_s, ai_gateway_url: ai_gateway_url } diff --git a/ee/app/views/admin/ai/duo_self_hosted/index.html.haml b/ee/app/views/admin/ai/duo_self_hosted/index.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..79ada4f8ed1fd3a26827869dc280025a35996232 --- /dev/null +++ b/ee/app/views/admin/ai/duo_self_hosted/index.html.haml @@ -0,0 +1,2 @@ +- page_title s_("AdminSelfHostedModels|GitLab Duo Self-Hosted") +#js-duo-self-hosted{ data: { view_model: { basePath: admin_ai_duo_self_hosted_path, modelOptions: model_choices_as_options, betaModelsEnabled: beta_models_enabled?, duoConfigurationSettingsPath: admin_gitlab_duo_configuration_index_url }.to_json } } diff --git a/ee/app/views/admin/ai/self_hosted_models/index.html.haml b/ee/app/views/admin/ai/self_hosted_models/index.html.haml deleted file mode 100644 index 12e2d3cc21a8ac30105a7b683e541effefeb8105..0000000000000000000000000000000000000000 --- a/ee/app/views/admin/ai/self_hosted_models/index.html.haml +++ /dev/null @@ -1,2 +0,0 @@ -- page_title s_("AdminSelfHostedModels|Self-hosted models") -#js-self-hosted-models{ data: { view_model: { basePath: admin_ai_self_hosted_models_path, modelOptions: model_choices_as_options, betaModelsEnabled: beta_models_enabled?, duoConfigurationSettingsPath: admin_gitlab_duo_configuration_index_url }.to_json } } diff --git a/ee/config/routes/admin.rb b/ee/config/routes/admin.rb index 5c2abe5963df7a3323f225479ebdf7521af70b19..20bd1ac405a0c97e69e33cd58d633ac9aa013066 100644 --- a/ee/config/routes/admin.rb +++ b/ee/config/routes/admin.rb @@ -53,11 +53,8 @@ get '/code_suggestions', to: redirect('admin/gitlab_duo/seat_utilization') namespace :ai do - resources :self_hosted_models, only: [:index], path: 'self_hosted_models(/*vueroute)' do - collection do - post 'toggle_beta_models', to: 'terms_and_conditions#toggle_beta_models' - end - end + get 'duo_self_hosted(/*vueroute)', to: 'duo_self_hosted#index', as: :duo_self_hosted + post 'duo_self_hosted/toggle_beta_models', to: 'terms_and_conditions#toggle_beta_models' resources :amazon_q_settings, only: [:index, :create] do collection do diff --git a/ee/lib/sidebars/admin/menus/self_hosted_models_menu.rb b/ee/lib/sidebars/admin/menus/self_hosted_models_menu.rb index e4e29fb4147a194d2e83da65fb3df93c8e3fdc21..71adadcdc631774907e085891ac08e49b007b127 100644 --- a/ee/lib/sidebars/admin/menus/self_hosted_models_menu.rb +++ b/ee/lib/sidebars/admin/menus/self_hosted_models_menu.rb @@ -6,12 +6,12 @@ module Menus class SelfHostedModelsMenu < ::Sidebars::Admin::BaseMenu override :link def link - admin_ai_self_hosted_models_path + admin_ai_duo_self_hosted_path end override :title def title - s_('Admin|Self-hosted models') + s_('Admin|GitLab Duo Self-Hosted') end override :sprite_icon @@ -21,7 +21,7 @@ def sprite_icon override :active_routes def active_routes - { controller: :self_hosted_models } + { controller: :duo_self_hosted } end end end diff --git a/ee/spec/frontend/ai/settings/pages/ai_admin_settings_spec.js b/ee/spec/frontend/ai/settings/pages/ai_admin_settings_spec.js index d0f28eab237c4ab222302a7e6578b42518350fdd..15c565a7f58f5f5305328f65ddb79cecbdd19bbf 100644 --- a/ee/spec/frontend/ai/settings/pages/ai_admin_settings_spec.js +++ b/ee/spec/frontend/ai/settings/pages/ai_admin_settings_spec.js @@ -27,7 +27,7 @@ let wrapper; let axiosMock; const aiGatewayUrl = 'http://localhost:5052'; -const toggleBetaModelsPath = '/admin/ai/self_hosted_models/terms_and_condition'; +const toggleBetaModelsPath = '/admin/ai/duo_self_hosted/terms_and_condition'; const updateAiSettingsSuccessHandler = jest.fn().mockResolvedValue({ data: { duoSettings: { diff --git a/ee/spec/frontend/pages/admin/ai/duo_self_hosted/app_spec.js b/ee/spec/frontend/pages/admin/ai/duo_self_hosted/app_spec.js index 69ad652c80bcbc3ecaaaa15209b3f5e24e2782a1..c69ad263c04df181b0fcf7440933dec282db0f09 100644 --- a/ee/spec/frontend/pages/admin/ai/duo_self_hosted/app_spec.js +++ b/ee/spec/frontend/pages/admin/ai/duo_self_hosted/app_spec.js @@ -31,7 +31,7 @@ describe('DuoSelfHostedApp', () => { it('has a title', () => { const title = wrapper.findByTestId('self-hosted-title'); - expect(title.text()).toBe('Self-hosted models'); + expect(title.text()).toBe('GitLab Duo Self-Hosted'); }); it('has a description', () => { diff --git a/ee/spec/frontend/pages/admin/ai/self_hosted_models/edit_self_hosted_model_spec.js b/ee/spec/frontend/pages/admin/ai/self_hosted_models/edit_self_hosted_model_spec.js index b3b999ab7246f10c94ab2ab35480e09969d36e8a..f9891b53b74e652ed3c5f2212cbbac8262985e93 100644 --- a/ee/spec/frontend/pages/admin/ai/self_hosted_models/edit_self_hosted_model_spec.js +++ b/ee/spec/frontend/pages/admin/ai/self_hosted_models/edit_self_hosted_model_spec.js @@ -53,7 +53,9 @@ describe('EditSelfHostedModel', () => { it('has a description', () => { createComponent(); - expect(wrapper.text()).toMatch('Edit the AI model that can be used for GitLab Duo features.'); + expect(wrapper.text()).toMatch( + 'Edit the AI model that can be used for GitLab Duo self-hosted features.', + ); }); it('fetches self-hosted model data', () => { diff --git a/ee/spec/frontend/pages/admin/ai/self_hosted_models/new_self_hosted_model_spec.js b/ee/spec/frontend/pages/admin/ai/self_hosted_models/new_self_hosted_model_spec.js index 1cfade439319e133fbc5cbcd29dd21855e3987ef..a01aae776c1c4f0eb640c5b8e5af8708262b79b2 100644 --- a/ee/spec/frontend/pages/admin/ai/self_hosted_models/new_self_hosted_model_spec.js +++ b/ee/spec/frontend/pages/admin/ai/self_hosted_models/new_self_hosted_model_spec.js @@ -22,7 +22,9 @@ describe('NewSelfHostedModel', () => { }); it('has a description', () => { - expect(wrapper.text()).toMatch('Add a new AI model that can be used for GitLab Duo features.'); + expect(wrapper.text()).toMatch( + 'Add a new AI model that can be used for GitLab Duo self-hosted features.', + ); }); it('renders the self-hosted model form and passes the correct props', () => { diff --git a/ee/spec/frontend/pages/admin/ai/self_hosted_models/self_hosted_model_form_spec.js b/ee/spec/frontend/pages/admin/ai/self_hosted_models/self_hosted_model_form_spec.js index c7d1728501922cb1fd55f6ed20f804a006aae077..33e398378a58c2e0d8438cf51fbd5df3b016deeb 100644 --- a/ee/spec/frontend/pages/admin/ai/self_hosted_models/self_hosted_model_form_spec.js +++ b/ee/spec/frontend/pages/admin/ai/self_hosted_models/self_hosted_model_form_spec.js @@ -30,7 +30,7 @@ jest.mock('~/lib/utils/url_utility'); describe('SelfHostedModelForm', () => { let wrapper; - const basePath = '/admin/ai/self_hosted_models'; + const basePath = '/admin/ai/duo_self_hosted'; const duoConfigurationSettingsPath = '/admin/gitlab_duo/configuration'; const createMutationSuccessHandler = jest.fn().mockResolvedValue({ data: { diff --git a/ee/spec/helpers/admin/application_settings_helper_spec.rb b/ee/spec/helpers/admin/application_settings_helper_spec.rb index 86732f7b9a49c505afc3b3c162213448e7f867b6..0b01f63343cd00ac9b1343b75d30c4afab43edc2 100644 --- a/ee/spec/helpers/admin/application_settings_helper_spec.rb +++ b/ee/spec/helpers/admin/application_settings_helper_spec.rb @@ -88,7 +88,7 @@ enabled_expanded_logging: enabled_expanded_logging.to_s, disabled_direct_connection_method: disabled_direct_code_suggestions.to_s, beta_self_hosted_models_enabled: terms_accepted.to_s, - toggle_beta_models_path: toggle_beta_models_admin_ai_self_hosted_models_path, + toggle_beta_models_path: admin_ai_duo_self_hosted_toggle_beta_models_path, duo_pro_visible: expected_duo_pro_visible_value, can_manage_self_hosted_models: can_manage_self_hosted_models.to_s, ai_gateway_url: ai_gateway_url diff --git a/ee/spec/lib/sidebars/admin/menus/self_hosted_models_menu_spec.rb b/ee/spec/lib/sidebars/admin/menus/self_hosted_models_menu_spec.rb index 8aa20fc645578a43b2ab346fe4ce58d987a7ecdf..cce88630d49bcf2df799349362a6be47fe97808b 100644 --- a/ee/spec/lib/sidebars/admin/menus/self_hosted_models_menu_spec.rb +++ b/ee/spec/lib/sidebars/admin/menus/self_hosted_models_menu_spec.rb @@ -4,9 +4,9 @@ RSpec.describe Sidebars::Admin::Menus::SelfHostedModelsMenu, feature_category: :navigation do it_behaves_like 'Admin menu', - link: '/admin/ai/self_hosted_models', - title: s_('Admin|Self-hosted models'), + link: '/admin/ai/duo_self_hosted', + title: s_('Admin|GitLab Duo Self-Hosted'), icon: 'machine-learning' - it_behaves_like 'Admin menu without sub menus', active_routes: { controller: :self_hosted_models } + it_behaves_like 'Admin menu without sub menus', active_routes: { controller: :duo_self_hosted } end diff --git a/ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb b/ee/spec/requests/admin/ai/duo_self_hosted_controller_spec.rb similarity index 84% rename from ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb rename to ee/spec/requests/admin/ai/duo_self_hosted_controller_spec.rb index 0f8ba94ee8ee2dcdcf8c67289eb81e9a1b5532d6..054245d073d660455b1c0c76c2dfe5feaceb0e7e 100644 --- a/ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb +++ b/ee/spec/requests/admin/ai/duo_self_hosted_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Admin::Ai::SelfHostedModelsController, :enable_admin_mode, feature_category: :"self-hosted_models" do +RSpec.describe Admin::Ai::DuoSelfHostedController, :enable_admin_mode, feature_category: :"self-hosted_models" do let(:admin) { create(:admin) } let(:duo_features_enabled) { true } let_it_be(:license) { create(:license, plan: License::ULTIMATE_PLAN) } @@ -32,10 +32,10 @@ let(:page) { Nokogiri::HTML(response.body) } subject :perform_request do - get admin_ai_self_hosted_models_path + get admin_ai_duo_self_hosted_path end - it 'returns list of self-hosted models' do + it 'returns 200' do perform_request expect(response).to have_gitlab_http_status(:ok) diff --git a/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb b/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb index a67277d3b6380749ff77523e3150fcc0eeb043e5..a2b88dc9d07ea1539742d98bf80266375089e893 100644 --- a/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb +++ b/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb @@ -30,7 +30,7 @@ describe 'POST #toggle_beta_models' do subject :perform_request do - post toggle_beta_models_admin_ai_self_hosted_models_path + post admin_ai_duo_self_hosted_toggle_beta_models_path end context 'if a testing terms acceptance record exists' do diff --git a/ee/spec/routing/admin_routing_spec.rb b/ee/spec/routing/admin_routing_spec.rb index 45cc3a0f6b2b58c9ef82edfb2a6857890573f54c..a12e3b529817ea0272172522299ca175ac3990ca 100644 --- a/ee/spec/routing/admin_routing_spec.rb +++ b/ee/spec/routing/admin_routing_spec.rb @@ -40,6 +40,22 @@ end end + describe Admin::Ai::DuoSelfHostedController, 'routing' do + it 'routes /duo_self_hosted to #index' do + expect(get('/admin/ai/duo_self_hosted/')).to route_to('admin/ai/duo_self_hosted#index') + end + + it 'routes /duo_self_hosted with vue route params to #index' do + expect(get('/admin/ai/duo_self_hosted/features')).to route_to('admin/ai/duo_self_hosted#index', + vueroute: 'features') + end + + it 'routes /duo_self_hosted/toggle_beta_models to terms_and_conditions#toggle_beta_models' do + expect(post('/admin/ai/duo_self_hosted/toggle_beta_models')) + .to route_to('admin/ai/terms_and_conditions#toggle_beta_models') + end + end + describe Admin::Geo::SettingsController, 'routing' do it 'routes / to #show' do expect(get('/admin/geo/settings')).to route_to('admin/geo/settings#show') diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 05d278e27f566a473068e6d00f84effe36554a90..f05e57e8bcabfe6244bbb89102d427367378ba75 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -4064,7 +4064,7 @@ msgstr "" msgid "AdminSelfHostedModels|API token" msgstr "" -msgid "AdminSelfHostedModels|Add a new AI model that can be used for GitLab Duo features." +msgid "AdminSelfHostedModels|Add a new AI model that can be used for GitLab Duo self-hosted features." msgstr "" msgid "AdminSelfHostedModels|Add self-hosted model" @@ -4097,12 +4097,15 @@ msgstr "" msgid "AdminSelfHostedModels|Edit self-hosted model" msgstr "" -msgid "AdminSelfHostedModels|Edit the AI model that can be used for GitLab Duo features." +msgid "AdminSelfHostedModels|Edit the AI model that can be used for GitLab Duo self-hosted features." msgstr "" msgid "AdminSelfHostedModels|Endpoint" msgstr "" +msgid "AdminSelfHostedModels|GitLab Duo Self-Hosted" +msgstr "" + msgid "AdminSelfHostedModels|If required, provide the API token that grants access to your self-hosted model deployment." msgstr "" @@ -5183,6 +5186,9 @@ msgstr "" msgid "Admin|Geo" msgstr "" +msgid "Admin|GitLab Duo Self-Hosted" +msgstr "" + msgid "Admin|Kubernetes" msgstr "" @@ -5210,9 +5216,6 @@ msgstr "" msgid "Admin|Quarterly reconciliation will occur on %{qrtlyDate}" msgstr "" -msgid "Admin|Self-hosted models" -msgstr "" - msgid "Admin|Settings" msgstr "" @@ -5426,7 +5429,7 @@ msgstr "" msgid "AiPowered|Enroll in the Early Access Program" msgstr "" -msgid "AiPowered|Enter the URL for your local AI Gateway. This endpoint is used for self-hosted models requests.%{br}The URL must be a complete URL, including either the \"http://\" or \"https://\" protocol. For example \"http://EXAMPLE-URL\".%{br}For more information, see how to %{linkStart}install the GitLab AI Gateway.%{linkEnd}" +msgid "AiPowered|Enter the URL for your local AI Gateway. This endpoint is used for GitLab Duo Self-Hosted requests.%{br}The URL must be a complete URL, including either the \"http://\" or \"https://\" protocol. For example \"http://EXAMPLE-URL\".%{br}For more information, see how to %{linkStart}install the GitLab AI Gateway.%{linkEnd}" msgstr "" msgid "AiPowered|Experiment and beta features"