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

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 (87) hide show
  1. package/migrations.json +11 -1
  2. package/package.json +1 -1
  3. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +1 -1
  4. package/src/agentcore-harness/generator.d.ts +1 -1
  5. package/src/infra/app/generator.d.ts +1 -1
  6. package/src/init/generator.d.ts +1 -1
  7. package/src/license/dependency-check/evaluator.js +55 -10
  8. package/src/license/dependency-check/evaluator.js.map +1 -1
  9. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
  10. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
  11. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js +329 -0
  12. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
  13. package/src/migrations/latest/py-agent-session-management-support/metadata.json +3 -0
  14. package/src/migrations/latest/py-agent-session-management-support/migration.d.ts +2 -0
  15. package/src/migrations/latest/py-agent-session-management-support/migration.js +308 -0
  16. package/src/migrations/latest/py-agent-session-management-support/migration.js.map +1 -0
  17. package/src/preset/generator.d.ts +1 -1
  18. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +615 -6
  19. package/src/py/agent/__snapshots__/generator.core.spec.ts.snap +186 -0
  20. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +47 -3
  21. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +668 -3
  22. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +55 -14
  23. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +1 -3
  24. package/src/py/agent/files/langchain/common/__init__.py.template +0 -0
  25. package/src/py/agent/files/langchain/common/agent.py.template +3 -3
  26. package/src/py/agent/files/langchain/common/session.py.template +61 -0
  27. package/src/py/agent/files/strands/ag-ui/main.py.template +5 -1
  28. package/src/py/agent/files/strands/common/agent.py.template +9 -2
  29. package/src/py/agent/files/strands/common/session.py.template +36 -0
  30. package/src/py/agent/generator.d.ts +11 -1
  31. package/src/py/agent/generator.js +78 -28
  32. package/src/py/agent/generator.js.map +1 -1
  33. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +2 -0
  34. package/src/py/agent/react-connection/generator.d.ts +1 -1
  35. package/src/py/agent/schema.d.js.map +1 -1
  36. package/src/py/agent/schema.d.ts +1 -1
  37. package/src/py/agent/schema.json +3 -3
  38. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  39. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
  40. package/src/py/fast-api/react/generator.d.ts +1 -1
  41. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  42. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
  43. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +1 -1
  44. package/src/smithy/project/generator.d.ts +1 -1
  45. package/src/smithy/react-connection/generator.d.ts +1 -1
  46. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +7 -7
  47. package/src/terraform/project/generator.d.ts +1 -1
  48. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
  49. package/src/trpc/react/generator.d.ts +1 -1
  50. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +28 -7
  51. package/src/ts/agent/a2a-connection/generator.d.ts +1 -1
  52. package/src/ts/agent/gateway-connection/generator.d.ts +1 -1
  53. package/src/ts/agent/mcp-connection/generator.d.ts +1 -1
  54. package/src/ts/agent/react-connection/generator.d.ts +1 -1
  55. package/src/ts/astro-docs/generator.d.ts +1 -1
  56. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
  57. package/src/ts/dcr-proxy/generator.d.ts +1 -1
  58. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  59. package/src/ts/dynamodb/generator.d.ts +1 -1
  60. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  61. package/src/ts/lambda-function/generator.d.ts +1 -1
  62. package/src/ts/lib/generator.d.ts +1 -1
  63. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
  64. package/src/ts/nx-generator/generator.d.ts +1 -1
  65. package/src/ts/nx-migration/generator.d.ts +1 -1
  66. package/src/ts/nx-plugin/generator.d.ts +1 -1
  67. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +4 -4
  68. package/src/ts/rdb/generator.d.ts +1 -1
  69. package/src/ts/react-website/agui/generator.d.ts +1 -1
  70. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +2 -2
  71. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +1 -1
  72. package/src/utils/agent-connection/agent-connection.d.ts +10 -0
  73. package/src/utils/agent-connection/agent-connection.js +15 -0
  74. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  75. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +5 -3
  76. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +26 -20
  77. package/src/utils/agent-connection/files/py-core-langchain/s3/s3_checkpoint_saver_langchain.py.template +360 -0
  78. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +2 -4
  79. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +55 -10
  80. package/src/utils/agent-connection/files/py-core-strands/base/tool_errors_strands.py.template +24 -0
  81. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +1 -1
  82. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  83. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +113 -13
  84. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +76 -7
  85. package/src/utils/versions.d.ts +5 -2
  86. package/src/utils/versions.js +4 -1
  87. package/src/utils/versions.js.map +1 -1
@@ -1,7 +1,8 @@
1
- import { Fn, Lazy, Names<%_ if (session === 's3') { _%>, RemovalPolicy<%_ } _%>, Stack } from 'aws-cdk-lib';
1
+ <%_ const hasSessionBucket = session === 's3' || session === 'dynamodb-s3'; _%>
2
+ import { Fn, Lazy, Names<%_ if (hasSessionBucket) { _%>, RemovalPolicy<%_ } _%>, Stack } from 'aws-cdk-lib';
2
3
  import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
3
4
  import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
