@aws/nx-plugin 1.0.10 → 1.0.12

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 (35) hide show
  1. package/LICENSE-THIRD-PARTY +14 -41
  2. package/migrations.json +11 -11
  3. package/package.json +4 -4
  4. package/src/migrations/v1.0.10/0001-pin-strands-mcp-client-peer/migration.js.map +1 -0
  5. package/src/migrations/v1.0.9/0001-py-dynamodb-bind-base-model-meta/migration.js.map +1 -0
  6. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +6 -6
  7. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +7 -7
  8. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +1 -1
  9. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
  10. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2 -2
  11. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +14 -14
  12. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +1 -1
  13. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +2 -2
  14. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
  15. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +2 -2
  16. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +12 -12
  17. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +1 -1
  18. package/src/utils/docker.d.ts +1 -1
  19. package/src/utils/version-lockstep/exact-dependency.d.ts +65 -0
  20. package/src/utils/version-lockstep/exact-dependency.js +213 -0
  21. package/src/utils/version-lockstep/exact-dependency.js.map +1 -0
  22. package/src/utils/version-lockstep/report.d.ts +44 -0
  23. package/src/utils/version-lockstep/report.js +108 -0
  24. package/src/utils/version-lockstep/report.js.map +1 -0
  25. package/src/utils/versions.d.ts +75 -60
  26. package/src/utils/versions.js +82 -60
  27. package/src/utils/versions.js.map +1 -1
  28. package/src/migrations/latest/pin-strands-mcp-client-peer/migration.js.map +0 -1
  29. package/src/migrations/latest/py-dynamodb-bind-base-model-meta/migration.js.map +0 -1
  30. /package/src/migrations/{latest/pin-strands-mcp-client-peer → v1.0.10/0001-pin-strands-mcp-client-peer}/metadata.json +0 -0
  31. /package/src/migrations/{latest/pin-strands-mcp-client-peer → v1.0.10/0001-pin-strands-mcp-client-peer}/migration.d.ts +0 -0
  32. /package/src/migrations/{latest/pin-strands-mcp-client-peer → v1.0.10/0001-pin-strands-mcp-client-peer}/migration.js +0 -0
  33. /package/src/migrations/{latest/py-dynamodb-bind-base-model-meta → v1.0.9/0001-py-dynamodb-bind-base-model-meta}/metadata.json +0 -0
  34. /package/src/migrations/{latest/py-dynamodb-bind-base-model-meta → v1.0.9/0001-py-dynamodb-bind-base-model-meta}/migration.d.ts +0 -0
  35. /package/src/migrations/{latest/py-dynamodb-bind-base-model-meta → v1.0.9/0001-py-dynamodb-bind-base-model-meta}/migration.js +0 -0
@@ -108,7 +108,7 @@ THE SOFTWARE.
108
108
 
109
109
  ---
110
110
 
111
- The following software may be included in this product: @astral-sh/ruff-wasm-nodejs (0.17.0)
111
+ The following software may be included in this product: @astral-sh/ruff-wasm-nodejs (0.17.1)
112
112
  This software contains the following license and notice below:
113
113
 
114
114
  MIT License
@@ -4193,7 +4193,7 @@ SOFTWARE.
4193
4193
 
4194
4194
  ---
4195
4195
 
4196
- The following software may be included in this product: @oxc-project/types (0.152.0)
4196
+ The following software may be included in this product: @oxc-project/types (0.154.0)
4197
4197
  This software contains the following license and notice below:
4198
4198
 
4199
4199
  MIT License
@@ -4731,7 +4731,7 @@ SOFTWARE
4731
4731
 
4732
4732
  ---
4733
4733
 
4734
- The following software may be included in this product: @vitest/expect (4.1.11)
4734
+ The following software may be included in this product: @vitest/expect (4.1.12)
4735
4735
  This software contains the following license and notice below:
4736
4736
 
4737
4737
  MIT License
@@ -4758,7 +4758,7 @@ SOFTWARE.
4758
4758
 
4759
4759
  ---
4760
4760
 
4761
- The following software may be included in this product: @vitest/mocker (4.1.11)
4761
+ The following software may be included in this product: @vitest/mocker (4.1.12)
4762
4762
  This software contains the following license and notice below:
4763
4763
 
4764
4764
  MIT License
@@ -4785,7 +4785,7 @@ SOFTWARE.
4785
4785
 
4786
4786
  ---
4787
4787
 
4788
- The following software may be included in this product: @vitest/pretty-format (4.1.11)
4788
+ The following software may be included in this product: @vitest/pretty-format (4.1.12)
4789
4789
  This software contains the following license and notice below:
4790
4790
 
4791
4791
  MIT License
@@ -4812,7 +4812,7 @@ SOFTWARE.
4812
4812
 
4813
4813
  ---
4814
4814
 
4815
- The following software may be included in this product: @vitest/runner (4.1.11)
4815
+ The following software may be included in this product: @vitest/runner (4.1.12)
4816
4816
  This software contains the following license and notice below:
4817
4817
 
4818
4818
  MIT License
@@ -4839,7 +4839,7 @@ SOFTWARE.
4839
4839
 
4840
4840
  ---
4841
4841
 
4842
- The following software may be included in this product: @vitest/snapshot (4.1.11)
4842
+ The following software may be included in this product: @vitest/snapshot (4.1.12)
4843
4843
  This software contains the following license and notice below:
4844
4844
 
4845
4845
  MIT License
@@ -4866,7 +4866,7 @@ SOFTWARE.
4866
4866
 
4867
4867
  ---
4868
4868
 
