@aws/nx-plugin 1.0.0-rc.80 → 1.0.0-rc.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE-THIRD-PARTY +59 -33
  2. package/migrations.json +21 -21
  3. package/package.json +5 -5
  4. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +1 -1
  5. package/src/infra/app/__snapshots__/generator.spec.ts.snap +3 -3
  6. package/src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/migration.js.map +1 -0
  7. package/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/migration.js.map +1 -0
  8. package/src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/migration.js.map +1 -0
  9. package/src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/migration.js.map +1 -0
  10. package/src/preset/__snapshots__/generator.spec.ts.snap +2 -2
  11. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +4 -4
  12. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +5 -5
  13. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +2 -2
  14. package/src/py/agent/a2a-connection/generator.d.ts +1 -1
  15. package/src/py/agent/gateway-connection/generator.d.ts +1 -1
  16. package/src/py/agent/mcp-connection/generator.d.ts +1 -1
  17. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  18. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
  19. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  20. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +4 -4
  21. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2 -2
  22. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +5 -5
  23. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +8 -8
  24. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
  25. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +2 -2
  26. package/src/ts/astro-docs/generator.d.ts +2 -0
  27. package/src/ts/astro-docs/generator.js +7 -0
  28. package/src/ts/astro-docs/generator.js.map +1 -1
  29. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
  30. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  31. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  32. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  33. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +4 -4
  34. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +25 -25
  35. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
  36. package/src/utils/versions.d.ts +60 -59
  37. package/src/utils/versions.js +59 -58
  38. package/src/utils/versions.js.map +1 -1
  39. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +0 -1
  40. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +0 -1
  41. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +0 -1
  42. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js.map +0 -1
  43. /package/src/migrations/{latest/remove-mcp-inspector-license-exceptions → v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions}/metadata.json +0 -0
  44. /package/src/migrations/{latest/remove-mcp-inspector-license-exceptions → v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions}/migration.d.ts +0 -0
  45. /package/src/migrations/{latest/remove-mcp-inspector-license-exceptions → v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions}/migration.js +0 -0
  46. /package/src/migrations/{latest/apt-security-updates-in-container-images → v1.0.0-rc.73/0002-apt-security-updates-in-container-images}/__snapshots__/migration.spec.ts.snap +0 -0
  47. /package/src/migrations/{latest/apt-security-updates-in-container-images → v1.0.0-rc.73/0002-apt-security-updates-in-container-images}/metadata.json +0 -0
  48. /package/src/migrations/{latest/apt-security-updates-in-container-images → v1.0.0-rc.73/0002-apt-security-updates-in-container-images}/migration.d.ts +0 -0
  49. /package/src/migrations/{latest/apt-security-updates-in-container-images → v1.0.0-rc.73/0002-apt-security-updates-in-container-images}/migration.js +0 -0
  50. /package/src/migrations/{latest/py-agent-session-id-middleware-extraction → v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction}/metadata.json +0 -0
  51. /package/src/migrations/{latest/py-agent-session-id-middleware-extraction → v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction}/migration.d.ts +0 -0
  52. /package/src/migrations/{latest/py-agent-session-id-middleware-extraction → v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction}/migration.js +0 -0
  53. /package/src/migrations/{latest/ts-agent-session-id-middleware-extraction → v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction}/metadata.json +0 -0
  54. /package/src/migrations/{latest/ts-agent-session-id-middleware-extraction → v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction}/migration.d.ts +0 -0
  55. /package/src/migrations/{latest/ts-agent-session-id-middleware-extraction → v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction}/migration.js +0 -0
@@ -217,7 +217,7 @@ OTHER DEALINGS IN THE SOFTWARE.
217
217
 
218
218
  ---
219
219
 
220
- The following software may be included in this product: @astral-sh/ruff-wasm-nodejs (0.16.3)
220
+ The following software may be included in this product: @astral-sh/ruff-wasm-nodejs (0.16.4)
221
221
  This software contains the following license and notice below:
222
222
 
223
223
  MIT License
@@ -7558,7 +7558,7 @@ SOFTWARE
7558
7558
 
7559
7559
  ---
7560
7560
 
7561
- The following software may be included in this product: @verdaccio/auth (8.1.1)
7561
+ The following software may be included in this product: @verdaccio/auth (8.1.2)
7562
7562
  This software contains the following license and notice below:
7563
7563
 
7564
7564
  MIT License
@@ -7585,7 +7585,7 @@ SOFTWARE.
7585
7585
 
7586
7586
  ---
7587
7587
 
7588
- The following software may be included in this product: @verdaccio/config (8.2.1)
7588
+ The following software may be included in this product: @verdaccio/config (8.2.2)
7589
7589
  This software contains the following license and notice below:
7590
7590
 
7591
7591
  MIT License
@@ -7612,7 +7612,7 @@ SOFTWARE.
7612
7612
 
7613
7613
  ---
7614
7614
 
7615
- The following software may be included in this product: @verdaccio/core (8.2.1)
7615
+ The following software may be included in this product: @verdaccio/core (8.2.2)
7616
7616
  This software contains the following license and notice below:
7617
7617
 
7618
7618
  MIT License
@@ -7666,7 +7666,7 @@ SOFTWARE.
7666
7666
 
7667
7667
  ---
7668
7668
 
7669
- The following software may be included in this product: @verdaccio/hooks (8.1.2)
7669
+ The following software may be included in this product: @verdaccio/hooks (8.1.3)
7670
7670
  This software contains the following license and notice below:
7671
7671
 
7672
7672
  MIT License
@@ -7693,7 +7693,7 @@ SOFTWARE.
7693
7693
 
7694
7694
  ---
7695
7695
 
7696
- The following software may be included in this product: @verdaccio/loaders (8.1.1)
7696
+ The following software may be included in this product: @verdaccio/loaders (8.1.2)
7697
7697
  This software contains the following license and notice below:
7698
7698
 
7699
7699
  MIT License
@@ -7720,7 +7720,7 @@ SOFTWARE.
7720
7720
 
7721
7721
  ---
7722
7722
 
7723
- The following software may be included in this product: @verdaccio/local-storage-legacy (11.4.1)
7723
+ The following software may be included in this product: @verdaccio/local-storage-legacy (11.4.2)
7724
7724
  This software contains the following license and notice below:
7725
7725
 
7726
7726
  MIT License
@@ -7747,7 +7747,7 @@ SOFTWARE.
7747
7747
 
7748
7748
  ---
7749
7749
 
7750
- The following software may be included in this product: @verdaccio/logger (8.1.1)
7750
+ The following software may be included in this product: @verdaccio/logger (8.1.2)
7751
7751
  This software contains the following license and notice below:
7752
7752
 
7753
7753
  MIT License
@@ -7774,7 +7774,7 @@ SOFTWARE.
7774
7774
 
7775
7775
  ---
7776
7776
 
7777
- The following software may be included in this product: @verdaccio/logger-commons (8.1.1)
7777
+ The following software may be included in this product: @verdaccio/logger-commons (8.1.2)
7778
7778
  This software contains the following license and notice below:
7779
7779
 
7780
7780
  MIT License
@@ -7828,7 +7828,7 @@ SOFTWARE.
7828
7828
 
7829
7829
  ---
7830
7830
 
7831
- The following software may be included in this product: @verdaccio/middleware (8.1.1)
7831
+ The following software may be included in this product: @verdaccio/middleware (8.1.2)
7832
7832
  This software contains the following license and notice below:
