Skip to content

Commit 1b6357a

Browse files
authored
config(amazonq): update supplementalContext timeout from 50 to 100ms (#5071)
1 parent 2d03e06 commit 1b6357a

File tree

8 files changed

+38
-6
lines changed

8 files changed

+38
-6
lines changed

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/workspace/context/ProjectContextProviderTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ class ProjectContextProviderTest {
364364
.withResponseBody(
365365
Body(validQueryInlineResponse)
366366
)
367-
.withFixedDelay(51) // 10 sec
367+
.withFixedDelay(101) // 100 ms
368368
)
369369
)
370370

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.intellij.util.concurrency.annotations.RequiresEdt
1515
import software.amazon.awssdk.services.codewhispererruntime.model.Completion
1616
import software.amazon.awssdk.services.codewhispererruntime.model.GenerateCompletionsResponse
1717
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
18+
import software.aws.toolkits.jetbrains.services.amazonq.SUPPLEMENTAL_CONTEXT_TIMEOUT
1819
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.sessionconfig.PayloadContext
1920
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
2021
import software.aws.toolkits.jetbrains.services.codewhisperer.popup.CodeWhispererPopupManagerNew
@@ -73,7 +74,7 @@ data class SupplementalContextInfo(
7374
}
7475

7576
val isProcessTimeout: Boolean
76-
get() = latency > CodeWhispererConstants.SUPPLEMENTAL_CONTEXT_TIMEOUT
77+
get() = latency > SUPPLEMENTAL_CONTEXT_TIMEOUT
7778

