From c86d45d1d44c9fd91e02913873b7e6128269aee5 Mon Sep 17 00:00:00 2001 From: Lei Gao Date: Wed, 16 Oct 2024 14:22:37 -0700 Subject: [PATCH 1/5] fix wrong project root for @workspace for multi-folder project setup --- .../cwc/editor/context/project/ProjectContextProvider.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt index a31508f0b5e..962bae5d2c3 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt @@ -9,7 +9,6 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project -import com.intellij.openapi.project.guessProjectDir import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFileVisitor @@ -130,7 +129,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En } private fun initEncryption(): Boolean { - logger.info { "project context: init key for ${project.guessProjectDir()} on port ${encoderServer.port}" } + logger.info { "project context: init key for ${project.basePath} on port ${encoderServer.port}" } val url = URL("http://localhost:${encoderServer.port}/initialize") val payload = encoderServer.getEncryptionRequest() val connection = url.openConnection() as HttpURLConnection @@ -148,7 +147,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En var duration = (System.currentTimeMillis() - indexStartTime).toDouble() logger.debug { "project context file collection time: ${duration}ms" } logger.debug { "list of files collected: ${filesResult.files.joinToString("\n")}" } - val projectRoot = project.guessProjectDir()?.path ?: return false + val projectRoot = project.basePath ?: return false val payload = IndexRequestPayload(filesResult.files, projectRoot, false) val payloadJson = mapper.writeValueAsString(payload) val encrypted = encoderServer.encrypt(payloadJson) @@ -275,7 +274,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En var currentTotalFileSize = 0L val featureDevSessionContext = FeatureDevSessionContext(project) val allFiles = mutableListOf() - project.guessProjectDir()?.let { + project.baseDir?.let { VfsUtilCore.visitChildrenRecursively( it, object : VirtualFileVisitor(NO_FOLLOW_SYMLINKS) { From 6d7a0840f0d4c0591764efc08b687ed8c84ea2ea Mon Sep 17 00:00:00 2001 From: Lei Gao Date: Wed, 16 Oct 2024 14:23:07 -0700 Subject: [PATCH 2/5] change log --- .../bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json diff --git a/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json b/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json new file mode 100644 index 00000000000..46e6e6608d8 --- /dev/null +++ b/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "\"fix wrong project root for @workspace for multi-folder project setup" +} \ No newline at end of file From f8a266919063e3d0669029595f28bfaff30396cd Mon Sep 17 00:00:00 2001 From: Lei Gao Date: Wed, 16 Oct 2024 14:24:28 -0700 Subject: [PATCH 3/5] log --- .../bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json b/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json index 46e6e6608d8..02c242a641d 100644 --- a/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json +++ b/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json @@ -1,4 +1,4 @@ { "type" : "bugfix", - "description" : "\"fix wrong project root for @workspace for multi-folder project setup" + "description" : "\"@workspace cannot properly locate certain folders for certain project setup" } \ No newline at end of file From bdfa4567f7e0679534ed90db65c56aff402182d3 Mon Sep 17 00:00:00 2001 From: Lei Gao <97199248+leigaol@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:32:54 -0700 Subject: [PATCH 4/5] Update .changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json Co-authored-by: Richard Li <742829+rli@users.noreply.github.com> --- .../bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json b/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json index 02c242a641d..fab94b286b6 100644 --- a/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json +++ b/.changes/next-release/bugfix-9e318f1e-baa7-4d10-98de-edfa70fcd7e0.json @@ -1,4 +1,4 @@ { "type" : "bugfix", - "description" : "\"@workspace cannot properly locate certain folders for certain project setup" + "description" : "`@workspace` cannot properly locate certain folders for certain project setup" } \ No newline at end of file From b940399e495a0e8437c520e92763a58217571d04 Mon Sep 17 00:00:00 2001 From: Lei Gao Date: Wed, 16 Oct 2024 15:00:32 -0700 Subject: [PATCH 5/5] collect file from different paths --- .../cwc/editor/context/project/ProjectContextProvider.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt index 962bae5d2c3..1da61b93de2 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/ProjectContextProvider.kt @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import com.intellij.openapi.Disposable +import com.intellij.openapi.project.BaseProjectDirectories.Companion.getBaseDirectories import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile @@ -129,7 +130,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En } private fun initEncryption(): Boolean { - logger.info { "project context: init key for ${project.basePath} on port ${encoderServer.port}" } + logger.info { "project context: init key for ${project.name} on port ${encoderServer.port}" } val url = URL("http://localhost:${encoderServer.port}/initialize") val payload = encoderServer.getEncryptionRequest() val connection = url.openConnection() as HttpURLConnection @@ -274,7 +275,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En var currentTotalFileSize = 0L val featureDevSessionContext = FeatureDevSessionContext(project) val allFiles = mutableListOf() - project.baseDir?.let { + project.getBaseDirectories().forEach { VfsUtilCore.visitChildrenRecursively( it, object : VirtualFileVisitor(NO_FOLLOW_SYMLINKS) {