7833
7833
 
7834
7834
  MIT License
@@ -7855,7 +7855,7 @@ SOFTWARE.
7855
7855
 
7856
7856
  ---
7857
7857
 
7858
- The following software may be included in this product: @verdaccio/package-filter (13.1.1)
7858
+ The following software may be included in this product: @verdaccio/package-filter (13.2.0)
7859
7859
  This software contains the following license and notice below:
7860
7860
 
7861
7861
  MIT License
@@ -7909,7 +7909,7 @@ SOFTWARE.
7909
7909
 
7910
7910
  ---
7911
7911
 
7912
- The following software may be included in this product: @verdaccio/signature (8.1.1)
7912
+ The following software may be included in this product: @verdaccio/signature (8.1.2)
7913
7913
  This software contains the following license and notice below:
7914
7914
 
7915
7915
  MIT License
@@ -7963,7 +7963,7 @@ SOFTWARE.
7963
7963
 
7964
7964
  ---
7965
7965
 
7966
- The following software may be included in this product: @verdaccio/tarball (13.1.1)
7966
+ The following software may be included in this product: @verdaccio/tarball (13.1.2)
7967
7967
  This software contains the following license and notice below:
7968
7968
 
7969
7969
  MIT License
@@ -7990,7 +7990,7 @@ SOFTWARE.
7990
7990
 
7991
7991
  ---
7992
7992
 
7993
- The following software may be included in this product: @verdaccio/ui-theme (9.0.0-next-9.23)
7993
+ The following software may be included in this product: @verdaccio/ui-theme (9.0.0-next-9.26)
7994
7994
  This software contains the following license and notice below:
7995
7995
 
7996
7996
  MIT License
@@ -8017,7 +8017,7 @@ SOFTWARE.
8017
8017
 
8018
8018
  ---
8019
8019
 
8020
- The following software may be included in this product: @verdaccio/url (13.1.1)
8020
+ The following software may be included in this product: @verdaccio/url (13.1.2)
8021
8021
  This software contains the following license and notice below:
8022
8022
 
8023
8023
  MIT License
@@ -8044,7 +8044,7 @@ SOFTWARE.
8044
8044
 
8045
8045
  ---
8046
8046
 
8047
- The following software may be included in this product: @verdaccio/utils (8.2.1)
8047
+ The following software may be included in this product: @verdaccio/utils (8.2.2)
8048
8048
  This software contains the following license and notice below:
8049
8049
 
8050
8050
  MIT License
@@ -8071,7 +8071,7 @@ SOFTWARE.
8071
8071
 
8072
8072
  ---
8073
8073
 
8074
- The following software may be included in this product: @vitest/coverage-v8 (4.1.10)
8074
+ The following software may be included in this product: @vitest/coverage-v8 (4.1.11)
8075
8075
  This software contains the following license and notice below:
8076
8076
 
8077
8077
  MIT License
@@ -8098,7 +8098,7 @@ SOFTWARE.
8098
8098
 
8099
8099
  ---
8100
8100
 
8101
- The following software may be included in this product: @vitest/expect (4.1.10)
8101
+ The following software may be included in this product: @vitest/expect (4.1.11)
8102
8102
  This software contains the following license and notice below:
8103
8103
 
8104
8104
  MIT License
@@ -8125,7 +8125,7 @@ SOFTWARE.
8125
8125
 
8126
8126
  ---
8127
8127
 
8128
- The following software may be included in this product: @vitest/mocker (4.1.10)
8128
+ The following software may be included in this product: @vitest/mocker (4.1.11)
8129
8129
  This software contains the following license and notice below:
8130
8130
 
8131
8131
  MIT License
@@ -8152,7 +8152,7 @@ SOFTWARE.
8152
8152
 
8153
8153
  ---
8154
8154
 
8155
- The following software may be included in this product: @vitest/pretty-format (4.1.10)
8155
+ The following software may be included in this product: @vitest/pretty-format (4.1.11)
8156
8156
  This software contains the following license and notice below:
8157
8157
 
8158
8158
  MIT License
@@ -8179,7 +8179,7 @@ SOFTWARE.
8179
8179
 
8180
8180
  ---
8181
8181
 
8182
- The following software may be included in this product: @vitest/runner (4.1.10)
8182
+ The following software may be included in this product: @vitest/runner (4.1.11)
8183
8183
  This software contains the following license and notice below:
8184
8184
 
8185
8185
  MIT License
@@ -8206,7 +8206,7 @@ SOFTWARE.
8206
8206
 
8207
8207
  ---
8208
8208
 
8209
- The following software may be included in this product: @vitest/snapshot (4.1.10)
8209
+ The following software may be included in this product: @vitest/snapshot (4.1.11)
8210
8210
  This software contains the following license and notice below:
8211
8211
 
8212
8212
  MIT License
@@ -8233,7 +8233,7 @@ SOFTWARE.
8233
8233
 
8234
8234
  ---
8235
8235
 
8236
- The following software may be included in this product: @vitest/spy (4.1.10)
8236
+ The following software may be included in this product: @vitest/spy (4.1.11)
8237
8237
  This software contains the following license and notice below:
8238
8238
 
8239
8239
  MIT License
@@ -8260,7 +8260,7 @@ SOFTWARE.
8260
8260
 
8261
8261
  ---
8262
8262
 
8263
- The following software may be included in this product: @vitest/ui (4.1.10)
8263
+ The following software may be included in this product: @vitest/ui (4.1.11)
8264
8264
  This software contains the following license and notice below:
8265
8265
 
8266
8266
  MIT License
@@ -8287,7 +8287,7 @@ SOFTWARE.
8287
8287
 
8288
8288
  ---
8289
8289
 
8290
- The following software may be included in this product: @vitest/utils (4.1.10)
8290
+ The following software may be included in this product: @vitest/utils (4.1.11)
8291
8291
  This software contains the following license and notice below:
8292
8292
 
8293
8293
  MIT License
@@ -22492,6 +22492,32 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22492
22492
 
22493
22493
  ---
22494
22494
 
22495
+ The following software may be included in this product: postcss (8.5.26)
22496
+ This software contains the following license and notice below:
22497
+
22498
+ The MIT License (MIT)
22499
+
22500
+ Copyright 2013 Andrey Sitnik <andrey@sitnik.es>
22501
+
22502
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
22503
+ this software and associated documentation files (the "Software"), to deal in
22504
+ the Software without restriction, including without limitation the rights to
22505
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
22506
+ the Software, and to permit persons to whom the Software is furnished to do so,
22507
+ subject to the following conditions:
22508
+
22509
+ The above copyright notice and this permission notice shall be included in all
22510
+ copies or substantial portions of the Software.
22511
+
22512
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22513
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
22514
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
22515
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
22516
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22517
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22518
+
22519
+ ---
22520
+
22495
22521
  The following software may be included in this product: postcss-modules (6.0.1)
22496
22522
  This software contains the following license and notice below:
22497
22523
 
@@ -25901,7 +25927,7 @@ SOFTWARE.
25901
25927
 
25902
25928
  ---
25903
25929
 
25904
- The following software may be included in this product: tinyexec (1.0.4)
25930
+ The following software may be included in this product: tinyexec (1.2.4)
25905
25931
  This software contains the following license and notice below:
25906
25932
 
25907
25933
  MIT License
@@ -27163,7 +27189,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27163
27189
 
27164
27190
  ---