7879
companion object {
7980
fun emptyCrossFileContextInfo(targetFileName: String): SupplementalContextInfo = SupplementalContextInfo(

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import software.aws.toolkits.jetbrains.core.coroutines.projectCoroutineScope
5353
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
5454
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
5555
import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection
56+
import software.aws.toolkits.jetbrains.services.amazonq.SUPPLEMENTAL_CONTEXT_TIMEOUT
5657
import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptor
5758
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
5859
import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorManager
@@ -76,7 +77,6 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhis
7677
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CaretMovement
7778
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeInsightsSettingsFacade
7879
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
79-
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.SUPPLEMENTAL_CONTEXT_TIMEOUT
8080
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.getCompletionType
8181
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.getTelemetryOptOutPreference
8282
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.notifyErrorCodeWhispererUsageLimit

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererServiceNew.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import software.aws.toolkits.jetbrains.core.coroutines.projectCoroutineScope
5353
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
5454
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
5555
import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection
56+
import software.aws.toolkits.jetbrains.services.amazonq.SUPPLEMENTAL_CONTEXT_TIMEOUT
5657
import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWhispererClientAdaptor
5758
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
5859
import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorManagerNew
@@ -78,7 +79,6 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhis
7879
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CaretMovement
7980
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeInsightsSettingsFacade
8081
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
81-
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants.SUPPLEMENTAL_CONTEXT_TIMEOUT
8282
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.getCompletionType
8383
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.getTelemetryOptOutPreference
8484
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.notifyErrorCodeWhispererUsageLimit

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ object CodeWhispererConstants {
3030
const val POPUP_DELAY: Long = 250
3131
const val POPUP_DELAY_CHECK_INTERVAL: Long = 25
3232
const val IDLE_TIME_CHECK_INTERVAL: Long = 25
33-
const val SUPPLEMENTAL_CONTEXT_TIMEOUT = 50L
3433
const val SUPPLEMETAL_CONTEXT_BUFFER = 10L
3534

3635
val AWSTemplateKeyWordsRegex = Regex("(AWSTemplateFormatVersion|Resources|AWS::|Description)")

plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import org.junit.Test
1919
import org.mockito.kotlin.any
2020
import org.mockito.kotlin.argumentCaptor
2121
import org.mockito.kotlin.doReturn
22+
import org.mockito.kotlin.eq
2223
import org.mockito.kotlin.mock
2324
import org.mockito.kotlin.spy
2425
import org.mockito.kotlin.times
@@ -35,6 +36,7 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.customization.Code
3536
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
3637
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
3738
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJava
39+
import software.aws.toolkits.jetbrains.services.codewhisperer.model.CaretContext
3840
import software.aws.toolkits.jetbrains.services.codewhisperer.model.CaretPosition
3941
import software.aws.toolkits.jetbrains.services.codewhisperer.model.Chunk
4042
import software.aws.toolkits.jetbrains.services.codewhisperer.model.FileContextInfo
@@ -93,6 +95,33 @@ class CodeWhispererServiceTest {
9395
projectRule.project.replaceService(AwsConnectionManager::class.java, mock(), disposableRule.disposable)
9496
}
9597

98+
@Test
99+
fun `getRequestContext should use correct fileContext and timeout to fetch supplementalContext`() = runTest {
100+
val fileContextProvider = FileContextProvider.getInstance(projectRule.project)
101+
val fileContextProviderSpy = spy(fileContextProvider)
102+
projectRule.project.replaceService(FileContextProvider::class.java, fileContextProviderSpy, disposableRule.disposable)
103+
104+
val requestContext = sut.getRequestContext(
105+
TriggerTypeInfo(CodewhispererTriggerType.AutoTrigger, CodeWhispererAutomatedTriggerType.Enter()),
106+
editor = projectRule.fixture.editor,
107+
project = projectRule.project,
108+
file,
109+
LatencyContext()
110+
)
111+
112+
requestContext.awaitSupplementalContext()
113+
val fileContextCaptor = argumentCaptor<FileContextInfo>()
114+
verify(fileContextProviderSpy, times(1)).extractSupplementalFileContext(eq(file), fileContextCaptor.capture(), eq(100))
115+
assertThat(fileContextCaptor.firstValue).isEqualTo(
116+
FileContextInfo(
117+
CaretContext(leftFileContext = "", rightFileContext = "public class Main {}", leftContextOnCurrentLine = ""),
118+
"main.java",
119+
CodeWhispererJava.INSTANCE,
120+
"main.java"
121+
)
122+
)
123+
}
124+
96125
@Test
97126
fun `getRequestContext should have supplementalContext and customizatioArn if they're present`() {
98127
whenever(customizationConfig.activeCustomization(projectRule.project)).thenReturn(

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/Constants.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,5 @@ const val CODE_TRANSFORM_PREREQUISITES =
3737
"https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/code-transformation.html#prerequisites"
3838

3939
const val FEATURE_EVALUATION_PRODUCT_NAME = "CodeWhisperer"
40+
41+
const val SUPPLEMENTAL_CONTEXT_TIMEOUT = 100L

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import software.aws.toolkits.core.utils.getLogger
2727
import software.aws.toolkits.core.utils.info
2828
import software.aws.toolkits.core.utils.warn
2929
import software.aws.toolkits.jetbrains.services.amazonq.FeatureDevSessionContext
30+
import software.aws.toolkits.jetbrains.services.amazonq.SUPPLEMENTAL_CONTEXT_TIMEOUT
3031
import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.getStartUrl
3132
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
3233
import software.aws.toolkits.telemetry.AmazonqTelemetry
@@ -172,7 +173,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En
172173
}
173174
}
174175

175-
suspend fun queryInline(query: String, filePath: String): List<InlineBm25Chunk> = withTimeout(50L) {
176+
suspend fun queryInline(query: String, filePath: String): List<InlineBm25Chunk> = withTimeout(SUPPLEMENTAL_CONTEXT_TIMEOUT) {
176177
cs.async {
177178
val encrypted = encryptRequest(QueryInlineCompletionRequest(query, filePath))
178179
val r = sendMsgToLsp(LspMessage.QueryInlineCompletion, encrypted)

0 commit comments

Comments
 (0)