Skip to content

Commit 427fe47

Browse files
committed
Displays a message in AI provider picker when org configuration is enforced
(#4300, #4338)
1 parent 1fc8f13 commit 427fe47

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/plus/ai/aiProviderService.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,14 @@ export class AIProviderService implements Disposable {
398398
return new Map<AIProviders, AIProviderDescriptorWithConfiguration>(getSettledValues(promises));
399399
}
400400

401+
hasProvidersDisabledByOrg(): boolean {
402+
const orgAiConfig = getOrgAIConfig();
403+
return (
404+
orgAiConfig.enforceAiProviders &&
405+
[...supportedAIProviders.keys()].some(providerId => !isProviderEnabledByOrg(providerId, orgAiConfig))
406+
);
407+
}
408+
401409
private async ensureProviderConfigured(provider: AIProviderDescriptorWithType, silent: boolean): Promise<boolean> {
402410
if (provider.id === this._provider?.id) return this._provider.configured(silent);
403411

src/quickpicks/aiModelPicker.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ export async function showAIProviderPicker(
4646
const subscription = getSettledValue(subscriptionResult)!;
4747
const hasPaidPlan = isSubscriptionPaidPlan(subscription.plan.effective.id) && subscription.account?.verified;
4848

49+
const hasProvidersDisabledByOrg = container.ai.hasProvidersDisabledByOrg();
50+
4951
const quickpick = window.createQuickPick<ProviderQuickPickItem>();
5052
quickpick.ignoreFocusOut = getQuickPickIgnoreFocusOut();
5153
quickpick.title = 'Select AI Provider';
@@ -62,8 +64,17 @@ export async function showAIProviderPicker(
6264
: undefined;
6365

6466
let addedRequiredKeySeparator = false;
67+
6568
while (true) {
6669
const items: ProviderQuickPickItem[] = [];
70+
if (hasProvidersDisabledByOrg) {
71+
items.push({
72+
label: '',
73+
description: '$(lock) Some Al providers have been disabled by your GitKraken Admin',
74+
iconPath: new ThemeIcon('blank'),
75+
provider: undefined!,
76+
});
77+
}
6778
for (const p of providers.values()) {
6879
if (!p.primary && !addedRequiredKeySeparator) {
6980
addedRequiredKeySeparator = true;
@@ -96,7 +107,11 @@ export async function showAIProviderPicker(
96107
quickpick.onDidHide(() => resolve(undefined)),
97108
quickpick.onDidAccept(() => {
98109
if (quickpick.activeItems.length !== 0) {
99-
resolve(quickpick.activeItems[0]);
110+
const selectedItem = quickpick.activeItems[0];
111+
// Don't allow selection of the disabled providers message
112+
if (selectedItem.provider !== undefined) {
113+
resolve(selectedItem);
114+
}
100115
}
101116
}),
102117
quickpick.onDidTriggerItemButton(e => {

0 commit comments

Comments
 (0)