4
- <%_ if (session === 's3') { _%>
5
+ <%_ if (hasSessionBucket) { _%>
5
6
  import { BlockPublicAccess, Bucket, BucketEncryption } from 'aws-cdk-lib/aws-s3';
6
7
  import { Key } from 'aws-cdk-lib/aws-kms';
7
8
  import {
@@ -12,6 +13,14 @@ import {
12
13
  RetentionDays,
13
14
  } from 'aws-cdk-lib/aws-logs';
14
15
  <%_ } _%>
16
+ <%_ if (session === 'dynamodb-s3') { _%>
17
+ import {
18
+ AttributeType,
19
+ BillingMode,
20
+ Table,
21
+ TableEncryption,
22
+ } from 'aws-cdk-lib/aws-dynamodb';
23
+ <%_ } _%>
15
24
  import { Construct } from 'constructs';
16
25
  import * as path from 'path';
17
26
  import * as url from 'url';
@@ -24,11 +33,11 @@ import {
24
33
  RuntimeAuthorizerConfiguration,
25
34
  <%_ } _%>
26
35
  } from 'aws-cdk-lib/aws-bedrockagentcore';
27
- import { <%_ if (serverProtocol !== 'mcp') { _%>PolicyStatement, <%_ } _%><%_ if (session === 's3') { _%>Effect, ServicePrincipal, <%_ } _%>IGrantable, IPrincipal<%_ if (auth === 'iam') { _%>, Grant<%_ } _%> } from 'aws-cdk-lib/aws-iam';
36
+ import { <%_ if (serverProtocol !== 'mcp') { _%>PolicyStatement, <%_ } _%><%_ if (hasSessionBucket) { _%>Effect, ServicePrincipal, <%_ } _%>IGrantable, IPrincipal<%_ if (auth === 'iam') { _%>, Grant<%_ } _%> } from 'aws-cdk-lib/aws-iam';
28
37
  <%_ if (auth === 'cognito') { _%>
29
38
  import { IUserPool, IUserPoolClient } from 'aws-cdk-lib/aws-cognito';
30
39
  <%_ } _%>
31
- <%_ if (session === 's3') { _%>
40
+ <%_ if (hasSessionBucket) { _%>
32
41
  import { suppressRules } from '../../../core/checkov<% if (esm) { %>.js<% } %>';
33
42
  <%_ } _%>
34
43
  import { RuntimeConfig } from '../../../core/runtime-config<% if (esm) { %>.js<% } %>';
@@ -41,7 +50,34 @@ export type <%- nameClassName %>Props = Omit<
41
50
  | 'protocolConfiguration'
42
51
  | 'agentRuntimeArtifact'
43
52
  | 'authorizerConfiguration'
44
- >;
53
+ ><%_ if (hasSessionBucket) { _%> & {
54
+ <%_ if (hasSessionBucket) { _%>
55
+ /**
56
+ * Removal policy for the session bucket holding the agent's conversation
57
+ * history. Defaults to retaining it so a stack `destroy` doesn't silently
58
+ * delete session data — set to `RemovalPolicy.DESTROY` for sandbox/CI teardown.
59
+ *
60
+ * @default RemovalPolicy.RETAIN
61
+ */
62
+ readonly sessionBucketRemovalPolicy?: RemovalPolicy;
63
+ <%_ } _%>
64
+ <%_ if (session === 'dynamodb-s3') { _%>
65
+ /**
66
+ * Whether to enable deletion protection on the session checkpoint table.
67
+ * Set to `false` to allow a stack `destroy` to remove it (e.g. for
68
+ * sandbox/CI teardown).
69
+ *
70
+ * @default true
71
+ */
72
+ readonly sessionTableDeletionProtection?: boolean;
73
+ /**
74
+ * Removal policy for the session checkpoint table.
75
+ *
76
+ * @default RemovalPolicy.RETAIN
77
+ */
78
+ readonly sessionTableRemovalPolicy?: RemovalPolicy;
79
+ <%_ } _%>
80
+ }<%_ } _%>;
45
81
  <%_ } else if (auth === 'cognito') { _%>
46
82
  export type <%- nameClassName %>Props = Omit<
47
83
  RuntimeProps,
@@ -57,6 +93,32 @@ export type <%- nameClassName %>Props = Omit<
57
93
  userPool: IUserPool;
58
94
  userPoolClient: IUserPoolClient;
59
95
  };
96
+ <%_ if (hasSessionBucket) { _%>
97
+ /**
98
+ * Removal policy for the session bucket holding the agent's conversation
99
+ * history. Defaults to retaining it so a stack `destroy` doesn't silently
100
+ * delete session data — set to `RemovalPolicy.DESTROY` for sandbox/CI teardown.
101
+ *
102
+ * @default RemovalPolicy.RETAIN
103
+ */
104
+ readonly sessionBucketRemovalPolicy?: RemovalPolicy;
105
+ <%_ } _%>
106
+ <%_ if (session === 'dynamodb-s3') { _%>
107
+ /**
108
+ * Whether to enable deletion protection on the session checkpoint table.
109
+ * Set to `false` to allow a stack `destroy` to remove it (e.g. for
110
+ * sandbox/CI teardown).
111
+ *
112
+ * @default true
113
+ */
114
+ readonly sessionTableDeletionProtection?: boolean;
115
+ /**
116
+ * Removal policy for the session checkpoint table.
117
+ *
118
+ * @default RemovalPolicy.RETAIN
119
+ */
120
+ readonly sessionTableRemovalPolicy?: RemovalPolicy;
121
+ <%_ } _%>
60
122
  };
61
123
  <%_ } _%>
62
124
 
@@ -88,11 +150,23 @@ export class <%- nameClassName %> extends Construct implements IGrantable, IConn
88
150
  platform: Platform.LINUX_ARM64,
89
151
  });
90
152
 
153
+ <%_ if (auth === 'cognito' || hasSessionBucket) { _%>
154
+ const {
91
155
  <%_ if (auth === 'cognito') { _%>
92
- const { identity, ...restProps } = props;
156
+ identity,
157
+ <%_ } _%>
158
+ <%_ if (hasSessionBucket) { _%>
159
+ sessionBucketRemovalPolicy = RemovalPolicy.RETAIN,
160
+ <%_ } _%>
161
+ <%_ if (session === 'dynamodb-s3') { _%>
162
+ sessionTableDeletionProtection = true,
163
+ sessionTableRemovalPolicy = RemovalPolicy.RETAIN,
164
+ <%_ } _%>
165
+ ...restProps
166
+ } = props ?? {};
93
167
 
94
168
  <%_ } _%>
