@@ -7,6 +7,7 @@ import * as pathLib from 'path';
77import * as marked from 'marked' ;
88import vscode , { ChatPromptReference } from 'vscode' ;
99import { parseSessionLogs , parseToolCallDetails , StrReplaceEditorToolData } from '../../common/sessionParsing' ;
10+ import { GitApiImpl } from '../api/api1' ;
1011import { COPILOT_ACCOUNTS } from '../common/comment' ;
1112import { CopilotRemoteAgentConfig } from '../common/config' ;
1213import { COPILOT_LOGINS , COPILOT_SWE_AGENT , copilotEventToStatus , CopilotPRStatus , mostRecentCopilotEvent } from '../common/copilot' ;
@@ -30,6 +31,7 @@ import { issueMarkdown, PlainTextRenderer } from './markdownUtils';
3031import { PullRequestModel } from './pullRequestModel' ;
3132import { chooseItem } from './quickPicks' ;
3233import { RepositoriesManager } from './repositoriesManager' ;
34+ import { getRepositoryForFile } from './utils' ;
3335
3436const 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 }
0 commit comments