@aws/nx-plugin 1.0.0-rc.32 → 1.0.0-rc.33

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 (188) hide show
  1. package/LICENSE-THIRD-PARTY +72 -70
  2. package/package.json +5 -5
  3. package/src/infra/app/__snapshots__/generator.spec.ts.snap +15 -15
  4. package/src/infra/app/files/app/src/main.ts.template +1 -1
  5. package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
  6. package/src/infra/app/generator.js +3 -1
  7. package/src/infra/app/generator.js.map +1 -1
  8. package/src/open-api/ts-client/files/client.gen.ts.template +1 -1
  9. package/src/open-api/ts-client/generator.js +5 -1
  10. package/src/open-api/ts-client/generator.js.map +1 -1
  11. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +2 -2
  12. package/src/open-api/ts-hooks/generator.js +5 -1
  13. package/src/open-api/ts-hooks/generator.js.map +1 -1
  14. package/src/preset/__snapshots__/generator.spec.ts.snap +1 -1
  15. package/src/preset/generator.d.ts +1 -1
  16. package/src/preset/generator.js +5 -2
  17. package/src/preset/generator.js.map +1 -1
  18. package/src/preset/schema.d.js.map +1 -1
  19. package/src/preset/schema.d.ts +2 -0
  20. package/src/preset/schema.json +6 -0
  21. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +7 -7
  22. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +8 -8
  23. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +89 -3
  24. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  25. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
  26. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  27. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +91 -5
  28. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +7 -7
  29. package/src/smithy/ts/api/files/handler.ts.template +2 -2
  30. package/src/smithy/ts/api/files/local-server.ts.template +2 -2
  31. package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
  32. package/src/smithy/ts/api/files/service.ts.template +3 -3
  33. package/src/smithy/ts/api/generator.js +3 -1
  34. package/src/smithy/ts/api/generator.js.map +1 -1
  35. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
  36. package/src/trpc/backend/files/src/client/index.ts.template +1 -1
  37. package/src/trpc/backend/files/src/handler.ts.template +1 -1
  38. package/src/trpc/backend/files/src/index.ts.template +5 -5
  39. package/src/trpc/backend/files/src/init.ts.template +1 -1
  40. package/src/trpc/backend/files/src/local-server.ts.template +1 -1
  41. package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
  42. package/src/trpc/backend/files/src/procedures/echo.ts.template +2 -2
  43. package/src/trpc/backend/files/src/router.ts.template +2 -2
  44. package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
  45. package/src/trpc/backend/generator.js +3 -1
  46. package/src/trpc/backend/generator.js.map +1 -1
  47. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +89 -3
  48. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +2 -2
  49. package/src/ts/agent/a2a-connection/generator.js +3 -1
  50. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  51. package/src/ts/agent/files/a2a/index.ts.template +1 -1
  52. package/src/ts/agent/files/ag-ui/index.ts.template +1 -1
  53. package/src/ts/agent/files/http/client.ts.template +2 -2
  54. package/src/ts/agent/files/http/index.ts.template +2 -2
  55. package/src/ts/agent/files/http/router.ts.template +3 -3
  56. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +2 -2
  57. package/src/ts/agent/gateway-connection/generator.js +3 -1
  58. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  59. package/src/ts/agent/generator.js +5 -2
  60. package/src/ts/agent/generator.js.map +1 -1
  61. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +2 -2
  62. package/src/ts/agent/mcp-connection/generator.js +3 -1
  63. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  64. package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +3 -2
  65. package/src/ts/astro-docs/generator.js +2 -0
  66. package/src/ts/astro-docs/generator.js.map +1 -1
  67. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  68. package/src/ts/dynamodb/files/src/client.ts.template +5 -2
  69. package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
  70. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
  71. package/src/ts/dynamodb/files/src/index.ts.template +2 -2
  72. package/src/ts/dynamodb/generator.js +3 -1
  73. package/src/ts/dynamodb/generator.js.map +1 -1
  74. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  75. package/src/ts/lib/generator.js +7 -1
  76. package/src/ts/lib/generator.js.map +1 -1
  77. package/src/ts/lib/ts-project-utils.js +19 -4
  78. package/src/ts/lib/ts-project-utils.js.map +1 -1
  79. package/src/ts/lib/types.d.ts +6 -0
  80. package/src/ts/lib/types.js.map +1 -1
  81. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +94 -8
  82. package/src/ts/mcp-server/generator.js +3 -2
  83. package/src/ts/mcp-server/generator.js.map +1 -1
  84. package/src/ts/nx-generator/files/local/generator.ts.template +2 -2
  85. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +2 -2
  86. package/src/ts/nx-generator/generator.js +5 -2
  87. package/src/ts/nx-generator/generator.js.map +1 -1
  88. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  89. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  90. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  91. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  92. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  93. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
  94. package/src/ts/nx-plugin/generator.js +3 -1
  95. package/src/ts/nx-plugin/generator.js.map +1 -1
  96. package/src/ts/nx-plugin/utils.js +7 -4
  97. package/src/ts/nx-plugin/utils.js.map +1 -1
  98. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +4 -4
  99. package/src/ts/rdb/files/src/create-db-user-handler.ts.template +2 -2
  100. package/src/ts/rdb/files/src/index.ts.template +1 -1
  101. package/src/ts/rdb/files/src/migration-handler.ts.template +1 -1
  102. package/src/ts/rdb/files/src/prisma.ts.template +7 -4
  103. package/src/ts/rdb/generator.js +3 -1
  104. package/src/ts/rdb/generator.js.map +1 -1
  105. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +35 -35
  106. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
  107. package/src/utils/agent-chat/agent-chat.js +3 -1
  108. package/src/utils/agent-chat/agent-chat.js.map +1 -1
  109. package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
  110. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
  111. package/src/utils/agent-chat/files/http-py/chat.ts.template +2 -2
  112. package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
  113. package/src/utils/agent-connection/agent-connection.js +4 -1
  114. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  115. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +2 -2
  116. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +1 -1
  117. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +2 -2
  118. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +2 -2
  119. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +1 -1
  120. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +1 -1
  121. package/src/utils/agent-connection/files/core-strands/base/with-session-id-strands.ts.template +1 -1
  122. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
  123. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +1 -1
  124. package/src/utils/agent-core-constructs/agent-core-constructs.js +10 -3
  125. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  126. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +3 -3
  127. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +4 -4
  128. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +1 -1
  129. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +27 -0
  130. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +60 -1
  131. package/src/utils/api-constructs/api-constructs.js +8 -2
  132. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  133. package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +8 -8
  134. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +8 -8
  135. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +3 -3
  136. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +32 -20
  137. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +1 -1
  138. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +4 -4
  139. package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
  140. package/src/utils/ast.js +16 -0
  141. package/src/utils/ast.js.map +1 -1
  142. package/src/utils/commands.d.ts +1 -1
  143. package/src/utils/commands.js +4 -1
  144. package/src/utils/commands.js.map +1 -1
  145. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +9 -2
  146. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  147. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +3 -3
  148. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +1 -1
  149. package/src/utils/files/common/constructs/src/core/index.ts.template +4 -4
  150. package/src/utils/files/common/constructs/src/index.ts.template +2 -2
  151. package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
  152. package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
  153. package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
  154. package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +1 -1
  155. package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +1 -1
  156. package/src/utils/files/common/scripts/src/infra/stage-credentials/run.ts.template +3 -3
  157. package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
  158. package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +1 -1
  159. package/src/utils/function-constructs/function-constructs.js +3 -1
  160. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  161. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +2 -2
  162. package/src/utils/identity-constructs/identity-constructs.js +5 -1
  163. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  164. package/src/utils/module-format.d.ts +28 -0
  165. package/src/utils/module-format.js +28 -0
  166. package/src/utils/module-format.js.map +1 -0
  167. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +5 -5
  168. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +1 -1
  169. package/src/utils/rdb-constructs/rdb-constructs.js +9 -2
  170. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  171. package/src/utils/shared-constructs.js +3 -1
  172. package/src/utils/shared-constructs.js.map +1 -1
  173. package/src/utils/shared-infra-config.js +3 -1
  174. package/src/utils/shared-infra-config.js.map +1 -1
  175. package/src/utils/shared-infra-scripts.js +3 -1
  176. package/src/utils/shared-infra-scripts.js.map +1 -1
  177. package/src/utils/shared-shadcn.js +3 -1
  178. package/src/utils/shared-shadcn.js.map +1 -1
  179. package/src/utils/test.d.ts +2 -0
  180. package/src/utils/test.js +7 -1
  181. package/src/utils/test.js.map +1 -1
  182. package/src/utils/versions.d.ts +58 -58
  183. package/src/utils/versions.js +56 -56
  184. package/src/utils/versions.js.map +1 -1
  185. package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +2 -2
  186. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +2 -2
  187. package/src/utils/website-constructs/website-constructs.js +9 -2
  188. package/src/utils/website-constructs/website-constructs.js.map +1 -1
