diff --git a/.gitignore b/.gitignore
index 24d951fa5..5bf0f3eaa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@ telemetry/bin
bin
package-lock.json
telemetry/
+plugin/.settings
\ No newline at end of file
diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF
index 24910ff6e..821f4ad22 100644
--- a/plugin/META-INF/MANIFEST.MF
+++ b/plugin/META-INF/MANIFEST.MF
@@ -12,6 +12,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.31.0",
org.tukaani.xz;bundle-version="1.9.0",
org.eclipse.ui;bundle-version="3.205.100",
org.eclipse.core.resources;bundle-version="3.20.100",
+ org.eclipse.core.filesystem;bundle-version="1.10.400.v20240426-1040",
org.eclipse.jface.text;bundle-version="3.25.100",
org.eclipse.jdt.ui;bundle-version="3.32.100",
org.eclipse.ui.genericeditor;bundle-version="1.3.400",
diff --git a/plugin/checkstyle.xml b/plugin/checkstyle.xml
index d90bd57ae..79ad80f83 100644
--- a/plugin/checkstyle.xml
+++ b/plugin/checkstyle.xml
@@ -15,6 +15,12 @@
+
+
+
+
+
+
diff --git a/plugin/copyright-header.txt b/plugin/copyright-header.txt
new file mode 100644
index 000000000..920550255
--- /dev/null
+++ b/plugin/copyright-header.txt
@@ -0,0 +1,2 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
\ No newline at end of file
diff --git a/plugin/pom.xml b/plugin/pom.xml
index 4a938dd21..f03fa71fe 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -14,12 +14,12 @@
eclipse-plugin
- 2.28.26
+ 2.31.41
v20.9.0
10.1.0
2.17.3
17
- 5.11.3
+ 5.11.4
@@ -45,7 +45,7 @@
io.reactivex.rxjava3
rxjava
- 3.1.5
+ 3.1.10
jakarta.inject
@@ -64,7 +64,7 @@
commons-codec
commons-codec
- 1.17.1
+ 1.17.2
software.amazon.awssdk
@@ -123,10 +123,10 @@
test
- io.github.java-diff-utils
- java-diff-utils
- 4.15
-
+ io.github.java-diff-utils
+ java-diff-utils
+ 4.15
+
@@ -166,7 +166,7 @@
maven-dependency-plugin
- 3.8.0
+ 3.8.1
copy-dependencies
@@ -257,7 +257,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.1
+ 3.5.3
test
@@ -273,7 +273,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.13.0
+ 3.14.0
compiletests
@@ -287,12 +287,12 @@
org.apache.maven.plugins
maven-checkstyle-plugin
- 3.5.0
+ 3.6.0
com.puppycrawl.tools
checkstyle
- 10.18.2
+ 10.23.1
@@ -314,7 +314,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.12
+ 0.8.13
default-prepare-agent
diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java
index f8770bd1d..806b8c7aa 100644
--- a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java
+++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/AmazonQLspState.java
@@ -1,4 +1,4 @@
-// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package software.aws.toolkits.eclipse.amazonq.broker.events;
diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/QDeveloperProfileState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/QDeveloperProfileState.java
new file mode 100644
index 000000000..c8af5379f
--- /dev/null
+++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/QDeveloperProfileState.java
@@ -0,0 +1,8 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.eclipse.amazonq.broker.events;
+
+public enum QDeveloperProfileState {
+ NOT_APPLICABLE, SELECTED, AVAILABLE
+}
diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java
index 34a69ff3b..9a5e077fe 100644
--- a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java
+++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/events/ViewRouterPluginState.java
@@ -6,5 +6,6 @@
import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState;
public record ViewRouterPluginState(AuthState authState, AmazonQLspState lspState, BrowserCompatibilityState browserCompatibilityState,
- ChatWebViewAssetState chatWebViewAssetState, ToolkitLoginWebViewAssetState toolkitLoginWebViewAssetState) {
+ ChatWebViewAssetState chatWebViewAssetState, ToolkitLoginWebViewAssetState toolkitLoginWebViewAssetState,
+ QDeveloperProfileState qDeveloperProfileState) {
}
diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatAsyncResultManager.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatAsyncResultManager.java
new file mode 100644
index 000000000..13977b731
--- /dev/null
+++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatAsyncResultManager.java
@@ -0,0 +1,85 @@
+// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.eclipse.amazonq.chat;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+public final class ChatAsyncResultManager {
+ private static ChatAsyncResultManager instance;
+ private Map> results;
+ private Map completedResults;
+ private final long defaultTimeout;
+ private final TimeUnit defaultTimeUnit;
+
+ private ChatAsyncResultManager(final long timeout, final TimeUnit timeUnit) {
+ results = new ConcurrentHashMap<>();
+ completedResults = new ConcurrentHashMap<>();
+ this.defaultTimeout = timeout;
+ this.defaultTimeUnit = timeUnit;
+ }
+
+ public static synchronized ChatAsyncResultManager getInstance() {
+ if (instance == null) {
+ instance = new ChatAsyncResultManager(30, TimeUnit.SECONDS);
+ }
+ return instance;
+ }
+
+ public void createRequestId(final String requestId) {
+ if (!completedResults.containsKey(requestId)) {
+ results.put(requestId, new CompletableFuture<>());
+ }
+ }
+
+ public void removeRequestId(String requestId) {
+ CompletableFuture