Skip to content
Merged
Show file tree
Hide file tree
Changes from 185 commits
Commits
Show all changes
186 commits
Select commit Hold shift + click to select a range
8aae209
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 10, 2025
39c6cbc
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 10, 2025
df45ac7
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 10, 2025
2f7328a
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 11, 2025
c85dc2d
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 11, 2025
b247a76
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 11, 2025
8d4b98f
feat(amazonQFlareChat): Set up Flare chat connection (#5545)
manodnyab Apr 11, 2025
841ee32
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 11, 2025
3893b10
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 11, 2025
1bab6be
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 11, 2025
26b311e
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 12, 2025
9976109
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 15, 2025
b09a99f
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 15, 2025
a6ff658
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 15, 2025
7368860
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 16, 2025
846ab2f
Merge branch 'feature/q-lsp' into HEAD
rli Apr 17, 2025
6f4907c
Merge pull request #5603 from aws/autoMerge/feature/q-lsp-chat
rli Apr 17, 2025
28be190
Merge remote-tracking branch 'origin/main' into HEAD
rli Apr 18, 2025
ec60955
Merge pull request #5606 from aws/autoMerge/feature/q-lsp-chat
rli Apr 18, 2025
903de94
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 18, 2025
f948277
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 20, 2025
b85d204
feat(amazonq): Add quick actions to Flare chat (#5561)
manodnyab Apr 21, 2025
d61bd4f
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 21, 2025
4bbff6e
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 21, 2025
489f028
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 22, 2025
d215249
feat(amazonq): client emits linkClick events when user clicks links i…
samgst-amazon Apr 22, 2025
f1842bf
feat(amazonq): client emits ready message when Q chat is ready (#5597)
samgst-amazon Apr 22, 2025
d67b0b0
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 22, 2025
3a9f2dc
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 22, 2025
eb2e883
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 23, 2025
b3521c0
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 23, 2025
a50abba
feat(amazonq): client emits feedback message for chat response feedba…
samgst-amazon Apr 23, 2025
78f1d42
feat(amazonq): client emits followUpClick when chat follow up is sele…
samgst-amazon Apr 23, 2025
f8f92c4
feat(amazonq): client emits messages on TabEvents (#5574)
samgst-amazon Apr 23, 2025
a7b79f6
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 23, 2025
4d20c32
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 23, 2025
8c7eea3
dep(amazonq): add buttonClick message handling from Flare chat (#5628)
samgst-amazon Apr 24, 2025
a05d2c0
feat(amazonq): Add toggle for basic vs pair programming mode (#5622)
manodnyab Apr 24, 2025
c78e99c
deps(amazonq): client handles openTab requests from server (#5630)
samgst-amazon Apr 24, 2025
57edb41
add styling to webview (#5634)
samgst-amazon Apr 24, 2025
09b851f
feat(amazonq): add q config to lsp/configuration (#5520)
samgst-amazon Apr 24, 2025
c3df026
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 24, 2025
eff0aa5
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 24, 2025
2c607f8
fix(amazonq): fix project context configuration serialization (#5642)
rli Apr 25, 2025
e93c919
feat(amazonq): client emits copyCodeToClipboard for chat copy events …
samgst-amazon Apr 25, 2025
6846d85
feat(amazonq): client emits insertToCursorPosition when user selects …
samgst-amazon Apr 25, 2025
81b4d79
feat(amazonq): Show context options in prompt (#5637)
manodnyab Apr 28, 2025
2b827ae
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 28, 2025
7c104ec
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 28, 2025
2d9ddc7
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 28, 2025
406ab1e
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 28, 2025
6f728bf
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 28, 2025
3116734
deps(amazonq): Handle show document message from server (#5638)
manodnyab Apr 29, 2025
2e025dc
feat(amazonq): Add history and export options to chat tab (#5656)
manodnyab Apr 29, 2025
2fafb49
feat(amazonq): emit fileClick when user clicks file in q chat. (#5649)
samgst-amazon Apr 30, 2025
2bd4ccb
feat(amazonq): Create and save prompts (#5657)
manodnyab Apr 30, 2025
0aa199a
acknowledge disclaimer saves user choice (#5640)
samgst-amazon Apr 30, 2025
3550b0c
Merge main into feature/q-lsp-chat
aws-toolkit-automation Apr 30, 2025
05d079f
fix(amazonq): enable agentic mode (#5661)
rli May 1, 2025
e1e787b
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 1, 2025
299daed
fix(amazonq): refactor qpanel to be less leaky to fix chat panel not …
rli May 1, 2025
2982393
feat(amazonq): handle sendChatUpdate notifications from the server (#…
samgst-amazon May 1, 2025
95a5d34
feat(amazonq): Export chat conversations (#5663)
manodnyab May 1, 2025
09be52d
fix(amazonq): implement logic so aws/chat/openTab returns correct tab…
samgst-amazon May 2, 2025
9abe243
fix(amazonq): only download single copy of LSP at once (#5659)
rli May 2, 2025
8e9c856
feat(amazonq): History button in chat lists conversation history and …
samgst-amazon May 2, 2025
f6e7d22
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 2, 2025
ee32a9d
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 2, 2025
2e0fdf7
feat(amazonq): Inline E2E flow using flare (#5629)
andrewyuq May 2, 2025
f178223
Fix deserialization when sending prompts (#5666)
manodnyab May 5, 2025
0e28a94
build(amazonq): Add prod endpoint for agentic chat (#5670)
manodnyab May 5, 2025
599df15
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 6, 2025
afc5bf5
Merge remote-tracking branch 'origin/main' into feature/q-lsp-chat
rli May 6, 2025
4f9038e
Revert "Merge remote-tracking branch 'origin/main' into feature/q-lsp…
rli May 6, 2025
bee5206
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 6, 2025
fdcae23
fix(amazonq): Enable stop button of chat (#5671)
leigaol May 6, 2025
f4ec121
Merge remote-tracking branch 'upstream/autoMerge/feature/q-lsp-chat' …
Will-ShaoHua May 6, 2025
e3082d2
feat(amazonq): clicking on changed file in Q chat opens up file diff …
samgst-amazon May 6, 2025
ea894a9
Merge remote-tracking branch 'upstream/autoMerge/feature/q-lsp-chat' …
Will-ShaoHua May 6, 2025
95b797c
lint
rli May 6, 2025
57c52d4
Merge branch 'feature/q-lsp-chat' into autoMerge/feature/q-lsp-chat
rli May 6, 2025
da5ba25
feat(amazonq): Integrate named agents with chat (#5674)
manodnyab May 7, 2025
4dc770f
fix(amazonq): Add error handling of agentic chat (#5680)
leigaol May 7, 2025
395f5e6
build(amazonq): remove standalone local context server (#5654)
rli May 7, 2025
04e11d6
fix: prioritize @ actions in context list (#5678)
andrewyuq May 7, 2025
5af8d6c
Merge pull request #5676 from aws/autoMerge/feature/q-lsp-chat
rli May 7, 2025
723eb37
Merge remote-tracking branch 'origin/main' into HEAD
rli May 7, 2025
43c1c65
Merge pull request #5681 from aws/autoMerge/feature/q-lsp-chat
rli May 7, 2025
c4032c1
fix(amazonq): Fix errors while deserializing chat prompts (#5689)
manodnyab May 8, 2025
d46f890
fix(amazonq): update diff view with syntax highlights and proper new …
samgst-amazon May 8, 2025
e163691
feat(amazonq): add OpenSettings params and notification models (#5682)
andrewyuq May 8, 2025
6a32b39
feat(amazonq): enable `@sage`, pass feature config to mynahUI (#5683)
leigaol May 8, 2025
cb3ca53
fix: CNFE from ProjectContextEditorListener due to deleted class (#5684)
rli May 8, 2025
ffe192f
fix(amazonq): move cache location yet again (#5688)
rli May 8, 2025
475dfc8
fix(amazonq): fix issue where history load crashes LSP (#5690)
rli May 8, 2025
27aa993
fix(amazonq): remove pointless timeout on initialize (#5687)
rli May 8, 2025
5bc64af
feat(amazonq): add license info for the Q lsp server in the log (#5695)
andrewyuq May 8, 2025
7c2ca19
fix(amazonq): fix lsp warning about unsupported 'aws/chat/sendContext…
rli May 8, 2025
2fdde9b
deps(amazonq): handle authFollowUpClick from webview UI (#5668)
samgst-amazon May 8, 2025
7b34c28
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 8, 2025
20f1abc
feat(lsp): respect IDE user proxy settings / forward trust store (#5553)
rli May 8, 2025
edaefb3
Merge remote-tracking branch 'origin/main' into HEAD
rli May 8, 2025
22431f0
Merge pull request #5699 from aws/autoMerge/feature/q-lsp-chat
rli May 8, 2025
20c045b
feat(amazonq): fetch filePatterns from initializeResponse for workspa…
samgst-amazon May 8, 2025
4489058
Add cursor position to chat request (#5562)
manodnyab May 8, 2025
7bc1baa
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 8, 2025
9979e79
refactor: avoid manually crafting JSON blobs for postMessage(...) (#5…
rli May 9, 2025
9b4d638
fix(amazonq): ChatCommunicationManager blocks messages to UI until re…
samgst-amazon May 9, 2025
00fd096
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 9, 2025
5f52add
fix(amazonq): Support chat quick action commands (#5700)
leigaol May 9, 2025
f72b7db
fix(amazonq): Prevent error messages from being shown on stop code ge…
manodnyab May 9, 2025
6276aa1
fix(amazonq): fix chat refresh button (#5701)
rli May 9, 2025
bb07acc
Merge remote-tracking branch 'origin/main' into HEAD
rli May 9, 2025
57e9b46
lint
rli May 9, 2025
25ee578
fix(amazonq): do not model types that are directly passthrough to cha…
rli May 9, 2025
810c815
Merge pull request #5706 from aws/autoMerge/feature/q-lsp-chat
rli May 9, 2025
694c49b
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 12, 2025
0ebebe0
fix(amazonq): Fix Generate unit tests from right click context menu (…
manodnyab May 12, 2025
85cdbd6
fix(amazonq): update chat color classes (#5707)
rli May 13, 2025
67bd41c
fix(amazonq): move window/showMessage log output to idea.log (#5708)
rli May 13, 2025
241386d
fix(amazonq): avoid using modeled types in chat message proxy (#5710)
rli May 13, 2025
1dafb99
feat(amazonq): LSP telemetry/event messages trigger client side telem…
samgst-amazon May 14, 2025
578a62e
fix(amazonq): clicking chat diff repeatedly only opens one tab instea…
samgst-amazon May 14, 2025
87643f7
fix(amazonq): do not call didChangeDependencyPaths on EDT (#5714)
rli May 14, 2025
a4667f3
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 15, 2025
760f08f
fix(amazonq): fix inline pagination logic and corountine scope logic …
andrewyuq May 15, 2025
2129775
feat(amazonq): hook up showMessage/logMessage/showDocument correctly …
rli May 15, 2025
440fd77
fix(amazonq): fix pair programmer card never shown (#5715)
rli May 15, 2025
d0aed14
fix(amazonq): reduce log spam and frequency of token updates (#5713)
rli May 15, 2025
ea838ad
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 15, 2025
5390890
feat(amazonq): Add events to trigger file refresh on file changes in …
manodnyab May 15, 2025
6b1c4a7
fix(amazonq): cancel chat export doesn't bubble error up to user (#5723)
samgst-amazon May 15, 2025
96ab8df
build: temporarily change version scheme for internal (#5726)
rli May 16, 2025
d403611
build: temporarily change version scheme for internal
rli May 16, 2025
42a3a0c
fix: delete `println("handling TabBarActions")` (#5728)
rli May 16, 2025
b331040
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 16, 2025
9b97fde
fix(amazonq): refreshVfs off EDT (#5727)
rli May 19, 2025
b4af0ac
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 19, 2025
b57c9d6
fix(amazonq): Files.move will throw if src / dest are in different vo…
Will-ShaoHua May 19, 2025
e52d969
feat(amazonq): Add restart mechanism when the flare server process is…
andrewyuq May 20, 2025
47046c3
fix(amazonq): Fix "Explain" code scan issue (#5712)
manodnyab May 20, 2025
dc82572
fix(amazonq): Switch profiles if not selected in Q chat (#5724)
manodnyab May 20, 2025
3828011
refactor(amazonq): remove redunant panel re-creation (#5729)
Will-ShaoHua May 20, 2025
f2b810b
Merge remote-tracking branch 'origin/main' into HEAD
rli May 20, 2025
aa5ff7a
build/lint
rli May 20, 2025
5e80c65
tst
rli May 20, 2025
f6c58f5
Merge pull request #5735 from aws/autoMerge/feature/q-lsp-chat
rli May 20, 2025
d7c43ba
fix: Use JetBrains default font for inline chat popup (#5739)
bryceitoc9 May 21, 2025
e76451b
fix(amazonq): remove `depends` declarations for languages that do not…
rli May 21, 2025
524d427
Merge branch 'feature/q-lsp-chat' into autoMerge/feature/q-lsp-chat
rli May 21, 2025
ca1161c
Merge pull request #5746 from aws/autoMerge/feature/q-lsp-chat
rli May 21, 2025
8bf7d71
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 22, 2025
e260f78
fix(chat): Use editor background for chat background (#5743)
bryceitoc9 May 22, 2025
1007aff
fix(amazonq): Fix prompt file not opening in windows (#5750)
manodnyab May 22, 2025
dbeec62
fix(amazonq): include failure context in chat failure message (#5752)
rli May 22, 2025
30d366c
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 23, 2025
a3aa811
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 23, 2025
906a6d6
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 24, 2025
5e43f60
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 27, 2025
e68a6ad
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 27, 2025
7cb2b07
fix(amazonq): fix issue where AmazonQLspService subservices are never…
rli May 27, 2025
7ec20c4
fix(amazonq): Prevent major version while downloading flare artifact …
manodnyab May 27, 2025
d9ced68
fix(amazonq): fix chat on old glibc platforms (#5754)
rli May 27, 2025
5f44d67
fix(amazonq): fix warnings when metrics fields are null (#5762)
rli May 29, 2025
43906bc
Merge main into feature/q-lsp-chat
aws-toolkit-automation May 30, 2025
04aba5b
fix(amazonq): add range field to indicate partial doc change (#5767)
andrewyuq May 30, 2025
dc8bc7a
fix(amazonq): Stop button disappears after being clicked (#5765)
samgst-amazon May 30, 2025
87fa611
fix(chat): always use the lightest bg color we can find for the chat …
bryceitoc9 May 30, 2025
dd2a1b6
fix(amazonq): Update text box border colors and light text colors (#5…
manodnyab Jun 2, 2025
0c79959
fix(amazonq): use user provided node runtime (#5768)
leigaol Jun 2, 2025
535b8e2
feat(amazonq): include minimal flare assets in plugin bundle (#5769)
rli Jun 2, 2025
6ef5842
feat(amazonq): fallback to bundled flare assets if cannot be download…
rli Jun 2, 2025
7426f29
Merge main into feature/q-lsp-chat
aws-toolkit-automation Jun 2, 2025
32aca78
Merge main into feature/q-lsp-chat
aws-toolkit-automation Jun 2, 2025
2cfbbb7
fix(amazonq): do not decode uri if `window/showDocument` is external …
rli Jun 2, 2025
44c37a0
fix(amazonq): make trust chain resolution optional for Q LSP (#5778)
rli Jun 2, 2025
ae4af35
fix(amazonq): cherry-pick changes to support `aws/chat/chatOptionsUpd…
rli Jun 3, 2025
2e70fc3
feat(amazonq): expose 'Manage Subscriptions' action for builder id pa…
rli Jun 3, 2025
4b83365
Revert "feat(amazonq): expose 'Manage Subscriptions' action for build…
rli Jun 3, 2025
2a178ce
Merge main into feature/q-lsp-chat
aws-toolkit-automation Jun 3, 2025
38e7369
Send active file in editor (#5783)
manodnyab Jun 4, 2025
5141320
Fix creation of prompts not opening files in the editor (#5781)
manodnyab Jun 4, 2025
69f1522
Update changelog (#5785)
manodnyab Jun 5, 2025
060a132
fix(amazonq): fix issue where chat messages get sent to all projects…
rli Jun 5, 2025
bc95823
fix(amazonq): add metrics for flare/node resolution (#5786)
rli Jun 5, 2025
a6d80b4
fix(amazonq): make q chat unavalable in IDE version 2024.2.1 (#5788)
samgst-amazon Jun 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type" : "bugfix",
"description" : "Support full Unicode range in inline chat panel on Windows"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type" : "feature",
"description" : "Agentic coding experience: Amazon Q can now write code and run shell commands on your behalf"
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ val toolkitVersion: String by project

// please check changelog generation logic if this format is changed
// also sync with gateway version
version = "$toolkitVersion-${ideProfile.shortName}"
version = "$toolkitVersion.${ideProfile.shortName}"

val resharperDlls = configurations.register("resharperDlls") {
isCanBeConsumed = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ val ideProfile = IdeVersions.ideProfile(project)
val toolkitVersion: String by project

// please check changelog generation logic if this format is changed
version = "$toolkitVersion-${ideProfile.shortName}"
version = "$toolkitVersion.${ideProfile.shortName}"

// attach the current commit hash on local builds
if (!project.isCi()) {
Expand Down
93 changes: 89 additions & 4 deletions plugins/amazonq/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import de.undercouch.gradle.tasks.download.Download
import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask
import software.aws.toolkits.gradle.changelog.tasks.GeneratePluginChangeLog
import software.aws.toolkits.gradle.intellij.IdeFlavor
import software.aws.toolkits.gradle.intellij.IdeVersions
import software.aws.toolkits.gradle.intellij.toolkitIntelliJ

plugins {
id("toolkit-publishing-conventions")
id("toolkit-publish-root-conventions")
id("toolkit-jvm-conventions")
id("toolkit-testing")
id("de.undercouch.download")
}

buildscript {
dependencies {
classpath(libs.bundles.jackson)
}
}

val changelog = tasks.register<GeneratePluginChangeLog>("pluginChangeLog") {
Expand Down Expand Up @@ -51,3 +58,81 @@ tasks.check {
}
}
}

val downloadFlareManifest by tasks.registering(Download::class) {
src("https://aws-toolkit-language-servers.amazonaws.com/qAgenticChatServer/0/manifest.json")
dest(layout.buildDirectory.file("flare/manifest.json"))
onlyIfModified(true)
useETag(true)
}

data class FlareManifest(
val versions: List<FlareVersion>,
)

data class FlareVersion(
val serverVersion: String,
val thirdPartyLicenses: String,
val targets: List<FlareTarget>,
)

data class FlareTarget(
val platform: String,
val arch: String,
val contents: List<FlareContent>
)

data class FlareContent(
val url: String,
)

val downloadFlareArtifacts by tasks.registering(Download::class) {
dependsOn(downloadFlareManifest)
inputs.files(downloadFlareManifest)

val manifestFile = downloadFlareManifest.map { it.outputFiles.first() }
val manifest = manifestFile.map { jacksonObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).readValue(it.readText(), FlareManifest::class.java) }

// use darwin-aarch64 because its the smallest and we're going to throw away everything platform specific
val latest = manifest.map { it.versions.first() }
val latestVersion = latest.map { it.serverVersion }
val licensesUrl = latest.map { it.thirdPartyLicenses }
val darwin = latest.map { it.targets.first { target -> target.platform == "darwin" && target.arch == "arm64" } }
val contentUrls = darwin.map { it.contents.map { content -> content.url } }

val destination = layout.buildDirectory.dir(latestVersion.map { "flare/$it" })
outputs.dir(destination)

src(contentUrls.zip(licensesUrl) { left, right -> left + right})
dest(destination)
onlyIfModified(true)
useETag(true)
}

val prepareBundledFlare by tasks.registering(Copy::class) {
dependsOn(downloadFlareArtifacts)
inputs.files(downloadFlareArtifacts)

val dest = layout.buildDirectory.dir("tmp/extractFlare")
into(dest)
from(downloadFlareArtifacts.map { it.outputFiles.filterNot { file -> file.name.endsWith(".zip") } })

doLast {
copy {
into(dest)
includeEmptyDirs = false
downloadFlareArtifacts.get().outputFiles.filter { it.name.endsWith(".zip") }.forEach {
dest.get().file(it.parentFile.name).asFile.createNewFile()
from(zipTree(it)) {
include("*.js")
include("*.txt")
}
}
}
}
}

tasks.withType<PrepareSandboxTask>().configureEach {
intoChild(intellijPlatform.projectName.map { "$it/flare" })
.from(prepareBundledFlare)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
<projectListeners>
<listener class="software.aws.toolkits.jetbrains.services.amazonq.toolwindow.AmazonQToolWindowListener"
topic="com.intellij.openapi.wm.ex.ToolWindowManagerListener"/>
<listener class="software.aws.toolkits.jetbrains.services.amazonq.project.ProjectContextEditorListener"
topic="com.intellij.openapi.fileEditor.FileEditorManagerListener"/>
</projectListeners>

<extensions defaultExtensionNs="com.intellij">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
import com.intellij.ui.dsl.builder.Align
import com.intellij.ui.dsl.builder.panel
import com.intellij.ui.jcef.JBCefJSQuery
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import org.cef.CefApp
import software.aws.toolkits.core.utils.debug
import software.aws.toolkits.core.utils.error
Expand All @@ -40,6 +44,8 @@
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfile
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager
import software.aws.toolkits.jetbrains.services.amazonq.util.createBrowser
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.EditorThemeAdapter
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.ThemeBrowserAdapter
import software.aws.toolkits.jetbrains.utils.isQConnected
import software.aws.toolkits.jetbrains.utils.isQExpired
import software.aws.toolkits.jetbrains.utils.isQWebviewsAvailable
Expand All @@ -54,7 +60,7 @@
import javax.swing.JComponent

@Service(Service.Level.PROJECT)
class QWebviewPanel private constructor(val project: Project) : Disposable {
class QWebviewPanel private constructor(val project: Project, private val scope: CoroutineScope) : Disposable {

Check warning on line 63 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt#L63

Added line #L63 was not covered by tests
private val webviewContainer = Wrapper()
var browser: QWebviewBrowser? = null
private set
Expand Down Expand Up @@ -102,6 +108,14 @@
} else {
browser = QWebviewBrowser(project, this).also {
webviewContainer.add(it.component())

val themeBrowserAdapter = ThemeBrowserAdapter()
EditorThemeAdapter().onThemeChange()
.distinctUntilChanged()

Check warning on line 114 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt#L112-L114

Added lines #L112 - L114 were not covered by tests
.onEach { theme ->
themeBrowserAdapter.updateLoginThemeInBrowser(it.jcefBrowser.cefBrowser, theme)
}
.launchIn(scope)

Check warning on line 118 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt#L116-L118

Added lines #L116 - L118 were not covered by tests
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import com.intellij.openapi.project.DumbAwareAction
import com.intellij.util.messages.Topic
import software.aws.toolkits.jetbrains.services.amazonq.toolwindow.AmazonQToolWindow
import software.aws.toolkits.resources.AmazonQBundle
import software.aws.toolkits.resources.message
import java.util.EventListener

class QRefreshPanelAction : DumbAwareAction(AmazonQBundle.message("amazonq.refresh.panel"), null, AllIcons.Actions.Refresh) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.treeToValue
import org.jetbrains.annotations.VisibleForTesting
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
import software.aws.toolkits.jetbrains.services.amazonq.messages.UnknownMessageType
import software.aws.toolkits.jetbrains.services.amazonq.util.command

class MessageSerializer @VisibleForTesting constructor() {

private val objectMapper = jacksonObjectMapper()
val objectMapper = jacksonObjectMapper()

Check warning on line 23 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/commands/MessageSerializer.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/commands/MessageSerializer.kt#L23

Added line #L23 was not covered by tests

Check notice on line 23 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/commands/MessageSerializer.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Function or property has platform type

Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable.

Check notice

Code scanning / QDJVMC

Function or property has platform type Note

Declaration has type inferred from a platform call, which can lead to unchecked nullability issues. Specify type explicitly as nullable or non-nullable.
.registerModule(JavaTimeModule())
.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS)
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
Expand All @@ -36,6 +37,12 @@

fun serialize(value: Any): String = objectMapper.writeValueAsString(value)

inline fun <reified T> deserializeChatMessages(value: JsonNode): T =
objectMapper.treeToValue<T>(value)

inline fun <reified T> deserializeChatMessages(value: JsonNode, clazz: Class<T>): T =
objectMapper.treeToValue(value, clazz)

// Provide singleton global access
companion object {
private val instance = MessageSerializer()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,20 @@ package software.aws.toolkits.jetbrains.services.amazonq.startup
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runInEdt
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.waitForSmartMode
import com.intellij.openapi.startup.ProjectActivity
import com.intellij.openapi.wm.ToolWindowManager
import kotlinx.coroutines.TimeoutCancellationException
import kotlinx.coroutines.delay
import kotlinx.coroutines.time.withTimeout
import software.aws.toolkits.core.utils.getLogger
import software.aws.toolkits.core.utils.warn
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
import software.aws.toolkits.jetbrains.core.gettingstarted.emitUserState
import software.aws.toolkits.jetbrains.services.amazonq.CodeWhispererFeatureConfigService
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager
import software.aws.toolkits.jetbrains.services.amazonq.project.ProjectContextController
import software.aws.toolkits.jetbrains.services.amazonq.toolwindow.AmazonQToolWindow
import software.aws.toolkits.jetbrains.services.amazonq.toolwindow.AmazonQToolWindowFactory
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager
import software.aws.toolkits.jetbrains.services.cwc.inline.InlineChatController
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
import java.lang.management.ManagementFactory
import java.time.Duration
import java.util.concurrent.atomic.AtomicBoolean

class AmazonQStartupActivity : ProjectActivity {
Expand Down Expand Up @@ -58,39 +49,8 @@ class AmazonQStartupActivity : ProjectActivity {
QRegionProfileManager.getInstance().validateProfile(project)

AmazonQLspService.getInstance(project)
startLsp(project)
if (runOnce.get()) return
emitUserState(project)
runOnce.set(true)
}

private suspend fun startLsp(project: Project) {
// Automatically start the project context LSP after some delay when average CPU load is below 30%.
// The CPU load requirement is to avoid competing with native JetBrains indexing and other CPU expensive OS processes
// In the future we will decouple LSP start and indexing start to let LSP perform other tasks.
val startLspIndexingDuration = Duration.ofMinutes(30)
project.waitForSmartMode()
delay(30_000) // Wait for 30 seconds for systemLoadAverage to be more accurate
try {
withTimeout(startLspIndexingDuration) {
while (true) {
val cpuUsage = ManagementFactory.getOperatingSystemMXBean().systemLoadAverage
if (cpuUsage > 0 && cpuUsage < 30) {
ProjectContextController.getInstance(project = project)
break
} else {
delay(60_000) // Wait for 60 seconds
}
}
}
} catch (e: TimeoutCancellationException) {
LOG.warn { "Failed to start LSP server due to time out" }
} catch (e: Exception) {
LOG.warn { "Failed to start LSP server" }
}
}

companion object {
private val LOG = getLogger<AmazonQStartupActivity>()
}
}
Loading
Loading