27165
27191
 
27166
- The following software may be included in this product: verdaccio (6.9.2)
27192
+ The following software may be included in this product: verdaccio (6.10.0)
27167
27193
  This software contains the following license and notice below:
27168
27194
 
27169
27195
  MIT License
@@ -27190,7 +27216,7 @@ SOFTWARE.
27190
27216
 
27191
27217
  ---
27192
27218
 
27193
- The following software may be included in this product: verdaccio-audit (13.1.1)
27219
+ The following software may be included in this product: verdaccio-audit (13.1.2)
27194
27220
  This software contains the following license and notice below:
27195
27221
 
27196
27222
  MIT License
@@ -27217,7 +27243,7 @@ SOFTWARE.
27217
27243
 
27218
27244
  ---
27219
27245
 
27220
- The following software may be included in this product: verdaccio-htpasswd (13.1.1)
27246
+ The following software may be included in this product: verdaccio-htpasswd (13.1.2)
27221
27247
  This software contains the following license and notice below:
27222
27248
 
27223
27249
  MIT License
@@ -27324,7 +27350,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27324
27350
 
27325
27351
  ---
27326
27352
 
27327
- The following software may be included in this product: vite (8.2.1)
27353
+ The following software may be included in this product: vite (8.2.2)
27328
27354
  This software contains the following license and notice below:
27329
27355
 
27330
27356
  # Vite core license
@@ -29652,7 +29678,7 @@ Repository: https://github.com/sveltejs/zimmerframe
29652
29678
 
29653
29679
  ---
29654
29680
 
29655
- The following software may be included in this product: vitest (4.1.10)
29681
+ The following software may be included in this product: vitest (4.1.11)
29656
29682
  This software contains the following license and notice below:
29657
29683
 
29658
29684
  # Vitest core license
@@ -33495,7 +33521,7 @@ under the terms of *both* these licenses.
33495
33521
 
33496
33522
  ---
33497
33523
 
33498
- The following software may be included in this product: @swc/core (1.16.0)
33524
+ The following software may be included in this product: @swc/core (1.16.1)
33499
33525
  This software contains the following license and notice below:
33500
33526
 
33501
33527
  Apache License
@@ -41208,7 +41234,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
41208
41234
 
41209
41235
  ---
41210
41236
 
41211
- The following software may be included in this product: @swc/core-linux-x64-gnu (1.16.0)
41237
+ The following software may be included in this product: @swc/core-linux-x64-gnu (1.16.1)
41212
41238
  This software contains the following license and notice below:
41213
41239
 
41214
41240
  Apache License
package/migrations.json CHANGED
@@ -2,26 +2,6 @@
2
2
  "$schema": "http://json-schema.org/schema",
3
3
  "name": "@aws/nx-plugin",
