@aws/nx-plugin 1.0.0-rc.10 → 1.0.0-rc.12

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 (103) hide show
  1. package/generators.json +31 -1
  2. package/package.json +1 -1
  3. package/sdk/agentcore-gateway.d.ts +6 -0
  4. package/sdk/agentcore-gateway.js +11 -0
  5. package/sdk/agentcore-gateway.js.map +1 -0
  6. package/sdk/license.d.ts +4 -4
  7. package/sdk/license.js +5 -4
  8. package/sdk/license.js.map +1 -1
  9. package/sdk/py.d.ts +6 -6
  10. package/sdk/py.js +7 -7
  11. package/sdk/py.js.map +1 -1
  12. package/sdk/ts.d.ts +18 -14
  13. package/sdk/ts.js +38 -32
  14. package/sdk/ts.js.map +1 -1
  15. package/src/agentcore-gateway/files/cedar/policies/README.md +52 -0
  16. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +11 -0
  17. package/src/agentcore-gateway/files/project/serve-local.ts.template +133 -0
  18. package/src/agentcore-gateway/generator.d.ts +25 -0
  19. package/src/agentcore-gateway/generator.js +129 -0
  20. package/src/agentcore-gateway/generator.js.map +1 -0
  21. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  22. package/src/agentcore-gateway/mcp-connection/generator.js +79 -0
  23. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  24. package/src/agentcore-gateway/mcp-connection/schema.d.ts +12 -0
  25. package/src/agentcore-gateway/mcp-connection/schema.json +26 -0
  26. package/src/agentcore-gateway/schema.d.ts +16 -0
  27. package/src/agentcore-gateway/schema.json +65 -0
  28. package/src/connection/generator.d.ts +1 -1
  29. package/src/connection/generator.js +64 -46
  30. package/src/connection/generator.js.map +1 -1
  31. package/src/mcp-server/schema-registry.d.ts +9 -3
  32. package/src/mcp-server/schema-registry.js +22 -6
  33. package/src/mcp-server/schema-registry.js.map +1 -1
  34. package/src/preset/__snapshots__/generator.spec.ts.snap +2 -0
  35. package/src/py/agent/__snapshots__/generator.spec.ts.snap +55 -2
  36. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +9 -3
  37. package/src/py/agent/a2a-connection/generator.js +1 -1
  38. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  39. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client.py.template +35 -0
  40. package/src/py/agent/gateway-connection/generator.d.ts +10 -0
  41. package/src/py/agent/gateway-connection/generator.js +106 -0
  42. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  43. package/src/py/agent/gateway-connection/schema.d.ts +12 -0
  44. package/src/py/agent/gateway-connection/schema.json +26 -0
  45. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +8 -4
  46. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +9 -3
  47. package/src/py/agent/mcp-connection/generator.js +2 -72
  48. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  49. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +7 -16
  50. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +57 -2
  51. package/src/smithy/ts/api/generator.js +1 -1
  52. package/src/smithy/ts/api/generator.js.map +1 -1
  53. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +55 -2
  54. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +10 -6
  55. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client.ts.template +30 -0
  56. package/src/ts/agent/gateway-connection/generator.d.ts +10 -0
  57. package/src/ts/agent/gateway-connection/generator.js +106 -0
  58. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  59. package/src/ts/agent/gateway-connection/schema.d.ts +12 -0
  60. package/src/ts/agent/gateway-connection/schema.json +26 -0
  61. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +9 -4
  62. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +9 -6
  63. package/src/ts/agent/mcp-connection/generator.js +1 -13
  64. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  65. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +135 -76
  66. package/src/ts/dynamodb/files/dynamodb.config.json +14 -0
  67. package/src/ts/dynamodb/files/scripts/create-local-table.ts.template +14 -7
  68. package/src/ts/dynamodb/files/src/index.ts.template +0 -1
  69. package/src/ts/dynamodb/generator.js +3 -1
  70. package/src/ts/dynamodb/generator.js.map +1 -1
  71. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  72. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +57 -2
  73. package/src/ts/nx-generator/generator.js +29 -0
  74. package/src/ts/nx-generator/generator.js.map +1 -1
  75. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +1 -16
  76. package/src/ts/react-website/agui/generator.js +0 -1
  77. package/src/ts/react-website/agui/generator.js.map +1 -1
  78. package/src/utils/agent-connection/agent-connection.d.ts +17 -0
  79. package/src/utils/agent-connection/agent-connection.js +94 -0
  80. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  81. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-client.ts.template +78 -0
  82. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +22 -32
  83. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_client.py.template +78 -0
  84. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +5 -18
  85. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +8 -0
  86. package/src/utils/agent-core-constructs/agent-core-constructs.js +54 -1
  87. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  88. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +4 -0
  89. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +37 -0
  90. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +293 -0
  91. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  92. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +242 -0
  93. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  94. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +55 -2
  95. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  96. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +1 -0
  97. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  98. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +17 -3
  99. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +11 -14
  100. package/src/utils/versions.d.ts +7 -5
  101. package/src/utils/versions.js +6 -4
  102. package/src/utils/versions.js.map +1 -1
  103. package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
