@aws/nx-plugin 1.0.0-rc.72 → 1.0.0-rc.74

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 (145) hide show
  1. package/LICENSE-THIRD-PARTY +1379 -2592
  2. package/README.md +7 -89
  3. package/migrations.json +38 -23
  4. package/package.json +4 -4
  5. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +1 -1
  6. package/src/infra/app/__snapshots__/generator.spec.ts.snap +3 -3
  7. package/src/internal/test-matrix/generator.js +15 -0
  8. package/src/internal/test-matrix/generator.js.map +1 -1
  9. package/src/license/config.d.ts +9 -0
  10. package/src/license/config.js +28 -0
  11. package/src/license/config.js.map +1 -1
  12. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  13. package/src/license/dependency-check/collectors/python-collector.js +9 -3
  14. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  15. package/src/license/generator.js +3 -17
  16. package/src/license/generator.js.map +1 -1
  17. package/src/license/known-exceptions.d.ts +0 -1
  18. package/src/license/known-exceptions.js +1 -23
  19. package/src/license/known-exceptions.js.map +1 -1
  20. package/src/migrations/latest/apt-security-updates-in-container-images/__snapshots__/migration.spec.ts.snap +90 -0
  21. package/src/migrations/latest/apt-security-updates-in-container-images/metadata.json +3 -0
  22. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js +90 -0
  23. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +1 -0
  24. package/src/migrations/latest/py-agent-session-id-middleware-extraction/metadata.json +3 -0
  25. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js +118 -0
  26. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +1 -0
  27. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/metadata.json +3 -0
  28. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.d.ts +6 -0
  29. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js +38 -0
  30. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +1 -0
  31. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -0
  32. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -0
  33. package/src/migrations/{latest/py-agent-a2a-lifespan-construction → v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction}/migration.js +14 -2
  34. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -0
  35. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
  36. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
  37. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.d.ts +2 -0
  38. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -0
  39. package/src/preset/__snapshots__/generator.spec.ts.snap +2 -2
  40. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +14 -22
  41. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +10 -21
  42. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +2 -2
  43. package/src/py/agent/a2a-connection/generator.js +5 -11
  44. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  45. package/src/py/agent/files/deploy/Dockerfile.template +7 -0
  46. package/src/py/agent/files/langchain/a2a/main.py.template +4 -15
  47. package/src/py/agent/files/langchain/ag-ui/main.py.template +2 -13
  48. package/src/py/agent/files/langchain/common/middleware/__init__.py.template +0 -0
  49. package/src/py/agent/files/langchain/common/middleware/session_id_middleware.py.template +17 -0
  50. package/src/py/agent/files/langchain/http/main.py.template +2 -14
  51. package/src/py/agent/files/strands/a2a/main.py.template +4 -15
  52. package/src/py/agent/files/strands/ag-ui/main.py.template +2 -13
  53. package/src/py/agent/files/strands/common/middleware/__init__.py.template +0 -0
  54. package/src/py/agent/files/strands/common/middleware/session_id_middleware.py.template +17 -0
  55. package/src/py/agent/files/strands/http/main.py.template +2 -17
  56. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
  57. package/src/py/mcp-server/files/deploy/Dockerfile.template +7 -0
  58. package/src/py/mcp-server/generator.js +8 -3
  59. package/src/py/mcp-server/generator.js.map +1 -1
  60. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +7 -5
  61. package/src/py/rdb/generator.js +36 -2
  62. package/src/py/rdb/generator.js.map +1 -1
  63. package/src/sdk/agentcore-harness.d.ts +6 -0
  64. package/src/sdk/agentcore-harness.js +7 -0
  65. package/src/sdk/agentcore-harness.js.map +1 -0
  66. package/src/sdk/smithy.d.ts +6 -0
  67. package/src/sdk/smithy.js +7 -0
  68. package/src/sdk/smithy.js.map +1 -0
  69. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +14 -14
  70. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +1 -1
  71. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +9 -2
  72. package/src/ts/agent/a2a-connection/generator.js +4 -2
  73. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  74. package/src/ts/agent/files/deploy/Dockerfile.template +7 -0
  75. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  76. package/src/ts/mcp-server/files/Dockerfile.template +7 -0
  77. package/src/ts/mcp-server/generator.js +8 -3
  78. package/src/ts/mcp-server/generator.js.map +1 -1
  79. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +8 -6
  80. package/src/ts/rdb/generator.js +29 -2
  81. package/src/ts/rdb/generator.js.map +1 -1
  82. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +15 -15
  83. package/src/ts/react-website/app/generator.js +4 -2
  84. package/src/ts/react-website/app/generator.js.map +1 -1
  85. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +1 -1
  86. package/src/utils/agent-connection/agent-connection.js +5 -9
  87. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  88. package/src/utils/ast.d.ts +29 -0
  89. package/src/utils/ast.js +31 -0
  90. package/src/utils/ast.js.map +1 -1
  91. package/src/utils/metrics.js +2 -2
  92. package/src/utils/metrics.js.map +1 -1
  93. package/src/utils/versions.d.ts +73 -73
  94. package/src/utils/versions.js +70 -70
  95. package/src/utils/versions.js.map +1 -1
  96. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js.map +0 -1
  97. package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js.map +0 -1
  98. package/src/migrations/latest/py-agent-session-management-support/migration.js.map +0 -1
  99. package/src/migrations/latest/smithy-server-package-rename/migration.js.map +0 -1
  100. package/src/migrations/latest/translate-script-whole-file-writes/migration.js.map +0 -1
  101. package/src/py/rdb/files/__name__/__init__.py.template +0 -3
  102. package/src/py/rdb/files/config.json.template +0 -14
  103. package/src/ts/rdb/files/config.json.template +0 -14
  104. package/src/ts/rdb/files/src/index.ts.template +0 -1
  105. /package/src/migrations/latest/{py-agent-a2a-httpx-client-per-call → apt-security-updates-in-container-images}/migration.d.ts +0 -0
  106. /package/src/migrations/latest/{py-agent-session-management-support → py-agent-session-id-middleware-extraction}/migration.d.ts +0 -0
  107. /package/src/migrations/{latest/smithy-server-package-rename → v1.0.0-rc.67/0001-smithy-server-package-rename}/metadata.json +0 -0
  108. /package/src/migrations/{latest/py-agent-a2a-lifespan-construction → v1.0.0-rc.67/0001-smithy-server-package-rename}/migration.d.ts +0 -0
  109. /package/src/migrations/{latest/smithy-server-package-rename → v1.0.0-rc.67/0001-smithy-server-package-rename}/migration.js +0 -0
  110. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/build-system-prompt.ts.fixture +0 -0
  111. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/build-user-prompt.ts.fixture +0 -0
  112. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/config-path.ts.fixture +0 -0
  113. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/file-to-translate.ts.fixture +0 -0
  114. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/get-files-to-translate.ts.fixture +0 -0
  115. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/header.ts.fixture +0 -0
  116. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/log.ts.fixture +0 -0
  117. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/main-call.ts.fixture +0 -0
  118. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/main.ts.fixture +0 -0
  119. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/project-root.ts.fixture +0 -0
  120. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/run-with-concurrency.ts.fixture +0 -0
  121. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/scripts-dir.ts.fixture +0 -0
  122. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/files/translate-file-for-language.ts.fixture +0 -0
  123. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/already-migrated.grit +0 -0
  124. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/build-system-prompt.grit +0 -0
  125. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/build-user-prompt.grit +0 -0
  126. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/config-path.grit +0 -0
  127. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/file-to-translate.grit +0 -0
  128. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/get-files-to-translate.grit +0 -0
  129. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/log.grit +0 -0
  130. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/main-call.grit +0 -0
  131. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/main.grit +0 -0
  132. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/project-root.grit +0 -0
  133. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/run-with-concurrency.grit +0 -0
  134. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/grit/translate-file-for-language.grit +0 -0
  135. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/metadata.json +0 -0
  136. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/migration.d.ts +0 -0
  137. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/migration.js +0 -0
  138. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/test-fixtures/released-script-first.ts.fixture +0 -0
  139. /package/src/migrations/{latest/translate-script-whole-file-writes → v1.0.0-rc.68/0001-translate-script-whole-file-writes}/test-fixtures/released-script.ts.fixture +0 -0
  140. /package/src/migrations/{latest/py-agent-a2a-lifespan-construction → v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction}/metadata.json +0 -0
  141. /package/src/migrations/{latest/smithy-server-package-rename → v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction}/migration.d.ts +0 -0
  142. /package/src/migrations/{latest/py-agent-a2a-httpx-client-per-call → v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call}/metadata.json +0 -0
  143. /package/src/migrations/{latest/py-agent-a2a-httpx-client-per-call → v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call}/migration.js +0 -0
  144. /package/src/migrations/{latest/py-agent-session-management-support → v1.0.0-rc.72/0001-py-agent-session-management-support}/metadata.json +0 -0
  145. /package/src/migrations/{latest/py-agent-session-management-support → v1.0.0-rc.72/0001-py-agent-session-management-support}/migration.js +0 -0
package/README.md CHANGED
@@ -26,106 +26,24 @@
26
26
 
27
27
  ---
28
28
 
