Skip to content

Commit 0a8745e

Browse files
committed
Merge branch 'main' of github.com:aws/aws-toolkit-jetbrains
Manually merging remote main changes after release
2 parents 5911fbe + 4cf050a commit 0a8745e

File tree

4 files changed

+53
-3
lines changed

4 files changed

+53
-3
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "The logs emitted by the Agent during user command execution will be accepted and written to `.amazonq/dev/run_command.log` file in the user's local repository."
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/session/CodeGenerationState.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import software.aws.toolkits.telemetry.MetricResult
3030
import java.util.UUID
3131

3232
private val logger = getLogger<CodeGenerationState>()
33+
private const val RUN_COMMAND_LOG_PATH = ".amazonq/dev/run_command.log"
3334

3435
class CodeGenerationState(
3536
override val tabID: String,
@@ -211,9 +212,23 @@ private suspend fun CodeGenerationState.generateCode(
211212
conversationId = config.conversationId,
212213
)
213214

214-
val newFileInfo = registerNewFiles(newFileContents = codeGenerationStreamResult.new_file_contents)
215-
val deletedFileInfo = registerDeletedFiles(deletedFiles = codeGenerationStreamResult.deleted_files)
215+
val fileContents = codeGenerationStreamResult.new_file_contents.filterKeys { file ->
216+
if (file.endsWith(RUN_COMMAND_LOG_PATH)) {
217+
val contents: String = codeGenerationStreamResult.new_file_contents[file].orEmpty()
218+
val truncatedContents = if (contents.length > 10000000) {
219+
contents.substring(0, 10000000)
220+
} else {
221+
contents
222+
}
223+
logger.info(truncatedContents) { "Run command log: $truncatedContents" }
224+
false
225+
} else {
226+
true
227+
}
228+
}
216229

230+
val newFileInfo = registerNewFiles(newFileContents = fileContents)
231+
val deletedFileInfo = registerDeletedFiles(deletedFiles = codeGenerationStreamResult.deleted_files)
217232
return CodeGenerationResult(
218233
newFiles = newFileInfo,
219234
deletedFiles = deletedFileInfo,

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/FeatureDevTestBase.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ open class FeatureDevTestBase(
6565
internal val otherStatus = "Other"
6666
internal val testTabId = "test-tab-id"
6767
internal val testFilePaths = mapOf(Pair("test.ts", "This is a comment"))
68+
internal val testRunCommandLogPath = ".amazonq/dev/run_command.log"
69+
internal val testLogPath = mapOf(Pair(testRunCommandLogPath, "This is a log"))
6870
internal val testDeletedFiles = listOf("deleted.ts")
6971
internal val testReferences = listOf(CodeReferenceGenerated())
7072
internal val testChecksumSha = "test-sha"

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/session/CodeGenerationStateTest.kt

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,14 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
3939
private lateinit var messenger: MessagePublisher
4040
private val action = SessionStateAction("test-task", userMessage)
4141
private lateinit var featureDevService: FeatureDevService
42+
private lateinit var repoContext: FeatureDevSessionContext
4243

4344
@Before
4445
override fun setup() {
4546
featureDevService = mockk<FeatureDevService>()
4647
every { featureDevService.project } returns projectRule.project
4748
messenger = mock()
48-
val repoContext = mock<FeatureDevSessionContext>()
49+
repoContext = mockk<FeatureDevSessionContext>()
4950
val sessionStateConfig = SessionStateConfig(testConversationId, repoContext, featureDevService)
5051

5152
codeGenerationState =
@@ -103,6 +104,34 @@ class CodeGenerationStateTest : FeatureDevTestBase() {
103104
coVerify(exactly = 1) { featureDevService.exportTaskAssistArchiveResult(testConversationId) }
104105
}
105106

107+
@Test
108+
fun `test generateCode excludes run_command log file`() {
109+
val runCommandLogFileName = "run_command.log"
110+
111+
val archiveFiles = mapOf(
112+
runCommandLogFileName to "newLog",
113+
"other.ts" to "other content"
114+
)
115+
val deletedFiles = emptyList<DeletedFileInfo>()
116+
val references = emptyList<CodeReference>()
117+
118+
every { featureDevService.getTaskAssistCodeGeneration(any(), any()) } returns exampleCompleteGetTaskAssistCodeGenerationResponse
119+
every { featureDevService.startTaskAssistCodeGeneration(any(), any(), any(), any(), any()) } returns exampleStartTaskAssistConversationResponse
120+
coEvery { featureDevService.exportTaskAssistArchiveResult(any()) } returns
121+
CodeGenerationStreamResult(archiveFiles, listOf("deleted.ts"), listOf(CodeReferenceGenerated()))
122+
123+
runTest {
124+
val actual = codeGenerationState.interact(action)
125+
val nextState = actual.nextState as PrepareCodeGenerationState
126+
assertThat(nextState.filePaths).contains(
127+
NewFileZipInfo(runCommandLogFileName, "newLog", rejected = false, changeApplied = false)
128+
)
129+
assertThat(nextState.filePaths).contains(
130+
NewFileZipInfo("other.ts", "other content", rejected = false, changeApplied = false)
131+
)
132+
}
133+
}
134+
106135
@Test(expected = FeatureDevException::class)
107136
fun `test code generation failed`() =
108137
runTest {

0 commit comments

Comments
 (0)