Skip to content

Commit 64c9e5a

Browse files
committed
Merge branch 'master' into hkobew/ec2/remoteConnect/telemetry
2 parents 58c611a + c716995 commit 64c9e5a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+659
-221
lines changed

package-lock.json

Lines changed: 12 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
"webpack-merge": "^5.10.0"
7070
},
7171
"dependencies": {
72-
"@types/node": "^22.7.5",
72+
"@types/node": "^18.19.55",
7373
"vscode-nls": "^5.2.0",
7474
"vscode-nls-dev": "^4.0.4"
7575
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"date": "2024-10-17",
3+
"version": "1.30.0",
4+
"entries": [
5+
{
6+
"type": "Bug Fix",
7+
"description": "Various fixes and changes"
8+
}
9+
]
10+
}

packages/amazonq/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.30.0 2024-10-17
2+
3+
- **Bug Fix** Various fixes and changes
4+
15
## 1.29.0 2024-10-10
26

37
- **Bug Fix** Amazon Q /dev: include telemetry for workspace usage when generating new files

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": "Amazon Q is your generative AI-powered assistant across the software development lifecycle.",
5-
"version": "1.30.0-SNAPSHOT",
5+
"version": "1.31.0-SNAPSHOT",
66
"extensionKind": [
77
"workspace"
88
],

packages/core/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,6 @@
411411
"@types/circular-dependency-plugin": "^5.0.8",
412412
"@types/cross-spawn": "^6.0.6",
413413
"@types/diff": "^5.0.7",
414-
"@types/fs-extra": "^9.0.11",
415414
"@types/glob": "^8.1.0",
416415
"@types/js-yaml": "^4.0.5",
417416
"@types/jsdom": "^21.1.6",
@@ -488,7 +487,6 @@
488487
"cross-fetch": "^4.0.0",
489488
"cross-spawn": "^7.0.3",
490489
"fast-json-patch": "^3.1.1",
491-
"fs-extra": "^10.0.1",
492490
"glob": "^10.3.10",
493491
"got": "^11.8.5",
494492
"highlight.js": "^11.9.0",

packages/core/package.nls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
"AWS.command.ec2.stopInstance": "Stop EC2 Instance",
130130
"AWS.command.ec2.rebootInstance": "Reboot EC2 Instance",
131131
"AWS.command.ec2.copyInstanceId": "Copy Instance Id",
132+
"AWS.command.ec2.viewLogs": "View EC2 Logs",
132133
"AWS.command.ecr.copyTagUri": "Copy Tag URI",
133134
"AWS.command.ecr.copyRepositoryUri": "Copy Repository URI",
134135
"AWS.command.ecr.createRepository": "Create Repository...",
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* Pulsating effect */
2+
@keyframes pulsate {
3+
0% {
4+
opacity: 0;
5+
}
6+
50% {
7+
opacity: 0.15;
8+
}
9+
100% {
10+
opacity: 0;
11+
}
12+
}
13+
14+
body[data-feature-viewdiffinchat='TREATMENT'] {
15+
.mynah-syntax-highlighter-copy-buttons button:nth-of-type(2)::after, /* Accept Diff and Insert At Cursor */
16+
.mynah-syntax-highlighter-copy-buttons button:nth-of-type(3)::after {
17+
/* View Diff */
18+
content: '';
19+
animation-name: pulsate;
20+
animation-duration: 1.5s;
21+
animation-timing-function: ease-in-out;
22+
animation-iteration-count: 2;
23+
transform: translate3d(0%, 0, 0);
24+
}
25+
}

packages/core/src/amazonq/webview/generators/webViewContent.ts

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,20 @@ import { AuthUtil } from '../../../codewhisperer/util/authUtil'
99
import { FeatureConfigProvider, FeatureContext, globals } from '../../../shared'
1010