package/generators.json CHANGED
@@ -3,6 +3,19 @@
3
3
  "name": "@aws/nx-plugin",
4
4
  "version": "0.0.1",
5
5
  "generators": {
6
+ "agentcore-gateway": {
7
+ "factory": "./src/agentcore-gateway/generator",
8
+ "schema": "./src/agentcore-gateway/schema.json",
9
+ "description": "Generate an AgentCore Gateway project",
10
+ "metric": "g48"
11
+ },
12
+ "agentcore-gateway#mcp-connection": {
13
+ "factory": "./src/agentcore-gateway/mcp-connection/generator",
14
+ "schema": "./src/agentcore-gateway/mcp-connection/schema.json",
15
+ "description": "Connect an AgentCore Gateway to an MCP server",
16
+ "metric": "g49",
17
+ "hidden": true
18
+ },
6
19
  "connection": {
7
20
  "factory": "./src/connection/generator",
8
21
  "schema": "./src/connection/schema.json",
@@ -23,7 +36,10 @@
23
36
  "connection/trpc-rdb",
24
37
  "connection/smithy-rdb",
25
38
  "connection/ts-mcp-server-rdb",
26
- "connection/ts-agent-rdb"
39
+ "connection/ts-agent-rdb",
40
+ "connection/ts-agent-gateway",
41
+ "connection/py-agent-gateway",
42
+ "connection/agentcore-gateway-mcp"
27
43
  ]
28
44
  },
29
45
  "license": {
@@ -279,6 +295,13 @@
279
295
  "metric": "g35",
280
296
  "hidden": true
281
297
  },
298
+ "ts#agent#gateway-connection": {
299
+ "factory": "./src/ts/agent/gateway-connection/generator",
300
+ "schema": "./src/ts/agent/gateway-connection/schema.json",
301
+ "description": "Connect a TypeScript Agent to an AgentCore Gateway",
302
+ "metric": "g50",
303
+ "hidden": true
304
+ },
282
305
  "py#agent#a2a-connection": {
283
306
  "factory": "./src/py/agent/a2a-connection/generator",
284
307
  "schema": "./src/py/agent/a2a-connection/schema.json",
@@ -286,6 +309,13 @@
286
309
  "metric": "g36",
287
310
  "hidden": true
288
311
  },
