@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
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSchemaLookup = exports.resolveGeneratorsJson = exports.filterableOptionsFromSchema = void 0;
3
+ exports.createSchemaLookup = exports.resolveGeneratorsJson = exports.filterableOptionsFromSchema = exports.filterableValuesForProperty = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  /**
6
6
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -9,19 +9,35 @@ const tslib_1 = require("tslib");
9
9
  const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
10
10
  const node_path_1 = tslib_1.__importDefault(require("node:path"));
11
11
  /**
12
- * Pull out every enum-valued property as a `FilterableOption`. Shared between
13
- * the MCP server (deriving options from a generator's schema) and the docs
14
- * filter bar (mapping user-referenced keys onto their enum values).
12
+ * The values an option can be filtered on: its enum values, or true/false
13
+ * for booleans. Returns undefined for non-filterable options.
14
+ */
15
+ const filterableValuesForProperty = (prop) => {
16
+ if (Array.isArray(prop.enum) && prop.enum.length > 0) {
17
+ return prop.enum.map((v) => String(v));
18
+ }
19
+ if (prop.type === 'boolean') {
20
+ return ['true', 'false'];
21
+ }
22
+ return undefined;
23
+ };
24
+ exports.filterableValuesForProperty = filterableValuesForProperty;
25
+ /**
26
+ * Pull out every filterable property (enum or boolean valued) as a
27
+ * `FilterableOption`. Shared between the MCP server (deriving options from a
28
+ * generator's schema) and the docs filter bar (mapping user-referenced keys
29
+ * onto their values).
15
30
  */
