Skip to content

Merge master into feature/amazonqLSP-auth #7225

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 171 commits into
base: feature/amazonqLSP-auth
Choose a base branch
from

Conversation

aws-toolkit-automation
Copy link
Collaborator

Automatic merge failed

  • Resolve conflicts and push to this PR branch.
  • Do not squash-merge this PR. Use the "Create a merge commit" option to do a regular merge.

Command line hint

To perform the merge from the command line, you could do something like the following (where "origin" is the name of the remote in your local git repo):

git stash
git fetch --all
git checkout origin/feature/amazonqLSP-auth
git merge origin/master
git commit
git push origin HEAD:refs/heads/autoMerge/feature/amazonqLSP-auth

aws-toolkit-automation and others added 30 commits April 14, 2025 11:25
## Problem
- we want a chat mode where agents are served by the local extension
while the regular "Chat" is served by flare

## Solution
- register mynah ui webview providers depending on lsp/normal
implementation
- temporarily disable the lsp (explain, fix, etc) commands, since they
are also registered in the normal "agent" flow
- redirect agent messages to the correct chat handler on the UI side
- redirect UI messages meant for agents to the extension side
- refactor main.ts so that it can be used by both the regular
implementation and the lsp one ~(I'll open a seperate PR to merge this
into master, since it's going to be a pain to maintain)~
    - #7033
- pass in references to mynah handlers so that mynah ref injection can
happen after in flare
    - #7046


Depends on ~#7033,
#7046

Related to aws/language-servers#962

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
currently tabs get added to the tabs storage when the onTabAdd handler
gets called.

In hybrid chat, the onTabAdd handler will never get called, because it
first needs to be in the tabsStorage, which doesn't happen because the
onTabAdd handler hasn't been called

## Solution
in hybrid chat mode just add new tabs directly to the tabs storage


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
When switching between different manifests, a newly downloaded version
might chronologically be older than all previously downloaded versions,
even though it's marked as the latest version in its own manifest. This
is why we are getting the EPIPE error when trying out the alpha
manifest. The cleanup deletes the language server right after it was
downloaded

## Solution
In such cases, we skip the cleanup process to preserve this version.
Otherwise we will get an EPIPE error. At this point the version that was
downloaded shouldn't be delisted, so we don't want to make sure its not
removed

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
- developer profiles are only synced to our local agents (/dev, /doc,
etc). Now that the main chat panel is served by flare we need to update
the profile information when it becomes available so that flare is using
the correct profile for the request

## Solution
- send profile information to flare on the initial request + subsequent
changes to the active profile
- refresh the webview if the profile changes 

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
We did not utilize server side compute to help improve the quality of
inline completion, chat, etc.

## Solution
1. Add server side project context support.

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem

LSP cannot run in AL2 due to glibc compatibility.

## Solution

Do not start LSP in AL2. 


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
when the flare chat panel refreshes on log in/log out, the message
listener never gets disposed of, causing the next webview instantiation
to have two message listeners that are forwarding messages to the ui

## Solution
dispose of the message listener when the webview gets disposed

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem

We heard from users that auto scans are sometimes causing highlight
linting issues where entire IDE is now yellow-underlined with warnings
that may sometimes be irrelevant

## Solution

We will disable auto scans by default, and user can re-enable in the
menu.

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
aws-toolkit-automation and others added 26 commits May 6, 2025 18:36
…#7130)

## Problem
When user accepts suggestion from inline completion or chat, there can
be a change in the current open editor's IDE diagnostics, this can be
used as a measure for code suggestion quality. Ref:
aws/aws-toolkit-jetbrains#5613

This change is part of the server side workspace context.

To reduce the risk of large blast radius, this change is only applied
for users who are in the experiment of server side project context (both
treatment and control), which is the Amzn idc users.

E2E verifying request id: `97a3c4d4-0c78-4329-93ae-379d2ec66646`.


## Solution
1. Add changed IDE diagnostics after user acceptance 

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
Flare is marked as codeowners of the following:
```
packages/core/src/codewhispererChat/ @aws/flare
packages/core/src/amazonq/ @aws/flare
```

AFAIK, the flare team hasn't done significant work in these folders, and
does not have bandwidth to review changes here.

- `packages/core/src/codewhispererChat/ ` will be mostly deleted when we
complete the migration to Flare (ex.
[here](#7237)).
- `packages/core/src/amazonq/ ` contains most changes to the amazon q
extension, which seems out of scope for the Flare team.

Having flare as codeowners requires the toolkits team to bypass their
approval on any PRs touching files in these directories. This can lead
to delayed merges and confusion.

## Solution
- remove flare as a code owner. 


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
Create E2E test for /review

## Solution


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
Misleading log message when a setting returns `null`, even if the caller
specified `defaultValue`:

    [error] Settings (amazonQ): failed to read "workspaceIndexCacheDirPath":
    Unexpected type cast: got object, expected primitive String

`cast()` considers `null` to be "object" type, which is misleading. If
the caller passed a `defaultValue`, they have intentionally opted-in to
ignoring this situation, and *don't* want this kind of log message.

## Solution
If a setting returns `null|undefined`, skip `cast()` and return
`defaultValue` immediately. Don't log an error message.
## Problem

The default 5-minute timeout was insufficient for Amazon Q Feature Dev
tests that involve code generation with multiple iterations. This was
causing tests to fail prematurely before they could complete their full
execution cycle.

## Solution

Extended the test timeout to 15 minutes (900,000ms) specifically for the
code generation test with multi-iteration scenarios. This provides
adequate time for multi-iteration code generation tests to complete
their execution while maintaining the existing test behavior.
…7242)

## Problem

Customization will only have "1" parent profile, so theoretically we
don't need another call of listAvailableCustomization to check if the
new profile has access to given customization or not. Instead, we could simply
switch to default customization (foundation).

## Solution


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
…7196)

## Problem
A metric was forwarded from Flare with missing fields. This resulted in
some confusion about why the metric wasn't showing up properly in
Kibana.

## Solution
- refactor validation to check for missingFields and log a warning. 
- Ideally, we would throw in CI for these, but there is currently a
significant number of metrics emitted without required fields.
- add tests for this validation. 


## Future Work
- Fix existing cases of emitting with missing required fields, so we can
throw in CI when this happens.


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
…7246)