312
+ "py#agent#gateway-connection": {
313
+ "factory": "./src/py/agent/gateway-connection/generator",
314
+ "schema": "./src/py/agent/gateway-connection/schema.json",
315
+ "description": "Connect a Python Agent to an AgentCore Gateway",
316
+ "metric": "g51",
317
+ "hidden": true
318
+ },
289
319
  "ts#sync": {
290
320
  "factory": "./src/ts/sync/generator",
291
321
  "schema": "./src/ts/sync/schema.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "1.0.0-rc.10",
3
+ "version": "1.0.0-rc.12",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/awslabs/nx-plugin-for-aws.git",
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export { agentcoreGatewayGenerator } from '../src/agentcore-gateway/generator';
6
+ export type { AgentcoreGatewayGeneratorSchema } from '../src/agentcore-gateway/schema';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.agentcoreGatewayGenerator = void 0;
8
+ // AgentCore Gateway Generator
9
+ var generator_1 = require("../src/agentcore-gateway/generator");
10
+ Object.defineProperty(exports, "agentcoreGatewayGenerator", { enumerable: true, get: function () { return generator_1.agentcoreGatewayGenerator; } });
11
+ //# sourceMappingURL=agentcore-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentcore-gateway.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/agentcore-gateway.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,8BAA8B;AAC9B,gEAA+E;AAAtE,sHAAA,yBAAyB,OAAA"}
package/sdk/license.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- export { DEFAULT_LICENSE_ALLOWLIST } from '../src/license/index';
6
- export type { AllowlistEntry, DependencyCheckConfig, DependencyCheckException, } from '../src/license/index';
7
- export { npmCollector, pythonCollector } from '../src/license/index';
8
- export type { LicenseCollector, CollectedDependency, } from '../src/license/index';
5
+ export { licenseGenerator } from '../src/license/generator';
6
+ export type { AllowlistEntry, CollectedDependency, DependencyCheckConfig, DependencyCheckException, LicenseCollector, } from '../src/license/index';
7
+ export { DEFAULT_LICENSE_ALLOWLIST, npmCollector, pythonCollector, } from '../src/license/index';
8
+ export type { LicenseGeneratorSchema } from '../src/license/schema';
package/sdk/license.js CHANGED
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pythonCollector = exports.npmCollector = exports.DEFAULT_LICENSE_ALLOWLIST = void 0;
3
+ exports.pythonCollector = exports.npmCollector = exports.DEFAULT_LICENSE_ALLOWLIST = exports.licenseGenerator = void 0;
4
4
  /**
5
5
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
6
  * SPDX-License-Identifier: Apache-2.0
7
7
  */
8
+ var generator_1 = require("../src/license/generator");
9
+ Object.defineProperty(exports, "licenseGenerator", { enumerable: true, get: function () { return generator_1.licenseGenerator; } });
8
10
  var index_1 = require("../src/license/index");
9
11
  Object.defineProperty(exports, "DEFAULT_LICENSE_ALLOWLIST", { enumerable: true, get: function () { return index_1.DEFAULT_LICENSE_ALLOWLIST; } });
10
- var index_2 = require("../src/license/index");
11
- Object.defineProperty(exports, "npmCollector", { enumerable: true, get: function () { return index_2.npmCollector; } });
12
- Object.defineProperty(exports, "pythonCollector", { enumerable: true, get: function () { return index_2.pythonCollector; } });
12
+ Object.defineProperty(exports, "npmCollector", { enumerable: true, get: function () { return index_1.npmCollector; } });
13
+ Object.defineProperty(exports, "pythonCollector", { enumerable: true, get: function () { return index_1.pythonCollector; } });
13
14
  //# sourceMappingURL=license.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/license.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,8CAAiE;AAAxD,kHAAA,yBAAyB,OAAA;AAMlC,8CAAqE;AAA5D,qGAAA,YAAY,OAAA;AAAE,wGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/license.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,sDAA4D;AAAnD,6GAAA,gBAAgB,OAAA;AAQzB,8CAI8B;AAH5B,kHAAA,yBAAyB,OAAA;AACzB,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA"}
package/sdk/py.d.ts CHANGED
@@ -2,13 +2,13 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- export { pyProjectGenerator } from '../src/py/project/generator';
6
- export { PyProjectGeneratorSchema } from '../src/py/project/schema';
7
- export { pyFastApiProjectGenerator } from '../src/py/fast-api/generator';
8
- export { PyFastApiProjectGeneratorSchema } from '../src/py/fast-api/schema';
5
+ export { pyAgentGenerator } from '../src/py/agent/generator';
6
+ export { PyAgentGeneratorSchema } from '../src/py/agent/schema';
7
+ export { pyApiGenerator } from '../src/py/api/generator';
8
+ export { PyApiGeneratorSchema } from '../src/py/api/schema';
9
9
  export { pyLambdaFunctionGenerator } from '../src/py/lambda-function/generator';
10
10
  export { PyLambdaFunctionGeneratorSchema } from '../src/py/lambda-function/schema';
11
11
  export { pyMcpServerGenerator } from '../src/py/mcp-server/generator';
12
12
  export { PyMcpServerGeneratorSchema } from '../src/py/mcp-server/schema';
13
- export { pyAgentGenerator } from '../src/py/agent/generator';
14
- export { PyAgentGeneratorSchema } from '../src/py/agent/schema';
13
+ export { pyProjectGenerator } from '../src/py/project/generator';
14
+ export { PyProjectGeneratorSchema } from '../src/py/project/schema';
package/sdk/py.js CHANGED
@@ -4,15 +4,15 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.pyAgentGenerator = exports.pyMcpServerGenerator = exports.pyLambdaFunctionGenerator = exports.pyFastApiProjectGenerator = exports.pyProjectGenerator = void 0;
8
- var generator_1 = require("../src/py/project/generator");
9
- Object.defineProperty(exports, "pyProjectGenerator", { enumerable: true, get: function () { return generator_1.pyProjectGenerator; } });
10
- var generator_2 = require("../src/py/fast-api/generator");
11
- Object.defineProperty(exports, "pyFastApiProjectGenerator", { enumerable: true, get: function () { return generator_2.pyFastApiProjectGenerator; } });
7
+ exports.pyProjectGenerator = exports.pyMcpServerGenerator = exports.pyLambdaFunctionGenerator = exports.pyApiGenerator = exports.pyAgentGenerator = void 0;
8
+ var generator_1 = require("../src/py/agent/generator");
9
+ Object.defineProperty(exports, "pyAgentGenerator", { enumerable: true, get: function () { return generator_1.pyAgentGenerator; } });
10
+ var generator_2 = require("../src/py/api/generator");
11
+ Object.defineProperty(exports, "pyApiGenerator", { enumerable: true, get: function () { return generator_2.pyApiGenerator; } });
12
12
  var generator_3 = require("../src/py/lambda-function/generator");
13
13
  Object.defineProperty(exports, "pyLambdaFunctionGenerator", { enumerable: true, get: function () { return generator_3.pyLambdaFunctionGenerator; } });
14
14
  var generator_4 = require("../src/py/mcp-server/generator");
15
15
  Object.defineProperty(exports, "pyMcpServerGenerator", { enumerable: true, get: function () { return generator_4.pyMcpServerGenerator; } });
16
- var generator_5 = require("../src/py/agent/generator");
17
- Object.defineProperty(exports, "pyAgentGenerator", { enumerable: true, get: function () { return generator_5.pyAgentGenerator; } });
16
+ var generator_5 = require("../src/py/project/generator");
17
+ Object.defineProperty(exports, "pyProjectGenerator", { enumerable: true, get: function () { return generator_5.pyProjectGenerator; } });
18
18
  //# sourceMappingURL=py.js.map
package/sdk/py.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"py.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/py.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yDAAiE;AAAxD,+GAAA,kBAAkB,OAAA;AAG3B,0DAAyE;AAAhE,sHAAA,yBAAyB,OAAA;AAGlC,iEAAgF;AAAvE,sHAAA,yBAAyB,OAAA;AAGlC,4DAAsE;AAA7D,iHAAA,oBAAoB,OAAA;AAG7B,uDAA6D;AAApD,6GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"py.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/py.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uDAA6D;AAApD,6GAAA,gBAAgB,OAAA;AAGzB,qDAAyD;AAAhD,2GAAA,cAAc,OAAA;AAGvB,iEAAgF;AAAvE,sHAAA,yBAAyB,OAAA;AAGlC,4DAAsE;AAA7D,iHAAA,oBAAoB,OAAA;AAE7B,yDAAiE;AAAxD,+GAAA,kBAAkB,OAAA"}
package/sdk/ts.d.ts CHANGED
@@ -2,28 +2,32 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- export { tsProjectGenerator } from '../src/ts/lib/generator';
6
- export type { TsProjectGeneratorSchema } from '../src/ts/lib/schema';
7
5
  export { tsInfraGenerator } from '../src/infra/app/generator';
8
6
  export type { TsInfraGeneratorSchema } from '../src/infra/app/schema';
9
- export { tsMcpServerGenerator } from '../src/ts/mcp-server/generator';
10
- export type { TsMcpServerGeneratorSchema } from '../src/ts/mcp-server/schema';
11
7
  export { tsAgentGenerator } from '../src/ts/agent/generator';
12
8
  export type { TsAgentGeneratorSchema } from '../src/ts/agent/schema';
9
+ export { tsApiGenerator } from '../src/ts/api/generator';
10
+ export type { TsApiGeneratorSchema } from '../src/ts/api/schema';
11
+ export { tsDocsGenerator } from '../src/ts/docs/generator';
12
+ export type { TsDocsGeneratorSchema } from '../src/ts/docs/schema';
13
+ export { tsDynamoDBGenerator } from '../src/ts/dynamodb/generator';
14
+ export type { TsDynamoDBGeneratorSchema } from '../src/ts/dynamodb/schema';
15
+ export { tsLambdaFunctionGenerator } from '../src/ts/lambda-function/generator';
16
+ export type { TsLambdaFunctionGeneratorSchema } from '../src/ts/lambda-function/schema';
17
+ export { tsProjectGenerator } from '../src/ts/lib/generator';
18
+ export type { TsProjectGeneratorSchema } from '../src/ts/lib/schema';
19
+ export { tsMcpServerGenerator } from '../src/ts/mcp-server/generator';
20
+ export type { TsMcpServerGeneratorSchema } from '../src/ts/mcp-server/schema';
13
21
  export { tsNxGeneratorGenerator } from '../src/ts/nx-generator/generator';
14
22
  export type { TsNxGeneratorGeneratorSchema } from '../src/ts/nx-generator/schema';
15
23
  export { tsNxPluginGenerator } from '../src/ts/nx-plugin/generator';
16
24
  export type { TsNxPluginGeneratorSchema } from '../src/ts/nx-plugin/schema';
17
- export { tsReactWebsiteGenerator } from '../src/ts/react-website/app/generator';
18
- export type { TsReactWebsiteGeneratorSchema } from '../src/ts/react-website/app/schema';
19
- export { tsReactWebsiteAuthGenerator } from '../src/ts/react-website/cognito-auth/generator';
20
- export type { TsReactWebsiteAuthGeneratorSchema } from '../src/ts/react-website/cognito-auth/schema';
25
+ export { tsRdbGenerator } from '../src/ts/rdb/generator';
26
+ export type { TsRdbGeneratorSchema } from '../src/ts/rdb/schema';
21
27
  export { runtimeConfigGenerator } from '../src/ts/react-website/runtime-config/generator';
22
28
  export type { RuntimeConfigGeneratorSchema } from '../src/ts/react-website/runtime-config/schema';
23
- export { tsTrpcApiGenerator } from '../src/trpc/backend/generator';
24
- export type { TsTrpcApiGeneratorSchema } from '../src/trpc/backend/schema';
25
- export { tsSmithyApiGenerator } from '../src/smithy/ts/api/generator';
26
- export type { TsSmithyApiGeneratorSchema } from '../src/smithy/ts/api/schema';
27
- export { tsLambdaFunctionGenerator } from '../src/ts/lambda-function/generator';
28
- export type { TsLambdaFunctionGeneratorSchema } from '../src/ts/lambda-function/schema';
29
+ export { tsWebsiteGenerator } from '../src/ts/website/app/generator';
30
+ export type { TsWebsiteGeneratorSchema } from '../src/ts/website/app/schema';
31
+ export { tsWebsiteAuthGenerator } from '../src/ts/website/auth/generator';
32
+ export type { TsWebsiteAuthGeneratorSchema } from '../src/ts/website/auth/schema';
29
33
  export { sharedConstructsGenerator } from '../src/utils/shared-constructs';
package/sdk/ts.js CHANGED
@@ -4,43 +4,49 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.sharedConstructsGenerator = exports.tsLambdaFunctionGenerator = exports.tsSmithyApiGenerator = exports.tsTrpcApiGenerator = exports.runtimeConfigGenerator = exports.tsReactWebsiteAuthGenerator = exports.tsReactWebsiteGenerator = exports.tsNxPluginGenerator = exports.tsNxGeneratorGenerator = exports.tsAgentGenerator = exports.tsMcpServerGenerator = exports.tsInfraGenerator = exports.tsProjectGenerator = void 0;
8
- // TypeScript Project Generator
9
- var generator_1 = require("../src/ts/lib/generator");
10
- Object.defineProperty(exports, "tsProjectGenerator", { enumerable: true, get: function () { return generator_1.tsProjectGenerator; } });
7
+ exports.sharedConstructsGenerator = exports.tsWebsiteAuthGenerator = exports.tsWebsiteGenerator = exports.runtimeConfigGenerator = exports.tsRdbGenerator = exports.tsNxPluginGenerator = exports.tsNxGeneratorGenerator = exports.tsMcpServerGenerator = exports.tsProjectGenerator = exports.tsLambdaFunctionGenerator = exports.tsDynamoDBGenerator = exports.tsDocsGenerator = exports.tsApiGenerator = exports.tsAgentGenerator = exports.tsInfraGenerator = void 0;
11
8
  // TypeScript Infrastructure
12
- var generator_2 = require("../src/infra/app/generator");
13
- Object.defineProperty(exports, "tsInfraGenerator", { enumerable: true, get: function () { return generator_2.tsInfraGenerator; } });
14
- // TypeScript MCP Server Generator
15
- var generator_3 = require("../src/ts/mcp-server/generator");
16
- Object.defineProperty(exports, "tsMcpServerGenerator", { enumerable: true, get: function () { return generator_3.tsMcpServerGenerator; } });
9
+ var generator_1 = require("../src/infra/app/generator");
10
+ Object.defineProperty(exports, "tsInfraGenerator", { enumerable: true, get: function () { return generator_1.tsInfraGenerator; } });
17
11
  // TypeScript Agent Generator
18
- var generator_4 = require("../src/ts/agent/generator");
19
- Object.defineProperty(exports, "tsAgentGenerator", { enumerable: true, get: function () { return generator_4.tsAgentGenerator; } });
12
+ var generator_2 = require("../src/ts/agent/generator");
13
+ Object.defineProperty(exports, "tsAgentGenerator", { enumerable: true, get: function () { return generator_2.tsAgentGenerator; } });
14
+ // TypeScript API
15
+ var generator_3 = require("../src/ts/api/generator");
16
+ Object.defineProperty(exports, "tsApiGenerator", { enumerable: true, get: function () { return generator_3.tsApiGenerator; } });
17
+ // Documentation Site Generator
18
+ var generator_4 = require("../src/ts/docs/generator");
19
+ Object.defineProperty(exports, "tsDocsGenerator", { enumerable: true, get: function () { return generator_4.tsDocsGenerator; } });
20
+ // DynamoDB Generator
21
+ var generator_5 = require("../src/ts/dynamodb/generator");
22
+ Object.defineProperty(exports, "tsDynamoDBGenerator", { enumerable: true, get: function () { return generator_5.tsDynamoDBGenerator; } });
23
+ // TypeScript Lambda Function
24
+ var generator_6 = require("../src/ts/lambda-function/generator");
25
+ Object.defineProperty(exports, "tsLambdaFunctionGenerator", { enumerable: true, get: function () { return generator_6.tsLambdaFunctionGenerator; } });
26
+ // TypeScript Project Generator
27
+ var generator_7 = require("../src/ts/lib/generator");
28
+ Object.defineProperty(exports, "tsProjectGenerator", { enumerable: true, get: function () { return generator_7.tsProjectGenerator; } });
29
+ // TypeScript MCP Server Generator
30
+ var generator_8 = require("../src/ts/mcp-server/generator");
31
+ Object.defineProperty(exports, "tsMcpServerGenerator", { enumerable: true, get: function () { return generator_8.tsMcpServerGenerator; } });
20
32
  // TypeScript Nx Generator Generator
21
- var generator_5 = require("../src/ts/nx-generator/generator");
22
- Object.defineProperty(exports, "tsNxGeneratorGenerator", { enumerable: true, get: function () { return generator_5.tsNxGeneratorGenerator; } });
33
+ var generator_9 = require("../src/ts/nx-generator/generator");
34
+ Object.defineProperty(exports, "tsNxGeneratorGenerator", { enumerable: true, get: function () { return generator_9.tsNxGeneratorGenerator; } });
23
35
  // TypeScript Nx Plugin Generator
24
- var generator_6 = require("../src/ts/nx-plugin/generator");
25
- Object.defineProperty(exports, "tsNxPluginGenerator", { enumerable: true, get: function () { return generator_6.tsNxPluginGenerator; } });
26
- // TypeScript React Website Generator
27
- var generator_7 = require("../src/ts/react-website/app/generator");
28
- Object.defineProperty(exports, "tsReactWebsiteGenerator", { enumerable: true, get: function () { return generator_7.tsReactWebsiteGenerator; } });
29
- // TypeScript React Website Auth Generator
30
- var generator_8 = require("../src/ts/react-website/cognito-auth/generator");
31
- Object.defineProperty(exports, "tsReactWebsiteAuthGenerator", { enumerable: true, get: function () { return generator_8.tsReactWebsiteAuthGenerator; } });
36
+ var generator_10 = require("../src/ts/nx-plugin/generator");
37
+ Object.defineProperty(exports, "tsNxPluginGenerator", { enumerable: true, get: function () { return generator_10.tsNxPluginGenerator; } });
38
+ // Relational Database Generator
39
+ var generator_11 = require("../src/ts/rdb/generator");
40
+ Object.defineProperty(exports, "tsRdbGenerator", { enumerable: true, get: function () { return generator_11.tsRdbGenerator; } });
32
41
  // Runtime Config
33
- var generator_9 = require("../src/ts/react-website/runtime-config/generator");
34
- Object.defineProperty(exports, "runtimeConfigGenerator", { enumerable: true, get: function () { return generator_9.runtimeConfigGenerator; } });
35
- // TypeScript tRPC API
36
- var generator_10 = require("../src/trpc/backend/generator");
37
- Object.defineProperty(exports, "tsTrpcApiGenerator", { enumerable: true, get: function () { return generator_10.tsTrpcApiGenerator; } });
38
- // TypeScript Smithy API
39
- var generator_11 = require("../src/smithy/ts/api/generator");
40
- Object.defineProperty(exports, "tsSmithyApiGenerator", { enumerable: true, get: function () { return generator_11.tsSmithyApiGenerator; } });
41
- // TypeScript Lambda Function
42
- var generator_12 = require("../src/ts/lambda-function/generator");
43
- Object.defineProperty(exports, "tsLambdaFunctionGenerator", { enumerable: true, get: function () { return generator_12.tsLambdaFunctionGenerator; } });
42
+ var generator_12 = require("../src/ts/react-website/runtime-config/generator");
43
+ Object.defineProperty(exports, "runtimeConfigGenerator", { enumerable: true, get: function () { return generator_12.runtimeConfigGenerator; } });
44
+ // TypeScript Website Generator
45
+ var generator_13 = require("../src/ts/website/app/generator");
46
+ Object.defineProperty(exports, "tsWebsiteGenerator", { enumerable: true, get: function () { return generator_13.tsWebsiteGenerator; } });
47
+ // TypeScript Website Auth Generator
48
+ var generator_14 = require("../src/ts/website/auth/generator");
49
+ Object.defineProperty(exports, "tsWebsiteAuthGenerator", { enumerable: true, get: function () { return generator_14.tsWebsiteAuthGenerator; } });
44
50
  // Shared Constructs
45
51
  var shared_constructs_1 = require("../src/utils/shared-constructs");
46
52
  Object.defineProperty(exports, "sharedConstructsGenerator", { enumerable: true, get: function () { return shared_constructs_1.sharedConstructsGenerator; } });
package/sdk/ts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ts.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/ts.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+BAA+B;AAC/B,qDAA6D;AAApD,+GAAA,kBAAkB,OAAA;AAG3B,4BAA4B;AAC5B,wDAA8D;AAArD,6GAAA,gBAAgB,OAAA;AAGzB,kCAAkC;AAClC,4DAAsE;AAA7D,iHAAA,oBAAoB,OAAA;AAG7B,6BAA6B;AAC7B,uDAA6D;AAApD,6GAAA,gBAAgB,OAAA;AAGzB,oCAAoC;AACpC,8DAA0E;AAAjE,mHAAA,sBAAsB,OAAA;AAG/B,iCAAiC;AACjC,2DAAoE;AAA3D,gHAAA,mBAAmB,OAAA;AAG5B,qCAAqC;AACrC,mEAAgF;AAAvE,oHAAA,uBAAuB,OAAA;AAGhC,0CAA0C;AAC1C,4EAA6F;AAApF,wHAAA,2BAA2B,OAAA;AAGpC,iBAAiB;AACjB,8EAA0F;AAAjF,mHAAA,sBAAsB,OAAA;AAG/B,sBAAsB;AACtB,4DAAmE;AAA1D,gHAAA,kBAAkB,OAAA;AAG3B,wBAAwB;AACxB,6DAAsE;AAA7D,kHAAA,oBAAoB,OAAA;AAG7B,6BAA6B;AAC7B,kEAAgF;AAAvE,uHAAA,yBAAyB,OAAA;AAGlC,oBAAoB;AACpB,oEAA2E;AAAlE,8HAAA,yBAAyB,OAAA"}
1
+ {"version":3,"file":"ts.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/sdk/ts.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4BAA4B;AAC5B,wDAA8D;AAArD,6GAAA,gBAAgB,OAAA;AAEzB,6BAA6B;AAC7B,uDAA6D;AAApD,6GAAA,gBAAgB,OAAA;AAEzB,iBAAiB;AACjB,qDAAyD;AAAhD,2GAAA,cAAc,OAAA;AAEvB,+BAA+B;AAC/B,sDAA2D;AAAlD,4GAAA,eAAe,OAAA;AAExB,qBAAqB;AACrB,0DAAmE;AAA1D,gHAAA,mBAAmB,OAAA;AAE5B,6BAA6B;AAC7B,iEAAgF;AAAvE,sHAAA,yBAAyB,OAAA;AAElC,+BAA+B;AAC/B,qDAA6D;AAApD,+GAAA,kBAAkB,OAAA;AAE3B,kCAAkC;AAClC,4DAAsE;AAA7D,iHAAA,oBAAoB,OAAA;AAE7B,oCAAoC;AACpC,8DAA0E;AAAjE,mHAAA,sBAAsB,OAAA;AAE/B,iCAAiC;AACjC,4DAAoE;AAA3D,iHAAA,mBAAmB,OAAA;AAE5B,gCAAgC;AAChC,sDAAyD;AAAhD,4GAAA,cAAc,OAAA;AAEvB,iBAAiB;AACjB,+EAA0F;AAAjF,oHAAA,sBAAsB,OAAA;AAE/B,+BAA+B;AAC/B,8DAAqE;AAA5D,gHAAA,kBAAkB,OAAA;AAE3B,oCAAoC;AACpC,+DAA0E;AAAjE,oHAAA,sBAAsB,OAAA;AAG/B,oBAAoB;AACpB,oEAA2E;AAAlE,8HAAA,yBAAyB,OAAA"}
@@ -0,0 +1,52 @@
1
+ # Cedar policies for <%= nameClassName %>
2
+
3
+ Every `.cedar` file in this directory is deployed as a separate `Policy`
4
+ resource attached to this gateway's `PolicyEngine`. The engine runs in
5
+ `ENFORCE` mode, so policies are evaluated and decisions are enforced at
6
+ runtime.
7
+
8
+ ## Default policy
9
+
10
+ `permit-all.cedar` permits any IAM caller from the deploying AWS account.
11
+ It is scoped to your account because AgentCore's policy validator rejects
12
+ truly unrestricted permits (`permit (principal, action, resource)`) as
13
+ "Overly Permissive".
14
+
15
+ **If you delete this file without adding replacement `permit` policies, the
16
+ gateway will deny every request** — Cedar uses a default-deny evaluation
17
+ model, so every request requires at least one matching `permit` to be
18
+ allowed.
19
+
20
+ ## Template variables
21
+
22
+ Policies are [EJS](https://ejs.co/) templates rendered at synth/plan time
23
+ with the following variables in scope:
24
+
25
+ - `<%%= gatewayArn %>` — this gateway's ARN
26
+ - `<%%= accountId %>` — the AWS account this gateway is deployed into
27
+
28
+ Add your own variables (e.g. an agent's role name) where the policies are
29
+ rendered:
30
+
31
+ - CDK: the `cedarPolicyVariables` prop in
32
+ `packages/common/constructs/src/app/gateways/<name>/<name>.ts`
33
+ - Terraform: the `query` of the `rendered_policies` data source in
34
+ `packages/common/terraform/src/app/gateways/<name>/<name>.tf`
35
+
36
+ ## Adding a new policy
37
+
38
+ 1. Create `policies/<my-policy>.cedar` alongside the existing files.
39
+ 2. Write Cedar rules — see the **Writing Policies** section of the
40
+ [AgentCore Gateway guide](https://awslabs.github.io/nx-plugin-for-aws/guides/agentcore-gateway/)
41
+ for valid patterns and validator gotchas.
42
+ 3. Re-synth / plan your infrastructure to deploy the new policy.
43
+
44
+ Policy names are derived from file names: `my-policy.cedar` becomes the
45
+ policy `MyPolicy` (plus a unique suffix, since policy names must be unique
46
+ account-wide). Keep file names unique within this directory.
47
+
48
+ ## Further reading
49
+
50
+ - [Cedar policy language reference](https://docs.cedarpolicy.com/)
51
+ - [AgentCore policy semantics](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy-understanding-cedar.html)
52
+ - [AgentCore common policy patterns](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy-common-patterns.html)
@@ -0,0 +1,11 @@
1
+ // Default policy: permit any IAM caller from the deploying AWS account.
2
+ // The PolicyEngine runs in ENFORCE mode (default-deny) — deleting this file
3
+ // without a replacement permit denies every call. See policies/README.md.
4
+
5
+ permit (
6
+ principal is AgentCore::IamEntity,
7
+ action,
8
+ resource == AgentCore::Gateway::"<%%= gatewayArn %>"
9
+ ) when {
10
+ principal.id like "arn:aws:*::<%%= accountId %>:*"
11
+ };
@@ -0,0 +1,133 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
3
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
4
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
5
+ import {
6
+ CallToolRequestSchema,
7
+ ListToolsRequestSchema,
8
+ } from '@modelcontextprotocol/sdk/types.js';
9
+ import express from 'express';
10
+ import { AsyncLocalStorage } from 'node:async_hooks';
11
+
12
+ const PORT = parseInt(process.env.PORT || '<%- port %>');
13
+ const PREFIX_SEPARATOR = '___';
14
+ const SESSION_HEADER = 'x-amzn-bedrock-agentcore-runtime-session-id';
15
+
16
+ interface AttachedMcpServer {
17
+ name: string;
18
+ url: string;
19
+ }
20
+
21
+ // MCP servers attached to this gateway, maintained by the
22
+ // `agentcore-gateway#mcp-connection` generator.
23
+ const ATTACHED_MCP_SERVERS: AttachedMcpServer[] = [<% attachedMcpServers.forEach((s) => { %>
24
+ { name: '<%- s.name %>', url: 'http://localhost:<%- s.port %>/mcp' },<% }); %>
25
+ ];
26
+
27
+ // Forwards the inbound request's AgentCore session header to upstream calls
28
+ const sessionContext = new AsyncLocalStorage<string | undefined>();
29
+
30
+ const createUpstreamClient = async (url: string): Promise<Client> => {
31
+ const fetchWithSession: typeof fetch = async (input, init) => {
32
+ const headers = new Headers(init?.headers);
33
+ const sessionId = sessionContext.getStore();
34
+ if (sessionId) headers.set(SESSION_HEADER, sessionId);
35
+ return fetch(input, { ...init, headers });
36
+ };
37
+ const client = new Client({ name: '<%- nameKebabCase %>', version: '1.0.0' });
38
+ await client.connect(
39
+ new StreamableHTTPClientTransport(new URL(url), {
40
+ fetch: fetchWithSession,
41
+ }),
42
+ );
43
+ return client;
44
+ };
45
+
46
+ /**
47
+ * Local gateway for <%- nameClassName %>: a single MCP endpoint aggregating
48
+ * every attached MCP server, with tools exposed as `<target>___<tool>` to
49
+ * match the deployed AgentCore Gateway. Unlike the real gateway, Cedar
50
+ * policies are not evaluated and there is no semantic tool search.
51
+ */
52
+ const createServer = async (): Promise<Server> => {
53
+ const server = new Server(
54
+ { name: '<%- nameKebabCase %>', version: '1.0.0' },
55
+ { capabilities: { tools: {} } },
56
+ );
57
+
58
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
59
+ const lists = await Promise.all(
60
+ ATTACHED_MCP_SERVERS.map(async (s) => {
61
+ const client = await createUpstreamClient(s.url);
62
+ try {
63
+ const { tools } = await client.listTools();
64
+ return tools.map((t) => ({
65
+ ...t,
66
+ name: `${s.name}${PREFIX_SEPARATOR}${t.name}`,
67
+ }));
68
+ } finally {
69
+ await client.close();
70
+ }
71
+ }),
72
+ );
73
+ return { tools: lists.flat() };
74
+ });
75
+
76
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
77
+ const name = request.params.name;
78
+ const upstream = ATTACHED_MCP_SERVERS.find((s) =>
79
+ name.startsWith(`${s.name}${PREFIX_SEPARATOR}`),
80
+ );
81
+ if (!upstream) {
82
+ throw new Error(`Unknown tool: ${name}`);
83
+ }
84
+ const client = await createUpstreamClient(upstream.url);
85
+ try {
86
+ return await client.callTool({
87
+ ...request.params,
88
+ name: name.slice(upstream.name.length + PREFIX_SEPARATOR.length),
89
+ });
90
+ } finally {
91
+ await client.close();
92
+ }
93
+ });
94
+
95
+ return server;
96
+ };
97
+
98
+ const app = express();
99
+ app.use(express.json());
100
+
101
+ app.post('/mcp', async (req, res) => {
102
+ const sessionId = req.headers[SESSION_HEADER];
103
+ await sessionContext.run(
104
+ typeof sessionId === 'string' ? sessionId : undefined,
105
+ async () => {
106
+ try {
107
+ const server = await createServer();
108
+ const transport = new StreamableHTTPServerTransport({
109
+ sessionIdGenerator: undefined,
110
+ });
111
+ res.on('close', () => {
112
+ transport.close();
113
+ server.close();
114
+ });
115
+ await server.connect(transport);
116
+ await transport.handleRequest(req, res, req.body);
117
+ } catch (error) {
118
+ console.error('Error handling MCP request:', error);
119
+ if (!res.headersSent) {
120
+ res.status(500).json({
121
+ jsonrpc: '2.0',
122
+ error: { code: -32603, message: 'Internal server error' },
123
+ id: null,
124
+ });
125
+ }
126
+ }
127
+ },
128
+ );
129
+ });
130
+
131
+ app.listen(PORT, () => {
132
+ console.log(`<%- nameKebabCase %>: local gateway listening on port ${PORT}`);
133
+ });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { type GeneratorCallback, type ProjectConfiguration, type Tree } from '@nx/devkit';
6
+ import { type NxGeneratorInfo } from '../utils/nx';
7
+ import type { AgentcoreGatewayGeneratorSchema } from './schema';
8
+ export declare const AGENTCORE_GATEWAY_GENERATOR_INFO: NxGeneratorInfo;
9
+ export declare const agentcoreGatewayGenerator: (tree: Tree, options: AgentcoreGatewayGeneratorSchema) => Promise<GeneratorCallback>;
10
+ /**
11
+ * Gateway details stored in the gateway project's metadata.
12
+ */
13
+ export interface AgentCoreGatewayMetadata {
14
+ name: string;
15
+ rc: string;
16
+ protocol: string;
17
+ auth: string;
18
+ port: number;
19
+ }
20
+ /**
21
+ * Read a gateway project's metadata, validating it was generated by the
22
+ * agentcore-gateway generator.
23
+ */
24
+ export declare const readAgentCoreGatewayMetadata: (project: ProjectConfiguration) => AgentCoreGatewayMetadata;
25
+ export default agentcoreGatewayGenerator;