@@ -1,7 +1,7 @@
1
1
  import type { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
2
2
  import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
3
- import { regionFromGatewayUrl } from './agentcore-endpoints.js';
4
- import { sigV4Transport, noAuthTransport } from './agentcore-transport.js';
3
+ import { regionFromGatewayUrl } from './agentcore-endpoints<% if (esm) { %>.js<% } %>';
4
+ import { sigV4Transport, noAuthTransport } from './agentcore-transport<% if (esm) { %>.js<% } %>';
5
5
 
6
6
  export interface AgentCoreGatewayMcpTransportIamOptions {
7
7
  /**
@@ -3,12 +3,12 @@ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
3
3
  import {
4
4
  mcpUrlFromArn,
5
5
  regionFromArn,
6
- } from './agentcore-endpoints.js';
6
+ } from './agentcore-endpoints<% if (esm) { %>.js<% } %>';
7
7
  import {
8
8
  sigV4Transport,
9
9
  jwtTransport,
10
10
  noAuthTransport,
11
- } from './agentcore-transport.js';
11
+ } from './agentcore-transport<% if (esm) { %>.js<% } %>';
12
12
 
13
13
  /**
14
14
  * Options for an MCP transport with IAM authentication.
@@ -4,7 +4,7 @@ import {
4
4
  createSigV4Fetch,
5
5
  createJwtFetch,
6
6
  createPlainFetch,
7
- } from './agentcore-fetch.js';
7
+ } from './agentcore-fetch<% if (esm) { %>.js<% } %>';
8
8
 
9
9
  const build = (
10
10
  url: string,
@@ -5,7 +5,7 @@ import {
5
5
  type AgentCoreA2aClientConfigIamOptions,
6
6
  type AgentCoreA2aClientConfigJwtOptions,
7
7
  type AgentCoreA2aClientConfigNoAuthOptions,
8
- } from './agentcore-a2a-client-config.js';
8
+ } from './agentcore-a2a-client-config<% if (esm) { %>.js<% } %>';
9
9
 
10
10
  /** Optional friendly metadata for the remote agent. */
11
11
  export interface StrandsA2aOptions {
@@ -1,5 +1,5 @@
1
1
  import { Agent } from '@strands-agents/sdk';
2
- import { getCurrentSessionId } from './session-context.js';
2
+ import { getCurrentSessionId } from './session-context<% if (esm) { %>.js<% } %>';
3
3
 
4
4
  /** Wrap an Agent factory so each session gets its own cached Agent. */
5
5
  export const withSessionId = (factory: () => Promise<Agent>): Agent => {
@@ -2,7 +2,7 @@ import { McpClient } from '@strands-agents/sdk';
2
2
  import {
3
3
  AgentCoreGatewayMcpTransport,
4
4
  type AgentCoreGatewayMcpTransportIamOptions,
5
- } from './agentcore-gateway-mcp-transport.js';
5
+ } from './agentcore-gateway-mcp-transport<% if (esm) { %>.js<% } %>';
6
6
 
7
7
  /**
8
8
  * Strands MCP clients that connect to an AgentCore Gateway.
@@ -4,7 +4,7 @@ import {
4
4
  type AgentCoreMcpTransportIamOptions,
5
5
  type AgentCoreMcpTransportJwtOptions,
6
6
  type AgentCoreMcpTransportNoAuthOptions,
7
- } from './agentcore-mcp-transport.js';
7
+ } from './agentcore-mcp-transport<% if (esm) { %>.js<% } %>';
8
8
 
9
9
  /** Strands MCP clients for a Bedrock AgentCore runtime. */
10
10
  export class AgentCoreMcpClientStrands {
@@ -3,6 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, updateJson } from "@nx/devkit";
5
5
  import { addStarExport } from "../ast.js";
6
+ import { esmVars } from "../module-format.js";
6
7
  import { addDependencyToTargetIfNotPresent } from "../nx.js";
7
8
  import { PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, SHARED_TERRAFORM_DIR } from "../shared-constructs-constants.js";
8
9
  import { PY_VERSIONS, terraformProviderVersions } from "../versions.js";
@@ -23,7 +24,10 @@ const addAgentCoreInfra = async (tree, options)=>{
23
24
  };
24
25
  const addAgentCoreCDKInfra = async (tree, options)=>{
25
26
  // Generate app specific CDK construct
26
- generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'agent-core'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', options.appDirectory), options, {
27
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'agent-core'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', options.appDirectory), {
28
+ ...options,
29
+ ...esmVars(tree)
30
+ }, {
27
31
  overwriteStrategy: OverwriteStrategy.KeepExisting
28
32
  });
29
33
  // Export app specific CDK construct
@@ -93,14 +97,17 @@ export const addAgentCoreGatewayInfra = async (tree, options)=>{
93
97
  const addAgentCoreGatewayCDKInfra = async (tree, options)=>{
94
98
  // Generic gateway construct (readiness probe, policy engine, Cedar policy
95
99
  // loading) shared by all gateways
96
- generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'agentcore-gateway'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core', 'agentcore-gateway'), {}, {
100
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'agentcore-gateway'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core', 'agentcore-gateway'), {
101
+ ...esmVars(tree)
102
+ }, {
97
103
  overwriteStrategy: OverwriteStrategy.KeepExisting
98
104
  });
99
105
  generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'agentcore-gateway'), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', 'gateways'), {
100
106
  nameClassName: options.gatewayNameClassName,
101
107
  nameKebabCase: options.gatewayNameKebabCase,
102
108
  projectDirectory: options.projectDirectory,
103
- cedarPolicy: options.cedarPolicy
109
+ cedarPolicy: options.cedarPolicy,
110
+ ...esmVars(tree)
104
111
  }, {
105
112
  overwriteStrategy: OverwriteStrategy.KeepExisting
106
113
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/agent-core-constructs/agent-core-constructs.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addStarExport } from '../ast';\nimport type { Containers } from '../containers';\nimport type { Iac } from '../iac';\nimport { addDependencyToTargetIfNotPresent } from '../nx';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants';\nimport { PY_VERSIONS, terraformProviderVersions } from '../versions';\n\ntype IACProvider = { iac: Iac };\n\nexport type AgentCoreAuth = 'iam' | 'cognito';\n\nexport interface AddAgentCoreInfraProps {\n nameClassName: string;\n nameKebabCase: string;\n projectName: string;\n dockerImageTag: string;\n dockerOutputDir: string;\n appDirectory: string;\n serverProtocol: 'mcp' | 'http' | 'a2a';\n auth: AgentCoreAuth;\n containers: Containers;\n}\n\nconst addAgentCoreInfra = async (\n tree: Tree,\n options: AddAgentCoreInfraProps & { iac: Iac },\n) => {\n switch (options.iac) {\n case 'cdk':\n await addAgentCoreCDKInfra(tree, options);\n break;\n case 'terraform':\n addAgentCoreTerraformInfra(tree, options);\n break;\n }\n\n // Update shared constructs/terraform project configuration to depend on this project\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.projectName}:build`,\n );\n return config;\n },\n );\n};\n\nconst addAgentCoreCDKInfra = async (\n tree: Tree,\n options: AddAgentCoreInfraProps,\n) => {\n // Generate app specific CDK construct\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'agent-core'),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n options.appDirectory,\n ),\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Export app specific CDK construct\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n options.appDirectory,\n 'index.ts',\n ),\n `./${options.nameKebabCase}/${options.nameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n `./${options.appDirectory}/index.js`,\n );\n};\n\nconst addAgentCoreTerraformInfra = (\n tree: Tree,\n options: AddAgentCoreInfraProps,\n) => {\n // Add the AgentCore shared module\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'core',\n 'agent-core',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'core',\n 'agent-core',\n ),\n {\n containers: options.containers,\n boto3Version: PY_VERSIONS.boto3,\n ...terraformProviderVersions(),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Generate app specific agent core configuration\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'app',\n 'agent-core',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'app',\n options.appDirectory,\n ),\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n};\n\nexport interface AddMcpServerInfraProps {\n mcpServerNameClassName: string;\n mcpServerNameKebabCase: string;\n projectName: string;\n dockerImageTag: string;\n dockerOutputDir: string;\n auth: AgentCoreAuth;\n containers: Containers;\n}\n\n/**\n * Add an MCP server CDK construct\n */\nexport const addMcpServerInfra = async (\n tree: Tree,\n options: AddMcpServerInfraProps & IACProvider,\n) => {\n await addAgentCoreInfra(tree, {\n nameClassName: options.mcpServerNameClassName,\n nameKebabCase: options.mcpServerNameKebabCase,\n dockerImageTag: options.dockerImageTag,\n dockerOutputDir: options.dockerOutputDir,\n projectName: options.projectName,\n appDirectory: 'mcp-servers',\n serverProtocol: 'mcp',\n iac: options.iac,\n auth: options.auth,\n containers: options.containers,\n });\n};\n\nexport interface AddAgentInfraProps {\n agentNameClassName: string;\n agentNameKebabCase: string;\n projectName: string;\n dockerImageTag: string;\n dockerOutputDir: string;\n auth: AgentCoreAuth;\n serverProtocol?: 'http' | 'a2a';\n containers: Containers;\n}\n\n/**\n * Add an agent CDK construct\n */\nexport const addAgentInfra = async (\n tree: Tree,\n options: AddAgentInfraProps & IACProvider,\n) => {\n await addAgentCoreInfra(tree, {\n nameClassName: options.agentNameClassName,\n nameKebabCase: options.agentNameKebabCase,\n projectName: options.projectName,\n dockerImageTag: options.dockerImageTag,\n dockerOutputDir: options.dockerOutputDir,\n appDirectory: 'agents',\n serverProtocol: options.serverProtocol ?? 'http',\n iac: options.iac,\n auth: options.auth,\n containers: options.containers,\n });\n};\n\nexport interface AddAgentCoreGatewayInfraProps {\n gatewayNameClassName: string;\n gatewayNameKebabCase: string;\n projectName: string;\n projectDirectory: string;\n cedarPolicy: boolean;\n}\n\nexport const addAgentCoreGatewayInfra = async (\n tree: Tree,\n options: AddAgentCoreGatewayInfraProps & IACProvider,\n) => {\n switch (options.iac) {\n case 'cdk':\n await addAgentCoreGatewayCDKInfra(tree, options);\n break;\n case 'terraform':\n addAgentCoreGatewayTerraformInfra(tree, options);\n break;\n }\n\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.projectName}:build`,\n );\n return config;\n },\n );\n};\n\nconst addAgentCoreGatewayCDKInfra = async (\n tree: Tree,\n options: AddAgentCoreGatewayInfraProps,\n) => {\n // Generic gateway construct (readiness probe, policy engine, Cedar policy\n // loading) shared by all gateways\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'core',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'agentcore-gateway',\n ),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'app',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'gateways',\n ),\n {\n nameClassName: options.gatewayNameClassName,\n nameKebabCase: options.gatewayNameKebabCase,\n projectDirectory: options.projectDirectory,\n cedarPolicy: options.cedarPolicy,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'index.ts',\n ),\n './agentcore-gateway/agentcore-gateway.js',\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'gateways',\n 'index.ts',\n ),\n `./${options.gatewayNameKebabCase}/${options.gatewayNameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n './gateways/index.js',\n );\n};\n\nconst addAgentCoreGatewayTerraformInfra = (\n tree: Tree,\n options: AddAgentCoreGatewayInfraProps,\n) => {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'core',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'core',\n 'agentcore-gateway',\n ),\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'app',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'app',\n 'gateways',\n ),\n {\n nameClassName: options.gatewayNameClassName,\n nameKebabCase: options.gatewayNameKebabCase,\n projectDirectory: options.projectDirectory,\n cedarPolicy: options.cedarPolicy,\n boto3Version: PY_VERSIONS.boto3,\n httpxVersion: PY_VERSIONS.httpx,\n mcpVersion: PY_VERSIONS.mcp,\n ...terraformProviderVersions(),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // The Cedar render script is only needed when policies are enabled\n if (!options.cedarPolicy) {\n const renderScript = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'app',\n 'gateways',\n options.gatewayNameKebabCase,\n 'render-cedar.cjs',\n );\n if (tree.exists(renderScript)) {\n tree.delete(renderScript);\n }\n }\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addStarExport","addDependencyToTargetIfNotPresent","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","PY_VERSIONS","terraformProviderVersions","addAgentCoreInfra","tree","options","iac","addAgentCoreCDKInfra","addAgentCoreTerraformInfra","config","projectName","dirname","appDirectory","overwriteStrategy","KeepExisting","nameKebabCase","containers","boto3Version","boto3","addMcpServerInfra","nameClassName","mcpServerNameClassName","mcpServerNameKebabCase","dockerImageTag","dockerOutputDir","serverProtocol","auth","addAgentInfra","agentNameClassName","agentNameKebabCase","addAgentCoreGatewayInfra","addAgentCoreGatewayCDKInfra","addAgentCoreGatewayTerraformInfra","gatewayNameClassName","gatewayNameKebabCase","projectDirectory","cedarPolicy","httpxVersion","httpx","mcpVersion","mcp","renderScript","exists","delete"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/agent-core-constructs/agent-core-constructs.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addStarExport } from '../ast';\nimport type { Containers } from '../containers';\nimport type { Iac } from '../iac';\nimport { esmVars } from '../module-format';\nimport { addDependencyToTargetIfNotPresent } from '../nx';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants';\nimport { PY_VERSIONS, terraformProviderVersions } from '../versions';\n\ntype IACProvider = { iac: Iac };\n\nexport type AgentCoreAuth = 'iam' | 'cognito';\n\nexport interface AddAgentCoreInfraProps {\n nameClassName: string;\n nameKebabCase: string;\n projectName: string;\n dockerImageTag: string;\n dockerOutputDir: string;\n appDirectory: string;\n serverProtocol: 'mcp' | 'http' | 'a2a';\n auth: AgentCoreAuth;\n containers: Containers;\n}\n\nconst addAgentCoreInfra = async (\n tree: Tree,\n options: AddAgentCoreInfraProps & { iac: Iac },\n) => {\n switch (options.iac) {\n case 'cdk':\n await addAgentCoreCDKInfra(tree, options);\n break;\n case 'terraform':\n addAgentCoreTerraformInfra(tree, options);\n break;\n }\n\n // Update shared constructs/terraform project configuration to depend on this project\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.projectName}:build`,\n );\n return config;\n },\n );\n};\n\nconst addAgentCoreCDKInfra = async (\n tree: Tree,\n options: AddAgentCoreInfraProps,\n) => {\n // Generate app specific CDK construct\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'agent-core'),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n options.appDirectory,\n ),\n { ...options, ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Export app specific CDK construct\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n options.appDirectory,\n 'index.ts',\n ),\n `./${options.nameKebabCase}/${options.nameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n `./${options.appDirectory}/index.js`,\n );\n};\n\nconst addAgentCoreTerraformInfra = (\n tree: Tree,\n options: AddAgentCoreInfraProps,\n) => {\n // Add the AgentCore shared module\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'core',\n 'agent-core',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'core',\n 'agent-core',\n ),\n {\n containers: options.containers,\n boto3Version: PY_VERSIONS.boto3,\n ...terraformProviderVersions(),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Generate app specific agent core configuration\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'app',\n 'agent-core',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'app',\n options.appDirectory,\n ),\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n};\n\nexport interface AddMcpServerInfraProps {\n mcpServerNameClassName: string;\n mcpServerNameKebabCase: string;\n projectName: string;\n dockerImageTag: string;\n dockerOutputDir: string;\n auth: AgentCoreAuth;\n containers: Containers;\n}\n\n/**\n * Add an MCP server CDK construct\n */\nexport const addMcpServerInfra = async (\n tree: Tree,\n options: AddMcpServerInfraProps & IACProvider,\n) => {\n await addAgentCoreInfra(tree, {\n nameClassName: options.mcpServerNameClassName,\n nameKebabCase: options.mcpServerNameKebabCase,\n dockerImageTag: options.dockerImageTag,\n dockerOutputDir: options.dockerOutputDir,\n projectName: options.projectName,\n appDirectory: 'mcp-servers',\n serverProtocol: 'mcp',\n iac: options.iac,\n auth: options.auth,\n containers: options.containers,\n });\n};\n\nexport interface AddAgentInfraProps {\n agentNameClassName: string;\n agentNameKebabCase: string;\n projectName: string;\n dockerImageTag: string;\n dockerOutputDir: string;\n auth: AgentCoreAuth;\n serverProtocol?: 'http' | 'a2a';\n containers: Containers;\n}\n\n/**\n * Add an agent CDK construct\n */\nexport const addAgentInfra = async (\n tree: Tree,\n options: AddAgentInfraProps & IACProvider,\n) => {\n await addAgentCoreInfra(tree, {\n nameClassName: options.agentNameClassName,\n nameKebabCase: options.agentNameKebabCase,\n projectName: options.projectName,\n dockerImageTag: options.dockerImageTag,\n dockerOutputDir: options.dockerOutputDir,\n appDirectory: 'agents',\n serverProtocol: options.serverProtocol ?? 'http',\n iac: options.iac,\n auth: options.auth,\n containers: options.containers,\n });\n};\n\nexport interface AddAgentCoreGatewayInfraProps {\n gatewayNameClassName: string;\n gatewayNameKebabCase: string;\n projectName: string;\n projectDirectory: string;\n cedarPolicy: boolean;\n}\n\nexport const addAgentCoreGatewayInfra = async (\n tree: Tree,\n options: AddAgentCoreGatewayInfraProps & IACProvider,\n) => {\n switch (options.iac) {\n case 'cdk':\n await addAgentCoreGatewayCDKInfra(tree, options);\n break;\n case 'terraform':\n addAgentCoreGatewayTerraformInfra(tree, options);\n break;\n }\n\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.projectName}:build`,\n );\n return config;\n },\n );\n};\n\nconst addAgentCoreGatewayCDKInfra = async (\n tree: Tree,\n options: AddAgentCoreGatewayInfraProps,\n) => {\n // Generic gateway construct (readiness probe, policy engine, Cedar policy\n // loading) shared by all gateways\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'core',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'agentcore-gateway',\n ),\n { ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'app',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'gateways',\n ),\n {\n nameClassName: options.gatewayNameClassName,\n nameKebabCase: options.gatewayNameKebabCase,\n projectDirectory: options.projectDirectory,\n cedarPolicy: options.cedarPolicy,\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'index.ts',\n ),\n './agentcore-gateway/agentcore-gateway.js',\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'gateways',\n 'index.ts',\n ),\n `./${options.gatewayNameKebabCase}/${options.gatewayNameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n './gateways/index.js',\n );\n};\n\nconst addAgentCoreGatewayTerraformInfra = (\n tree: Tree,\n options: AddAgentCoreGatewayInfraProps,\n) => {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'core',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'core',\n 'agentcore-gateway',\n ),\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'app',\n 'agentcore-gateway',\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'app',\n 'gateways',\n ),\n {\n nameClassName: options.gatewayNameClassName,\n nameKebabCase: options.gatewayNameKebabCase,\n projectDirectory: options.projectDirectory,\n cedarPolicy: options.cedarPolicy,\n boto3Version: PY_VERSIONS.boto3,\n httpxVersion: PY_VERSIONS.httpx,\n mcpVersion: PY_VERSIONS.mcp,\n ...terraformProviderVersions(),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // The Cedar render script is only needed when policies are enabled\n if (!options.cedarPolicy) {\n const renderScript = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n 'src',\n 'app',\n 'gateways',\n options.gatewayNameKebabCase,\n 'render-cedar.cjs',\n );\n if (tree.exists(renderScript)) {\n tree.delete(renderScript);\n }\n }\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addStarExport","esmVars","addDependencyToTargetIfNotPresent","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","PY_VERSIONS","terraformProviderVersions","addAgentCoreInfra","tree","options","iac","addAgentCoreCDKInfra","addAgentCoreTerraformInfra","config","projectName","dirname","appDirectory","overwriteStrategy","KeepExisting","nameKebabCase","containers","boto3Version","boto3","addMcpServerInfra","nameClassName","mcpServerNameClassName","mcpServerNameKebabCase","dockerImageTag","dockerOutputDir","serverProtocol","auth","addAgentInfra","agentNameClassName","agentNameKebabCase","addAgentCoreGatewayInfra","addAgentCoreGatewayCDKInfra","addAgentCoreGatewayTerraformInfra","gatewayNameClassName","gatewayNameKebabCase","projectDirectory","cedarPolicy","httpxVersion","httpx","mcpVersion","mcp","renderScript","exists","delete"],"mappings":"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"}
@@ -17,8 +17,8 @@ import { <%_ if (serverProtocol !== 'mcp') { _%>PolicyStatement, <%_ } _%>IGrant
17
17
  <%_ if (auth === 'cognito') { _%>
18
18
  import { IUserPool, IUserPoolClient } from 'aws-cdk-lib/aws-cognito';
19
19
  <%_ } _%>
20
- import { RuntimeConfig } from '../../../core/runtime-config.js';
21
- import { findWorkspaceRoot } from '../../../core/workspace.js';
20
+ import { RuntimeConfig } from '../../../core/runtime-config<% if (esm) { %>.js<% } %>';
21
+ import { findWorkspaceRoot } from '../../../core/workspace<% if (esm) { %>.js<% } %>';
22
22
 
23
23
  <%_ if (auth === 'iam') { _%>
24
24
  export type <%- nameClassName %>Props = Omit<
@@ -61,7 +61,7 @@ export class <%- nameClassName %> extends Construct implements IGrantable, IConn
61
61
 
62
62
  // Resolve the bundle output directory containing the Dockerfile and built artifacts
63
63
  const bundleDir = path.join(
64
- findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
64
+ findWorkspaceRoot(url.fileURLToPath(new URL(<% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>))),
65
65
  '<%- dockerOutputDir %>',
66
66
  );
67
67
 
@@ -6,10 +6,10 @@ import * as url from 'node:url';
6
6
  import {
7
7
  AgentCoreGateway,
8
8
  AgentCoreGatewayProps,
9
- } from '../../../core/agentcore-gateway/agentcore-gateway.js';
10
- import { RuntimeConfig } from '../../../core/runtime-config.js';
9
+ } from '../../../core/agentcore-gateway/agentcore-gateway<% if (esm) { %>.js<% } %>';
10
+ import { RuntimeConfig } from '../../../core/runtime-config<% if (esm) { %>.js<% } %>';
11
11
  <%_ if (cedarPolicy) { _%>
12
- import { findWorkspaceRoot } from '../../../core/workspace.js';
12
+ import { findWorkspaceRoot } from '../../../core/workspace<% if (esm) { %>.js<% } %>';
13
13
  <%_ } _%>
14
14
 
15
15
  <%_ if (cedarPolicy) { _%>
@@ -34,7 +34,7 @@ export class <%- nameClassName %> extends AgentCoreGateway {
34
34
  super(scope, id, {
35
35
  <%_ if (cedarPolicy) { _%>
36
36
  cedarPolicyPath: path.join(
37
- findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
37
+ findWorkspaceRoot(url.fileURLToPath(new URL(<% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>))),
38
38
  '<%- projectDirectory %>/policies',
39
39
  ),
40
40
  <%_ } _%>
@@ -472,7 +472,7 @@ export class AgentCoreGateway extends Construct implements iam.IGrantable {
472
472
  handler: 'index.handler',
473
473
  timeout: cdk.Duration.seconds(210),
474
474
  code: lambda.Code.fromAsset(
475
- url.fileURLToPath(new URL('./readiness-probe', import.meta.url)),
475
+ url.fileURLToPath(new URL('./readiness-probe', <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>)),
476
476
  ),
477
477
  environment: {
478
478
  RUNTIME_ARNS: cdk.Lazy.string({
@@ -20,6 +20,25 @@ variable "tags" {
20
20
  default = {}
21
21
  }
22
22
 
23
+ # VPC Configuration (optional)
24
+ variable "enable_vpc" {
25
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
26
+ type = bool
27
+ default = false
28
+ }
29
+
30
+ variable "vpc_id" {
31
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
32
+ type = string
33
+ default = null
34
+ }
35
+
36
+ variable "subnet_ids" {
37
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
38
+ type = list(string)
39
+ default = null
40
+ }
41
+
23
42
  variable "appconfig_application_id" {
24
43
  description = "ID of the shared runtime-config AppConfig application (from `core/runtime-config/appconfig.application_id`). The agent reads its runtime configuration from this application."
25
44
  type = string
@@ -53,6 +72,9 @@ module "agent_core_runtime" {
53
72
  agent_runtime_name = "<%= nameClassName %>"
54
73
  docker_image_tag = "<%= dockerImageTag %>"
55
74
  server_protocol = "<%= serverProtocol.toUpperCase() %>"
75
+ enable_vpc = var.enable_vpc
76
+ vpc_id = var.vpc_id
77
+ subnet_ids = var.subnet_ids
56
78
  <%_ if (auth === 'cognito') { _%>
57
79
  authorizer_configuration = {
58
80
  custom_jwt_authorizer = {
@@ -115,3 +137,8 @@ output "appconfig_application_id" {
115
137
  description = "AppConfig Application ID for runtime config (passthrough of the shared `appconfig_application_id` input)."
116
138
  value = var.appconfig_application_id
117
139
  }
140
+
141
+ output "security_group_id" {
142
+ description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
143
+ value = module.agent_core_runtime.security_group_id
144
+ }
@@ -70,6 +70,30 @@ variable "additional_iam_policy_statements" {
70
70
  default = []
71
71
  }
72
72
 
73
+ # VPC Configuration (optional)
74
+ variable "enable_vpc" {
75
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
76
+ type = bool
77
+ default = false
78
+ }
79
+
80
+ variable "vpc_id" {
81
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
82
+ type = string
83
+ default = null
84
+
85
+ validation {
86
+ condition = !var.enable_vpc || (var.vpc_id != null && var.subnet_ids != null)
87
+ error_message = "vpc_id and subnet_ids must be set when enable_vpc is true."
88
+ }
89
+ }
90
+
91
+ variable "subnet_ids" {
92
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
93
+ type = list(string)
94
+ default = null
95
+ }
96
+
73
97
  variable "tags" {
74
98
  description = "Tags to apply to resources"
75
99
  type = map(string)
@@ -305,6 +329,28 @@ resource "null_resource" "docker_publish" {
305
329
  depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
306
330
  }
307
331
 
332
+ # Security group for the agent core runtime, used when running inside a VPC
333
+ resource "aws_security_group" "agent_core_runtime" {
334
+ count = var.enable_vpc ? 1 : 0
335
+
336
+ #checkov:skip=CKV2_AWS_5:Attached to the runtime via network_configuration; Checkov cannot resolve this reference
337
+ name_prefix = "${var.agent_runtime_name}-runtime-"
338
+ description = "Security group for the ${var.agent_runtime_name} agent core runtime"
339
+ vpc_id = var.vpc_id
340
+ tags = var.tags
341
+ }
342
+
343
+ resource "aws_vpc_security_group_egress_rule" "agent_core_runtime_https" {
344
+ count = var.enable_vpc ? 1 : 0
345
+
346
+ security_group_id = aws_security_group.agent_core_runtime[0].id
347
+ cidr_ipv4 = "0.0.0.0/0"
348
+ from_port = 443
349
+ to_port = 443
350
+ ip_protocol = "tcp"
351
+ description = "Allow outbound HTTPS to AWS service endpoints"
352
+ }
353
+
308
354
  # Bedrock AgentCore Agent Runtime
309
355
  resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
310
356
  agent_runtime_name = "${var.agent_runtime_name}_${random_id.unique_suffix.hex}"
@@ -331,7 +377,15 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
331
377
  }
332
378
 
333
379
  network_configuration {
334
- network_mode = "PUBLIC"
380
+ network_mode = var.enable_vpc ? "VPC" : "PUBLIC"
381
+
382
+ dynamic "network_mode_config" {
383
+ for_each = var.enable_vpc ? [1] : []
384
+ content {
385
+ security_groups = [aws_security_group.agent_core_runtime[0].id]
386
+ subnets = var.subnet_ids
387
+ }
388
+ }
335
389
  }
336
390
 
337
391
  protocol_configuration {
@@ -433,3 +487,8 @@ output "agent_runtime_version" {
433
487
  description = "Version of the Bedrock Agent Core runtime"
434
488
  value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_version
435
489
  }
490
+
491
+ output "security_group_id" {
492
+ description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
493
+ value = var.enable_vpc ? aws_security_group.agent_core_runtime[0].id : null
494
+ }
@@ -3,6 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, updateJson } from "@nx/devkit";
5
5
  import { addStarExport } from "../ast.js";
6
+ import { esmVars } from "../module-format.js";
6
7
  import { addDependencyToTargetIfNotPresent } from "../nx.js";
7
8
  import { PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, SHARED_TERRAFORM_DIR } from "../shared-constructs-constants.js";
8
9
  import { PY_VERSIONS, terraformProviderVersions } from "../versions.js";
@@ -23,7 +24,9 @@ export const addApiGatewayInfra = async (tree, options)=>{
23
24
  * Add an API CDK construct, and update the Runtime Config type to export its url
24
25
  */ const addApiGatewayCdkConstructs = async (tree, options)=>{
25
26
  const generateCoreApiFile = (name)=>{
26
- generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'api', name), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core', 'api'), {}, {
27
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'core', 'api', name), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'core', 'api'), {
28
+ ...esmVars(tree)
29
+ }, {
27
30
  overwriteStrategy: OverwriteStrategy.KeepExisting
28
31
  });
29
32
  };
@@ -34,7 +37,10 @@ export const addApiGatewayInfra = async (tree, options)=>{
34
37
  generateCoreApiFile('trpc');
35
38
  }
36
39
  // Generate app specific CDK construct
37
- generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'apis', options.constructType), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', 'apis'), options, {
40
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'cdk', 'app', 'apis', options.constructType), joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src', 'app', 'apis'), {
41
+ ...options,
42
+ ...esmVars(tree)
43
+ }, {
38
44
  overwriteStrategy: OverwriteStrategy.KeepExisting
39
45
  });
40
46
  // Export app specific CDK construct
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/api-constructs/api-constructs.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addStarExport } from '../ast';\nimport type { Iac } from '../iac';\nimport { addDependencyToTargetIfNotPresent } from '../nx';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants';\nimport { PY_VERSIONS, terraformProviderVersions } from '../versions';\n\ninterface BackendOptions {\n type: 'trpc' | 'fastapi' | 'smithy';\n integrationPattern: 'isolated' | 'shared';\n}\n\nexport interface TrpcBackendOptions extends BackendOptions {\n type: 'trpc';\n projectAlias: string;\n bundleOutputDir: string;\n authorizerBundleOutputDir?: string;\n}\n\nexport interface FastApiBackendOptions extends BackendOptions {\n type: 'fastapi';\n moduleName: string;\n bundleOutputDir: string;\n}\n\nexport interface SmithyBackendOptions extends BackendOptions {\n type: 'smithy';\n bundleOutputDir: string;\n authorizerBundleOutputDir?: string;\n}\n\nexport interface AddApiGatewayConstructOptions {\n apiProjectName: string;\n apiNameClassName: string;\n apiNameKebabCase: string;\n constructType: 'http' | 'rest';\n backend: TrpcBackendOptions | FastApiBackendOptions | SmithyBackendOptions;\n auth: 'iam' | 'cognito' | 'custom';\n}\n\nexport const addApiGatewayInfra = async (\n tree: Tree,\n options: AddApiGatewayConstructOptions & { iac: Iac },\n) => {\n if (options.iac === 'cdk') {\n await addApiGatewayCdkConstructs(tree, options);\n } else if (options.iac === 'terraform') {\n addApiGatewayTerraformModules(tree, options);\n } else {\n throw new Error(`Unsupported iac ${options.iac}`);\n }\n\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.apiProjectName}:build`,\n );\n return config;\n },\n );\n};\n\n/**\n * Add an API CDK construct, and update the Runtime Config type to export its url\n */\nconst addApiGatewayCdkConstructs = async (\n tree: Tree,\n options: AddApiGatewayConstructOptions,\n) => {\n const generateCoreApiFile = (name: string) => {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'core',\n 'api',\n name,\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'api',\n ),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n };\n\n // Generate relevant core CDK construct and utilities\n generateCoreApiFile(options.constructType);\n generateCoreApiFile('utils');\n if (options.backend.type === 'trpc') {\n generateCoreApiFile('trpc');\n }\n\n // Generate app specific CDK construct\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'app',\n 'apis',\n options.constructType,\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'apis',\n ),\n options,\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Export app specific CDK construct\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'apis',\n 'index.ts',\n ),\n `./${options.apiNameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n './apis/index.js',\n );\n};\n\n/**\n * Add an API terraform module, and update the Runtime Config type to export its url\n */\nconst addApiGatewayTerraformModules = (\n tree: Tree,\n options: AddApiGatewayConstructOptions,\n) => {\n // Generate core terraform module\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'core',\n 'api',\n options.constructType,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core', 'api'),\n { boto3Version: PY_VERSIONS.boto3, ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Generate app specific terraform module\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'app',\n 'apis',\n options.constructType,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'app', 'apis'),\n { ...options, ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addStarExport","addDependencyToTargetIfNotPresent","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","PY_VERSIONS","terraformProviderVersions","addApiGatewayInfra","tree","options","iac","addApiGatewayCdkConstructs","addApiGatewayTerraformModules","Error","config","apiProjectName","generateCoreApiFile","name","dirname","overwriteStrategy","KeepExisting","constructType","backend","type","apiNameKebabCase","boto3Version","boto3"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAGjBC,UAAU,QACL,aAAa;AACpB,SAASC,aAAa,QAAQ,YAAS;AAEvC,SAASC,iCAAiC,QAAQ,WAAQ;AAC1D,SACEC,YAAY,EACZC,qBAAqB,EACrBC,oBAAoB,QACf,oCAAiC;AACxC,SAASC,WAAW,EAAEC,yBAAyB,QAAQ,iBAAc;AAmCrE,OAAO,MAAMC,qBAAqB,OAChCC,MACAC;IAEA,IAAIA,QAAQC,GAAG,KAAK,OAAO;QACzB,MAAMC,2BAA2BH,MAAMC;IACzC,OAAO,IAAIA,QAAQC,GAAG,KAAK,aAAa;QACtCE,8BAA8BJ,MAAMC;IACtC,OAAO;QACL,MAAM,IAAII,MAAM,CAAC,gBAAgB,EAAEJ,QAAQC,GAAG,EAAE;IAClD;IAEAX,WACES,MACAX,kBACEK,cACAO,QAAQC,GAAG,KAAK,QAAQP,wBAAwBC,sBAChD,iBAEF,CAACU;QACCb,kCACEa,QACA,SACA,GAAGL,QAAQM,cAAc,CAAC,MAAM,CAAC;QAEnC,OAAOD;IACT;AAEJ,EAAE;AAEF;;CAEC,GACD,MAAMH,6BAA6B,OACjCH,MACAC;IAEA,MAAMO,sBAAsB,CAACC;QAC3BrB,cACEY,MACAX,kBACE,YAAYqB,OAAO,EACnB,SACA,OACA,QACA,OACAD,OAEFpB,kBACEK,cACAC,uBACA,OACA,QACA,QAEF,CAAC,GACD;YACEgB,mBAAmBrB,kBAAkBsB,YAAY;QACnD;IAEJ;IAEA,qDAAqD;IACrDJ,oBAAoBP,QAAQY,aAAa;IACzCL,oBAAoB;IACpB,IAAIP,QAAQa,OAAO,CAACC,IAAI,KAAK,QAAQ;QACnCP,oBAAoB;IACtB;IAEA,sCAAsC;IACtCpB,cACEY,MACAX,kBACE,YAAYqB,OAAO,EACnB,SACA,OACA,OACA,QACAT,QAAQY,aAAa,GAEvBxB,kBACEK,cACAC,uBACA,OACA,OACA,SAEFM,SACA;QACEU,mBAAmBrB,kBAAkBsB,YAAY;IACnD;IAGF,oCAAoC;IACpC,MAAMpB,cACJQ,MACAX,kBACEK,cACAC,uBACA,OACA,OACA,QACA,aAEF,CAAC,EAAE,EAAEM,QAAQe,gBAAgB,CAAC,GAAG,CAAC;IAEpC,MAAMxB,cACJQ,MACAX,kBACEK,cACAC,uBACA,OACA,OACA,aAEF;AAEJ;AAEA;;CAEC,GACD,MAAMS,gCAAgC,CACpCJ,MACAC;IAEA,iCAAiC;IACjCb,cACEY,MACAX,kBACE,YAAYqB,OAAO,EACnB,SACA,aACA,QACA,OACAT,QAAQY,aAAa,GAEvBxB,kBAAkBK,cAAcE,sBAAsB,OAAO,QAAQ,QACrE;QAAEqB,cAAcpB,YAAYqB,KAAK;QAAE,GAAGpB,2BAA2B;IAAC,GAClE;QACEa,mBAAmBrB,kBAAkBsB,YAAY;IACnD;IAGF,yCAAyC;IACzCxB,cACEY,MACAX,kBACE,YAAYqB,OAAO,EACnB,SACA,aACA,OACA,QACAT,QAAQY,aAAa,GAEvBxB,kBAAkBK,cAAcE,sBAAsB,OAAO,OAAO,SACpE;QAAE,GAAGK,OAAO;QAAE,GAAGH,2BAA2B;IAAC,GAC7C;QACEa,mBAAmBrB,kBAAkBsB,YAAY;IACnD;AAEJ"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/utils/api-constructs/api-constructs.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addStarExport } from '../ast';\nimport type { Iac } from '../iac';\nimport { esmVars } from '../module-format';\nimport { addDependencyToTargetIfNotPresent } from '../nx';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../shared-constructs-constants';\nimport { PY_VERSIONS, terraformProviderVersions } from '../versions';\n\ninterface BackendOptions {\n type: 'trpc' | 'fastapi' | 'smithy';\n integrationPattern: 'isolated' | 'shared';\n}\n\nexport interface TrpcBackendOptions extends BackendOptions {\n type: 'trpc';\n projectAlias: string;\n bundleOutputDir: string;\n authorizerBundleOutputDir?: string;\n}\n\nexport interface FastApiBackendOptions extends BackendOptions {\n type: 'fastapi';\n moduleName: string;\n bundleOutputDir: string;\n}\n\nexport interface SmithyBackendOptions extends BackendOptions {\n type: 'smithy';\n bundleOutputDir: string;\n authorizerBundleOutputDir?: string;\n}\n\nexport interface AddApiGatewayConstructOptions {\n apiProjectName: string;\n apiNameClassName: string;\n apiNameKebabCase: string;\n constructType: 'http' | 'rest';\n backend: TrpcBackendOptions | FastApiBackendOptions | SmithyBackendOptions;\n auth: 'iam' | 'cognito' | 'custom';\n}\n\nexport const addApiGatewayInfra = async (\n tree: Tree,\n options: AddApiGatewayConstructOptions & { iac: Iac },\n) => {\n if (options.iac === 'cdk') {\n await addApiGatewayCdkConstructs(tree, options);\n } else if (options.iac === 'terraform') {\n addApiGatewayTerraformModules(tree, options);\n } else {\n throw new Error(`Unsupported iac ${options.iac}`);\n }\n\n updateJson(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n options.iac === 'cdk' ? SHARED_CONSTRUCTS_DIR : SHARED_TERRAFORM_DIR,\n 'project.json',\n ),\n (config: ProjectConfiguration) => {\n addDependencyToTargetIfNotPresent(\n config,\n 'build',\n `${options.apiProjectName}:build`,\n );\n return config;\n },\n );\n};\n\n/**\n * Add an API CDK construct, and update the Runtime Config type to export its url\n */\nconst addApiGatewayCdkConstructs = async (\n tree: Tree,\n options: AddApiGatewayConstructOptions,\n) => {\n const generateCoreApiFile = (name: string) => {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'core',\n 'api',\n name,\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'core',\n 'api',\n ),\n { ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n };\n\n // Generate relevant core CDK construct and utilities\n generateCoreApiFile(options.constructType);\n generateCoreApiFile('utils');\n if (options.backend.type === 'trpc') {\n generateCoreApiFile('trpc');\n }\n\n // Generate app specific CDK construct\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'cdk',\n 'app',\n 'apis',\n options.constructType,\n ),\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'apis',\n ),\n { ...options, ...esmVars(tree) },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Export app specific CDK construct\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'apis',\n 'index.ts',\n ),\n `./${options.apiNameKebabCase}.js`,\n );\n await addStarExport(\n tree,\n joinPathFragments(\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n 'src',\n 'app',\n 'index.ts',\n ),\n './apis/index.js',\n );\n};\n\n/**\n * Add an API terraform module, and update the Runtime Config type to export its url\n */\nconst addApiGatewayTerraformModules = (\n tree: Tree,\n options: AddApiGatewayConstructOptions,\n) => {\n // Generate core terraform module\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'core',\n 'api',\n options.constructType,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'core', 'api'),\n { boto3Version: PY_VERSIONS.boto3, ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Generate app specific terraform module\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n 'terraform',\n 'app',\n 'apis',\n options.constructType,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'src', 'app', 'apis'),\n { ...options, ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addStarExport","esmVars","addDependencyToTargetIfNotPresent","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","PY_VERSIONS","terraformProviderVersions","addApiGatewayInfra","tree","options","iac","addApiGatewayCdkConstructs","addApiGatewayTerraformModules","Error","config","apiProjectName","generateCoreApiFile","name","dirname","overwriteStrategy","KeepExisting","constructType","backend","type","apiNameKebabCase","boto3Version","boto3"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAGjBC,UAAU,QACL,aAAa;AACpB,SAASC,aAAa,QAAQ,YAAS;AAEvC,SAASC,OAAO,QAAQ,sBAAmB;AAC3C,SAASC,iCAAiC,QAAQ,WAAQ;AAC1D,SACEC,YAAY,EACZC,qBAAqB,EACrBC,oBAAoB,QACf,oCAAiC;AACxC,SAASC,WAAW,EAAEC,yBAAyB,QAAQ,iBAAc;AAmCrE,OAAO,MAAMC,qBAAqB,OAChCC,MACAC;IAEA,IAAIA,QAAQC,GAAG,KAAK,OAAO;QACzB,MAAMC,2BAA2BH,MAAMC;IACzC,OAAO,IAAIA,QAAQC,GAAG,KAAK,aAAa;QACtCE,8BAA8BJ,MAAMC;IACtC,OAAO;QACL,MAAM,IAAII,MAAM,CAAC,gBAAgB,EAAEJ,QAAQC,GAAG,EAAE;IAClD;IAEAZ,WACEU,MACAZ,kBACEM,cACAO,QAAQC,GAAG,KAAK,QAAQP,wBAAwBC,sBAChD,iBAEF,CAACU;QACCb,kCACEa,QACA,SACA,GAAGL,QAAQM,cAAc,CAAC,MAAM,CAAC;QAEnC,OAAOD;IACT;AAEJ,EAAE;AAEF;;CAEC,GACD,MAAMH,6BAA6B,OACjCH,MACAC;IAEA,MAAMO,sBAAsB,CAACC;QAC3BtB,cACEa,MACAZ,kBACE,YAAYsB,OAAO,EACnB,SACA,OACA,QACA,OACAD,OAEFrB,kBACEM,cACAC,uBACA,OACA,QACA,QAEF;YAAE,GAAGH,QAAQQ,KAAK;QAAC,GACnB;YACEW,mBAAmBtB,kBAAkBuB,YAAY;QACnD;IAEJ;IAEA,qDAAqD;IACrDJ,oBAAoBP,QAAQY,aAAa;IACzCL,oBAAoB;IACpB,IAAIP,QAAQa,OAAO,CAACC,IAAI,KAAK,QAAQ;QACnCP,oBAAoB;IACtB;IAEA,sCAAsC;IACtCrB,cACEa,MACAZ,kBACE,YAAYsB,OAAO,EACnB,SACA,OACA,OACA,QACAT,QAAQY,aAAa,GAEvBzB,kBACEM,cACAC,uBACA,OACA,OACA,SAEF;QAAE,GAAGM,OAAO;QAAE,GAAGT,QAAQQ,KAAK;IAAC,GAC/B;QACEW,mBAAmBtB,kBAAkBuB,YAAY;IACnD;IAGF,oCAAoC;IACpC,MAAMrB,cACJS,MACAZ,kBACEM,cACAC,uBACA,OACA,OACA,QACA,aAEF,CAAC,EAAE,EAAEM,QAAQe,gBAAgB,CAAC,GAAG,CAAC;IAEpC,MAAMzB,cACJS,MACAZ,kBACEM,cACAC,uBACA,OACA,OACA,aAEF;AAEJ;AAEA;;CAEC,GACD,MAAMS,gCAAgC,CACpCJ,MACAC;IAEA,iCAAiC;IACjCd,cACEa,MACAZ,kBACE,YAAYsB,OAAO,EACnB,SACA,aACA,QACA,OACAT,QAAQY,aAAa,GAEvBzB,kBAAkBM,cAAcE,sBAAsB,OAAO,QAAQ,QACrE;QAAEqB,cAAcpB,YAAYqB,KAAK;QAAE,GAAGpB,2BAA2B;IAAC,GAClE;QACEa,mBAAmBtB,kBAAkBuB,YAAY;IACnD;IAGF,yCAAyC;IACzCzB,cACEa,MACAZ,kBACE,YAAYsB,OAAO,EACnB,SACA,aACA,OACA,QACAT,QAAQY,aAAa,GAEvBzB,kBAAkBM,cAAcE,sBAAsB,OAAO,OAAO,SACpE;QAAE,GAAGK,OAAO;QAAE,GAAGH,2BAA2B;IAAC,GAC7C;QACEa,mBAAmBtB,kBAAkBuB,YAAY;IACnD;AAEJ"}
@@ -13,7 +13,7 @@ import {
13
13
  <%_ } _%>
14
14
  } from 'aws-cdk-lib/aws-lambda';
15
15
  import { Duration<%_ if (backend.type === 'fastapi') { _%>, Stack<%_ } _%> } from 'aws-cdk-lib';
16
- import { RuntimeConfig } from '../../core/runtime-config.js';
16
+ import { RuntimeConfig } from '../../core/runtime-config<% if (esm) { %>.js<% } %>';
17
17
  import {
18
18
  CorsHttpMethod,
19
19
  CfnApi,
@@ -41,10 +41,10 @@ import {
41
41
  ApiIntegrations,
42
42
  HttpApiIntegration,
43
43
  IntegrationBuilder,
44
- } from '../../core/api/utils.js';
45
- import { HttpApi } from '../../core/api/http-api.js';
44
+ } from '../../core/api/utils<% if (esm) { %>.js<% } %>';
45
+ import { HttpApi } from '../../core/api/http-api<% if (esm) { %>.js<% } %>';
46
46
  <%_ if (backend.type === 'trpc') { _%>
47
- import { Procedures, routerToOperations } from '../../core/api/trpc-utils.js';
47
+ import { Procedures, routerToOperations } from '../../core/api/trpc-utils<% if (esm) { %>.js<% } %>';
48
48
  import { AppRouter, appRouter } from '<%= backend.projectAlias %>';
49
49
 
50
50
  // String union type for all API operation names
@@ -116,7 +116,7 @@ export class <%= apiNameClassName %><
116
116
  url.fileURLToPath(
117
117
  new URL(
118
118
  '../../../../../../<%- backend.bundleOutputDir %>',
119
- import.meta.url,
119
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
120
120
  ),
121
121
  ),
122
122
  ),
@@ -127,7 +127,7 @@ export class <%= apiNameClassName %><
127
127
  url.fileURLToPath(
128
128
  new URL(
129
129
  '../../../../../../<%- backend.bundleOutputDir %>',
130
- import.meta.url,
130
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
131
131
  ),
132
132
  ),
133
133
  ),
@@ -184,7 +184,7 @@ export class <%= apiNameClassName %><
184
184
  url.fileURLToPath(
185
185
  new URL(
186
186
  '../../../../../../<%- backend.authorizerBundleOutputDir %>',
187
- import.meta.url,
187
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
188
188
  ),
189
189
  ),
190
190
  ),
@@ -195,7 +195,7 @@ export class <%= apiNameClassName %><
195
195
  url.fileURLToPath(
196
196
  new URL(
197
197
  '../../../../../../<%- backend.bundleOutputDir %>',
198
- import.meta.url,
198
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
199
199
  ),
200
200
  ),
201
201
  ),
@@ -12,7 +12,7 @@ import {
12
12
  SnapStartConf,
13
13
  <%_ } _%>
14
14
  } from 'aws-cdk-lib/aws-lambda';
15
- import { RuntimeConfig } from '../../core/runtime-config.js';
15
+ import { RuntimeConfig } from '../../core/runtime-config<% if (esm) { %>.js<% } %>';
16
16
  import {
17
17
  AuthorizationType,
18
18
  LambdaIntegration,
@@ -44,10 +44,10 @@ import {
44
44
  ApiIntegrations,
45
45
  IntegrationBuilder,
46
46
  RestApiIntegration,
47
- } from '../../core/api/utils.js';
48
- import { AddCorsPreflightAspect, RestApi } from '../../core/api/rest-api.js';
47
+ } from '../../core/api/utils<% if (esm) { %>.js<% } %>';
48
+ import { AddCorsPreflightAspect, RestApi } from '../../core/api/rest-api<% if (esm) { %>.js<% } %>';
49
49
  <%_ if (backend.type === 'trpc') { _%>
50
- import { Procedures, routerToOperations } from '../../core/api/trpc-utils.js';
50
+ import { Procedures, routerToOperations } from '../../core/api/trpc-utils<% if (esm) { %>.js<% } %>';
51
51
  import { AppRouter, appRouter } from '<%= backend.projectAlias %>';
52
52
 
53
53
  // String union type for all API operation names
@@ -126,7 +126,7 @@ export class <%= apiNameClassName %><
126
126
  url.fileURLToPath(
127
127
  new URL(
128
128
  '../../../../../../<%- backend.bundleOutputDir %>',
129
- import.meta.url,
129
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
130
130
  ),
131
131
  ),
132
132
  ),
@@ -137,7 +137,7 @@ export class <%= apiNameClassName %><
137
137
  url.fileURLToPath(
138
138
  new URL(
139
139
  '../../../../../../<%- backend.bundleOutputDir %>',
140
- import.meta.url,
140
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
141
141
  ),
142
142
  ),
143
143
  ),
@@ -204,7 +204,7 @@ export class <%= apiNameClassName %><
204
204
  url.fileURLToPath(
205
205
  new URL(
206
206
  '../../../../../../<%- backend.authorizerBundleOutputDir %>',
207
- import.meta.url,
207
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
208
208
  ),
209
209
  ),
210
210
  ),
