@aws/nx-plugin 1.0.0-rc.57 → 1.0.0-rc.58

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 (144) hide show
  1. package/LICENSE-THIRD-PARTY +2917 -1295
  2. package/migrations.json +31 -26
  3. package/package.json +13 -13
  4. package/src/agentcore-gateway/generator.d.ts +16 -1
  5. package/src/agentcore-gateway/generator.js +3 -2
  6. package/src/agentcore-gateway/generator.js.map +1 -1
  7. package/src/agentcore-gateway/schema.json +1 -0
  8. package/src/connection/scaffold-catalog.d.ts +160 -0
  9. package/src/connection/scaffold-catalog.js +207 -0
  10. package/src/connection/scaffold-catalog.js.map +1 -0
  11. package/src/connection/schema-resolver.d.ts +5 -0
  12. package/src/connection/schema-resolver.js +27 -0
  13. package/src/connection/schema-resolver.js.map +1 -0
  14. package/src/infra/app/__snapshots__/generator.spec.ts.snap +7 -7
  15. package/src/migrations/latest/smithy-ssdk-bundle-pins/migration.js +78 -0
  16. package/src/migrations/latest/smithy-ssdk-bundle-pins/migration.js.map +1 -0
  17. package/src/migrations/v1.0.0-rc.50/modernize-function-props-cast/migration.js.map +1 -0
  18. package/src/migrations/v1.0.0-rc.50/restrict-cors-to-custom-domains/migration.js.map +1 -0
  19. package/src/migrations/v1.0.0-rc.50/terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
  20. package/src/migrations/v1.0.0-rc.52/user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
  21. package/src/migrations/v1.0.0-rc.54/order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  22. package/src/migrations/v1.0.0-rc.55/backfill-generator-metadata/migration.js.map +1 -0
  23. package/src/migrations/v1.0.0-rc.56/dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
  24. package/src/migrations/v1.0.0-rc.57/ts-agent-session-management-support/migration.d.ts +6 -0
  25. package/src/migrations/v1.0.0-rc.57/ts-agent-session-management-support/migration.js.map +1 -0
  26. package/src/preset/__snapshots__/generator.spec.ts.snap +5 -5
  27. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +8 -8
  28. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +8 -8
  29. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +2 -2
  30. package/src/py/agent/a2a-connection/generator.d.ts +1 -1
  31. package/src/py/agent/gateway-connection/generator.d.ts +1 -1
  32. package/src/py/agent/mcp-connection/generator.d.ts +1 -1
  33. package/src/py/agent/schema.json +1 -0
  34. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  35. package/src/py/dynamodb/schema.json +1 -0
  36. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
  37. package/src/py/fast-api/generator.d.ts +5 -0
  38. package/src/py/fast-api/generator.js +3 -2
  39. package/src/py/fast-api/generator.js.map +1 -1
  40. package/src/py/fast-api/schema.json +1 -0
  41. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  42. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
  43. package/src/py/mcp-server/schema.json +1 -0
  44. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2 -2
  45. package/src/py/rdb/schema.json +1 -0
  46. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +4 -4
  47. package/src/smithy/project/files/service/build.Dockerfile.template +2 -2
  48. package/src/smithy/project/generator.d.ts +25 -0
  49. package/src/smithy/project/generator.js +24 -3
  50. package/src/smithy/project/generator.js.map +1 -1
  51. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +7 -7
  52. package/src/smithy/ts/api/generator.d.ts +6 -1
  53. package/src/smithy/ts/api/generator.js +3 -2
  54. package/src/smithy/ts/api/generator.js.map +1 -1
  55. package/src/smithy/ts/api/schema.json +1 -0
  56. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
  57. package/src/trpc/backend/generator.d.ts +6 -1
  58. package/src/trpc/backend/generator.js +3 -2
  59. package/src/trpc/backend/generator.js.map +1 -1
  60. package/src/trpc/backend/schema.json +1 -0
  61. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +5 -5
  62. package/src/ts/agent/generator.d.ts +32 -1
  63. package/src/ts/agent/generator.js +7 -4
  64. package/src/ts/agent/generator.js.map +1 -1
  65. package/src/ts/agent/schema.json +1 -0
  66. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
  67. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  68. package/src/ts/dynamodb/schema.json +1 -0
  69. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  70. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  71. package/src/ts/mcp-server/generator.d.ts +32 -1
  72. package/src/ts/mcp-server/generator.js +7 -4
  73. package/src/ts/mcp-server/generator.js.map +1 -1
  74. package/src/ts/mcp-server/schema.json +1 -0
  75. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +6 -6
  76. package/src/ts/rdb/generator.d.ts +8 -0
  77. package/src/ts/rdb/generator.js +3 -2
  78. package/src/ts/rdb/generator.js.map +1 -1
  79. package/src/ts/rdb/schema.json +1 -0
  80. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +61 -45
  81. package/src/ts/react-website/app/generator.d.ts +6 -1
  82. package/src/ts/react-website/app/generator.js +3 -2
  83. package/src/ts/react-website/app/generator.js.map +1 -1
  84. package/src/ts/react-website/app/schema.json +1 -0
  85. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
  86. package/src/ts/react-website/cognito-auth/generator.d.ts +6 -1
  87. package/src/ts/react-website/cognito-auth/generator.js +3 -2
  88. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  89. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +18 -0
  90. package/src/utils/agent-core-constructs/agent-core-constructs.js +22 -1
  91. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  92. package/src/utils/api-constructs/api-constructs.d.ts +9 -0
  93. package/src/utils/api-constructs/api-constructs.js +11 -1
  94. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  95. package/src/utils/docker.d.ts +27 -2
  96. package/src/utils/docker.js +31 -2
  97. package/src/utils/docker.js.map +1 -1
  98. package/src/utils/identity-constructs/identity-constructs.d.ts +10 -0
  99. package/src/utils/identity-constructs/identity-constructs.js +11 -1
  100. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  101. package/src/utils/shared-constructs-constants.d.ts +6 -0
  102. package/src/utils/shared-constructs-constants.js +5 -0
  103. package/src/utils/shared-constructs-constants.js.map +1 -1
  104. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +26 -0
  105. package/src/utils/version-upgrade-migration/owned-dependencies.js +52 -4
  106. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -1
  107. package/src/utils/version-upgrade-migration/register.d.ts +5 -1
  108. package/src/utils/version-upgrade-migration/register.js +6 -2
  109. package/src/utils/version-upgrade-migration/register.js.map +1 -1
  110. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
  111. package/src/utils/version-upgrade-migration/sync-embedded-versions.js +304 -0
  112. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
  113. package/src/utils/version-upgrade-migration/sync-vended-versions.js +14 -0
  114. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -1
  115. package/src/utils/versions.d.ts +90 -77
  116. package/src/utils/versions.js +86 -75
  117. package/src/utils/versions.js.map +1 -1
  118. package/src/utils/website-constructs/website-constructs.d.ts +11 -0
  119. package/src/utils/website-constructs/website-constructs.js +12 -1
  120. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  121. package/src/migrations/latest/backfill-generator-metadata/migration.js.map +0 -1
  122. package/src/migrations/latest/dynamodb-local-remove-optimize-flag/migration.js.map +0 -1
  123. package/src/migrations/latest/modernize-function-props-cast/migration.js.map +0 -1
  124. package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js.map +0 -1
  125. package/src/migrations/latest/restrict-cors-to-custom-domains/migration.js.map +0 -1
  126. package/src/migrations/latest/terraform-bootstrap-adopt-existing-bucket/migration.js.map +0 -1
  127. package/src/migrations/latest/ts-agent-session-management-support/migration.js.map +0 -1
  128. package/src/migrations/latest/user-identity-waf-allow-localhost-callback/migration.js.map +0 -1
  129. /package/src/migrations/latest/{modernize-function-props-cast → smithy-ssdk-bundle-pins}/migration.d.ts +0 -0
  130. /package/src/migrations/{latest/restrict-cors-to-custom-domains → v1.0.0-rc.50/modernize-function-props-cast}/migration.d.ts +0 -0
  131. /package/src/migrations/{latest → v1.0.0-rc.50}/modernize-function-props-cast/migration.js +0 -0
  132. /package/src/migrations/{latest/terraform-bootstrap-adopt-existing-bucket → v1.0.0-rc.50/restrict-cors-to-custom-domains}/migration.d.ts +0 -0
  133. /package/src/migrations/{latest → v1.0.0-rc.50}/restrict-cors-to-custom-domains/migration.js +0 -0
  134. /package/src/migrations/{latest/ts-agent-session-management-support → v1.0.0-rc.50/terraform-bootstrap-adopt-existing-bucket}/migration.d.ts +0 -0
  135. /package/src/migrations/{latest → v1.0.0-rc.50}/terraform-bootstrap-adopt-existing-bucket/migration.js +0 -0
  136. /package/src/migrations/{latest/dynamodb-local-remove-optimize-flag → v1.0.0-rc.52/user-identity-waf-allow-localhost-callback}/migration.d.ts +0 -0
  137. /package/src/migrations/{latest → v1.0.0-rc.52}/user-identity-waf-allow-localhost-callback/migration.js +0 -0
  138. /package/src/migrations/{latest → v1.0.0-rc.54}/order-access-log-delivery-after-bucket-policy/migration.d.ts +0 -0
  139. /package/src/migrations/{latest → v1.0.0-rc.54}/order-access-log-delivery-after-bucket-policy/migration.js +0 -0
  140. /package/src/migrations/{latest → v1.0.0-rc.55}/backfill-generator-metadata/migration.d.ts +0 -0
  141. /package/src/migrations/{latest → v1.0.0-rc.55}/backfill-generator-metadata/migration.js +0 -0
  142. /package/src/migrations/{latest/user-identity-waf-allow-localhost-callback → v1.0.0-rc.56/dynamodb-local-remove-optimize-flag}/migration.d.ts +0 -0
  143. /package/src/migrations/{latest → v1.0.0-rc.56}/dynamodb-local-remove-optimize-flag/migration.js +0 -0
  144. /package/src/migrations/{latest → v1.0.0-rc.57}/ts-agent-session-management-support/migration.js +0 -0