16
31
  const filterableOptionsFromSchema = (schema) => {
17
32
  const props = schema?.properties ?? {};
18
33
  const out = [];
19
34
  for (const [key, prop] of Object.entries(props)) {
20
- if (!Array.isArray(prop.enum) || prop.enum.length === 0)
35
+ const values = (0, exports.filterableValuesForProperty)(prop);
36
+ if (!values)
21
37
  continue;
22
38
  out.push({
23
39
  key,
24
- enum: prop.enum.map((v) => String(v)),
40
+ enum: values,
25
41
  default: prop.default !== undefined ? String(prop.default) : undefined,
26
42
  description: prop.description,
27
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/schema-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/schema-registry.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,8DAAyB;AACzB,kEAA6B;AA0B7B;;;GAGG;AACI,MAAM,2BAA2B,GAAG,CACzC,IAAoB,EACE,EAAE;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAVW,QAAA,2BAA2B,+BAUtC;AAEF;;;;;GAKG;AACI,MAAM,2BAA2B,GAAG,CACzC,MAAmC,EACf,EAAE;IACtB,MAAM,KAAK,GAAG,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;IACvC,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,IAAA,mCAA2B,EAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,GAAG,CAAC,IAAI,CAAC;YACP,GAAG;YACH,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACtE,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAhBW,QAAA,2BAA2B,+BAgBtC;AAEF;;;;;GAKG;AACI,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAsB,EAAE;IAC3E,IAAI,GAAG,GAAG,OAAO,CAAC;IAClB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CACzB,GAAG,EACH,UAAU,EACV,WAAW,EACX,iBAAiB,CAClB,CAAC;QACF,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,qBAAqB,yBAchC;AAEF;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,kBAA0B,EAAE,EAAE;IAC/D,MAAM,UAAU,GAAG,mBAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,QAAoC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEjD,MAAM,YAAY,GAAG,GAAmB,EAAE;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,KAAK,CACnB,iBAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAC3B,CAAC;QACtB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,WAAmB,EAAmB,EAAE;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,iBAAE,CAAC,YAAY,CAAC,mBAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAC9C,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,kBAAkB,sBA2B7B"}
@@ -90,6 +90,8 @@ Nx Console is an editor extension that enriches your developer experience. It le
90
90
  The following list of generators are what is currently available in the \`@aws/nx-plugin\`:
91
91
 
92
92
 
93
+ - **agentcore-gateway**: Generate an AgentCore Gateway project
94
+
93
95
  - **connection**: Integrates a source project with a target project
94
96
 
95
97
  - **license**: Add LICENSE files and configure source code licence headers
@@ -593,6 +593,59 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
593
593
  ]
594
594
  }
595
595
 
596
+ # MCP consumers (e.g. gateway targets, which fetch tools at creation) can race
597
+ # the runtime's first cold start, so probe it until it serves MCP. The ARN
598
+ # output is routed through this resource so consumers wait for readiness.
599
+ resource "null_resource" "runtime_ready" {
600
+ count = var.server_protocol == "MCP" ? 1 : 0
601
+
602
+ triggers = {
603
+ runtime_arn = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
604
+ }
605
+
606
+ provisioner "local-exec" {
607
+ command = <<-EOT
608
+ uv run --with boto3 python -c "
609
+ import boto3
610
+ import json
611
+ import time
612
+ import uuid
613
+
614
+ runtime_arn = '\${self.triggers.runtime_arn}'
615
+ client = boto3.client('bedrock-agentcore')
616
+ initialize_request = json.dumps({
617
+ 'jsonrpc': '2.0',
618
+ 'id': 1,
619
+ 'method': 'initialize',
620
+ 'params': {
621
+ 'protocolVersion': '2025-03-26',
622
+ 'capabilities': {},
623
+ 'clientInfo': {'name': 'readiness-probe', 'version': '1.0'},
624
+ },
625
+ })
626
+
627
+ deadline = time.time() + 3 * 60
628
+ while True:
629
+ try:
630
+ client.invoke_agent_runtime(
631
+ agentRuntimeArn=runtime_arn,
632
+ runtimeSessionId=f'readiness-probe-{uuid.uuid4()}',
633
+ contentType='application/json',
634
+ accept='application/json, text/event-stream',
635
+ payload=initialize_request,
636
+ )
637
+ break
638
+ except Exception:
639
+ if time.time() >= deadline:
640
+ raise
641
+ time.sleep(5)
642
+
643
+ print(f'Runtime {runtime_arn} is serving MCP')
644
+ "
645
+ EOT
646
+ }
647
+ }
648
+
596
649
  # Outputs
597
650
  output "agent_core_runtime_role_arn" {
598
651
  description = "ARN of the Agent Core Runtime IAM role"
@@ -610,8 +663,8 @@ output "agent_runtime_name" {
610
663
  }
611
664
 
612
665
  output "agent_core_runtime_arn" {
613
- description = "ARN of the Bedrock Agent Core runtime"
614
- value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
666
+ description = "ARN of the Bedrock Agent Core runtime. For MCP runtimes the value flows through the readiness probe, so consumers wait until the runtime serves MCP."
667
+ value = var.server_protocol == "MCP" ? null_resource.runtime_ready[0].triggers.runtime_arn : aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
615
668
  }
616
669
 
617
670
  output "agent_runtime_id" {
@@ -4,7 +4,7 @@ from strands.agent.a2a_agent import A2AAgent
4
4
 
5
5
  from <%- agentConnectionModuleName %>.core.agentcore_a2a_client import AgentCoreA2aClient
6
6
  from <%- agentConnectionModuleName %>.core.runtime_config import (
7
- get_connected_agent_runtime_arn,
7
+ get_agentcore_runtime_config,
8
8
  )
9
9
 
10
10
 
@@ -17,6 +17,12 @@ class <%- targetAgentClassName %>Client:
17
17
  return AgentCoreA2aClient.without_auth(
18
18
  "http://localhost:<%- targetAgentPort %>/"
19
19
  )
20
- return AgentCoreA2aClient.with_iam_auth(
21
- get_connected_agent_runtime_arn("<%- targetAgentClassName %>")
20
+ config = get_agentcore_runtime_config()
21
+ agent_runtime_arn = config.get("agentRuntimes", {}).get(
22
+ "<%- targetAgentClassName %>"
22
23
  )
24
+ if not agent_runtime_arn:
25
+ raise RuntimeError(
26
+ "No connected agent runtime named '<%- targetAgentClassName %>' found in runtime configuration."
27
+ )
28
+ return AgentCoreA2aClient.with_iam_auth(agent_runtime_arn)
@@ -133,7 +133,7 @@ const addToolToAgent = async (tree, filePath, toolName) => {
133
133
  * top of the function body.
134
134
  */
135
135
  const addClientToolToGetAgent = async (tree, filePath, clientClassName, clientVarName, toolName, targetAgentClassName) => {
136
- if (await (0, ast_1.matchGritQL)(tree, filePath, `\`${clientClassName}.create\``)) {
136
+ if (await (0, ast_1.matchGritQL)(tree, filePath, py(`\`${clientClassName}.create\``))) {
137
137
  return;
138
138
  }
139
139
  // The tool function we'll insert. Strands tools in Python are just
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/a2a-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/a2a-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import os
2
+
3
+ from strands.tools.mcp.mcp_client import MCPClient
4
+
5
+ from <%- agentConnectionModuleName %>.core.agentcore_gateway_mcp_client import (
6
+ AgentCoreGatewayMCPClient,
7
+ )
8
+ from <%- agentConnectionModuleName %>.core.runtime_config import (
9
+ get_agentcore_runtime_config,
10
+ )
11
+
12
+
13
+ class <%- gatewayClassName %>Client:
14
+ """Client for the <%- gatewayClassName %> AgentCore Gateway.
15
+
16
+ Deployed: a SigV4-signed MCP client pointing at the gateway URL.
17
+ Local (``SERVE_LOCAL=true``): a plain-HTTP client pointing at the local
18
+ gateway started by the gateway project's serve-local target. The local
19
+ gateway aggregates every attached MCP server but does not evaluate
20
+ Cedar policies.
21
+ """
22
+
23
+ @staticmethod
24
+ def create() -> MCPClient:
25
+ if os.environ.get("SERVE_LOCAL") == "true":
26
+ return AgentCoreGatewayMCPClient.without_auth(
27
+ gateway_url="http://localhost:<%- gatewayPort %>/mcp"
28
+ )
29
+ config = get_agentcore_runtime_config()
30
+ gateway_url = config.get("gateways", {}).get("<%- gatewayClassName %>")
31
+ if not gateway_url:
32
+ raise RuntimeError(
33
+ "No connected gateway named '<%- gatewayClassName %>' found in runtime configuration."
34
+ )
35
+ return AgentCoreGatewayMCPClient.with_iam_auth(gateway_url=gateway_url)
@@ -0,0 +1,10 @@
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 Tree } from '@nx/devkit';
6
+ import { type NxGeneratorInfo } from '../../../utils/nx';
7
+ import type { PyAgentGatewayConnectionGeneratorSchema } from './schema';
8
+ export declare const PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
9
+ export declare const pyAgentGatewayConnectionGenerator: (tree: Tree, options: PyAgentGatewayConnectionGeneratorSchema) => Promise<GeneratorCallback>;
10
+ export default pyAgentGatewayConnectionGenerator;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pyAgentGatewayConnectionGenerator = exports.PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO = void 0;
4
+ /**
5
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
+ * SPDX-License-Identifier: Apache-2.0
7
+ */
8
+ const devkit_1 = require("@nx/devkit");
9
+ const generator_1 = require("../../../agentcore-gateway/generator");
10
+ const agent_connection_1 = require("../../../utils/agent-connection/agent-connection");
11
+ const ast_1 = require("../../../utils/ast");
12
+ const format_1 = require("../../../utils/format");
13
+ const metrics_1 = require("../../../utils/metrics");
14
+ const names_1 = require("../../../utils/names");
15
+ const nx_1 = require("../../../utils/nx");
16
+ const py_1 = require("../../../utils/py");
17
+ exports.PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
18
+ const pyAgentGatewayConnectionGenerator = async (tree, options) => {
19
+ const sourceProject = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.sourceProject);
20
+ const targetProject = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.targetProject);
21
+ const agentComponent = options.sourceComponent;
22
+ if (!agentComponent) {
23
+ throw new Error('sourceComponent must be provided for py#agent -> agentcore-gateway connections');
24
+ }
25
+ const gateway = (0, generator_1.readAgentCoreGatewayMetadata)(targetProject);
26
+ if (gateway.protocol !== 'mcp') {
27
+ throw new Error(`Gateway '${gateway.name}' has protocol='${gateway.protocol}'. Only MCP-protocol gateways are supported.`);
28
+ }
29
+ if (gateway.auth !== 'iam') {
30
+ throw new Error(`Gateway '${gateway.name}' uses auth='${gateway.auth}'. Only IAM-authenticated gateways are supported in v1.`);
31
+ }
32
+ if (agentComponent.auth && agentComponent.auth !== 'iam') {
33
+ throw new Error(`Agent '${agentComponent.name}' uses auth='${agentComponent.auth}'. Only IAM-authenticated agents can connect to IAM gateways.`);
34
+ }
35
+ const gatewayClassName = gateway.rc;
36
+ const gatewaySnakeCase = (0, names_1.snakeCase)(gatewayClassName);
37
+ const gatewayKebabCase = gatewaySnakeCase.replace(/_/g, '-');
38
+ const gatewayServeTargetName = `${gatewayKebabCase}-serve`;
39
+ const gatewayServeLocalTargetName = `${gatewayKebabCase}-serve-local`;
40
+ await (0, agent_connection_1.ensurePythonAgentConnectionProject)(tree);
41
+ (0, agent_connection_1.addPythonCoreClient)(tree, 'auth');
42
+ (0, agent_connection_1.addPythonCoreClient)(tree, 'gateway');
43
+ const agentConnectionProjectDir = (0, agent_connection_1.getPythonAgentConnectionProjectDir)(tree);
44
+ const agentConnectionModuleName = (0, agent_connection_1.getPythonAgentConnectionModuleName)(tree);
45
+ const agentConnectionPackageName = (0, agent_connection_1.getPythonAgentConnectionPackageName)(tree);
46
+ (0, py_1.addDependenciesToPyProjectToml)(tree, agentConnectionProjectDir, [
47
+ 'boto3',
48
+ 'httpx',
49
+ 'mcp',
50
+ 'strands-agents',
51
+ ]);
52
+ const appDir = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, 'app');
53
+ // Local mode points at the gateway project's local gateway port.
54
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'agent-connection', 'app'), appDir, {
55
+ gatewaySnakeCase,
56
+ gatewayClassName,
57
+ agentConnectionModuleName,
58
+ gatewayPort: gateway.port,
59
+ }, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
60
+ const appInitPath = (0, devkit_1.joinPathFragments)(appDir, '__init__.py');
61
+ if (!tree.exists(appInitPath)) {
62
+ tree.write(appInitPath, '');
63
+ }
64
+ const moduleInitPath = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, '__init__.py');
65
+ await (0, agent_connection_1.addPythonReExport)(tree, moduleInitPath, `.app.${gatewaySnakeCase}_client`, `${gatewayClassName}Client`);
66
+ const agentSourceDir = (0, devkit_1.joinPathFragments)(sourceProject.root, agentComponent.path ?? 'src');
67
+ const agentFilePath = (0, devkit_1.joinPathFragments)(agentSourceDir, 'agent.py');
68
+ if (tree.exists(agentFilePath)) {
69
+ const clientClassName = `${gatewayClassName}Client`;
70
+ const clientVarName = gatewaySnakeCase;
71
+ await (0, ast_1.addPythonDestructuredImport)(tree, agentFilePath, [clientClassName], agentConnectionModuleName);
72
+ await (0, agent_connection_1.addPythonClientToAgent)(tree, agentFilePath, clientClassName, clientVarName);
73
+ }
74
+ (0, py_1.addWorkspaceDependencyToPyProject)(tree, sourceProject.root, agentConnectionPackageName);
75
+ const agentName = agentComponent.name ?? 'agent';
76
+ const serveTargetName = `${agentName}-serve`;
77
+ const serveLocalTargetName = `${agentName}-serve-local`;
78
+ let projectConfigChanged = false;
79
+ if (sourceProject.targets?.[serveTargetName]) {
80
+ (0, nx_1.addDependencyToTargetIfNotPresent)(sourceProject, serveTargetName, {
81
+ projects: [targetProject.name],
82
+ target: gatewayServeTargetName,
83
+ });
84
+ projectConfigChanged = true;
85
+ }
86
+ if (sourceProject.targets?.[serveLocalTargetName]) {
87
+ (0, nx_1.addDependencyToTargetIfNotPresent)(sourceProject, serveLocalTargetName, {
88
+ projects: [targetProject.name],
89
+ target: gatewayServeLocalTargetName,
90
+ });
91
+ projectConfigChanged = true;
92
+ }
93
+ if (projectConfigChanged) {
94
+ (0, devkit_1.updateProjectConfiguration)(tree, sourceProject.name, sourceProject);
95
+ }
96
+ await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [
97
+ exports.PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO,
98
+ ]);
99
+ await (0, format_1.formatFilesInSubtree)(tree);
100
+ return () => {
101
+ (0, devkit_1.installPackagesTask)(tree);
102
+ };
103
+ };
104
+ exports.pyAgentGatewayConnectionGenerator = pyAgentGatewayConnectionGenerator;
105
+ exports.default = exports.pyAgentGatewayConnectionGenerator;
106
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/gateway-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import type { ComponentMetadata } from '../../../utils/nx';
6
+
7
+ export interface PyAgentGatewayConnectionGeneratorSchema {
8
+ sourceProject: string;
9
+ targetProject: string;
10
+ sourceComponent?: ComponentMetadata;
11
+ targetComponent?: ComponentMetadata;
12
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "py#agent#gateway-connection",
4
+ "title": "py#agent#gateway-connection",
5
+ "description": "Connect a Python Agent to an AgentCore Gateway",
6
+ "type": "object",
7
+ "properties": {
8
+ "sourceProject": {
9
+ "type": "string",
10
+ "description": "The Python Agent project"
11
+ },
12
+ "targetProject": {
13
+ "type": "string",
14
+ "description": "The AgentCore Gateway project"
15
+ },
16
+ "sourceComponent": {
17
+ "type": "string",
18
+ "description": "The agent component in the source project"
19
+ },
20
+ "targetComponent": {
21
+ "type": "string",
22
+ "description": "The gateway component in the target project"
23
+ }
24
+ },
25
+ "required": ["sourceProject", "targetProject"]
26
+ }
@@ -123,7 +123,7 @@ from strands.tools.mcp.mcp_client import MCPClient
123
123
 
