Skip to content

Commit 9476215

Browse files
committed
p
1 parent 3d5ed0b commit 9476215

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ object CodeWhispererConstants {
189189
const val NUMBER_OF_CHUNK_TO_FETCH = 3
190190
const val MAX_TOTAL_LENGTH = 20480
191191
const val MAX_LENGTH_PER_CHUNK = 10240
192+
const val MAX_CONTEXT_COUNT = 5
192193
}
193194

194195
object Utg {

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,10 @@ class DefaultCodeWhispererFileContextProvider(private val project: Project) : Fi
342342
}
343343
}
344344

345+
if (c.size > CodeWhispererConstants.CrossFile.MAX_CONTEXT_COUNT) {
346+
c = c.subList(0, CodeWhispererConstants.CrossFile.MAX_CONTEXT_COUNT)
347+
}
348+
345349
var curTotalLength = c.sumOf { it.content.length }
346350
while (curTotalLength >= CodeWhispererConstants.CrossFile.MAX_TOTAL_LENGTH) {
347351
val last = c.last()

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,29 @@ class CodeWhispererFileContextProviderTest {
529529
assertThat(r.targetFileName).isEqualTo("foo")
530530
}
531531

532+
@Test
533+
fun `truncate context should make context item lte 5`() {
534+
val supplementalContext = SupplementalContextInfo(
535+
isUtg = false,
536+
contents = listOf(
537+
Chunk(content = "a", path = "a.java"),
538+
Chunk(content = "b", path = "b.java"),
539+
Chunk(content = "c", path = "c.java"),
540+
Chunk(content = "d", path = "d.java"),
541+
Chunk(content = "e", path = "e.java"),
542+
Chunk(content = "f", path = "e.java"),
543+
Chunk(content = "g", path = "e.java"),
544+
),
545+
targetFileName = "foo",
546+
strategy = CrossFileStrategy.Codemap
547+
)
548+
549+
val r = sut.truncateContext(supplementalContext)
550+
assertThat(r.contents).hasSize(5)
551+
assertThat(r.strategy).isEqualTo(CrossFileStrategy.Codemap)
552+
assertThat(r.targetFileName).isEqualTo("foo")
553+
}
554+
532555
@Test
533556
fun `truncate context should make context length per item fit in 10240 cap`() {
534557
val chunkA = Chunk(content = "a\n".repeat(4000), path = "a.java")

0 commit comments

Comments
 (0)