@@ -11,7 +11,7 @@ terraform {
11
11
  required_providers {
12
12
  aws = {
13
13
  source = "hashicorp/aws"
14
- version = "6.55.0"
14
+ version = "6.57.1"
15
15
  }
16
16
  }
17
17
  }
@@ -258,7 +258,7 @@ output "api_log_group_arn" {
258
258
  required_providers {
259
259
  aws = {
260
260
  source = "hashicorp/aws"
261
- version = "6.55.0"
261
+ version = "6.57.1"
262
262
  }
263
263
  }
264
264
  }
@@ -771,7 +771,7 @@ terraform {
771
771
  required_providers {
772
772
  aws = {
773
773
  source = "hashicorp/aws"
774
- version = "6.55.0"
774
+ version = "6.57.1"
775
775
  }
776
776
  }
777
777
  }
@@ -1018,7 +1018,7 @@ output "api_log_group_arn" {
1018
1018
  required_providers {
1019
1019
  aws = {
1020
1020
  source = "hashicorp/aws"
1021
- version = "6.55.0"
1021
+ version = "6.57.1"
1022
1022
  }
1023
1023
  }
1024
1024
  }
@@ -1603,7 +1603,7 @@ terraform {
1603
1603
  required_providers {
1604
1604
  aws = {
1605
1605
  source = "hashicorp/aws"
1606
- version = "6.55.0"
1606
+ version = "6.57.1"
1607
1607
  }
1608
1608
  }
1609
1609
  }
@@ -1850,7 +1850,7 @@ output "api_log_group_arn" {
1850
1850
  required_providers {
1851
1851
  aws = {
1852
1852
  source = "hashicorp/aws"
1853
- version = "6.55.0"
1853
+ version = "6.57.1"
1854
1854
  }
1855
1855
  }
1856
1856
  }
