@aws/nx-plugin 0.107.0 → 0.109.0

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 (49) hide show
  1. package/LICENSE-THIRD-PARTY +2401 -175
  2. package/package.json +19 -8
  3. package/src/infra/app/__snapshots__/generator.spec.ts.snap +13 -13
  4. package/src/mcp-server/generator-info.d.ts +95 -13
  5. package/src/mcp-server/generator-info.js +319 -164
  6. package/src/mcp-server/generator-info.js.map +1 -1
  7. package/src/mcp-server/guide-pipeline.d.ts +28 -0
  8. package/src/mcp-server/guide-pipeline.js +393 -0
  9. package/src/mcp-server/guide-pipeline.js.map +1 -0
  10. package/src/mcp-server/guide-render.d.ts +25 -0
  11. package/src/mcp-server/guide-render.js +50 -0
  12. package/src/mcp-server/guide-render.js.map +1 -0
  13. package/src/mcp-server/mdx-ast.d.ts +30 -0
  14. package/src/mcp-server/mdx-ast.js +96 -0
  15. package/src/mcp-server/mdx-ast.js.map +1 -0
  16. package/src/mcp-server/option-filter.d.ts +33 -0
  17. package/src/mcp-server/option-filter.js +119 -0
  18. package/src/mcp-server/option-filter.js.map +1 -0
  19. package/src/mcp-server/schema-registry.d.ts +36 -0
  20. package/src/mcp-server/schema-registry.js +79 -0
  21. package/src/mcp-server/schema-registry.js.map +1 -0
  22. package/src/mcp-server/tools/generator-guide.d.ts +7 -1
  23. package/src/mcp-server/tools/generator-guide.js +32 -4
  24. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  25. package/src/mcp-server/tools/list-generators.d.ts +10 -1
  26. package/src/mcp-server/tools/list-generators.js +34 -13
  27. package/src/mcp-server/tools/list-generators.js.map +1 -1
  28. package/src/preset/__snapshots__/generator.spec.ts.snap +3 -3
  29. package/src/preset/schema.json +2 -2
  30. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
  31. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +4 -4
  32. package/src/py/strands-agent/generator.js +95 -2
  33. package/src/py/strands-agent/generator.js.map +1 -1
  34. package/src/py/strands-agent/scripts/http/chat.ts.template +38 -0
  35. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  36. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +2 -0
  37. package/src/ts/nx-generator/files/nx-plugin-for-aws/docs/__nameKebabCase__.mdx.template +2 -0
  38. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +27 -27
  39. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +12 -3
  40. package/src/ts/strands-agent/generator.js +31 -0
  41. package/src/ts/strands-agent/generator.js.map +1 -1
  42. package/src/ts/strands-agent/scripts/http/chat.ts.template +35 -0
  43. package/src/utils/files/common/shadcn/src/components/ui/avatar.tsx.template +60 -4
  44. package/src/utils/files/common/shadcn/src/components/ui/textarea.tsx.template +1 -1
  45. package/src/utils/generators.d.ts +1 -1
  46. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +13 -3
  47. package/src/utils/versions.d.ts +39 -38
  48. package/src/utils/versions.js +38 -37
  49. package/src/utils/versions.js.map +1 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Minimal chat CLI for <%- agentNameClassName %> (Python FastAPI / JSONL streaming).