1111
export class WebViewContentGenerator {
12+
private async generateFeatureConfigsData(): Promise<string> {
13+
let featureConfigs = new Map<string, FeatureContext>()
14+
try {
15+
await FeatureConfigProvider.instance.fetchFeatureConfigs()
16+
featureConfigs = FeatureConfigProvider.getFeatureConfigs()
17+
} catch (error) {
18+
// eslint-disable-next-line aws-toolkits/no-console-log
19+
console.error('Error fetching feature configs:', error)
20+
}
21+
22+
// Convert featureConfigs to a string suitable for data-features
23+
return JSON.stringify(Array.from(featureConfigs.entries()))
24+
}
25+
1226
public async generate(extensionURI: Uri, webView: Webview): Promise<string> {
1327
const entrypoint = process.env.WEBPACK_DEVELOPER_SERVER
1428
? 'http: localhost'
@@ -17,14 +31,25 @@ export class WebViewContentGenerator {
1731
const contentPolicy = `default-src ${entrypoint} data: blob: 'unsafe-inline';
1832
script-src ${entrypoint} filesystem: ws: wss: 'unsafe-inline';`
1933

34+
let featureDataAttributes = ''
35+
try {
36+
// Fetch and parse featureConfigs
37+
const featureConfigs = JSON.parse(await this.generateFeatureConfigsData())
38+
featureDataAttributes = featureConfigs
39+
.map((config: FeatureContext[]) => `data-feature-${config[1].name}="${config[1].variation}"`)
40+
.join(' ')
41+
} catch (error) {
42+
// eslint-disable-next-line aws-toolkits/no-console-log
43+
console.error('Error setting data-feature attribute for featureConfigs:', error)
44+
}
2045
return `<!DOCTYPE html>
2146
<html>
2247
<head>
2348
<meta http-equiv="Content-Security-Policy" content="${contentPolicy}">
24-
<title>Amazon Q (Preview)</title>
25-
${await this.generateJS(extensionURI, webView)}
49+
<title>Amazon Q (Preview)</title>
50+
${await this.generateJS(extensionURI, webView)}
2651
</head>
27-
<body>
52+
<body ${featureDataAttributes}>
2853
</body>
2954
</html>`
3055
}
@@ -41,29 +66,27 @@ export class WebViewContentGenerator {
4166
? Uri.parse(serverHostname).with({ path: `/${source}` })
4267
: webView.asWebviewUri(javascriptUri)
4368

44-
const cssEntrypoint = webView.asWebviewUri(
45-
Uri.joinPath(globals.context.extensionUri, 'resources', 'css', 'amazonq-webview.css')
46-
)
69+
const cssEntrypoints = [
70+
Uri.joinPath(globals.context.extensionUri, 'resources', 'css', 'amazonq-webview.css'),
71+
Uri.joinPath(globals.context.extensionUri, 'resources', 'css', 'amazonq-chat.css'),
72+
]
4773

48-
let featureConfigs = new Map<string, FeatureContext>()
49-
try {
50-
await FeatureConfigProvider.instance.fetchFeatureConfigs()
51-
featureConfigs = FeatureConfigProvider.getFeatureConfigs()
52-
} catch (error) {
53-
// eslint-disable-next-line aws-toolkits/no-console-log
54-
console.error('Error fetching feature configs:', error)
55-
}
74+
const cssEntrypointsMap = cssEntrypoints.map((item) => webView.asWebviewUri(item))
75+
const cssLinks = cssEntrypointsMap.map((uri) => `<link rel="stylesheet" href="${uri.toString()}">`).join('\n')
76+
77+
// Fetch featureConfigs and use it within the script
78+
const featureConfigsString = await this.generateFeatureConfigsData()
5679

5780
return `
5881
<script type="text/javascript" src="${javascriptEntrypoint.toString()}" defer onload="init()"></script>
59-
<link rel="stylesheet" href="${cssEntrypoint.toString()}">
82+
${cssLinks}
6083
<script type="text/javascript">
6184
const init = () => {
6285
createMynahUI(acquireVsCodeApi(), ${
6386
(await AuthUtil.instance.getChatAuthState()).amazonQ === 'connected'
64-
},${JSON.stringify(Array.from(featureConfigs.entries()))});
87+
},${featureConfigsString});
6588
}
66-
</script>
89+
</script>
6790
`
6891
}
6992
}

packages/core/src/awsService/cloudWatchLogs/changeLogSearch.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import { CancellationError } from '../../shared/utilities/timeoutUtils'
66
import { telemetry } from '../../shared/telemetry/telemetry'
77
import { showInputBox } from '../../shared/ui/inputPrompter'
8-
import { createURIFromArgs, isLogStreamUri, recordTelemetryFilter } from './cloudWatchLogsUtils'
8+
import { cwlUriSchema, isLogStreamUri, recordTelemetryFilter } from './cloudWatchLogsUtils'
99
import { prepareDocument } from './commands/searchLogGroup'
1010
import { getActiveDocumentUri } from './document/logDataDocumentProvider'
1111
import { CloudWatchLogsData, filterLogEventsFromUri, LogDataRegistry } from './registry/logDataRegistry'
@@ -98,7 +98,7 @@ export async function changeLogSearchParams(
9898
throw new CancellationError('user')
9999
}
100100

101-
const newUri = createURIFromArgs(newData.logGroupInfo, newData.parameters)
101+
const newUri = cwlUriSchema.form({ logGroupInfo: newData.logGroupInfo, parameters: newData.parameters })
102102
await prepareDocument(newUri, newData, registry)
103103
})
104104
}

0 commit comments

Comments
 (0)