4
4
  "generators": {
5
- "latest-remove-mcp-inspector-license-exceptions": {
6
- "version": "1.0.0-rc.73",
7
- "description": "Remove the obsolete MCP Inspector license exceptions",
8
- "implementation": "./src/migrations/latest/remove-mcp-inspector-license-exceptions/migration"
9
- },
10
- "latest-apt-security-updates-in-container-images": {
11
- "version": "1.0.0-rc.73",
12
- "description": "Apply the distribution's security updates in vended agent / MCP server container images",
13
- "implementation": "./src/migrations/latest/apt-security-updates-in-container-images/migration"
14
- },
15
- "latest-py-agent-session-id-middleware-extraction": {
16
- "version": "1.0.0-rc.74",
17
- "description": "Extract the duplicated _SessionIdMiddleware class in py#agent's main.py into a shared middleware/session_id_middleware.py module",
18
- "implementation": "./src/migrations/latest/py-agent-session-id-middleware-extraction/migration"
19
- },
20
- "latest-ts-agent-session-id-middleware-extraction": {
21
- "version": "1.0.0-rc.75",
22
- "description": "Extract the duplicated session-id Express middleware in ts#agent's ag-ui/a2a index.ts into a shared middleware/session-id-middleware.ts module",
23
- "implementation": "./src/migrations/latest/ts-agent-session-id-middleware-extraction/migration"
24
- },
25
5
  "latest-dynamodb-configurable-encryption": {
26
6
  "version": "1.0.0-rc.77",
27
7
  "description": "Surface encryption and encryptionKey on the vended DynamoDBTable construct/module",
@@ -162,8 +142,28 @@
162
142
  "description": "Add session management support to py#agent",
163
143
  "implementation": "./src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration"
164
144
  },
145
+ "v1.0.0-rc.73-0001-remove-mcp-inspector-license-exceptions": {
146
+ "version": "1.0.0-rc.73",
147
+ "description": "Remove the obsolete MCP Inspector license exceptions",
148
+ "implementation": "./src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/migration"
149
+ },
150
+ "v1.0.0-rc.73-0002-apt-security-updates-in-container-images": {
151
+ "version": "1.0.0-rc.73",
152
+ "description": "Apply the distribution's security updates in vended agent / MCP server container images",
153
+ "implementation": "./src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/migration"
154
+ },
155
+ "v1.0.0-rc.74-0001-py-agent-session-id-middleware-extraction": {
156
+ "version": "1.0.0-rc.74",
157
+ "description": "Extract the duplicated _SessionIdMiddleware class in py#agent's main.py into a shared middleware/session_id_middleware.py module",
158
+ "implementation": "./src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/migration"
159
+ },
160
+ "v1.0.0-rc.75-0001-ts-agent-session-id-middleware-extraction": {
161
+ "version": "1.0.0-rc.75",
162
+ "description": "Extract the duplicated session-id Express middleware in ts#agent's ag-ui/a2a index.ts into a shared middleware/session-id-middleware.ts module",
163
+ "implementation": "./src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/migration"
164
+ },
165
165
  "sync-vended-versions": {
166
- "version": "1.0.0-rc.80",
166
+ "version": "1.0.0-rc.81",
167
167
  "description": "Sync vended dependency versions and the tracked plugin version to those vended by this release",
168
168
  "implementation": "./src/utils/version-upgrade-migration/migration"
169
169
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "1.0.0-rc.80",
3
+ "version": "1.0.0-rc.81",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/awslabs/nx-plugin-for-aws.git",
@@ -40,9 +40,9 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@apidevtools/swagger-parser": "12.1.0",
43
- "@astral-sh/ruff-wasm-nodejs": "0.16.3",
43
+ "@astral-sh/ruff-wasm-nodejs": "0.16.4",
44
44
  "@biomejs/js-api": "6.0.0",
45
- "@biomejs/wasm-nodejs": "2.5.8",
45
+ "@biomejs/wasm-nodejs": "2.5.10",
46
46
  "@getgrit/gritql": "0.0.3",
47
47
  "@iarna/toml": "2.2.5",
48
48
  "@modelcontextprotocol/sdk": "1.30.0",
@@ -79,8 +79,8 @@
79
79
  "typescript": "6.0.3",
80
80
  "unified": "11.0.5",
81
81
  "unist-util-visit": "5.1.0",
82
- "vite": "8.2.1",
83
- "vitest": "4.1.10",
82
+ "vite": "8.2.2",
83
+ "vitest": "4.1.11",
84
84
  "zod": "4.4.3"
85
85
  },
86
86
  "devDependencies": {
@@ -7,7 +7,7 @@ exports[`agentcore-gateway generator > protocol: http > omits protocol_type from
7
7
  required_providers {
8
8
  aws = {
9
9
  source = "hashicorp/aws"
10
- version = "6.60.0"
10
+ version = "6.61.0"
11
11
  }
12
12
  time = {
13
13
  source = "hashicorp/time"
@@ -56,7 +56,7 @@ exports[`infra generator > should configure Checkov target correctly > checkov-t
56
56
  "{workspaceRoot}/dist/{projectRoot}/cdk.out",
57
57
  ],
58
58
  "options": {
59
- "command": "uvx --from checkov==3.3.11 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
59
+ "command": "uvx --from checkov==3.3.13 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
60
60
  },
61
61
  "outputs": [
62
62
  "{workspaceRoot}/dist/{projectRoot}/checkov",
@@ -150,7 +150,7 @@ exports[`infra generator > should configure project.json with correct targets >
150
150
  "{workspaceRoot}/dist/{projectRoot}/cdk.out",
151
151
  ],
152
152
  "options": {
153
- "command": "uvx --from checkov==3.3.11 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
153
+ "command": "uvx --from checkov==3.3.13 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
154
154
  },
155
155
  "outputs": [
156
156
  "{workspaceRoot}/dist/{projectRoot}/checkov",
@@ -745,7 +745,7 @@ exports[`infra generator > should handle custom project names correctly > custom
745
745
  "{workspaceRoot}/dist/{projectRoot}/cdk.out",
746
746
  ],
747
747
  "options": {
748
- "command": "uvx --from checkov==3.3.11 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
748
+ "command": "uvx --from checkov==3.3.13 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
749
749
  },
750
750
  "outputs": [
751
751
  "{workspaceRoot}/dist/{projectRoot}/checkov",
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { readJson, type Tree } from '@nx/devkit';\nimport { removeLicenseExceptions } from '../../../license/config.js';\nimport { registerPnpmBuiltDependencies } from '../../../utils/pnpm-workspace.js';\n\nconst INSPECTOR = '@modelcontextprotocol/inspector';\n\n/**\n * MCP Inspector v1 declared `SEE LICENSE IN LICENSE`, which resolves to no SPDX\n * identifier, so the license check needed an exception per published package.\n * v2 ships as a single package declaring `MIT`, which the allowlist already\n * covers, and the stale exceptions would override that with `Apache-2.0`.\n */\nconst OBSOLETE_EXCEPTIONS = [\n INSPECTOR,\n `${INSPECTOR}-cli`,\n `${INSPECTOR}-server`,\n `${INSPECTOR}-client`,\n];\n\n/** Whether the workspace root declares the inspector as a devDependency. */\nconst hasInspector = (tree: Tree): boolean => {\n if (!tree.exists('package.json')) {\n return false;\n }\n const packageJson = readJson(tree, 'package.json');\n return Boolean(\n packageJson.devDependencies?.[INSPECTOR] ??\n packageJson.dependencies?.[INSPECTOR],\n );\n};\n\nexport default async function migration(tree: Tree): Promise<void> {\n await removeLicenseExceptions(tree, OBSOLETE_EXCEPTIONS);\n\n // The version sync bumps the inspector to v2, which added a postinstall\n // script. Register it as an explicitly-rejected build so the upgrade's\n // install isn't failed by pnpm 11's default `strictDepBuilds=true`.\n if (hasInspector(tree)) {\n registerPnpmBuiltDependencies(tree, { [INSPECTOR]: false });\n }\n}\n"],"names":["readJson","removeLicenseExceptions","registerPnpmBuiltDependencies","INSPECTOR","OBSOLETE_EXCEPTIONS","hasInspector","tree","exists","packageJson","Boolean","devDependencies","dependencies","migration"],"mappings":"AAAA;;;CAGC,GACD,SAASA,QAAQ,QAAmB,aAAa;AACjD,SAASC,uBAAuB,QAAQ,6BAA6B;AACrE,SAASC,6BAA6B,QAAQ,mCAAmC;AAEjF,MAAMC,YAAY;AAElB;;;;;CAKC,GACD,MAAMC,sBAAsB;IAC1BD;IACA,GAAGA,UAAU,IAAI,CAAC;IAClB,GAAGA,UAAU,OAAO,CAAC;IACrB,GAAGA,UAAU,OAAO,CAAC;CACtB;AAED,0EAA0E,GAC1E,MAAME,eAAe,CAACC;IACpB,IAAI,CAACA,KAAKC,MAAM,CAAC,iBAAiB;QAChC,OAAO;IACT;IACA,MAAMC,cAAcR,SAASM,MAAM;IACnC,OAAOG,QACLD,YAAYE,eAAe,EAAE,CAACP,UAAU,IACtCK,YAAYG,YAAY,EAAE,CAACR,UAAU;AAE3C;AAEA,eAAe,eAAeS,UAAUN,IAAU;IAChD,MAAML,wBAAwBK,MAAMF;IAEpC,wEAAwE;IACxE,uEAAuE;IACvE,oEAAoE;IACpE,IAAIC,aAAaC,OAAO;QACtBJ,8BAA8BI,MAAM;YAAE,CAACH,UAAU,EAAE;QAAM;IAC3D;AACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n getProjects,\n joinPathFragments,\n type MigrationReturnObject,\n type ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport type { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * Apply the distribution's security updates in the vended agent / MCP server\n * images.\n *\n * A base image tag lags behind its distribution's security suite, so the OS\n * packages it ships carry vulnerabilities that already have a fixed version\n * published — which the image scan flags as HIGH/CRITICAL. Upgrading them in the\n * image build clears those findings whenever the scan runs, rather than waiting\n * for the base image to be rebuilt. New workspaces get this from the generator\n * templates; this brings existing ones up to date.\n *\n * Only the Dockerfiles of the components whose images the generators vend are\n * touched, located from their project metadata. The Dockerfile is generated\n * `KeepExisting`, so it is edited in place: the upgrade is inserted right after\n * the `FROM` line, ahead of every other instruction, so later layers install\n * against the upgraded packages. One that already runs `apt-get upgrade`, or\n * which has been re-based onto an image `apt-get` can't upgrade, is left alone.\n */\n\n/**\n * The generators whose runtime images the vended Dockerfiles build. Hardcoded\n * rather than imported from the generators: a migration matches the ids\n * workspaces recorded at generation time, which must stay fixed even if the\n * generators' current ids change later.\n */\nconst RUNTIME_IMAGE_GENERATOR_IDS = [\n 'py#agent',\n 'py#mcp-server',\n 'ts#agent',\n 'ts#mcp-server',\n];\n\nconst APT_UPGRADE = `# Apply the distribution's security updates: base image tags lag behind the\n# security suite, so its OS packages carry fixed HIGH/CRITICAL vulnerabilities\n# flagged by the image scan.\nRUN apt-get update && \\\\\n apt-get upgrade -y --no-install-recommends && \\\\\n rm -rf /var/lib/apt/lists/*`;\n\n/** The apt command this migration adds; used to detect an applied fix. */\nconst APT_UPGRADE_COMMAND = 'apt-get upgrade';\n\n/**\n * The Debian-derived base images the generators vend, whose packages `apt-get`\n * upgrades. A user who has re-based onto another image (Alpine, distroless,\n * Amazon Linux) needs a different command, so theirs is left as they wrote it.\n */\nconst DEBIAN_BASE_IMAGE = /^FROM\\s+\\S*(?:node|python):\\S*\\n/m;\n\n/**\n * The Dockerfiles of every runtime image component, located from each project's\n * recorded component metadata (`path` is the component directory relative to\n * the project root).\n */\nconst runtimeImageDockerfiles = (tree: Tree): string[] => {\n const paths: string[] = [];\n for (const project of getProjects(tree).values()) {\n const components = ((\n project.metadata as { components?: ComponentMetadata[] }\n )?.components ?? []) as ComponentMetadata[];\n for (const component of components) {\n if (\n !RUNTIME_IMAGE_GENERATOR_IDS.includes(component.generator) ||\n !component.path\n ) {\n continue;\n }\n const dockerfile = joinPathFragments(\n projectRoot(project),\n component.path,\n 'Dockerfile',\n );\n if (tree.exists(dockerfile)) {\n paths.push(dockerfile);\n }\n }\n }\n return paths;\n};\n\n/** A project's root, falling back to sourceRoot for the TS-solution layout. */\nconst projectRoot = (project: ProjectConfiguration): string =>\n project.root ?? project.sourceRoot ?? '';\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n for (const filePath of runtimeImageDockerfiles(tree)) {\n const content = tree.read(filePath, 'utf-8');\n if (!content) {\n continue;\n }\n if (content.includes(APT_UPGRADE_COMMAND)) {\n continue; // Already upgrading (migrated or user-added).\n }\n\n const from = content.match(DEBIAN_BASE_IMAGE);\n if (from?.index === undefined) {\n continue; // The user has re-based the image; theirs to patch, not ours.\n }\n\n // Insert the upgrade after the FROM line, ahead of every other instruction\n // so later layers install against the upgraded packages, with the spacing a\n // freshly generated Dockerfile has.\n const insertAt = from.index + from[0].length;\n tree.write(\n filePath,\n `${content.slice(0, insertAt)}\\n${APT_UPGRADE}\\n${content.slice(insertAt)}`,\n );\n }\n\n await formatFilesInSubtree(tree);\n\n return {};\n}\n"],"names":["getProjects","joinPathFragments","formatFilesInSubtree","RUNTIME_IMAGE_GENERATOR_IDS","APT_UPGRADE","APT_UPGRADE_COMMAND","DEBIAN_BASE_IMAGE","runtimeImageDockerfiles","tree","paths","project","values","components","metadata","component","includes","generator","path","dockerfile","projectRoot","exists","push","root","sourceRoot","migration","filePath","content","read","from","match","index","undefined","insertAt","length","write","slice"],"mappings":"AAAA;;;CAGC,GACD,SACEA,WAAW,EACXC,iBAAiB,QAIZ,aAAa;AACpB,SAASC,oBAAoB,QAAQ,2BAA2B;AAGhE;;;;;;;;;;;;;;;;;CAiBC,GAED;;;;;CAKC,GACD,MAAMC,8BAA8B;IAClC;IACA;IACA;IACA;CACD;AAED,MAAMC,cAAc,CAAC;;;;;+BAKU,CAAC;AAEhC,wEAAwE,GACxE,MAAMC,sBAAsB;AAE5B;;;;CAIC,GACD,MAAMC,oBAAoB;AAE1B;;;;CAIC,GACD,MAAMC,0BAA0B,CAACC;IAC/B,MAAMC,QAAkB,EAAE;IAC1B,KAAK,MAAMC,WAAWV,YAAYQ,MAAMG,MAAM,GAAI;QAChD,MAAMC,aAAc,AAClBF,QAAQG,QAAQ,EACfD,cAAc,EAAE;QACnB,KAAK,MAAME,aAAaF,WAAY;YAClC,IACE,CAACT,4BAA4BY,QAAQ,CAACD,UAAUE,SAAS,KACzD,CAACF,UAAUG,IAAI,EACf;gBACA;YACF;YACA,MAAMC,aAAajB,kBACjBkB,YAAYT,UACZI,UAAUG,IAAI,EACd;YAEF,IAAIT,KAAKY,MAAM,CAACF,aAAa;gBAC3BT,MAAMY,IAAI,CAACH;YACb;QACF;IACF;IACA,OAAOT;AACT;AAEA,6EAA6E,GAC7E,MAAMU,cAAc,CAACT,UACnBA,QAAQY,IAAI,IAAIZ,QAAQa,UAAU,IAAI;AAExC,eAAe,eAAeC,UAC5BhB,IAAU;IAEV,KAAK,MAAMiB,YAAYlB,wBAAwBC,MAAO;QACpD,MAAMkB,UAAUlB,KAAKmB,IAAI,CAACF,UAAU;QACpC,IAAI,CAACC,SAAS;YACZ;QACF;QACA,IAAIA,QAAQX,QAAQ,CAACV,sBAAsB;YACzC,UAAU,8CAA8C;QAC1D;QAEA,MAAMuB,OAAOF,QAAQG,KAAK,CAACvB;QAC3B,IAAIsB,MAAME,UAAUC,WAAW;YAC7B,UAAU,8DAA8D;QAC1E;QAEA,2EAA2E;QAC3E,4EAA4E;QAC5E,oCAAoC;QACpC,MAAMC,WAAWJ,KAAKE,KAAK,GAAGF,IAAI,CAAC,EAAE,CAACK,MAAM;QAC5CzB,KAAK0B,KAAK,CACRT,UACA,GAAGC,QAAQS,KAAK,CAAC,GAAGH,UAAU,EAAE,EAAE5B,YAAY,EAAE,EAAEsB,QAAQS,KAAK,CAACH,WAAW;IAE/E;IAEA,MAAM9B,qBAAqBM;IAE3B,OAAO,CAAC;AACV"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport {\n getProjects,\n joinPathFragments,\n type MigrationReturnObject,\n type Tree,\n} from '@nx/devkit';\nimport { PY_AGENT_GENERATOR_INFO } from '../../../py/agent/generator.js';\nimport {\n addPythonDestructuredImport,\n applyGritQL,\n captureGritQLVariable,\n matchGritQL,\n} from '../../../utils/ast.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport type { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * Extract the `_SessionIdMiddleware` class - previously duplicated verbatim\n * in every py#agent `main.py` (one copy per framework/protocol combination) -\n * into a shared `middleware/session_id_middleware.py` module sitting beside\n * `main.py`, mirroring the http#/a2a#/ag-ui#'s own `common/agent.py` and\n * `common/session.py` sharing pattern.\n *\n * The transform is protocol/framework-agnostic: every generated `main.py`\n * duplicated the exact same `dispatch` body (only the docstring differs\n * between AG-UI and HTTP/A2A), so one rewrite handles all six shapes. Imports\n * that only existed to support the inlined class (`uuid`, `Request`,\n * `BaseHTTPMiddleware`, `session_id_context`) are left for the trailing\n * `formatFilesInSubtree` ruff pass to prune if they've gone unused - AG-UI's\n * `main.py` still uses several of them directly, so nothing here can safely\n * assume any one of them is dead.\n */\nconst pyMatch = (snippet: string) => `language python\\n\\`${snippet}\\``;\n\nconst pyDelete = (snippet: string) => `${pyMatch(snippet)} => .`;\n\nconst pyRewrite = (from: string, to: string): string => {\n const replacement = to.includes('\\n') ? `raw\\`${to}\\`` : `\\`${to}\\``;\n return `${pyMatch(from)} => ${replacement}`;\n};\n\n// Both frameworks import `session_id_context` from the shared agent-connection\n// module alongside other names, so this both confirms the old shape is\n// present and recovers the module name to import the new middleware from.\nconst SESSION_ID_CONTEXT_MOD_CAPTURE =\n 'language python\\n`from $mod import $names` where { $names <: contains `session_id_context` }';\n\nconst SESSION_ID_HEADER_LINE =\n 'SESSION_ID_HEADER = \"x-amzn-bedrock-agentcore-runtime-session-id\"';\n\nconst ADD_MIDDLEWARE_OLD = 'app.add_middleware(_SessionIdMiddleware)';\nconst ADD_MIDDLEWARE_NEW = 'app.add_middleware(SessionIdMiddleware)';\n\n// HTTP and A2A share this docstring verbatim; AG-UI's differs (see below).\nconst OLD_CLASS_INBOUND = `class _SessionIdMiddleware(BaseHTTPMiddleware):\n \"\"\"Bind the inbound session (or a fresh UUID) to async context.\"\"\"\n\n async def dispatch(self, request: Request, call_next):\n session_id = request.headers.get(SESSION_ID_HEADER) or str(uuid.uuid4())\n with session_id_context(session_id):\n return await call_next(request)`;\n\nconst OLD_CLASS_DOWNSTREAM = `class _SessionIdMiddleware(BaseHTTPMiddleware):\n \"\"\"Bind the session ID for this request so downstream MCP / A2A clients forward it on outbound calls.\"\"\"\n\n async def dispatch(self, request: Request, call_next):\n session_id = request.headers.get(SESSION_ID_HEADER) or str(uuid.uuid4())\n with session_id_context(session_id):\n return await call_next(request)`;\n\n// Both framework common/ dirs vend byte-identical middleware content (the\n// LangChain copy would work equally well); this one is read as the single\n// source of truth rather than hand-duplicating it here.\nconst SESSION_ID_MIDDLEWARE_TEMPLATE = readFileSync(\n join(\n import.meta.dirname,\n '../../../py/agent/files/strands/common/middleware/session_id_middleware.py.template',\n ),\n 'utf-8',\n);\n\nconst sessionIdMiddlewareContent = (agentConnectionModule: string): string =>\n SESSION_ID_MIDDLEWARE_TEMPLATE.replace(\n '<%- agentConnectionModuleName %>',\n agentConnectionModule,\n );\n\nconst findAgentComponents = (\n components: ComponentMetadata[] | undefined,\n): ComponentMetadata[] =>\n (components ?? []).filter(\n (component) => component.generator === PY_AGENT_GENERATOR_INFO.id,\n );\n\nconst migrateMain = async (\n tree: Tree,\n mainPath: string,\n component: ComponentMetadata,\n nextSteps: string[],\n): Promise<void> => {\n if (!tree.exists(mainPath)) return;\n\n const contents = tree.read(mainPath, 'utf-8') ?? '';\n if (!contents.includes('class _SessionIdMiddleware(')) return;\n\n const oldClass = contents.includes(\n 'Bind the session ID for this request so downstream MCP / A2A clients forward it on outbound calls.',\n )\n ? OLD_CLASS_DOWNSTREAM\n : OLD_CLASS_INBOUND;\n\n const ready =\n (await matchGritQL(tree, mainPath, pyMatch(oldClass))) &&\n (await matchGritQL(tree, mainPath, pyMatch(SESSION_ID_HEADER_LINE))) &&\n (await matchGritQL(tree, mainPath, pyMatch(ADD_MIDDLEWARE_OLD))) &&\n (await matchGritQL(tree, mainPath, SESSION_ID_CONTEXT_MOD_CAPTURE));\n\n const diverged = () => {\n const shape = [component.framework, component.protocol]\n .filter(Boolean)\n .join('/');\n nextSteps.push(\n `${mainPath}: diverged from the generated ${shape || 'py#agent'} shape - left untouched. Manually move \\`_SessionIdMiddleware\\` into a sibling \\`middleware/session_id_middleware.py\\` module and import it from there (see the py#agent generator's template).`,\n );\n };\n\n if (!ready) {\n diverged();\n return;\n }\n\n const mod = await captureGritQLVariable(\n tree,\n mainPath,\n SESSION_ID_CONTEXT_MOD_CAPTURE,\n 'mod',\n );\n if (!mod) {\n diverged();\n return;\n }\n\n const dir = mainPath.split('/').slice(0, -1).join('/');\n const middlewareInitPath = joinPathFragments(\n dir,\n 'middleware',\n '__init__.py',\n );\n const middlewarePath = joinPathFragments(\n dir,\n 'middleware',\n 'session_id_middleware.py',\n );\n\n if (!tree.exists(middlewareInitPath)) {\n tree.write(middlewareInitPath, '');\n }\n if (!tree.exists(middlewarePath)) {\n tree.write(middlewarePath, sessionIdMiddlewareContent(mod));\n }\n\n await applyGritQL(tree, mainPath, pyDelete(SESSION_ID_HEADER_LINE));\n await applyGritQL(tree, mainPath, pyDelete(oldClass));\n await applyGritQL(\n tree,\n mainPath,\n pyRewrite(ADD_MIDDLEWARE_OLD, ADD_MIDDLEWARE_NEW),\n );\n // Imported unconditionally - SESSION_ID_HEADER is only still referenced by\n // AG-UI's main.py after the class is gone; the ruff pass below prunes it\n // from HTTP/A2A's now-unused import list.\n await addPythonDestructuredImport(\n tree,\n mainPath,\n ['SESSION_ID_HEADER', 'SessionIdMiddleware'],\n '.middleware.session_id_middleware',\n );\n};\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n\n for (const project of getProjects(tree).values()) {\n const components = findAgentComponents(\n (project.metadata as { components?: ComponentMetadata[] })?.components,\n );\n\n for (const component of components) {\n if (!component.path) continue;\n\n const componentDir = component.path.endsWith('/agent.py')\n ? component.path.slice(0, -'/agent.py'.length)\n : component.path;\n const mainPath = joinPathFragments(project.root, componentDir, 'main.py');\n\n await migrateMain(tree, mainPath, component, nextSteps);\n }\n }\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps };\n}\n"],"names":["readFileSync","join","getProjects","joinPathFragments","PY_AGENT_GENERATOR_INFO","addPythonDestructuredImport","applyGritQL","captureGritQLVariable","matchGritQL","formatFilesInSubtree","pyMatch","snippet","pyDelete","pyRewrite","from","to","replacement","includes","SESSION_ID_CONTEXT_MOD_CAPTURE","SESSION_ID_HEADER_LINE","ADD_MIDDLEWARE_OLD","ADD_MIDDLEWARE_NEW","OLD_CLASS_INBOUND","OLD_CLASS_DOWNSTREAM","SESSION_ID_MIDDLEWARE_TEMPLATE","dirname","sessionIdMiddlewareContent","agentConnectionModule","replace","findAgentComponents","components","filter","component","generator","id","migrateMain","tree","mainPath","nextSteps","exists","contents","read","oldClass","ready","diverged","shape","framework","protocol","Boolean","push","mod","dir","split","slice","middlewareInitPath","middlewarePath","write","migration","project","values","metadata","path","componentDir","endsWith","length","root"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport {\n getProjects,\n joinPathFragments,\n type MigrationReturnObject,\n type Tree,\n} from '@nx/devkit';\nimport { TS_AGENT_GENERATOR_INFO } from '../../../ts/agent/generator.js';\nimport {\n addDestructuredImport,\n applyGritQL,\n captureGritQLVariable,\n matchGritQL,\n} from '../../../utils/ast.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport type { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * Extract the inline session-id Express middleware - previously duplicated\n * verbatim in every ts#agent AG-UI/A2A `index.ts` - into a shared\n * `middleware/session-id-middleware.ts` module sitting beside `index.ts`,\n * mirroring how `agent.ts`/`session.ts` are already shared siblings.\n *\n * HTTP is untouched: its one procedure is a tRPC subscription served over\n * WebSocket, which bypasses Express entirely, so it never had this middleware\n * to begin with (see `enterSessionContext` in its `router.ts` instead).\n *\n * AG-UI and A2A wire the same logic up differently - AG-UI binds it to a\n * named `sessionIdMiddleware` const before use, while A2A inlines it directly\n * at the `app.use` call site - so each gets its own old-shape pattern below,\n * even though both resolve to the same shared middleware content.\n *\n * Guardrails:\n * - Pattern-match before writing: skip files that have diverged from the\n * generated shape and report them via `nextSteps`, rather than clobbering\n * the user's changes.\n * - Idempotent: re-running is a no-op once migrated.\n */\n\n// The consuming repo's formatter/linter (e.g. Biome, ESLint import/order) may\n// alphabetize these three named type imports, so match/rewrite any of their\n// orderings rather than only the literal order the generator emits. Fixed-\n// arity destructuring (`[$a, $b, $c]`) pins the specifier count to exactly\n// three - so a 4th merged-in specifier fails to match - while constraining\n// each slot independently makes the check order-independent.\nconst EXPRESS_IMPORT_OLD_WHERE = `{\n $clause <: import_clause(default=\\`express\\`, name=named_imports(imports=[$a, $b, $c])),\n $a <: or { \\`type Request\\`, \\`type Response\\`, \\`type NextFunction\\` },\n $b <: or { \\`type Request\\`, \\`type Response\\`, \\`type NextFunction\\` },\n $c <: or { \\`type Request\\`, \\`type Response\\`, \\`type NextFunction\\` }\n}`;\nconst EXPRESS_IMPORT_OLD_MATCH = `\\`import $clause from 'express';\\` where ${EXPRESS_IMPORT_OLD_WHERE}`;\nconst EXPRESS_IMPORT_OLD_REWRITE = `\\`import $clause from 'express';\\` => \\`import express from 'express';\\` where ${EXPRESS_IMPORT_OLD_WHERE}`;\n\nconst RANDOM_UUID_IMPORT = \"import { randomUUID } from 'node:crypto';\";\n\nconst SESSION_ID_HEADER_LINE =\n \"const SESSION_ID_HEADER = 'x-amzn-bedrock-agentcore-runtime-session-id';\";\n\n// The leading comment sits directly above both shapes below. GritQL can only\n// match it as its own comment node - folding it into the same backtick\n// snippet as the statement that follows fails to parse as one construct - so\n// it's matched/deleted as a separate step from the statement/expression.\nconst MIDDLEWARE_LEADING_COMMENT =\n '// Bind the inbound session (or a fresh UUID) for downstream MCP / A2A calls.';\n\n// AG-UI binds the middleware to a named const, used later via `app.use(sessionIdMiddleware)`.\nconst AGUI_MIDDLEWARE_DEFINITION_OLD = `const sessionIdMiddleware = (req: Request, _res: Response, next: NextFunction) => {\n const header = req.headers[SESSION_ID_HEADER];\n const sessionId = (Array.isArray(header) ? header[0] : header) ?? randomUUID();\n runWithSessionId(sessionId, () => next());\n};`;\n\n// A2A inlines the same logic directly at the `app.use` call site instead.\nconst A2A_MIDDLEWARE_USE_OLD = `app.use((req: Request, _res: Response, next: NextFunction) => {\n const header = req.headers[SESSION_ID_HEADER];\n const sessionId = (Array.isArray(header) ? header[0] : header) ?? randomUUID();\n runWithSessionId(sessionId, () => next());\n });`;\nconst A2A_MIDDLEWARE_USE_NEW = 'app.use(sessionIdMiddleware);';\n\n// Captures the agent-connection package specifier so the new middleware\n// module targets the same one. Generic over `$names` since a connection\n// generator may have merged its own import into this same statement.\nconst RUNWITHSESSIONID_IMPORT_CAPTURE =\n \"`import { $names } from '$mod';` where { $names <: contains `runWithSessionId` }\";\n\n// Removes `runWithSessionId` from the named import, preserving any other\n// merged specifiers (or the whole statement if it was the only one).\n// Decomposed via `import_clause(name=named_imports($imports))` since a naive\n// `$rest`-based rewrite silently fails once other specifiers are involved.\nconst REMOVE_RUNWITHSESSIONID_IMPORT_PATTERN = `\\`import $clause from '$mod';\\` as $import where {\n $clause <: import_clause(name=named_imports($imports)),\n $imports <: contains \\`runWithSessionId\\`,\n if ($imports <: [\\`runWithSessionId\\`]) { $import => . } else { $imports <: some import_specifier(name=\\`runWithSessionId\\`) => . }\n}`;\n\n// Both protocols' `common-express/` dir vends byte-identical middleware\n// content; read as the single source of truth rather than hand-duplicating\n// it here.\nconst SESSION_ID_MIDDLEWARE_TEMPLATE = readFileSync(\n join(\n import.meta.dirname,\n '../../../ts/agent/files/common-express/middleware/session-id-middleware.ts.template',\n ),\n 'utf-8',\n);\n\nconst sessionIdMiddlewareContent = (agentConnectionImport: string): string =>\n SESSION_ID_MIDDLEWARE_TEMPLATE.replace(\n '<%- agentConnectionImport %>',\n agentConnectionImport,\n );\n\nconst findAgentComponents = (\n components: ComponentMetadata[] | undefined,\n): ComponentMetadata[] =>\n (components ?? []).filter(\n (component) =>\n component.generator === TS_AGENT_GENERATOR_INFO.id &&\n (component.protocol === 'ag-ui' || component.protocol === 'a2a'),\n );\n\nconst migrateIndex = async (\n tree: Tree,\n indexPath: string,\n protocol: 'ag-ui' | 'a2a',\n nextSteps: string[],\n): Promise<void> => {\n if (!tree.exists(indexPath)) return;\n\n const contents = tree.read(indexPath, 'utf-8') ?? '';\n if (!contents.includes(SESSION_ID_HEADER_LINE)) return;\n\n const middlewarePattern =\n protocol === 'ag-ui'\n ? AGUI_MIDDLEWARE_DEFINITION_OLD\n : A2A_MIDDLEWARE_USE_OLD;\n\n const diverged = () => {\n nextSteps.push(\n `${indexPath}: diverged from the generated ts#agent ${protocol} shape - left untouched. Manually move the inline session-id middleware into a sibling \\`middleware/session-id-middleware.ts\\` module and import \\`sessionIdMiddleware\\` from there (see the ts#agent generator's template).`,\n );\n };\n\n const ready =\n (await matchGritQL(tree, indexPath, EXPRESS_IMPORT_OLD_MATCH)) &&\n (await matchGritQL(tree, indexPath, `\\`${RANDOM_UUID_IMPORT}\\``)) &&\n (await matchGritQL(tree, indexPath, `\\`${SESSION_ID_HEADER_LINE}\\``)) &&\n (await matchGritQL(tree, indexPath, `\\`${MIDDLEWARE_LEADING_COMMENT}\\``)) &&\n (await matchGritQL(tree, indexPath, `\\`${middlewarePattern}\\``)) &&\n (await matchGritQL(tree, indexPath, RUNWITHSESSIONID_IMPORT_CAPTURE));\n\n if (!ready) {\n diverged();\n return;\n }\n\n const mod = await captureGritQLVariable(\n tree,\n indexPath,\n RUNWITHSESSIONID_IMPORT_CAPTURE,\n 'mod',\n );\n if (!mod) {\n diverged();\n return;\n }\n\n const dir = indexPath.split('/').slice(0, -1).join('/');\n const middlewarePath = joinPathFragments(\n dir,\n 'middleware',\n 'session-id-middleware.ts',\n );\n\n if (!tree.exists(middlewarePath)) {\n tree.write(middlewarePath, sessionIdMiddlewareContent(mod));\n }\n\n await applyGritQL(tree, indexPath, EXPRESS_IMPORT_OLD_REWRITE);\n await applyGritQL(tree, indexPath, `\\`${RANDOM_UUID_IMPORT}\\` => .`);\n await applyGritQL(tree, indexPath, `\\`${SESSION_ID_HEADER_LINE}\\` => .`);\n await applyGritQL(tree, indexPath, REMOVE_RUNWITHSESSIONID_IMPORT_PATTERN);\n await applyGritQL(tree, indexPath, `\\`${MIDDLEWARE_LEADING_COMMENT}\\` => .`);\n\n if (protocol === 'ag-ui') {\n await applyGritQL(\n tree,\n indexPath,\n `\\`${AGUI_MIDDLEWARE_DEFINITION_OLD}\\` => .`,\n );\n } else {\n await applyGritQL(\n tree,\n indexPath,\n `\\`${A2A_MIDDLEWARE_USE_OLD}\\` => \\`${A2A_MIDDLEWARE_USE_NEW}\\``,\n );\n }\n\n await addDestructuredImport(\n tree,\n indexPath,\n ['sessionIdMiddleware'],\n './middleware/session-id-middleware.js',\n );\n};\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n\n for (const project of getProjects(tree).values()) {\n const components = findAgentComponents(\n (project.metadata as { components?: ComponentMetadata[] })?.components,\n );\n\n for (const component of components) {\n if (!component.path) continue;\n\n const indexPath = joinPathFragments(\n project.root,\n component.path,\n 'index.ts',\n );\n\n await migrateIndex(\n tree,\n indexPath,\n component.protocol as 'ag-ui' | 'a2a',\n nextSteps,\n );\n }\n }\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps };\n}\n"],"names":["readFileSync","join","getProjects","joinPathFragments","TS_AGENT_GENERATOR_INFO","addDestructuredImport","applyGritQL","captureGritQLVariable","matchGritQL","formatFilesInSubtree","EXPRESS_IMPORT_OLD_WHERE","EXPRESS_IMPORT_OLD_MATCH","EXPRESS_IMPORT_OLD_REWRITE","RANDOM_UUID_IMPORT","SESSION_ID_HEADER_LINE","MIDDLEWARE_LEADING_COMMENT","AGUI_MIDDLEWARE_DEFINITION_OLD","A2A_MIDDLEWARE_USE_OLD","A2A_MIDDLEWARE_USE_NEW","RUNWITHSESSIONID_IMPORT_CAPTURE","REMOVE_RUNWITHSESSIONID_IMPORT_PATTERN","SESSION_ID_MIDDLEWARE_TEMPLATE","dirname","sessionIdMiddlewareContent","agentConnectionImport","replace","findAgentComponents","components","filter","component","generator","id","protocol","migrateIndex","tree","indexPath","nextSteps","exists","contents","read","includes","middlewarePattern","diverged","push","ready","mod","dir","split","slice","middlewarePath","write","migration","project","values","metadata","path","root"],"mappings":"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"}
@@ -252,7 +252,7 @@ export default {
252
252
 
253
253
  exports[`preset generator > should run successfully > biome.json 1`] = `
254
254
  "{
255
- "$schema": "https://biomejs.dev/schemas/2.5.8/schema.json",
255
+ "$schema": "https://biomejs.dev/schemas/2.5.10/schema.json",
256
256
  "root": true,
257
257
  "formatter": {
258
258
  "enabled": true,
@@ -418,7 +418,7 @@ catalog:
418
418
  '@nx/js': 23.1.1
419
419
  '@nx/workspace': 23.1.1
420
420
  typescript: ~6.0.3
421
- '@biomejs/biome': 2.5.8
421
+ '@biomejs/biome': 2.5.10
422
422
  '@aws/nx-plugin': ^0.0.0
423
423
  '@aws/nx-plugin-mcp': ^0.0.0
424
424
  "
@@ -765,13 +765,13 @@ dependencies = [
765
765
  "proj-agent-connection",
766
766
  "aws-lambda-powertools==3.34.0",
767
767
  "aws-opentelemetry-distro==0.19.0",
768
- "bedrock-agentcore==1.21.0",
769
- "boto3==1.43.72",
768
+ "bedrock-agentcore==1.22.0",
769
+ "boto3==1.43.78",
770
770
  "fastapi==0.141.1",
771
771
  "mcp==1.28.1",
772
- "strands-agents==1.52.0",
772
+ "strands-agents==1.53.0",
773
773
  "strands-agents-tools==0.8.6",
774
- "uvicorn==0.52.3"
774
+ "uvicorn==0.52.4"
775
775
  ]
776
776
 
777
777
  [dependency-groups]
@@ -703,18 +703,18 @@ dependencies = [
703
703
  "proj-agent-connection",
704
704
  "aws-lambda-powertools==3.34.0",
705
705
  "aws-opentelemetry-distro==0.19.0",
706
- "bedrock-agentcore==1.21.0",
707
- "boto3==1.43.72",
706
+ "bedrock-agentcore==1.22.0",
707
+ "boto3==1.43.78",
708
708
  "fastapi==0.141.1",
709
709
  "mcp==1.28.1",
710
- "langchain==1.3.15",
711
- "langchain-aws==1.7.1",
710
+ "langchain==1.3.16",
711
+ "langchain-aws==1.7.3",
712
712
  "langgraph==1.2.11",
713
713
  "langgraph-checkpoint-sqlite==3.1.1",
714
714
  "aiosqlite==0.22.1",
715
715
  "ag-ui-protocol==0.1.20",
716
716
  "ag-ui-langgraph==0.0.43",
717
- "uvicorn==0.52.3"
717
+ "uvicorn==0.52.4"
718
718
  ]
719
719
 
720
720
  [dependency-groups]
@@ -672,7 +672,7 @@ exports[`py#agent generator > should match snapshot for Terraform generated file
672
672
  required_providers {
673
673
  aws = {
674
674
  source = "hashicorp/aws"
675
- version = "6.60.0"
675
+ version = "6.61.0"
676
676
  }
677
677
  null = {
678
678
  source = "hashicorp/null"
@@ -1088,7 +1088,7 @@ resource "null_resource" "runtime_ready" {
1088
1088
 
1089
1089
  provisioner "local-exec" {
1090
1090
  command = <<-EOT
1091
- uv run --with boto3==1.43.72 python -c "
1091
+ uv run --with boto3==1.43.78 python -c "
1092
1092
  import boto3
1093
1093
  import json
1094
1094
  import os