95
- <%_ if (session === 's3') { _%>
169
+ <%_ if (hasSessionBucket) { _%>
96
170
  const sessionKey = new Key(this, 'SessionKey', {
97
171
  enableKeyRotation: true,
98
172
  });
@@ -127,7 +201,7 @@ export class <%- nameClassName %> extends Construct implements IGrantable, IConn
127
201
 
128
202
  const sessionBucket = new Bucket(this, 'SessionBucket', {
129
203
  enforceSSL: true,
130
- removalPolicy: RemovalPolicy.RETAIN,
204
+ removalPolicy: sessionBucketRemovalPolicy,
131
205
  encryption: BucketEncryption.KMS,
132
206
  encryptionKey: sessionKey,
133
207
  blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
@@ -196,6 +270,22 @@ export class <%- nameClassName %> extends Construct implements IGrantable, IConn
196
270
  );
197
271
  sessionAccessLogsDelivery.addDependency(sessionAccessLogsSource);
198
272
 
273
+ <%_ } _%>
274
+ <%_ if (session === 'dynamodb-s3') { _%>
275
+ // Unified checkpoints/writes table, matching the schema
276
+ // langgraph_checkpoint_aws.DynamoDBSaver expects (PK/SK, TTL on `ttl`).
277
+ const sessionTable = new Table(this, 'SessionTable', {
278
+ partitionKey: { name: 'PK', type: AttributeType.STRING },
279
+ sortKey: { name: 'SK', type: AttributeType.STRING },
280
+ billingMode: BillingMode.PAY_PER_REQUEST,
281
+ pointInTimeRecoverySpecification: { pointInTimeRecoveryEnabled: true },
282
+ timeToLiveAttribute: 'ttl',
283
+ encryption: TableEncryption.CUSTOMER_MANAGED,
284
+ encryptionKey: sessionKey,
285
+ deletionProtection: sessionTableDeletionProtection,
286
+ removalPolicy: sessionTableRemovalPolicy,
287
+ });
288
+
199
289
  <%_ } _%>
200
290
  this.agentCoreRuntime = new Runtime(this, '<%- nameClassName %>', {
201
291
  runtimeName: Lazy.string({
@@ -213,13 +303,15 @@ export class <%- nameClassName %> extends Construct implements IGrantable, IConn
213
303
  requestHeaderConfiguration: {
214
304
  allowlistedHeaders: ['Authorization'],
215
305
  },
306
+ <%_ } _%>
307
+ <%_ if (auth === 'cognito' || hasSessionBucket) { _%>
216
308
  ...restProps,
217
309
  <%_ } else { _%>
218
310
  ...props,
219
311
  <%_ } _%>
220
312
  environmentVariables: {
221
313
  RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
222
- <%_ if (auth === 'cognito') { _%>
314
+ <%_ if (auth === 'cognito' || hasSessionBucket) { _%>
223
315
  ...restProps?.environmentVariables,
224
316
  <%_ } else { _%>
225
317
  ...props?.environmentVariables,
@@ -243,18 +335,26 @@ export class <%- nameClassName %> extends Construct implements IGrantable, IConn
243
335
  );
244
336
 
245
337
  <%_ } _%>
246
- <%_ if (session === 's3') { _%>
338
+ <%_ if (session === 'dynamodb-s3') { _%>
339
+ sessionTable.grantReadWriteData(this.agentCoreRuntime);
340
+ <%_ } _%>
341
+ <%_ if (hasSessionBucket) { _%>
247
342
  sessionBucket.grantReadWrite(this.agentCoreRuntime);
248
-
249
343
  <%_ } _%>
344
+
250
345
  rc.grantReadAppConfig(this.agentCoreRuntime);
251
346
 
252
347
  rc.set('agentcore', 'agentRuntimes', {
253
348
  ...rc.get('agentcore').agentRuntimes,
254
349
  <%- nameClassName %>: {
255
350
  arn: this.agentCoreRuntime.agentRuntimeArn,
256
- <%_ if (session === 's3') { _%>
257
- session: { bucketName: sessionBucket.bucketName },
351
+ <%_ if (hasSessionBucket) { _%>
352
+ session: {
353
+ <%_ if (session === 'dynamodb-s3') { _%>
354
+ tableName: sessionTable.tableName,
355
+ <%_ } _%>
356
+ bucketName: sessionBucket.bucketName,
357
+ },
258
358
  <%_ } _%>
259
359
  },
260
360
  });
@@ -1,4 +1,5 @@
1
- <%_ if (session === 's3') { _%>
1
+ <%_ const hasSessionBucket = session === 's3' || session === 'dynamodb-s3'; _%>
2
+ <%_ if (hasSessionBucket) { _%>
2
3
  terraform {
3
4
  required_providers {
4
5
  random = {
@@ -55,6 +56,22 @@ variable "appconfig_application_id" {
55
56
  type = string
56
57
  }
57
58
 
59
+ <%_ if (hasSessionBucket) { _%>
60
+ variable "session_force_destroy" {
61
+ description = "Whether to allow the session bucket to be destroyed even if it still contains objects."
62
+ type = bool
63
+ default = false
64
+ }
65
+
66
+ <%_ } _%>
67
+ <%_ if (session === 'dynamodb-s3') { _%>
68
+ variable "session_deletion_protection_enabled" {
69
+ description = "Whether to enable deletion protection on the session checkpoint table."
70
+ type = bool
71
+ default = true
72
+ }
73
+
74
+ <%_ } _%>
58
75
  variable "appconfig_application_arn" {
59
76
  description = "ARN of the shared runtime-config AppConfig application (from `core/runtime-config/appconfig.application_arn`). Used to scope the IAM read permission granted to the agent runtime."
60
77
  type = string
@@ -72,10 +89,10 @@ variable "user_pool_client_ids" {
72
89
  }
73
90
 
74
91
  <%_ } _%>
75
- <%_ if (auth === 'cognito' || session === 's3') { _%>
92
+ <%_ if (auth === 'cognito' || hasSessionBucket) { _%>
76
93
  data "aws_region" "current" {}
77
94
  <%_ } _%>
78
- <%_ if (session === 's3') { _%>
95
+ <%_ if (hasSessionBucket) { _%>
79
96
  data "aws_caller_identity" "current" {}
80
97
  <%_ } _%>
81
98
  <%_ if (auth === 'cognito') { _%>
@@ -84,7 +101,7 @@ locals {
84
101
  aws_region = data.aws_region.current.id
85
102
  }
86
103
  <%_ } _%>
87
- <%_ if (session === 's3') { _%>
104
+ <%_ if (hasSessionBucket) { _%>
88
105
 
89
106
  locals {
90
107
  # Delivery source/destination names have a 60 character maximum. Truncate
@@ -149,12 +166,13 @@ resource "aws_cloudwatch_log_group" "session_access_logs" {
149
166
 
150
167
  # Bucket storing the agent's session data
151
168
  resource "aws_s3_bucket" "session" {
169
+ bucket = "<%= nameKebabCase %>-sessions-${random_id.session_unique_suffix.hex}"
152
170
  #checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for session data
153
171
  #checkov:skip=CKV_AWS_144:Cross-region replication not required for session data
154
172
  #checkov:skip=CKV2_AWS_62:Event notifications not required for session data
155
173
  #checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.session)
156
174
  #checkov:skip=CKV_AWS_21:Session data does not need versioning enabled
157
- force_destroy = false
175
+ force_destroy = var.session_force_destroy
158
176
  }
159
177
 
160
178
  resource "aws_s3_bucket_server_side_encryption_configuration" "session" {
@@ -222,6 +240,45 @@ resource "aws_cloudwatch_log_delivery" "session" {
222
240
  delivery_destination_arn = aws_cloudwatch_log_delivery_destination.session.arn
223
241
  }
224
242
 
243
+ <%_ } _%>
244
+ <%_ if (session === 'dynamodb-s3') { _%>
245
+ # Unified checkpoints/writes table, matching the schema
246
+ # langgraph_checkpoint_aws.DynamoDBSaver expects (PK/SK, TTL on `ttl`).
247
+ resource "aws_dynamodb_table" "session" {
248
+ name = "<%= nameKebabCase %>-checkpoints-${random_id.session_unique_suffix.hex}"
249
+ billing_mode = "PAY_PER_REQUEST"
250
+ hash_key = "PK"
251
+ range_key = "SK"
252
+
253
+ attribute {
254
+ name = "PK"
255
+ type = "S"
256
+ }
257
+
258
+ attribute {
259
+ name = "SK"
260
+ type = "S"
261
+ }
262
+
263
+ ttl {
264
+ attribute_name = "ttl"
265
+ enabled = true
266
+ }
267
+
268
+ point_in_time_recovery {
269
+ enabled = true
270
+ }
271
+
272
+ server_side_encryption {
273
+ enabled = true
274
+ kms_key_arn = aws_kms_key.session.arn
275
+ }
276
+
277
+ deletion_protection_enabled = var.session_deletion_protection_enabled
278
+
279
+ tags = var.tags
280
+ }
281
+
225
282
  <%_ } _%>
226
283
  module "agent_core_runtime" {
227
284
  source = "../../../core/agent-core"
@@ -263,7 +320,7 @@ module "agent_core_runtime" {
263
320
  "arn:aws:bedrock:*:*:foundation-model/*",
264
321
  "arn:aws:bedrock:*:*:inference-profile/*"
265
322
  ]
266
- }<% } %><% if (session === 's3') { %>,
323
+ }<% } %><% if (hasSessionBucket) { %>,
267
324
  # Grant access for the agent to read/write its session data
268
325
  {
269
326
  Effect = "Allow"
@@ -286,6 +343,18 @@ module "agent_core_runtime" {
286
343
  "kms:GenerateDataKey*"
287
344
  ]
288
345
  Resource = [aws_kms_key.session.arn]
346
+ }<% } %><% if (session === 'dynamodb-s3') { %>,
347
+ # Grant access for the agent to read/write its checkpoint table
348
+ {
349
+ Effect = "Allow"
350
+ Action = [
351
+ "dynamodb:GetItem",
352
+ "dynamodb:PutItem",
353
+ "dynamodb:Query",
354
+ "dynamodb:BatchGetItem",
355
+ "dynamodb:BatchWriteItem"
356
+ ]
357
+ Resource = [aws_dynamodb_table.session.arn]
289
358
  }<% } %>
290
359
  ], var.additional_iam_policy_statements)
291
360
  tags = var.tags
@@ -297,7 +366,7 @@ module "add_agent_runtime_to_runtime_config" {
297
366
 
298
367
  namespace = "agentcore"
299
368
  key = "agentRuntimes"
300
- value = { "<%= nameClassName %>" = { arn = module.agent_core_runtime.agent_core_runtime_arn<% if (session === 's3') { %>, session = { bucketName = aws_s3_bucket.session.bucket }<% } %> } }
369
+ value = { "<%= nameClassName %>" = { arn = module.agent_core_runtime.agent_core_runtime_arn<% if (hasSessionBucket) { %>, session = { <% if (session === 'dynamodb-s3') { %>tableName = aws_dynamodb_table.session.name, <% } %>bucketName = aws_s3_bucket.session.bucket }<% } %> } }
301
370
 
302
371
  depends_on = [module.agent_core_runtime]
303
372
  }
@@ -170,6 +170,7 @@ export declare const PY_VERSIONS: {
170
170
  readonly 'ag-ui-langgraph': "==0.0.42";
171
171
  readonly 'ag-ui-protocol': "==0.1.19";
172
172
  readonly 'ag-ui-strands': "==0.2.4";
173
+ readonly aiosqlite: "==0.22.1";
173
174
  readonly 'aws-lambda-powertools': "==3.31.1";
174
175
  readonly 'aws-lambda-powertools[tracer]': "==3.31.1";
175
176
  readonly 'aws-lambda-powertools[parser]': "==3.31.1";
@@ -184,6 +185,8 @@ export declare const PY_VERSIONS: {
184
185
  readonly 'langchain-aws': "==1.7.0";
185
186
  readonly 'langchain-mcp-adapters': "==0.3.2";
186
187
  readonly langgraph: "==1.2.10";
188
+ readonly 'langgraph-checkpoint-aws': "==1.2.0";
189
+ readonly 'langgraph-checkpoint-sqlite': "==3.1.1";
187
190
  readonly mcp: "==1.28.1";
188
191
  readonly 'pip-check-updates': "==0.29.0";
189
192
  readonly 'pip-licenses': "==5.5.5";
@@ -274,7 +277,7 @@ export declare const containerImage: (tool: keyof typeof CONTAINER_VERSIONS) =>
274
277
  * Pinned exactly (no range operator) so generated infrastructure is reproducible.
275
278
  */
276
279
  export declare const TERRAFORM_VERSIONS: {
277
- readonly aws: "6.58.0";
280
+ readonly aws: "6.60.0";
278
281
  readonly random: "3.9.0";
279
282
  readonly null: "3.3.0";
280
283
  readonly archive: "2.8.0";
@@ -288,7 +291,7 @@ export type ITerraformProviderVersion = keyof typeof TERRAFORM_VERSIONS;
288
291
  * generated `.tf` templates (e.g. `version = "<%- awsProviderVersion %>"`)
289
292
  */
290
293
  export declare const terraformProviderVersions: () => {
291
- awsProviderVersion: "6.58.0";
294
+ awsProviderVersion: "6.60.0";
292
295
  randomProviderVersion: "3.9.0";
293
296
  nullProviderVersion: "3.3.0";
294
297
  archiveProviderVersion: "2.8.0";
@@ -185,6 +185,7 @@
185
185
  'ag-ui-langgraph': '==0.0.42',
186
186
  'ag-ui-protocol': '==0.1.19',
187
187
  'ag-ui-strands': '==0.2.4',
188
+ aiosqlite: '==0.22.1',
188
189
  'aws-lambda-powertools': '==3.31.1',
189
190
  'aws-lambda-powertools[tracer]': '==3.31.1',
190
191
  'aws-lambda-powertools[parser]': '==3.31.1',
@@ -199,6 +200,8 @@
199
200
  'langchain-aws': '==1.7.0',
200
201
  'langchain-mcp-adapters': '==0.3.2',
201
202
  langgraph: '==1.2.10',
203
+ 'langgraph-checkpoint-aws': '==1.2.0',
204
+ 'langgraph-checkpoint-sqlite': '==3.1.1',
202
205
  mcp: '==1.28.1',
203
206
  'pip-check-updates': '==0.29.0',
204
207
  'pip-licenses': '==5.5.5',
@@ -288,7 +291,7 @@
288
291
  * Exact versions for Terraform providers used by generated `.tf` modules.
289
292
  * Pinned exactly (no range operator) so generated infrastructure is reproducible.
290
293
  */ export const TERRAFORM_VERSIONS = {
291
- aws: '6.58.0',
294
+ aws: '6.60.0',
292
295
  random: '3.9.0',
293
296
  null: '3.3.0',
294
297
  archive: '2.8.0',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type DeclaredPy,\n type DeclaredTs,\n type DependencyDeclaration,\n declaredNames,\n} from './declared-dependencies';\n\n/**\n * Versons for TypeScript dependencies added by generators\n */\nexport const TS_VERSIONS = {\n '@a2a-js/sdk': '0.3.14',\n '@aws/aws-distro-opentelemetry-node-autoinstrumentation': '0.12.0',\n // Pinned above the version the ADOT autoinstrumentation package resolves\n // transitively (2.8.0) to clear CVE-2026-59892 (HIGH).\n '@opentelemetry/propagator-jaeger': '2.10.0',\n // Overridden in the vended agent/MCP image builds to clear CVE-2026-14257\n // (HIGH) in brace-expansion: minimatch 10 is the lowest major depending on\n // brace-expansion 5.x, the only line Trivy's `< 5.0.8` advisory range treats\n // as fixed. Overriding brace-expansion directly is not viable — 5.x drops the\n // CommonJS default export that minimatch 9 calls.\n minimatch: '10.2.6',\n '@aws-sdk/client-dynamodb': '3.1106.0',\n '@aws-sdk/client-api-gateway': '3.1106.0',\n '@aws-sdk/client-iam': '3.1106.0',\n '@aws-sdk/client-bedrock-agentcore': '3.1106.0',\n '@aws-sdk/client-bedrock-runtime': '3.1106.0',\n '@aws-sdk/client-s3': '3.1106.0',\n '@aws-sdk/client-sts': '3.1106.0',\n '@aws-sdk/credential-providers': '3.1106.0',\n '@aws-sdk/credential-provider-cognito-identity': '3.972.66',\n '@aws-sdk/client-secrets-manager': '3.1106.0',\n '@aws-sdk/rds-signer': '3.1106.0',\n '@smithy/server-apigateway': '0.2.0',\n '@smithy/server-node': '0.2.0',\n '@aws-lambda-powertools/logger': '2.34.0',\n '@aws-lambda-powertools/metrics': '2.34.0',\n '@aws-lambda-powertools/parameters': '2.34.0',\n '@aws-lambda-powertools/tracer': '2.34.0',\n '@aws-lambda-powertools/parser': '2.34.0',\n '@aws-sdk/client-appconfigdata': '3.1106.0',\n '@middy/core': '7.7.2',\n '@nxlv/python': '22.2.2',\n '@nx-extend/terraform': '10.4.1',\n // These must all hold the same version — see NX_PACKAGES.\n nx: '23.1.1',\n '@nx/devkit': '23.1.1',\n '@nx/js': '23.1.1',\n '@nx/react': '23.1.1',\n '@nx/vite': '23.1.1',\n '@nx/vitest': '23.1.1',\n '@nx/workspace': '23.1.1',\n 'create-nx-workspace': '23.1.1',\n '@swc-node/register': '1.12.1',\n '@swc/core': '1.15.47',\n '@modelcontextprotocol/sdk': '1.30.0',\n '@modelcontextprotocol/inspector': '0.22.0',\n '@ag-ui/a2ui-toolkit': '0.0.4',\n '@ag-ui/aws-strands': '0.2.3',\n '@ag-ui/client': '0.0.57',\n '@ag-ui/core': '0.0.57',\n '@ag-ui/encoder': '0.0.57',\n 'agent-chat-cli': '0.3.0',\n '@copilotkit/react-core': '1.66.4',\n rxjs: '7.8.2',\n '@strands-agents/sdk': '1.12.0',\n '@tanstack/react-router': '1.170.23',\n '@tanstack/router-plugin': '1.168.27',\n '@tanstack/router-generator': '1.167.25',\n '@tanstack/virtual-file-routes': '1.162.0',\n '@tanstack/router-utils': '1.162.2',\n '@cloudscape-design/board-components': '3.0.213',\n '@cloudscape-design/chat-components': '1.0.157',\n '@cloudscape-design/components': '3.0.1342',\n '@cloudscape-design/global-styles': '1.0.65',\n '@tanstack/react-query': '5.101.4',\n '@tanstack/react-query-devtools': '5.101.4',\n '@trpc/tanstack-react-query': '11.18.0',\n '@trpc/client': '11.18.0',\n '@trpc/server': '11.18.0',\n '@types/node': '26.2.0',\n '@types/aws-lambda': '8.10.162',\n '@types/cors': '2.8.19',\n '@types/pg': '8.21.0',\n '@types/ws': '8.18.1',\n '@types/express': '5.0.6',\n '@smithy/config-resolver': '4.6.16',\n '@smithy/node-config-provider': '4.5.16',\n '@smithy/node-http-handler': '4.9.13',\n '@smithy/types': '4.16.1',\n '@vitest/coverage-v8': '4.1.10',\n '@vitest/ui': '4.1.10',\n '@astrojs/react': '6.0.2',\n '@astrojs/starlight': '0.41.3',\n astro: '7.1.1',\n aws4fetch: '1.0.20',\n 'aws-cdk': '2.1135.1',\n 'aws-cdk-lib': '2.263.0',\n 'aws-xray-sdk-core': '3.12.0',\n constructs: '10.8.1',\n cors: '2.8.6',\n chalk: '5.6.2',\n 'class-variance-authority': '0.7.1',\n clsx: '2.1.1',\n commander: '15.0.0',\n 'cpy-cli': '7.0.0',\n electrodb: '3.9.2',\n esbuild: '0.28.2',\n 'event-source-polyfill': '1.0.31',\n '@types/event-source-polyfill': '1.0.5',\n '@biomejs/biome': '2.5.7',\n '@prisma/adapter-mariadb': '7.9.1',\n '@prisma/adapter-pg': '7.9.1',\n '@prisma/client': '7.9.1',\n ejs: '6.0.1',\n '@types/ejs': '3.1.5',\n express: '5.2.1',\n 'fast-glob': '3.3.3',\n husky: '9.1.7',\n 'fs-extra': '11.4.0',\n '@types/fs-extra': '11.0.4',\n 'make-dir-cli': '4.0.0',\n mariadb: '3.5.3',\n mise: '2026.8.3',\n ncp: '2.0.0',\n npm: '12.0.2',\n 'npm-check-updates': '22.2.9',\n 'oidc-client-ts': '3.5.0',\n pg: '8.23.0',\n prisma: '7.9.1',\n 'react-oidc-context': '3.3.1',\n react: '19.2.8',\n 'react-dom': '19.2.8',\n rimraf: '6.1.3',\n rolldown: '1.2.3',\n 'rolldown-plugin-dts': '0.28.0',\n 'simple-git': '3.36.0',\n 'source-map-support': '0.5.21',\n 'starlight-blog': '0.28.0',\n tailwindcss: '4.3.3',\n '@tailwindcss/vite': '4.3.3',\n tsx: '4.23.11',\n 'lucide-react': '1.30.0',\n 'radix-ui': '1.6.7',\n shadcn: '4.16.2',\n 'tw-animate-css': '1.4.0',\n 'tailwind-merge': '3.6.0',\n vite: '8.2.1',\n typescript: '6.0.3',\n vitest: '4.1.10',\n zod: '4.4.3',\n ws: '8.21.3',\n} as const;\nexport type ITsDepVersion = keyof typeof TS_VERSIONS;\n\n/**\n * Add versions to the given dependencies, which the declaration must own.\n *\n * @param declaration the calling generator's `DEPENDENCIES`\n */\nexport const withVersions = <D extends DependencyDeclaration>(\n declaration: D,\n deps: readonly DeclaredTs<D>[],\n): Record<string, string> => {\n assertDeclared(declaration.ts, deps, 'ts');\n return Object.fromEntries(\n deps.map((dep) => [dep, TS_VERSIONS[dep as ITsDepVersion]]),\n );\n};\n\n/**\n * The `nx` and `@nx/*` packages a generated workspace pins, all of which must\n * hold the same version: a workspace nx even a patch apart hoists a second\n * nested nx, and the two deadlock `nx sync`.\n *\n * Bumping them in a user's workspace requires `packageJsonUpdates` rather than a\n * migration — see `version-upgrade-migration/nx-package-updates.ts`.\n */\nexport const NX_PACKAGES = [\n 'nx',\n '@nx/devkit',\n '@nx/js',\n '@nx/react',\n '@nx/vite',\n '@nx/vitest',\n '@nx/workspace',\n] as const satisfies readonly ITsDepVersion[];\n\n/**\n * The nx version the plugin is built against, and the single source of truth\n * for every place a workspace's nx is pinned.\n */\nexport const NX_VERSION = TS_VERSIONS.nx;\n\n/**\n * Versions for Python dependencies added by generators\n */\nexport const PY_VERSIONS = {\n 'a2a-sdk': '==0.3.26',\n 'ag-ui-langgraph': '==0.0.42',\n 'ag-ui-protocol': '==0.1.19',\n 'ag-ui-strands': '==0.2.4',\n 'aws-lambda-powertools': '==3.31.1',\n 'aws-lambda-powertools[tracer]': '==3.31.1',\n 'aws-lambda-powertools[parser]': '==3.31.1',\n 'aws-opentelemetry-distro': '==0.19.0',\n 'bedrock-agentcore': '==1.21.0',\n boto3: '==1.43.67',\n checkov: '==3.3.9',\n fastapi: '==0.141.1',\n 'fastapi[standard]': '==0.141.1',\n httpx: '==0.28.1',\n langchain: '==1.3.14',\n 'langchain-aws': '==1.7.0',\n 'langchain-mcp-adapters': '==0.3.2',\n langgraph: '==1.2.10',\n mcp: '==1.28.1',\n 'pip-check-updates': '==0.29.0',\n 'pip-licenses': '==5.5.5',\n ruff: '==0.16.2',\n 'strands-agents': '==1.51.0',\n 'strands-agents[a2a]': '==1.51.0',\n 'strands-agents-tools': '==0.8.6',\n ty: '==0.0.69',\n pynamodb: '==6.1.0',\n uvicorn: '==0.52.1',\n sqlmodel: '==0.0.39',\n alembic: '==1.19.1',\n aiomysql: '==0.3.2',\n asyncpg: '==0.31.0',\n // Pinned explicitly: SQLAlchemy's async engine pulls greenlet transitively,\n // and leaving it unpinned lets uv resolve to a just-released version whose\n // platform wheels may not all be published yet (breaking aarch64 installs).\n greenlet: '==3.5.4',\n} as const;\nexport type IPyDepVersion = keyof typeof PY_VERSIONS;\n\n/**\n * Add versions to the given dependencies\n */\nexport const withPyVersions = <D extends DependencyDeclaration>(\n declaration: D,\n deps: readonly DeclaredPy<D>[],\n): string[] => {\n assertDeclared(declaration.py, deps, 'py');\n return deps.map((dep) => `${dep}${PY_VERSIONS[dep as IPyDepVersion]}`);\n};\n\n/** Catches undeclared packages that reach here past the type checker. */\nconst assertDeclared = (\n declared: readonly { readonly name: string }[],\n deps: readonly unknown[],\n kind: 'ts' | 'py',\n): void => {\n const names = declaredNames(declared);\n const undeclared = deps.filter((dep) => !names.includes(dep as string));\n if (undeclared.length > 0) {\n throw new Error(\n `Undeclared ${kind} dependencies: ${undeclared.join(', ')}. Add them to the generator's declareDependencies({ ${kind}: [...] }).`,\n );\n }\n};\n\n/**\n * Versions for vendored tools\n */\nexport const VENDORED_VERSIONS = {\n 'git-secrets': '1.3.0',\n} as const;\n\n/**\n * Versions of Java dependencies added by generators, keyed by Maven coordinate.\n *\n * Every entry is resolved from Maven Central by the version update and named\n * `<group>:<artifact>:<version>` where a generator writes it.\n */\nexport const JAVA_VERSIONS = {\n 'software.amazon.smithy:smithy-model': '1.72.1',\n 'software.amazon.smithy:smithy-aws-traits': '1.72.1',\n 'software.amazon.smithy:smithy-validation-model': '1.72.1',\n 'software.amazon.smithy:smithy-openapi': '1.72.1',\n 'software.amazon.smithy.typescript:smithy-aws-typescript-codegen': '0.52.0',\n} as const;\nexport type IJavaVersion = keyof typeof JAVA_VERSIONS;\n\n/** The Maven coordinates the version update resolves, in declaration order. */\nexport const JAVA_ARTIFACTS = Object.keys(JAVA_VERSIONS) as IJavaVersion[];\n\n/** A Maven coordinate as a dependency names it: `<group>:<artifact>:<version>`. */\nexport const javaMavenDependency = (artifact: IJavaVersion): string =>\n `${artifact}:${JAVA_VERSIONS[artifact]}`;\n\n/**\n * Versions of tools resolved by mise, keyed by the tool name mise knows.\n *\n * Every entry is checked with `mise latest <tool>` by the version update. Nothing\n * is installed into the workspace: the pin travels in the `project.json` target\n * command, which is what the version sync reaches to move it forward.\n */\nexport const MISE_VERSIONS = {\n smithy: '1.72.1',\n} as const;\nexport type IMiseVersion = keyof typeof MISE_VERSIONS;\n\n/** The tools the version update resolves through mise, in declaration order. */\nexport const MISE_TOOLS = Object.keys(MISE_VERSIONS) as IMiseVersion[];\n\n/**\n * Base container images used by generated Dockerfiles. Pinned exactly so\n * generated images are reproducible, and chosen to be free of known\n * HIGH/CRITICAL vulnerabilities at time of generation.\n */\nexport const BASE_IMAGES = {\n node: 'public.ecr.aws/docker/library/node:lts-slim',\n python: 'public.ecr.aws/docker/library/python:3.14-slim',\n} as const;\n\n/**\n * Versions for container tooling used by generated image build/scan targets.\n * Pinned exactly so generated images are reproducible.\n */\nexport const CONTAINER_VERSIONS = {\n // ECR-hosted Trivy image used to scan built images during the build.\n trivy: '0.72.0',\n} as const;\n\n/**\n * Repository each pinned tool image is pulled from, keyed as\n * {@link CONTAINER_VERSIONS}. Kept beside the versions so a tool added here is\n * one entry rather than a reference built somewhere else, which is also what\n * lets the version sync find these pins wherever a target command runs them.\n */\nexport const CONTAINER_REPOSITORIES = {\n trivy: 'public.ecr.aws/aquasecurity/trivy',\n} as const satisfies Record<keyof typeof CONTAINER_VERSIONS, string>;\n\n/** The pinned reference for a tool image, as a target command runs it. */\nexport const containerImage = (tool: keyof typeof CONTAINER_VERSIONS): string =>\n `${CONTAINER_REPOSITORIES[tool]}:${CONTAINER_VERSIONS[tool]}`;\n\n/**\n * Exact versions for Terraform providers used by generated `.tf` modules.\n * Pinned exactly (no range operator) so generated infrastructure is reproducible.\n */\nexport const TERRAFORM_VERSIONS = {\n aws: '6.58.0',\n random: '3.9.0',\n null: '3.3.0',\n archive: '2.8.0',\n external: '2.4.0',\n local: '2.9.0',\n time: '0.14.0',\n} as const;\nexport type ITerraformProviderVersion = keyof typeof TERRAFORM_VERSIONS;\n\n/**\n * Substitution variables exposing Terraform provider version constraints to\n * generated `.tf` templates (e.g. `version = \"<%- awsProviderVersion %>\"`)\n */\nexport const terraformProviderVersions = () => ({\n awsProviderVersion: TERRAFORM_VERSIONS.aws,\n randomProviderVersion: TERRAFORM_VERSIONS.random,\n nullProviderVersion: TERRAFORM_VERSIONS.null,\n archiveProviderVersion: TERRAFORM_VERSIONS.archive,\n externalProviderVersion: TERRAFORM_VERSIONS.external,\n localProviderVersion: TERRAFORM_VERSIONS.local,\n timeProviderVersion: TERRAFORM_VERSIONS.time,\n});\n"],"names":["declaredNames","TS_VERSIONS","minimatch","nx","rxjs","astro","aws4fetch","constructs","cors","chalk","clsx","commander","electrodb","esbuild","ejs","express","husky","mariadb","mise","ncp","npm","pg","prisma","react","rimraf","rolldown","tailwindcss","tsx","shadcn","vite","typescript","vitest","zod","ws","withVersions","declaration","deps","assertDeclared","ts","Object","fromEntries","map","dep","NX_PACKAGES","NX_VERSION","PY_VERSIONS","boto3","checkov","fastapi","httpx","langchain","langgraph","mcp","ruff","ty","pynamodb","uvicorn","sqlmodel","alembic","aiomysql","asyncpg","greenlet","withPyVersions","py","declared","kind","names","undeclared","filter","includes","length","Error","join","VENDORED_VERSIONS","JAVA_VERSIONS","JAVA_ARTIFACTS","keys","javaMavenDependency","artifact","MISE_VERSIONS","smithy","MISE_TOOLS","BASE_IMAGES","node","python","CONTAINER_VERSIONS","trivy","CONTAINER_REPOSITORIES","containerImage","tool","TERRAFORM_VERSIONS","aws","random","null","archive","external","local","time","terraformProviderVersions","awsProviderVersion","randomProviderVersion","nullProviderVersion","archiveProviderVersion","externalProviderVersion","localProviderVersion","timeProviderVersion"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type DeclaredPy,\n type DeclaredTs,\n type DependencyDeclaration,\n declaredNames,\n} from './declared-dependencies';\n\n/**\n * Versons for TypeScript dependencies added by generators\n */\nexport const TS_VERSIONS = {\n '@a2a-js/sdk': '0.3.14',\n '@aws/aws-distro-opentelemetry-node-autoinstrumentation': '0.12.0',\n // Pinned above the version the ADOT autoinstrumentation package resolves\n // transitively (2.8.0) to clear CVE-2026-59892 (HIGH).\n '@opentelemetry/propagator-jaeger': '2.10.0',\n // Overridden in the vended agent/MCP image builds to clear CVE-2026-14257\n // (HIGH) in brace-expansion: minimatch 10 is the lowest major depending on\n // brace-expansion 5.x, the only line Trivy's `< 5.0.8` advisory range treats\n // as fixed. Overriding brace-expansion directly is not viable — 5.x drops the\n // CommonJS default export that minimatch 9 calls.\n minimatch: '10.2.6',\n '@aws-sdk/client-dynamodb': '3.1106.0',\n '@aws-sdk/client-api-gateway': '3.1106.0',\n '@aws-sdk/client-iam': '3.1106.0',\n '@aws-sdk/client-bedrock-agentcore': '3.1106.0',\n '@aws-sdk/client-bedrock-runtime': '3.1106.0',\n '@aws-sdk/client-s3': '3.1106.0',\n '@aws-sdk/client-sts': '3.1106.0',\n '@aws-sdk/credential-providers': '3.1106.0',\n '@aws-sdk/credential-provider-cognito-identity': '3.972.66',\n '@aws-sdk/client-secrets-manager': '3.1106.0',\n '@aws-sdk/rds-signer': '3.1106.0',\n '@smithy/server-apigateway': '0.2.0',\n '@smithy/server-node': '0.2.0',\n '@aws-lambda-powertools/logger': '2.34.0',\n '@aws-lambda-powertools/metrics': '2.34.0',\n '@aws-lambda-powertools/parameters': '2.34.0',\n '@aws-lambda-powertools/tracer': '2.34.0',\n '@aws-lambda-powertools/parser': '2.34.0',\n '@aws-sdk/client-appconfigdata': '3.1106.0',\n '@middy/core': '7.7.2',\n '@nxlv/python': '22.2.2',\n '@nx-extend/terraform': '10.4.1',\n // These must all hold the same version — see NX_PACKAGES.\n nx: '23.1.1',\n '@nx/devkit': '23.1.1',\n '@nx/js': '23.1.1',\n '@nx/react': '23.1.1',\n '@nx/vite': '23.1.1',\n '@nx/vitest': '23.1.1',\n '@nx/workspace': '23.1.1',\n 'create-nx-workspace': '23.1.1',\n '@swc-node/register': '1.12.1',\n '@swc/core': '1.15.47',\n '@modelcontextprotocol/sdk': '1.30.0',\n '@modelcontextprotocol/inspector': '0.22.0',\n '@ag-ui/a2ui-toolkit': '0.0.4',\n '@ag-ui/aws-strands': '0.2.3',\n '@ag-ui/client': '0.0.57',\n '@ag-ui/core': '0.0.57',\n '@ag-ui/encoder': '0.0.57',\n 'agent-chat-cli': '0.3.0',\n '@copilotkit/react-core': '1.66.4',\n rxjs: '7.8.2',\n '@strands-agents/sdk': '1.12.0',\n '@tanstack/react-router': '1.170.23',\n '@tanstack/router-plugin': '1.168.27',\n '@tanstack/router-generator': '1.167.25',\n '@tanstack/virtual-file-routes': '1.162.0',\n '@tanstack/router-utils': '1.162.2',\n '@cloudscape-design/board-components': '3.0.213',\n '@cloudscape-design/chat-components': '1.0.157',\n '@cloudscape-design/components': '3.0.1342',\n '@cloudscape-design/global-styles': '1.0.65',\n '@tanstack/react-query': '5.101.4',\n '@tanstack/react-query-devtools': '5.101.4',\n '@trpc/tanstack-react-query': '11.18.0',\n '@trpc/client': '11.18.0',\n '@trpc/server': '11.18.0',\n '@types/node': '26.2.0',\n '@types/aws-lambda': '8.10.162',\n '@types/cors': '2.8.19',\n '@types/pg': '8.21.0',\n '@types/ws': '8.18.1',\n '@types/express': '5.0.6',\n '@smithy/config-resolver': '4.6.16',\n '@smithy/node-config-provider': '4.5.16',\n '@smithy/node-http-handler': '4.9.13',\n '@smithy/types': '4.16.1',\n '@vitest/coverage-v8': '4.1.10',\n '@vitest/ui': '4.1.10',\n '@astrojs/react': '6.0.2',\n '@astrojs/starlight': '0.41.3',\n astro: '7.1.1',\n aws4fetch: '1.0.20',\n 'aws-cdk': '2.1135.1',\n 'aws-cdk-lib': '2.263.0',\n 'aws-xray-sdk-core': '3.12.0',\n constructs: '10.8.1',\n cors: '2.8.6',\n chalk: '5.6.2',\n 'class-variance-authority': '0.7.1',\n clsx: '2.1.1',\n commander: '15.0.0',\n 'cpy-cli': '7.0.0',\n electrodb: '3.9.2',\n esbuild: '0.28.2',\n 'event-source-polyfill': '1.0.31',\n '@types/event-source-polyfill': '1.0.5',\n '@biomejs/biome': '2.5.7',\n '@prisma/adapter-mariadb': '7.9.1',\n '@prisma/adapter-pg': '7.9.1',\n '@prisma/client': '7.9.1',\n ejs: '6.0.1',\n '@types/ejs': '3.1.5',\n express: '5.2.1',\n 'fast-glob': '3.3.3',\n husky: '9.1.7',\n 'fs-extra': '11.4.0',\n '@types/fs-extra': '11.0.4',\n 'make-dir-cli': '4.0.0',\n mariadb: '3.5.3',\n mise: '2026.8.3',\n ncp: '2.0.0',\n npm: '12.0.2',\n 'npm-check-updates': '22.2.9',\n 'oidc-client-ts': '3.5.0',\n pg: '8.23.0',\n prisma: '7.9.1',\n 'react-oidc-context': '3.3.1',\n react: '19.2.8',\n 'react-dom': '19.2.8',\n rimraf: '6.1.3',\n rolldown: '1.2.3',\n 'rolldown-plugin-dts': '0.28.0',\n 'simple-git': '3.36.0',\n 'source-map-support': '0.5.21',\n 'starlight-blog': '0.28.0',\n tailwindcss: '4.3.3',\n '@tailwindcss/vite': '4.3.3',\n tsx: '4.23.11',\n 'lucide-react': '1.30.0',\n 'radix-ui': '1.6.7',\n shadcn: '4.16.2',\n 'tw-animate-css': '1.4.0',\n 'tailwind-merge': '3.6.0',\n vite: '8.2.1',\n typescript: '6.0.3',\n vitest: '4.1.10',\n zod: '4.4.3',\n ws: '8.21.3',\n} as const;\nexport type ITsDepVersion = keyof typeof TS_VERSIONS;\n\n/**\n * Add versions to the given dependencies, which the declaration must own.\n *\n * @param declaration the calling generator's `DEPENDENCIES`\n */\nexport const withVersions = <D extends DependencyDeclaration>(\n declaration: D,\n deps: readonly DeclaredTs<D>[],\n): Record<string, string> => {\n assertDeclared(declaration.ts, deps, 'ts');\n return Object.fromEntries(\n deps.map((dep) => [dep, TS_VERSIONS[dep as ITsDepVersion]]),\n );\n};\n\n/**\n * The `nx` and `@nx/*` packages a generated workspace pins, all of which must\n * hold the same version: a workspace nx even a patch apart hoists a second\n * nested nx, and the two deadlock `nx sync`.\n *\n * Bumping them in a user's workspace requires `packageJsonUpdates` rather than a\n * migration — see `version-upgrade-migration/nx-package-updates.ts`.\n */\nexport const NX_PACKAGES = [\n 'nx',\n '@nx/devkit',\n '@nx/js',\n '@nx/react',\n '@nx/vite',\n '@nx/vitest',\n '@nx/workspace',\n] as const satisfies readonly ITsDepVersion[];\n\n/**\n * The nx version the plugin is built against, and the single source of truth\n * for every place a workspace's nx is pinned.\n */\nexport const NX_VERSION = TS_VERSIONS.nx;\n\n/**\n * Versions for Python dependencies added by generators\n */\nexport const PY_VERSIONS = {\n 'a2a-sdk': '==0.3.26',\n 'ag-ui-langgraph': '==0.0.42',\n 'ag-ui-protocol': '==0.1.19',\n 'ag-ui-strands': '==0.2.4',\n aiosqlite: '==0.22.1',\n 'aws-lambda-powertools': '==3.31.1',\n 'aws-lambda-powertools[tracer]': '==3.31.1',\n 'aws-lambda-powertools[parser]': '==3.31.1',\n 'aws-opentelemetry-distro': '==0.19.0',\n 'bedrock-agentcore': '==1.21.0',\n boto3: '==1.43.67',\n checkov: '==3.3.9',\n fastapi: '==0.141.1',\n 'fastapi[standard]': '==0.141.1',\n httpx: '==0.28.1',\n langchain: '==1.3.14',\n 'langchain-aws': '==1.7.0',\n 'langchain-mcp-adapters': '==0.3.2',\n langgraph: '==1.2.10',\n 'langgraph-checkpoint-aws': '==1.2.0',\n 'langgraph-checkpoint-sqlite': '==3.1.1',\n mcp: '==1.28.1',\n 'pip-check-updates': '==0.29.0',\n 'pip-licenses': '==5.5.5',\n ruff: '==0.16.2',\n 'strands-agents': '==1.51.0',\n 'strands-agents[a2a]': '==1.51.0',\n 'strands-agents-tools': '==0.8.6',\n ty: '==0.0.69',\n pynamodb: '==6.1.0',\n uvicorn: '==0.52.1',\n sqlmodel: '==0.0.39',\n alembic: '==1.19.1',\n aiomysql: '==0.3.2',\n asyncpg: '==0.31.0',\n // Pinned explicitly: SQLAlchemy's async engine pulls greenlet transitively,\n // and leaving it unpinned lets uv resolve to a just-released version whose\n // platform wheels may not all be published yet (breaking aarch64 installs).\n greenlet: '==3.5.4',\n} as const;\nexport type IPyDepVersion = keyof typeof PY_VERSIONS;\n\n/**\n * Add versions to the given dependencies\n */\nexport const withPyVersions = <D extends DependencyDeclaration>(\n declaration: D,\n deps: readonly DeclaredPy<D>[],\n): string[] => {\n assertDeclared(declaration.py, deps, 'py');\n return deps.map((dep) => `${dep}${PY_VERSIONS[dep as IPyDepVersion]}`);\n};\n\n/** Catches undeclared packages that reach here past the type checker. */\nconst assertDeclared = (\n declared: readonly { readonly name: string }[],\n deps: readonly unknown[],\n kind: 'ts' | 'py',\n): void => {\n const names = declaredNames(declared);\n const undeclared = deps.filter((dep) => !names.includes(dep as string));\n if (undeclared.length > 0) {\n throw new Error(\n `Undeclared ${kind} dependencies: ${undeclared.join(', ')}. Add them to the generator's declareDependencies({ ${kind}: [...] }).`,\n );\n }\n};\n\n/**\n * Versions for vendored tools\n */\nexport const VENDORED_VERSIONS = {\n 'git-secrets': '1.3.0',\n} as const;\n\n/**\n * Versions of Java dependencies added by generators, keyed by Maven coordinate.\n *\n * Every entry is resolved from Maven Central by the version update and named\n * `<group>:<artifact>:<version>` where a generator writes it.\n */\nexport const JAVA_VERSIONS = {\n 'software.amazon.smithy:smithy-model': '1.72.1',\n 'software.amazon.smithy:smithy-aws-traits': '1.72.1',\n 'software.amazon.smithy:smithy-validation-model': '1.72.1',\n 'software.amazon.smithy:smithy-openapi': '1.72.1',\n 'software.amazon.smithy.typescript:smithy-aws-typescript-codegen': '0.52.0',\n} as const;\nexport type IJavaVersion = keyof typeof JAVA_VERSIONS;\n\n/** The Maven coordinates the version update resolves, in declaration order. */\nexport const JAVA_ARTIFACTS = Object.keys(JAVA_VERSIONS) as IJavaVersion[];\n\n/** A Maven coordinate as a dependency names it: `<group>:<artifact>:<version>`. */\nexport const javaMavenDependency = (artifact: IJavaVersion): string =>\n `${artifact}:${JAVA_VERSIONS[artifact]}`;\n\n/**\n * Versions of tools resolved by mise, keyed by the tool name mise knows.\n *\n * Every entry is checked with `mise latest <tool>` by the version update. Nothing\n * is installed into the workspace: the pin travels in the `project.json` target\n * command, which is what the version sync reaches to move it forward.\n */\nexport const MISE_VERSIONS = {\n smithy: '1.72.1',\n} as const;\nexport type IMiseVersion = keyof typeof MISE_VERSIONS;\n\n/** The tools the version update resolves through mise, in declaration order. */\nexport const MISE_TOOLS = Object.keys(MISE_VERSIONS) as IMiseVersion[];\n\n/**\n * Base container images used by generated Dockerfiles. Pinned exactly so\n * generated images are reproducible, and chosen to be free of known\n * HIGH/CRITICAL vulnerabilities at time of generation.\n */\nexport const BASE_IMAGES = {\n node: 'public.ecr.aws/docker/library/node:lts-slim',\n python: 'public.ecr.aws/docker/library/python:3.14-slim',\n} as const;\n\n/**\n * Versions for container tooling used by generated image build/scan targets.\n * Pinned exactly so generated images are reproducible.\n */\nexport const CONTAINER_VERSIONS = {\n // ECR-hosted Trivy image used to scan built images during the build.\n trivy: '0.72.0',\n} as const;\n\n/**\n * Repository each pinned tool image is pulled from, keyed as\n * {@link CONTAINER_VERSIONS}. Kept beside the versions so a tool added here is\n * one entry rather than a reference built somewhere else, which is also what\n * lets the version sync find these pins wherever a target command runs them.\n */\nexport const CONTAINER_REPOSITORIES = {\n trivy: 'public.ecr.aws/aquasecurity/trivy',\n} as const satisfies Record<keyof typeof CONTAINER_VERSIONS, string>;\n\n/** The pinned reference for a tool image, as a target command runs it. */\nexport const containerImage = (tool: keyof typeof CONTAINER_VERSIONS): string =>\n `${CONTAINER_REPOSITORIES[tool]}:${CONTAINER_VERSIONS[tool]}`;\n\n/**\n * Exact versions for Terraform providers used by generated `.tf` modules.\n * Pinned exactly (no range operator) so generated infrastructure is reproducible.\n */\nexport const TERRAFORM_VERSIONS = {\n aws: '6.60.0',\n random: '3.9.0',\n null: '3.3.0',\n archive: '2.8.0',\n external: '2.4.0',\n local: '2.9.0',\n time: '0.14.0',\n} as const;\nexport type ITerraformProviderVersion = keyof typeof TERRAFORM_VERSIONS;\n\n/**\n * Substitution variables exposing Terraform provider version constraints to\n * generated `.tf` templates (e.g. `version = \"<%- awsProviderVersion %>\"`)\n */\nexport const terraformProviderVersions = () => ({\n awsProviderVersion: TERRAFORM_VERSIONS.aws,\n randomProviderVersion: TERRAFORM_VERSIONS.random,\n nullProviderVersion: TERRAFORM_VERSIONS.null,\n archiveProviderVersion: TERRAFORM_VERSIONS.archive,\n externalProviderVersion: TERRAFORM_VERSIONS.external,\n localProviderVersion: TERRAFORM_VERSIONS.local,\n timeProviderVersion: TERRAFORM_VERSIONS.time,\n});\n"],"names":["declaredNames","TS_VERSIONS","minimatch","nx","rxjs","astro","aws4fetch","constructs","cors","chalk","clsx","commander","electrodb","esbuild","ejs","express","husky","mariadb","mise","ncp","npm","pg","prisma","react","rimraf","rolldown","tailwindcss","tsx","shadcn","vite","typescript","vitest","zod","ws","withVersions","declaration","deps","assertDeclared","ts","Object","fromEntries","map","dep","NX_PACKAGES","NX_VERSION","PY_VERSIONS","aiosqlite","boto3","checkov","fastapi","httpx","langchain","langgraph","mcp","ruff","ty","pynamodb","uvicorn","sqlmodel","alembic","aiomysql","asyncpg","greenlet","withPyVersions","py","declared","kind","names","undeclared","filter","includes","length","Error","join","VENDORED_VERSIONS","JAVA_VERSIONS","JAVA_ARTIFACTS","keys","javaMavenDependency","artifact","MISE_VERSIONS","smithy","MISE_TOOLS","BASE_IMAGES","node","python","CONTAINER_VERSIONS","trivy","CONTAINER_REPOSITORIES","containerImage","tool","TERRAFORM_VERSIONS","aws","random","null","archive","external","local","time","terraformProviderVersions","awsProviderVersion","randomProviderVersion","nullProviderVersion","archiveProviderVersion","externalProviderVersion","localProviderVersion","timeProviderVersion"],"mappings":"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"}