@@ -20,6 +20,7 @@ import { globals, getLogger } from 'aws-core-vscode/shared'
2020export interface GetAllRecommendationsOptions {
2121 emitTelemetry ?: boolean
2222 showUi ?: boolean
23+ editsStreakToken ?: number | string
2324}
2425
2526export class RecommendationService {
@@ -47,13 +48,16 @@ export class RecommendationService {
4748 // Record that a regular request is being made
4849 this . cursorUpdateRecorder ?. recordCompletionRequest ( )
4950
50- const request : InlineCompletionWithReferencesParams = {
51+ let request : InlineCompletionWithReferencesParams = {
5152 textDocument : {
5253 uri : document . uri . toString ( ) ,
5354 } ,
5455 position,
5556 context,
5657 }
58+ if ( options . editsStreakToken ) {
59+ request = { ...request , partialResultToken : options . editsStreakToken }
60+ }
5761 const requestStartTime = globals . clock . Date . now ( )
5862 const statusBar = CodeWhispererStatusBarManager . instance
5963
@@ -112,19 +116,31 @@ export class RecommendationService {
112116 firstCompletionDisplayLatency
113117 )
114118
115- // If there are more results to fetch, handle them in the background
116- try {
117- while ( result . partialResultToken ) {
118- const paginatedRequest = { ...request , partialResultToken : result . partialResultToken }
119- result = await languageClient . sendRequest (
120- inlineCompletionWithReferencesRequestType . method ,
121- paginatedRequest ,
122- token
123- )
124- this . sessionManager . updateSessionSuggestions ( result . items )
119+ const isInlineEdit = result . items . some ( ( item ) => item . isInlineEdit )
120+ if ( ! isInlineEdit ) {
121+ // If the suggestion is COMPLETIONS and there are more results to fetch, handle them in the background
122+ getLogger ( ) . info (
123+ 'Suggestion type is COMPLETIONS. Start fetching for more items if partialResultToken exists.'
124+ )
125+ try {
126+ while ( result . partialResultToken ) {
127+ const paginatedRequest = { ...request , partialResultToken : result . partialResultToken }
128+ result = await languageClient . sendRequest (
129+ inlineCompletionWithReferencesRequestType . method ,
130+ paginatedRequest ,
131+ token
132+ )
133+ this . sessionManager . updateSessionSuggestions ( result . items )
134+ }
135+ } catch ( error ) {
136+ languageClient . warn ( `Error when getting suggestions: ${ error } ` )
125137 }
126- } catch ( error ) {
127- languageClient . warn ( `Error when getting suggestions: ${ error } ` )
138+ } else {
139+ // Skip fetching for more items if the suggesion is EDITS. If it is EDITS suggestion, only fetching for more
140+ // suggestions when the user start to accept a suggesion.
141+ // Save editsStreakPartialResultToken for the next EDITS suggestion trigger if user accepts.
142+ getLogger ( ) . info ( 'Suggestion type is EDITS. Skip fetching for more items.' )
143+ this . sessionManager . updateActiveEditsStreakToken ( result . partialResultToken )
128144 }
129145
130146 // Close session and finalize telemetry regardless of pagination path
0 commit comments