@@ -29,7 +29,7 @@ import {
2929 ViewDiff ,
3030 AcceptDiff ,
3131 QuickCommandGroupActionClick ,
32- MergedRelevantDocument ,
32+ DocumentReference ,
3333 FileClick ,
3434 RelevantTextDocumentAddition ,
3535} from './model'
@@ -974,53 +974,53 @@ export class ChatController {
974974 }
975975
976976 const relativePaths = await this . resolveContextCommandPayload ( triggerPayload )
977- // TODO: resolve the context into real context up to 90k
978977 triggerPayload . useRelevantDocuments = false
979- triggerPayload . mergedRelevantDocuments = [ ]
980- if ( triggerPayload . message ) {
981- triggerPayload . useRelevantDocuments = triggerPayload . context ?. some (
982- ( context ) => typeof context !== 'string' && context . command === '@workspace'
983- )
984- if ( triggerPayload . useRelevantDocuments ) {
985- triggerPayload . message = triggerPayload . message . replace ( / w o r k s p a c e / , '' )
986- if ( CodeWhispererSettings . instance . isLocalIndexEnabled ( ) ) {
987- const start = performance . now ( )
988- triggerPayload . relevantTextDocuments = await LspController . instance . query ( triggerPayload . message )
989- triggerPayload . mergedRelevantDocuments = this . mergeRelevantTextDocuments (
990- triggerPayload . relevantTextDocuments
978+ triggerPayload . documentReferences = [ ]
979+ triggerPayload . useRelevantDocuments = triggerPayload . context ?. some (
980+ ( context ) => typeof context !== 'string' && context . command === '@workspace'
981+ )
982+ if ( triggerPayload . useRelevantDocuments && triggerPayload . message ) {
983+ triggerPayload . message = triggerPayload . message . replace ( / w o r k s p a c e / , '' )
984+ if ( CodeWhispererSettings . instance . isLocalIndexEnabled ( ) ) {
985+ const start = performance . now ( )
986+ triggerPayload . relevantTextDocuments = await LspController . instance . query ( triggerPayload . message )
987+
988+ for ( const doc of triggerPayload . relevantTextDocuments ) {
989+ getLogger ( ) . info (
990+ `amazonq: Using workspace files ${ doc . relativeFilePath } , content(partial): ${ doc . text ?. substring ( 0 , 200 ) } , start line: ${ doc . startLine } , end line: ${ doc . endLine } `
991991 )
992- for ( const doc of triggerPayload . relevantTextDocuments ) {
993- getLogger ( ) . info (
994- `amazonq: Using workspace files ${ doc . relativeFilePath } , content(partial): ${ doc . text ?. substring ( 0 , 200 ) } , start line: ${ doc . startLine } , end line: ${ doc . endLine } `
995- )
996- }
997- triggerPayload . projectContextQueryLatencyMs = performance . now ( ) - start
998- } else {
999- this . messenger . sendOpenSettingsMessage ( triggerID , tabID )
1000- return
1001992 }
993+ triggerPayload . projectContextQueryLatencyMs = performance . now ( ) - start
994+ } else {
995+ this . messenger . sendOpenSettingsMessage ( triggerID , tabID )
996+ return
1002997 }
1003998 }
999+ triggerPayload . documentReferences = this . mergeRelevantTextDocuments ( triggerPayload . relevantTextDocuments || [ ] )
1000+
1001+ // TODO: make sure the user input + current focused document + relevantDocument + additionalContext
1002+ // combined does not exceed 100k characters before generating the request payload.
1003+ // Do truncation and make sure triggerPayload.documentReferences is up-to-date after truncation
10041004
10051005 const request = triggerPayloadToChatRequest ( triggerPayload )
10061006 const session = this . sessionStorage . getSession ( tabID )
10071007
10081008 session . currentContextId ++
10091009 session . contexts . set ( session . currentContextId , new Map ( ) )
1010- if ( triggerPayload . mergedRelevantDocuments !== undefined ) {
1011- const relativePathsOfMergedRelevantDocuments = triggerPayload . mergedRelevantDocuments . map (
1010+ if ( triggerPayload . documentReferences !== undefined ) {
1011+ const relativePathsOfMergedRelevantDocuments = triggerPayload . documentReferences . map (
10121012 ( doc ) => doc . relativeFilePath
10131013 )
10141014 for ( const relativePath of relativePaths ) {
10151015 if ( ! relativePathsOfMergedRelevantDocuments . includes ( relativePath ) ) {
1016- triggerPayload . mergedRelevantDocuments . push ( {
1016+ triggerPayload . documentReferences . push ( {
10171017 relativeFilePath : relativePath ,
10181018 lineRanges : [ { first : - 1 , second : - 1 } ] ,
10191019 } )
10201020 }
10211021 }
1022- if ( triggerPayload . mergedRelevantDocuments ) {
1023- for ( const doc of triggerPayload . mergedRelevantDocuments ) {
1022+ if ( triggerPayload . documentReferences ) {
1023+ for ( const doc of triggerPayload . documentReferences ) {
10241024 const currentContext = session . contexts . get ( session . currentContextId )
10251025 if ( currentContext ) {
10261026 currentContext . set ( doc . relativeFilePath , doc . lineRanges )
@@ -1037,7 +1037,7 @@ export class ChatController {
10371037 let response : MessengerResponseType | undefined = undefined
10381038 session . createNewTokenSource ( )
10391039 try {
1040- this . messenger . sendInitalStream ( tabID , triggerID , triggerPayload . mergedRelevantDocuments )
1040+ this . messenger . sendInitalStream ( tabID , triggerID , triggerPayload . documentReferences )
10411041 this . telemetryHelper . setConversationStreamStartTime ( tabID )
10421042 if ( isSsoConnection ( AuthUtil . instance . conn ) ) {
10431043 const { $metadata, generateAssistantResponseResponse } = await session . chatSso ( request )
@@ -1068,11 +1068,9 @@ export class ChatController {
10681068 }
10691069 }
10701070
1071- private mergeRelevantTextDocuments (
1072- documents : RelevantTextDocumentAddition [ ] | undefined
1073- ) : MergedRelevantDocument [ ] | undefined {
1074- if ( documents === undefined ) {
1075- return undefined
1071+ private mergeRelevantTextDocuments ( documents : RelevantTextDocumentAddition [ ] ) : DocumentReference [ ] {
1072+ if ( documents . length === 0 ) {
1073+ return [ ]
10761074 }
10771075 return Object . entries (
10781076 documents . reduce < Record < string , { first : number ; second : number } [ ] > > ( ( acc , doc ) => {
0 commit comments