Skip to content

Commit eaa7c9f

Browse files
authored
supportfileattachment follow ups (#7795)
* supportfileattachment follow ups * update other tests
1 parent 353b459 commit eaa7c9f

File tree

5 files changed

+24
-10
lines changed

5 files changed

+24
-10
lines changed

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ async function deferredActivate(context: vscode.ExtensionContext, showPRControll
417417

418418
Logger.debug('Creating tree view.', 'Activation');
419419

420-
const copilotRemoteAgentManager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context);
420+
const copilotRemoteAgentManager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context, apiImpl);
421421
context.subscriptions.push(copilotRemoteAgentManager);
422422
if (vscode.chat?.registerChatSessionItemProvider) {
423423
const provider = new class implements vscode.ChatSessionContentProvider, vscode.ChatSessionItemProvider {

src/github/copilotRemoteAgent.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import * as pathLib from 'path';
77
import * as marked from 'marked';
88
import vscode, { ChatPromptReference } from 'vscode';
99
import { parseSessionLogs, parseToolCallDetails, StrReplaceEditorToolData } from '../../common/sessionParsing';
10+
import { GitApiImpl } from '../api/api1';
1011
import { COPILOT_ACCOUNTS } from '../common/comment';
1112
import { CopilotRemoteAgentConfig } from '../common/config';
1213
import { COPILOT_LOGINS, COPILOT_SWE_AGENT, copilotEventToStatus, CopilotPRStatus, mostRecentCopilotEvent } from '../common/copilot';
@@ -30,6 +31,7 @@ import { issueMarkdown, PlainTextRenderer } from './markdownUtils';
3031
import { PullRequestModel } from './pullRequestModel';
3132
import { chooseItem } from './quickPicks';
3233
import { RepositoriesManager } from './repositoriesManager';
34+
import { getRepositoryForFile } from './utils';
3335

3436
const LEARN_MORE = vscode.l10n.t('Learn about coding agent');
3537
// Without Pending Changes
@@ -87,7 +89,13 @@ export class CopilotRemoteAgentManager extends Disposable {
8789
status: CopilotPRStatus;
8890
}[]> | undefined;
8991

90-
constructor(private credentialStore: CredentialStore, public repositoriesManager: RepositoriesManager, private telemetry: ITelemetry, private context: vscode.ExtensionContext) {
92+
constructor(
93+
private credentialStore: CredentialStore,
94+
public repositoriesManager: RepositoriesManager,
95+
private telemetry: ITelemetry,
96+
private context: vscode.ExtensionContext,
97+
private gitAPI: GitApiImpl,
98+
) {
9199
super();
92100
this.gitOperationsManager = new GitOperationsManager(CopilotRemoteAgentManager.ID);
93101
this._register(this.credentialStore.onDidChangeSessions((e: vscode.AuthenticationSessionsChangeEvent) => {
@@ -773,17 +781,17 @@ export class CopilotRemoteAgentManager extends Disposable {
773781
return fullText;
774782
}
775783

776-
extractFileReferences(references: readonly ChatPromptReference[] | undefined): string | undefined {
784+
private extractFileReferences(references: readonly ChatPromptReference[] | undefined): string | undefined {
777785
if (!references || references.length === 0) {
778786
return;
779787
}
780788
// 'file:///Users/jospicer/dev/joshbot/.github/workflows/build-vsix.yml' -> '.github/workflows/build-vsix.yml'
781789
const parts: string[] = [];
782790
for (const ref of references) {
783791
if (ref.value instanceof vscode.Uri && ref.value.scheme === 'file') { // TODO: Add support for more kinds of references
784-
const workspaceFolder = vscode.workspace.getWorkspaceFolder(ref.value);
785-
if (workspaceFolder) {
786-
const relativePath = pathLib.relative(workspaceFolder.uri.fsPath, ref.value.fsPath);
792+
const repositoryForFile = getRepositoryForFile(this.gitAPI, ref.value);
793+
if (repositoryForFile) {
794+
const relativePath = pathLib.relative(repositoryForFile.rootUri.fsPath, ref.value.fsPath);
787795
parts.push(` - ${relativePath}`);
788796
}
789797
}

src/test/github/copilotRemoteAgent.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Protocol } from '../../common/protocol';
2020
import { GitHubServerType } from '../../common/authentication';
2121
import { ReposManagerState } from '../../github/folderRepositoryManager';
2222
import { CopilotPRStatus } from '../../common/copilot';
23+
import { GitApiImpl } from '../../api/api1';
2324

2425
const telemetry = new MockTelemetry();
2526
const protocol = new Protocol('https://github.com/github/test.git');
@@ -32,6 +33,7 @@ describe('CopilotRemoteAgentManager', function () {
3233
let reposManager: RepositoriesManager;
3334
let context: MockExtensionContext;
3435
let mockRepo: MockGitHubRepository;
36+
let gitAPIImp: GitApiImpl;
3537

3638
beforeEach(function () {
3739
sinon = createSandbox();
@@ -62,7 +64,9 @@ describe('CopilotRemoteAgentManager', function () {
6264

6365
mockRepo = new MockGitHubRepository(remote, credentialStore, telemetry, sinon);
6466

65-
manager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context);
67+
gitAPIImp = new GitApiImpl(reposManager);
68+
69+
manager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context, gitAPIImp);
6670
Resource.initialize(context);
6771
});
6872

src/test/view/prsTree.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ describe('GitHub Pull Requests view', function () {
4444
let createPrHelper: CreatePullRequestHelper;
4545
let copilotManager: CopilotRemoteAgentManager;
4646
let mockThemeWatcher: MockThemeWatcher;
47+
let gitAPI: GitApiImpl;
4748

4849
beforeEach(function () {
4950
sinon = createSandbox();
@@ -58,7 +59,8 @@ describe('GitHub Pull Requests view', function () {
5859
telemetry,
5960
);
6061
credentialStore = new CredentialStore(telemetry, context);
61-
copilotManager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context);
62+
gitAPI = new GitApiImpl(reposManager);
63+
copilotManager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context, gitAPI);
6264
provider = new PullRequestsTreeDataProvider(telemetry, context, reposManager, copilotManager);
6365
createPrHelper = new CreatePullRequestHelper();
6466

src/test/view/reviewCommentController.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ describe('ReviewCommentController', function () {
7878
repository = new MockRepository();
7979
repository.addRemote('origin', 'git@github.com:aaa/bbb');
8080
reposManager = new RepositoriesManager(credentialStore, telemetry);
81-
copilotManager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context);
81+
gitApiImpl = new GitApiImpl(reposManager);
82+
copilotManager = new CopilotRemoteAgentManager(credentialStore, reposManager, telemetry, context, gitApiImpl);
8283
provider = new PullRequestsTreeDataProvider(telemetry, context, reposManager, copilotManager);
8384
const activePrViewCoordinator = new WebviewViewCoordinator(context);
8485
const createPrHelper = new CreatePullRequestHelper();
8586
Resource.initialize(context);
86-
gitApiImpl = new GitApiImpl(reposManager);
8787
manager = new FolderRepositoryManager(0, context, repository, telemetry, gitApiImpl, credentialStore, createPrHelper, mockThemeWatcher);
8888
reposManager.insertFolderManager(manager);
8989
const tree = new PullRequestChangesTreeDataProvider(gitApiImpl, reposManager);

0 commit comments

Comments
 (0)