4869
- The following software may be included in this product: @vitest/spy (4.1.11)
4869
+ The following software may be included in this product: @vitest/spy (4.1.12)
4870
4870
  This software contains the following license and notice below:
4871
4871
 
4872
4872
  MIT License
@@ -4893,7 +4893,7 @@ SOFTWARE.
4893
4893
 
4894
4894
  ---
4895
4895
 
4896
- The following software may be included in this product: @vitest/utils (4.1.11)
4896
+ The following software may be included in this product: @vitest/utils (4.1.12)
4897
4897
  This software contains the following license and notice below:
4898
4898
 
4899
4899
  MIT License
@@ -12820,33 +12820,6 @@ THE SOFTWARE.
12820
12820
 
12821
12821
  ---
12822
12822
 
12823
- The following software may be included in this product: picomatch (4.0.5)
12824
- This software contains the following license and notice below:
12825
-
12826
- The MIT License (MIT)
12827
-
12828
- Copyright (c) 2017-present, Jon Schlinkert.
12829
-
12830
- Permission is hereby granted, free of charge, to any person obtaining a copy
12831
- of this software and associated documentation files (the "Software"), to deal
12832
- in the Software without restriction, including without limitation the rights
12833
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12834
- copies of the Software, and to permit persons to whom the Software is
12835
- furnished to do so, subject to the following conditions:
12836
-
12837
- The above copyright notice and this permission notice shall be included in
12838
- all copies or substantial portions of the Software.
12839
-
12840
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12841
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12842
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
12843
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
12844
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12845
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
12846
- THE SOFTWARE.
12847
-
12848
- ---
12849
-
12850
12823
  The following software may be included in this product: picomatch (4.0.7)
12851
12824
  This software contains the following license and notice below:
12852
12825
 
@@ -13173,7 +13146,7 @@ THE SOFTWARE.
13173
13146
 
13174
13147
  ---
13175
13148
 
13176
- The following software may be included in this product: react (19.3.0)
13149
+ The following software may be included in this product: react (19.3.1)
13177
13150
  This software contains the following license and notice below:
13178
13151
 
13179
13152
  MIT License
@@ -13200,7 +13173,7 @@ SOFTWARE.
13200
13173
 
13201
13174
  ---
13202
13175
 
13203
- The following software may be included in this product: react-dom (19.3.0)
13176
+ The following software may be included in this product: react-dom (19.3.1)
13204
13177
  This software contains the following license and notice below:
13205
13178
 
13206
13179
  MIT License
@@ -13794,7 +13767,7 @@ SOFTWARE.
13794
13767
 
13795
13768
  ---
13796
13769
 
13797
- The following software may be included in this product: rolldown (1.2.12)
13770
+ The following software may be included in this product: rolldown (1.2.14)
13798
13771
  This software contains the following license and notice below:
13799
13772
 
13800
13773
  MIT License
@@ -14896,7 +14869,7 @@ SOFTWARE.
14896
14869
 
14897
14870
  ---
14898
14871
 
14899
- The following software may be included in this product: tinyexec (1.2.4)
14872
+ The following software may be included in this product: tinyexec (1.3.1)
14900
14873
  This software contains the following license and notice below:
14901
14874
 
14902
14875
  MIT License
@@ -18000,7 +17973,7 @@ Repository: https://github.com/sveltejs/zimmerframe
18000
17973
 
18001
17974
  ---
18002
17975
 
18003
- The following software may be included in this product: vitest (4.1.11)
17976
+ The following software may be included in this product: vitest (4.1.12)
18004
17977
  This software contains the following license and notice below:
18005
17978
 
18006
17979
  # Vitest core license
package/migrations.json CHANGED
@@ -2,16 +2,6 @@
2
2
  "$schema": "http://json-schema.org/schema",
3
3
  "name": "@aws/nx-plugin",
