Skip to content

Commit 1c7052d

Browse files
authored
feat(amazonq): Use relative path in inline completion API payload (#4864)
* fix index cache not loaded * use file relative path in inline API * rm change log item * add unit test * fix test cases * fix detekt * fix detect; unit test
1 parent 89cea32 commit 1c7052d

File tree

7 files changed

+11
-7
lines changed

7 files changed

+11
-7
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/editor/CodeWhispererEditorUtil.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ object CodeWhispererEditorUtil {
3030
val caretContext = extractCaretContext(editor)
3131
val fileName = getFileName(psiFile)
3232
val programmingLanguage = psiFile.programmingLanguage()
33-
return FileContextInfo(caretContext, fileName, programmingLanguage)
33+
val fileRelativePath = getRelativePathToContentRoot(editor)
34+
return FileContextInfo(caretContext, fileName, programmingLanguage, fileRelativePath)
3435
}
3536

3637
fun extractCaretContext(editor: Editor): CaretContext {

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
@@ -42,7 +42,8 @@ data class CaretContext(val leftFileContext: String, val rightFileContext: Strin
4242
data class FileContextInfo(
4343
val caretContext: CaretContext,
4444
val filename: String,
45-
val programmingLanguage: CodeWhispererProgrammingLanguage
45+
val programmingLanguage: CodeWhispererProgrammingLanguage,
46+
val fileRelativePath: String?,
4647
)
4748

4849
data class 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
@@ -779,7 +779,7 @@ class CodeWhispererService(private val cs: CoroutineScope) : Disposable {
779779
val fileContext = FileContext.builder()
780780
.leftFileContent(fileContextInfo.caretContext.leftFileContext)
781781
.rightFileContent(fileContextInfo.caretContext.rightFileContext)
782-
.filename(fileContextInfo.filename)
782+
.filename(fileContextInfo.fileRelativePath ?: fileContextInfo.filename)
783783
.programmingLanguage(programmingLanguage)
784784
.build()
785785
val supplementalContexts = supplementalContext?.contents?.map {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ internal class CodeWhispererCodeCoverageTrackerTestPython : CodeWhispererCodeCov
162162
fixture.editor,
163163
mock(),
164164
mock(),
165-
FileContextInfo(mock(), pythonFileName, CodeWhispererPython.INSTANCE),
165+
FileContextInfo(mock(), pythonFileName, CodeWhispererPython.INSTANCE, pythonFileName),
166166
runBlocking {
167167
async {
168168
SupplementalContextInfo(

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class CodeWhispererEditorUtilTest {
4646
assertThat(fileContext.programmingLanguage).isInstanceOf(CodeWhispererPython::class.java)
4747
assertThat(fileContext.caretContext.leftFileContext).isEqualTo(pythonTestLeftContext)
4848
assertThat(fileContext.caretContext.rightFileContext).isEqualTo("")
49+
assertThat(fileContext.fileRelativePath).isEqualTo("test.py")
4950
}
5051

5152
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ private fun CodeWhispererProgrammingLanguage.toSdkModel(): ProgrammingLanguage =
215215
.build()
216216

217217
private fun FileContextInfo.toSdkModel(): FileContext = FileContext.builder()
218-
.filename(filename)
218+
.filename(fileRelativePath)
219219
.programmingLanguage(programmingLanguage.toCodeWhispererRuntimeLanguage().toSdkModel())
220220
.leftFileContent(caretContext.leftFileContext)
221221
.rightFileContent(caretContext.rightFileContext)

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.util.UtgStrategy
5858
import software.aws.toolkits.telemetry.CodewhispererCompletionType
5959
import software.aws.toolkits.telemetry.CodewhispererSuggestionState
6060
import software.aws.toolkits.telemetry.CodewhispererTriggerType
61+
import java.nio.file.Paths
6162
import kotlin.random.Random
6263

6364
object CodeWhispererTestUtil {
@@ -391,13 +392,13 @@ fun aResponseContext(): ResponseContext = ResponseContext(aString())
391392
fun aFileContextInfo(language: CodeWhispererProgrammingLanguage? = null): FileContextInfo {
392393
val caretContextInfo = CaretContext(aString(), aString(), aString())
393394
val fileName = aString()
394-
395+
val fileRelativePath = Paths.get("test", fileName).toString()
395396
val programmingLanguage = language ?: listOf(
396397
CodeWhispererPython.INSTANCE,
397398
CodeWhispererJava.INSTANCE
398399
).random()
399400

400-
return FileContextInfo(caretContextInfo, fileName, programmingLanguage)
401+
return FileContextInfo(caretContextInfo, fileName, programmingLanguage, fileRelativePath)
401402
}
402403

403404
fun aTriggerType(): CodewhispererTriggerType =

0 commit comments

Comments
 (0)