diff --git a/package-lock.json b/package-lock.json index 7a1708fc43..c366497ef7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,7 +114,7 @@ }, "engines": { "node": ">=20", - "vscode": "^1.121.0" + "vscode": "^1.129.0" } }, "node_modules/@acemir/cssom": { diff --git a/package.json b/package.json index 5c86731da1..e33f921997 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "publisher": "GitHub", "engines": { "node": ">=20", - "vscode": "^1.121.0" + "vscode": "^1.129.0" }, "categories": [ "Other", diff --git a/src/@types/vscode.proposed.chatContextProvider.d.ts b/src/@types/vscode.proposed.chatContextProvider.d.ts index e7cd493ae5..00f8a62081 100644 --- a/src/@types/vscode.proposed.chatContextProvider.d.ts +++ b/src/@types/vscode.proposed.chatContextProvider.d.ts @@ -8,6 +8,8 @@ declare module 'vscode' { // https://github.com/microsoft/vscode/issues/271104 @alexr00 + export type TabSelector = { uri: DocumentSelector } | { viewType: string }; + export namespace chat { /** @@ -33,7 +35,13 @@ declare module 'vscode' { * @param id Unique identifier for the provider. * @param provider The chat explicit context provider. */ - export function registerChatExplicitContextProvider(id: string, provider: ChatExplicitContextProvider): Disposable; + export function registerChatAttachContextProvider(id: string, provider: ChatAttachContextProvider): Disposable; + + /** + * @deprecated + */ + export function registerChatExplicitContextProvider(id: string, provider: any): Disposable; + /** * Register a chat resource context provider. Resource context is provided for a specific resource. @@ -45,18 +53,12 @@ declare module 'vscode' { * @param id Unique identifier for the provider. * @param provider The chat resource context provider. */ - export function registerChatResourceContextProvider(selector: DocumentSelector, id: string, provider: ChatResourceContextProvider): Disposable; + export function registerChatTabContextProvider(selector: TabSelector, id: string, provider: ChatTabContextProvider): Disposable; /** - * Register a chat context provider. - * - * @deprecated Use {@link registerChatWorkspaceContextProvider}, {@link registerChatExplicitContextProvider}, or {@link registerChatResourceContextProvider} instead. - * - * @param selector Optional document selector to filter which resources the provider is called for. If omitted, the provider will only be called for explicit context requests. - * @param id Unique identifier for the provider. - * @param provider The chat context provider. + * @deprecated */ - export function registerChatContextProvider(selector: DocumentSelector | undefined, id: string, provider: ChatContextProvider): Disposable; + export function registerChatResourceContextProvider(selector: DocumentSelector, id: string, provider: any): Disposable; } @@ -112,14 +114,9 @@ declare module 'vscode' { * @param token A cancellation token. */ provideWorkspaceChatContext(token: CancellationToken): ProviderResult; - - /** - * @deprecated - */ - provideChatContext?(token: CancellationToken): ProviderResult; } - export interface ChatExplicitContextProvider { + export interface ChatAttachContextProvider { /** * Provide a list of chat context items that a user can choose from. These context items are shown as options when the user explicitly attaches context. @@ -128,12 +125,7 @@ declare module 'vscode' { * * @param token A cancellation token. */ - provideExplicitChatContext(token: CancellationToken): ProviderResult; - - /** - * @deprecated - */ - provideChatContext?(token: CancellationToken): ProviderResult; + provideAttachChatContext(token: CancellationToken): ProviderResult; /** * If a chat context item is provided without a `value`, this method is called to resolve the `value` for the item. @@ -141,15 +133,10 @@ declare module 'vscode' { * @param context The context item to resolve. * @param token A cancellation token. */ - resolveExplicitChatContext(context: T, token: CancellationToken): ProviderResult; - - /** - * @deprecated - */ - resolveChatContext?(context: T, token: CancellationToken): ProviderResult; + resolveAttachChatContext(context: T, token: CancellationToken): ProviderResult; } - export interface ChatResourceContextProvider { + export interface ChatTabContextProvider { /** * Given a particular resource, provide a chat context item for it. This is used for implicit context (see the settings `chat.implicitContext.enabled` and `chat.implicitContext.suggestedContext`). @@ -161,12 +148,9 @@ declare module 'vscode' { * @param options Options include the resource for which to provide context. * @param token A cancellation token. */ - provideResourceChatContext(options: { resource: Uri }, token: CancellationToken): ProviderResult; - - /** - * @deprecated - */ - provideChatContext?(options: { resource: Uri }, token: CancellationToken): ProviderResult; + // Can use active editor?\ + // Rename ChatTab to be consistent + provideChatTabContext(options: { tab: Tab }, token: CancellationToken): ProviderResult; /** * If a chat context item is provided without a `value`, this method is called to resolve the `value` for the item. @@ -174,48 +158,6 @@ declare module 'vscode' { * @param context The context item to resolve. * @param token A cancellation token. */ - resolveResourceChatContext(context: T, token: CancellationToken): ProviderResult; - - /** - * @deprecated - */ - resolveChatContext?(context: T, token: CancellationToken): ProviderResult; - } - - /** - * @deprecated Use {@link ChatWorkspaceContextProvider}, {@link ChatExplicitContextProvider}, or {@link ChatResourceContextProvider} instead. - */ - export interface ChatContextProvider { - - /** - * An optional event that should be fired when the workspace chat context has changed. - * @deprecated Use {@link ChatWorkspaceContextProvider.onDidChangeWorkspaceChatContext} instead. - */ - onDidChangeWorkspaceChatContext?: Event; - - /** - * Provide a list of chat context items to be included as workspace context for all chat requests. - * @deprecated Use {@link ChatWorkspaceContextProvider.provideWorkspaceChatContext} instead. - */ - provideWorkspaceChatContext?(token: CancellationToken): ProviderResult; - - /** - * Provide a list of chat context items that a user can choose from. - * @deprecated Use {@link ChatExplicitContextProvider.provideExplicitChatContext} instead. - */ - provideChatContextExplicit?(token: CancellationToken): ProviderResult; - - /** - * Given a particular resource, provide a chat context item for it. - * @deprecated Use {@link ChatResourceContextProvider.provideResourceChatContext} instead. - */ - provideChatContextForResource?(options: { resource: Uri }, token: CancellationToken): ProviderResult; - - /** - * If a chat context item is provided without a `value`, this method is called to resolve the `value` for the item. - * @deprecated Use the `resolveChatContext` method on the specific provider type instead. - */ - resolveChatContext?(context: T, token: CancellationToken): ProviderResult; + resolveChatTabContext(context: T, token: CancellationToken): ProviderResult; } - } diff --git a/src/extension.ts b/src/extension.ts index deaff01cb5..d3a4c65a38 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -282,11 +282,11 @@ async function init( workspaceContextProvider.initialize(); const pullRequestContextProvider = new PullRequestContextProvider(prsTreeModel, reposManager, context); context.subscriptions.push(pullRequestContextProvider); - context.subscriptions.push(vscode.chat.registerChatExplicitContextProvider('githubpr', pullRequestContextProvider)); - context.subscriptions.push(vscode.chat.registerChatResourceContextProvider({ scheme: 'webview-panel', pattern: '**/webview-PullRequestOverview**' }, 'githubpr', pullRequestContextProvider)); + context.subscriptions.push(vscode.chat.registerChatAttachContextProvider('githubpr', pullRequestContextProvider)); + context.subscriptions.push(vscode.chat.registerChatTabContextProvider({ uri: { scheme: 'webview-panel', pattern: '**/webview-PullRequestOverview**' } }, 'githubpr', pullRequestContextProvider)); const issueContextProvider = new IssueContextProvider(issueStateManager, reposManager, context); - context.subscriptions.push(vscode.chat.registerChatExplicitContextProvider('githubissue', issueContextProvider)); - context.subscriptions.push(vscode.chat.registerChatResourceContextProvider({ scheme: 'webview-panel', pattern: '**/webview-IssueOverview**' }, 'githubissue', issueContextProvider)); + context.subscriptions.push(vscode.chat.registerChatAttachContextProvider('githubissue', issueContextProvider)); + context.subscriptions.push(vscode.chat.registerChatTabContextProvider({ uri: { scheme: 'webview-panel', pattern: '**/webview-IssueOverview**' } }, 'githubissue', issueContextProvider)); const notificationsFeatures = new NotificationsFeatureRegister(credentialStore, reposManager, telemetry, notificationsManager); context.subscriptions.push(notificationsFeatures); diff --git a/src/lm/issueContextProvider.ts b/src/lm/issueContextProvider.ts index f7ee33ab40..e33fa4a741 100644 --- a/src/lm/issueContextProvider.ts +++ b/src/lm/issueContextProvider.ts @@ -22,24 +22,24 @@ export namespace IssueChatContextItem { } } -export class IssueContextProvider implements vscode.ChatExplicitContextProvider, vscode.ChatResourceContextProvider { +export class IssueContextProvider implements vscode.ChatAttachContextProvider, vscode.ChatTabContextProvider { constructor(private readonly _stateManager: StateManager, private readonly _reposManager: RepositoriesManager, private readonly _context: vscode.ExtensionContext ) { } - async provideResourceChatContext(_options: { resource: vscode.Uri; }, _token: vscode.CancellationToken): Promise { - const item = IssueOverviewPanel.getActivePanel()?.getCurrentItem();; + async provideChatTabContext(_options: { tab: vscode.Tab; }, _token: vscode.CancellationToken): Promise { + const item = IssueOverviewPanel.getActivePanel()?.getCurrentItem(); if (item) { return this._issueToUnresolvedContext(item); } } - resolveExplicitChatContext(context: IssueChatContextItem, token: vscode.CancellationToken): vscode.ProviderResult { + resolveAttachChatContext(context: IssueChatContextItem, token: vscode.CancellationToken): vscode.ProviderResult { return this._resolveChatContext(context, token); } - resolveResourceChatContext(context: IssueChatContextItem, token: vscode.CancellationToken): vscode.ProviderResult { + resolveChatTabContext(context: IssueChatContextItem, token: vscode.CancellationToken): vscode.ProviderResult { return this._resolveChatContext(context, token); } @@ -50,7 +50,7 @@ export class IssueContextProvider implements vscode.ChatExplicitContextProvider< return context; } - async provideExplicitChatContext(_token: vscode.CancellationToken): Promise { + async provideAttachChatContext(_token: vscode.CancellationToken): Promise { const contextItems: IssueChatContextItem[] = []; const seenIssues: Set = new Set(); for (const folderManager of this._reposManager.folderManagers) { diff --git a/src/lm/pullRequestContextProvider.ts b/src/lm/pullRequestContextProvider.ts index c75ad6381e..99df8474b8 100644 --- a/src/lm/pullRequestContextProvider.ts +++ b/src/lm/pullRequestContextProvider.ts @@ -102,7 +102,7 @@ Active pull request (may not be the same as open pull request): ${folderManager. } } -export class PullRequestContextProvider extends Disposable implements vscode.ChatExplicitContextProvider, vscode.ChatResourceContextProvider { +export class PullRequestContextProvider extends Disposable implements vscode.ChatAttachContextProvider, vscode.ChatTabContextProvider { constructor(private readonly _prsTreeModel: PrsTreeModel, private readonly _reposManager: RepositoriesManager, private readonly _context: vscode.ExtensionContext @@ -110,25 +110,25 @@ export class PullRequestContextProvider extends Disposable implements vscode.Cha super(); } - async provideExplicitChatContext(_token: vscode.CancellationToken): Promise { + async provideAttachChatContext(_token: vscode.CancellationToken): Promise { const prs = await this._prsTreeModel.getAllPullRequests(this._reposManager.folderManagers[0], false); return prs.items.map(pr => { return this._prToUnresolvedContext(pr); }); } - async provideResourceChatContext(_options: { resource: vscode.Uri; }, _token: vscode.CancellationToken): Promise { + async provideChatTabContext(_options: { tab: vscode.Tab; }, _token: vscode.CancellationToken): Promise { const item = PullRequestOverviewPanel.getActivePanel()?.getCurrentItem(); if (item) { return this._prToUnresolvedContext(item); } } - async resolveExplicitChatContext(context: PRChatContextItem, token: vscode.CancellationToken): Promise { + async resolveAttachChatContext(context: PRChatContextItem, token: vscode.CancellationToken): Promise { return this._resolveChatContext(context, token); } - async resolveResourceChatContext(context: PRChatContextItem, token: vscode.CancellationToken): Promise { + async resolveChatTabContext(context: PRChatContextItem, token: vscode.CancellationToken): Promise { return this._resolveChatContext(context, token); }