3
+ *
4
+ * Uses the type-safe TypeScript client generated from the agent's OpenAPI
5
+ * spec. Connects to the agent at `process.env.URL` (set by the Nx
6
+ * `<%- agentTargetPrefix %>-chat` target).
7
+ */
8
+ import { randomUUID } from 'node:crypto';
9
+ import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
10
+ import { <%- agentNameClassName %> } from './generated/client.gen.js';
11
+
12
+ const SESSION_ID_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
13
+
14
+ class <%- agentNameClassName %>Adapter implements ChatAdapter {
15
+ private client!: <%- agentNameClassName %>;
16
+ // AgentCore session IDs must be at least 33 characters.
17
+ private readonly sessionId = randomUUID().replaceAll('-', '').padEnd(33, '0');
18
+
19
+ async connect(url: string) {
20
+ this.client = new <%- agentNameClassName %>({
21
+ url,
22
+ fetch: (input, init) => {
23
+ const headers = new Headers(init?.headers);
24
+ headers.set(SESSION_ID_HEADER, this.sessionId);
25
+ return fetch(input, { ...init, headers });
26
+ },
27
+ });
28
+ return { agentName: '<%- agentNameClassName %>' };
29
+ }
30
+
31
+ async *sendMessage(text: string): AsyncIterable<string> {
32
+ for await (const chunk of this.client.invoke({ message: text })) {
33
+ if (typeof chunk.content === 'string') yield chunk.content;
34
+ }
35
+ }
36
+ }
37
+
38
+ await chatLoop(new <%- agentNameClassName %>Adapter(), process.env.URL!);
@@ -724,10 +724,10 @@ exports[`ts#mcp-server generator > should match snapshot for generated files > u
724
724
  },
725
725
  "dependencies": {
726
726
  "@aws-lambda-powertools/parameters": "2.33.0",
727
- "@aws-sdk/client-appconfigdata": "3.1037.0",
727
+ "@aws-sdk/client-appconfigdata": "3.1039.0",
728
728
  "@modelcontextprotocol/sdk": "1.29.0",
729
729
  "express": "5.2.1",
730
- "zod": "4.3.6"
730
+ "zod": "4.4.1"
731
731
  },
732
732
  "devDependencies": {
733
733
  "@modelcontextprotocol/inspector": "0.19.0",
@@ -4,6 +4,7 @@ exports[`nx-generator generator > within @aws/nx-plugin > should add guide page
4
4
  "---
5
5
  title: foo#bar
6
6
  description: Some description
7
+ generator: foo#bar
7
8
  ---
8
9
 
9
10
  import { FileTree } from '@astrojs/starlight/components';
@@ -11,6 +12,7 @@ import RunGenerator from '@components/run-generator.astro';
11
12
  import GeneratorParameters from '@components/generator-parameters.astro';
12
13
  import Infrastructure from '@components/infrastructure.astro';
13
14
  import Snippet from '@components/snippet.astro';
15
+ import OptionFilter from '@components/option-filter.astro';
14
16
 
15
17
  TODO: Add an overview of your generator here.
16
18
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: <%- name %>
3
3
  description: <%- description ?? 'TODO - A short description of your generator' %>
4
+ generator: <%- name %>
4
5
  ---
5
6
 
6
7
  import { FileTree } from '@astrojs/starlight/components';
@@ -8,6 +9,7 @@ import RunGenerator from '@components/run-generator.astro';
8
9
  import GeneratorParameters from '@components/generator-parameters.astro';
9
10
  import Infrastructure from '@components/infrastructure.astro';
10
11
  import Snippet from '@components/snippet.astro';
12
+ import OptionFilter from '@components/option-filter.astro';
11
13
 
12
14
  TODO: Add an overview of your generator here.
13
15
 
@@ -1057,9 +1057,9 @@ exports[`react-website generator > Tanstack router integration > should generate
1057
1057
  "{
1058
1058
  "name": "@proj/source",
1059
1059
  "dependencies": {
1060
- "@cloudscape-design/board-components": "3.0.174",
1061
- "@cloudscape-design/components": "3.0.1284",
1062
- "@cloudscape-design/global-styles": "1.0.57",
1060
+ "@cloudscape-design/board-components": "3.0.175",
1061
+ "@cloudscape-design/components": "3.0.1287",
1062
+ "@cloudscape-design/global-styles": "1.0.58",
1063
1063
  "aws-cdk-lib": "2.251.0",
1064
1064
  "constructs": "10.6.0",
1065
1065
  "react": "19.2.5",
@@ -1068,13 +1068,13 @@ exports[`react-website generator > Tanstack router integration > should generate
1068
1068
  },
1069
1069
  "devDependencies": {
1070
1070
  "@eslint/js": "^9.8.0",
1071
- "@nx/eslint": "22.7.0",
1072
- "@nx/eslint-plugin": "22.7.0",
1073
- "@nx/js": "22.7.0",
1074
- "@nx/react": "22.7.0",
1075
- "@nx/vite": "22.7.0",
1076
- "@nx/vitest": "22.7.0",
1077
- "@nx/web": "22.7.0",
1071
+ "@nx/eslint": "22.7.1",
1072
+ "@nx/eslint-plugin": "22.7.1",
1073
+ "@nx/js": "22.7.1",
1074
+ "@nx/react": "22.7.1",
1075
+ "@nx/vite": "22.7.1",
1076
+ "@nx/vitest": "22.7.1",
1077
+ "@nx/web": "22.7.1",
1078
1078
  "@swc-node/register": "~1.11.1",
1079
1079
  "@swc/cli": "~0.8.0",
1080
1080
  "@swc/core": "~1.15.5",
@@ -2674,10 +2674,10 @@ exports[`react-website generator > Tanstack router integration > should generate
2674
2674
  "{
2675
2675
  "name": "@proj/source",
2676
2676
  "dependencies": {
2677
- "@cloudscape-design/board-components": "3.0.174",
2678
- "@cloudscape-design/components": "3.0.1284",
2679
- "@cloudscape-design/global-styles": "1.0.57",
2680
- "@tanstack/react-router": "1.168.24",
2677
+ "@cloudscape-design/board-components": "3.0.175",
2678
+ "@cloudscape-design/components": "3.0.1287",
2679
+ "@cloudscape-design/global-styles": "1.0.58",
2680
+ "@tanstack/react-router": "1.168.26",
2681
2681
  "aws-cdk-lib": "2.251.0",
2682
2682
  "constructs": "10.6.0",
2683
2683
  "react": "19.2.5",
@@ -2686,20 +2686,20 @@ exports[`react-website generator > Tanstack router integration > should generate
2686
2686
  },
2687
2687
  "devDependencies": {
2688
2688
  "@eslint/js": "^9.8.0",
2689
- "@nx/eslint": "22.7.0",
2690
- "@nx/eslint-plugin": "22.7.0",
2691
- "@nx/js": "22.7.0",
2692
- "@nx/react": "22.7.0",
2693
- "@nx/vite": "22.7.0",
2694
- "@nx/vitest": "22.7.0",
2695
- "@nx/web": "22.7.0",
2689
+ "@nx/eslint": "22.7.1",
2690
+ "@nx/eslint-plugin": "22.7.1",
2691
+ "@nx/js": "22.7.1",
2692
+ "@nx/react": "22.7.1",
2693
+ "@nx/vite": "22.7.1",
2694
+ "@nx/vitest": "22.7.1",
2695
+ "@nx/web": "22.7.1",
2696
2696
  "@swc-node/register": "~1.11.1",
2697
2697
  "@swc/cli": "~0.8.0",
2698
2698
  "@swc/core": "~1.15.5",
2699
2699
  "@swc/helpers": "~0.5.18",
2700
2700
  "@tailwindcss/vite": "4.2.2",
2701
- "@tanstack/router-generator": "1.166.35",
2702
- "@tanstack/router-plugin": "1.167.27",
2701
+ "@tanstack/router-generator": "1.166.37",
2702
+ "@tanstack/router-plugin": "1.167.29",
2703
2703
  "@tanstack/router-utils": "1.161.7",
2704
2704
  "@tanstack/virtual-file-routes": "1.161.7",
2705
2705
  "@testing-library/dom": "10.4.0",
@@ -4956,10 +4956,10 @@ root &&
4956
4956
 
4957
4957
  exports[`react-website generator > should handle npm scope prefix correctly > scoped-dependencies 1`] = `
4958
4958
  {
4959
- "@cloudscape-design/board-components": "3.0.174",
4960
- "@cloudscape-design/components": "3.0.1284",
4961
- "@cloudscape-design/global-styles": "1.0.57",
4962
- "@tanstack/react-router": "1.168.24",
4959
+ "@cloudscape-design/board-components": "3.0.175",
4960
+ "@cloudscape-design/components": "3.0.1287",
4961
+ "@cloudscape-design/global-styles": "1.0.58",
4962
+ "@tanstack/react-router": "1.168.26",
4963
4963
  "aws-cdk-lib": "2.251.0",
4964
4964
  "constructs": "10.6.0",
4965
4965
  "react": "19.2.5",
@@ -90,7 +90,7 @@ exports[`cognito-auth generator > should generate files > user-identity 1`] = `
90
90
  IdentityPool,
91
91
  UserPoolAuthenticationProvider,
92
92
  } from 'aws-cdk-lib/aws-cognito-identitypool';
93
- import { CfnOutput, Duration, Lazy, Stack } from 'aws-cdk-lib';
93
+ import { CfnOutput, CfnResource, Duration, Lazy, Stack } from 'aws-cdk-lib';
94
94
  import {
95
95
  AccountRecovery,
96
96
  CfnManagedLoginBranding,
@@ -161,8 +161,8 @@ export class UserIdentity extends Construct {
161
161
  });
162
162
  }
163
163
 
164
- private createUserPool = () =>
165
- new UserPool(this, 'UserPool', {
164
+ private createUserPool = () => {
165
+ const userPool = new UserPool(this, 'UserPool', {
166
166
  deletionProtection: true,
167
167
  passwordPolicy: {
168
168
  minLength: 8,
@@ -194,6 +194,15 @@ export class UserIdentity extends Construct {
194
194
  phone: true,
195
195
  },
196
196
  });
197
+ // Retain the SMS role alongside the pool so the pool can still be updated and deleted manually
198
+ const poolCfn = userPool.node.defaultChild as CfnResource;
199
+ const smsRoleCfn = userPool.node.findChild('smsRole').node
200
+ .defaultChild as CfnResource;
201
+ smsRoleCfn.cfnOptions.deletionPolicy = poolCfn.cfnOptions.deletionPolicy;
202
+ smsRoleCfn.cfnOptions.updateReplacePolicy =
203
+ poolCfn.cfnOptions.updateReplacePolicy;
204
+ return userPool;
205
+ };
197
206
 
198
207
  private createUserPoolDomain = (userPool: UserPool) =>
199
208
  new CfnUserPoolDomain(this, 'UserPoolDomain', {
@@ -115,6 +115,7 @@ const tsStrandsAgentGenerator = async (tree, options) => {
115
115
  ]), (0, versions_1.withVersions)([
116
116
  'tsx',
117
117
  '@types/node',
118
+ 'agent-chat-cli',
118
119
  ...(protocol === 'A2A'
119
120
  ? ['@types/express']
120
121
  : ['@types/ws', '@types/cors']),
@@ -123,6 +124,25 @@ const tsStrandsAgentGenerator = async (tree, options) => {
123
124
  // HTTP agents use port 8081+ to avoid conflict with VS Code server on 8080.
124
125
  const localDevPortStart = protocol === 'A2A' ? 9000 : 8081;
125
126
  const localDevPort = (0, port_1.assignPort)(tree, project, localDevPortStart);
127
+ // HTTP chat needs a tiny generated script to wrap the project's tRPC
128
+ // WebSocket client in a `ChatAdapter`. A2A speaks the standard A2A
129
+ // protocol, so we can run `agent-chat-cli` directly as a binary.
130
+ if (protocol === 'HTTP') {
131
+ const scriptsDir = (0, devkit_1.joinPathFragments)(project.root, 'scripts', agentTargetPrefix);
132
+ const relativeAgentImport = `../../${targetSourceDirRelativeToProjectRoot}`;
133
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'scripts', 'http'), scriptsDir, {
134
+ agentNameClassName,
135
+ agentTargetPrefix,
136
+ localDevPort,
137
+ relativeAgentImport,
138
+ }, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
139
+ }
140
+ const chatUrl = protocol === 'HTTP'
141
+ ? `ws://localhost:${localDevPort}/ws`
142
+ : `http://localhost:${localDevPort}`;
143
+ const chatCommand = protocol === 'HTTP'
144
+ ? `tsx ./scripts/${agentTargetPrefix}/chat.ts`
145
+ : `agent-chat-cli a2a ${chatUrl}`;
126
146
  (0, devkit_1.updateProjectConfiguration)(tree, project.name, {
127
147
  ...project,
128
148
  targets: {
@@ -150,6 +170,17 @@ const tsStrandsAgentGenerator = async (tree, options) => {
150
170
  },
151
171
  continuous: true,
152
172
  },
173
+ [`${agentTargetPrefix}-chat`]: {
174
+ executor: 'nx:run-commands',
175
+ options: {
176
+ commands: [chatCommand],
177
+ cwd: '{projectRoot}',
178
+ env: {
179
+ URL: chatUrl,
180
+ },
181
+ },
182
+ dependsOn: [`${agentTargetPrefix}-serve-local`],
183
+ },
153
184
  },
154
185
  });
155
186
  (0, nx_1.addComponentGeneratorMetadata)(tree, project.name, exports.TS_STRANDS_AGENT_GENERATOR_INFO, targetSourceDirRelativeToProjectRoot, agentTargetPrefix, { port: localDevPort, rc: agentNameClassName, auth, protocol });
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/strands-agent/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/strands-agent/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Minimal chat CLI for <%- agentNameClassName %> (HTTP / tRPC WebSocket).
3
+ *
4
+ * Connects to the agent at `process.env.URL` (set by the Nx `<%- agentTargetPrefix %>-chat` target).
5
+ */
6
+ import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
7
+ import { <%- agentNameClassName %>Client } from '<%- relativeAgentImport %>/client.js';
8
+
9
+ class TrpcWebSocketAdapter implements ChatAdapter {
10
+ private client!: ReturnType<typeof <%- agentNameClassName %>Client.local>;
11
+
12
+ async connect(url: string) {
13
+ this.client = <%- agentNameClassName %>Client.local({ url });
14
+ return { agentName: '<%- agentNameClassName %>' };
15
+ }
16
+
17
+ async *sendMessage(text: string): AsyncIterable<string> {
18
+ const stream = new ReadableStream<string>({
19
+ start: (controller) => {
20
+ this.client.invoke.subscribe(
21
+ { message: text },
22
+ {
23
+ onData: (chunk: string) => controller.enqueue(chunk),
24
+ onComplete: () => controller.close(),
25
+ onError: (err: unknown) => controller.error(err),
26
+ },
27
+ );
28
+ },
29
+ });
30
+
31
+ yield* stream as unknown as AsyncIterable<string>;
32
+ }
33
+ }
34
+
35
+ await chatLoop(new TrpcWebSocketAdapter(), process.env.URL!);
@@ -7,13 +7,17 @@ import { cn } from "<%= scopeAlias %>common-shadcn/lib/utils"
7
7
 
8
8
  function Avatar({
9
9
  className,
10
+ size = "default",
10
11
  ...props
11
- }: React.ComponentProps<typeof AvatarPrimitive.Root>) {
12
+ }: React.ComponentProps<typeof AvatarPrimitive.Root> & {
13
+ size?: "default" | "sm" | "lg"
14
+ }) {
12
15
  return (
13
16
  <AvatarPrimitive.Root
14
17
  data-slot="avatar"
18
+ data-size={size}
15
19
  className={cn(
16
- "relative flex size-8 shrink-0 overflow-hidden rounded-full",
20
+ "group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
17
21
  className
18
22
  )}
19
23
  {...props}
@@ -42,7 +46,7 @@ function AvatarFallback({
42
46
  <AvatarPrimitive.Fallback
43
47
  data-slot="avatar-fallback"
44
48
  className={cn(
45
- "bg-muted flex size-full items-center justify-center rounded-full",
49
+ "flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
46
50
  className
47
51
  )}
48
52
  {...props}
@@ -50,4 +54,56 @@ function AvatarFallback({
50
54
  )
51
55
  }
52
56
 
53
- export { Avatar, AvatarImage, AvatarFallback }
57
+ function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
58
+ return (
59
+ <span
60
+ data-slot="avatar-badge"
61
+ className={cn(
62
+ "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none",
63
+ "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
64
+ "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
65
+ "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
66
+ className
67
+ )}
68
+ {...props}
69
+ />
70
+ )
71
+ }
72
+
73
+ function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
74
+ return (
75
+ <div
76
+ data-slot="avatar-group"
77
+ className={cn(
78
+ "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
79
+ className
80
+ )}
81
+ {...props}
82
+ />
83
+ )
84
+ }
85
+
86
+ function AvatarGroupCount({
87
+ className,
88
+ ...props
89
+ }: React.ComponentProps<"div">) {
90
+ return (
91
+ <div
92
+ data-slot="avatar-group-count"
93
+ className={cn(
94
+ "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
95
+ className
96
+ )}
97
+ {...props}
98
+ />
99
+ )
100
+ }
101
+
102
+ export {
103
+ Avatar,
104
+ AvatarImage,
105
+ AvatarFallback,
106
+ AvatarBadge,
107
+ AvatarGroup,
108
+ AvatarGroupCount,
109
+ }
@@ -7,7 +7,7 @@ function Textarea({ className, ...props }: React.ComponentProps<"textarea">) {
7
7
  <textarea
8
8
  data-slot="textarea"
9
9
  className={cn(
10
- "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
10
+ "flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
11
11
  className
12
12
  )}
13
13
  {...props}
@@ -5,7 +5,7 @@ export interface GeneratorInfo {
5
5
  readonly resolvedSchemaPath: string;
6
6
  readonly hidden?: boolean;
7
7
  readonly description: string;
8
- readonly guidePages?: string[];
8
+ readonly guidePages?: readonly string[];
9
9
  }
10
10
  /**
11
11
  * Alias for GeneratorInfo used by MCP server and generators
@@ -2,7 +2,7 @@ import {
2
2
  IdentityPool,
3
3
  UserPoolAuthenticationProvider,
4
4
  } from 'aws-cdk-lib/aws-cognito-identitypool';
5
- import { CfnOutput, Duration, Lazy, Stack } from 'aws-cdk-lib';
5
+ import { CfnOutput, CfnResource, Duration, Lazy, Stack } from 'aws-cdk-lib';
6
6
  import {
7
7
  AccountRecovery,
8
8
  CfnManagedLoginBranding,
@@ -73,8 +73,8 @@ export class UserIdentity extends Construct {
73
73
  });
74
74
  }
75
75
 
76
- private createUserPool = () =>
77
- new UserPool(this, 'UserPool', {
76
+ private createUserPool = () => {
77
+ const userPool = new UserPool(this, 'UserPool', {
78
78
  deletionProtection: true,
79
79
  passwordPolicy: {
80
80
  minLength: 8,
@@ -106,6 +106,16 @@ export class UserIdentity extends Construct {
106
106
  phone: true,
107
107
  },
108
108
  });
109
+ // Retain the SMS role alongside the pool so the pool can still be updated and deleted manually
110
+ const poolCfn = userPool.node.defaultChild as CfnResource;
111
+ const smsRoleCfn = userPool.node
112
+ .findChild('smsRole')
113
+ .node.defaultChild as CfnResource;
114
+ smsRoleCfn.cfnOptions.deletionPolicy = poolCfn.cfnOptions.deletionPolicy;
115
+ smsRoleCfn.cfnOptions.updateReplacePolicy =
116
+ poolCfn.cfnOptions.updateReplacePolicy;
117
+ return userPool;
118
+ };
109
119
 
110
120
  private createUserPoolDomain = (userPool: UserPool) =>
111
121
  new CfnUserPoolDomain(this, 'UserPoolDomain', {
@@ -8,10 +8,10 @@
8
8
  export declare const TS_VERSIONS: {
9
9
  readonly '@a2a-js/sdk': "0.3.13";
10
10
  readonly '@aws/aws-distro-opentelemetry-node-autoinstrumentation': "0.10.0";
11
- readonly '@aws-sdk/client-dynamodb': "3.1037.0";
12
- readonly '@aws-sdk/client-bedrock-runtime': "3.1037.0";
13
- readonly '@aws-sdk/client-sts': "3.1037.0";
14
- readonly '@aws-sdk/credential-providers': "3.1037.0";
11
+ readonly '@aws-sdk/client-dynamodb': "3.1039.0";
12
+ readonly '@aws-sdk/client-bedrock-runtime': "3.1039.0";
13
+ readonly '@aws-sdk/client-sts': "3.1039.0";
14
+ readonly '@aws-sdk/credential-providers': "3.1039.0";
15
15
  readonly '@aws-smithy/server-apigateway': "1.0.0-alpha.10";
16
16
  readonly '@aws-smithy/server-node': "1.0.0-alpha.10";
17
17
  readonly '@aws-lambda-powertools/logger': "2.33.0";
@@ -19,33 +19,34 @@ export declare const TS_VERSIONS: {
19
19
  readonly '@aws-lambda-powertools/parameters': "2.33.0";
20
20
  readonly '@aws-lambda-powertools/tracer': "2.33.0";
21
21
  readonly '@aws-lambda-powertools/parser': "2.33.0";
22
- readonly '@aws-sdk/client-appconfigdata': "3.1037.0";
22
+ readonly '@aws-sdk/client-appconfigdata': "3.1039.0";
23
23
  readonly '@middy/core': "7.3.3";
24
24
  readonly '@nxlv/python': "22.1.3";
25
25
  readonly '@nx-extend/terraform': "10.2.1";
26
- readonly '@nx/devkit': "22.7.0";
27
- readonly '@nx/react': "22.7.0";
28
- readonly 'create-nx-workspace': "22.7.0";
26
+ readonly '@nx/devkit': "22.7.1";
27
+ readonly '@nx/react': "22.7.1";
28
+ readonly 'create-nx-workspace': "22.7.1";
29
29
  readonly '@modelcontextprotocol/sdk': "1.29.0";
30
30
  readonly '@modelcontextprotocol/inspector': "0.19.0";
31
- readonly '@ag-ui/client': "0.0.52";
32
- readonly '@copilotkit/react-core': "1.56.3";
31
+ readonly '@ag-ui/client': "0.0.53";
32
+ readonly 'agent-chat-cli': "0.2.0";
33
+ readonly '@copilotkit/react-core': "1.56.5";
33
34
  readonly rxjs: "7.8.2";
34
- readonly '@strands-agents/sdk': "1.0.0-rc.5";
35
- readonly '@tanstack/react-router': "1.168.24";
36
- readonly '@tanstack/router-plugin': "1.167.27";
37
- readonly '@tanstack/router-generator': "1.166.35";
35
+ readonly '@strands-agents/sdk': "1.0.0";
36
+ readonly '@tanstack/react-router': "1.168.26";
37
+ readonly '@tanstack/router-plugin': "1.167.29";
38
+ readonly '@tanstack/router-generator': "1.166.37";
38
39
  readonly '@tanstack/virtual-file-routes': "1.161.7";
39
40
  readonly '@tanstack/router-utils': "1.161.7";
40
- readonly '@cloudscape-design/board-components': "3.0.174";
41
- readonly '@cloudscape-design/chat-components': "1.0.120";
42
- readonly '@cloudscape-design/components': "3.0.1284";
43
- readonly '@cloudscape-design/global-styles': "1.0.57";
44
- readonly '@tanstack/react-query': "5.100.5";
45
- readonly '@tanstack/react-query-devtools': "5.100.5";
46
- readonly '@trpc/tanstack-react-query': "11.16.0";
47
- readonly '@trpc/client': "11.16.0";
48
- readonly '@trpc/server': "11.16.0";
41
+ readonly '@cloudscape-design/board-components': "3.0.175";
42
+ readonly '@cloudscape-design/chat-components': "1.0.123";
43
+ readonly '@cloudscape-design/components': "3.0.1287";
44
+ readonly '@cloudscape-design/global-styles': "1.0.58";
45
+ readonly '@tanstack/react-query': "5.100.6";
46
+ readonly '@tanstack/react-query-devtools': "5.100.6";
47
+ readonly '@trpc/tanstack-react-query': "11.17.0";
48
+ readonly '@trpc/client': "11.17.0";
49
+ readonly '@trpc/server': "11.17.0";
49
50
  readonly '@types/node': "25.6.0";
50
51
  readonly '@types/aws-lambda': "8.10.161";
51
52
  readonly '@types/cors': "2.8.19";
@@ -57,9 +58,9 @@ export declare const TS_VERSIONS: {
57
58
  readonly '@vitest/ui': "4.1.5";
58
59
  readonly '@astrojs/react': "5.0.4";
59
60
  readonly '@astrojs/starlight': "0.38.4";
60
- readonly astro: "6.1.9";
61
+ readonly astro: "6.1.10";
61
62
  readonly aws4fetch: "1.0.20";
62
- readonly 'aws-cdk': "2.1119.0";
63
+ readonly 'aws-cdk': "2.1120.0";
63
64
  readonly 'aws-cdk-lib': "2.251.0";
64
65
  readonly '@aws-cdk/aws-bedrock-agentcore-alpha': "2.251.0-alpha.0";
65
66
  readonly 'aws-xray-sdk-core': "3.12.0";
@@ -73,15 +74,15 @@ export declare const TS_VERSIONS: {
73
74
  readonly esbuild: "0.28.0";
74
75
  readonly 'event-source-polyfill': "1.0.31";
75
76
  readonly '@types/event-source-polyfill': "1.0.5";
76
- readonly '@typescript-eslint/eslint-plugin': "8.59.0";
77
- readonly '@typescript-eslint/parser': "8.59.0";
77
+ readonly '@typescript-eslint/eslint-plugin': "8.59.1";
78
+ readonly '@typescript-eslint/parser': "8.59.1";
78
79
  readonly 'eslint-plugin-prettier': "5.5.5";
79
80
  readonly express: "5.2.1";
80
81
  readonly 'fast-glob': "3.3.3";
81
82
  readonly 'fs-extra': "11.3.4";
82
83
  readonly '@types/fs-extra': "11.0.4";
83
84
  readonly 'jsonc-eslint-parser': "3.1.0";
84
- readonly 'typescript-eslint': "8.59.0";
85
+ readonly 'typescript-eslint': "8.59.1";
85
86
  readonly 'make-dir-cli': "4.0.0";
86
87
  readonly ncp: "2.0.0";
87
88
  readonly 'npm-check-updates': "19.6.6";
@@ -98,15 +99,15 @@ export declare const TS_VERSIONS: {
98
99
  readonly tailwindcss: "4.2.2";
99
100
  readonly '@tailwindcss/vite': "4.2.2";
100
101
  readonly tsx: "4.21.0";
101
- readonly 'lucide-react': "1.11.0";
102
+ readonly 'lucide-react': "1.14.0";
102
103
  readonly 'radix-ui': "1.4.3";
103
- readonly shadcn: "4.5.0";
104
+ readonly shadcn: "4.6.0";
104
105
  readonly 'tw-animate-css': "1.4.0";
105
106
  readonly 'tailwind-merge': "3.5.0";
106
107
  readonly vite: "8.0.8";
107
108
  readonly typescript: "6.0.3";
108
109
  readonly vitest: "4.1.5";
109
- readonly zod: "4.3.6";
110
+ readonly zod: "4.4.1";
110
111
  readonly ws: "8.20.0";
111
112
  };
112
113
  export type ITsDepVersion = keyof typeof TS_VERSIONS;
@@ -114,7 +115,7 @@ export type ITsDepVersion = keyof typeof TS_VERSIONS;
114
115
  * Add versions to the given dependencies
115
116
  */
116
117
  export declare const withVersions: (deps: ITsDepVersion[]) => {
117
- [k: string]: "22.7.0" | "3.8.3" | "1.29.0" | "22.1.3" | "3.3.3" | "4.5.0" | "6.0.3" | "4.1.5" | "4.3.6" | "0.3.13" | "0.10.0" | "3.1037.0" | "1.0.0-alpha.10" | "2.33.0" | "7.3.3" | "10.2.1" | "0.19.0" | "0.0.52" | "1.56.3" | "7.8.2" | "1.0.0-rc.5" | "1.168.24" | "1.167.27" | "1.166.35" | "1.161.7" | "3.0.174" | "1.0.120" | "3.0.1284" | "1.0.57" | "5.100.5" | "11.16.0" | "25.6.0" | "8.10.161" | "2.8.19" | "8.18.1" | "5.0.6" | "4.6.1" | "4.14.1" | "5.0.4" | "0.38.4" | "6.1.9" | "1.0.20" | "2.1119.0" | "2.251.0" | "2.251.0-alpha.0" | "3.12.0" | "10.6.0" | "2.8.6" | "5.6.2" | "0.7.1" | "2.1.1" | "14.0.3" | "3.7.5" | "0.28.0" | "1.0.31" | "1.0.5" | "8.59.0" | "5.5.5" | "5.2.1" | "11.3.4" | "11.0.4" | "3.1.0" | "4.0.0" | "2.0.0" | "19.6.6" | "3.5.0" | "3.3.1" | "19.2.5" | "6.1.3" | "1.0.0-rc.15" | "3.36.0" | "0.5.21" | "0.26.1" | "4.2.2" | "4.21.0" | "1.11.0" | "1.4.3" | "1.4.0" | "8.0.8" | "8.20.0";
118
+ [k: string]: "22.7.1" | "3.8.3" | "1.29.0" | "22.1.3" | "3.3.3" | "6.0.3" | "4.1.5" | "4.4.1" | "0.3.13" | "0.10.0" | "3.1039.0" | "1.0.0-alpha.10" | "2.33.0" | "7.3.3" | "10.2.1" | "0.19.0" | "0.0.53" | "0.2.0" | "1.56.5" | "7.8.2" | "1.0.0" | "1.168.26" | "1.167.29" | "1.166.37" | "1.161.7" | "3.0.175" | "1.0.123" | "3.0.1287" | "1.0.58" | "5.100.6" | "11.17.0" | "25.6.0" | "8.10.161" | "2.8.19" | "8.18.1" | "5.0.6" | "4.6.1" | "4.14.1" | "5.0.4" | "0.38.4" | "6.1.10" | "1.0.20" | "2.1120.0" | "2.251.0" | "2.251.0-alpha.0" | "3.12.0" | "10.6.0" | "2.8.6" | "5.6.2" | "0.7.1" | "2.1.1" | "14.0.3" | "3.7.5" | "0.28.0" | "1.0.31" | "1.0.5" | "8.59.1" | "5.5.5" | "5.2.1" | "11.3.4" | "11.0.4" | "3.1.0" | "4.0.0" | "2.0.0" | "19.6.6" | "3.5.0" | "3.3.1" | "19.2.5" | "6.1.3" | "1.0.0-rc.15" | "3.36.0" | "0.5.21" | "0.26.1" | "4.2.2" | "4.21.0" | "1.14.0" | "1.4.3" | "4.6.0" | "1.4.0" | "8.0.8" | "8.20.0";
118
119
  };
119
120
  /**
120
121
  * Versions for Python dependencies added by generators
@@ -126,17 +127,17 @@ export declare const PY_VERSIONS: {
126
127
  readonly 'aws-lambda-powertools[tracer]': "==3.28.0";
127
128
  readonly 'aws-lambda-powertools[parser]': "==3.28.0";
128
129
  readonly 'aws-opentelemetry-distro': "==0.17.0";
129
- readonly 'bedrock-agentcore': "==1.6.4";
130
- readonly boto3: "==1.42.97";
131
- readonly checkov: "==3.2.525";
130
+ readonly 'bedrock-agentcore': "==1.8.0";
131
+ readonly boto3: "==1.43.1";
132
+ readonly checkov: "==3.2.526";
132
133
  readonly fastapi: "==0.136.1";
133
134
  readonly 'fastapi[standard]': "==0.136.1";
134
135
  readonly httpx: "==0.28.1";
135
136
  readonly mcp: "==1.27.0";
136
137
  readonly 'pip-check-updates': "==0.28.0";
137
- readonly 'strands-agents': "==1.37.0";
138
- readonly 'strands-agents[a2a]': "==1.37.0";
139
- readonly 'strands-agents-tools': "==0.5.1";
138
+ readonly 'strands-agents': "==1.38.0";
139
+ readonly 'strands-agents[a2a]': "==1.38.0";
140
+ readonly 'strands-agents-tools': "==0.5.2";
140
141
  readonly uvicorn: "==0.46.0";
141
142
  };
142
143
  export type IPyDepVersion = keyof typeof PY_VERSIONS;