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/README.md b/README.md
index 9cf54c071..89f86a26f 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,110 @@
## Amazon Q for Eclipse
-Amazon Q Developer helps users build faster across the entire software development lifecycle by providing tailored responses and code recommendations that conform to their team's internal libraries, proprietary algorithmic techniques, and enterprise code style.
+Amazon Q Developer is an advanced AI-powered coding assistant designed to enhance developer productivity and streamline software development processes.
-### Getting Started
+### Key Features
-* **Free Tier** - create or log in with an AWS Builder ID (a personal profile from AWS).
-* **Pro Tier** - if your organization is on the Amazon Q Developer Pro tier, log in with single sign-on.
+1. **Intelligent Code Generation & Assistance**
+ - Explains code and answers software development questions
+ - Generates real-time code suggestions from snippets to full functions
+ - Provides inline code suggestions based on your comments and existing code
+ - Supports contextual conversations about your code
-### Features
+2. **AI-Powered Development Agents**
+ - Automates complex, multistep tasks including:
+ - Unit testing
+ - Documentation
+ - Code reviews
+ - Assists with implementing features, documenting code, and bootstrapping new projects
+ - Achieved highest scores on the SWE-Bench Leaderboard and Leaderboard Lite
-* Code faster with inline code suggestions - Amazon Q Developer generates real-time code suggestions ranging from snippets to full functions based on your comments and existing code. It also supports CLI completions and natural language–to-bash translation in the command line.
-* Get assistance - Amazon Q Developer can generate code, explain code, and provide answers about software development.
-* Customize code recommendations - Securely connect Amazon Q Developer to your private repositories to generate even more relevant code recommendations, ask questions about your company code, and understand your internal code bases faster.
-* Code reference log - Attribute code from Amazon Q that is similar to training data. When code suggestions similar to training data are accepted, they will be added to the code reference log.
+3. **Secure Private Repository Integration**
+ - Connects securely to your private repositories
+ - Customizes and generates more relevant code recommendations
+ - Enables querying about your company-specific code
+ - Accelerates understanding of internal code bases
-### How to install
-* **Step 1:** Inside Eclipse, select `Help -> Install New Software...`.
-
+4. **Code Reference Log**
+ - Attributes code suggestions that are similar to training data
+ - Automatically logs accepted code suggestions that match training data
+ - Maintains transparency in AI-generated code origins
-* **Step 2:** Add the Amazon Q for Eclipse update site URL `https://amazonq.eclipsetoolkit.amazonwebservices.com/` and select the plugin before continuing.
-
+Amazon Q Developer is designed to be your intelligent coding companion, helping you write better code faster and understand complex codebases more efficiently.
-* **Step 3:** Review the installation and license details and continue through to install the plugin. Upon completion you will be prompted to restart the IDE to finish the installation.
-
+### Available Plans
-### Screenshots
-
-
-
+1. [Free Tier](https://aws.amazon.com/q/developer/getting-started/)
+ - Code faster with code suggestions in the IDE
+ - Review code licenses with reference tracking
+ - Limited monthly access to advanced features:
+ - Chat, debug code, add tests, and more in your IDE (50 interactions/month)
+ - Amazon Q Developer agents for software development (10 uses/month)
+ - Amazon Q Developer Agent for code transformation (1,000 lines of submitted code/month)
+ - Answers about your AWS account resources (25 queries/month)
+
+2. [Pro Tier](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-pro-tier-setting-up-access.html)
+ - Manage users and policies with enterprise access controls
+ - Customize Amazon Q to your code base for enhanced suggestions
+ - Increased limits on advanced features:
+ - Unlimited chat, debugging, and testing in your IDE
+ - Unlimited use of Amazon Q Developer agents for software development
+ - Unlimited answers about your AWS account resources
+ - Additional enterprise-grade features
+
+Both tiers continue to receive updates and improvements.
+
+### Installation Instructions
+
+#### Option 1: Install via Eclipse Marketplace (Recommended)
+1. **Open Eclipse Marketplace**
+ - Launch Eclipse IDE
+ - Navigate to `Help > Eclipse Marketplace...`
+ - Search for "Amazon Q"
+ - Click "Install" on the Amazon Q plugin
+
+2. **Complete Installation**
+ - Review the installation details
+ - Accept the license agreement
+ - Click "Finish"
+ - When prompted, restart Eclipse to complete the installation
+
+
+
+#### Option 2: Install via Update Site
+1. **Open Install Dialog**
+ - Launch Eclipse IDE
+ - Navigate to `Help > Install New Software...`
+
+2. **Add Amazon Q Repository**
+ - Click "Add..." button
+ - Enter the following details:
+ - Name: `Amazon Q for Eclipse`
+ - URL: `https://amazonq.eclipsetoolkit.amazonwebservices.com/`
+ - Click "Add"
+ - Select "software.aws.toolkits.eclipse" from the available software list
+ - Click "Next"
+
+3. **Complete Installation**
+ - Review the installation details
+ - Accept the license agreement
+ - Click "Finish"
+ - When prompted, restart Eclipse to complete the installation
+
+
+
+### Demos & Examples
+
+#### Code Context
+
+
+#### Generate Tests
+
+
+#### Create Documentation
+
+
+#### Code Completion
+
## License
diff --git a/feature/feature.xml b/feature/feature.xml
index c1599f5b9..77584ce73 100644
--- a/feature/feature.xml
+++ b/feature/feature.xml
@@ -2,7 +2,7 @@
+ version="2.0.0.qualifier">
Amazon Q Developer helps users build faster across the entire software development lifecycle by providing tailored responses and code recommendations that conform to their team's internal libraries, proprietary algorithmic techniques, and enterprise code style.
@@ -198,6 +198,6 @@ https://github.com/aws/amazon-q-eclipse/blob/main/attribution.xml
id="amazon-q-eclipse"
download-size="11000"
install-size="0"
- version="1.1.0.qualifier"
+ version="2.0.0.qualifier"
unpack="false"/>
diff --git a/feature/pom.xml b/feature/pom.xml
index eeb1542f7..dd42ca0c7 100644
--- a/feature/pom.xml
+++ b/feature/pom.xml
@@ -6,7 +6,7 @@
software.aws.toolkits.eclipse
amazon-q-eclipse-group
- 1.1.0-SNAPSHOT
+ 2.0.0-SNAPSHOT
../
diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF
index 24910ff6e..8cce1e99f 100644
--- a/plugin/META-INF/MANIFEST.MF
+++ b/plugin/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: Amazon Q for Eclipse
Bundle-Provider: Amazon Web Services
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-SymbolicName: amazon-q-eclipse;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 2.0.0.qualifier
Automatic-Module-Name: amazon.q.eclipse
Bundle-ActivationPolicy: lazy
Bundle-Activator: software.aws.toolkits.eclipse.amazonq.plugin.Activator
@@ -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",
@@ -28,6 +29,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.31.0",
org.apache.commons.logging;bundle-version="1.2.0",
slf4j.api;bundle-version="2.0.13",
org.apache.commons.lang3;bundle-version="3.14.0",
+ org.apache.commons.text;bundle-version="1.10.0",
org.eclipse.core.expressions;bundle-version="3.9.400",
org.eclipse.jgit;bundle-version="6.10.0"
Bundle-Classpath: .,
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/plugin.xml b/plugin/plugin.xml
index d0f7f82d6..371be6311 100644
--- a/plugin/plugin.xml
+++ b/plugin/plugin.xml
@@ -160,6 +160,14 @@
+
+
+
+
+
+
@@ -196,6 +209,10 @@
class="org.eclipse.lsp4e.ConnectDocumentToLanguageServerSetupParticipant"
contentTypeId="org.eclipse.wst.jsdt.core.jsSource">
+
+
@@ -550,7 +567,8 @@
-
+
+
diff --git a/plugin/pom.xml b/plugin/pom.xml
index 4a938dd21..0882b84dd 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -6,7 +6,7 @@
software.aws.toolkits.eclipse
amazon-q-eclipse-group
- 1.1.0-SNAPSHOT
+ 2.0.0-SNAPSHOT
../
@@ -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
@@ -61,10 +61,15 @@
httpclient
4.5.14
+
+ org.apache.commons
+ commons-text
+ 1.10.0
+
commons-codec
commons-codec
- 1.17.1
+ 1.17.2
software.amazon.awssdk
@@ -123,10 +128,10 @@
test
- io.github.java-diff-utils
- java-diff-utils
- 4.15
-
+ io.github.java-diff-utils
+ java-diff-utils
+ 4.15
+
@@ -166,7 +171,7 @@
maven-dependency-plugin
- 3.8.0
+ 3.8.1
copy-dependencies
@@ -257,7 +262,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.1
+ 3.5.3
test
@@ -273,7 +278,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.13.0
+ 3.14.0
compiletests
@@ -287,12 +292,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 +319,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..4ef16e6e6
--- /dev/null
+++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatAsyncResultManager.java
@@ -0,0 +1,86 @@
+// 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(final String requestId) {
+ CompletableFuture