Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
333 commits
Select commit Hold shift + click to select a range
23d90bd
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
cc69b77
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
46d94fd
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
674a2f8
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
49460b7
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
40e2165
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
2b35f02
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
9ebd4a8
Merge master into feature/cwltail
aws-toolkit-automation Oct 4, 2024
5189041
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
9d18732
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
4001012
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
de2ae73
feat(cwl): Initialize TailLogGroup command with Wizard (#5722)
keeganirby Oct 7, 2024
1a7420c
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
bb15ab5
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
2fd68f7
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
e231ec4
Merge master into feature/cwltail
aws-toolkit-automation Oct 7, 2024
10ab67e
Merge master into feature/cwltail
aws-toolkit-automation Oct 8, 2024
a1f42a4
Merge master into feature/cwltail
aws-toolkit-automation Oct 8, 2024
99de37c
Merge master into feature/cwltail
aws-toolkit-automation Oct 8, 2024
107edf2
Merge master into feature/cwltail
aws-toolkit-automation Oct 8, 2024
59df6fe
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
8158ddb
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
6f9bab9
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
8795366
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
2df480a
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
6106f59
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
5d9740e
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
5da1dae
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
99ad716
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
5af50a4
Merge master into feature/cwltail
aws-toolkit-automation Oct 9, 2024
38eb9c8
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
64c4e40
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
c570e6e
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
faccbe1
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
ba56c50
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
6e0b5c0
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
37d4db0
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
48556c3
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
e431c74
Merge master into feature/cwltail
aws-toolkit-automation Oct 10, 2024
60e578a
Merge master into feature/cwltail
aws-toolkit-automation Oct 11, 2024
8c9d594
Merge master into feature/cwltail
aws-toolkit-automation Oct 11, 2024
83709ee
Merge master into feature/cwltail
aws-toolkit-automation Oct 11, 2024
79f7e55
Merge master into feature/cwltail
aws-toolkit-automation Oct 11, 2024
9815c8b
Merge master into feature/cwltail
aws-toolkit-automation Oct 14, 2024
425d0e6
Merge master into feature/cwltail
aws-toolkit-automation Oct 14, 2024
645acac
Merge master into feature/cwltail
aws-toolkit-automation Oct 14, 2024
fc71453
Merge master into feature/cwltail
aws-toolkit-automation Oct 14, 2024
b071ef1
Merge master into feature/cwltail
aws-toolkit-automation Oct 14, 2024
78cb83c
feat(cwl): Create LiveTailSession object and registry. Adds MaxLine c…
keeganirby Oct 15, 2024
6e637d4
Merge master into feature/cwltail
aws-toolkit-automation Oct 15, 2024
7b1be4f
Merge master into feature/cwltail
aws-toolkit-automation Oct 15, 2024
b6472eb
Merge master into feature/cwltail
aws-toolkit-automation Oct 15, 2024
004d6e7
Merge master into feature/cwltail
aws-toolkit-automation Oct 15, 2024
ccf6033
refactor(cwl): lift TailLogGroupWizard into its own class #5785
keeganirby Oct 15, 2024
5f74184
Merge master into feature/cwltail
aws-toolkit-automation Oct 15, 2024
56b7efd
refactor(cwl): change LiveTailRegistry to standard map #5789
keeganirby Oct 15, 2024
a292bc2
Merge master into feature/cwltail
aws-toolkit-automation Oct 15, 2024
b11d626
Merge master into feature/cwltail
aws-toolkit-automation Oct 16, 2024
b4c1852
Merge master into feature/cwltail
aws-toolkit-automation Oct 16, 2024
3f3210f
Merge master into feature/cwltail
aws-toolkit-automation Oct 16, 2024
b91328e
Merge master into feature/cwltail
aws-toolkit-automation Oct 16, 2024
83f490b
Merge master into feature/cwltail
aws-toolkit-automation Oct 16, 2024
6a138d4
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
6a578aa
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
8a8c25b
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
f5adc14
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
95dfdc9
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
3347d78
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
1f018a3
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
9ec805a
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
4f8495c
Merge master into feature/cwltail
aws-toolkit-automation Oct 17, 2024
cba2aaa
Merge master into feature/cwltail
aws-toolkit-automation Oct 18, 2024
c0460da
Merge master into feature/cwltail
aws-toolkit-automation Oct 19, 2024
405f456
feat(cwl): initialize tailLogGroup command. starts stream and prints …
keeganirby Oct 21, 2024
ab99b92
Merge master into feature/cwltail
aws-toolkit-automation Oct 21, 2024
1ecacba
Merge master into feature/cwltail
aws-toolkit-automation Oct 21, 2024
d885a99
Merge master into feature/cwltail
aws-toolkit-automation Oct 21, 2024
0806355
Merge master into feature/cwltail
aws-toolkit-automation Oct 21, 2024
01b7404
Merge master into feature/cwltail
aws-toolkit-automation Oct 22, 2024
5ca4629
refactor(cwl): remove LiveTail setting, re-use existing CWL setting #…
keeganirby Oct 22, 2024
3ff2704
Merge master into feature/cwltail
aws-toolkit-automation Oct 22, 2024
88e0128
Merge master into feature/cwltail
aws-toolkit-automation Oct 23, 2024
0b1ab23
Merge master into feature/cwltail
aws-toolkit-automation Oct 23, 2024
7857223
Merge master into feature/cwltail
aws-toolkit-automation Oct 23, 2024
d1df004
Merge master into feature/cwltail
aws-toolkit-automation Oct 23, 2024
6922d3d
Merge master into feature/cwltail
aws-toolkit-automation Oct 23, 2024
07f19a6
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
64ecf84
feat(cwl): Add line trimming to LiveTail when limit is reached (#5837)
keeganirby Oct 24, 2024
52823c0
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
76ed8fb
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
198dee5
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
bad4332
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
86015ae
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
343ddb8
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
3415508
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
5ff23d3
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
e7f1617
Merge master into feature/cwltail
aws-toolkit-automation Oct 24, 2024
acbb1cb
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
95bd7c7
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
e0f3841
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
80f4e9c
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
ce69239
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
6fce76c
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
12e0eb0
Merge master into feature/cwltail
aws-toolkit-automation Oct 25, 2024
5de67b5
feat(cwl): Support autoscrolling live tail session's visible editors …
keeganirby Oct 28, 2024
4db9eca
Merge master into feature/cwltail
aws-toolkit-automation Oct 28, 2024
ab57eed
Merge master into feature/cwltail
aws-toolkit-automation Oct 28, 2024
b357b53
Merge master into feature/cwltail
aws-toolkit-automation Oct 28, 2024
7af70b3
Merge master into feature/cwltail
aws-toolkit-automation Oct 29, 2024
9e0e1d7
Merge master into feature/cwltail
aws-toolkit-automation Oct 29, 2024
ec80fe9
Merge master into feature/cwltail
aws-toolkit-automation Oct 29, 2024
f46a956
Merge master into feature/cwltail
aws-toolkit-automation Oct 29, 2024
63642c8
Merge master into feature/cwltail
aws-toolkit-automation Oct 29, 2024
090bfc9
Merge remote-tracking branch 'upstream/master' into HEAD
Nov 5, 2024
bb6c5c1
Merge https://github.com/aws/aws-toolkit-vscode into HEAD
Nov 6, 2024
66b2f46
Merge pull request #5889 from aws/autoMerge/feature/cwltail
jpinkney-aws Nov 6, 2024
b364573
Merge master into feature/cwltail
aws-toolkit-automation Nov 6, 2024
1088dd3
Merge master into feature/cwltail
aws-toolkit-automation Nov 6, 2024
70f89bb
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
ad4e8ac
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
cc4f14b
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
3ada4a4
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
bf1f4a2
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
069c600
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
50cbeee
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
ec63b88
Merge master into feature/cwltail
aws-toolkit-automation Nov 7, 2024
a5a0aea
feat(cwl): LiveTail statusbar #5938
keeganirby Nov 8, 2024
862fe23
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
396c54a
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
151ae82
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
cc1ae19
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
084b1bb
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
1030450
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
21b4e7c
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
e6645d4
feat(cwl): "clear screen", "stop session" actions #5958
keeganirby Nov 8, 2024
c273921
Merge master into feature/cwltail
aws-toolkit-automation Nov 8, 2024
66dc2e7
Merge master into feature/cwltail
aws-toolkit-automation Nov 9, 2024
2041558
Merge master into feature/cwltail
aws-toolkit-automation Nov 9, 2024
f921855
Merge master into feature/cwltail
aws-toolkit-automation Nov 11, 2024
003aed1
Merge master into feature/cwltail
aws-toolkit-automation Nov 11, 2024
07c91c6
Merge master into feature/cwltail
aws-toolkit-automation Nov 11, 2024
ca25202
fix(cwl): remove unnecessary catch and rethrow for pre-stream (#5976)
keeganirby Nov 11, 2024
2f89a22
Merge master into feature/cwltail
aws-toolkit-automation Nov 11, 2024
494a229
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
ce0d8be
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
645b3ea
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
78b4edf
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
54b0f2f
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
47595e6
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
5b80409
fix(cwl): LiveTail fails to start when clicking with Play next to a L…
keeganirby Nov 12, 2024
7b4477e
Merge master into feature/cwltail
aws-toolkit-automation Nov 12, 2024
ed8802f
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
1b5b3d2
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
c31e991
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
479284c
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
a8bb7a1
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
22eefef
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
30d9217
fix(cwl): pass credentials to LiveTail client #5993
keeganirby Nov 13, 2024
12ba985
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
3576364
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
dc6a85a
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
8f6ca43
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
d56a8ac
fix(cwl): set LogEventFilter when constructing LiveTailSession #6008
keeganirby Nov 13, 2024
7c80452
Merge master into feature/cwltail
aws-toolkit-automation Nov 13, 2024
97473f1
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
4ac9180
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
d7f4be6
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
3a4785e
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
500f94b
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
a5df7b7
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
302915f
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
5dcaa9e
Merge master into feature/cwltail
aws-toolkit-automation Nov 14, 2024
daf28a7
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
ed470ea
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
39219ad
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
9f54b8b
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
1d332a9
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
088b22a
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
d90cd50
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
faff660
Merge master into feature/cwltail
aws-toolkit-automation Nov 15, 2024
14073e2
Merge master into feature/cwltail
aws-toolkit-automation Nov 16, 2024
eb064ff
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
01dc7a8
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
ec4c7b3
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
37ca5c9
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
d8b4b26
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
228031c
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
f2dfc68
Merge master into feature/cwltail
aws-toolkit-automation Nov 18, 2024
007b100
Merge master into feature/cwltail
aws-toolkit-automation Nov 19, 2024
1e89e2a
Merge master into feature/cwltail
aws-toolkit-automation Nov 19, 2024
819303b
Merge master into feature/cwltail
aws-toolkit-automation Nov 19, 2024
30580b4
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
1e3fdce
feat(cwl): Emit telemetry when starting and stopping liveTail session…
keeganirby Nov 20, 2024
e0506f3
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
933c8de
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
2936445
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
b5e719f
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
5be294e
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
adac49d
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
833cc7f
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
aceebe1
fix(cwl): Hide LiveTail CodeLenses and display info message when clos…
keeganirby Nov 20, 2024
443990e
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
4b52b87
Merge master into feature/cwltail
aws-toolkit-automation Nov 20, 2024
d42a6bf
Merge master into feature/cwltail
aws-toolkit-automation Nov 21, 2024
31bb729
Merge master into feature/cwltail
aws-toolkit-automation Nov 21, 2024
28010bb
Merge master into feature/cwltail
aws-toolkit-automation Nov 21, 2024
2778ecf
Merge master into feature/cwltail
aws-toolkit-automation Nov 21, 2024
239c09d
Merge master into feature/cwltail
aws-toolkit-automation Nov 21, 2024
3e9c4c2
Merge master into feature/cwltail
aws-toolkit-automation Nov 21, 2024
63b1cce
fix(cwl): Change wording in menus, add info message when opening runn…
keeganirby Nov 21, 2024
f305e79
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
b30ab9b
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
c082e5e
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
ee562be
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
b2c7239
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
d70d226
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
7482107
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
a6b5227
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
8cd2654
Merge master into feature/cwltail
aws-toolkit-automation Nov 22, 2024
f2dfc23
Merge master into feature/cwltail
aws-toolkit-automation Nov 23, 2024
a5fdc86
Merge master into feature/cwltail
aws-toolkit-automation Nov 25, 2024
06b390d
fix(cwl): Dispose event listeners when command exits (#6095)
keeganirby Nov 26, 2024
e5a24f0
Merge master into feature/cwltail
aws-toolkit-automation Nov 26, 2024
d0d456d
Merge master into feature/cwltail
aws-toolkit-automation Nov 26, 2024
433a8a8
Merge master into feature/cwltail
aws-toolkit-automation Nov 26, 2024
60737da
Merge master into feature/cwltail
aws-toolkit-automation Nov 26, 2024
e34fe54
Merge master into feature/cwltail
aws-toolkit-automation Nov 26, 2024
bea6cd0
Merge master into feature/cwltail
aws-toolkit-automation Nov 27, 2024
6b63f51
Merge master into feature/cwltail
aws-toolkit-automation Nov 27, 2024
45ee6cd
Merge master into feature/cwltail
aws-toolkit-automation Nov 27, 2024
93381f1
Merge master into feature/cwltail
aws-toolkit-automation Nov 27, 2024
079992e
Merge master into feature/cwltail
aws-toolkit-automation Nov 27, 2024
b2f99f6
Merge master into feature/cwltail
aws-toolkit-automation Nov 29, 2024
08eb59e
test(cwl): Add unit test for starting and stopping LiveTailSession ob…
keeganirby Dec 4, 2024
ed15bbc
telemetry(cwl): LiveTail metrics
keeganirby Dec 7, 2024
0ba37d8
Merge 'public/master' into feature/cwltail
justinmk3 Dec 9, 2024
9ab2df0
lint
justinmk3 Dec 9, 2024
8b0bbc9
Merge master into feature/cwltail
justinmk3 Dec 9, 2024
7975e0e
Merge master into feature/cwltail
aws-toolkit-automation Dec 9, 2024
12f743c
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
694e4d5
docs(cwl): changelog #6200
keeganirby Dec 10, 2024
91cd611
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
5a23c31
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
f9a003e
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
63d2a08
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
0e91a53
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
04b8d25
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
9d293fe
Merge master into feature/cwltail
aws-toolkit-automation Dec 10, 2024
e357c2a
Merge master into feature/cwltail
aws-toolkit-automation Dec 11, 2024
97f1dbe
Merge master into feature/cwltail
aws-toolkit-automation Dec 11, 2024
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
912 changes: 912 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,7 @@
"dependencies": {
"@amzn/amazon-q-developer-streaming-client": "file:../../src.gen/@amzn/amazon-q-developer-streaming-client",
"@amzn/codewhisperer-streaming": "file:../../src.gen/@amzn/codewhisperer-streaming",
"@aws-sdk/client-cloudwatch-logs": "^3.666.0",
"@aws-sdk/client-cloudformation": "^3.667.0",
"@aws-sdk/client-cognito-identity": "^3.637.0",
"@aws-sdk/client-lambda": "^3.637.0",
Expand Down
3 changes: 2 additions & 1 deletion packages/core/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
"AWS.command.downloadSchemaItemCode": "Download Code Bindings",
"AWS.command.viewLogs": "View Logs",
"AWS.command.cloudWatchLogs.searchLogGroup": "Search Log Group",
"AWS.command.cloudWatchLogs.tailLogGroup": "Tail Log Group",
"AWS.command.sam.newTemplate": "Create new SAM Template",
"AWS.command.cloudFormation.newTemplate": "Create new CloudFormation Template",
"AWS.command.quickStart": "View Quick Start",
Expand Down Expand Up @@ -253,7 +254,7 @@
"AWS.appcomposer.explorerTitle": "Infrastructure Composer",
"AWS.cdk.explorerTitle": "CDK",
"AWS.codecatalyst.explorerTitle": "CodeCatalyst",
"AWS.cwl.limit.desc": "Maximum amount of log entries pulled per request from CloudWatch Logs (max 10000)",
"AWS.cwl.limit.desc": "Maximum amount of log entries pulled per request from CloudWatch Logs. For LiveTail, when the limit is reached, the oldest events will be removed to accomodate new events. (max 10000)",
"AWS.samcli.deploy.bucket.recentlyUsed": "Buckets recently used for SAM deployments",
"AWS.submenu.amazonqEditorContextSubmenu.title": "Amazon Q",
"AWS.submenu.auth.title": "Authentication",
Expand Down
42 changes: 40 additions & 2 deletions packages/core/src/awsService/cloudWatchLogs/activation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/

import * as vscode from 'vscode'
import { CLOUDWATCH_LOGS_SCHEME } from '../../shared/constants'
import { cloudwatchLogsLiveTailScheme, CLOUDWATCH_LOGS_SCHEME } from '../../shared/constants'
import { Settings } from '../../shared/settings'
import { addLogEvents } from './commands/addLogEvents'
import { copyLogResource } from './commands/copyLogResource'
Expand All @@ -19,16 +19,22 @@ import { searchLogGroup } from './commands/searchLogGroup'
import { changeLogSearchParams } from './changeLogSearch'
import { CloudWatchLogsNode } from './explorer/cloudWatchLogsNode'
import { loadAndOpenInitialLogStreamFile, LogStreamCodeLensProvider } from './document/logStreamsCodeLensProvider'
import { clearDocument, closeSession, tailLogGroup } from './commands/tailLogGroup'
import { LiveTailDocumentProvider } from './document/liveTailDocumentProvider'
import { LiveTailSessionRegistry } from './registry/liveTailSessionRegistry'
import { DeployedResourceNode } from '../appBuilder/explorer/nodes/deployedNode'
import { isTreeNode } from '../../shared/treeview/resourceTreeDataProvider'
import { getLogger } from '../../shared/logger/logger'
import { ToolkitError } from '../../shared'
import { LiveTailCodeLensProvider } from './document/liveTailCodeLensProvider'

export async function activate(context: vscode.ExtensionContext, configuration: Settings): Promise<void> {
const registry = LogDataRegistry.instance
const liveTailRegistry = LiveTailSessionRegistry.instance

const documentProvider = new LogDataDocumentProvider(registry)

const liveTailDocumentProvider = new LiveTailDocumentProvider()
const liveTailCodeLensProvider = new LiveTailCodeLensProvider(liveTailRegistry)
context.subscriptions.push(
vscode.languages.registerCodeLensProvider(
{
Expand All @@ -43,6 +49,20 @@ export async function activate(context: vscode.ExtensionContext, configuration:
vscode.workspace.registerTextDocumentContentProvider(CLOUDWATCH_LOGS_SCHEME, documentProvider)
)

context.subscriptions.push(
vscode.languages.registerCodeLensProvider(
{
language: 'log',
scheme: cloudwatchLogsLiveTailScheme,
},
liveTailCodeLensProvider
)
)

context.subscriptions.push(
vscode.workspace.registerTextDocumentContentProvider(cloudwatchLogsLiveTailScheme, liveTailDocumentProvider)
)

context.subscriptions.push(
vscode.workspace.onDidCloseTextDocument((doc) => {
if (doc.isClosed && doc.uri.scheme === CLOUDWATCH_LOGS_SCHEME) {
Expand Down Expand Up @@ -95,6 +115,23 @@ export async function activate(context: vscode.ExtensionContext, configuration:

Commands.register('aws.cwl.changeTimeFilter', async () => changeLogSearchParams(registry, 'timeFilter')),

Commands.register('aws.cwl.tailLogGroup', async (node: LogGroupNode | CloudWatchLogsNode) => {
const logGroupInfo =
node instanceof LogGroupNode
? { regionName: node.regionCode, groupName: node.logGroup.logGroupName! }
: undefined
const source = node ? (logGroupInfo ? 'ExplorerLogGroupNode' : 'ExplorerServiceNode') : 'Command'
await tailLogGroup(liveTailRegistry, source, liveTailCodeLensProvider, logGroupInfo)
}),

Commands.register('aws.cwl.stopTailingLogGroup', async (document: vscode.TextDocument, source: string) => {
closeSession(document.uri, liveTailRegistry, source, liveTailCodeLensProvider)
}),

Commands.register('aws.cwl.clearDocument', async (document: vscode.TextDocument) => {
await clearDocument(document)
}),

Commands.register('aws.appBuilder.searchLogs', async (node: DeployedResourceNode) => {
try {
const logGroupInfo = isTreeNode(node)
Expand All @@ -112,6 +149,7 @@ export async function activate(context: vscode.ExtensionContext, configuration:
})
)
}

function getFunctionLogGroupName(configuration: any) {
const logGroupPrefix = '/aws/lambda/'
return configuration.logGroupName || logGroupPrefix + configuration.FunctionName
Expand Down
283 changes: 283 additions & 0 deletions packages/core/src/awsService/cloudWatchLogs/commands/tailLogGroup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
/*!
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/

import * as vscode from 'vscode'
import { telemetry } from '../../../shared/telemetry/telemetry'
import { TailLogGroupWizard } from '../wizard/tailLogGroupWizard'
import { CancellationError } from '../../../shared/utilities/timeoutUtils'
import { LiveTailSession, LiveTailSessionConfiguration } from '../registry/liveTailSession'
import { LiveTailSessionRegistry } from '../registry/liveTailSessionRegistry'
import {
LiveTailSessionLogEvent,
LiveTailSessionUpdate,
StartLiveTailResponseStream,
} from '@aws-sdk/client-cloudwatch-logs'
import { getLogger, globals, ToolkitError } from '../../../shared'
import { uriToKey } from '../cloudWatchLogsUtils'
import { LiveTailCodeLensProvider } from '../document/liveTailCodeLensProvider'

export async function tailLogGroup(
registry: LiveTailSessionRegistry,
source: string,
codeLensProvider: LiveTailCodeLensProvider,
logData?: { regionName: string; groupName: string }
): Promise<void> {
await telemetry.cloudwatchlogs_startLiveTail.run(async (span) => {
const wizard = new TailLogGroupWizard(logData)
const wizardResponse = await wizard.run()
if (!wizardResponse) {
throw new CancellationError('user')
}
if (wizardResponse.logStreamFilter.type === 'menu' || wizardResponse.logStreamFilter.type === undefined) {
// logstream filter wizard uses type to determine which submenu to show. 'menu' is set when no type is selected
// and to show the 'menu' of selecting a type. This should not be reachable due to the picker logic, but validating in case.
throw new ToolkitError(`Invalid Log Stream filter type: ${wizardResponse.logStreamFilter.type}`)
}
const awsCredentials = await globals.awsContext.getCredentials()
if (awsCredentials === undefined) {
throw new ToolkitError('Failed to start LiveTail session: credentials are undefined.')
}
const liveTailSessionConfig: LiveTailSessionConfiguration = {
logGroupArn: wizardResponse.regionLogGroupSubmenuResponse.data,
logStreamFilter: wizardResponse.logStreamFilter,
logEventFilterPattern: wizardResponse.filterPattern,
region: wizardResponse.regionLogGroupSubmenuResponse.region,
awsCredentials: awsCredentials,
}
const session = new LiveTailSession(liveTailSessionConfig)
if (registry.has(uriToKey(session.uri))) {
await vscode.window.showTextDocument(session.uri, { preview: false })
void vscode.window.showInformationMessage(`Switching editor to an existing session that matches request.`)
span.record({
result: 'Succeeded',
sessionAlreadyStarted: true,
source: source,
})
return
}
const document = await prepareDocument(session)

const disposables: vscode.Disposable[] = []
disposables.push(hideShowStatusBarItemsOnActiveEditor(session, document))
disposables.push(closeSessionWhenAllEditorsClosed(session, registry, document, codeLensProvider))

try {
const stream = await session.startLiveTailSession()
registry.set(uriToKey(session.uri), session)
codeLensProvider.refresh()
getLogger().info(`LiveTail session started: ${uriToKey(session.uri)}`)
span.record({
source: source,
result: 'Succeeded',
sessionAlreadyStarted: false,
hasTextFilter: Boolean(wizardResponse.filterPattern),
filterType: wizardResponse.logStreamFilter.type,
})
await handleSessionStream(stream, document, session)
} finally {
disposables.forEach((disposable) => disposable.dispose())
}
})
}

export function closeSession(
sessionUri: vscode.Uri,
registry: LiveTailSessionRegistry,
source: string,
codeLensProvider: LiveTailCodeLensProvider
) {
telemetry.cloudwatchlogs_stopLiveTail.run((span) => {
const session = registry.get(uriToKey(sessionUri))
if (session === undefined) {
throw new ToolkitError(`No LiveTail session found for URI: ${uriToKey(sessionUri)}`)
}
session.stopLiveTailSession()
registry.delete(uriToKey(sessionUri))
void vscode.window.showInformationMessage(`Stopped LiveTail session: ${uriToKey(sessionUri)}`)
codeLensProvider.refresh()
span.record({
result: 'Succeeded',
source: source,
duration: session.getLiveTailSessionDuration(),
})
})
}

export async function clearDocument(textDocument: vscode.TextDocument) {
const edit = new vscode.WorkspaceEdit()
const startPosition = new vscode.Position(0, 0)
const endPosition = new vscode.Position(textDocument.lineCount, 0)
edit.delete(textDocument.uri, new vscode.Range(startPosition, endPosition))
await vscode.workspace.applyEdit(edit)
}

async function prepareDocument(session: LiveTailSession): Promise<vscode.TextDocument> {
const textDocument = await vscode.workspace.openTextDocument(session.uri)
await clearDocument(textDocument)
await vscode.window.showTextDocument(textDocument, { preview: false })
await vscode.languages.setTextDocumentLanguage(textDocument, 'log')
session.showStatusBarItem(true)
return textDocument
}

async function handleSessionStream(
stream: AsyncIterable<StartLiveTailResponseStream>,
document: vscode.TextDocument,
session: LiveTailSession
) {
try {
for await (const event of stream) {
if (event.sessionUpdate !== undefined && event.sessionUpdate.sessionResults !== undefined) {
const formattedLogEvents = event.sessionUpdate.sessionResults.map<string>((logEvent) =>
formatLogEvent(logEvent)
)
if (formattedLogEvents.length !== 0) {
// Determine should scroll before adding new lines to doc because adding large
// amount of new lines can push bottom of file out of view before scrolling.
const editorsToScroll = getTextEditorsToScroll(document)
await updateTextDocumentWithNewLogEvents(formattedLogEvents, document, session.maxLines)
editorsToScroll.forEach(scrollTextEditorToBottom)
}
session.eventRate = eventRate(event.sessionUpdate)
session.isSampled = isSampled(event.sessionUpdate)
}
}
} catch (e) {
if (session.isAborted) {
// Expected case. User action cancelled stream (CodeLens, Close Editor, etc.).
// AbortSignal interrupts the LiveTail stream, causing error to be thrown here.
// Can assume that stopLiveTailSession() has already been called - AbortSignal is only
// exposed through that method.
getLogger().info(`LiveTail session stopped: ${uriToKey(session.uri)}`)
} else {
// Unexpected exception.
session.stopLiveTailSession()
throw ToolkitError.chain(
e,
`Unexpected on-stream exception while tailing session: ${session.uri.toString()}`
)
}
}
}

function formatLogEvent(logEvent: LiveTailSessionLogEvent): string {
if (!logEvent.timestamp || !logEvent.message) {
return ''
}
const timestamp = new Date(logEvent.timestamp).toLocaleTimeString('en', {
timeStyle: 'medium',
hour12: false,
timeZone: 'UTC',
})
let line = timestamp.concat('\t', logEvent.message)
if (!line.endsWith('\n')) {
line = line.concat('\n')
}
return line
}

// Auto scroll visible LiveTail session editors if the end-of-file is in view.
// This allows for newly added log events to stay in view.
function getTextEditorsToScroll(document: vscode.TextDocument): vscode.TextEditor[] {
return vscode.window.visibleTextEditors.filter((editor) => {
if (editor.document !== document) {
return false
}
return editor.visibleRanges[0].contains(new vscode.Position(document.lineCount - 1, 0))
})
}

function scrollTextEditorToBottom(editor: vscode.TextEditor) {
const position = new vscode.Position(Math.max(editor.document.lineCount - 2, 0), 0)
editor.revealRange(new vscode.Range(position, position), vscode.TextEditorRevealType.Default)
}

async function updateTextDocumentWithNewLogEvents(
formattedLogEvents: string[],
document: vscode.TextDocument,
maxLines: number
) {
const edit = new vscode.WorkspaceEdit()
formattedLogEvents.forEach((formattedLogEvent) =>
edit.insert(document.uri, new vscode.Position(document.lineCount, 0), formattedLogEvent)
)
if (document.lineCount + formattedLogEvents.length > maxLines) {
trimOldestLines(formattedLogEvents.length, maxLines, document, edit)
}
await vscode.workspace.applyEdit(edit)
}

function trimOldestLines(
numNewLines: number,
maxLines: number,
document: vscode.TextDocument,
edit: vscode.WorkspaceEdit
) {
const numLinesToTrim = document.lineCount + numNewLines - maxLines
const startPosition = new vscode.Position(0, 0)
const endPosition = new vscode.Position(numLinesToTrim, 0)
const range = new vscode.Range(startPosition, endPosition)
edit.delete(document.uri, range)
}

function isSampled(event: LiveTailSessionUpdate): boolean {
return event.sessionMetadata === undefined || event.sessionMetadata.sampled === undefined
? false
: event.sessionMetadata.sampled
}

function eventRate(event: LiveTailSessionUpdate): number {
return event.sessionResults === undefined ? 0 : event.sessionResults.length
}

function hideShowStatusBarItemsOnActiveEditor(
session: LiveTailSession,
document: vscode.TextDocument
): vscode.Disposable {
return vscode.window.onDidChangeActiveTextEditor((editor) => {
session.showStatusBarItem(editor?.document === document)
})
}

/**
* The LiveTail session should be automatically closed if the user does not have the session's
* document in any Tab in their editor.
*
* `onDidCloseTextDocument` doesn't work for our case because the tailLogGroup command will keep the stream
* writing to the doc even when all its tabs/editors are closed, seemingly keeping the doc 'open'.
* Also there is no guarantee that this event fires when an editor tab is closed
*
* `onDidChangeVisibleTextEditors` returns editors that the user can see its contents. An editor that is open, but hidden
* from view, will not be returned. Meaning a Tab that is created (shown in top bar), but not open, will not be returned. Even if
* the tab isn't visible, we want to continue writing to the doc, and keep the session alive.
*/
function closeSessionWhenAllEditorsClosed(
session: LiveTailSession,
registry: LiveTailSessionRegistry,
document: vscode.TextDocument,
codeLensProvider: LiveTailCodeLensProvider
): vscode.Disposable {
return vscode.window.tabGroups.onDidChangeTabs((tabEvent) => {
const isOpen = isLiveTailSessionOpenInAnyTab(session)
if (!isOpen) {
closeSession(session.uri, registry, 'ClosedEditors', codeLensProvider)
void clearDocument(document)
}
})
}

function isLiveTailSessionOpenInAnyTab(liveTailSession: LiveTailSession) {
let isOpen = false
vscode.window.tabGroups.all.forEach(async (tabGroup) => {
tabGroup.tabs.forEach((tab) => {
if (tab.input instanceof vscode.TabInputText) {
if (liveTailSession.uri.toString() === tab.input.uri.toString()) {
isOpen = true
}
}
})
})
return isOpen
}
Loading
Loading