@@ -2340,7 +2340,7 @@ terraform {
2340
2340
  required_providers {
2341
2341
  aws = {
2342
2342
  source = "hashicorp/aws"
2343
- version = "6.55.0"
2343
+ version = "6.57.1"
2344
2344
  }
2345
2345
  random = {
2346
2346
  source = "hashicorp/random"
@@ -2596,7 +2596,7 @@ output "waf_web_acl_arn" {
2596
2596
  required_providers {
2597
2597
  aws = {
2598
2598
  source = "hashicorp/aws"
2599
- version = "6.55.0"
2599
+ version = "6.57.1"
2600
2600
  }
2601
2601
  }
2602
2602
  }
@@ -3346,7 +3346,7 @@ terraform {
3346
3346
  required_providers {
3347
3347
  aws = {
3348
3348
  source = "hashicorp/aws"
3349
- version = "6.55.0"
3349
+ version = "6.57.1"
3350
3350
  }
3351
3351
  random = {
3352
3352
  source = "hashicorp/random"
@@ -3602,7 +3602,7 @@ output "waf_web_acl_arn" {
3602
3602
  required_providers {
3603
3603
  aws = {
3604
3604
  source = "hashicorp/aws"
3605
- version = "6.55.0"
3605
+ version = "6.57.1"
3606
3606
  }
3607
3607
  }
3608
3608
  }
@@ -4341,7 +4341,7 @@ terraform {
4341
4341
  required_providers {
4342
4342
  aws = {
4343
4343
  source = "hashicorp/aws"
4344
- version = "6.55.0"
4344
+ version = "6.57.1"
4345
4345
  }
4346
4346
  random = {
4347
4347
  source = "hashicorp/random"
@@ -4597,7 +4597,7 @@ output "waf_web_acl_arn" {
4597
4597
  required_providers {
4598
4598
  aws = {
4599
4599
  source = "hashicorp/aws"
4600
- version = "6.55.0"
4600
+ version = "6.57.1"
4601
4601
  }
4602
4602
  }
4603
4603
  }
@@ -67,6 +67,11 @@ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").D
67
67
  }, {
68
68
  readonly name: "fastapi[standard]";
69
69
  readonly group: "dev";
70
+ }, {
71
+ readonly name: "boto3";
72
+ readonly when: (m: IacMetadata) => boolean;
73
+ } & {
74
+ versionOnly: true;
70
75
  }]>;
71
76
  export declare const FAST_API_GENERATOR_INFO: NxGeneratorInfo;
72
77
  /**
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, readProjectConfiguration, updateProjectConfiguration } from "@nx/devkit";
5
5
  import { addPyDependencies } from "../../utils/add-dependencies.js";
6
- import { API_CONSTRUCTS_DEPENDENCIES, addApiGatewayInfra } from "../../utils/api-constructs/api-constructs.js";
6
+ import { API_CONSTRUCTS_DEPENDENCIES, API_CONSTRUCTS_PY_DEPENDENCIES, addApiGatewayInfra } from "../../utils/api-constructs/api-constructs.js";
7
7
  import { addSharedConstructsOpenApiMetadataGenerateTarget } from "../../utils/api-constructs/open-api-metadata.js";
8
8
  import { addPythonBundleTarget } from "../../utils/bundle/bundle.js";
9
9
  import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
@@ -47,7 +47,8 @@ export const DEPENDENCIES = declareDependencies()({
47
47
  {
48
48
  name: 'fastapi[standard]',
49
49
  group: 'dev'
50
- }
50
+ },
51
+ ...ownedElsewhere(API_CONSTRUCTS_PY_DEPENDENCIES)
51
52
  ]
52
53
  });
53
54
  export const FAST_API_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/fast-api/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPyDependencies } from '../../utils/add-dependencies';\nimport {\n API_CONSTRUCTS_DEPENDENCIES,\n addApiGatewayInfra,\n} from '../../utils/api-constructs/api-constructs';\nimport { addSharedConstructsOpenApiMetadataGenerateTarget } from '../../utils/api-constructs/open-api-metadata';\nimport { addPythonBundleTarget } from '../../utils/bundle/bundle';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx';\nimport { sortObjectKeys } from '../../utils/object';\nimport { assignPort } from '../../utils/port';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs';\nimport type { IacMetadata } from '../../utils/shared-constructs-constants';\nimport pyProjectGenerator, { getPyProjectDetails } from '../project/generator';\nimport { addOpenApiGeneration } from './react/open-api';\nimport type { PyFastApiProjectGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface PyFastApiMetadata extends IacMetadata {\n readonly apiName: string;\n readonly apiType: string;\n readonly auth: PyFastApiProjectGeneratorSchema['auth'];\n}\n\nexport const DEPENDENCIES = declareDependencies<PyFastApiMetadata>()({\n ts: [\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),\n ],\n py: [\n { name: 'fastapi' },\n { name: 'uvicorn' },\n { name: 'aws-lambda-powertools' },\n { name: 'aws-lambda-powertools[tracer]' },\n // The custom authorizer handler parses its event with the parser extra.\n {\n name: 'aws-lambda-powertools[parser]',\n when: (m) => m.auth === 'custom',\n },\n // `fastapi dev` runs the local server.\n { name: 'fastapi[standard]', group: 'dev' },\n ],\n});\n\nexport const FAST_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\n/**\n * Generates a Python FastAPI project\n */\nexport const pyFastApiProjectGenerator = async (\n tree: Tree,\n schema: PyFastApiProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const integrationPattern = getIntegrationPattern(schema);\n\n const { dir, normalizedModuleName, fullyQualifiedName } = getPyProjectDetails(\n tree,\n {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: schema.moduleName,\n },\n );\n const apiNameKebabCase = toKebabCase(schema.name);\n const apiNameClassName = toClassName(schema.name);\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await pyProjectGenerator(tree, {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: normalizedModuleName,\n type: 'application',\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n const port = assignPort(tree, projectConfig, 8000);\n\n const { bundleOutputDir, bundleTargetName } =\n addPythonBundleTarget(projectConfig);\n\n // Add a command to copy run.sh to the bundle output for Lambda Web Adapter\n const fs = new FsCommands(tree, DEPENDENCIES);\n const bundleTarget = projectConfig.targets[bundleTargetName];\n const copyRunShCommand = fs.cp(\n `{projectRoot}/run.sh`,\n `dist/{projectRoot}/${bundleTargetName}/run.sh`,\n );\n if (!bundleTarget.options.commands.includes(copyRunShCommand)) {\n bundleTarget.options.commands = [\n ...bundleTarget.options.commands,\n copyRunShCommand,\n ];\n }\n\n projectConfig.targets.serve = {\n executor: '@nxlv/python:run-commands',\n continuous: true,\n options: {\n command: `uv run fastapi dev ${normalizedModuleName}/main.py --port ${port}`,\n cwd: '{projectRoot}',\n },\n };\n\n projectConfig.targets['dev'] = {\n ...projectConfig.targets['dev'],\n ...projectConfig.targets.serve,\n options: {\n ...projectConfig.targets.serve.options,\n env: {\n LOCAL_DEV: 'true',\n },\n },\n };\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n schema.infra !== 'none' ? await resolveIac(tree, schema.iac) : undefined;\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const metadata: PyFastApiMetadata = {\n apiName: schema.name,\n apiType: 'fast-api',\n auth: schema.auth,\n ...(iac ? { iac } : {}),\n };\n\n projectConfig.metadata = {\n ...projectConfig.metadata,\n ...metadata,\n } as any;\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n\n // Add OpenAPI spec generation to the project, run as part of build\n const { specPath } = addOpenApiGeneration(tree, { project: projectConfig });\n\n [\n joinPathFragments(dir, normalizedModuleName, 'hello.py'),\n joinPathFragments(dir, 'tests', 'test_hello.py'),\n ].forEach((f) => tree.delete(f));\n\n // User-owned source files: preserve any existing copies so re-running does\n // not clobber user edits (and does not reformat them nondeterministically).\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, 'files', 'app'), // path to the file templates\n dir, // destination path of the files\n {\n name: normalizedModuleName,\n apiNameClassName,\n infra: schema.infra,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (schema.infra !== 'none') {\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n if (schema.auth === 'custom') {\n const authorizerType = schema.infra === 'http-lambda' ? 'http' : 'rest';\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n 'utils',\n 'api-constructs',\n 'files',\n 'py-authorizer',\n authorizerType,\n ),\n joinPathFragments(dir, normalizedModuleName),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n // Add the CDK construct to deploy the FastAPI to shared constructs\n await addApiGatewayInfra(\n tree,\n {\n apiProjectName: projectConfig.name,\n apiNameClassName,\n apiNameKebabCase,\n constructType: schema.infra === 'http-lambda' ? 'http' : 'rest',\n backend: {\n type: 'fastapi',\n moduleName: normalizedModuleName,\n bundleOutputDir,\n integrationPattern,\n },\n auth: schema.auth,\n iac,\n },\n DEPENDENCIES,\n );\n\n addSharedConstructsOpenApiMetadataGenerateTarget(tree, {\n iac,\n apiNameKebabCase,\n specPath,\n specBuildTargetName: `${projectConfig.name}:openapi`,\n });\n }\n\n addPyDependencies(tree, DEPENDENCIES, { metadata, projectRoot: dir });\n\n addGeneratorMetadata(tree, fullyQualifiedName, FAST_API_GENERATOR_INFO);\n\n await addGeneratorMetricsIfApplicable(tree, [FAST_API_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nconst getIntegrationPattern = (\n schema: PyFastApiProjectGeneratorSchema,\n): 'isolated' | 'shared' => schema.integrationPattern ?? 'isolated';\n\nexport default pyFastApiProjectGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","readProjectConfiguration","updateProjectConfiguration","addPyDependencies","API_CONSTRUCTS_DEPENDENCIES","addApiGatewayInfra","addSharedConstructsOpenApiMetadataGenerateTarget","addPythonBundleTarget","declareDependencies","ownedElsewhere","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","addGeneratorMetadata","getGeneratorInfo","sortObjectKeys","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","pyProjectGenerator","getPyProjectDetails","addOpenApiGeneration","DEPENDENCIES","ts","py","name","when","m","auth","group","FAST_API_GENERATOR_INFO","filename","pyFastApiProjectGenerator","tree","schema","integrationPattern","getIntegrationPattern","dir","normalizedModuleName","fullyQualifiedName","directory","subDirectory","moduleName","apiNameKebabCase","apiNameClassName","projectExists","type","preferInstallDependencies","projectConfig","port","bundleOutputDir","bundleTargetName","fs","bundleTarget","targets","copyRunShCommand","cp","options","commands","includes","serve","executor","continuous","command","cwd","env","LOCAL_DEV","iac","infra","undefined","metadata","apiName","apiType","specPath","project","forEach","f","delete","dirname","overwriteStrategy","KeepExisting","authorizerType","apiProjectName","constructType","backend","specBuildTargetName","projectRoot","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/fast-api/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPyDependencies } from '../../utils/add-dependencies';\nimport {\n API_CONSTRUCTS_DEPENDENCIES,\n API_CONSTRUCTS_PY_DEPENDENCIES,\n addApiGatewayInfra,\n} from '../../utils/api-constructs/api-constructs';\nimport { addSharedConstructsOpenApiMetadataGenerateTarget } from '../../utils/api-constructs/open-api-metadata';\nimport { addPythonBundleTarget } from '../../utils/bundle/bundle';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx';\nimport { sortObjectKeys } from '../../utils/object';\nimport { assignPort } from '../../utils/port';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs';\nimport type { IacMetadata } from '../../utils/shared-constructs-constants';\nimport pyProjectGenerator, { getPyProjectDetails } from '../project/generator';\nimport { addOpenApiGeneration } from './react/open-api';\nimport type { PyFastApiProjectGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface PyFastApiMetadata extends IacMetadata {\n readonly apiName: string;\n readonly apiType: string;\n readonly auth: PyFastApiProjectGeneratorSchema['auth'];\n}\n\nexport const DEPENDENCIES = declareDependencies<PyFastApiMetadata>()({\n ts: [\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),\n ],\n py: [\n { name: 'fastapi' },\n { name: 'uvicorn' },\n { name: 'aws-lambda-powertools' },\n { name: 'aws-lambda-powertools[tracer]' },\n // The custom authorizer handler parses its event with the parser extra.\n {\n name: 'aws-lambda-powertools[parser]',\n when: (m) => m.auth === 'custom',\n },\n // `fastapi dev` runs the local server.\n { name: 'fastapi[standard]', group: 'dev' },\n ...ownedElsewhere(API_CONSTRUCTS_PY_DEPENDENCIES),\n ],\n});\n\nexport const FAST_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\n/**\n * Generates a Python FastAPI project\n */\nexport const pyFastApiProjectGenerator = async (\n tree: Tree,\n schema: PyFastApiProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const integrationPattern = getIntegrationPattern(schema);\n\n const { dir, normalizedModuleName, fullyQualifiedName } = getPyProjectDetails(\n tree,\n {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: schema.moduleName,\n },\n );\n const apiNameKebabCase = toKebabCase(schema.name);\n const apiNameClassName = toClassName(schema.name);\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await pyProjectGenerator(tree, {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: normalizedModuleName,\n type: 'application',\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n const port = assignPort(tree, projectConfig, 8000);\n\n const { bundleOutputDir, bundleTargetName } =\n addPythonBundleTarget(projectConfig);\n\n // Add a command to copy run.sh to the bundle output for Lambda Web Adapter\n const fs = new FsCommands(tree, DEPENDENCIES);\n const bundleTarget = projectConfig.targets[bundleTargetName];\n const copyRunShCommand = fs.cp(\n `{projectRoot}/run.sh`,\n `dist/{projectRoot}/${bundleTargetName}/run.sh`,\n );\n if (!bundleTarget.options.commands.includes(copyRunShCommand)) {\n bundleTarget.options.commands = [\n ...bundleTarget.options.commands,\n copyRunShCommand,\n ];\n }\n\n projectConfig.targets.serve = {\n executor: '@nxlv/python:run-commands',\n continuous: true,\n options: {\n command: `uv run fastapi dev ${normalizedModuleName}/main.py --port ${port}`,\n cwd: '{projectRoot}',\n },\n };\n\n projectConfig.targets['dev'] = {\n ...projectConfig.targets['dev'],\n ...projectConfig.targets.serve,\n options: {\n ...projectConfig.targets.serve.options,\n env: {\n LOCAL_DEV: 'true',\n },\n },\n };\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n schema.infra !== 'none' ? await resolveIac(tree, schema.iac) : undefined;\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const metadata: PyFastApiMetadata = {\n apiName: schema.name,\n apiType: 'fast-api',\n auth: schema.auth,\n ...(iac ? { iac } : {}),\n };\n\n projectConfig.metadata = {\n ...projectConfig.metadata,\n ...metadata,\n } as any;\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n\n // Add OpenAPI spec generation to the project, run as part of build\n const { specPath } = addOpenApiGeneration(tree, { project: projectConfig });\n\n [\n joinPathFragments(dir, normalizedModuleName, 'hello.py'),\n joinPathFragments(dir, 'tests', 'test_hello.py'),\n ].forEach((f) => tree.delete(f));\n\n // User-owned source files: preserve any existing copies so re-running does\n // not clobber user edits (and does not reformat them nondeterministically).\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, 'files', 'app'), // path to the file templates\n dir, // destination path of the files\n {\n name: normalizedModuleName,\n apiNameClassName,\n infra: schema.infra,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (schema.infra !== 'none') {\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n if (schema.auth === 'custom') {\n const authorizerType = schema.infra === 'http-lambda' ? 'http' : 'rest';\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n 'utils',\n 'api-constructs',\n 'files',\n 'py-authorizer',\n authorizerType,\n ),\n joinPathFragments(dir, normalizedModuleName),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n // Add the CDK construct to deploy the FastAPI to shared constructs\n await addApiGatewayInfra(\n tree,\n {\n apiProjectName: projectConfig.name,\n apiNameClassName,\n apiNameKebabCase,\n constructType: schema.infra === 'http-lambda' ? 'http' : 'rest',\n backend: {\n type: 'fastapi',\n moduleName: normalizedModuleName,\n bundleOutputDir,\n integrationPattern,\n },\n auth: schema.auth,\n iac,\n },\n DEPENDENCIES,\n );\n\n addSharedConstructsOpenApiMetadataGenerateTarget(tree, {\n iac,\n apiNameKebabCase,\n specPath,\n specBuildTargetName: `${projectConfig.name}:openapi`,\n });\n }\n\n addPyDependencies(tree, DEPENDENCIES, { metadata, projectRoot: dir });\n\n addGeneratorMetadata(tree, fullyQualifiedName, FAST_API_GENERATOR_INFO);\n\n await addGeneratorMetricsIfApplicable(tree, [FAST_API_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nconst getIntegrationPattern = (\n schema: PyFastApiProjectGeneratorSchema,\n): 'isolated' | 'shared' => schema.integrationPattern ?? 'isolated';\n\nexport default pyFastApiProjectGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","readProjectConfiguration","updateProjectConfiguration","addPyDependencies","API_CONSTRUCTS_DEPENDENCIES","API_CONSTRUCTS_PY_DEPENDENCIES","addApiGatewayInfra","addSharedConstructsOpenApiMetadataGenerateTarget","addPythonBundleTarget","declareDependencies","ownedElsewhere","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","addGeneratorMetadata","getGeneratorInfo","sortObjectKeys","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","pyProjectGenerator","getPyProjectDetails","addOpenApiGeneration","DEPENDENCIES","ts","py","name","when","m","auth","group","FAST_API_GENERATOR_INFO","filename","pyFastApiProjectGenerator","tree","schema","integrationPattern","getIntegrationPattern","dir","normalizedModuleName","fullyQualifiedName","directory","subDirectory","moduleName","apiNameKebabCase","apiNameClassName","projectExists","type","preferInstallDependencies","projectConfig","port","bundleOutputDir","bundleTargetName","fs","bundleTarget","targets","copyRunShCommand","cp","options","commands","includes","serve","executor","continuous","command","cwd","env","LOCAL_DEV","iac","infra","undefined","metadata","apiName","apiType","specPath","project","forEach","f","delete","dirname","overwriteStrategy","KeepExisting","authorizerType","apiProjectName","constructType","backend","specBuildTargetName","projectRoot","languages"],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "PyFastApi",
4
4
  "title": "Create a Python FastAPI project",
5
+ "x-label": "FastAPI",
5
6
  "description": "Create a Python FastAPI project",
6
7
  "type": "object",
7
8
  "properties": {
@@ -70,7 +70,7 @@ exports[`lambda-handler project generator > terraform iac > should generate terr
70
70
  required_providers {
71
71
  aws = {
72
72
  source = "hashicorp/aws"
73
- version = "6.55.0"
73
+ version = "6.57.1"
74
74
  }
75
75
  archive = {
76
76
  source = "hashicorp/archive"
@@ -251,7 +251,7 @@ exports[`lambda-handler project generator > terraform iac > should match snapsho
251
251
  required_providers {
252
252
  aws = {
253
253
  source = "hashicorp/aws"
254
- version = "6.55.0"
254
+ version = "6.57.1"
255
255
  }
256
256
  archive = {
257
257
  source = "hashicorp/archive"
@@ -155,7 +155,7 @@ exports[`py#mcp-server generator > should match snapshot for Terraform generated
155
155
  required_providers {
156
156
  aws = {
157
157
  source = "hashicorp/aws"
158
- version = "6.55.0"
158
+ version = "6.57.1"
159
159
  }
160
160
  null = {
161
161
  source = "hashicorp/null"
@@ -563,7 +563,7 @@ resource "null_resource" "runtime_ready" {
563
563
 
564
564
  provisioner "local-exec" {
565
565
  command = <<-EOT
566
- uv run --with boto3==1.43.51 python -c "
566
+ uv run --with boto3==1.43.63 python -c "
567
567
  import boto3
568
568
  import json
569
569
  import os
@@ -840,9 +840,9 @@ version = "0.1.0"
840
840
  dependencies = [
841
841
  "aws-lambda-powertools==3.31.1",
842
842
  "mcp==1.28.1",
843
- "uvicorn==0.51.0",
844
- "boto3==1.43.51",
845
- "aws-opentelemetry-distro==0.18.0"
843
+ "uvicorn==0.52.1",
844
+ "boto3==1.43.63",
845
+ "aws-opentelemetry-distro==0.19.0"
846
846
  ]
847
847
 
848
848
  [dependency-groups]
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "py#mcp-server",
4
4
  "title": "py#mcp-server",
5
+ "x-label": "MCP Server",
5
6
  "description": "Generate a Python Model Context Protocol (MCP) server for providing context to Large Language Models",
6
7
  "type": "object",
7
8
  "properties": {
@@ -214,7 +214,7 @@ exports[`py#rdb generator > should generate Terraform modules 1`] = `
214
214
  }
215
215
  aws = {
216
216
  source = "hashicorp/aws"
217
- version = "6.55.0"
217
+ version = "6.57.1"
218
218
  }
219
219
  null = {
220
220
  source = "hashicorp/null"
@@ -1501,7 +1501,7 @@ dependencies = [
1501
1501
  "alembic==1.18.5",
1502
1502
  "greenlet==3.5.4",
1503
1503
  "asyncpg==0.31.0",
1504
- "boto3==1.43.51",
1504
+ "boto3==1.43.63",
1505
1505
  "aws-lambda-powertools==3.31.1"
1506
1506
  ]
1507
1507
 
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "py#rdb",
4
4
  "title": "py#rdb",
5
+ "x-label": "Relational Database",
5
6
  "description": "Create a Python relational database project",
6
7
  "type": "object",
7
8
  "properties": {
@@ -256,7 +256,7 @@ RUN smithy-install/smithy/install
256
256
 
257
257
  # Add node dependencies for bundling
258
258
  WORKDIR /project
259
- RUN npm i -g pnpm@11.1.1 rolldown@1.0.0-beta.38
259
+ RUN npm i -g pnpm@11.1.1 rolldown@1.2.2
260
260
 
261
261
  # Copy project files
262
262
  COPY smithy-build.json .
@@ -278,7 +278,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
278
278
 
279
279
  # Install rolldown plugins with pnpm cache mount
280
280
  RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
281
- pnpm add -D rolldown-plugin-dts@0.16.5 @rollup/plugin-esm-shim@0.1.8
281
+ pnpm add -D rolldown-plugin-dts@0.28.0 @rollup/plugin-esm-shim@0.1.8
282
282
 
283
283
  RUN cat <<EOF > rolldown.config.js
284
284
  import { dts } from 'rolldown-plugin-dts';
@@ -500,7 +500,7 @@ RUN smithy-install/smithy/install
500
500
 
501
501
  # Add node dependencies for bundling
502
502
  WORKDIR /project
503
- RUN npm i -g pnpm@11.1.1 rolldown@1.0.0-beta.38
503
+ RUN npm i -g pnpm@11.1.1 rolldown@1.2.2
504
504
 
505
505
  # Copy project files
506
506
  COPY smithy-build.json .
@@ -522,7 +522,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
522
522
 
523
523
  # Install rolldown plugins with pnpm cache mount
524
524
  RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
525
- pnpm add -D rolldown-plugin-dts@0.16.5 @rollup/plugin-esm-shim@0.1.8
525
+ pnpm add -D rolldown-plugin-dts@0.28.0 @rollup/plugin-esm-shim@0.1.8
526
526
 
527
527
  RUN cat <<EOF > rolldown.config.js
528
528
  import { dts } from 'rolldown-plugin-dts';
@@ -17,7 +17,7 @@ RUN smithy-install/smithy/install
17
17
 
18
18
  # Add node dependencies for bundling
19
19
  WORKDIR /project
20
- RUN npm i -g pnpm@11.1.1 rolldown@1.0.0-beta.38
20
+ RUN npm i -g pnpm@11.1.1 rolldown@<%- rolldownVersion %>
21
21
 
22
22
  # Copy project files
23
23
  COPY smithy-build.json .
@@ -39,7 +39,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \
39
39
 
40
40
  # Install rolldown plugins with pnpm cache mount
41
41
  RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \
42
- pnpm add -D rolldown-plugin-dts@0.16.5 @rollup/plugin-esm-shim@0.1.8
42
+ pnpm add -D rolldown-plugin-dts@<%- rolldownDtsVersion %> @rollup/plugin-esm-shim@<%- esmShimVersion %>
43
43
 
44
44
  RUN cat <<EOF > rolldown.config.js
45
45
  import { dts } from 'rolldown-plugin-dts';
@@ -5,12 +5,37 @@
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../utils/nx';
7
7
  import type { SmithyProjectGeneratorSchema } from './schema';
8
+ /**
9
+ * Packages `build.Dockerfile` installs into the build image to bundle the Smithy
10
+ * SSDK. Pinned in the file body rather than declared in a manifest, so declaring
11
+ * them here — never installed into the workspace — is what keeps the version sync
12
+ * moving them forward.
13
+ */
14
+ export declare const SSDK_BUNDLE_DEPENDENCIES: readonly [{
15
+ readonly name: "rolldown";
16
+ }, {
17
+ readonly name: "rolldown-plugin-dts";
18
+ }, {
19
+ readonly name: "@rollup/plugin-esm-shim";
20
+ }];
8
21
  export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
9
22
  readonly name: "ncp";
10
23
  }, {
11
24
  readonly name: "rimraf";
12
25
  }, {
13
26
  readonly name: "make-dir-cli";
27
+ }, {
28
+ readonly name: "rolldown";
29
+ } & {
30
+ versionOnly: true;
31
+ }, {
32
+ readonly name: "rolldown-plugin-dts";
33
+ } & {
34
+ versionOnly: true;
35
+ }, {
36
+ readonly name: "@rollup/plugin-esm-shim";
37
+ } & {
38
+ versionOnly: true;
14
39
  }], readonly import("../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", Record<string, never>>[]>;
15
40
  export declare const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo;
16
41
  export declare const smithyProjectGenerator: (tree: Tree, options: SmithyProjectGeneratorSchema) => Promise<GeneratorCallback>;
@@ -4,7 +4,7 @@
4
4
  */ import { addProjectConfiguration, generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
5
5
  import { getTsLibDetails } from "../../ts/lib/generator.js";
6
6
  import { resolveContainers } from "../../utils/containers.js";
7
- import { declareDependencies } from "../../utils/declared-dependencies.js";
7
+ import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
8
8
  import { formatFilesInSubtree } from "../../utils/format.js";
9
9
  import { FS_DEPENDENCIES, FsCommands } from "../../utils/fs.js";
10
10
  import { installDependencies } from "../../utils/install.js";
@@ -12,9 +12,27 @@ import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
12
12
  import { toClassName, toKebabCase } from "../../utils/names.js";
13
13
  import { getNpmScope } from "../../utils/npm-scope.js";
14
14
  import { addGeneratorMetadata, getGeneratorInfo, projectExists } from "../../utils/nx.js";
15
+ import { TS_VERSIONS } from "../../utils/versions.js";
16
+ /**
17
+ * Packages `build.Dockerfile` installs into the build image to bundle the Smithy
18
+ * SSDK. Pinned in the file body rather than declared in a manifest, so declaring
19
+ * them here — never installed into the workspace — is what keeps the version sync
20
+ * moving them forward.
21
+ */ export const SSDK_BUNDLE_DEPENDENCIES = [
22
+ {
23
+ name: 'rolldown'
24
+ },
25
+ {
26
+ name: 'rolldown-plugin-dts'
27
+ },
28
+ {
29
+ name: '@rollup/plugin-esm-shim'
30
+ }
31
+ ];
15
32
  export const DEPENDENCIES = declareDependencies()({
16
33
  ts: [
17
- ...FS_DEPENDENCIES
34
+ ...FS_DEPENDENCIES,
35
+ ...ownedElsewhere(SSDK_BUNDLE_DEPENDENCIES)
18
36
  ]
19
37
  });
20
38
  export const SMITHY_PROJECT_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
@@ -67,7 +85,10 @@ export const smithyProjectGenerator = async (tree, options)=>{
67
85
  namespace,
68
86
  serviceNameClassName,
69
87
  serviceNameKebabCase,
70
- scope
88
+ scope,
89
+ rolldownVersion: TS_VERSIONS.rolldown,
90
+ rolldownDtsVersion: TS_VERSIONS['rolldown-plugin-dts'],
91
+ esmShimVersion: TS_VERSIONS['@rollup/plugin-esm-shim']
71
92
  }, {
72
93
  // Smithy models are user-owned — a re-run must not discard edits
73
94
  overwriteStrategy: OverwriteStrategy.KeepExisting
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/smithy/project/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addProjectConfiguration,\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { getTsLibDetails } from '../../ts/lib/generator';\nimport { resolveContainers } from '../../utils/containers';\nimport { declareDependencies } from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport type { SmithyProjectGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [...FS_DEPENDENCIES],\n});\n\nexport const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const smithyProjectGenerator = async (\n tree: Tree,\n options: SmithyProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const cmd = new FsCommands(tree, DEPENDENCIES);\n const containers = await resolveContainers(tree, 'inherit');\n const type = options.type ?? 'service';\n\n // Create project.json\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, options);\n\n if (!projectExists(tree, fullyQualifiedName)) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'library',\n targets: {\n build: {\n dependsOn: ['compile'],\n },\n compile: {\n cache: true,\n outputs: ['{workspaceRoot}/dist/{projectRoot}/build'],\n executor: 'nx:run-commands',\n options: {\n commands: [\n cmd.rm('dist/{projectRoot}/build'),\n cmd.mkdir('dist/{projectRoot}/build'),\n // The workspace build context lets a project's Dockerfile copy in\n // the built models of shape libraries it depends on. Commands run\n // from the workspace root, so it is the current directory.\n `${containers} build -f {projectRoot}/build.Dockerfile --build-context workspace=. --target export --output type=local,dest=dist/{projectRoot}/build {projectRoot}`,\n ],\n parallel: false,\n cwd: '{workspaceRoot}',\n },\n },\n },\n });\n }\n\n const serviceName = options.serviceName ?? options.name;\n const serviceNameClassName = toClassName(serviceName);\n const serviceNameKebabCase = toKebabCase(serviceName);\n const scope = getNpmScope(tree);\n const namespace = options.namespace ?? toKebabCase(scope).replace(/-/g, '.');\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', type),\n dir,\n {\n namespace,\n serviceNameClassName,\n serviceNameKebabCase,\n scope,\n },\n {\n // Smithy models are user-owned — a re-run must not discard edits\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n SMITHY_PROJECT_GENERATOR_INFO,\n {\n smithyType: type,\n namespace,\n ...(type === 'service' ? { apiName: options.name } : {}),\n },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [SMITHY_PROJECT_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default smithyProjectGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","getTsLibDetails","resolveContainers","declareDependencies","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","getNpmScope","addGeneratorMetadata","getGeneratorInfo","projectExists","DEPENDENCIES","ts","SMITHY_PROJECT_GENERATOR_INFO","filename","smithyProjectGenerator","tree","options","cmd","containers","type","fullyQualifiedName","dir","name","root","sourceRoot","projectType","targets","build","dependsOn","compile","cache","outputs","executor","commands","rm","mkdir","parallel","cwd","serviceName","serviceNameClassName","serviceNameKebabCase","scope","namespace","replace","dirname","overwriteStrategy","KeepExisting","smithyType","apiName","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SACEA,uBAAuB,EAEvBC,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AACpB,SAASC,eAAe,QAAQ,4BAAyB;AACzD,SAASC,iBAAiB,QAAQ,4BAAyB;AAC3D,SAASC,mBAAmB,QAAQ,uCAAoC;AACxE,SAASC,oBAAoB,QAAQ,wBAAqB;AAC1D,SAASC,eAAe,EAAEC,UAAU,QAAQ,oBAAiB;AAC7D,SAASC,mBAAmB,QAAQ,yBAAsB;AAC1D,SAASC,+BAA+B,QAAQ,yBAAsB;AACtE,SAASC,WAAW,EAAEC,WAAW,QAAQ,uBAAoB;AAC7D,SAASC,WAAW,QAAQ,2BAAwB;AACpD,SACEC,oBAAoB,EACpBC,gBAAgB,EAEhBC,aAAa,QACR,oBAAiB;AAGxB,OAAO,MAAMC,eAAeZ,sBAAsB;IAChDa,IAAI;WAAIX;KAAgB;AAC1B,GAAG;AAEH,OAAO,MAAMY,gCAAiDJ,iBAC5D,YAAYK,QAAQ,EACpB;AAEF,OAAO,MAAMC,yBAAyB,OACpCC,MACAC;IAEA,MAAMC,MAAM,IAAIhB,WAAWc,MAAML;IACjC,MAAMQ,aAAa,MAAMrB,kBAAkBkB,MAAM;IACjD,MAAMI,OAAOH,QAAQG,IAAI,IAAI;IAE7B,sBAAsB;IACtB,MAAM,EAAEC,kBAAkB,EAAEC,GAAG,EAAE,GAAGzB,gBAAgBmB,MAAMC;IAE1D,IAAI,CAACP,cAAcM,MAAMK,qBAAqB;QAC5C5B,wBAAwBuB,MAAMK,oBAAoB;YAChDE,MAAMF;YACNG,MAAMF;YACNG,YAAY9B,kBAAkB2B,KAAK;YACnCI,aAAa;YACbC,SAAS;gBACPC,OAAO;oBACLC,WAAW;wBAAC;qBAAU;gBACxB;gBACAC,SAAS;oBACPC,OAAO;oBACPC,SAAS;wBAAC;qBAA2C;oBACrDC,UAAU;oBACVhB,SAAS;wBACPiB,UAAU;4BACRhB,IAAIiB,EAAE,CAAC;4BACPjB,IAAIkB,KAAK,CAAC;4BACV,kEAAkE;4BAClE,kEAAkE;4BAClE,2DAA2D;4BAC3D,GAAGjB,WAAW,oJAAoJ,CAAC;yBACpK;wBACDkB,UAAU;wBACVC,KAAK;oBACP;gBACF;YACF;QACF;IACF;IAEA,MAAMC,cAActB,QAAQsB,WAAW,IAAItB,QAAQM,IAAI;IACvD,MAAMiB,uBAAuBnC,YAAYkC;IACzC,MAAME,uBAAuBnC,YAAYiC;IACzC,MAAMG,QAAQnC,YAAYS;IAC1B,MAAM2B,YAAY1B,QAAQ0B,SAAS,IAAIrC,YAAYoC,OAAOE,OAAO,CAAC,MAAM;IAExElD,cACEsB,MACArB,kBAAkB,YAAYkD,OAAO,EAAE,SAASzB,OAChDE,KACA;QACEqB;QACAH;QACAC;QACAC;IACF,GACA;QACE,iEAAiE;QACjEI,mBAAmBlD,kBAAkBmD,YAAY;IACnD;IAGFvC,qBACEQ,MACAK,oBACAR,+BACA;QACEmC,YAAY5B;QACZuB;QACA,GAAIvB,SAAS,YAAY;YAAE6B,SAAShC,QAAQM,IAAI;QAAC,IAAI,CAAC,CAAC;IACzD;IAGF,MAAMnB,gCAAgCY,MAAM;QAACH;KAA8B;IAE3E,MAAMb,qBAAqBgB;IAC3B,OAAO,IACLb,oBAAoBa,MAAMC,QAAQiC,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;aAAa;QAC3B;AACJ,EAAE;AAEF,eAAepC,uBAAuB"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/smithy/project/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addProjectConfiguration,\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { getTsLibDetails } from '../../ts/lib/generator';\nimport { resolveContainers } from '../../utils/containers';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport { type ITsDepVersion, TS_VERSIONS } from '../../utils/versions';\nimport type { SmithyProjectGeneratorSchema } from './schema';\n\n/**\n * Packages `build.Dockerfile` installs into the build image to bundle the Smithy\n * SSDK. Pinned in the file body rather than declared in a manifest, so declaring\n * them here — never installed into the workspace — is what keeps the version sync\n * moving them forward.\n */\nexport const SSDK_BUNDLE_DEPENDENCIES = [\n { name: 'rolldown' },\n { name: 'rolldown-plugin-dts' },\n { name: '@rollup/plugin-esm-shim' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [...FS_DEPENDENCIES, ...ownedElsewhere(SSDK_BUNDLE_DEPENDENCIES)],\n});\n\nexport const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const smithyProjectGenerator = async (\n tree: Tree,\n options: SmithyProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const cmd = new FsCommands(tree, DEPENDENCIES);\n const containers = await resolveContainers(tree, 'inherit');\n const type = options.type ?? 'service';\n\n // Create project.json\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, options);\n\n if (!projectExists(tree, fullyQualifiedName)) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'library',\n targets: {\n build: {\n dependsOn: ['compile'],\n },\n compile: {\n cache: true,\n outputs: ['{workspaceRoot}/dist/{projectRoot}/build'],\n executor: 'nx:run-commands',\n options: {\n commands: [\n cmd.rm('dist/{projectRoot}/build'),\n cmd.mkdir('dist/{projectRoot}/build'),\n // The workspace build context lets a project's Dockerfile copy in\n // the built models of shape libraries it depends on. Commands run\n // from the workspace root, so it is the current directory.\n `${containers} build -f {projectRoot}/build.Dockerfile --build-context workspace=. --target export --output type=local,dest=dist/{projectRoot}/build {projectRoot}`,\n ],\n parallel: false,\n cwd: '{workspaceRoot}',\n },\n },\n },\n });\n }\n\n const serviceName = options.serviceName ?? options.name;\n const serviceNameClassName = toClassName(serviceName);\n const serviceNameKebabCase = toKebabCase(serviceName);\n const scope = getNpmScope(tree);\n const namespace = options.namespace ?? toKebabCase(scope).replace(/-/g, '.');\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', type),\n dir,\n {\n namespace,\n serviceNameClassName,\n serviceNameKebabCase,\n scope,\n rolldownVersion: TS_VERSIONS.rolldown,\n rolldownDtsVersion: TS_VERSIONS['rolldown-plugin-dts'],\n esmShimVersion: TS_VERSIONS['@rollup/plugin-esm-shim'],\n },\n {\n // Smithy models are user-owned — a re-run must not discard edits\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n SMITHY_PROJECT_GENERATOR_INFO,\n {\n smithyType: type,\n namespace,\n ...(type === 'service' ? { apiName: options.name } : {}),\n },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [SMITHY_PROJECT_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default smithyProjectGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","getTsLibDetails","resolveContainers","declareDependencies","ownedElsewhere","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","getNpmScope","addGeneratorMetadata","getGeneratorInfo","projectExists","TS_VERSIONS","SSDK_BUNDLE_DEPENDENCIES","name","DEPENDENCIES","ts","SMITHY_PROJECT_GENERATOR_INFO","filename","smithyProjectGenerator","tree","options","cmd","containers","type","fullyQualifiedName","dir","root","sourceRoot","projectType","targets","build","dependsOn","compile","cache","outputs","executor","commands","rm","mkdir","parallel","cwd","serviceName","serviceNameClassName","serviceNameKebabCase","scope","namespace","replace","dirname","rolldownVersion","rolldown","rolldownDtsVersion","esmShimVersion","overwriteStrategy","KeepExisting","smithyType","apiName","preferInstallDependencies","languages"],"mappings":"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"}
@@ -413,7 +413,7 @@ terraform {
413
413
  required_providers {
414
414
  aws = {
415
415
  source = "hashicorp/aws"
416
- version = "6.55.0"
416
+ version = "6.57.1"
417
417
  }
418
418
  random = {
419
419
  source = "hashicorp/random"
@@ -672,7 +672,7 @@ exports[`tsSmithyApiGenerator > should generate smithy ts api with Terraform pro
672
672
  required_providers {
673
673
  aws = {
674
674
  source = "hashicorp/aws"
675
- version = "6.55.0"
675
+ version = "6.57.1"
676
676
  }
677
677
  }
678
678
  }
@@ -1885,7 +1885,7 @@ terraform {
1885
1885
  required_providers {
1886
1886
  aws = {
1887
1887
  source = "hashicorp/aws"
1888
- version = "6.55.0"
1888
+ version = "6.57.1"
1889
1889
  }
1890
1890
  random = {
1891
1891
  source = "hashicorp/random"
@@ -2141,7 +2141,7 @@ output "waf_web_acl_arn" {
2141
2141
  required_providers {
2142
2142
  aws = {
2143
2143
  source = "hashicorp/aws"
2144
- version = "6.55.0"
2144
+ version = "6.57.1"
2145
2145
  }
2146
2146
  }
2147
2147
  }
@@ -2860,7 +2860,7 @@ terraform {
2860
2860
  required_providers {
2861
2861
  aws = {
2862
2862
  source = "hashicorp/aws"
2863
- version = "6.55.0"
2863
+ version = "6.57.1"
2864
2864
  }
2865
2865
  random = {
2866
2866
  source = "hashicorp/random"
@@ -3116,7 +3116,7 @@ output "waf_web_acl_arn" {
3116
3116
  required_providers {
3117
3117
  aws = {
3118
3118
  source = "hashicorp/aws"
3119
- version = "6.55.0"
3119
+ version = "6.57.1"
3120
3120
  }
3121
3121
  }
3122
3122
  }
@@ -3820,7 +3820,7 @@ exports[`tsSmithyApiGenerator > terraform iac > should generate terraform with c
3820
3820
  required_providers {
3821
3821
  aws = {
3822
3822
  source = "hashicorp/aws"
3823
- version = "6.55.0"
3823
+ version = "6.57.1"
3824
3824
  }
3825
3825
  }
3826
3826
  }
@@ -83,7 +83,12 @@ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies"
83
83
  readonly name: "@types/node";
84
84
  } & {
85
85
  versionOnly: true;
86
- }], readonly import("../../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", TsSmithyApiMetadata>[]>;
86
+ }], readonly [{
87
+ readonly name: "boto3";
88
+ readonly when: (m: IacMetadata) => boolean;
89
+ } & {
90
+ versionOnly: true;
91
+ }]>;
87
92
  export declare const TS_SMITHY_API_GENERATOR_INFO: NxGeneratorInfo;
88
93
  export declare const tsSmithyApiGenerator: (tree: Tree, options: TsSmithyApiGeneratorSchema) => Promise<GeneratorCallback>;
89
94
  export default tsSmithyApiGenerator;
@@ -4,7 +4,7 @@
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, updateProjectConfiguration } from "@nx/devkit";
5
5
  import tsProjectGenerator, { getTsLibDetails } from "../../../ts/lib/generator.js";
6
6
  import { addTsDependencies } from "../../../utils/add-dependencies.js";
7
- import { API_CONSTRUCTS_DEPENDENCIES, addApiGatewayInfra } from "../../../utils/api-constructs/api-constructs.js";
7
+ import { API_CONSTRUCTS_DEPENDENCIES, API_CONSTRUCTS_PY_DEPENDENCIES, addApiGatewayInfra } from "../../../utils/api-constructs/api-constructs.js";
8
8
  import { addSharedConstructsOpenApiMetadataGenerateTarget } from "../../../utils/api-constructs/open-api-metadata.js";
9
9
  import { addTypeScriptBundleTarget, BUNDLE_DEPENDENCIES } from "../../../utils/bundle/bundle.js";
10
10
  import { declareDependencies, ownedElsewhere } from "../../../utils/declared-dependencies.js";
@@ -67,7 +67,8 @@ export const DEPENDENCIES = declareDependencies()({
67
67
  ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),
68
68
  ...ownedElsewhere(BUNDLE_DEPENDENCIES),
69
69
  ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES)
70
- ]
70
+ ],
71
+ py: ownedElsewhere(API_CONSTRUCTS_PY_DEPENDENCIES)
71
72
  });
72
73
  export const TS_SMITHY_API_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
73
74
  export const tsSmithyApiGenerator = async (tree, options)=>{