Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions contributions.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
},
"gitlens.ai.explainCommit": {
"label": "Explain Commit...",
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"menus": {
"view/item/context": [
{
"when": "viewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "3_gitlens_ai",
"order": 1
}
Expand All @@ -38,11 +38,11 @@
},
"gitlens.ai.explainStash": {
"label": "Explain Stash (Preview)...",
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"menus": {
"view/item/context": [
{
"when": "viewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "3_gitlens_ai",
"order": 1
}
Expand All @@ -51,11 +51,11 @@
},
"gitlens.ai.generateChangelog": {
"label": "Generate Changelog (Preview)...",
"commandPalette": "gitlens:enabled && !gitlens:untrusted && gitlens:gk:organization:ai:enabled"
"commandPalette": "gitlens:enabled && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
"gitlens.ai.generateCommitMessage": {
"label": "Generate Commit Message",
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled"
"commandPalette": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
"gitlens.annotations.nextChange": {
"label": "Next Change",
Expand Down Expand Up @@ -1367,7 +1367,7 @@
"menus": {
"webview/context": [
{
"when": "webviewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "webviewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3",
"order": 100
}
Expand All @@ -1379,7 +1379,7 @@
"menus": {
"webview/context": [
{
"when": "webviewItem == gitlens:wip && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled",
"when": "webviewItem == gitlens:wip && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens",
"order": 2
}
Expand Down Expand Up @@ -1993,7 +1993,7 @@
"menus": {
"webview/context": [
{
"when": "webviewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "webviewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3",
"order": 1
}
Expand All @@ -2005,7 +2005,7 @@
"menus": {
"webview/context": [
{
"when": "webviewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "webviewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3",
"order": 1
}
Expand Down Expand Up @@ -3459,7 +3459,7 @@
},
"gitlens.resetAIKey": {
"label": "Reset Stored AI Keys...",
"commandPalette": "gitlens:enabled && gitlens:gk:organization:ai:enabled"
"commandPalette": "gitlens:enabled && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
"gitlens.resetViewsLayout": {
"label": "Reset Views Layout",
Expand Down Expand Up @@ -3491,19 +3491,19 @@
"menus": {
"git.commit": [
{
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"group": "4_gitlens",
"order": 2
}
],
"scm/title": [
{
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled && config.gitlens.menus.scmRepositoryInline.generateCommitMessage",
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled && config.gitlens.menus.scmRepositoryInline.generateCommitMessage",
"group": "navigation",
"order": -3
},
{
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"group": "2_gitlens",
"order": 2
}
Expand Down Expand Up @@ -4463,7 +4463,7 @@
},
"gitlens.switchAIModel": {
"label": "Switch AI Provider/Model",
"commandPalette": "gitlens:enabled && gitlens:gk:organization:ai:enabled"
"commandPalette": "gitlens:enabled && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
"gitlens.switchMode": {
"label": "Switch Mode",
Expand Down Expand Up @@ -4777,12 +4777,12 @@
"menus": {
"view/item/context": [
{
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "inline",
"order": 98
},
{
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !listMultiSelection && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !listMultiSelection && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "4_gitlens_actions",
"order": 2
}
Expand All @@ -4795,7 +4795,7 @@
"menus": {
"view/item/context": [
{
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3",
"order": 100
}
Expand Down
42 changes: 21 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4194,12 +4194,12 @@
"preview"
]
},
"gitlens.ai.generateCommitMessage.enabled": {
"gitlens.ai.enabled": {
"type": "boolean",
"default": true,
"markdownDescription": "Specifies whether to enable GitLens' AI-powered, on-demand commit message generation",
"markdownDescription": "Specifies whether to enable GitLens' AI-powered features",
"scope": "window",
"order": 210,
"order": 2,
"tags": [
"preview"
]
Expand Down Expand Up @@ -10402,19 +10402,19 @@
},
{
"command": "gitlens.ai.explainCommit",
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled"
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
{
"command": "gitlens.ai.explainStash",
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled"
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
{
"command": "gitlens.ai.generateChangelog",
"when": "gitlens:enabled && !gitlens:untrusted && gitlens:gk:organization:ai:enabled"
"when": "gitlens:enabled && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
{
"command": "gitlens.ai.generateCommitMessage",
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled"
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
{
"command": "gitlens.annotations.nextChange",
Expand Down Expand Up @@ -11434,7 +11434,7 @@
},
{
"command": "gitlens.resetAIKey",
"when": "gitlens:enabled && gitlens:gk:organization:ai:enabled"
"when": "gitlens:enabled && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
{
"command": "gitlens.revealCommitInView",
Expand Down Expand Up @@ -11682,7 +11682,7 @@
},
{
"command": "gitlens.switchAIModel",
"when": "gitlens:enabled && gitlens:gk:organization:ai:enabled"
"when": "gitlens:enabled && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled"
},
{
"command": "gitlens.switchMode",
Expand Down Expand Up @@ -13810,7 +13810,7 @@
},
{
"command": "gitlens.scm.ai.generateCommitMessage",
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"when": "gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"group": "4_gitlens@2"
},
{
Expand Down Expand Up @@ -16068,7 +16068,7 @@
"scm/title": [
{
"command": "gitlens.scm.ai.generateCommitMessage",
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled && config.gitlens.menus.scmRepositoryInline.generateCommitMessage",
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled && config.gitlens.menus.scmRepositoryInline.generateCommitMessage",
"group": "navigation@-3"
},
{
Expand All @@ -16088,7 +16088,7 @@
},
{
"command": "gitlens.scm.ai.generateCommitMessage",
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"when": "scmProvider == git && gitlens:enabled && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled && config.gitlens.menus.scmRepository.generateCommitMessage",
"group": "2_gitlens@2"
},
{
Expand Down Expand Up @@ -16358,7 +16358,7 @@
},
{
"command": "gitlens.views.ai.generateChangelogFrom",
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3@100"
},
{
Expand Down Expand Up @@ -16634,7 +16634,7 @@
},
{
"command": "gitlens.ai.explainCommit",
"when": "viewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "3_gitlens_ai@1"
},
{
Expand Down Expand Up @@ -16824,7 +16824,7 @@
},
{
"command": "gitlens.views.ai.generateChangelog",
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "inline@98"
},
{
Expand All @@ -16840,7 +16840,7 @@
},
{
"command": "gitlens.views.ai.generateChangelog",
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !listMultiSelection && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:compare:results:commits\\b/ && !listMultiSelection && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "4_gitlens_actions@2"
},
{
Expand Down Expand Up @@ -17695,7 +17695,7 @@
},
{
"command": "gitlens.ai.explainStash",
"when": "viewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "viewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "3_gitlens_ai@1"
},
{
Expand Down Expand Up @@ -20035,7 +20035,7 @@
},
{
"command": "gitlens.graph.ai.generateChangelogFrom",
"when": "webviewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "webviewItem =~ /gitlens:(branch|tag)\\b/ && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3@100"
},
{
Expand Down Expand Up @@ -20165,7 +20165,7 @@
},
{
"command": "gitlens.graph.explainCommit",
"when": "webviewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "webviewItem =~ /gitlens:commit\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3@1"
},
{
Expand Down Expand Up @@ -20330,7 +20330,7 @@
},
{
"command": "gitlens.graph.explainStash",
"when": "webviewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled",
"when": "webviewItem =~ /gitlens:stash\\b/ && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens_actions_3@1"
},
{
Expand Down Expand Up @@ -20380,7 +20380,7 @@
},
{
"command": "gitlens.graph.ai.generateCommitMessage",
"when": "webviewItem == gitlens:wip && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.generateCommitMessage.enabled",
"when": "webviewItem == gitlens:wip && !listMultiSelection && !gitlens:readonly && !gitlens:untrusted && gitlens:gk:organization:ai:enabled && config.gitlens.ai.enabled",
"group": "1_gitlens@2"
},
{
Expand Down
1 change: 1 addition & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ export interface AdvancedConfig {
}

interface AIConfig {
readonly enabled: boolean;
readonly azure: {
readonly url: string | null;
};
Expand Down
14 changes: 2 additions & 12 deletions src/plus/ai/aiProviderService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import { assertsCommitHasFullDetails } from '../../git/utils/commit.utils';
import { showAIModelPicker, showAIProviderPicker } from '../../quickpicks/aiModelPicker';
import { Directive, isDirective } from '../../quickpicks/items/directive';
import { configuration } from '../../system/-webview/configuration';
import { getContext } from '../../system/-webview/context';
import type { Storage } from '../../system/-webview/storage';
import { debounce } from '../../system/function/debounce';
import { map } from '../../system/iterable';
Expand Down Expand Up @@ -66,6 +65,7 @@ import type {
PromptTemplateType,
} from './models/promptTemplates';
import type { AIChatMessage, AIProvider, AIRequestResult } from './models/provider';
import { ensureAccess } from './utils/-webview/ai.utils';
import { getLocalPromptTemplate, resolvePrompt } from './utils/-webview/prompt.utils';

export interface AIResult {
Expand Down Expand Up @@ -468,18 +468,8 @@ export class AIProviderService implements Disposable {
return model;
}

private async ensureOrgAccess(): Promise<boolean> {
const orgEnabled = getContext('gitlens:gk:organization:ai:enabled');
if (orgEnabled === false) {
await window.showErrorMessage(`AI features have been disabled for your organization.`);
return false;
}

return true;
}

private async ensureFeatureAccess(feature: AIFeatures, source: Source): Promise<boolean> {
if (!(await this.ensureOrgAccess())) return false;
if (!(await ensureAccess())) return false;

if (feature === 'generate-commitMessage') return true;
if (
Expand Down
Loading