4
4
  "generators": {
5
- "latest-py-dynamodb-bind-base-model-meta": {
6
- "version": "1.0.9",
7
- "description": "Bind the py#dynamodb BaseModel Meta that 1.0.8 declared as a nested MetaProtocol subclass with the inherited MetaProtocol type, so the generated project type checks with ty 0.0.87",
8
- "implementation": "./src/migrations/latest/py-dynamodb-bind-base-model-meta/migration"
9
- },
10
- "latest-pin-strands-mcp-client-peer": {
11
- "version": "1.0.10",
12
- "description": "Declare @modelcontextprotocol/client in every project that declares @strands-agents/sdk without it so the required peer resolves to the vended pin",
13
- "implementation": "./src/migrations/latest/pin-strands-mcp-client-peer/migration"
14
- },
15
5
  "v1.0.0-rc.50-0001-modernize-function-props-cast": {
16
6
  "version": "1.0.0-rc.50",
17
7
  "description": "Replace the legacy angle-bracket FunctionProps type assertion with the modern as syntax in generated API constructs",
@@ -377,6 +367,11 @@
377
367
  "description": "Move the shared shadcn package's components onto the cn package the shadcn registry now depends on",
378
368
  "implementation": "./src/migrations/v1.0.0-rc.98/0002-shadcn-cn-package/migration"
379
369
  },
370
+ "v1.0.10-0001-pin-strands-mcp-client-peer": {
371
+ "version": "1.0.10",
372
+ "description": "Declare @modelcontextprotocol/client in every project that declares @strands-agents/sdk without it so the required peer resolves to the vended pin",
373
+ "implementation": "./src/migrations/v1.0.10/0001-pin-strands-mcp-client-peer/migration"
374
+ },
380
375
  "v1.0.2-0001-terraform-harness-environment-variables": {
381
376
  "version": "1.0.2",
382
377
  "description": "Send an empty map rather than null for a vended Terraform AgentCore Harness module's environment_variables, so the first apply does not fail after creating the Harness",
@@ -417,8 +412,13 @@
417
412
  "description": "Keep checkov reports and vitest coverage out of downstream task hashes, declare Smithy build inputs, cache ts#rdb Prisma client generation and stop caching Terraform output",
418
413
  "implementation": "./src/migrations/v1.0.8/0003-cache-inputs-outputs/migration"
419
414
  },
415
+ "v1.0.9-0001-py-dynamodb-bind-base-model-meta": {
416
+ "version": "1.0.9",
417
+ "description": "Bind the py#dynamodb BaseModel Meta that 1.0.8 declared as a nested MetaProtocol subclass with the inherited MetaProtocol type, so the generated project type checks with ty 0.0.87",
418
+ "implementation": "./src/migrations/v1.0.9/0001-py-dynamodb-bind-base-model-meta/migration"
419
+ },
420
420
  "sync-vended-versions": {
421
- "version": "1.0.10",
421
+ "version": "1.0.12",
422
422
  "description": "Sync vended dependency versions and the tracked plugin version to those vended by this release",
423
423
  "implementation": "./src/utils/version-upgrade-migration/migration"
424
424
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/awslabs/nx-plugin-for-aws.git",
@@ -33,14 +33,14 @@
33
33
  "migrations": "./migrations.json"
34
34
  },
35
35
  "engines": {
36
- "node": ">=20.19.0"
36
+ "node": "^22.13.0 || ^24.0.0 || >=26.0.0"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "nx": "23.3.0"
40
40
  },
41
41
  "dependencies": {
42
42
  "@apidevtools/swagger-parser": "12.1.0",
43
- "@astral-sh/ruff-wasm-nodejs": "0.17.0",
43
+ "@astral-sh/ruff-wasm-nodejs": "0.17.1",
44
44
  "@biomejs/js-api": "6.0.0",
45
45
  "@biomejs/wasm-nodejs": "2.5.15",
46
46
  "@getgrit/gritql": "0.0.3",
@@ -80,7 +80,7 @@
80
80
  "unified": "11.0.5",
81
81
  "unist-util-visit": "5.1.0",
82
82
  "vite": "8.3.4",
83
- "vitest": "4.1.11",
83
+ "vitest": "4.1.12",
84
84
  "zod": "4.6.7"
85
85
  },
86
86
  "devDependencies": {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.10/0001-pin-strands-mcp-client-peer/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 Tree,\n} from '@nx/devkit';\nimport { AGENT_CONNECTION_PROJECT_DIR } from '../../../utils/agent-connection/agent-connection.js';\nimport { addDependenciesToPackageJson } from '../../../utils/dependencies.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { TS_VERSIONS } from '../../../utils/versions.js';\n\nconst MCP_CLIENT = '@modelcontextprotocol/client';\nconst STRANDS_SDK = '@strands-agents/sdk';\nconst ROOT_PACKAGE_JSON = 'package.json';\n\n/**\n * `@strands-agents/sdk` 1.20.0 replaced its required peer\n * `@modelcontextprotocol/sdk` with `@modelcontextprotocol/client`. Nothing in\n * a generated workspace declared that package, so pnpm auto-installs whatever\n * its `latest` is, while the vended `@modelcontextprotocol/inspector` pulls\n * its own exact version into the same graph. The generators now declare it\n * at the vended pin wherever they declare strands; this carries an existing\n * workspace to the same shape.\n *\n * Detection is generic, as in the earlier express peer migration: the\n * workspace root, the shared agent-connection project (checked explicitly in\n * case its project.json isn't registered) and every project's\n * `package.json`, each checked for \"declares @strands-agents/sdk\".\n */\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n pinIfNeeded(tree, ROOT_PACKAGE_JSON);\n pinIfNeeded(\n tree,\n joinPathFragments(AGENT_CONNECTION_PROJECT_DIR, 'package.json'),\n );\n\n for (const project of getProjects(tree).values()) {\n pinIfNeeded(tree, joinPathFragments(project.root, 'package.json'));\n }\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps: [] };\n}\n\n/** Declare the MCP client on the given manifest, if it declares strands. */\nfunction pinIfNeeded(tree: Tree, packageJsonPath: string): void {\n if (!tree.exists(packageJsonPath)) {\n return;\n }\n\n const packageJson = JSON.parse(tree.read(packageJsonPath, 'utf-8') ?? '{}');\n if (!packageJson.dependencies?.[STRANDS_SDK]) {\n return;\n }\n\n // An already-declared client (even a stale range) is left to\n // addDependenciesToPackageJson, which resolves it onto the catalog.\n addDependenciesToPackageJson(\n tree,\n { [MCP_CLIENT]: TS_VERSIONS[MCP_CLIENT] },\n {},\n packageJsonPath,\n );\n}\n"],"names":["getProjects","joinPathFragments","AGENT_CONNECTION_PROJECT_DIR","addDependenciesToPackageJson","formatFilesInSubtree","TS_VERSIONS","MCP_CLIENT","STRANDS_SDK","ROOT_PACKAGE_JSON","migration","tree","pinIfNeeded","project","values","root","nextSteps","packageJsonPath","exists","packageJson","JSON","parse","read","dependencies"],"mappings":"AAAA;;;CAGC,GACD,SACEA,WAAW,EACXC,iBAAiB,QAGZ,aAAa;AACpB,SAASC,4BAA4B,QAAQ,sDAAsD;AACnG,SAASC,4BAA4B,QAAQ,iCAAiC;AAC9E,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,WAAW,QAAQ,6BAA6B;AAEzD,MAAMC,aAAa;AACnB,MAAMC,cAAc;AACpB,MAAMC,oBAAoB;AAE1B;;;;;;;;;;;;;CAaC,GACD,eAAe,eAAeC,UAC5BC,IAAU;IAEVC,YAAYD,MAAMF;IAClBG,YACED,MACAT,kBAAkBC,8BAA8B;IAGlD,KAAK,MAAMU,WAAWZ,YAAYU,MAAMG,MAAM,GAAI;QAChDF,YAAYD,MAAMT,kBAAkBW,QAAQE,IAAI,EAAE;IACpD;IAEA,MAAMV,qBAAqBM;IAE3B,OAAO;QAAEK,WAAW,EAAE;IAAC;AACzB;AAEA,0EAA0E,GAC1E,SAASJ,YAAYD,IAAU,EAAEM,eAAuB;IACtD,IAAI,CAACN,KAAKO,MAAM,CAACD,kBAAkB;QACjC;IACF;IAEA,MAAME,cAAcC,KAAKC,KAAK,CAACV,KAAKW,IAAI,CAACL,iBAAiB,YAAY;IACtE,IAAI,CAACE,YAAYI,YAAY,EAAE,CAACf,YAAY,EAAE;QAC5C;IACF;IAEA,6DAA6D;IAC7D,oEAAoE;IACpEJ,6BACEO,MACA;QAAE,CAACJ,WAAW,EAAED,WAAW,CAACC,WAAW;IAAC,GACxC,CAAC,GACDU;AAEJ"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.9/0001-py-dynamodb-bind-base-model-meta/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { MigrationReturnObject, Tree } from '@nx/devkit';\nimport {\n bindMetaBlock,\n divergedMetaNextStep,\n findMetaBlockShape,\n META_BINDING,\n NESTED_PROTOCOL_META_HEADER,\n pyDynamoDbBasePyPaths,\n TYPED_IMPORT,\n UNTYPED_IMPORT,\n UNTYPED_META_HEADER,\n} from '../../../py/dynamodb/base-model-meta.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\n\n/**\n * Bind the `Meta` of the `BaseModel` that py#dynamodb vends in\n * `<module>/entities/base.py` with pynamodb's declared `MetaProtocol` type.\n *\n * Release 1.0.8 vends, and its `py-dynamodb-type-base-model-meta` migration\n * writes, a nested `class Meta(MetaProtocol):`. pynamodb declares\n * `Model.Meta: MetaProtocol`, a mutable attribute, and the nested class\n * narrows it to the class's own type, which ty 0.0.87 reports as\n * `invalid-mutable-override`. This declares the block as\n * `class _Meta(MetaProtocol):` and binds it with `Meta: MetaProtocol = _Meta`.\n * `Meta` is the same class object, so pynamodb's runtime defaults apply as\n * before.\n *\n * A base.py is edited only where its import line and `Meta` block still have\n * the exact shape the generator wrote. One already bound is left alone, as is\n * an untyped `class Meta:` in the generated shape, which\n * `py-dynamodb-type-base-model-meta` converges on the bound shape before this\n * runs. Any other base.py is left untouched and reported via `nextSteps`.\n */\n\n/**\n * Rewrite a base.py still in the 1.0.8 shape. Already bound, untyped and\n * missing files are left alone; a diverged one is reported via nextSteps.\n */\nconst migrateBasePy = (\n tree: Tree,\n filePath: string,\n nextSteps: string[],\n): void => {\n if (!tree.exists(filePath)) {\n return;\n }\n\n const content = tree.read(filePath, 'utf-8') ?? '';\n if (content.includes(META_BINDING)) {\n return; // Already migrated (or user-added).\n }\n\n if (\n content.includes(UNTYPED_IMPORT) &&\n findMetaBlockShape(content, UNTYPED_META_HEADER)\n ) {\n return; // Left to py-dynamodb-type-base-model-meta.\n }\n\n const shape = findMetaBlockShape(content, NESTED_PROTOCOL_META_HEADER);\n if (!shape || !content.includes(TYPED_IMPORT)) {\n nextSteps.push(divergedMetaNextStep(filePath));\n return;\n }\n\n tree.write(\n filePath,\n bindMetaBlock(content, NESTED_PROTOCOL_META_HEADER, shape),\n );\n};\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n\n for (const filePath of pyDynamoDbBasePyPaths(tree)) {\n migrateBasePy(tree, filePath, nextSteps);\n }\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps };\n}\n"],"names":["bindMetaBlock","divergedMetaNextStep","findMetaBlockShape","META_BINDING","NESTED_PROTOCOL_META_HEADER","pyDynamoDbBasePyPaths","TYPED_IMPORT","UNTYPED_IMPORT","UNTYPED_META_HEADER","formatFilesInSubtree","migrateBasePy","tree","filePath","nextSteps","exists","content","read","includes","shape","push","write","migration"],"mappings":"AAAA;;;CAGC,GAED,SACEA,aAAa,EACbC,oBAAoB,EACpBC,kBAAkB,EAClBC,YAAY,EACZC,2BAA2B,EAC3BC,qBAAqB,EACrBC,YAAY,EACZC,cAAc,EACdC,mBAAmB,QACd,0CAA0C;AACjD,SAASC,oBAAoB,QAAQ,2BAA2B;AAEhE;;;;;;;;;;;;;;;;;;CAkBC,GAED;;;CAGC,GACD,MAAMC,gBAAgB,CACpBC,MACAC,UACAC;IAEA,IAAI,CAACF,KAAKG,MAAM,CAACF,WAAW;QAC1B;IACF;IAEA,MAAMG,UAAUJ,KAAKK,IAAI,CAACJ,UAAU,YAAY;IAChD,IAAIG,QAAQE,QAAQ,CAACd,eAAe;QAClC,QAAQ,oCAAoC;IAC9C;IAEA,IACEY,QAAQE,QAAQ,CAACV,mBACjBL,mBAAmBa,SAASP,sBAC5B;QACA,QAAQ,4CAA4C;IACtD;IAEA,MAAMU,QAAQhB,mBAAmBa,SAASX;IAC1C,IAAI,CAACc,SAAS,CAACH,QAAQE,QAAQ,CAACX,eAAe;QAC7CO,UAAUM,IAAI,CAAClB,qBAAqBW;QACpC;IACF;IAEAD,KAAKS,KAAK,CACRR,UACAZ,cAAce,SAASX,6BAA6Bc;AAExD;AAEA,eAAe,eAAeG,UAC5BV,IAAU;IAEV,MAAME,YAAsB,EAAE;IAE9B,KAAK,MAAMD,YAAYP,sBAAsBM,MAAO;QAClDD,cAAcC,MAAMC,UAAUC;IAChC;IAEA,MAAMJ,qBAAqBE;IAE3B,OAAO;QAAEE;IAAU;AACrB"}
@@ -763,19 +763,19 @@ name = "proj.test_project"
763
763
  version = "0.1.0"
764
764
  dependencies = [
765
765
  "proj-agent-connection",
766
- "aws-lambda-powertools==3.35.0",
766
+ "aws-lambda-powertools==3.36.0",
767
767
  "aws-opentelemetry-distro==0.21.0",
768
- "bedrock-agentcore==1.24.1",
769
- "boto3==1.43.113",
770
- "fastapi==0.143.1",
768
+ "bedrock-agentcore==1.24.2",
769
+ "boto3==1.43.115",
770
+ "fastapi==0.150.0",
771
771
  "mcp==1.28.1",
772
- "strands-agents==1.60.0",
772
+ "strands-agents==1.61.1",
773
773
  "strands-agents-tools==0.8.9",
774
774
  "uvicorn==0.54.0"
775
775
  ]
776
776
 
777
777
  [dependency-groups]
778
- dev = [ "fastapi[standard]==0.143.1" ]
778
+ dev = [ "fastapi[standard]==0.150.0" ]
779
779
 
780
780
  [tool.uv]
781
781
  dev-dependencies = [ ]
@@ -701,15 +701,15 @@ name = "proj.test_project"
701
701
  version = "0.1.0"
702
702
  dependencies = [
703
703
  "proj-agent-connection",
704
- "aws-lambda-powertools==3.35.0",
704
+ "aws-lambda-powertools==3.36.0",
705
705
  "aws-opentelemetry-distro==0.21.0",
706
- "bedrock-agentcore==1.24.1",
707
- "boto3==1.43.113",
708
- "fastapi==0.143.1",
706
+ "bedrock-agentcore==1.24.2",
707
+ "boto3==1.43.115",
708
+ "fastapi==0.150.0",
709
709
  "mcp==1.28.1",
710
710
  "langchain==1.4.6",
711
- "langchain-aws==1.8.2",
712
- "langgraph==1.2.15",
711
+ "langchain-aws==1.9.0",
712
+ "langgraph==1.2.16",
713
713
  "langgraph-checkpoint-sqlite==3.1.2",
714
714
  "aiosqlite==0.22.1",
715
715
  "ag-ui-protocol==0.1.22",
@@ -718,7 +718,7 @@ dependencies = [
718
718
  ]
719
719
 
720
720
  [dependency-groups]
721
- dev = [ "fastapi[standard]==0.143.1" ]
721
+ dev = [ "fastapi[standard]==0.150.0" ]
722
722
 
723
723
  [tool.uv]
724
724
  dev-dependencies = [ ]
@@ -1063,7 +1063,7 @@ resource "null_resource" "runtime_ready" {
1063
1063
 
1064
1064
  provisioner "local-exec" {
1065
1065
  command = <<-EOT
1066
- uv run --with boto3==1.43.113 python -c "
1066
+ uv run --with boto3==1.43.115 python -c "
1067
1067
  import boto3
1068
1068
  import json
1069
1069
  import os
@@ -514,7 +514,7 @@ resource "null_resource" "runtime_ready" {
514
514
 
515
515
  provisioner "local-exec" {
516
516
  command = <<-EOT
517
- uv run --with boto3==1.43.113 python -c "
517
+ uv run --with boto3==1.43.115 python -c "
518
518
  import boto3
519
519
  import json
520
520
  import os
@@ -801,10 +801,10 @@ exports[`py#mcp-server generator > should match snapshot for generated files > u
801
801
  name = "proj.test_project"
802
802
  version = "0.1.0"
803
803
  dependencies = [
804
- "aws-lambda-powertools==3.35.0",
804
+ "aws-lambda-powertools==3.36.0",
805
805
  "mcp==1.28.1",
806
806
  "uvicorn==0.54.0",
807
- "boto3==1.43.113",
807
+ "boto3==1.43.115",
808
808
  "aws-opentelemetry-distro==0.21.0"
809
809
  ]
810
810
 
@@ -1507,8 +1507,8 @@ dependencies = [
1507
1507
  "alembic==1.20.0",
1508
1508
  "greenlet==3.5.6",
1509
1509
  "asyncpg==0.32.0",
1510
- "boto3==1.43.113",
1511
- "aws-lambda-powertools==3.35.0"
1510
+ "boto3==1.43.115",
1511
+ "aws-lambda-powertools==3.36.0"
1512
1512
  ]
1513
1513
 
1514
1514
  [build-system]
@@ -46,7 +46,7 @@ exports[`smithyProjectGenerator > shape libraries > should generate a shape libr
46
46
  "shx rm -rf dist/{projectRoot}/build",
47
47
  "shx rm -rf dist/{projectRoot}/smithy",
48
48
  "shx mkdir -p dist/{projectRoot}/build",
49
- "npx -y mise@2026.10.9 exec smithy@1.74.0 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
49
+ "npx -y mise@2026.10.14 exec smithy@1.74.1 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
50
50
  "shx cp dist/{projectRoot}/smithy/source/model/model.json dist/{projectRoot}/build/model.json"
51
51
  ],
52
52
  "parallel": false,
@@ -63,7 +63,7 @@ exports[`smithyProjectGenerator > shape libraries > should generate a shape libr
63
63
  "version": "1.0",
64
64
  "sources": ["src/"],
65
65
  "maven": {
66
- "dependencies": ["software.amazon.smithy:smithy-model:1.74.0"]
66
+ "dependencies": ["software.amazon.smithy:smithy-model:1.74.1"]
67
67
  }
68
68
  }
69
69
  "
@@ -124,7 +124,7 @@ exports[`smithyProjectGenerator > should generate smithy project with all custom
124
124
  "shx rm -rf dist/{projectRoot}/build",
125
125
  "shx rm -rf dist/{projectRoot}/smithy",
126
126
  "shx mkdir -p dist/{projectRoot}/build",
127
- "npx -y mise@2026.10.9 exec smithy@1.74.0 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
127
+ "npx -y mise@2026.10.14 exec smithy@1.74.1 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
128
128
  "shx mkdir -p dist/{projectRoot}/build/openapi",
129
129
  "shx cp \\"dist/{projectRoot}/smithy/source/openapi/*.openapi.json\\" dist/{projectRoot}/build/openapi/openapi.json"
130
130
  ],
@@ -184,7 +184,7 @@ exports[`smithyProjectGenerator > should generate smithy project with custom dir
184
184
  "shx rm -rf dist/{projectRoot}/build",
185
185
  "shx rm -rf dist/{projectRoot}/smithy",
186
186
  "shx mkdir -p dist/{projectRoot}/build",
187
- "npx -y mise@2026.10.9 exec smithy@1.74.0 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
187
+ "npx -y mise@2026.10.14 exec smithy@1.74.1 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
188
188
  "shx mkdir -p dist/{projectRoot}/build/openapi",
189
189
  "shx cp \\"dist/{projectRoot}/smithy/source/openapi/*.openapi.json\\" dist/{projectRoot}/build/openapi/openapi.json"
190
190
  ],
@@ -336,7 +336,7 @@ exports[`smithyProjectGenerator > should generate smithy project with default op
336
336
  "shx rm -rf dist/{projectRoot}/build",
337
337
  "shx rm -rf dist/{projectRoot}/smithy",
338
338
  "shx mkdir -p dist/{projectRoot}/build",
339
- "npx -y mise@2026.10.9 exec smithy@1.74.0 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
339
+ "npx -y mise@2026.10.14 exec smithy@1.74.1 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
340
340
  "shx mkdir -p dist/{projectRoot}/build/openapi",
341
341
  "shx cp \\"dist/{projectRoot}/smithy/source/openapi/*.openapi.json\\" dist/{projectRoot}/build/openapi/openapi.json"
342
342
  ],
@@ -382,10 +382,10 @@ exports[`smithyProjectGenerator > should generate smithy project with default op
382
382
  },
383
383
  "maven": {
384
384
  "dependencies": [
385
- "software.amazon.smithy:smithy-model:1.74.0",
386
- "software.amazon.smithy:smithy-aws-traits:1.74.0",
387
- "software.amazon.smithy:smithy-validation-model:1.74.0",
388
- "software.amazon.smithy:smithy-openapi:1.74.0",
385
+ "software.amazon.smithy:smithy-model:1.74.1",
386
+ "software.amazon.smithy:smithy-aws-traits:1.74.1",
387
+ "software.amazon.smithy:smithy-validation-model:1.74.1",
388
+ "software.amazon.smithy:smithy-openapi:1.74.1",
389
389
  "software.amazon.smithy.typescript:smithy-aws-typescript-codegen:0.54.0"
390
390
  ]
391
391
  }
@@ -482,7 +482,7 @@ exports[`smithyProjectGenerator > should generate smithy project with subdirecto
482
482
  "shx rm -rf dist/{projectRoot}/build",
483
483
  "shx rm -rf dist/{projectRoot}/smithy",
484
484
  "shx mkdir -p dist/{projectRoot}/build",
485
- "npx -y mise@2026.10.9 exec smithy@1.74.0 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
485
+ "npx -y mise@2026.10.14 exec smithy@1.74.1 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
486
486
  "shx mkdir -p dist/{projectRoot}/build/openapi",
487
487
  "shx cp \\"dist/{projectRoot}/smithy/source/openapi/*.openapi.json\\" dist/{projectRoot}/build/openapi/openapi.json"
488
488
  ],
@@ -574,10 +574,10 @@ exports[`smithyProjectGenerator > should handle kebab-case conversion for servic
574
574
  },
575
575
  "maven": {
576
576
  "dependencies": [
577
- "software.amazon.smithy:smithy-model:1.74.0",
578
- "software.amazon.smithy:smithy-aws-traits:1.74.0",
579
- "software.amazon.smithy:smithy-validation-model:1.74.0",
580
- "software.amazon.smithy:smithy-openapi:1.74.0",
577
+ "software.amazon.smithy:smithy-model:1.74.1",
578
+ "software.amazon.smithy:smithy-aws-traits:1.74.1",
579
+ "software.amazon.smithy:smithy-validation-model:1.74.1",
580
+ "software.amazon.smithy:smithy-openapi:1.74.1",
581
581
  "software.amazon.smithy.typescript:smithy-aws-typescript-codegen:0.54.0"
582
582
  ]
583
583
  }
@@ -2176,7 +2176,7 @@ exports[`tsSmithyApiGenerator > should generate smithy ts api with default optio
2176
2176
  "shx rm -rf dist/{projectRoot}/build",
2177
2177
  "shx rm -rf dist/{projectRoot}/smithy",
2178
2178
  "shx mkdir -p dist/{projectRoot}/build",
2179
- "npx -y mise@2026.10.9 exec smithy@1.74.0 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
2179
+ "npx -y mise@2026.10.14 exec smithy@1.74.1 -- smithy build -c {projectRoot}/smithy-build.json --output dist/{projectRoot}/smithy",
2180
2180
  "shx mkdir -p dist/{projectRoot}/build/openapi",
2181
2181
  "shx cp \\"dist/{projectRoot}/smithy/source/openapi/*.openapi.json\\" dist/{projectRoot}/build/openapi/openapi.json"
2182
2182
  ],
@@ -650,7 +650,7 @@ RUN apt-get update && \\
650
650
  rm -rf /var/lib/apt/lists/*
651
651
 
652
652
  # Upgrade npm to a version free of known HIGH/CRITICAL vulnerabilities
653
- RUN npm install -g npm@12.2.0
653
+ RUN npm install -g npm@12.2.1
654
654
 
655
655
  WORKDIR /app
656
656
 
@@ -1666,7 +1666,7 @@ resource "null_resource" "runtime_ready" {
1666
1666
 
1667
1667
  provisioner "local-exec" {
1668
1668
  command = <<-EOT
1669
- uv run --with boto3==1.43.113 python -c "
1669
+ uv run --with boto3==1.43.115 python -c "
1670
1670
  import boto3
1671
1671
  import json
1672
1672
  import os
@@ -514,7 +514,7 @@ resource "null_resource" "runtime_ready" {
514
514
 
515
515
  provisioner "local-exec" {
516
516
  command = <<-EOT
517
- uv run --with boto3==1.43.113 python -c "
517
+ uv run --with boto3==1.43.115 python -c "
518
518
  import boto3
519
519
  import json
520
520
  import os
@@ -4520,7 +4520,7 @@ exports[`ts#rdb generator > should generate the aurora shared construct 4`] = `
4520
4520
  "FROM public.ecr.aws/lambda/nodejs:24
4521
4521
 
4522
4522
  # Upgrade npm to a version free of known HIGH/CRITICAL vulnerabilities
4523
- RUN npm install -g npm@12.2.0
4523
+ RUN npm install -g npm@12.2.1
4524
4524
 
4525
4525
  # Patch OS packages beyond the base image's pinned release, and drop the
4526
4526
  # runtime's convenience copy of the AWS SDK (the handler bundle inlines its
@@ -4544,7 +4544,7 @@ RUN printf 'allow-scripts[]=prisma\\nallow-scripts[]=@prisma/engines\\n' > .npmr
4544
4544
  && npm init -y \\
4545
4545
  && npm pkg set "overrides.deepmerge-ts=8.0.2" \\
4546
4546
  && npm pkg set "overrides.mysql2=3.24.6" \\
4547
- && npm install prisma@7.10.0 \\
4547
+ && npm install prisma@7.10.1 \\
4548
4548
  && rm .npmrc \\
4549
4549
  && npm uninstall -g npm
4550
4550
 
@@ -745,7 +745,7 @@ resource "null_resource" "upload_website_files" {
745
745
  provisioner "local-exec" {
746
746
  command = <<-EOT
747
747
  cd "$ROOT_PATH"
748
- uv run --with boto3==1.43.113 python3 -c "
748
+ uv run --with boto3==1.43.115 python3 -c "
749
749
  import os
750
750
  import sys
751
751
  import boto3
@@ -868,7 +868,7 @@ resource "null_resource" "cloudfront_invalidation" {
868
868
 
869
869
  provisioner "local-exec" {
870
870
  command = <<-EOT
871
- uv run --with boto3==1.43.113 python3 -c "
871
+ uv run --with boto3==1.43.115 python3 -c "
872
872
  import boto3
873
873
  import os
874
874
  import sys
@@ -2384,9 +2384,9 @@ catalog:
2384
2384
  '@nx/vitest': 23.3.0
2385
2385
  constructs: 10.8.1
2386
2386
  aws-cdk-lib: 2.273.0
2387
- react: 19.3.0
2388
- react-dom: 19.3.0
2389
- '@cloudscape-design/components': 3.0.1400
2387
+ react: 19.3.1
2388
+ react-dom: 19.3.1
2389
+ '@cloudscape-design/components': 3.0.1401
2390
2390
  '@cloudscape-design/board-components': 3.0.238
2391
2391
  '@cloudscape-design/global-styles': 1.0.71
2392
2392
  tailwindcss: 4.3.3
@@ -4315,20 +4315,20 @@ catalog:
4315
4315
  '@nx/vitest': 23.3.0
4316
4316
  constructs: 10.8.1
4317
4317
  aws-cdk-lib: 2.273.0
4318
- react: 19.3.0
4319
- react-dom: 19.3.0
4320
- '@cloudscape-design/components': 3.0.1400
4318
+ react: 19.3.1
4319
+ react-dom: 19.3.1
4320
+ '@cloudscape-design/components': 3.0.1401
4321
4321
  '@cloudscape-design/board-components': 3.0.238
4322
4322
  '@cloudscape-design/global-styles': 1.0.71
4323
4323
  tailwindcss: 4.3.3
4324
- '@tanstack/react-router': 1.170.44
4324
+ '@tanstack/react-router': 1.170.45
4325
4325
  '@nx/react': 23.3.0
4326
4326
  '@vitest/ui': ~5.0.1
4327
4327
  '@tailwindcss/vite': 4.3.3
4328
- '@tanstack/router-plugin': 1.168.45
4329
- '@tanstack/router-generator': 1.167.43
4328
+ '@tanstack/router-plugin': 1.168.47
4329
+ '@tanstack/router-generator': 1.167.45
4330
4330
  '@tanstack/virtual-file-routes': 1.162.0
4331
- '@tanstack/router-utils': 1.162.3
4331
+ '@tanstack/router-utils': 1.162.4
4332
4332
  "
4333
4333
  `;
4334
4334
 
@@ -67,7 +67,7 @@ resource "null_resource" "add_callback_url" {
67
67
 
68
68
  provisioner "local-exec" {
69
69
  command = <<-EOT
70
- uv run --with boto3==1.43.113 python -c "
70
+ uv run --with boto3==1.43.115 python -c "
71
71
  import boto3
72
72
  import os
73
73
  import sys
@@ -25,7 +25,7 @@ export declare const IMAGE_BUILD_CACHE = false;
25
25
  * version to install globally, and the versions its dependency overrides pin.
26
26
  */
27
27
  export declare const nodeImageVersions: () => {
28
- npmVersion: "12.2.0";
28
+ npmVersion: "12.2.1";
29
29
  minimatchVersion: "10.2.6";
30
30
  };
31
31
  /**
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { type Tree } from '@nx/devkit';
6
+ import type { IVersionedDep, LockstepNote, ProposedVersions } from './lockstep.js';
7
+ /**
8
+ * Pins that must equal the exact `dependencies` a published release of another
9
+ * pin declares, for packages that don't share a version line.
10
+ */
11
+ export interface ExactDependencyPin {
12
+ /** The pin whose published `dependencies` the followers take. */
13
+ source: IVersionedDep;
14
+ /** Pins set to exactly the version `source` depends on. */
15
+ followers: readonly [IVersionedDep, ...IVersionedDep[]];
16
+ /** Pins whose published `peerDependencies` must accept the followers. */
17
+ peers: readonly IVersionedDep[];
18
+ /** Why the followers must match, for the update's PR. */
19
+ reason: string;
20
+ }
21
+ /** The manifest fields the rule reads. */
22
+ export type ManifestField = 'dependencies' | 'peerDependencies';
23
+ /**
24
+ * Reads one field of a published release's manifest, for example from
25
+ * `https://registry.npmjs.org/<name>/<version>`. Resolves to `{}` when the
26
+ * release has no such field, and rejects when the release can't be read.
27
+ */
28
+ export type DependencyLookup = (name: string, version: string, field: ManifestField) => Promise<Record<string, string>>;
29
+ /** Groups of pins held at one version, as in `LOCKSTEP_GROUPS`. */
30
+ type Groups = readonly (readonly string[])[];
31
+ /**
32
+ * Set each rule's followers, and their lockstep group mates, to the exact
33
+ * versions the source being written depends on. Runs after the lockstep, which
34
+ * can only hold a group back and so can't move one up to what the source needs.
35
+ *
36
+ * Mutates `proposed`, which holds versions not yet written anywhere. When a peer
37
+ * would reject the result, or a manifest can't be read, every pin the rule covers
38
+ * is put back to `current` for this run instead. Returns a note for each pin set
39
+ * and each rule held, so the reason reaches the update's PR.
40
+ */
41
+ export declare const pinToExactDependencies: (rules: readonly ExactDependencyPin[], groups: Groups, current: Readonly<ProposedVersions>, proposed: ProposedVersions, lookup: DependencyLookup) => Promise<LockstepNote[]>;
42
+ /** Reads each release's field once; a failed read fails the same way when repeated. */
43
+ export declare const memoizeLookup: (lookup: DependencyLookup) => DependencyLookup;
44
+ /** Where the update records what each rule's source release depends on. */
45
+ export declare const EXACT_DEPENDENCY_SOURCES_PATH = "packages/nx-plugin/exact-dependency-sources.json";
46
+ /** Per rule source: the version pinned and the exact versions it depends on for its followers. */
47
+ export type ExactDependencySources = Record<string, {
48
+ version: string;
49
+ dependencies: Record<string, string>;
50
+ }>;
51
+ /**
52
+ * What each rule's source, at the version being written, depends on for its
53
+ * followers. Reuses `recorded` for a source that did not move and reads the
54
+ * registry otherwise. Throws when a follower being written is not that version,
55
+ * or when the source's dependencies can't be read or omit a follower.
56
+ */
57
+ export declare const verifyExactDependencies: (rules: readonly ExactDependencyPin[], versions: Readonly<ProposedVersions>, recorded: Readonly<ExactDependencySources>, lookup: DependencyLookup) => Promise<ExactDependencySources>;
58
+ /**
59
+ * Record in `EXACT_DEPENDENCY_SOURCES_PATH` what the sources being written depend
60
+ * on, which `versions.spec.ts` checks the pins against. Throws as
61
+ * `verifyExactDependencies` does, before anything is written.
62
+ * @returns paths written, for the update report
63
+ */
64
+ export declare const writeExactDependencySources: (tree: Tree, rules: readonly ExactDependencyPin[], versions: Readonly<ProposedVersions>, lookup: DependencyLookup) => Promise<string[]>;
65
+ export {};