Skip to content

Commit 195e39a

Browse files
authored
Merge branch 'feature/stepfunctions-execution' into feature/stepfunctions-execution
2 parents 0940f11 + e27f2c1 commit 195e39a

File tree

14 files changed

+470
-415
lines changed

14 files changed

+470
-415
lines changed

LICENSE-THIRD-PARTY

Lines changed: 396 additions & 396 deletions
Large diffs are not rendered by default.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"date": "2025-10-10",
3+
"version": "1.99.0",
4+
"entries": []
5+
}

packages/amazonq/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.99.0 2025-10-10
2+
3+
- Miscellaneous non-user-facing changes
4+
15
## 1.98.0 2025-10-02
26

37
- Miscellaneous non-user-facing changes

packages/amazonq/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "amazon-q-vscode",
33
"displayName": "Amazon Q",
44
"description": "The most capable generative AI–powered assistant for software development.",
5-
"version": "1.99.0-SNAPSHOT",
5+
"version": "1.100.0-SNAPSHOT",
66
"extensionKind": [
77
"workspace"
88
],

packages/core/src/awsService/sagemaker/commands.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,16 @@ export async function stopSpace(
133133
ctx: vscode.ExtensionContext,
134134
sageMakerClient?: SagemakerClient
135135
) {
136+
await tryRefreshNode(node)
137+
if (node.getStatus() === 'Stopped' || node.getStatus() === 'Stopping') {
138+
void vscode.window.showWarningMessage(`Space ${node.spaceApp.SpaceName} is already in Stopped/Stopping state.`)
139+
return
140+
} else if (node.getStatus() === 'Starting') {
141+
void vscode.window.showWarningMessage(
142+
`Space ${node.spaceApp.SpaceName} is in Starting state. Wait until it is Running to attempt stop again.`
143+
)
144+
return
145+
}
136146
const spaceName = node.spaceApp.SpaceName!
137147
const confirmed = await showConfirmationMessage({
138148
prompt: `You are about to stop this space. Any active resource will also be stopped. Are you sure you want to stop the space?`,
@@ -179,7 +189,7 @@ export async function openRemoteConnect(
179189
void vscode.window.showErrorMessage(ConnectFromRemoteWorkspaceMessage)
180190
return
181191
}
182-
192+
await tryRefreshNode(node)
183193
if (node.getStatus() === 'Stopped') {
184194
// In case of SMUS, we pass in a SM Client and for SM AI, it creates a new SM Client.
185195
const client = sageMakerClient ? sageMakerClient : new SagemakerClient(node.regionCode)

packages/core/src/codewhisperer/service/transformByQ/transformApiHandler.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,8 @@ function isExcludedSourceFile(path: string): boolean {
275275
return sourceExcludedExtensions.some((extension) => path.endsWith(extension))
276276
}
277277

278-
// zip all dependency files and all source files excluding "target" (contains large JARs) plus ".git" and ".idea" (may appear in diff.patch)
278+
// zip all dependency files and all source files
279+
// excludes "target" (contains large JARs) plus ".git", ".idea", and ".github" (may appear in diff.patch)
279280
export function getFilesRecursively(dir: string, isDependenciesFolder: boolean): string[] {
280281
const entries = nodefs.readdirSync(dir, { withFileTypes: true })
281282
const files = entries.flatMap((entry) => {
@@ -284,7 +285,12 @@ export function getFilesRecursively(dir: string, isDependenciesFolder: boolean):
284285
if (isDependenciesFolder) {
285286
// include all dependency files
286287
return getFilesRecursively(res, isDependenciesFolder)
287-
} else if (entry.name !== 'target' && entry.name !== '.git' && entry.name !== '.idea') {
288+
} else if (
289+
entry.name !== 'target' &&
290+
entry.name !== '.git' &&
291+
entry.name !== '.idea' &&
292+
entry.name !== '.github'
293+
) {
288294
// exclude the above directories when zipping source code
289295
return getFilesRecursively(res, isDependenciesFolder)
290296
} else {

packages/core/src/codewhisperer/service/transformByQ/transformFileHandler.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,14 @@ export function validateCustomVersionsFile(fileContents: string) {
139139
getLogger().info('CodeTransformation: .YAML file must contain at least dependencies or plugins')
140140
return `YAML file must contain at least \`dependencies\` or \`plugins\` under \`dependencyManagement\``
141141
}
142-
for (const item of dependenciesAndPlugins) {
143-
const errorMessage = validateItem(item)
142+
for (const item of dependencies) {
143+
const errorMessage = validateItem(item, false)
144+
if (errorMessage) {
145+
return errorMessage
146+
}
147+
}
148+
for (const item of plugins) {
149+
const errorMessage = validateItem(item, true)
144150
if (errorMessage) {
145151
return errorMessage
146152
}
@@ -153,10 +159,15 @@ export function validateCustomVersionsFile(fileContents: string) {
153159
}
154160

155161
// return an error message, or undefined if item is valid
156-
function validateItem(item: any, validOriginTypes: string[] = ['FIRST_PARTY', 'THIRD_PARTY']) {
157-
if (!/^[^\s:]+:[^\s:]+$/.test(item.identifier)) {
162+
function validateItem(item: any, isPlugin: boolean) {
163+
const validOriginTypes = ['FIRST_PARTY', 'THIRD_PARTY']
164+
if (!isPlugin && !/^[^\s:]+:[^\s:]+$/.test(item.identifier)) {
158165
getLogger().info(`CodeTransformation: Invalid identifier format: ${item.identifier}`)
159-
return `Invalid identifier format: \`${item.identifier}\`. Must be in format \`groupId:artifactId\` without spaces`
166+
return `Invalid dependency identifier format: \`${item.identifier}\`. Must be in format \`groupId:artifactId\` without spaces`
167+
}
168+
if (isPlugin && !item.identifier?.trim()) {
169+
getLogger().info('CodeTransformation: Missing identifier in plugin')
170+
return 'Missing `identifier` in plugin'
160171
}
161172
if (!validOriginTypes.includes(item.originType)) {
162173
getLogger().info(`CodeTransformation: Invalid originType: ${item.originType}`)

packages/core/src/codewhisperer/service/transformByQ/transformMavenHandler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ import globals from '../../../shared/extensionGlobals'
1717
function collectDependenciesAndMetadata(dependenciesFolderPath: string, workingDirPath: string) {
1818
getLogger().info('CodeTransformation: running mvn clean test-compile with maven JAR')
1919

20-
const baseCommand = transformByQState.getMavenName()
20+
const baseCommand = transformByQState.getMavenName() // always 'mvn'
2121
const jarPath = globals.context.asAbsolutePath(path.join('resources', 'amazonQCT', 'QCT-Maven-1-0-156-0.jar'))
2222

2323
getLogger().info('CodeTransformation: running Maven extension with JAR')
2424

2525
const args = [
26-
`-Dmaven.ext.class.path=${jarPath}`,
27-
`-Dcom.amazon.aws.developer.transform.jobDirectory=${dependenciesFolderPath}`,
26+
`-Dmaven.ext.class.path="${jarPath}"`,
27+
`-Dcom.amazon.aws.developer.transform.jobDirectory="${dependenciesFolderPath}"`,
2828
'clean',
2929
'test-compile',
3030
]

packages/core/src/shared/sshConfig.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ Host ${this.configHostName}
208208

209209
protected createSSHConfigSection(proxyCommand: string): string {
210210
if (this.scriptPrefix === 'sagemaker_connect') {
211-
return `${this.getSageMakerSSHConfig(proxyCommand)}User '%r'\n`
211+
return `${this.getSageMakerSSHConfig(proxyCommand)}`
212212
} else if (this.keyPath) {
213213
return `${this.getBaseSSHConfig(proxyCommand)}IdentityFile '${this.keyPath}'\n User '%r'\n`
214214
}

0 commit comments

Comments
 (0)