29
- **@aws/nx-plugin** is a collection of code generators that scaffold full-stack, production-ready AWS applications inside an [Nx](https://nx.dev) monorepo. Every generator produces best-practice application code **and** the infrastructure to deploy it — type-safe, locally runnable, and ready to deploy.
29
+ **@aws/nx-plugin** is a collection of code generators that scaffold full-stack AWS applications inside an [Nx](https://nx.dev) monorepo. Every generator produces best-practice application code **and** the infrastructure to deploy it — type-safe, locally runnable, and deployable from the start, getting you closer to production.
30
30
 
31
31
  ## Quick Start
32
32
 
33
33
  ### Build with AI
34
34
 
35
- Add the MCP server to your AI assistant and let it build for you.
35
+ **1. Create a workspace**
36
36
 
37
37
  ```bash
38
- claude mcp add nx-plugin-for-aws -- npx -y @aws/nx-plugin-mcp
39
- ```
40
-
41
- <details>
42
- <summary><strong>Kiro</strong></summary>
43
-
44
- Install the [Kiro Power](https://kiro.dev/docs/powers/) for the best experience — no manual MCP configuration needed:
45
-
46
- 1. Open the Kiro Powers panel from the sidebar
47
- 2. Click `+` to add a custom power
48
- 3. Paste: `https://github.com/awslabs/nx-plugin-for-aws/tree/main/powers/nx-plugin-for-aws`
49
- 4. Click install
50
-
51
- Or add the MCP server manually in `.kiro/mcp.json`:
52
-
53
- ```json
54
- {
55
- "mcpServers": {
56
- "nx-plugin-for-aws": {
57
- "command": "npx",
58
- "args": ["-y", "@aws/nx-plugin-mcp"]
59
- }
60
- }
61
- }
62
- ```
63
-
64
- </details>
65
-
66
- <details>
67
- <summary><strong>Claude Code</strong></summary>
68
-
69
- ```bash
70
- claude mcp add nx-plugin-for-aws -- npx -y @aws/nx-plugin-mcp
71
- ```
72
-
73
- </details>
74
-
75
- <details>
76
- <summary><strong>Cursor</strong></summary>
77
-
78
- Add to `~/.cursor/mcp.json`:
79
-
80
- ```json
81
- {
82
- "mcpServers": {
83
- "nx-plugin-for-aws": {
84
- "command": "npx",
85
- "args": ["-y", "@aws/nx-plugin-mcp"]
86
- }
87
- }
88
- }
89
- ```
90
-
91
- </details>
92
-
93
- <details>
94
- <summary><strong>Codex</strong></summary>
95
-
96
- Add to `~/.codex/config.toml`:
97
-
98
- ```toml
99
- [mcp_servers.nx-plugin-for-aws]
100
- command = "npx"
101
- args = ["-y", "@aws/nx-plugin-mcp"]
102
- ```
103
-
104
- </details>
105
-
106
- <details>
107
- <summary><strong>Other assistants</strong></summary>
108
-
109
- Most MCP-compatible assistants use a JSON configuration file. Add the following entry:
110
-
111
- ```json
112
- {
113
- "mcpServers": {
114
- "nx-plugin-for-aws": {
115
- "command": "npx",
116
- "args": ["-y", "@aws/nx-plugin-mcp"]
117
- }
118
- }
119
- }
38
+ pnpm create @aws/nx-workspace my-project
39
+ cd my-project
120
40
  ```
121
41
 
122
- </details>
123
-
124
- Then just ask:
42
+ **2. Open your AI assistant in the created workspace and prompt it**
125
43
 
126
- > _"Use the Nx Plugin for AWS to build a full-stack app with a React website, a tRPC API, Cognito auth, and CDK infrastructure."_
44
+ > _"Use the Nx Plugin for AWS to build a full-stack application consisting of a React website with shadcn and Cognito authentication, connected to a TypeScript Strands agent via the AG-UI protocol, and infrastructure to deploy it."_
127
45
 
128
- Your AI assistant will use the MCP tools to scaffold, connect, and configure everything. See the [Building with AI guide](https://awslabs.github.io/nx-plugin-for-aws/en/get_started/building-with-ai/) for more details.
46
+ Your AI assistant will use the Nx Plugin for AWS MCP server, which is preconfigured in every workspace you create with the command above, to scaffold, connect, and configure everything. See the [Building with AI guide](https://awslabs.github.io/nx-plugin-for-aws/en/get_started/building-with-ai/) for more details.
129
47
 
130
48
  ### Build with the CLI
131
49
 
package/migrations.json CHANGED
@@ -2,30 +2,20 @@
2
2
  "$schema": "http://json-schema.org/schema",
3
3
  "name": "@aws/nx-plugin",
4
4
  "generators": {
5
- "latest-smithy-server-package-rename": {
6
- "version": "1.0.0-rc.67",
7
- "description": "Move Smithy APIs onto the renamed @smithy/server-* packages",
8
- "implementation": "./src/migrations/latest/smithy-server-package-rename/migration"
9
- },
10
- "latest-translate-script-whole-file-writes": {
11
- "version": "1.0.0-rc.68",
12
- "description": "Update the docs translate script to write whole translated files rather than editing them in place",
13
- "implementation": "./src/migrations/latest/translate-script-whole-file-writes/migration"
14
- },
15
- "latest-py-agent-a2a-lifespan-construction": {
16
- "version": "1.0.0-rc.70",
17
- "description": "Move py#agent A2A agent construction (Strands and LangChain) out of module import time and into a FastAPI lifespan handler, stored on app.state; also updates with_session_id/session_id_context to use Generator instead of the deprecated Iterator return type",
18
- "implementation": "./src/migrations/latest/py-agent-a2a-lifespan-construction/migration"
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"
19
9
  },
20
- "latest-py-agent-a2a-httpx-client-per-call": {
21
- "version": "1.0.0-rc.71",
22
- "description": "Rebuild the httpx.AsyncClient (and Strands A2AAgent) per A2A delegate call instead of reusing one built at factory time, fixing a RuntimeError: Event loop is closed on the second call through a shared client",
23
- "implementation": "./src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration"
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"
24
14
  },
25
- "latest-py-agent-session-management-support": {
26
- "version": "1.0.0-rc.72",
27
- "description": "Add session management support to py#agent",
28
- "implementation": "./src/migrations/latest/py-agent-session-management-support/migration"
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"
29
19
  },
30
20
  "v1.0.0-rc.50-0001-modernize-function-props-cast": {
31
21
  "version": "1.0.0-rc.50",
@@ -122,8 +112,33 @@
122
112
  "description": "Replace the deprecated inlineDynamicImports rolldown output option with codeSplitting",
123
113
  "implementation": "./src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration"
124
114
  },
125
- "sync-vended-versions": {
115
+ "v1.0.0-rc.67-0001-smithy-server-package-rename": {
116
+ "version": "1.0.0-rc.67",
117
+ "description": "Move Smithy APIs onto the renamed @smithy/server-* packages",
118
+ "implementation": "./src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration"
119
+ },
120
+ "v1.0.0-rc.68-0001-translate-script-whole-file-writes": {
121
+ "version": "1.0.0-rc.68",
122
+ "description": "Update the docs translate script to write whole translated files rather than editing them in place",
123
+ "implementation": "./src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration"
124
+ },
125
+ "v1.0.0-rc.70-0001-py-agent-a2a-lifespan-construction": {
126
+ "version": "1.0.0-rc.70",
127
+ "description": "Move py#agent A2A agent construction (Strands and LangChain) out of module import time and into a FastAPI lifespan handler, stored on app.state; also updates with_session_id/session_id_context to use Generator instead of the deprecated Iterator return type",
128
+ "implementation": "./src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration"
129
+ },
130
+ "v1.0.0-rc.71-0001-py-agent-a2a-httpx-client-per-call": {
131
+ "version": "1.0.0-rc.71",
132
+ "description": "Rebuild the httpx.AsyncClient (and Strands A2AAgent) per A2A delegate call instead of reusing one built at factory time, fixing a RuntimeError: Event loop is closed on the second call through a shared client",
133
+ "implementation": "./src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration"
134
+ },
135
+ "v1.0.0-rc.72-0001-py-agent-session-management-support": {
126
136
  "version": "1.0.0-rc.72",
137
+ "description": "Add session management support to py#agent",
138
+ "implementation": "./src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration"
139
+ },
140
+ "sync-vended-versions": {
141
+ "version": "1.0.0-rc.74",
127
142
  "description": "Sync vended dependency versions and the tracked plugin version to those vended by this release",
128
143
  "implementation": "./src/utils/version-upgrade-migration/migration"
129
144
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "1.0.0-rc.72",
3
+ "version": "1.0.0-rc.74",
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.2",
43
+ "@astral-sh/ruff-wasm-nodejs": "0.16.3",
44
44
  "@biomejs/js-api": "6.0.0",
45
- "@biomejs/wasm-nodejs": "2.5.7",
45
+ "@biomejs/wasm-nodejs": "2.5.8",
46
46
  "@getgrit/gritql": "0.0.3",
47
47
  "@iarna/toml": "2.2.5",
48
48
  "@modelcontextprotocol/sdk": "1.30.0",
@@ -50,7 +50,7 @@
50
50
  "@nx/js": "23.1.1",
51
51
  "@nx/react": "23.1.1",
52
52
  "@nx/vite": "23.1.1",
53
- "@nxlv/python": "22.2.2",
53
+ "@nxlv/python": "23.0.0",
54
54
  "@phenomnomnominal/tsquery": "6.2.0",
55
55
  "@types/estree": "1.0.9",
56
56
  "@types/js-yaml": "4.0.9",
@@ -11,7 +11,7 @@ exports[`agentcore-gateway generator > protocol: http > omits protocol_type from
11
11
  }
12
12
  time = {
13
13
  source = "hashicorp/time"
14
- version = "0.14.0"
14
+ version = "0.14.1"
15
15
  }
16
16
  random = {
17
17
  source = "hashicorp/random"
@@ -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.9 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
59
+ "command": "uvx --from checkov==3.3.11 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.9 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
153
+ "command": "uvx --from checkov==3.3.11 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.9 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
748
+ "command": "uvx --from checkov==3.3.11 checkov --config-file {projectRoot}/checkov.yml --directory dist/{projectRoot}/cdk.out --framework cloudformation",
749
749
  },
750
750
  "outputs": [
751
751
  "{workspaceRoot}/dist/{projectRoot}/checkov",
@@ -2,9 +2,11 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { agentcoreGatewayGenerator } from "../../sdk/agentcore-gateway.js";
5
+ import { agentcoreHarnessGenerator } from "../../sdk/agentcore-harness.js";
5
6
  import { connectionGenerator } from "../../sdk/connection.js";
6
7
  import { licenseGenerator } from "../../sdk/license.js";
7
8
  import { pyAgentGenerator, pyApiGenerator, pyDynamoDBGenerator, pyLambdaFunctionGenerator, pyMcpServerGenerator, pyProjectGenerator, pyRdbGenerator } from "../../sdk/py.js";
9
+ import { smithyProjectGenerator } from "../../sdk/smithy.js";
8
10
  import { terraformProjectGenerator } from "../../sdk/terraform.js";
9
11
  import { tsAgentGenerator, tsApiGenerator, tsAstroDocsGenerator, tsDcrProxyGenerator, tsDynamoDBGenerator, tsInfraGenerator, tsLambdaFunctionGenerator, tsMcpServerGenerator, tsNxGeneratorGenerator, tsNxMigrationGenerator, tsNxPluginGenerator, tsProjectGenerator, tsRdbGenerator, tsWebsiteAuthGenerator, tsWebsiteGenerator } from "../../sdk/ts.js";
10
12
  import { installDependencies } from "../../utils/install.js";
@@ -135,6 +137,12 @@ import { getNpmScope, getNpmScopePrefix } from "../../utils/npm-scope.js";
135
137
  ...projectDefaults
136
138
  });
137
139
  }
140
+ // A Smithy shape library; `my-smithy-api` covers consuming one.
141
+ await smithyProjectGenerator(tree, {
142
+ name: 'my-shapes',
143
+ type: 'shapes',
144
+ ...projectDefaults
145
+ });
138
146
  // Python FastAPI — REST + HTTP, with Cognito and custom auth.
139
147
  const pyApis = [
140
148
  {
@@ -353,6 +361,13 @@ import { getNpmScope, getNpmScopePrefix } from "../../utils/npm-scope.js";
353
361
  iac: 'inherit',
354
362
  ...projectDefaults
355
363
  });
364
+ // AgentCore Harness — a standalone invocation project.
365
+ await agentcoreHarnessGenerator(tree, {
366
+ name: 'my-harness',
367
+ infra: 'agentcore',
368
+ iac: 'inherit',
369
+ ...projectDefaults
370
+ });
356
371
  // Databases — DynamoDB, plus Aurora across both engines and ORMs.
357
372
  await tsDynamoDBGenerator(tree, {
358
373
  name: 'my-table',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/internal/test-matrix/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { GeneratorCallback, Tree } from '@nx/devkit';\nimport { agentcoreGatewayGenerator } from '../../sdk/agentcore-gateway';\nimport {\n type ConnectionGeneratorSchema,\n connectionGenerator,\n} from '../../sdk/connection';\nimport { licenseGenerator } from '../../sdk/license';\nimport {\n type PyAgentGeneratorSchema,\n type PyApiGeneratorSchema,\n type PyRdbGeneratorSchema,\n pyAgentGenerator,\n pyApiGenerator,\n pyDynamoDBGenerator,\n pyLambdaFunctionGenerator,\n pyMcpServerGenerator,\n pyProjectGenerator,\n pyRdbGenerator,\n} from '../../sdk/py';\nimport { terraformProjectGenerator } from '../../sdk/terraform';\nimport {\n type TsAgentGeneratorSchema,\n type TsApiGeneratorSchema,\n type TsNxMigrationGeneratorSchema,\n type TsRdbGeneratorSchema,\n tsAgentGenerator,\n tsApiGenerator,\n tsAstroDocsGenerator,\n tsDcrProxyGenerator,\n tsDynamoDBGenerator,\n tsInfraGenerator,\n tsLambdaFunctionGenerator,\n tsMcpServerGenerator,\n tsNxGeneratorGenerator,\n tsNxMigrationGenerator,\n tsNxPluginGenerator,\n tsProjectGenerator,\n tsRdbGenerator,\n tsWebsiteAuthGenerator,\n tsWebsiteGenerator,\n} from '../../sdk/ts';\nimport { installDependencies } from '../../utils/install';\nimport { toSnakeCase } from '../../utils/names';\nimport { getNpmScope, getNpmScopePrefix } from '../../utils/npm-scope';\nimport type { InternalTestMatrixGeneratorSchema } from './schema';\n\n/**\n * Scaffolds every generator, component and connection permutation the e2e tests\n * cover, by composing the generators in-process on a single tree.\n *\n * This ships with the plugin so each released version carries the matrix of the\n * generators *it* had. A test upgrading an old workspace scaffolds with the\n * released version's own matrix and never has to reason about which generators\n * existed when — driving the CLI from the test repo instead would couple the\n * test to a generator list that only describes today's plugin.\n *\n * Hidden and undocumented: it exists for the e2e suite, not for users.\n *\n * Options are typed against each generator's schema, so adding a required option\n * or changing an enum breaks the build here rather than silently reducing\n * coverage.\n *\n * Projects are generated with `preferInstallDependencies: false` by default and\n * the returned callback installs once. Nothing composed here reads the project\n * graph (only `ts#sync` does, which is not part of the matrix), so no\n * intermediate install is needed.\n */\nexport const internalTestMatrixGenerator = async (\n tree: Tree,\n options: InternalTestMatrixGeneratorSchema = {},\n): Promise<GeneratorCallback> => {\n const preferInstallDependencies = options.preferInstallDependencies ?? false;\n const defaults = { preferInstallDependencies };\n const projectDefaults = { ...defaults, directory: 'packages' };\n // Fully-qualified project names, which differ per language: TypeScript\n // projects are scope-prefixed, Python ones are dotted snake_case. Derived from\n // the workspace rather than hardcoded, so the matrix works in any workspace.\n const ts = (name: string) => `${getNpmScopePrefix(tree)}${name}`;\n const py = (name: string) =>\n `${toSnakeCase(getNpmScope(tree))}.${toSnakeCase(name)}`;\n\n // The infrastructure project every other generator deploys into. Which\n // generator owns it depends on the workspace's IaC provider, so the caller\n // asks for the one matching the workspace it created.\n if (options.infra === 'terraform') {\n await terraformProjectGenerator(tree, {\n name: 'infra',\n type: 'application',\n ...projectDefaults,\n });\n } else {\n await tsInfraGenerator(tree, { name: 'infra', ...projectDefaults });\n // A second CDK app with stage config, which only ts#infra offers.\n await tsInfraGenerator(tree, {\n name: 'infra-with-stages',\n stageConfig: true,\n ...projectDefaults,\n });\n }\n\n // Websites (with and without TanStack Router), a docs site, and auth on each.\n await tsWebsiteGenerator(tree, {\n name: 'website',\n iac: 'inherit',\n ...projectDefaults,\n });\n await tsWebsiteGenerator(tree, {\n name: 'website-no-router',\n tanstackRouter: false,\n iac: 'inherit',\n ...projectDefaults,\n });\n await tsAstroDocsGenerator(tree, { name: 'docs-site', ...defaults });\n await tsWebsiteAuthGenerator(tree, {\n project: ts('website'),\n cognitoDomain: 'test',\n allowSignup: true,\n iac: 'inherit',\n ...defaults,\n });\n await tsWebsiteAuthGenerator(tree, {\n project: ts('website-no-router'),\n cognitoDomain: 'test-no-router',\n allowSignup: true,\n iac: 'inherit',\n ...defaults,\n });\n\n // tRPC APIs — REST + HTTP, with Cognito and custom auth.\n const tsApis: TsApiGeneratorSchema[] = [\n { name: 'my-api', infra: 'rest-lambda', auth: 'iam', iac: 'inherit' },\n { name: 'my-api-http', infra: 'http-lambda', auth: 'iam', iac: 'inherit' },\n {\n name: 'my-api-custom',\n infra: 'rest-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n {\n name: 'my-api-custom-http',\n infra: 'http-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n {\n name: 'my-smithy-api',\n framework: 'smithy',\n infra: 'rest-lambda',\n auth: 'iam',\n iac: 'inherit',\n },\n ];\n for (const api of tsApis) {\n await tsApiGenerator(tree, { ...api, ...projectDefaults });\n }\n\n // Python FastAPI — REST + HTTP, with Cognito and custom auth.\n const pyApis: PyApiGeneratorSchema[] = [\n { name: 'py-api', infra: 'rest-lambda', auth: 'iam', iac: 'inherit' },\n { name: 'py-api-http', infra: 'http-lambda', auth: 'iam', iac: 'inherit' },\n {\n name: 'py-api-custom',\n infra: 'rest-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n {\n name: 'py-api-custom-http',\n infra: 'http-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n ];\n for (const api of pyApis) {\n await pyApiGenerator(tree, { ...api, ...projectDefaults });\n }\n\n // Library projects hosting the components below, each with a lambda function.\n await pyProjectGenerator(tree, {\n name: 'py-project',\n type: 'application',\n ...projectDefaults,\n });\n await tsProjectGenerator(tree, { name: 'ts-project', ...projectDefaults });\n await pyLambdaFunctionGenerator(tree, {\n project: py('py-project'),\n name: 'my-function',\n event: 'Any',\n iac: 'inherit',\n ...defaults,\n });\n await tsLambdaFunctionGenerator(tree, {\n project: 'ts-project',\n name: 'my-function',\n event: 'Any',\n iac: 'inherit',\n ...defaults,\n });\n\n // MCP servers — uninfra'd and hosted on AgentCore.\n await pyMcpServerGenerator(tree, {\n project: 'py_project',\n name: 'my-mcp-server',\n infra: 'agentcore',\n iac: 'inherit',\n ...defaults,\n });\n await tsMcpServerGenerator(tree, {\n project: 'ts-project',\n name: 'my-mcp-server',\n infra: 'none',\n iac: 'inherit',\n ...defaults,\n });\n await tsMcpServerGenerator(tree, {\n project: 'ts-project',\n name: 'hosted-mcp-server',\n infra: 'agentcore',\n iac: 'inherit',\n ...defaults,\n });\n\n // OAuth DCR proxy for Cognito-authenticated MCP servers.\n await tsDcrProxyGenerator(tree, {\n name: 'my-dcr-proxy',\n iac: 'inherit',\n ...projectDefaults,\n });\n\n // TypeScript agents across every protocol and auth permutation. The unnamed\n // one takes the generator's default name, which the connections below use.\n const tsAgents: TsAgentGeneratorSchema[] = [\n {\n project: 'ts-project',\n name: 'my-ts-agent',\n infra: 'none',\n iac: 'inherit',\n },\n { project: 'ts-project', infra: 'agentcore', iac: 'inherit' },\n {\n project: 'ts-project',\n name: 'my-ts-a2a-agent',\n protocol: 'a2a',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'ts-project',\n name: 'my-ts-a2a-agent-cognito',\n protocol: 'a2a',\n auth: 'cognito',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'ts-project',\n name: 'my-ts-agui-agent',\n protocol: 'ag-ui',\n infra: 'agentcore',\n iac: 'inherit',\n },\n ];\n for (const agent of tsAgents) {\n await tsAgentGenerator(tree, { ...agent, ...defaults });\n }\n\n // Python agents: Strands across every protocol, plus LangChain in its own\n // project — langchain's dependency closure would push the zip-bundled Lambda\n // in py-project past its unzipped size limit.\n const pyAgents: PyAgentGeneratorSchema[] = [\n {\n project: 'py_project',\n name: 'my-agent',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'py_project',\n name: 'my-py-a2a-agent',\n protocol: 'a2a',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'py_project',\n name: 'my-py-a2a-agent-cognito',\n protocol: 'a2a',\n auth: 'cognito',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'py_project',\n name: 'my-py-agui-agent',\n protocol: 'ag-ui',\n infra: 'agentcore',\n iac: 'inherit',\n },\n ];\n for (const agent of pyAgents) {\n await pyAgentGenerator(tree, { ...agent, ...defaults });\n }\n await pyProjectGenerator(tree, {\n name: 'py-langchain-project',\n type: 'application',\n ...projectDefaults,\n });\n const langchainAgents: PyAgentGeneratorSchema[] = [\n {\n project: 'py_langchain_project',\n name: 'my-py-langchain-agent',\n protocol: 'ag-ui',\n iac: 'inherit',\n },\n {\n project: 'py_langchain_project',\n name: 'my-py-langchain-http-agent',\n protocol: 'http',\n iac: 'inherit',\n },\n {\n project: 'py_langchain_project',\n name: 'my-py-langchain-a2a-agent',\n protocol: 'a2a',\n iac: 'inherit',\n },\n ];\n for (const agent of langchainAgents) {\n await pyAgentGenerator(tree, {\n ...agent,\n framework: 'langchain',\n infra: 'agentcore',\n ...defaults,\n });\n }\n\n // AgentCore gateways, including a parent fronting the first (chained), and\n // an http-protocol gateway fronting agent runtime targets.\n await agentcoreGatewayGenerator(tree, {\n name: 'my-gateway',\n iac: 'inherit',\n ...projectDefaults,\n });\n await agentcoreGatewayGenerator(tree, {\n name: 'parent-gateway',\n iac: 'inherit',\n ...projectDefaults,\n });\n await agentcoreGatewayGenerator(tree, {\n name: 'agent-gateway',\n protocol: 'http',\n iac: 'inherit',\n ...projectDefaults,\n });\n\n // Databases — DynamoDB, plus Aurora across both engines and ORMs.\n await tsDynamoDBGenerator(tree, {\n name: 'my-table',\n framework: 'electrodb',\n infra: 'dynamodb',\n iac: 'inherit',\n ...projectDefaults,\n });\n await pyDynamoDBGenerator(tree, {\n name: 'my-py-table',\n framework: 'pynamodb',\n infra: 'dynamodb',\n iac: 'inherit',\n ...projectDefaults,\n });\n const tsRdbs: TsRdbGeneratorSchema[] = [\n {\n name: 'postgres-db',\n infra: 'aurora',\n engine: 'postgres',\n framework: 'prisma',\n iac: 'inherit',\n },\n {\n name: 'my-sql-db',\n infra: 'aurora',\n engine: 'mysql',\n framework: 'prisma',\n iac: 'inherit',\n },\n ];\n for (const rdb of tsRdbs) {\n await tsRdbGenerator(tree, { ...rdb, ...projectDefaults });\n }\n const pyRdbs: PyRdbGeneratorSchema[] = [\n {\n name: 'py-postgres-db',\n infra: 'aurora',\n engine: 'postgres',\n framework: 'sqlmodel',\n iac: 'inherit',\n },\n {\n name: 'py-mysql-db',\n infra: 'aurora',\n engine: 'mysql',\n framework: 'sqlmodel',\n iac: 'inherit',\n },\n ];\n for (const rdb of pyRdbs) {\n await pyRdbGenerator(tree, { ...rdb, ...projectDefaults });\n }\n\n // Every connection edge the matrix covers.\n const connections: ConnectionGeneratorSchema[] = [\n // Website -> API\n { sourceProject: ts('website'), targetProject: ts('my-api') },\n { sourceProject: ts('website-no-router'), targetProject: ts('my-api') },\n { sourceProject: 'website', targetProject: 'py_api' },\n { sourceProject: 'website', targetProject: 'my-smithy-api' },\n // Agent -> MCP server\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'ts-project',\n targetComponent: 'hosted-mcp-server',\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'my-ts-agui-agent',\n targetProject: 'ts-project',\n targetComponent: 'hosted-mcp-server',\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-agent',\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n // HTTP agent <-> A2A agent\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'ts-project',\n targetComponent: 'my-ts-a2a-agent',\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'ts-project',\n targetComponent: 'my-ts-a2a-agent',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-agent',\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n // Agent -> gateway, gateway -> MCP server, gateway -> gateway\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: ts('my-gateway'),\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: ts('my-gateway'),\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-agent',\n targetProject: ts('my-gateway'),\n },\n {\n sourceProject: ts('my-gateway'),\n targetProject: 'ts-project',\n targetComponent: 'hosted-mcp-server',\n },\n {\n sourceProject: ts('my-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n { sourceProject: ts('parent-gateway'), targetProject: ts('my-gateway') },\n // Gateway -> agent (http gateway fronting agent runtime targets: every\n // supported protocol permutation), then website -> gateway.\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'ts-project',\n targetComponent: 'my-ts-agui-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'ts-project',\n targetComponent: 'my-ts-a2a-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-py-agui-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n {\n sourceProject: ts('website-no-router'),\n targetProject: ts('agent-gateway'),\n },\n // Website -> agent\n {\n sourceProject: ts('website'),\n targetProject: 'ts-project',\n targetComponent: 'agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'ts-project',\n targetComponent: 'my-ts-agui-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_project',\n targetComponent: 'my-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_project',\n targetComponent: 'my-py-agui-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_langchain_project',\n targetComponent: 'my-py-langchain-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_langchain_project',\n targetComponent: 'my-py-langchain-http-agent',\n },\n // DynamoDB\n { sourceProject: 'my-api', targetProject: ts('my-table') },\n { sourceProject: 'my-smithy-api', targetProject: ts('my-table') },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'my-ts-agent',\n targetProject: ts('my-table'),\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'my-mcp-server',\n targetProject: ts('my-table'),\n },\n { sourceProject: 'py_api', targetProject: 'my_py_table' },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'my_py_table',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-mcp-server',\n targetProject: 'my_py_table',\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-http-agent',\n targetProject: 'my_py_table',\n },\n // Relational databases\n { sourceProject: 'py_api', targetProject: 'py_postgres_db' },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'py_postgres_db',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-mcp-server',\n targetProject: 'py_postgres_db',\n },\n ];\n for (const connection of connections) {\n await connectionGenerator(tree, { ...connection, ...defaults });\n }\n\n // Licensing, then an Nx plugin with a custom generator.\n await licenseGenerator(tree, {\n license: 'Apache-2.0',\n copyrightHolder: 'Amazon.com, Inc. or its affiliates',\n ...defaults,\n });\n await tsNxPluginGenerator(tree, {\n ...projectDefaults,\n name: 'plugin',\n directory: 'tools',\n });\n await tsNxGeneratorGenerator(tree, {\n project: ts('plugin'),\n name: 'my#generator',\n ...defaults,\n });\n\n // A migration of each kind, so the scaffolded codemods compile and the\n // plugin's migrations.json (created by the first run) registers all three.\n const migrations: Omit<TsNxMigrationGeneratorSchema, 'project'>[] = [\n {\n name: 'rename-foo-target',\n description: 'Rename the foo target to bar',\n },\n {\n name: 'migrate-custom-handlers',\n description: 'Update custom handlers for the new API',\n kind: 'agentic',\n },\n {\n name: 'upgrade-framework',\n description: 'Upgrade the framework and reconcile call sites',\n kind: 'hybrid',\n },\n ];\n for (const migration of migrations) {\n await tsNxMigrationGenerator(tree, {\n ...migration,\n project: ts('plugin'),\n ...defaults,\n });\n }\n\n return () =>\n installDependencies(tree, preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default internalTestMatrixGenerator;\n"],"names":["agentcoreGatewayGenerator","connectionGenerator","licenseGenerator","pyAgentGenerator","pyApiGenerator","pyDynamoDBGenerator","pyLambdaFunctionGenerator","pyMcpServerGenerator","pyProjectGenerator","pyRdbGenerator","terraformProjectGenerator","tsAgentGenerator","tsApiGenerator","tsAstroDocsGenerator","tsDcrProxyGenerator","tsDynamoDBGenerator","tsInfraGenerator","tsLambdaFunctionGenerator","tsMcpServerGenerator","tsNxGeneratorGenerator","tsNxMigrationGenerator","tsNxPluginGenerator","tsProjectGenerator","tsRdbGenerator","tsWebsiteAuthGenerator","tsWebsiteGenerator","installDependencies","toSnakeCase","getNpmScope","getNpmScopePrefix","internalTestMatrixGenerator","tree","options","preferInstallDependencies","defaults","projectDefaults","directory","ts","name","py","infra","type","stageConfig","iac","tanstackRouter","project","cognitoDomain","allowSignup","tsApis","auth","framework","api","pyApis","event","tsAgents","protocol","agent","pyAgents","langchainAgents","tsRdbs","engine","rdb","pyRdbs","connections","sourceProject","targetProject","sourceComponent","targetComponent","connection","license","copyrightHolder","migrations","description","kind","migration","languages"],"mappings":"AAAA;;;CAGC,GAED,SAASA,yBAAyB,QAAQ,iCAA8B;AACxE,SAEEC,mBAAmB,QACd,0BAAuB;AAC9B,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAIEC,gBAAgB,EAChBC,cAAc,EACdC,mBAAmB,EACnBC,yBAAyB,EACzBC,oBAAoB,EACpBC,kBAAkB,EAClBC,cAAc,QACT,kBAAe;AACtB,SAASC,yBAAyB,QAAQ,yBAAsB;AAChE,SAKEC,gBAAgB,EAChBC,cAAc,EACdC,oBAAoB,EACpBC,mBAAmB,EACnBC,mBAAmB,EACnBC,gBAAgB,EAChBC,yBAAyB,EACzBC,oBAAoB,EACpBC,sBAAsB,EACtBC,sBAAsB,EACtBC,mBAAmB,EACnBC,kBAAkB,EAClBC,cAAc,EACdC,sBAAsB,EACtBC,kBAAkB,QACb,kBAAe;AACtB,SAASC,mBAAmB,QAAQ,yBAAsB;AAC1D,SAASC,WAAW,QAAQ,uBAAoB;AAChD,SAASC,WAAW,EAAEC,iBAAiB,QAAQ,2BAAwB;AAGvE;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,MAAMC,8BAA8B,OACzCC,MACAC,UAA6C,CAAC,CAAC;IAE/C,MAAMC,4BAA4BD,QAAQC,yBAAyB,IAAI;IACvE,MAAMC,WAAW;QAAED;IAA0B;IAC7C,MAAME,kBAAkB;QAAE,GAAGD,QAAQ;QAAEE,WAAW;IAAW;IAC7D,uEAAuE;IACvE,+EAA+E;IAC/E,6EAA6E;IAC7E,MAAMC,KAAK,CAACC,OAAiB,GAAGT,kBAAkBE,QAAQO,MAAM;IAChE,MAAMC,KAAK,CAACD,OACV,GAAGX,YAAYC,YAAYG,OAAO,CAAC,EAAEJ,YAAYW,OAAO;IAE1D,uEAAuE;IACvE,2EAA2E;IAC3E,sDAAsD;IACtD,IAAIN,QAAQQ,KAAK,KAAK,aAAa;QACjC,MAAM9B,0BAA0BqB,MAAM;YACpCO,MAAM;YACNG,MAAM;YACN,GAAGN,eAAe;QACpB;IACF,OAAO;QACL,MAAMnB,iBAAiBe,MAAM;YAAEO,MAAM;YAAS,GAAGH,eAAe;QAAC;QACjE,kEAAkE;QAClE,MAAMnB,iBAAiBe,MAAM;YAC3BO,MAAM;YACNI,aAAa;YACb,GAAGP,eAAe;QACpB;IACF;IAEA,8EAA8E;IAC9E,MAAMV,mBAAmBM,MAAM;QAC7BO,MAAM;QACNK,KAAK;QACL,GAAGR,eAAe;IACpB;IACA,MAAMV,mBAAmBM,MAAM;QAC7BO,MAAM;QACNM,gBAAgB;QAChBD,KAAK;QACL,GAAGR,eAAe;IACpB;IACA,MAAMtB,qBAAqBkB,MAAM;QAAEO,MAAM;QAAa,GAAGJ,QAAQ;IAAC;IAClE,MAAMV,uBAAuBO,MAAM;QACjCc,SAASR,GAAG;QACZS,eAAe;QACfC,aAAa;QACbJ,KAAK;QACL,GAAGT,QAAQ;IACb;IACA,MAAMV,uBAAuBO,MAAM;QACjCc,SAASR,GAAG;QACZS,eAAe;QACfC,aAAa;QACbJ,KAAK;QACL,GAAGT,QAAQ;IACb;IAEA,yDAAyD;IACzD,MAAMc,SAAiC;QACrC;YAAEV,MAAM;YAAUE,OAAO;YAAeS,MAAM;YAAON,KAAK;QAAU;QACpE;YAAEL,MAAM;YAAeE,OAAO;YAAeS,MAAM;YAAON,KAAK;QAAU;QACzE;YACEL,MAAM;YACNE,OAAO;YACPS,MAAM;YACNN,KAAK;QACP;QACA;YACEL,MAAM;YACNE,OAAO;YACPS,MAAM;YACNN,KAAK;QACP;QACA;YACEL,MAAM;YACNY,WAAW;YACXV,OAAO;YACPS,MAAM;YACNN,KAAK;QACP;KACD;IACD,KAAK,MAAMQ,OAAOH,OAAQ;QACxB,MAAMpC,eAAemB,MAAM;YAAE,GAAGoB,GAAG;YAAE,GAAGhB,eAAe;QAAC;IAC1D;IAEA,8DAA8D;IAC9D,MAAMiB,SAAiC;QACrC;YAAEd,MAAM;YAAUE,OAAO;YAAeS,MAAM;YAAON,KAAK;QAAU;QACpE;YAAEL,MAAM;YAAeE,OAAO;YAAeS,MAAM;YAAON,KAAK;QAAU;QACzE;YACEL,MAAM;YACNE,OAAO;YACPS,MAAM;YACNN,KAAK;QACP;QACA;YACEL,MAAM;YACNE,OAAO;YACPS,MAAM;YACNN,KAAK;QACP;KACD;IACD,KAAK,MAAMQ,OAAOC,OAAQ;QACxB,MAAMhD,eAAe2B,MAAM;YAAE,GAAGoB,GAAG;YAAE,GAAGhB,eAAe;QAAC;IAC1D;IAEA,8EAA8E;IAC9E,MAAM3B,mBAAmBuB,MAAM;QAC7BO,MAAM;QACNG,MAAM;QACN,GAAGN,eAAe;IACpB;IACA,MAAMb,mBAAmBS,MAAM;QAAEO,MAAM;QAAc,GAAGH,eAAe;IAAC;IACxE,MAAM7B,0BAA0ByB,MAAM;QACpCc,SAASN,GAAG;QACZD,MAAM;QACNe,OAAO;QACPV,KAAK;QACL,GAAGT,QAAQ;IACb;IACA,MAAMjB,0BAA0Bc,MAAM;QACpCc,SAAS;QACTP,MAAM;QACNe,OAAO;QACPV,KAAK;QACL,GAAGT,QAAQ;IACb;IAEA,mDAAmD;IACnD,MAAM3B,qBAAqBwB,MAAM;QAC/Bc,SAAS;QACTP,MAAM;QACNE,OAAO;QACPG,KAAK;QACL,GAAGT,QAAQ;IACb;IACA,MAAMhB,qBAAqBa,MAAM;QAC/Bc,SAAS;QACTP,MAAM;QACNE,OAAO;QACPG,KAAK;QACL,GAAGT,QAAQ;IACb;IACA,MAAMhB,qBAAqBa,MAAM;QAC/Bc,SAAS;QACTP,MAAM;QACNE,OAAO;QACPG,KAAK;QACL,GAAGT,QAAQ;IACb;IAEA,yDAAyD;IACzD,MAAMpB,oBAAoBiB,MAAM;QAC9BO,MAAM;QACNK,KAAK;QACL,GAAGR,eAAe;IACpB;IAEA,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAMmB,WAAqC;QACzC;YACET,SAAS;YACTP,MAAM;YACNE,OAAO;YACPG,KAAK;QACP;QACA;YAAEE,SAAS;YAAcL,OAAO;YAAaG,KAAK;QAAU;QAC5D;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVf,OAAO;YACPG,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVN,MAAM;YACNT,OAAO;YACPG,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVf,OAAO;YACPG,KAAK;QACP;KACD;IACD,KAAK,MAAMa,SAASF,SAAU;QAC5B,MAAM3C,iBAAiBoB,MAAM;YAAE,GAAGyB,KAAK;YAAE,GAAGtB,QAAQ;QAAC;IACvD;IAEA,0EAA0E;IAC1E,6EAA6E;IAC7E,8CAA8C;IAC9C,MAAMuB,WAAqC;QACzC;YACEZ,SAAS;YACTP,MAAM;YACNE,OAAO;YACPG,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVf,OAAO;YACPG,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVN,MAAM;YACNT,OAAO;YACPG,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVf,OAAO;YACPG,KAAK;QACP;KACD;IACD,KAAK,MAAMa,SAASC,SAAU;QAC5B,MAAMtD,iBAAiB4B,MAAM;YAAE,GAAGyB,KAAK;YAAE,GAAGtB,QAAQ;QAAC;IACvD;IACA,MAAM1B,mBAAmBuB,MAAM;QAC7BO,MAAM;QACNG,MAAM;QACN,GAAGN,eAAe;IACpB;IACA,MAAMuB,kBAA4C;QAChD;YACEb,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVZ,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVZ,KAAK;QACP;QACA;YACEE,SAAS;YACTP,MAAM;YACNiB,UAAU;YACVZ,KAAK;QACP;KACD;IACD,KAAK,MAAMa,SAASE,gBAAiB;QACnC,MAAMvD,iBAAiB4B,MAAM;YAC3B,GAAGyB,KAAK;YACRN,WAAW;YACXV,OAAO;YACP,GAAGN,QAAQ;QACb;IACF;IAEA,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAMlC,0BAA0B+B,MAAM;QACpCO,MAAM;QACNK,KAAK;QACL,GAAGR,eAAe;IACpB;IACA,MAAMnC,0BAA0B+B,MAAM;QACpCO,MAAM;QACNK,KAAK;QACL,GAAGR,eAAe;IACpB;IACA,MAAMnC,0BAA0B+B,MAAM;QACpCO,MAAM;QACNiB,UAAU;QACVZ,KAAK;QACL,GAAGR,eAAe;IACpB;IAEA,kEAAkE;IAClE,MAAMpB,oBAAoBgB,MAAM;QAC9BO,MAAM;QACNY,WAAW;QACXV,OAAO;QACPG,KAAK;QACL,GAAGR,eAAe;IACpB;IACA,MAAM9B,oBAAoB0B,MAAM;QAC9BO,MAAM;QACNY,WAAW;QACXV,OAAO;QACPG,KAAK;QACL,GAAGR,eAAe;IACpB;IACA,MAAMwB,SAAiC;QACrC;YACErB,MAAM;YACNE,OAAO;YACPoB,QAAQ;YACRV,WAAW;YACXP,KAAK;QACP;QACA;YACEL,MAAM;YACNE,OAAO;YACPoB,QAAQ;YACRV,WAAW;YACXP,KAAK;QACP;KACD;IACD,KAAK,MAAMkB,OAAOF,OAAQ;QACxB,MAAMpC,eAAeQ,MAAM;YAAE,GAAG8B,GAAG;YAAE,GAAG1B,eAAe;QAAC;IAC1D;IACA,MAAM2B,SAAiC;QACrC;YACExB,MAAM;YACNE,OAAO;YACPoB,QAAQ;YACRV,WAAW;YACXP,KAAK;QACP;QACA;YACEL,MAAM;YACNE,OAAO;YACPoB,QAAQ;YACRV,WAAW;YACXP,KAAK;QACP;KACD;IACD,KAAK,MAAMkB,OAAOC,OAAQ;QACxB,MAAMrD,eAAesB,MAAM;YAAE,GAAG8B,GAAG;YAAE,GAAG1B,eAAe;QAAC;IAC1D;IAEA,2CAA2C;IAC3C,MAAM4B,cAA2C;QAC/C,iBAAiB;QACjB;YAAEC,eAAe3B,GAAG;YAAY4B,eAAe5B,GAAG;QAAU;QAC5D;YAAE2B,eAAe3B,GAAG;YAAsB4B,eAAe5B,GAAG;QAAU;QACtE;YAAE2B,eAAe;YAAWC,eAAe;QAAS;QACpD;YAAED,eAAe;YAAWC,eAAe;QAAgB;QAC3D,sBAAsB;QACtB;YACED,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA,2BAA2B;QAC3B;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe;YACfE,iBAAiB;QACnB;QACA,8DAA8D;QAC9D;YACEH,eAAe;YACfE,iBAAiB;YACjBD,eAAe5B,GAAG;QACpB;QACA;YACE2B,eAAe;YACfE,iBAAiB;YACjBD,eAAe5B,GAAG;QACpB;QACA;YACE2B,eAAe;YACfE,iBAAiB;YACjBD,eAAe5B,GAAG;QACpB;QACA;YACE2B,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YAAEH,eAAe3B,GAAG;YAAmB4B,eAAe5B,GAAG;QAAc;QACvE,uEAAuE;QACvE,4DAA4D;QAC5D;YACE2B,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe5B,GAAG;QACpB;QACA,mBAAmB;QACnB;YACE2B,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA;YACEH,eAAe3B,GAAG;YAClB4B,eAAe;YACfE,iBAAiB;QACnB;QACA,WAAW;QACX;YAAEH,eAAe;YAAUC,eAAe5B,GAAG;QAAY;QACzD;YAAE2B,eAAe;YAAiBC,eAAe5B,GAAG;QAAY;QAChE;YACE2B,eAAe;YACfE,iBAAiB;YACjBD,eAAe5B,GAAG;QACpB;QACA;YACE2B,eAAe;YACfE,iBAAiB;YACjBD,eAAe5B,GAAG;QACpB;QACA;YAAE2B,eAAe;YAAUC,eAAe;QAAc;QACxD;YACED,eAAe;YACfE,iBAAiB;YACjBD,eAAe;QACjB;QACA;YACED,eAAe;YACfE,iBAAiB;YACjBD,eAAe;QACjB;QACA;YACED,eAAe;YACfE,iBAAiB;YACjBD,eAAe;QACjB;QACA,uBAAuB;QACvB;YAAED,eAAe;YAAUC,eAAe;QAAiB;QAC3D;YACED,eAAe;YACfE,iBAAiB;YACjBD,eAAe;QACjB;QACA;YACED,eAAe;YACfE,iBAAiB;YACjBD,eAAe;QACjB;KACD;IACD,KAAK,MAAMG,cAAcL,YAAa;QACpC,MAAM9D,oBAAoB8B,MAAM;YAAE,GAAGqC,UAAU;YAAE,GAAGlC,QAAQ;QAAC;IAC/D;IAEA,wDAAwD;IACxD,MAAMhC,iBAAiB6B,MAAM;QAC3BsC,SAAS;QACTC,iBAAiB;QACjB,GAAGpC,QAAQ;IACb;IACA,MAAMb,oBAAoBU,MAAM;QAC9B,GAAGI,eAAe;QAClBG,MAAM;QACNF,WAAW;IACb;IACA,MAAMjB,uBAAuBY,MAAM;QACjCc,SAASR,GAAG;QACZC,MAAM;QACN,GAAGJ,QAAQ;IACb;IAEA,uEAAuE;IACvE,2EAA2E;IAC3E,MAAMqC,aAA8D;QAClE;YACEjC,MAAM;YACNkC,aAAa;QACf;QACA;YACElC,MAAM;YACNkC,aAAa;YACbC,MAAM;QACR;QACA;YACEnC,MAAM;YACNkC,aAAa;YACbC,MAAM;QACR;KACD;IACD,KAAK,MAAMC,aAAaH,WAAY;QAClC,MAAMnD,uBAAuBW,MAAM;YACjC,GAAG2C,SAAS;YACZ7B,SAASR,GAAG;YACZ,GAAGH,QAAQ;QACb;IACF;IAEA,OAAO,IACLR,oBAAoBK,MAAME,2BAA2B;YACnD0C,WAAW;gBAAC;gBAAc;aAAS;QACrC;AACJ,EAAE;AAEF,eAAe7C,4BAA4B"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/internal/test-matrix/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { GeneratorCallback, Tree } from '@nx/devkit';\nimport { agentcoreGatewayGenerator } from '../../sdk/agentcore-gateway';\nimport { agentcoreHarnessGenerator } from '../../sdk/agentcore-harness';\nimport {\n type ConnectionGeneratorSchema,\n connectionGenerator,\n} from '../../sdk/connection';\nimport { licenseGenerator } from '../../sdk/license';\nimport {\n type PyAgentGeneratorSchema,\n type PyApiGeneratorSchema,\n type PyRdbGeneratorSchema,\n pyAgentGenerator,\n pyApiGenerator,\n pyDynamoDBGenerator,\n pyLambdaFunctionGenerator,\n pyMcpServerGenerator,\n pyProjectGenerator,\n pyRdbGenerator,\n} from '../../sdk/py';\nimport { smithyProjectGenerator } from '../../sdk/smithy';\nimport { terraformProjectGenerator } from '../../sdk/terraform';\nimport {\n type TsAgentGeneratorSchema,\n type TsApiGeneratorSchema,\n type TsNxMigrationGeneratorSchema,\n type TsRdbGeneratorSchema,\n tsAgentGenerator,\n tsApiGenerator,\n tsAstroDocsGenerator,\n tsDcrProxyGenerator,\n tsDynamoDBGenerator,\n tsInfraGenerator,\n tsLambdaFunctionGenerator,\n tsMcpServerGenerator,\n tsNxGeneratorGenerator,\n tsNxMigrationGenerator,\n tsNxPluginGenerator,\n tsProjectGenerator,\n tsRdbGenerator,\n tsWebsiteAuthGenerator,\n tsWebsiteGenerator,\n} from '../../sdk/ts';\nimport { installDependencies } from '../../utils/install';\nimport { toSnakeCase } from '../../utils/names';\nimport { getNpmScope, getNpmScopePrefix } from '../../utils/npm-scope';\nimport type { InternalTestMatrixGeneratorSchema } from './schema';\n\n/**\n * Scaffolds every generator, component and connection permutation the e2e tests\n * cover, by composing the generators in-process on a single tree.\n *\n * This ships with the plugin so each released version carries the matrix of the\n * generators *it* had. A test upgrading an old workspace scaffolds with the\n * released version's own matrix and never has to reason about which generators\n * existed when — driving the CLI from the test repo instead would couple the\n * test to a generator list that only describes today's plugin.\n *\n * Hidden and undocumented: it exists for the e2e suite, not for users.\n *\n * Options are typed against each generator's schema, so adding a required option\n * or changing an enum breaks the build here rather than silently reducing\n * coverage.\n *\n * Projects are generated with `preferInstallDependencies: false` by default and\n * the returned callback installs once. Nothing composed here reads the project\n * graph (only `ts#sync` does, which is not part of the matrix), so no\n * intermediate install is needed.\n */\nexport const internalTestMatrixGenerator = async (\n tree: Tree,\n options: InternalTestMatrixGeneratorSchema = {},\n): Promise<GeneratorCallback> => {\n const preferInstallDependencies = options.preferInstallDependencies ?? false;\n const defaults = { preferInstallDependencies };\n const projectDefaults = { ...defaults, directory: 'packages' };\n // Fully-qualified project names, which differ per language: TypeScript\n // projects are scope-prefixed, Python ones are dotted snake_case. Derived from\n // the workspace rather than hardcoded, so the matrix works in any workspace.\n const ts = (name: string) => `${getNpmScopePrefix(tree)}${name}`;\n const py = (name: string) =>\n `${toSnakeCase(getNpmScope(tree))}.${toSnakeCase(name)}`;\n\n // The infrastructure project every other generator deploys into. Which\n // generator owns it depends on the workspace's IaC provider, so the caller\n // asks for the one matching the workspace it created.\n if (options.infra === 'terraform') {\n await terraformProjectGenerator(tree, {\n name: 'infra',\n type: 'application',\n ...projectDefaults,\n });\n } else {\n await tsInfraGenerator(tree, { name: 'infra', ...projectDefaults });\n // A second CDK app with stage config, which only ts#infra offers.\n await tsInfraGenerator(tree, {\n name: 'infra-with-stages',\n stageConfig: true,\n ...projectDefaults,\n });\n }\n\n // Websites (with and without TanStack Router), a docs site, and auth on each.\n await tsWebsiteGenerator(tree, {\n name: 'website',\n iac: 'inherit',\n ...projectDefaults,\n });\n await tsWebsiteGenerator(tree, {\n name: 'website-no-router',\n tanstackRouter: false,\n iac: 'inherit',\n ...projectDefaults,\n });\n await tsAstroDocsGenerator(tree, { name: 'docs-site', ...defaults });\n await tsWebsiteAuthGenerator(tree, {\n project: ts('website'),\n cognitoDomain: 'test',\n allowSignup: true,\n iac: 'inherit',\n ...defaults,\n });\n await tsWebsiteAuthGenerator(tree, {\n project: ts('website-no-router'),\n cognitoDomain: 'test-no-router',\n allowSignup: true,\n iac: 'inherit',\n ...defaults,\n });\n\n // tRPC APIs — REST + HTTP, with Cognito and custom auth.\n const tsApis: TsApiGeneratorSchema[] = [\n { name: 'my-api', infra: 'rest-lambda', auth: 'iam', iac: 'inherit' },\n { name: 'my-api-http', infra: 'http-lambda', auth: 'iam', iac: 'inherit' },\n {\n name: 'my-api-custom',\n infra: 'rest-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n {\n name: 'my-api-custom-http',\n infra: 'http-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n {\n name: 'my-smithy-api',\n framework: 'smithy',\n infra: 'rest-lambda',\n auth: 'iam',\n iac: 'inherit',\n },\n ];\n for (const api of tsApis) {\n await tsApiGenerator(tree, { ...api, ...projectDefaults });\n }\n\n // A Smithy shape library; `my-smithy-api` covers consuming one.\n await smithyProjectGenerator(tree, {\n name: 'my-shapes',\n type: 'shapes',\n ...projectDefaults,\n });\n\n // Python FastAPI — REST + HTTP, with Cognito and custom auth.\n const pyApis: PyApiGeneratorSchema[] = [\n { name: 'py-api', infra: 'rest-lambda', auth: 'iam', iac: 'inherit' },\n { name: 'py-api-http', infra: 'http-lambda', auth: 'iam', iac: 'inherit' },\n {\n name: 'py-api-custom',\n infra: 'rest-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n {\n name: 'py-api-custom-http',\n infra: 'http-lambda',\n auth: 'custom',\n iac: 'inherit',\n },\n ];\n for (const api of pyApis) {\n await pyApiGenerator(tree, { ...api, ...projectDefaults });\n }\n\n // Library projects hosting the components below, each with a lambda function.\n await pyProjectGenerator(tree, {\n name: 'py-project',\n type: 'application',\n ...projectDefaults,\n });\n await tsProjectGenerator(tree, { name: 'ts-project', ...projectDefaults });\n await pyLambdaFunctionGenerator(tree, {\n project: py('py-project'),\n name: 'my-function',\n event: 'Any',\n iac: 'inherit',\n ...defaults,\n });\n await tsLambdaFunctionGenerator(tree, {\n project: 'ts-project',\n name: 'my-function',\n event: 'Any',\n iac: 'inherit',\n ...defaults,\n });\n\n // MCP servers — uninfra'd and hosted on AgentCore.\n await pyMcpServerGenerator(tree, {\n project: 'py_project',\n name: 'my-mcp-server',\n infra: 'agentcore',\n iac: 'inherit',\n ...defaults,\n });\n await tsMcpServerGenerator(tree, {\n project: 'ts-project',\n name: 'my-mcp-server',\n infra: 'none',\n iac: 'inherit',\n ...defaults,\n });\n await tsMcpServerGenerator(tree, {\n project: 'ts-project',\n name: 'hosted-mcp-server',\n infra: 'agentcore',\n iac: 'inherit',\n ...defaults,\n });\n\n // OAuth DCR proxy for Cognito-authenticated MCP servers.\n await tsDcrProxyGenerator(tree, {\n name: 'my-dcr-proxy',\n iac: 'inherit',\n ...projectDefaults,\n });\n\n // TypeScript agents across every protocol and auth permutation. The unnamed\n // one takes the generator's default name, which the connections below use.\n const tsAgents: TsAgentGeneratorSchema[] = [\n {\n project: 'ts-project',\n name: 'my-ts-agent',\n infra: 'none',\n iac: 'inherit',\n },\n { project: 'ts-project', infra: 'agentcore', iac: 'inherit' },\n {\n project: 'ts-project',\n name: 'my-ts-a2a-agent',\n protocol: 'a2a',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'ts-project',\n name: 'my-ts-a2a-agent-cognito',\n protocol: 'a2a',\n auth: 'cognito',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'ts-project',\n name: 'my-ts-agui-agent',\n protocol: 'ag-ui',\n infra: 'agentcore',\n iac: 'inherit',\n },\n ];\n for (const agent of tsAgents) {\n await tsAgentGenerator(tree, { ...agent, ...defaults });\n }\n\n // Python agents: Strands across every protocol, plus LangChain in its own\n // project — langchain's dependency closure would push the zip-bundled Lambda\n // in py-project past its unzipped size limit.\n const pyAgents: PyAgentGeneratorSchema[] = [\n {\n project: 'py_project',\n name: 'my-agent',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'py_project',\n name: 'my-py-a2a-agent',\n protocol: 'a2a',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'py_project',\n name: 'my-py-a2a-agent-cognito',\n protocol: 'a2a',\n auth: 'cognito',\n infra: 'agentcore',\n iac: 'inherit',\n },\n {\n project: 'py_project',\n name: 'my-py-agui-agent',\n protocol: 'ag-ui',\n infra: 'agentcore',\n iac: 'inherit',\n },\n ];\n for (const agent of pyAgents) {\n await pyAgentGenerator(tree, { ...agent, ...defaults });\n }\n await pyProjectGenerator(tree, {\n name: 'py-langchain-project',\n type: 'application',\n ...projectDefaults,\n });\n const langchainAgents: PyAgentGeneratorSchema[] = [\n {\n project: 'py_langchain_project',\n name: 'my-py-langchain-agent',\n protocol: 'ag-ui',\n iac: 'inherit',\n },\n {\n project: 'py_langchain_project',\n name: 'my-py-langchain-http-agent',\n protocol: 'http',\n iac: 'inherit',\n },\n {\n project: 'py_langchain_project',\n name: 'my-py-langchain-a2a-agent',\n protocol: 'a2a',\n iac: 'inherit',\n },\n ];\n for (const agent of langchainAgents) {\n await pyAgentGenerator(tree, {\n ...agent,\n framework: 'langchain',\n infra: 'agentcore',\n ...defaults,\n });\n }\n\n // AgentCore gateways, including a parent fronting the first (chained), and\n // an http-protocol gateway fronting agent runtime targets.\n await agentcoreGatewayGenerator(tree, {\n name: 'my-gateway',\n iac: 'inherit',\n ...projectDefaults,\n });\n await agentcoreGatewayGenerator(tree, {\n name: 'parent-gateway',\n iac: 'inherit',\n ...projectDefaults,\n });\n await agentcoreGatewayGenerator(tree, {\n name: 'agent-gateway',\n protocol: 'http',\n iac: 'inherit',\n ...projectDefaults,\n });\n\n // AgentCore Harness — a standalone invocation project.\n await agentcoreHarnessGenerator(tree, {\n name: 'my-harness',\n infra: 'agentcore',\n iac: 'inherit',\n ...projectDefaults,\n });\n\n // Databases — DynamoDB, plus Aurora across both engines and ORMs.\n await tsDynamoDBGenerator(tree, {\n name: 'my-table',\n framework: 'electrodb',\n infra: 'dynamodb',\n iac: 'inherit',\n ...projectDefaults,\n });\n await pyDynamoDBGenerator(tree, {\n name: 'my-py-table',\n framework: 'pynamodb',\n infra: 'dynamodb',\n iac: 'inherit',\n ...projectDefaults,\n });\n const tsRdbs: TsRdbGeneratorSchema[] = [\n {\n name: 'postgres-db',\n infra: 'aurora',\n engine: 'postgres',\n framework: 'prisma',\n iac: 'inherit',\n },\n {\n name: 'my-sql-db',\n infra: 'aurora',\n engine: 'mysql',\n framework: 'prisma',\n iac: 'inherit',\n },\n ];\n for (const rdb of tsRdbs) {\n await tsRdbGenerator(tree, { ...rdb, ...projectDefaults });\n }\n const pyRdbs: PyRdbGeneratorSchema[] = [\n {\n name: 'py-postgres-db',\n infra: 'aurora',\n engine: 'postgres',\n framework: 'sqlmodel',\n iac: 'inherit',\n },\n {\n name: 'py-mysql-db',\n infra: 'aurora',\n engine: 'mysql',\n framework: 'sqlmodel',\n iac: 'inherit',\n },\n ];\n for (const rdb of pyRdbs) {\n await pyRdbGenerator(tree, { ...rdb, ...projectDefaults });\n }\n\n // Every connection edge the matrix covers.\n const connections: ConnectionGeneratorSchema[] = [\n // Website -> API\n { sourceProject: ts('website'), targetProject: ts('my-api') },\n { sourceProject: ts('website-no-router'), targetProject: ts('my-api') },\n { sourceProject: 'website', targetProject: 'py_api' },\n { sourceProject: 'website', targetProject: 'my-smithy-api' },\n // Agent -> MCP server\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'ts-project',\n targetComponent: 'hosted-mcp-server',\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'my-ts-agui-agent',\n targetProject: 'ts-project',\n targetComponent: 'hosted-mcp-server',\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-agent',\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n // HTTP agent <-> A2A agent\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'ts-project',\n targetComponent: 'my-ts-a2a-agent',\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'ts-project',\n targetComponent: 'my-ts-a2a-agent',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-agent',\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n // Agent -> gateway, gateway -> MCP server, gateway -> gateway\n {\n sourceProject: 'ts-project',\n sourceComponent: 'agent',\n targetProject: ts('my-gateway'),\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: ts('my-gateway'),\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-agent',\n targetProject: ts('my-gateway'),\n },\n {\n sourceProject: ts('my-gateway'),\n targetProject: 'ts-project',\n targetComponent: 'hosted-mcp-server',\n },\n {\n sourceProject: ts('my-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-mcp-server',\n },\n { sourceProject: ts('parent-gateway'), targetProject: ts('my-gateway') },\n // Gateway -> agent (http gateway fronting agent runtime targets: every\n // supported protocol permutation), then website -> gateway.\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'ts-project',\n targetComponent: 'my-ts-agui-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'ts-project',\n targetComponent: 'my-ts-a2a-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-py-agui-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-agent',\n },\n {\n sourceProject: ts('agent-gateway'),\n targetProject: 'py_project',\n targetComponent: 'my-py-a2a-agent',\n },\n {\n sourceProject: ts('website-no-router'),\n targetProject: ts('agent-gateway'),\n },\n // Website -> agent\n {\n sourceProject: ts('website'),\n targetProject: 'ts-project',\n targetComponent: 'agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'ts-project',\n targetComponent: 'my-ts-agui-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_project',\n targetComponent: 'my-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_project',\n targetComponent: 'my-py-agui-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_langchain_project',\n targetComponent: 'my-py-langchain-agent',\n },\n {\n sourceProject: ts('website'),\n targetProject: 'py_langchain_project',\n targetComponent: 'my-py-langchain-http-agent',\n },\n // DynamoDB\n { sourceProject: 'my-api', targetProject: ts('my-table') },\n { sourceProject: 'my-smithy-api', targetProject: ts('my-table') },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'my-ts-agent',\n targetProject: ts('my-table'),\n },\n {\n sourceProject: 'ts-project',\n sourceComponent: 'my-mcp-server',\n targetProject: ts('my-table'),\n },\n { sourceProject: 'py_api', targetProject: 'my_py_table' },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'my_py_table',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-mcp-server',\n targetProject: 'my_py_table',\n },\n {\n sourceProject: 'py_langchain_project',\n sourceComponent: 'my-py-langchain-http-agent',\n targetProject: 'my_py_table',\n },\n // Relational databases\n { sourceProject: 'py_api', targetProject: 'py_postgres_db' },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-agent',\n targetProject: 'py_postgres_db',\n },\n {\n sourceProject: 'py_project',\n sourceComponent: 'my-mcp-server',\n targetProject: 'py_postgres_db',\n },\n ];\n for (const connection of connections) {\n await connectionGenerator(tree, { ...connection, ...defaults });\n }\n\n // Licensing, then an Nx plugin with a custom generator.\n await licenseGenerator(tree, {\n license: 'Apache-2.0',\n copyrightHolder: 'Amazon.com, Inc. or its affiliates',\n ...defaults,\n });\n await tsNxPluginGenerator(tree, {\n ...projectDefaults,\n name: 'plugin',\n directory: 'tools',\n });\n await tsNxGeneratorGenerator(tree, {\n project: ts('plugin'),\n name: 'my#generator',\n ...defaults,\n });\n\n // A migration of each kind, so the scaffolded codemods compile and the\n // plugin's migrations.json (created by the first run) registers all three.\n const migrations: Omit<TsNxMigrationGeneratorSchema, 'project'>[] = [\n {\n name: 'rename-foo-target',\n description: 'Rename the foo target to bar',\n },\n {\n name: 'migrate-custom-handlers',\n description: 'Update custom handlers for the new API',\n kind: 'agentic',\n },\n {\n name: 'upgrade-framework',\n description: 'Upgrade the framework and reconcile call sites',\n kind: 'hybrid',\n },\n ];\n for (const migration of migrations) {\n await tsNxMigrationGenerator(tree, {\n ...migration,\n project: ts('plugin'),\n ...defaults,\n });\n }\n\n return () =>\n installDependencies(tree, preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default internalTestMatrixGenerator;\n"],"names":["agentcoreGatewayGenerator","agentcoreHarnessGenerator","connectionGenerator","licenseGenerator","pyAgentGenerator","pyApiGenerator","pyDynamoDBGenerator","pyLambdaFunctionGenerator","pyMcpServerGenerator","pyProjectGenerator","pyRdbGenerator","smithyProjectGenerator","terraformProjectGenerator","tsAgentGenerator","tsApiGenerator","tsAstroDocsGenerator","tsDcrProxyGenerator","tsDynamoDBGenerator","tsInfraGenerator","tsLambdaFunctionGenerator","tsMcpServerGenerator","tsNxGeneratorGenerator","tsNxMigrationGenerator","tsNxPluginGenerator","tsProjectGenerator","tsRdbGenerator","tsWebsiteAuthGenerator","tsWebsiteGenerator","installDependencies","toSnakeCase","getNpmScope","getNpmScopePrefix","internalTestMatrixGenerator","tree","options","preferInstallDependencies","defaults","projectDefaults","directory","ts","name","py","infra","type","stageConfig","iac","tanstackRouter","project","cognitoDomain","allowSignup","tsApis","auth","framework","api","pyApis","event","tsAgents","protocol","agent","pyAgents","langchainAgents","tsRdbs","engine","rdb","pyRdbs","connections","sourceProject","targetProject","sourceComponent","targetComponent","connection","license","copyrightHolder","migrations","description","kind","migration","languages"],"mappings":"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"}
@@ -58,6 +58,15 @@ export declare const ensureDependencyCheckBlock: (tree: Tree, options?: EnsureDe
58
58
  * block, so an `exceptions` array elsewhere in the file isn't matched.
59
59
  */
60
60
  export declare const ensureLicenseExceptions: (tree: Tree, exceptions: DependencyCheckException[]) => Promise<void>;
61
+ /**
62
+ * Remove the exceptions for the named packages from
63
+ * `license.dependencies.exceptions`, whatever reason or spdx each carries.
64
+ * Packages that aren't listed are left alone, as are all other exceptions.
65
+ *
66
+ * Scoped to `dependencies: { $scope }` like {@link ensureLicenseExceptions}, so
67
+ * an `exceptions` array elsewhere in the file isn't matched.
68
+ */
69
+ export declare const removeLicenseExceptions: (tree: Tree, packages: string[]) => Promise<void>;
61
70
  /**
62
71
  * Add `pythonCollector()` to `license.dependencies.collectors`, unless one is
63
72
  * already configured.
@@ -380,6 +380,34 @@ import { addDependencyToTargetIfNotPresent } from "../utils/nx.js";
380
380
  await formatFilesInSubtree(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME);
381
381
  }
382
382
  };
383
+ /**
384
+ * Remove the exceptions for the named packages from
385
+ * `license.dependencies.exceptions`, whatever reason or spdx each carries.
386
+ * Packages that aren't listed are left alone, as are all other exceptions.
387
+ *
388
+ * Scoped to `dependencies: { $scope }` like {@link ensureLicenseExceptions}, so
389
+ * an `exceptions` array elsewhere in the file isn't matched.
390
+ */ export const removeLicenseExceptions = async (tree, packages)=>{
391
+ if (!tree.exists(AWS_NX_PLUGIN_CONFIG_FILE_NAME)) return;
392
+ const { applyGritQL } = await import("../utils/ast.js");
393
+ let modified = false;
394
+ for (const pkg of packages){
395
+ const removed = await applyGritQL(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME, `\`dependencies: { $scope }\` where {
396
+ $scope <: contains bubble or {
397
+ \`[$items]\` where {
398
+ $items <: some bubble \`{ $props }\` as $entry where {
399
+ $props <: contains \`package: ${JSON.stringify(pkg)}\`,
400
+ $entry => .
401
+ }
402
+ }
403
+ }
404
+ }`);
405
+ modified ||= removed;
406
+ }
407
+ if (modified) {
408
+ await formatFilesInSubtree(tree, AWS_NX_PLUGIN_CONFIG_FILE_NAME);
409
+ }
410
+ };
383
411
  /**
384
412
  * Add `pythonCollector()` to `license.dependencies.collectors`, unless one is
385
413
  * already configured.