@aws/nx-plugin 1.3.2 → 1.3.3
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.
- package/LICENSE-THIRD-PARTY +21421 -10904
- package/migrations.json +12 -12
- package/package.json +4 -4
- package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/greengrass/component/python/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/migrations/v1.0.15/0001-py-agent-pillow-override/migration.d.ts +5 -5
- package/src/migrations/v1.0.15/0001-py-agent-pillow-override/migration.js +75 -3
- package/src/migrations/v1.0.15/0001-py-agent-pillow-override/migration.js.map +1 -1
- package/src/migrations/v1.3.1/0001-biome-markdown-yaml-formatter-off/migration.js.map +1 -0
- package/src/migrations/v1.3.2/0001-py-agentcore-launcher/migration.js.map +1 -0
- package/src/preset/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +6 -6
- package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +7 -7
- package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +4 -4
- package/src/py/agent/guardrails/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/rdb/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +7 -7
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +8 -8
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/agent/guardrails/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +14 -14
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
- package/src/utils/py.d.ts +0 -10
- package/src/utils/py.js +2 -59
- package/src/utils/py.js.map +1 -1
- package/src/utils/versions.d.ts +62 -70
- package/src/utils/versions.js +60 -73
- package/src/utils/versions.js.map +1 -1
- package/src/migrations/latest/biome-markdown-yaml-formatter-off/migration.js.map +0 -1
- package/src/migrations/latest/py-agentcore-launcher/migration.js.map +0 -1
- /package/src/migrations/{latest/biome-markdown-yaml-formatter-off → v1.3.1/0001-biome-markdown-yaml-formatter-off}/metadata.json +0 -0
- /package/src/migrations/{latest/biome-markdown-yaml-formatter-off → v1.3.1/0001-biome-markdown-yaml-formatter-off}/migration.d.ts +0 -0
- /package/src/migrations/{latest/biome-markdown-yaml-formatter-off → v1.3.1/0001-biome-markdown-yaml-formatter-off}/migration.js +0 -0
- /package/src/migrations/{latest/py-agentcore-launcher → v1.3.2/0001-py-agentcore-launcher}/metadata.json +0 -0
- /package/src/migrations/{latest/py-agentcore-launcher → v1.3.2/0001-py-agentcore-launcher}/migration.d.ts +0 -0
- /package/src/migrations/{latest/py-agentcore-launcher → v1.3.2/0001-py-agentcore-launcher}/migration.js +0 -0
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-biome-markdown-yaml-formatter-off": {
|
|
6
|
-
"version": "1.3.1",
|
|
7
|
-
"description": "Turn off Biome 2.6's Markdown and YAML formatting in biome.json, which formats them by default",
|
|
8
|
-
"implementation": "./src/migrations/latest/biome-markdown-yaml-formatter-off/migration"
|
|
9
|
-
},
|
|
10
|
-
"latest-py-agentcore-launcher": {
|
|
11
|
-
"version": "1.3.2",
|
|
12
|
-
"description": "Launch Python AgentCore code with the managed interpreter",
|
|
13
|
-
"implementation": "./src/migrations/latest/py-agentcore-launcher/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",
|
|
@@ -442,8 +432,18 @@
|
|
|
442
432
|
"description": "Keep a replaced guardrail version in each Terraform guardrail module of a TypeScript agent for 15 seconds after the runtime-config deployment, so agents' 5-second runtime-config cache never points at a deleted version",
|
|
443
433
|
"implementation": "./src/migrations/v1.3.0/0001-ts-agent-guardrails-terraform-version-retention/migration"
|
|
444
434
|
},
|
|
445
|
-
"
|
|
435
|
+
"v1.3.1-0001-biome-markdown-yaml-formatter-off": {
|
|
436
|
+
"version": "1.3.1",
|
|
437
|
+
"description": "Turn off Biome 2.6's Markdown and YAML formatting in biome.json, which formats them by default",
|
|
438
|
+
"implementation": "./src/migrations/v1.3.1/0001-biome-markdown-yaml-formatter-off/migration"
|
|
439
|
+
},
|
|
440
|
+
"v1.3.2-0001-py-agentcore-launcher": {
|
|
446
441
|
"version": "1.3.2",
|
|
442
|
+
"description": "Launch Python AgentCore code with the managed interpreter",
|
|
443
|
+
"implementation": "./src/migrations/v1.3.2/0001-py-agentcore-launcher/migration"
|
|
444
|
+
},
|
|
445
|
+
"sync-vended-versions": {
|
|
446
|
+
"version": "1.3.3",
|
|
447
447
|
"description": "Sync vended dependency versions and the tracked plugin version to those vended by this release",
|
|
448
448
|
"implementation": "./src/utils/version-upgrade-migration/migration"
|
|
449
449
|
}
|
|
@@ -615,7 +615,7 @@
|
|
|
615
615
|
}
|
|
616
616
|
},
|
|
617
617
|
"nx-23.3.1-nx-packages": {
|
|
618
|
-
"version": "1.3.
|
|
618
|
+
"version": "1.3.1",
|
|
619
619
|
"packages": {
|
|
620
620
|
"nx": {
|
|
621
621
|
"version": "23.3.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws/nx-plugin",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
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.17.
|
|
43
|
+
"@astral-sh/ruff-wasm-nodejs": "0.17.3",
|
|
44
44
|
"@biomejs/js-api": "6.1.0",
|
|
45
|
-
"@biomejs/wasm-nodejs": "2.6.
|
|
45
|
+
"@biomejs/wasm-nodejs": "2.6.4",
|
|
46
46
|
"@getgrit/gritql": "0.0.3",
|
|
47
47
|
"@iarna/toml": "2.2.5",
|
|
48
48
|
"@modelcontextprotocol/sdk": "1.32.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@nx/vite": "23.3.1",
|
|
53
53
|
"@nxlv/python": "23.3.1",
|
|
54
54
|
"@phenomnomnominal/tsquery": "6.2.0",
|
|
55
|
-
"@types/estree": "1.0.
|
|
55
|
+
"@types/estree": "1.0.10",
|
|
56
56
|
"@types/js-yaml": "4.0.9",
|
|
57
57
|
"@types/mdast": "4.0.4",
|
|
58
58
|
"enquirer": "2.4.1",
|
|
@@ -216,7 +216,7 @@ def test_run_once_does_not_raise():
|
|
|
216
216
|
- packages/*
|
|
217
217
|
- packages/common/*
|
|
218
218
|
catalog:
|
|
219
|
-
'@types/node': 26.6.
|
|
219
|
+
'@types/node': 26.6.6
|
|
220
220
|
vite: 8.3.5
|
|
221
221
|
vitest: 5.0.5
|
|
222
222
|
'@vitest/coverage-v8': 5.0.5
|
|
@@ -435,7 +435,7 @@ def test_run_once_does_not_raise():
|
|
|
435
435
|
- packages/*
|
|
436
436
|
- packages/common/*
|
|
437
437
|
catalog:
|
|
438
|
-
'@types/node': 26.6.
|
|
438
|
+
'@types/node': 26.6.6
|
|
439
439
|
vite: 8.3.5
|
|
440
440
|
vitest: 5.0.5
|
|
441
441
|
'@vitest/coverage-v8': 5.0.5
|
|
@@ -50,7 +50,7 @@ exports[`infra generator > should configure Checkov target correctly > checkov-t
|
|
|
50
50
|
"default",
|
|
51
51
|
],
|
|
52
52
|
"options": {
|
|
53
|
-
"command": "uvx --from checkov==3.
|
|
53
|
+
"command": "uvx --from checkov==3.4.0 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
|
|
54
54
|
},
|
|
55
55
|
"outputs": [
|
|
56
56
|
"{workspaceRoot}/dist/{projectRoot}/checkov",
|
|
@@ -150,7 +150,7 @@ exports[`infra generator > should configure project.json with correct targets >
|
|
|
150
150
|
"default",
|
|
151
151
|
],
|
|
152
152
|
"options": {
|
|
153
|
-
"command": "uvx --from checkov==3.
|
|
153
|
+
"command": "uvx --from checkov==3.4.0 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
|
|
154
154
|
},
|
|
155
155
|
"outputs": [
|
|
156
156
|
"{workspaceRoot}/dist/{projectRoot}/checkov",
|
|
@@ -767,7 +767,7 @@ exports[`infra generator > should handle custom project names correctly > custom
|
|
|
767
767
|
"default",
|
|
768
768
|
],
|
|
769
769
|
"options": {
|
|
770
|
-
"command": "uvx --from checkov==3.
|
|
770
|
+
"command": "uvx --from checkov==3.4.0 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
|
|
771
771
|
},
|
|
772
772
|
"outputs": [
|
|
773
773
|
"{workspaceRoot}/dist/{projectRoot}/checkov",
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/
|
|
5
1
|
import { type MigrationReturnObject, type Tree } from '@nx/devkit';
|
|
6
2
|
/**
|
|
7
3
|
* Add the strands-agents-tools pillow override to the workspace root
|
|
@@ -9,10 +5,14 @@ import { type MigrationReturnObject, type Tree } from '@nx/devkit';
|
|
|
9
5
|
*
|
|
10
6
|
* strands-agents-tools caps pillow below the release that fixes its current
|
|
11
7
|
* CVEs, and uv reads `[tool.uv] override-dependencies` only from the workspace
|
|
12
|
-
* root, so the root carries the override (`
|
|
8
|
+
* root, so the root carries the override (`UV_OVERRIDES`). It applies when
|
|
13
9
|
* any project's `[project].dependencies` names strands-agents-tools. A user
|
|
14
10
|
* override for the same package is kept as written. `uv.lock` is left to the
|
|
15
11
|
* user, as the version sync leaves it, so `nextSteps` asks for `uv sync` when
|
|
16
12
|
* the root changes.
|
|
13
|
+
*
|
|
14
|
+
* Released in v1.0.15 and frozen. Generators stopped writing the override
|
|
15
|
+
* once strands-agents-tools 0.8.11 allowed pillow 13. The override is still
|
|
16
|
+
* satisfiable with 0.8.11 (`pillow<14`), so this migration keeps writing it.
|
|
17
17
|
*/
|
|
18
18
|
export default function migration(tree: Tree): Promise<MigrationReturnObject>;
|
|
@@ -1,21 +1,93 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/ import {
|
|
4
|
+
*/ import { stringify } from "@iarna/toml";
|
|
5
|
+
import { getProjects, joinPathFragments } from "@nx/devkit";
|
|
6
|
+
import { parsePipRequirementsLine } from "pip-requirements-js";
|
|
5
7
|
import { formatFilesInSubtree } from "../../../utils/format.js";
|
|
6
|
-
import {
|
|
8
|
+
import { normalizeDistributionName } from "../../../utils/names.js";
|
|
7
9
|
import { tryReadToml } from "../../../utils/toml.js";
|
|
10
|
+
/**
|
|
11
|
+
* The overrides this migration shipped with in v1.0.15, keyed by the vended
|
|
12
|
+
* package whose own requirement they override. Kept here, not in versions.ts,
|
|
13
|
+
* so the released behaviour does not change when the generators stop writing
|
|
14
|
+
* the override.
|
|
15
|
+
*/ const UV_OVERRIDES = {
|
|
16
|
+
'strands-agents-tools': [
|
|
17
|
+
'pillow>=13.0.0'
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
// PEP 503 name of a requirement, or undefined for one that names no package or
|
|
21
|
+
// cannot be parsed.
|
|
22
|
+
const requirementName = (requirement)=>{
|
|
23
|
+
if (typeof requirement !== 'string') {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const parsed = parsePipRequirementsLine(requirement);
|
|
28
|
+
return parsed?.type === 'ProjectName' || parsed?.type === 'ProjectURL' ? normalizeDistributionName(parsed.name) : undefined;
|
|
29
|
+
} catch {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Add the `UV_OVERRIDES` entries for the packages named in `requirements` to
|
|
35
|
+
* the workspace root `[tool.uv] override-dependencies`, which is the only place
|
|
36
|
+
* uv reads overrides from.
|
|
37
|
+
*
|
|
38
|
+
* Existing entries keep their order, and a package the list already overrides
|
|
39
|
+
* is left as the user wrote it. The root file is written only when an entry is
|
|
40
|
+
* added. Returns whether it was.
|
|
41
|
+
*/ const addUvOverrideDependencies = (tree, requirements)=>{
|
|
42
|
+
const rootPyprojectPath = 'pyproject.toml';
|
|
43
|
+
const toml = tryReadToml(tree, rootPyprojectPath);
|
|
44
|
+
if (!toml) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const names = new Set(requirements.map(requirementName));
|
|
48
|
+
const overrides = Object.entries(UV_OVERRIDES).flatMap(([dependency, entries])=>names.has(normalizeDistributionName(dependency)) ? entries : []);
|
|
49
|
+
if (overrides.length === 0) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const existing = toml.tool?.uv?.['override-dependencies'];
|
|
53
|
+
if (existing !== undefined && !Array.isArray(existing)) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const merged = [
|
|
57
|
+
...existing ?? []
|
|
58
|
+
];
|
|
59
|
+
const overridden = new Set(merged.map(requirementName));
|
|
60
|
+
for (const entry of overrides){
|
|
61
|
+
const name = requirementName(entry);
|
|
62
|
+
if (!overridden.has(name)) {
|
|
63
|
+
merged.push(entry);
|
|
64
|
+
overridden.add(name);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (merged.length === (existing ?? []).length) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
toml.tool ??= {};
|
|
71
|
+
toml.tool.uv ??= {};
|
|
72
|
+
toml.tool.uv['override-dependencies'] = merged;
|
|
73
|
+
tree.write(rootPyprojectPath, stringify(toml));
|
|
74
|
+
return true;
|
|
75
|
+
};
|
|
8
76
|
/**
|
|
9
77
|
* Add the strands-agents-tools pillow override to the workspace root
|
|
10
78
|
* pyproject.toml uv override-dependencies.
|
|
11
79
|
*
|
|
12
80
|
* strands-agents-tools caps pillow below the release that fixes its current
|
|
13
81
|
* CVEs, and uv reads `[tool.uv] override-dependencies` only from the workspace
|
|
14
|
-
* root, so the root carries the override (`
|
|
82
|
+
* root, so the root carries the override (`UV_OVERRIDES`). It applies when
|
|
15
83
|
* any project's `[project].dependencies` names strands-agents-tools. A user
|
|
16
84
|
* override for the same package is kept as written. `uv.lock` is left to the
|
|
17
85
|
* user, as the version sync leaves it, so `nextSteps` asks for `uv sync` when
|
|
18
86
|
* the root changes.
|
|
87
|
+
*
|
|
88
|
+
* Released in v1.0.15 and frozen. Generators stopped writing the override
|
|
89
|
+
* once strands-agents-tools 0.8.11 allowed pillow 13. The override is still
|
|
90
|
+
* satisfiable with 0.8.11 (`pillow<14`), so this migration keeps writing it.
|
|
19
91
|
*/ export default async function migration(tree) {
|
|
20
92
|
const nextSteps = [];
|
|
21
93
|
if (tree.exists('pyproject.toml')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.15/0001-py-agent-pillow-override/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 { formatFilesInSubtree } from '../../../utils/format.js';\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.0.15/0001-py-agent-pillow-override/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { type JsonMap, stringify } from '@iarna/toml';\nimport {\n getProjects,\n joinPathFragments,\n type MigrationReturnObject,\n type Tree,\n} from '@nx/devkit';\nimport { parsePipRequirementsLine } from 'pip-requirements-js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { normalizeDistributionName } from '../../../utils/names.js';\nimport type { UVPyprojectToml } from '../../../utils/nxlv-python.js';\nimport { tryReadToml } from '../../../utils/toml.js';\n\n/**\n * The overrides this migration shipped with in v1.0.15, keyed by the vended\n * package whose own requirement they override. Kept here, not in versions.ts,\n * so the released behaviour does not change when the generators stop writing\n * the override.\n */\nconst UV_OVERRIDES: Readonly<Record<string, readonly string[]>> = {\n 'strands-agents-tools': ['pillow>=13.0.0'],\n};\n\n// PEP 503 name of a requirement, or undefined for one that names no package or\n// cannot be parsed.\nconst requirementName = (requirement: unknown): string | undefined => {\n if (typeof requirement !== 'string') {\n return undefined;\n }\n try {\n const parsed = parsePipRequirementsLine(requirement);\n return parsed?.type === 'ProjectName' || parsed?.type === 'ProjectURL'\n ? normalizeDistributionName(parsed.name)\n : undefined;\n } catch {\n return undefined;\n }\n};\n\n/**\n * Add the `UV_OVERRIDES` entries for the packages named in `requirements` to\n * the workspace root `[tool.uv] override-dependencies`, which is the only place\n * uv reads overrides from.\n *\n * Existing entries keep their order, and a package the list already overrides\n * is left as the user wrote it. The root file is written only when an entry is\n * added. Returns whether it was.\n */\nconst addUvOverrideDependencies = (\n tree: Tree,\n requirements: readonly string[],\n): boolean => {\n const rootPyprojectPath = 'pyproject.toml';\n const toml = tryReadToml(tree, rootPyprojectPath) as\n | UVPyprojectToml\n | undefined;\n if (!toml) {\n return false;\n }\n const names = new Set(requirements.map(requirementName));\n const overrides = Object.entries(UV_OVERRIDES).flatMap(\n ([dependency, entries]) =>\n names.has(normalizeDistributionName(dependency)) ? entries : [],\n );\n if (overrides.length === 0) {\n return false;\n }\n\n const existing = toml.tool?.uv?.['override-dependencies'];\n if (existing !== undefined && !Array.isArray(existing)) {\n return false;\n }\n const merged = [...(existing ?? [])];\n const overridden = new Set(merged.map(requirementName));\n for (const entry of overrides) {\n const name = requirementName(entry);\n if (!overridden.has(name)) {\n merged.push(entry);\n overridden.add(name);\n }\n }\n if (merged.length === (existing ?? []).length) {\n return false;\n }\n\n toml.tool ??= {};\n toml.tool.uv ??= {};\n toml.tool.uv['override-dependencies'] = merged;\n tree.write(rootPyprojectPath, stringify(toml as JsonMap));\n return true;\n};\n\n/**\n * Add the strands-agents-tools pillow override to the workspace root\n * pyproject.toml uv override-dependencies.\n *\n * strands-agents-tools caps pillow below the release that fixes its current\n * CVEs, and uv reads `[tool.uv] override-dependencies` only from the workspace\n * root, so the root carries the override (`UV_OVERRIDES`). It applies when\n * any project's `[project].dependencies` names strands-agents-tools. A user\n * override for the same package is kept as written. `uv.lock` is left to the\n * user, as the version sync leaves it, so `nextSteps` asks for `uv sync` when\n * the root changes.\n *\n * Released in v1.0.15 and frozen. Generators stopped writing the override\n * once strands-agents-tools 0.8.11 allowed pillow 13. The override is still\n * satisfiable with 0.8.11 (`pillow<14`), so this migration keeps writing it.\n */\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n\n if (tree.exists('pyproject.toml')) {\n const requirements = [...getProjects(tree).values()].flatMap(({ root }) => {\n const dependencies = (\n tryReadToml(tree, joinPathFragments(root, 'pyproject.toml')) as\n | UVPyprojectToml\n | undefined\n )?.project?.dependencies;\n return Array.isArray(dependencies) ? dependencies : [];\n });\n if (addUvOverrideDependencies(tree, requirements)) {\n nextSteps.push(\n 'The workspace root pyproject.toml now overrides a dependency of strands-agents-tools. Run `uv sync` to update uv.lock.',\n );\n }\n }\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps };\n}\n"],"names":["stringify","getProjects","joinPathFragments","parsePipRequirementsLine","formatFilesInSubtree","normalizeDistributionName","tryReadToml","UV_OVERRIDES","requirementName","requirement","undefined","parsed","type","name","addUvOverrideDependencies","tree","requirements","rootPyprojectPath","toml","names","Set","map","overrides","Object","entries","flatMap","dependency","has","length","existing","tool","uv","Array","isArray","merged","overridden","entry","push","add","write","migration","nextSteps","exists","values","root","dependencies","project"],"mappings":"AAAA;;;CAGC,GACD,SAAuBA,SAAS,QAAQ,cAAc;AACtD,SACEC,WAAW,EACXC,iBAAiB,QAGZ,aAAa;AACpB,SAASC,wBAAwB,QAAQ,sBAAsB;AAC/D,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,yBAAyB,QAAQ,0BAA0B;AAEpE,SAASC,WAAW,QAAQ,yBAAyB;AAErD;;;;;CAKC,GACD,MAAMC,eAA4D;IAChE,wBAAwB;QAAC;KAAiB;AAC5C;AAEA,+EAA+E;AAC/E,oBAAoB;AACpB,MAAMC,kBAAkB,CAACC;IACvB,IAAI,OAAOA,gBAAgB,UAAU;QACnC,OAAOC;IACT;IACA,IAAI;QACF,MAAMC,SAASR,yBAAyBM;QACxC,OAAOE,QAAQC,SAAS,iBAAiBD,QAAQC,SAAS,eACtDP,0BAA0BM,OAAOE,IAAI,IACrCH;IACN,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AAEA;;;;;;;;CAQC,GACD,MAAMI,4BAA4B,CAChCC,MACAC;IAEA,MAAMC,oBAAoB;IAC1B,MAAMC,OAAOZ,YAAYS,MAAME;IAG/B,IAAI,CAACC,MAAM;QACT,OAAO;IACT;IACA,MAAMC,QAAQ,IAAIC,IAAIJ,aAAaK,GAAG,CAACb;IACvC,MAAMc,YAAYC,OAAOC,OAAO,CAACjB,cAAckB,OAAO,CACpD,CAAC,CAACC,YAAYF,QAAQ,GACpBL,MAAMQ,GAAG,CAACtB,0BAA0BqB,eAAeF,UAAU,EAAE;IAEnE,IAAIF,UAAUM,MAAM,KAAK,GAAG;QAC1B,OAAO;IACT;IAEA,MAAMC,WAAWX,KAAKY,IAAI,EAAEC,IAAI,CAAC,wBAAwB;IACzD,IAAIF,aAAanB,aAAa,CAACsB,MAAMC,OAAO,CAACJ,WAAW;QACtD,OAAO;IACT;IACA,MAAMK,SAAS;WAAKL,YAAY,EAAE;KAAE;IACpC,MAAMM,aAAa,IAAIf,IAAIc,OAAOb,GAAG,CAACb;IACtC,KAAK,MAAM4B,SAASd,UAAW;QAC7B,MAAMT,OAAOL,gBAAgB4B;QAC7B,IAAI,CAACD,WAAWR,GAAG,CAACd,OAAO;YACzBqB,OAAOG,IAAI,CAACD;YACZD,WAAWG,GAAG,CAACzB;QACjB;IACF;IACA,IAAIqB,OAAON,MAAM,KAAK,AAACC,CAAAA,YAAY,EAAE,AAAD,EAAGD,MAAM,EAAE;QAC7C,OAAO;IACT;IAEAV,KAAKY,IAAI,KAAK,CAAC;IACfZ,KAAKY,IAAI,CAACC,EAAE,KAAK,CAAC;IAClBb,KAAKY,IAAI,CAACC,EAAE,CAAC,wBAAwB,GAAGG;IACxCnB,KAAKwB,KAAK,CAACtB,mBAAmBjB,UAAUkB;IACxC,OAAO;AACT;AAEA;;;;;;;;;;;;;;;CAeC,GACD,eAAe,eAAesB,UAC5BzB,IAAU;IAEV,MAAM0B,YAAsB,EAAE;IAE9B,IAAI1B,KAAK2B,MAAM,CAAC,mBAAmB;QACjC,MAAM1B,eAAe;eAAIf,YAAYc,MAAM4B,MAAM;SAAG,CAAClB,OAAO,CAAC,CAAC,EAAEmB,IAAI,EAAE;YACpE,MAAMC,eACJvC,YAAYS,MAAMb,kBAAkB0C,MAAM,oBAGzCE,SAASD;YACZ,OAAOb,MAAMC,OAAO,CAACY,gBAAgBA,eAAe,EAAE;QACxD;QACA,IAAI/B,0BAA0BC,MAAMC,eAAe;YACjDyB,UAAUJ,IAAI,CACZ;QAEJ;IACF;IAEA,MAAMjC,qBAAqBW;IAE3B,OAAO;QAAE0B;IAAU;AACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.3.1/0001-biome-markdown-yaml-formatter-off/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n getDependencyVersionFromPackageJson,\n type MigrationReturnObject,\n readJson,\n type Tree,\n writeJson,\n} from '@nx/devkit';\nimport { gte, minVersion, validRange } from 'semver';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { ownedDependencies } from '../../../utils/version-upgrade-migration/owned-dependencies.js';\nimport { syncedTsVersion } from '../../../utils/version-upgrade-migration/sync-vended-versions.js';\n\n/**\n * Turn off Biome's Markdown and YAML formatting in `biome.json`.\n *\n * Biome 2.6 formats Markdown and YAML by default. The vended `format` target\n * runs `biome format {projectRoot}`, so after the upgrade it fails on generated\n * README.md files and the TypeScript Greengrass component's `recipe.yaml`, and\n * `lint` and `build` stop with it.\n *\n * Guardrails:\n * - A workspace without `biome.json` is left alone.\n * - A top-level `markdown` or `yaml` key that is already present is the user's\n * own setting and is kept as it is. Biome 2.5 rejects both keys, so one is\n * only present when the user configured Biome 2.6 themselves.\n * - Missing keys go right after `css`, where the generators place them, or at\n * the end when there is no `css` section.\n * - Idempotent: a second run finds both keys present and changes nothing.\n * - Biome 2.5 rejects both keys and then fails every `format` and `lint`\n * target, so they are added only when the workspace runs Biome 2.6 or later\n * once `nx migrate` finishes. Otherwise `biome.json` is left as it is and a\n * next step says what to add after moving to Biome 2.6.\n */\n\nconst BIOME_CONFIG = 'biome.json';\n\nconst LANGUAGES = ['markdown', 'yaml'] as const;\n\nconst FORMATTER_OFF = { formatter: { enabled: false } };\n\nconst BIOME = '@biomejs/biome';\n\n/** First Biome release that accepts the `markdown` and `yaml` keys. */\nconst MIN_BIOME_VERSION = '2.6.0';\n\n/** Whether every version a semver range allows is Biome 2.6 or later. */\nconst allowsOnlyBiome26 = (specifier: unknown): boolean => {\n if (typeof specifier !== 'string' || validRange(specifier) === null) {\n return false;\n }\n const lowest = minVersion(specifier);\n return lowest !== null && gte(lowest, MIN_BIOME_VERSION);\n};\n\n/**\n * Whether the workspace runs Biome 2.6 or later once `nx migrate` finishes.\n *\n * The version sync runs after this migration in the same `nx migrate`, so the\n * root `package.json` still holds the old Biome here. The check takes the lowest\n * version the declared range (or the catalog entry it references) allows, then\n * the version the sync will move Biome to. A tag, alias or missing declaration\n * counts only when the sync moves it.\n */\nconst runsBiome26AfterMigrate = async (tree: Tree): Promise<boolean> => {\n if (!tree.exists('package.json')) {\n return false;\n }\n const { dependencies, devDependencies } = readJson(tree, 'package.json');\n const declared: unknown = devDependencies?.[BIOME] ?? dependencies?.[BIOME];\n if (declared === undefined) {\n return false;\n }\n const resolved = getDependencyVersionFromPackageJson(\n tree,\n BIOME,\n 'package.json',\n ['devDependencies', 'dependencies'],\n );\n if (allowsOnlyBiome26(resolved)) {\n return true;\n }\n return allowsOnlyBiome26(\n syncedTsVersion(tree, await ownedDependencies(tree), BIOME, declared),\n );\n};\n\nconst SKIPPED_NEXT_STEP =\n 'Biome stays below 2.6 in this workspace, and Biome 2.5 rejects the `markdown` and `yaml` keys, so biome.json was left as it is. ' +\n 'Biome 2.6 formats Markdown and YAML files by default. After you move `@biomejs/biome` to 2.6 or later, add ' +\n '`\"markdown\": { \"formatter\": { \"enabled\": false } }` and `\"yaml\": { \"formatter\": { \"enabled\": false } }` to biome.json, ' +\n 'or the `format` target fails on generated README.md and YAML files.';\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n if (!tree.exists(BIOME_CONFIG)) {\n return { nextSteps: [] };\n }\n\n const biome: Record<string, unknown> = readJson(tree, BIOME_CONFIG);\n const missing = LANGUAGES.filter((language) => biome[language] === undefined);\n if (missing.length === 0) {\n return { nextSteps: [] };\n }\n if (!(await runsBiome26AfterMigrate(tree))) {\n return { nextSteps: [SKIPPED_NEXT_STEP] };\n }\n\n const additions = Object.fromEntries(\n missing.map((language) => [language, FORMATTER_OFF]),\n );\n const entries = Object.entries(biome);\n const cssIndex = entries.findIndex(([key]) => key === 'css');\n const insertAt = cssIndex === -1 ? entries.length : cssIndex + 1;\n writeJson(\n tree,\n BIOME_CONFIG,\n Object.fromEntries([\n ...entries.slice(0, insertAt),\n ...Object.entries(additions),\n ...entries.slice(insertAt),\n ]),\n );\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps: [] };\n}\n"],"names":["getDependencyVersionFromPackageJson","readJson","writeJson","gte","minVersion","validRange","formatFilesInSubtree","ownedDependencies","syncedTsVersion","BIOME_CONFIG","LANGUAGES","FORMATTER_OFF","formatter","enabled","BIOME","MIN_BIOME_VERSION","allowsOnlyBiome26","specifier","lowest","runsBiome26AfterMigrate","tree","exists","dependencies","devDependencies","declared","undefined","resolved","SKIPPED_NEXT_STEP","migration","nextSteps","biome","missing","filter","language","length","additions","Object","fromEntries","map","entries","cssIndex","findIndex","key","insertAt","slice"],"mappings":"AAAA;;;CAGC,GACD,SACEA,mCAAmC,EAEnCC,QAAQ,EAERC,SAAS,QACJ,aAAa;AACpB,SAASC,GAAG,EAAEC,UAAU,EAAEC,UAAU,QAAQ,SAAS;AACrD,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,iBAAiB,QAAQ,iEAAiE;AACnG,SAASC,eAAe,QAAQ,mEAAmE;AAEnG;;;;;;;;;;;;;;;;;;;;CAoBC,GAED,MAAMC,eAAe;AAErB,MAAMC,YAAY;IAAC;IAAY;CAAO;AAEtC,MAAMC,gBAAgB;IAAEC,WAAW;QAAEC,SAAS;IAAM;AAAE;AAEtD,MAAMC,QAAQ;AAEd,qEAAqE,GACrE,MAAMC,oBAAoB;AAE1B,uEAAuE,GACvE,MAAMC,oBAAoB,CAACC;IACzB,IAAI,OAAOA,cAAc,YAAYZ,WAAWY,eAAe,MAAM;QACnE,OAAO;IACT;IACA,MAAMC,SAASd,WAAWa;IAC1B,OAAOC,WAAW,QAAQf,IAAIe,QAAQH;AACxC;AAEA;;;;;;;;CAQC,GACD,MAAMI,0BAA0B,OAAOC;IACrC,IAAI,CAACA,KAAKC,MAAM,CAAC,iBAAiB;QAChC,OAAO;IACT;IACA,MAAM,EAAEC,YAAY,EAAEC,eAAe,EAAE,GAAGtB,SAASmB,MAAM;IACzD,MAAMI,WAAoBD,iBAAiB,CAACT,MAAM,IAAIQ,cAAc,CAACR,MAAM;IAC3E,IAAIU,aAAaC,WAAW;QAC1B,OAAO;IACT;IACA,MAAMC,WAAW1B,oCACfoB,MACAN,OACA,gBACA;QAAC;QAAmB;KAAe;IAErC,IAAIE,kBAAkBU,WAAW;QAC/B,OAAO;IACT;IACA,OAAOV,kBACLR,gBAAgBY,MAAM,MAAMb,kBAAkBa,OAAON,OAAOU;AAEhE;AAEA,MAAMG,oBACJ,qIACA,gHACA,4HACA;AAEF,eAAe,eAAeC,UAC5BR,IAAU;IAEV,IAAI,CAACA,KAAKC,MAAM,CAACZ,eAAe;QAC9B,OAAO;YAAEoB,WAAW,EAAE;QAAC;IACzB;IAEA,MAAMC,QAAiC7B,SAASmB,MAAMX;IACtD,MAAMsB,UAAUrB,UAAUsB,MAAM,CAAC,CAACC,WAAaH,KAAK,CAACG,SAAS,KAAKR;IACnE,IAAIM,QAAQG,MAAM,KAAK,GAAG;QACxB,OAAO;YAAEL,WAAW,EAAE;QAAC;IACzB;IACA,IAAI,CAAE,MAAMV,wBAAwBC,OAAQ;QAC1C,OAAO;YAAES,WAAW;gBAACF;aAAkB;QAAC;IAC1C;IAEA,MAAMQ,YAAYC,OAAOC,WAAW,CAClCN,QAAQO,GAAG,CAAC,CAACL,WAAa;YAACA;YAAUtB;SAAc;IAErD,MAAM4B,UAAUH,OAAOG,OAAO,CAACT;IAC/B,MAAMU,WAAWD,QAAQE,SAAS,CAAC,CAAC,CAACC,IAAI,GAAKA,QAAQ;IACtD,MAAMC,WAAWH,aAAa,CAAC,IAAID,QAAQL,MAAM,GAAGM,WAAW;IAC/DtC,UACEkB,MACAX,cACA2B,OAAOC,WAAW,CAAC;WACdE,QAAQK,KAAK,CAAC,GAAGD;WACjBP,OAAOG,OAAO,CAACJ;WACfI,QAAQK,KAAK,CAACD;KAClB;IAGH,MAAMrC,qBAAqBc;IAE3B,OAAO;QAAES,WAAW,EAAE;IAAC;AACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/v1.3.2/0001-py-agentcore-launcher/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { basename } from 'node:path';\nimport {\n getProjects,\n joinPathFragments,\n type MigrationReturnObject,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { PY_AGENT_GENERATOR_INFO } from '../../../py/agent/generator.js';\nimport { PY_MCP_SERVER_GENERATOR_INFO } from '../../../py/mcp-server/generator.js';\nimport { applyGritQL, matchGritQL } from '../../../utils/ast.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { kebabCase } from '../../../utils/names.js';\nimport type { ComponentMetadata } from '../../../utils/nx.js';\n\nconst TERRAFORM_RUNTIME =\n 'packages/common/terraform/src/core/agent-core-code/runtime.tf';\nconst PYTHON_AGENT_CORE_LAUNCHER = 'agentcore_launcher.py';\nconst launcher = `\\\nimport sys\nfrom pathlib import Path\n\nfrom opentelemetry.instrumentation.auto_instrumentation import run\n\nif __name__ == \"__main__\":\n sys.argv = [\n \"opentelemetry-instrument\",\n sys.executable,\n str(Path(__file__).with_name(\"main.py\")),\n *sys.argv[1:],\n ]\n run()\n`;\nconst terraformEntry =\n 'entry_point = var.code_entry_point == \"agentcore_launcher.py\" ? [var.code_entry_point] : [\"opentelemetry-instrument\", var.code_entry_point]';\nconst oldTerraformEntry =\n 'entry_point = [\"opentelemetry-instrument\", var.code_entry_point]';\nconst hcl = (pattern: string) => `language hcl\\n${pattern}`;\nconst terraformInput = (entryPoint: string) =>\n `\\`module \"agent_core_runtime\" { $body }\\` where { $body <: contains \\`code_runtime = $runtime\\`, $runtime <: r\".*PYTHON_.*\", $body <: contains \\`code_entry_point = \"${entryPoint}\"\\` }`;\nconst cdkInput = (entryPoint: string) =>\n `\\`AgentRuntimeArtifact.fromCodeAsset({ $props })\\` where { $props <: contains \\`runtime: AgentCoreRuntime.$runtime\\`, $runtime <: r\"PYTHON_.*\", $props <: contains \\`entrypoint: ${entryPoint}\\` }`;\n\n/** Add the interpreter-safe launcher without changing the user's main.py or application. */\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n if (\n tree.exists(TERRAFORM_RUNTIME) &&\n (await matchGritQL(\n tree,\n TERRAFORM_RUNTIME,\n hcl(`\\`${oldTerraformEntry}\\``),\n ))\n ) {\n await applyGritQL(\n tree,\n TERRAFORM_RUNTIME,\n hcl(`\\`${oldTerraformEntry}\\` => \\`${terraformEntry}\\``),\n );\n }\n const coreMigrated =\n tree.exists(TERRAFORM_RUNTIME) &&\n (await matchGritQL(tree, TERRAFORM_RUNTIME, hcl(`\\`${terraformEntry}\\``)));\n for (const project of getProjects(tree).values()) {\n const components: ComponentMetadata[] = project.metadata?.components ?? [];\n let changed = false;\n for (const component of components) {\n const agent = component.generator === PY_AGENT_GENERATOR_INFO.id;\n if (\n (!agent && component.generator !== PY_MCP_SERVER_GENERATOR_INFO.id) ||\n component.infra !== 'agentcore'\n ) {\n continue;\n }\n const terraform = component.iac === 'terraform';\n const targetName = `${component.name}-package`;\n const target = project.targets?.[targetName];\n const name = kebabCase(component.rc ?? '');\n const packageDir = joinPathFragments(\n project.root,\n 'package',\n basename(component.path ?? ''),\n );\n const outputDir = joinPathFragments(\n 'dist',\n project.root,\n 'package',\n name,\n );\n const launcherPath = joinPathFragments(\n packageDir,\n PYTHON_AGENT_CORE_LAUNCHER,\n );\n const copyLauncher = `shx cp ${launcherPath} ${outputDir}/${PYTHON_AGENT_CORE_LAUNCHER}`;\n const commands = target?.options?.commands;\n const expectedCommands = [\n `shx rm -rf ${outputDir}`,\n `shx mkdir -p ${outputDir}`,\n `shx cp -R dist/${project.root}/bundle-arm/. ${outputDir}`,\n `shx cp -R ${project.sourceRoot}/. ${outputDir}/${basename(project.sourceRoot ?? '')}`,\n `shx cp ${packageDir}/main.py ${outputDir}/main.py`,\n ];\n const category = agent ? 'agents' : 'mcp-servers';\n const infraPath = terraform\n ? `packages/common/terraform/src/app/${category}/${name}/${name}.tf`\n : `packages/common/constructs/src/app/${category}/${name}/${name}.ts`;\n const report = () =>\n nextSteps.push(\n `${project.name}/${component.name}: review customized packaging or ${infraPath}; add ${PYTHON_AGENT_CORE_LAUNCHER} calling OpenTelemetry run() with sys.executable and main.py, copy it to the package root, and select it as this Python runtime's code entrypoint.`,\n );\n if (\n !component.path ||\n !component.rc ||\n !['cdk', 'terraform'].includes(component.iac) ||\n target?.executor !== 'nx:run-commands' ||\n target.options?.parallel !== false ||\n !Array.isArray(commands) ||\n ![5, 6].includes(commands.length) ||\n expectedCommands.some(\n (command, index) => commands[index] !== command,\n ) ||\n (commands.length === 6 && commands[5] !== copyLauncher) ||\n !tree.exists(`${packageDir}/main.py`) ||\n !tree.exists(infraPath) ||\n (tree.exists(launcherPath) &&\n tree.read(launcherPath, 'utf-8') !== launcher) ||\n (terraform && !tree.exists(TERRAFORM_RUNTIME))\n ) {\n report();\n continue;\n }\n const oldEntry = terraform\n ? hcl(terraformInput('main.py'))\n : cdkInput(\"['opentelemetry-instrument', 'main.py']\");\n const newEntry = terraform\n ? hcl(terraformInput(PYTHON_AGENT_CORE_LAUNCHER))\n : cdkInput(\"['agentcore_launcher.py']\");\n const alreadyMigrated = await matchGritQL(tree, infraPath, newEntry);\n if (\n (!alreadyMigrated && !(await matchGritQL(tree, infraPath, oldEntry))) ||\n (terraform && !coreMigrated)\n ) {\n report();\n continue;\n }\n if (!tree.exists(launcherPath)) tree.write(launcherPath, launcher);\n if (commands.length === 5) {\n commands.push(copyLauncher);\n changed = true;\n }\n if (!alreadyMigrated) {\n await applyGritQL(\n tree,\n infraPath,\n terraform\n ? hcl(\n '`module \"agent_core_runtime\" { $body }` where { $body <: contains `code_runtime = $runtime`, $runtime <: r\".*PYTHON_.*\", $body <: contains bubble `code_entry_point = \"main.py\"` => `code_entry_point = \"agentcore_launcher.py\"` }',\n )\n : \"`AgentRuntimeArtifact.fromCodeAsset({ $props })` where { $props <: contains `runtime: AgentCoreRuntime.$runtime`, $runtime <: r\\\"PYTHON_.*\\\", $props <: contains bubble `entrypoint: ['opentelemetry-instrument', 'main.py']` => `entrypoint: ['agentcore_launcher.py']` }\",\n );\n }\n }\n if (changed) updateProjectConfiguration(tree, project.name, project);\n }\n await formatFilesInSubtree(tree);\n return { nextSteps };\n}\n"],"names":["basename","getProjects","joinPathFragments","updateProjectConfiguration","PY_AGENT_GENERATOR_INFO","PY_MCP_SERVER_GENERATOR_INFO","applyGritQL","matchGritQL","formatFilesInSubtree","kebabCase","TERRAFORM_RUNTIME","PYTHON_AGENT_CORE_LAUNCHER","launcher","terraformEntry","oldTerraformEntry","hcl","pattern","terraformInput","entryPoint","cdkInput","migration","tree","nextSteps","exists","coreMigrated","project","values","components","metadata","changed","component","agent","generator","id","infra","terraform","iac","targetName","name","target","targets","rc","packageDir","root","path","outputDir","launcherPath","copyLauncher","commands","options","expectedCommands","sourceRoot","category","infraPath","report","push","includes","executor","parallel","Array","isArray","length","some","command","index","read","oldEntry","newEntry","alreadyMigrated","write"],"mappings":"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"}
|
|
@@ -259,7 +259,7 @@ export default {
|
|
|
259
259
|
|
|
260
260
|
exports[`preset generator > should run successfully > biome.json 1`] = `
|
|
261
261
|
"{
|
|
262
|
-
"$schema": "https://biomejs.dev/schemas/2.6.
|
|
262
|
+
"$schema": "https://biomejs.dev/schemas/2.6.4/schema.json",
|
|
263
263
|
"root": true,
|
|
264
264
|
"formatter": {
|
|
265
265
|
"enabled": true,
|
|
@@ -438,7 +438,7 @@ catalog:
|
|
|
438
438
|
'@nx/js': 23.3.1
|
|
439
439
|
'@nx/workspace': 23.3.1
|
|
440
440
|
typescript: ~6.0.3
|
|
441
|
-
'@biomejs/biome': 2.6.
|
|
441
|
+
'@biomejs/biome': 2.6.4
|
|
442
442
|
'@aws/nx-plugin': ^0.0.0
|
|
443
443
|
'@aws/nx-plugin-mcp': ^0.0.0
|
|
444
444
|
"
|
|
@@ -763,14 +763,14 @@ name = "proj.test_project"
|
|
|
763
763
|
version = "0.1.0"
|
|
764
764
|
dependencies = [
|
|
765
765
|
"proj-agent-connection",
|
|
766
|
-
"aws-lambda-powertools==3.
|
|
767
|
-
"aws-opentelemetry-distro==0.
|
|
768
|
-
"bedrock-agentcore==1.25.
|
|
769
|
-
"boto3==1.43.
|
|
766
|
+
"aws-lambda-powertools==3.38.0",
|
|
767
|
+
"aws-opentelemetry-distro==0.22.0",
|
|
768
|
+
"bedrock-agentcore==1.25.2",
|
|
769
|
+
"boto3==1.43.123",
|
|
770
770
|
"fastapi==0.162.0",
|
|
771
771
|
"mcp==1.28.1",
|
|
772
|
-
"strands-agents==1.
|
|
773
|
-
"strands-agents-tools==0.8.
|
|
772
|
+
"strands-agents==1.63.0",
|
|
773
|
+
"strands-agents-tools==0.8.11",
|
|
774
774
|
"uvicorn==0.54.0"
|
|
775
775
|
]
|
|
776
776
|
|
|
@@ -701,16 +701,16 @@ name = "proj.test_project"
|
|
|
701
701
|
version = "0.1.0"
|
|
702
702
|
dependencies = [
|
|
703
703
|
"proj-agent-connection",
|
|
704
|
-
"aws-lambda-powertools==3.
|
|
705
|
-
"aws-opentelemetry-distro==0.
|
|
706
|
-
"bedrock-agentcore==1.25.
|
|
707
|
-
"boto3==1.43.
|
|
704
|
+
"aws-lambda-powertools==3.38.0",
|
|
705
|
+
"aws-opentelemetry-distro==0.22.0",
|
|
706
|
+
"bedrock-agentcore==1.25.2",
|
|
707
|
+
"boto3==1.43.123",
|
|
708
708
|
"fastapi==0.162.0",
|
|
709
709
|
"mcp==1.28.1",
|
|
710
710
|
"langchain==1.4.7",
|
|
711
|
-
"langchain-aws==1.9.
|
|
712
|
-
"langgraph==1.2.
|
|
713
|
-
"langgraph-checkpoint-sqlite==3.1.
|
|
711
|
+
"langchain-aws==1.9.1",
|
|
712
|
+
"langgraph==1.2.19",
|
|
713
|
+
"langgraph-checkpoint-sqlite==3.1.3",
|
|
714
714
|
"aiosqlite==0.22.1",
|
|
715
715
|
"ag-ui-protocol==0.1.22",
|
|
716
716
|
"ag-ui-langgraph==0.0.47",
|
|
@@ -5,7 +5,7 @@ exports[`py#agent generator > should create DynamoDB checkpoint table and S3 off
|
|
|
5
5
|
required_providers {
|
|
6
6
|
aws = {
|
|
7
7
|
source = "hashicorp/aws"
|
|
8
|
-
version = "6.
|
|
8
|
+
version = "6.71.0"
|
|
9
9
|
}
|
|
10
10
|
random = {
|
|
11
11
|
source = "hashicorp/random"
|
|
@@ -381,7 +381,7 @@ exports[`py#agent generator > should match snapshot for Terraform generated file
|
|
|
381
381
|
required_providers {
|
|
382
382
|
aws = {
|
|
383
383
|
source = "hashicorp/aws"
|
|
384
|
-
version = "6.
|
|
384
|
+
version = "6.71.0"
|
|
385
385
|
}
|
|
386
386
|
random = {
|
|
387
387
|
source = "hashicorp/random"
|
|
@@ -704,7 +704,7 @@ exports[`py#agent generator > should match snapshot for Terraform generated file
|
|
|
704
704
|
required_providers {
|
|
705
705
|
aws = {
|
|
706
706
|
source = "hashicorp/aws"
|
|
707
|
-
version = "6.
|
|
707
|
+
version = "6.71.0"
|
|
708
708
|
}
|
|
709
709
|
null = {
|
|
710
710
|
source = "hashicorp/null"
|
|
@@ -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.
|
|
1066
|
+
uv run --with boto3==1.43.123 python -c "
|
|
1067
1067
|
import boto3
|
|
1068
1068
|
import json
|
|
1069
1069
|
import os
|
|
@@ -559,7 +559,7 @@ exports[`py#agent#guardrails generator > framework langchain > protocol a2a > sh
|
|
|
559
559
|
required_providers {
|
|
560
560
|
aws = {
|
|
561
561
|
source = "hashicorp/aws"
|
|
562
|
-
version = "6.
|
|
562
|
+
version = "6.71.0"
|
|
563
563
|
}
|
|
564
564
|
random = {
|
|
565
565
|
source = "hashicorp/random"
|
|
@@ -1242,7 +1242,7 @@ exports[`py#agent#guardrails generator > framework langchain > protocol ag-ui >
|
|
|
1242
1242
|
required_providers {
|
|
1243
1243
|
aws = {
|
|
1244
1244
|
source = "hashicorp/aws"
|
|
1245
|
-
version = "6.
|
|
1245
|
+
version = "6.71.0"
|
|
1246
1246
|
}
|
|
1247
1247
|
random = {
|
|
1248
1248
|
source = "hashicorp/random"
|
|
@@ -1925,7 +1925,7 @@ exports[`py#agent#guardrails generator > framework langchain > protocol http > s
|
|
|
1925
1925
|
required_providers {
|
|
1926
1926
|
aws = {
|
|
1927
1927
|
source = "hashicorp/aws"
|
|
1928
|
-
version = "6.
|
|
1928
|
+
version = "6.71.0"
|
|
1929
1929
|
}
|
|
1930
1930
|
random = {
|
|
1931
1931
|
source = "hashicorp/random"
|
|
@@ -2514,7 +2514,7 @@ exports[`py#agent#guardrails generator > framework strands > protocol a2a > shou
|
|
|
2514
2514
|
required_providers {
|
|
2515
2515
|
aws = {
|
|
2516
2516
|
source = "hashicorp/aws"
|
|
2517
|
-
version = "6.
|
|
2517
|
+
version = "6.71.0"
|
|
2518
2518
|
}
|
|
2519
2519
|
random = {
|
|
2520
2520
|
source = "hashicorp/random"
|
|
@@ -3099,7 +3099,7 @@ exports[`py#agent#guardrails generator > framework strands > protocol ag-ui > sh
|
|
|
3099
3099
|
required_providers {
|
|
3100
3100
|
aws = {
|
|
3101
3101
|
source = "hashicorp/aws"
|
|
3102
|
-
version = "6.
|
|
3102
|
+
version = "6.71.0"
|
|
3103
3103
|
}
|
|
3104
3104
|
random = {
|
|
3105
3105
|
source = "hashicorp/random"
|
|
@@ -3688,7 +3688,7 @@ exports[`py#agent#guardrails generator > framework strands > protocol http > sho
|
|
|
3688
3688
|
required_providers {
|
|
3689
3689
|
aws = {
|
|
3690
3690
|
source = "hashicorp/aws"
|
|
3691
|
-
version = "6.
|
|
3691
|
+
version = "6.71.0"
|
|
3692
3692
|
}
|
|
3693
3693
|
random = {
|
|
3694
3694
|
source = "hashicorp/random"
|
|
@@ -35,7 +35,7 @@ exports[`py#dynamodb generator > should generate terraform modules when iac is t
|
|
|
35
35
|
required_providers {
|
|
36
36
|
aws = {
|
|
37
37
|
source = "hashicorp/aws"
|
|
38
|
-
version = "6.
|
|
38
|
+
version = "6.71.0"
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -232,7 +232,7 @@ exports[`py#dynamodb generator > should generate terraform modules when iac is t
|
|
|
232
232
|
required_providers {
|
|
233
233
|
aws = {
|
|
234
234
|
source = "hashicorp/aws"
|
|
235
|
-
version = "6.
|
|
235
|
+
version = "6.71.0"
|
|
236
236
|
}
|
|
237
237
|
random = {
|
|
238
238
|
source = "hashicorp/random"
|
|
@@ -11,7 +11,7 @@ terraform {
|
|
|
11
11
|
required_providers {
|
|
12
12
|
aws = {
|
|
13
13
|
source = "hashicorp/aws"
|
|
14
|
-
version = "6.
|
|
14
|
+
version = "6.71.0"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -262,7 +262,7 @@ output "api_log_group_arn" {
|
|
|
262
262
|
}
|
|
263
263
|
aws = {
|
|
264
264
|
source = "hashicorp/aws"
|
|
265
|
-
version = "6.
|
|
265
|
+
version = "6.71.0"
|
|
266
266
|
}
|
|
267
267
|
random = {
|
|
268
268
|
source = "hashicorp/random"
|
|
@@ -908,7 +908,7 @@ terraform {
|
|
|
908
908
|
required_providers {
|
|
909
909
|
aws = {
|
|
910
910
|
source = "hashicorp/aws"
|
|
911
|
-
version = "6.
|
|
911
|
+
version = "6.71.0"
|
|
912
912
|
}
|
|
913
913
|
}
|
|
914
914
|
}
|
|
@@ -1159,7 +1159,7 @@ output "api_log_group_arn" {
|
|
|
1159
1159
|
}
|
|
1160
1160
|
aws = {
|
|
1161
1161
|
source = "hashicorp/aws"
|
|
1162
|
-
version = "6.
|
|
1162
|
+
version = "6.71.0"
|
|
1163
1163
|
}
|
|
1164
1164
|
random = {
|
|
1165
1165
|
source = "hashicorp/random"
|
|
@@ -1878,7 +1878,7 @@ terraform {
|
|
|
1878
1878
|
required_providers {
|
|
1879
1879
|
aws = {
|
|
1880
1880
|
source = "hashicorp/aws"
|
|
1881
|
-
version = "6.
|
|
1881
|
+
version = "6.71.0"
|
|
1882
1882
|
}
|
|
1883
1883
|
}
|
|
1884
1884
|
}
|
|
@@ -2129,7 +2129,7 @@ output "api_log_group_arn" {
|
|
|
2129
2129
|
}
|
|
2130
2130
|
aws = {
|
|
2131
2131
|
source = "hashicorp/aws"
|
|
2132
|
-
version = "6.
|
|
2132
|
+
version = "6.71.0"
|
|
2133
2133
|
}
|
|
2134
2134
|
random = {
|
|
2135
2135
|
source = "hashicorp/random"
|
|
@@ -2752,7 +2752,7 @@ terraform {
|
|
|
2752
2752
|
required_providers {
|
|
2753
2753
|
aws = {
|
|
2754
2754
|
source = "hashicorp/aws"
|
|
2755
|
-
version = "6.
|
|
2755
|
+
version = "6.71.0"
|
|
2756
2756
|
}
|
|
2757
2757
|
random = {
|
|
2758
2758
|
source = "hashicorp/random"
|
|
@@ -3065,7 +3065,7 @@ output "waf_web_acl_arn" {
|
|
|
3065
3065
|
}
|
|
3066
3066
|
aws = {
|
|
3067
3067
|
source = "hashicorp/aws"
|
|
3068
|
-
version = "6.
|
|
3068
|
+
version = "6.71.0"
|
|
3069
3069
|
}
|
|
3070
3070
|
random = {
|
|
3071
3071
|
source = "hashicorp/random"
|
|
@@ -4162,7 +4162,7 @@ terraform {
|
|
|
4162
4162
|
required_providers {
|
|
4163
4163
|
aws = {
|
|
4164
4164
|
source = "hashicorp/aws"
|
|
4165
|
-
version = "6.
|
|
4165
|
+
version = "6.71.0"
|
|
4166
4166
|
}
|
|
4167
4167
|
random = {
|
|
4168
4168
|
source = "hashicorp/random"
|
|
@@ -4475,7 +4475,7 @@ output "waf_web_acl_arn" {
|
|
|
4475
4475
|
}
|
|
4476
4476
|
aws = {
|
|
4477
4477
|
source = "hashicorp/aws"
|
|
4478
|
-
version = "6.
|
|
4478
|
+
version = "6.71.0"
|
|
4479
4479
|
}
|
|
4480
4480
|
random = {
|
|
4481
4481
|
source = "hashicorp/random"
|
|
@@ -5561,7 +5561,7 @@ terraform {
|
|
|
5561
5561
|
required_providers {
|
|
5562
5562
|
aws = {
|
|
5563
5563
|
source = "hashicorp/aws"
|
|
5564
|
-
version = "6.
|
|
5564
|
+
version = "6.71.0"
|
|
5565
5565
|
}
|
|
5566
5566
|
random = {
|
|
5567
5567
|
source = "hashicorp/random"
|
|
@@ -5874,7 +5874,7 @@ output "waf_web_acl_arn" {
|
|
|
5874
5874
|
}
|
|
5875
5875
|
aws = {
|
|
5876
5876
|
source = "hashicorp/aws"
|
|
5877
|
-
version = "6.
|
|
5877
|
+
version = "6.71.0"
|
|
5878
5878
|
}
|
|
5879
5879
|
random = {
|
|
5880
5880
|
source = "hashicorp/random"
|
|
@@ -71,7 +71,7 @@ exports[`lambda-handler project generator > terraform iac > should generate terr
|
|
|
71
71
|
required_providers {
|
|
72
72
|
aws = {
|
|
73
73
|
source = "hashicorp/aws"
|
|
74
|
-
version = "6.
|
|
74
|
+
version = "6.71.0"
|
|
75
75
|
}
|
|
76
76
|
archive = {
|
|
77
77
|
source = "hashicorp/archive"
|
|
@@ -256,7 +256,7 @@ exports[`lambda-handler project generator > terraform iac > should match snapsho
|
|
|
256
256
|
required_providers {
|
|
257
257
|
aws = {
|
|
258
258
|
source = "hashicorp/aws"
|
|
259
|
-
version = "6.
|
|
259
|
+
version = "6.71.0"
|
|
260
260
|
}
|
|
261
261
|
archive = {
|
|
262
262
|
source = "hashicorp/archive"
|