## Problem
- IDE shows `Generate unit tests (python & java) for selected code` in
quick actions but Q supports all the languages.

## Solution
- Made change accordingly.

![image](https://github.com/user-attachments/assets/fc0a0967-ebdd-471b-b7d6-8889c81da075)


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
If a users firewall is blocking downloading the zips or reaching the
manifest its not clear to the user what to do

## Solution
If the user:
1. doesn't have the latest version cached
2. download of the manifest failed
3. they don't have any previous language servers downloaded

it might be a firewall issue. Rather than just `Unable to find a
compatible version of the Language Server` we show a more descriptive
message to the user

<img width="454" alt="Screenshot 2025-05-07 at 2 48 39 PM"
src="https://github.com/user-attachments/assets/48053a0f-7dff-4ba2-8b7d-65769b30a56f"
/>


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
…#7254)

## Problem
These errors show up in telemetry with reason `Error`. All of the
`reasonDesc` are different since they include unique PID values. This
makes it hard to count/quantify how often this is happening.

## Solution
- attach a unique error code to these errors. For when node can't be run
we have `FailedToRunNode`, and when the language server can't be started
we have `FailedToStartLanguageServer`.


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
#7259)

## Problem
This test has been very flaky, and constantly failing CI
(#7187).
This test is run for almost 40 different cases, and does the following:
- create a text document
- write it to the filesystem. 
- run the check on the text document. 

One of the core issues is that when we write the text document to the
filesystem, we create a new test workspace folder for each case. This
involves creating a directory with a random id for each of the almost 40
different cases.

These excessive file system operations could be leading to the flakiness
in CI.

## Solution
- reuse the same test workspace folder across all test cases. This
should cut the file systems operations in half.

## Future Work
- If this doesn't reduce flakiness, we could avoid writing the text
document to the fs since its not needed by the underlying test, but this
involves mocking the text document which is undesirable imo.


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
…7252

## Problem
AmazonQ LSP needs an identifier for the IDE workspace, which should be
stable and unique for each workspace, regardless of IDE restarts or
system reboots.

## Solution
Use [ExtensionContext.storageUri](https://code.visualstudio.com/api/references/vscode-api#ExtensionContext.storageUri)
as such an identifier and pass it when initializing AmazonQ lsp.
## Problem
We introduced `editorState` in data instrumentation launch. The service
has a requirement of 40k character limit for the `text` field.

## Solution
Implement a check on text length. If the text length exceeds 40k
characters, section 20k max characters from the left and right side of
current cursor position, so the final text is always less than 40k.

validated prod endpoint inline working for files > 40k characters.
Example request id: `57bbbe65-fbe7-47fc-81c4-c65262f47ce8`

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
…lableCustomization (#7242) (#7266)

This reverts commit 98b0d5d.

## Problem
It regress #7181 and make 7181 not working: profile will be changed, but
customization will be swapped to default always.


## Solution


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem

Inconsistent behavior when opening agent tabs (/review, /doc, etc). When
the tab is reused it keeps the prompt input options visible, but when a
new tab is created it doesn't.



https://github.com/user-attachments/assets/2ff7264f-f7a3-46f6-9a34-e29835768833




## Solution

Set `promptInputOptions` to empty when an existing tab is reused.


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
## Problem
clientId from
`clientParams.initializationOptions?.aws?.clientInfo?.clientId` is
random on every restart

## Solution
use the client id from telemetry utils


---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
When the server crashes and then restarts again, we will emit a metric
to indicate it crashed.

When querying look for: `metadata.metricName: languageServer_crash` &
`metadata.id: AmazonQ`

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.

Signed-off-by: nkomonen-amazon <[email protected]>
Copy link

github-actions bot commented May 9, 2025

  • This pull request modifies code in src/* but no tests were added/updated.
    • Confirm whether tests should be added or ensure the PR description explains why tests are not required.

akhamis-amzn and others added 3 commits May 9, 2025 15:52
## Problem
FileCreationFailed exceptions are displayed as UnknownException in
telemetry. This exception is new and we want to separate this out from
other unknown exceptions.

## Solution
Return API service error with `FileCreationFailedException`
## Problem
Extension version sent to Q LSP is hardcoded.

## Solution
Ssend the actual extension version

BEFORE:

    aws-sdk-nodejs/2.1692.0 darwin/v23.10.0 AWS-Language-Servers AWS-CodeWhisperer/0.1.0 AmazonQ-For-VSCode/0.0.1 Visual-Studio-Code---Insiders/1.100.0-insider ClientId/c342ab45-6aba-4118-b48c-44dcedb10a78 promise


AFTER

    aws-sdk-nodejs/2.1692.0 darwin/v23.10.0 AWS-Language-Servers AWS-CodeWhisperer/0.1.0 AmazonQ-For-VSCode/testPluginVersion Visual-Studio-Code---Insiders/1.100.0-insider ClientId/c342ab45-6aba-4118-b48c-44dcedb10a78 promise
## Problem
- No logs is being emitted for  telemetry events.

## Solution
- Adding logs if telemetry events are emitted.

---

- Treat all work as PUBLIC. Private `feature/x` branches will not be
squash-merged at release time.
- Your code changes must meet the guidelines in
[CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines).
- License: I confirm that my contribution is made under the terms of the
Apache 2.0 license.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.