124
124
  from proj_agent_connection.core.agentcore_mcp_client import AgentCoreMCPClient
125
125
  from proj_agent_connection.core.runtime_config import (
126
- get_connected_agent_runtime_arn,
126
+ get_agentcore_runtime_config,
127
127
  )
128
128
 
129
129
 
@@ -134,9 +134,13 @@ class InventoryMcpClient:
134
134
  def create() -> MCPClient:
135
135
  if os.environ.get("SERVE_LOCAL") == "true":
136
136
  return AgentCoreMCPClient.without_auth("http://localhost:8082/mcp")
137
- return AgentCoreMCPClient.with_iam_auth(
138
- get_connected_agent_runtime_arn("InventoryMcp")
139
- )
137
+ config = get_agentcore_runtime_config()
138
+ agent_runtime_arn = config.get("agentRuntimes", {}).get("InventoryMcp")
139
+ if not agent_runtime_arn:
140
+ raise RuntimeError(
141
+ "No connected MCP server runtime named 'InventoryMcp' found in runtime configuration."
142
+ )
143
+ return AgentCoreMCPClient.with_iam_auth(agent_runtime_arn)
140
144
  "
141
145
  `;
142
146
 
@@ -4,7 +4,7 @@ from strands.tools.mcp.mcp_client import MCPClient
4
4
 
5
5
  from <%- agentConnectionModuleName %>.core.agentcore_mcp_client import AgentCoreMCPClient
6
6
  from <%- agentConnectionModuleName %>.core.runtime_config import (
7
- get_connected_agent_runtime_arn,
7
+ get_agentcore_runtime_config,
8
8
  )
9
9
 
10
10
 
@@ -17,6 +17,12 @@ class <%- mcpServerClassName %>Client:
17
17
  return AgentCoreMCPClient.without_auth(
18
18
  "http://localhost:<%- mcpServerPort %>/mcp"
19
19
  )
20
- return AgentCoreMCPClient.with_iam_auth(
21
- get_connected_agent_runtime_arn("<%- mcpServerClassName %>")
20
+ config = get_agentcore_runtime_config()
21
+ agent_runtime_arn = config.get("agentRuntimes", {}).get(
22
+ "<%- mcpServerClassName %>"
22
23
  )
24
+ if not agent_runtime_arn:
25
+ raise RuntimeError(
26
+ "No connected MCP server runtime named '<%- mcpServerClassName %>' found in runtime configuration."
27
+ )
28
+ return AgentCoreMCPClient.with_iam_auth(agent_runtime_arn)
@@ -13,8 +13,6 @@ const metrics_1 = require("../../../utils/metrics");
13
13
  const names_1 = require("../../../utils/names");
14
14
  const nx_1 = require("../../../utils/nx");
15
15
  const py_1 = require("../../../utils/py");
16
- /** Prefix a GritQL pattern with `language python` */
17
- const py = (pattern) => `language python\n${pattern}`;
18
16
  exports.PY_AGENT_MCP_CONNECTION_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
19
17
  const pyAgentMcpConnectionGenerator = async (tree, options) => {
20
18
  const sourceProject = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.sourceProject);
@@ -68,9 +66,8 @@ const pyAgentMcpConnectionGenerator = async (tree, options) => {
68
66
  if (tree.exists(agentFilePath)) {
69
67
  const clientClassName = `${mcpServerClassName}Client`;
70
68
  const clientVarName = mcpServerSnakeCase;
71
- await addImportToAgentFile(tree, agentFilePath, agentConnectionModuleName, clientClassName);
72
- await addMcpToolsToAgent(tree, agentFilePath, clientVarName);
73
- await addMcpClientToGetAgent(tree, agentFilePath, clientClassName, clientVarName);
69
+ await (0, ast_1.addPythonDestructuredImport)(tree, agentFilePath, [clientClassName], agentConnectionModuleName);
70
+ await (0, agent_connection_1.addPythonClientToAgent)(tree, agentFilePath, clientClassName, clientVarName);
74
71
  }
75
72
  // 4. Add workspace dependency from agent project to agent-connection project
76
73
  (0, py_1.addWorkspaceDependencyToPyProject)(tree, sourceProject.root, agentConnectionPackageName);
@@ -94,72 +91,5 @@ const pyAgentMcpConnectionGenerator = async (tree, options) => {
94
91
  };
95
92
  };
96
93
  exports.pyAgentMcpConnectionGenerator = pyAgentMcpConnectionGenerator;
97
- /**
98
- * Add an import for the MCP client class to agent.py.
99
- *
100
- * Delegates to the shared `addPythonDestructuredImport` helper which either
101
- * appends to an existing `from <module> import ...` line or prepends a new
102
- * import statement (ruff sorts imports on the next format pass).
103
- */
104
- const addImportToAgentFile = async (tree, filePath, agentConnectionModuleName, clientClassName) => {
105
- await (0, ast_1.addPythonDestructuredImport)(tree, filePath, [clientClassName], agentConnectionModuleName);
106
- };
107
- /**
108
- * Add MCP tools to the Agent's tools array using GritQL.
109
- * Appends `*<clientVarName>.list_tools_sync()` to the tools list.
110
- * Handles both empty and non-empty arrays using if/else.
111
- */
112
- const addMcpToolsToAgent = async (tree, filePath, clientVarName) => {
113
- if (await (0, ast_1.matchGritQL)(tree, filePath, `\`${clientVarName}.list_tools_sync()\``)) {
114
- return;
115
- }
116
- await (0, ast_1.applyGritQL)(tree, filePath, py(`\`tools=$old\` where {
117
- $old <: not contains \`${clientVarName}\`,
118
- if ($old <: \`[]\`) {
119
- $old => \`[*${clientVarName}.list_tools_sync()]\`
120
- } else {
121
- $old <: \`[$items]\` where { $items += \`, *${clientVarName}.list_tools_sync()\` }
122
- }
123
- }`));
124
- };
125
- /**
126
- * Add MCP client creation and with-block wrapping to the get_agent function
127
- * using GritQL transforms.
128
- *
129
- * First connection: Rewrites `def get_agent` to wrap $body in a with block.
130
- * Subsequent connections: Uses += to add to existing with items and creation lines.
131
- */
132
- const addMcpClientToGetAgent = async (tree, filePath, clientClassName, clientVarName) => {
133
- if (await (0, ast_1.matchGritQL)(tree, filePath, `\`${clientClassName}.create($_)\``)) {
134
- return;
135
- }
136
- // Try the "add to existing with block" pattern first.
137
- // If it succeeds, there was already a with block from a previous connection.
138
- const addedToWith = await (0, ast_1.applyGritQL)(tree, filePath, py(`\`with ($items,): $body\` where {
139
- $items <: not contains \`${clientVarName}\`,
140
- $items += \`, ${clientVarName}\`
141
- }`));
142
- if (addedToWith) {
143
- // Subsequent connection — also add creation line after the existing one
144
- await (0, ast_1.applyGritQL)(tree, filePath, py(`\`$var = $cls.create()\` as $stmt where {
145
- $program <: not contains \`${clientClassName}.create\`,
146
- $stmt += \`\n${clientVarName} = ${clientClassName}.create()\`
147
- }`));
148
- return;
149
- }
150
- // First connection — rewrite the function body to include client creation
151
- // and wrap $body in a with block. GritQL handles indentation correctly
152
- // when the replacement is structured as a proper Python function body.
153
- await (0, ast_1.applyGritQL)(tree, filePath, py(`\`def get_agent($params):
154
- $body\` where {
155
- $body <: contains \`yield Agent($_)\`,
156
- $body <: not contains \`with ($_, ): $_\`
157
- } => \`def get_agent($params):
158
- ${clientVarName} = ${clientClassName}.create()
159
- with (
160
- ${clientVarName},
161
- ):
162
- $body\``));
163
- };
164
94
  exports.default = exports.pyAgentMcpConnectionGenerator;
