Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
74df5bb
refactor(amazonq): modify CredentialsProvider Interface
yuxianrz Jun 9, 2025
fccbe42
refactor(amazonq): rename CredentialsChangedKind
liramon1 Jun 10, 2025
e3291c0
feat(identity): add IAM credentials settings to profile endpoints
liramon1 Jun 13, 2025
1136673
feat(identity): add onGetIamCredential endpoint
liramon1 Jun 13, 2025
40c0e67
feat(amazonq): add in IanLogout Logic and handlers
yuxianrz Jun 13, 2025
081b326
fix(amazonq): delete iam profile when logout
yuxianrz Jun 16, 2025
c90ed55
Merge remote-tracking branch 'origin' into liramon/flare-iam
liramon1 Jun 16, 2025
14cdd17
refactor(amazonq): revert CredentialsChangedKind
liramon1 Jun 20, 2025
4821c30
feat(amazonq): merge IAM feature into AmazonQTokenServiceManager
yuxianrz Jun 24, 2025
924ec9b
feat(amazonq): merge IAM feature into CodeWhispererServiceToken
yuxianrz Jun 24, 2025
e4d1e69
feat(amazonq): merge IAM feature into StreamingClientServiceToken
yuxianrz Jun 25, 2025
b35c776
feat(amazonq): enable inline suggest, chat, and agentic chat in one b…
yuxianrz Jun 25, 2025
f7b62c5
feat(amazonq): add IAM to agentic chat
liramon1 Jun 30, 2025
d6a27a2
refactor: revert package and package-lock
liramon1 Jun 30, 2025
7b571c6
refactor(amazonq): remove token prefix from token classes
liramon1 Jun 30, 2025
f7a4d43
refactor(amazonq): replace all references to IAM classes with unified…
liramon1 Jun 30, 2025
cbaf883
Merge remote-tracking branch 'origin' into liramon/flare-iam
liramon1 Jun 30, 2025
40bebe0
refactor: revert package and package lock changes
liramon1 Jun 30, 2025
7693558
feat(identity): add credential validation and fix session token bug
liramon1 Jul 1, 2025
6cf164e
feat(amazonq): add sts credentials support
yuxianrz Jul 1, 2025
55c6606
feat(identity): replace profile deletion with iam invalidation
liramon1 Jul 1, 2025
bfe9daf
fix: fix authorization and generation of STS credentials
liramon1 Jul 1, 2025
f88b367
feat: add conditional logic for assuming roles
liramon1 Jul 2, 2025
7b063c9
refactor: remove assumeRole option
liramon1 Jul 2, 2025
f9be945
fix: revert version changes in package.json
liramon1 Jul 2, 2025
b916aaa
feat(identity): replace InMemoryStsCache with FileSystemStsCache
liramon1 Jul 2, 2025
e820a26
feat(amazonq): enable sts invalidation
yuxianrz Jul 2, 2025
2f5634d
chore: add loggers for demo
liramon1 Jul 2, 2025
0c25422
chore: remove unused code
liramon1 Jul 2, 2025
58ab574
feat(identity): add role ARN to profile fields
liramon1 Jul 3, 2025
9f6ead7
feat(amazonq): enable sts autorefresh
yuxianrz Jul 3, 2025
4d3644c
feat: start validating credentials using SimulatePrincipalPolicy
liramon1 Jul 3, 2025
70c8858
feat: finish validating credentials using SimulatePrincipalPolicy
liramon1 Jul 3, 2025
6834c3d
fix: refreshed sts credentials can be used
yuxianrz Jul 3, 2025
501eaf4
fix: revert sts expiration time changes
liramon1 Jul 3, 2025
e46c5f7
chore: move client-iam and client-sts to devDependencies
liramon1 Jul 3, 2025
500262c
Merge remote-tracking branch 'origin' into liramon/flare-iam
liramon1 Jul 7, 2025
5a8a104
fix: sync unit tests with changes
liramon1 Jul 7, 2025
51c4e5a
test(identity): add unit tests to STS credentials logic
liramon1 Jul 7, 2025
c7ab54a
test: fix agentChatController IAM unit test
liramon1 Jul 8, 2025
8a5180a
feat(identity): add credential process support
liramon1 Jul 8, 2025
a9b92b9
refactor: optionalize access key and secret key in IAM profile
liramon1 Jul 9, 2025
e6bd452
feat: add support for IAM MFA
liramon1 Jul 9, 2025
6aa3d96
test: update identity server unit tests
liramon1 Jul 9, 2025
b8d9283
refactor: separate assume role logic into separate function
liramon1 Jul 9, 2025
0edf8c8
refactor: revert roleArn change
liramon1 Jul 9, 2025
ec9abf0
feat: add credential source field to iam profile
liramon1 Jul 10, 2025
96e53be
refactor: split IamCredentialProfile into multiple profile kinds
liramon1 Jul 10, 2025
64e2915
feat(identity): add support for IAM profile kinds
liramon1 Jul 10, 2025
6f362ea
refactor: prefix IAM-related profiles with 'Iam'
liramon1 Jul 10, 2025
4d11e05
refactor: prefix IAM-related profiles with 'Iam'
liramon1 Jul 10, 2025
473af32
refactor: move profile fields into profileTypes object
liramon1 Jul 11, 2025
4b15371
Merge branch 'iam-profile' into liramon/flare-iam
liramon1 Jul 11, 2025
561a390
fix: add region as optional field to IamRoleSourceProfile
liramon1 Jul 11, 2025
47ebb28
feat: add role assumption from instance credentials
liramon1 Jul 11, 2025
9e10ac9
refactor: move parent credentials logic into generateStsCredentials
liramon1 Jul 11, 2025
245eb43
fix: check source profile instead of original profile
liramon1 Jul 11, 2025
1a16956
feat: allow any IAM profile type to be used as source profile
liramon1 Jul 14, 2025
c570a4d
refactor: move MFA code retrieval into separate request
liramon1 Jul 14, 2025
62f1a4a
fix: add timeout to mfa request
liramon1 Jul 14, 2025
b31c289
fix: add parameters to mfa request
liramon1 Jul 14, 2025
5bf03b0
fix: naming changes
liramon1 Jul 15, 2025
55942ca
fix: path-browserify and chat session unit test bug
yuxianrz Jul 15, 2025
55c6985
feat: file watcher
yuxianrz Jul 15, 2025
69eb70d
chore: rename profile in unit test title
liramon1 Jul 16, 2025
59e5fba
Merge branch 'liramon/flare-iam' of github.com:liramon1/language-serv…
liramon1 Jul 16, 2025
89894ac
fix: rename profile kinds in instance unit tests
liramon1 Jul 16, 2025
2c99d8a
refactor: replace monkey patching with DI in unit test and use creden…
liramon1 Jul 16, 2025
933a1ef
fix: incorporate PR feedback
liramon1 Jul 17, 2025
9029cc3
refactor: move unit tests from identityService to iamProvider
liramon1 Jul 17, 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
3 changes: 3 additions & 0 deletions app/aws-lsp-antlr4-runtimes/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ const baseConfig = {
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.node'],
fallback: {
path: require.resolve('path-browserify'),
},
},
module: {
rules: [
Expand Down
3 changes: 3 additions & 0 deletions app/aws-lsp-codewhisperer-runtimes/custom-webpack-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ const baseConfig = {
mode: 'production',
resolve: {
extensions: ['.ts', '.tsx', '.js', '.node'],
fallback: {
path: require.resolve('path-browserify'),
},
},
module: {
rules: [
Expand Down
12 changes: 5 additions & 7 deletions app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { standalone } from '@aws/language-server-runtimes/runtimes'
import {
AmazonQServiceServerIAM,
AmazonQServiceServerToken,
AmazonQServiceServer,
CodeWhispererSecurityScanServerTokenProxy,
CodeWhispererServerTokenProxy,
QAgenticChatServerProxy,
CodeWhispererServerProxy,
QConfigurationServerTokenProxy,
QAgenticChatServerProxy,
QLocalProjectContextServerProxy,
QNetTransformServerTokenProxy,
WorkspaceContextServerTokenProxy,
Expand All @@ -26,7 +25,7 @@ const VERSION = `${MAJOR}.${MINOR}.${PATCH}`
const props = {
version: VERSION,
servers: [
CodeWhispererServerTokenProxy,
CodeWhispererServerProxy,
CodeWhispererSecurityScanServerTokenProxy,
QConfigurationServerTokenProxy,
QNetTransformServerTokenProxy,
Expand All @@ -38,8 +37,7 @@ const props = {
WorkspaceContextServerTokenProxy,
McpToolsServer,
// LspToolsServer,
AmazonQServiceServerIAM,
AmazonQServiceServerToken,
AmazonQServiceServer,
],
name: 'AWS CodeWhisperer',
} as RuntimeProps
Expand Down
6 changes: 3 additions & 3 deletions app/aws-lsp-codewhisperer-runtimes/src/iam-standalone.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { standalone } from '@aws/language-server-runtimes/runtimes'
import { CodeWhispererServerIAM, QChatServerIAMProxy } from '@aws/lsp-codewhisperer'
import { createIAMRuntimeProps } from './standalone-common'
import { CodeWhispererServer, QChatServerProxy } from '@aws/lsp-codewhisperer'
import { createRuntimeProps } from './standalone-common'

const props = createIAMRuntimeProps('0.1.0', [CodeWhispererServerIAM, QChatServerIAMProxy])
const props = createRuntimeProps('0.1.0', [CodeWhispererServer, QChatServerProxy])

standalone(props)
8 changes: 4 additions & 4 deletions app/aws-lsp-codewhisperer-runtimes/src/iam-webworker.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { webworker } from '@aws/language-server-runtimes/runtimes/webworker'
import { CodeWhispererServerIAM } from '@aws/lsp-codewhisperer/out/language-server/inline-completion/codeWhispererServer'
import { QChatServerIAM } from '@aws/lsp-codewhisperer/out/language-server/chat/qChatServer'
import { CodeWhispererServer } from '@aws/lsp-codewhisperer/out/language-server/inline-completion/codeWhispererServer'
import { QChatServer } from '@aws/lsp-codewhisperer/out/language-server/chat/qChatServer'
import { RuntimeProps } from '@aws/language-server-runtimes/runtimes/runtime'
import { AmazonQServiceServerIAM } from '@aws/lsp-codewhisperer/out/shared/amazonQServer'
import { AmazonQServiceServer } from '@aws/lsp-codewhisperer/out/shared/amazonQServer'

// all bundles depend on AmazonQServiceServer, make sure to always include it. The standalone helper
// to inject the AmazonQServiceServer does not work for webworker as it triggers missing polyfill errors
const props: RuntimeProps = {
version: '1.0.0',
servers: [AmazonQServiceServerIAM, CodeWhispererServerIAM, QChatServerIAM],
servers: [AmazonQServiceServer, CodeWhispererServer, QChatServer],
name: 'AWS CodeWhisperer',
}

Expand Down
6 changes: 2 additions & 4 deletions app/aws-lsp-codewhisperer-runtimes/src/standalone-common.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { RuntimeProps } from '@aws/language-server-runtimes/runtimes/runtime'
import { Server } from '@aws/language-server-runtimes/server-interface'
import { AmazonQServiceServerToken } from '@aws/lsp-codewhisperer'
import { AmazonQServiceServerIAM } from '@aws/lsp-codewhisperer'
import { AmazonQServiceServer } from '@aws/lsp-codewhisperer'

const createRuntimePropsFactory =
(AmazonQServiceServer: Server) =>
Expand All @@ -13,5 +12,4 @@ const createRuntimePropsFactory =
}
}

export const createIAMRuntimeProps = createRuntimePropsFactory(AmazonQServiceServerIAM)
export const createTokenRuntimeProps = createRuntimePropsFactory(AmazonQServiceServerToken)
export const createRuntimeProps = createRuntimePropsFactory(AmazonQServiceServer)
12 changes: 6 additions & 6 deletions app/aws-lsp-codewhisperer-runtimes/src/token-standalone.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
import { standalone } from '@aws/language-server-runtimes/runtimes'
import {
CodeWhispererSecurityScanServerTokenProxy,
CodeWhispererServerTokenProxy,
QChatServerTokenProxy,
CodeWhispererServerProxy,
QChatServerProxy,
QConfigurationServerTokenProxy,
QNetTransformServerTokenProxy,
QLocalProjectContextServerProxy,
WorkspaceContextServerTokenProxy,
} from '@aws/lsp-codewhisperer'
import { IdentityServer } from '@aws/lsp-identity'
import { createTokenRuntimeProps } from './standalone-common'
import { createRuntimeProps } from './standalone-common'

const MAJOR = 0
const MINOR = 1
const PATCH = 0
const VERSION = `${MAJOR}.${MINOR}.${PATCH}`

const props = createTokenRuntimeProps(VERSION, [
CodeWhispererServerTokenProxy,
const props = createRuntimeProps(VERSION, [
CodeWhispererServerProxy,
CodeWhispererSecurityScanServerTokenProxy,
QConfigurationServerTokenProxy,
QNetTransformServerTokenProxy,
QChatServerTokenProxy,
QChatServerProxy,
IdentityServer.create,
QLocalProjectContextServerProxy,
WorkspaceContextServerTokenProxy,
Expand Down
3 changes: 3 additions & 0 deletions app/aws-lsp-json-runtimes/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ const baseConfig = {
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.node'],
fallback: {
path: require.resolve('path-browserify'),
},
},
module: {
rules: [
Expand Down
3 changes: 3 additions & 0 deletions app/aws-lsp-yaml-runtimes/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ const baseConfig = {
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.node'],
fallback: {
path: require.resolve('path-browserify'),
},
},
module: {
rules: [
Expand Down
3 changes: 3 additions & 0 deletions app/hello-world-lsp-runtimes/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ const baseConfig = {
},
resolve: {
extensions: ['.ts', '.tsx', '.js', '.node'],
fallback: {
path: require.resolve('path-browserify'),
},
},
module: {
rules: [
Expand Down
3 changes: 3 additions & 0 deletions chat-client/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ module.exports = {
},
resolve: {
extensions: ['.ts', '.js'],
fallback: {
path: require.resolve('path-browserify'),
},
},
module: {
rules: [
Expand Down
7 changes: 7 additions & 0 deletions client/vscode/src/identityActivation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import {
SsoTokenChangedParams,
ssoTokenChangedRequestType,
SsoTokenSourceKind,
StsCredentialChangedParams,
stsCredentialChangedRequestType,
UpdateProfileParams,
updateProfileRequestType,
} from '@aws/language-server-runtimes/protocol'
Expand All @@ -32,6 +34,7 @@ import { encryptionKey } from './credentialsActivation'

export async function registerIdentity(client: LanguageClient): Promise<void> {
client.onNotification(ssoTokenChangedRequestType.method, ssoTokenChangedHandler)
client.onNotification(stsCredentialChangedRequestType.method, stsCredentialChangedHandler)
client.onTelemetry(e => window.showInformationMessage(`Telemetry: ${JSON.stringify(e)}`))

client.onRequest<MessageActionItem | null, Error>(
Expand Down Expand Up @@ -79,6 +82,10 @@ function ssoTokenChangedHandler(params: SsoTokenChangedParams): void {
window.showInformationMessage(`SsoTokenChanged raised: ${JSON.stringify(params)}`)
}

function stsCredentialChangedHandler(params: StsCredentialChangedParams): void {
window.showInformationMessage(`StsCredentialChanged raised: ${JSON.stringify(params)}`)
}

// The code here is for experimental purposes only. Feel free to erase and replace
// what is here with whatever you're experimenting with. If it is helpful to commit
// the code as a sample for future implementors to experiment as well, that is fine.
Expand Down
Loading