@@ -215,7 +215,7 @@ export class <%= apiNameClassName %><
215
215
  url.fileURLToPath(
216
216
  new URL(
217
217
  '../../../../../../<%- backend.bundleOutputDir %>',
218
- import.meta.url,
218
+ <% if (esm) { %>import.meta.url<% } else { %>require('url').pathToFileURL(__filename).href<% } %>,
219
219
  ),
220
220
  ),
221
221
  ),
@@ -1,10 +1,10 @@
1
1
  import { Construct } from 'constructs';
2
- import { RuntimeConfig } from '../runtime-config.js';
2
+ import { RuntimeConfig } from '../runtime-config<% if (esm) { %>.js<% } %>';
3
3
  import {
4
4
  ApiIntegrations,
5
5
  HttpApiIntegration,
6
6
  OperationDetails,
7
- } from './utils.js';
7
+ } from './utils<% if (esm) { %>.js<% } %>';
8
8
  import { CfnOutput, Stack } from 'aws-cdk-lib';
9
9
  import {
10
10
  HttpApi as _HttpApi,
@@ -17,7 +17,7 @@ import {
17
17
  import { LogGroup } from 'aws-cdk-lib/aws-logs';
18
18
  import { Key } from 'aws-cdk-lib/aws-kms';
19
19
  import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
20
- import { suppressRules } from '../checkov.js';
20
+ import { suppressRules } from '../checkov<% if (esm) { %>.js<% } %>';
21
21
 
22
22
  /**
23
23
  * Properties for creating an HttpApi construct.