165
95
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -257,7 +257,6 @@ export default AguiProvider;
257
257
  exports[`py strands agent react connection generator - AG-UI protocol > should generate a shared AguiProvider and a per-agent hook for AG-UI agents > useAguiTestAgent.tsx 1`] = `
258
258
  "import { HttpAgent } from '@ag-ui/client';
259
259
  import type { AbstractAgent, RunAgentInput } from '@ag-ui/client';
260
- import { Observable } from 'rxjs';
261
260
  import { useMemo } from 'react';
262
261
  import { useRuntimeConfig } from './useRuntimeConfig';
263
262
  import { useSigV4, type SigV4Client } from './useSigV4';
@@ -279,7 +278,13 @@ class SigV4HttpAgent extends HttpAgent {
279
278
  config: ConstructorParameters<typeof HttpAgent>[0],
280
279
  sigV4Client: SigV4Client,
281
280
  ) {
282
- super(config);
281
+ super({
282
+ ...config,
283
+ fetch: sigV4Client.fetch as (
284
+ url: string,
285
+ init: RequestInit,
286
+ ) => Promise<Response>,
287
+ });
283
288
  this.sigV4Client = sigV4Client;
284
289
  }
285
290
 
@@ -292,20 +297,6 @@ class SigV4HttpAgent extends HttpAgent {
292
297
  return init;
293
298
  }
294
299
 
295
- // Remove this override once https://github.com/ag-ui-protocol/ag-ui/issues/1316 is fixed.
296
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
297
- override run(input: RunAgentInput): any {
298
- const sigV4Fetch = this.sigV4Client.fetch as typeof window.fetch;
299
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
300
- return new Observable<any>((subscriber) => {
301
- const originalFetch = window.fetch;
302
- window.fetch = sigV4Fetch;
303
- const sub = super.run(input).subscribe(subscriber);
304
- window.fetch = originalFetch;
305
- return () => sub.unsubscribe();
306
- });
307
- }
308
-
309
300
  override clone(): SigV4HttpAgent {
310
301
  const cloned = super.clone() as SigV4HttpAgent;
311
302
  cloned.sigV4Client = this.sigV4Client;