@aws/nx-plugin 0.98.0 → 0.99.0

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 (58) hide show
  1. package/generators.json +17 -1
  2. package/package.json +1 -1
  3. package/src/connection/agent-runtime-config.d.ts +19 -0
  4. package/src/connection/agent-runtime-config.js +52 -0
  5. package/src/connection/agent-runtime-config.js.map +1 -0
  6. package/src/connection/generator.js +15 -5
  7. package/src/connection/generator.js.map +1 -1
  8. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -17
  9. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
  10. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +3 -3
  11. package/src/py/strands-agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +29 -0
  12. package/src/py/strands-agent/a2a-connection/generator.d.ts +10 -0
  13. package/src/py/strands-agent/a2a-connection/generator.js +164 -0
  14. package/src/py/strands-agent/a2a-connection/generator.js.map +1 -0
  15. package/src/py/strands-agent/a2a-connection/schema.d.ts +15 -0
  16. package/src/py/strands-agent/a2a-connection/schema.json +26 -0
  17. package/src/py/strands-agent/mcp-connection/__snapshots__/generator.spec.ts.snap +9 -63
  18. package/src/py/strands-agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +4 -19
  19. package/src/py/strands-agent/mcp-connection/generator.js +16 -19
  20. package/src/py/strands-agent/mcp-connection/generator.js.map +1 -1
  21. package/src/py/strands-agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -17
  22. package/src/py/strands-agent/react-connection/generator.js +8 -0
  23. package/src/py/strands-agent/react-connection/generator.js.map +1 -1
  24. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +3 -17
  25. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
  26. package/src/ts/strands-agent/__snapshots__/generator.spec.ts.snap +3 -3
  27. package/src/ts/strands-agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +27 -0
  28. package/src/ts/strands-agent/a2a-connection/generator.d.ts +10 -0
  29. package/src/ts/strands-agent/a2a-connection/generator.js +119 -0
  30. package/src/ts/strands-agent/a2a-connection/generator.js.map +1 -0
  31. package/src/ts/strands-agent/a2a-connection/schema.d.ts +15 -0
  32. package/src/ts/strands-agent/a2a-connection/schema.json +26 -0
  33. package/src/ts/strands-agent/mcp-connection/__snapshots__/generator.spec.ts.snap +9 -31
  34. package/src/ts/strands-agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +2 -9
  35. package/src/ts/strands-agent/mcp-connection/generator.js +4 -2
  36. package/src/ts/strands-agent/mcp-connection/generator.js.map +1 -1
  37. package/src/ts/strands-agent/react-connection/generator.js +8 -0
  38. package/src/ts/strands-agent/react-connection/generator.js.map +1 -1
  39. package/src/utils/agent-connection/agent-connection.d.ts +31 -3
  40. package/src/utils/agent-connection/agent-connection.js +62 -30
  41. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  42. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +134 -0
  43. package/src/utils/agent-connection/files/{core → core-mcp}/agentcore-mcp-client.ts.template +7 -22
  44. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +40 -0
  45. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +91 -0
  46. package/src/utils/agent-connection/files/py-core-auth/auth/__init__.py.template +3 -0
  47. package/src/utils/agent-connection/files/py-core-auth/auth/sigv4.py.template +48 -0
  48. package/src/utils/agent-connection/files/{py-core → py-core-mcp}/agentcore_mcp_client.py.template +2 -36
  49. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +44 -0
  50. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +2 -2
  51. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +1 -1
  52. package/src/utils/ast.d.ts +18 -0
  53. package/src/utils/ast.js +58 -9
  54. package/src/utils/ast.js.map +1 -1
  55. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +3 -16
  56. package/src/utils/versions.d.ts +1 -0
  57. package/src/utils/versions.js +1 -0
  58. package/src/utils/versions.js.map +1 -1
@@ -10,50 +10,12 @@ __all__ = ["InventoryMcpClient"]
10
10
  `;
11
11
 
12
12
  exports[`py#strands-agent#mcp-connection generator > should match snapshot for generated files > agentcore_mcp_client.py 1`] = `
13
- "import hashlib
14
- from collections.abc import Generator
15
- from typing import Any
16
-
17
- import boto3
13
+ "import boto3
18
14
  import httpx
19
- from botocore.auth import SigV4Auth
20
- from botocore.awsrequest import AWSRequest
21
15
  from mcp.client.streamable_http import streamablehttp_client
22
16
  from strands.tools.mcp.mcp_client import MCPClient
23
17
 
24
-
25
- class SigV4HTTPXAuth(httpx.Auth):
26
- """HTTPX Auth class that signs requests with AWS SigV4."""
27
-
28
- def __init__(self, credentials: Any, region: str):
29
- self.credentials = credentials
30
- self.service = "bedrock-agentcore"
31
- self.region = region
32
- self.signer = SigV4Auth(credentials, self.service, region)
33
-
34
- def auth_flow(
35
- self, request: httpx.Request
36
- ) -> Generator[httpx.Request, httpx.Response, None]:
37
- headers = dict(request.headers)
38
-
39
- headers.pop("connection", None)
40
- headers["x-amz-content-sha256"] = hashlib.sha256(
41
- request.content if request.content else b""
42
- ).hexdigest()
43
-
44
- aws_request = AWSRequest(
45
- method=request.method,
46
- url=str(request.url),
47
- data=request.content,
48
- headers=headers,
49
- )
50
-
51
- self.signer.add_auth(aws_request)
52
-
53
- request.headers.clear()
54
- request.headers.update(dict(aws_request.headers))
55
-
56
- yield request
18
+ from .auth import SigV4HTTPXAuth
57
19
 
58
20
 
59
21
  class AgentCoreMCPClient:
@@ -104,7 +66,7 @@ class AgentCoreMCPClient:
104
66
  return AgentCoreMCPClient._create(
105
67
  agent_runtime_arn=agent_runtime_arn,
106
68
  session_id=session_id,
107
- auth_handler=SigV4HTTPXAuth(credentials, region),
69
+ auth_handler=SigV4HTTPXAuth(credentials, "bedrock-agentcore", region),
108
70
  )
109
71
 
110
72
  @staticmethod
@@ -132,12 +94,13 @@ class AgentCoreMCPClient:
132
94
  exports[`py#strands-agent#mcp-connection generator > should match snapshot for generated files > inventory_mcp_client.py 1`] = `
133
95
  "import os
134
96
 
135
- from aws_lambda_powertools.utilities import parameters
136
- from botocore.config import Config
137
97
  from mcp.client.streamable_http import streamablehttp_client
138
98
  from strands.tools.mcp.mcp_client import MCPClient
139
99
 
140
100
  from proj_agent_connection.core.agentcore_mcp_client import AgentCoreMCPClient
101
+ from proj_agent_connection.core.runtime_config import (
102
+ get_connected_agent_runtime_arn,
103
+ )
141
104
 
142
105
 
143
106
  class InventoryMcpClient:
@@ -155,33 +118,16 @@ class InventoryMcpClient:
155
118
  if os.environ.get("SERVE_LOCAL") == "true":
156
119
  return MCPClient(lambda: streamablehttp_client("http://localhost:8082/mcp"))
157
120
 
158
- arn = InventoryMcpClient._get_arn()
159
121
  return AgentCoreMCPClient.with_iam_auth(
160
- agent_runtime_arn=arn,
122
+ agent_runtime_arn=get_connected_agent_runtime_arn("InventoryMcp"),
161
123
  session_id=session_id,
162
124
  )
163
-
164
- @staticmethod
165
- def _get_arn() -> str:
166
- """Resolve the InventoryMcp ARN from runtime config (AppConfig)."""
167
- region = os.environ.get("AWS_REGION", os.environ.get("AWS_DEFAULT_REGION"))
168
- provider_kwargs = {}
169
- if region:
170
- provider_kwargs["config"] = Config(region_name=region)
171
- provider = parameters.AppConfigProvider(
172
- environment="default",
173
- application=os.environ["RUNTIME_CONFIG_APP_ID"],
174
- **provider_kwargs,
175
- )
176
- config = provider.get("connection", transform="json")
177
- return config["agentRuntimes"]["InventoryMcp"]
178
125
  "
179
126
  `;
180
127
 
181
128
  exports[`py#strands-agent#mcp-connection generator > should match snapshot for generated files > transformed-agent.py 1`] = `
182
- "from contextlib import contextmanager
183
-
184
- from proj_agent_connection import InventoryMcpClient
129
+ "from proj_agent_connection import InventoryMcpClient
130
+ from contextlib import contextmanager
185
131
 
186
132
  from strands import Agent, tool
187
133
  from strands_tools import current_time
@@ -1,11 +1,12 @@
1
1
  import os
2
2
 
3
- from aws_lambda_powertools.utilities import parameters
4
- from botocore.config import Config
5
3
  from mcp.client.streamable_http import streamablehttp_client
6
4
  from strands.tools.mcp.mcp_client import MCPClient
7
5
 
8
6
  from <%- agentConnectionModuleName %>.core.agentcore_mcp_client import AgentCoreMCPClient
7
+ from <%- agentConnectionModuleName %>.core.runtime_config import (
8
+ get_connected_agent_runtime_arn,
9
+ )
9
10
 
10
11
 
11
12
  class <%- mcpServerClassName %>Client:
@@ -23,23 +24,7 @@ class <%- mcpServerClassName %>Client:
23
24
  if os.environ.get("SERVE_LOCAL") == "true":
24
25
  return MCPClient(lambda: streamablehttp_client("http://localhost:<%- mcpServerPort %>/mcp"))
25
26
 
26
- arn = <%- mcpServerClassName %>Client._get_arn()
27
27
  return AgentCoreMCPClient.with_iam_auth(
28
- agent_runtime_arn=arn,
28
+ agent_runtime_arn=get_connected_agent_runtime_arn("<%- mcpServerClassName %>"),
29
29
  session_id=session_id,
30
30
  )
31
-
32
- @staticmethod
33
- def _get_arn() -> str:
34
- """Resolve the <%- mcpServerClassName %> ARN from runtime config (AppConfig)."""
35
- region = os.environ.get("AWS_REGION", os.environ.get("AWS_DEFAULT_REGION"))
36
- provider_kwargs = {}
37
- if region:
38
- provider_kwargs["config"] = Config(region_name=region)
39
- provider = parameters.AppConfigProvider(
40
- environment="default",
41
- application=os.environ["RUNTIME_CONFIG_APP_ID"],
42
- **provider_kwargs,
43
- )
44
- config = provider.get("connection", transform="json")
45
- return config["agentRuntimes"]["<%- mcpServerClassName %>"]
@@ -31,11 +31,21 @@ const pyStrandsAgentMcpConnectionGenerator = async (tree, options) => {
31
31
  const mcpServerClassName = mcpComponent.rc;
32
32
  const mcpServerSnakeCase = (0, names_1.snakeCase)(mcpServerClassName);
33
33
  const mcpServerPort = mcpComponent.port ?? 8000;
34
- // 1. Ensure the shared Python agent-connection project exists
34
+ // 1. Ensure the shared Python agent-connection project exists + has the
35
+ // MCP core client and its shared SigV4 auth helper.
35
36
  await (0, agent_connection_1.ensurePythonAgentConnectionProject)(tree);
37
+ (0, agent_connection_1.addPythonCoreClient)(tree, 'auth');
38
+ (0, agent_connection_1.addPythonCoreClient)(tree, 'mcp');
36
39
  const agentConnectionProjectDir = (0, agent_connection_1.getPythonAgentConnectionProjectDir)(tree);
37
40
  const agentConnectionModuleName = (0, agent_connection_1.getPythonAgentConnectionModuleName)(tree);
38
41
  const agentConnectionPackageName = (0, agent_connection_1.getPythonAgentConnectionPackageName)(tree);
42
+ // Python deps required by the MCP core client + shared auth helper.
43
+ (0, py_1.addDependenciesToPyProjectToml)(tree, agentConnectionProjectDir, [
44
+ 'boto3',
45
+ 'httpx',
46
+ 'mcp',
47
+ 'strands-agents',
48
+ ]);
39
49
  // 2. Generate the per-connection client into the shared agent-connection project
40
50
  const appDir = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, 'app');
41
51
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'agent-connection', 'app'), appDir, {
@@ -52,10 +62,6 @@ const pyStrandsAgentMcpConnectionGenerator = async (tree, options) => {
52
62
  // Add re-export to module __init__.py
53
63
  const moduleInitPath = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, '__init__.py');
54
64
  await (0, agent_connection_1.addPythonReExport)(tree, moduleInitPath, `.app.${mcpServerSnakeCase}_client`, `${mcpServerClassName}Client`);
55
- // Add aws-lambda-powertools dependency to the agent-connection project
56
- (0, py_1.addDependenciesToPyProjectToml)(tree, agentConnectionProjectDir, [
57
- 'aws-lambda-powertools',
58
- ]);
59
65
  // 3. Transform agent.py to add MCP client import and usage
60
66
  const agentSourceDir = (0, devkit_1.joinPathFragments)(sourceProject.root, agentComponent.path ?? 'src');
61
67
  const agentFilePath = (0, devkit_1.joinPathFragments)(agentSourceDir, 'agent.py');
@@ -93,23 +99,14 @@ const pyStrandsAgentMcpConnectionGenerator = async (tree, options) => {
93
99
  };
94
100
  exports.pyStrandsAgentMcpConnectionGenerator = pyStrandsAgentMcpConnectionGenerator;
95
101
  /**
96
- * Add an import for the MCP client class to agent.py using GritQL.
102
+ * Add an import for the MCP client class to agent.py.
97
103
  *
98
- * If the agent-connection module is already imported, appends the new client
99
- * using +=. Otherwise adds a new import statement after contextlib.
100
- * Ruff will sort imports correctly when formatFilesInSubtree runs.
104
+ * Delegates to the shared `addPythonDestructuredImport` helper which either
105
+ * appends to an existing `from <module> import ...` line or prepends a new
106
+ * import statement (ruff sorts imports on the next format pass).
101
107
  */
102
108
  const addImportToAgentFile = async (tree, filePath, agentConnectionModuleName, clientClassName) => {
103
- if (await (0, ast_1.matchGritQL)(tree, filePath, `\`${clientClassName}\``)) {
104
- return;
105
- }
106
- // Try to append to existing import from the same module using +=
107
- const appended = await (0, ast_1.applyGritQL)(tree, filePath, py(`\`from ${agentConnectionModuleName} import $names\` where { $names += \`, ${clientClassName}\` }`));
108
- if (!appended) {
109
- // No existing import — add a new one after the first import.
110
- // Ruff will sort it into the correct position.
111
- await (0, ast_1.applyGritQL)(tree, filePath, py(`\`from contextlib import contextmanager\` as $imp => \`$imp\nfrom ${agentConnectionModuleName} import ${clientClassName}\``));
112
- }
109
+ await (0, ast_1.addPythonDestructuredImport)(tree, filePath, [clientClassName], agentConnectionModuleName);
113
110
  };
114
111
  /**
115
112
  * Add MCP tools to the Agent's tools array using GritQL.
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/mcp-connection/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAQoB;AAEpB,0CAI2B;AAC3B,oDAAyE;AACzE,kDAA6D;AAC7D,gDAAiD;AACjD,0CAG2B;AAC3B,uFAM0D;AAC1D,4CAA8D;AAE9D,qDAAqD;AACrD,MAAM,EAAE,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,oBAAoB,OAAO,EAAE,CAAC;AAEjD,QAAA,8CAA8C,GACzD,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,MAAM,oCAAoC,GAAG,KAAK,EACvD,IAAU,EACV,OAAmD,EACvB,EAAE;IAC9B,MAAM,aAAa,GAAG,IAAA,wCAAmC,EACvD,IAAI,EACJ,OAAO,CAAC,aAAa,CACtB,CAAC;IACF,MAAM,aAAa,GAAG,IAAA,wCAAmC,EACvD,IAAI,EACJ,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAE7C,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,0EAA0E,YAAY,CAAC,IAAI,WAAW,YAAY,CAAC,IAAI,mBAAmB,CAC3I,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC;IAC3D,MAAM,kBAAkB,GAAG,YAAY,CAAC,EAAY,CAAC;IACrD,MAAM,kBAAkB,GAAG,IAAA,iBAAS,EAAC,kBAAkB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC;IAEhD,8DAA8D;IAC9D,MAAM,IAAA,qDAAkC,EAAC,IAAI,CAAC,CAAC;IAE/C,MAAM,yBAAyB,GAAG,IAAA,qDAAkC,EAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,yBAAyB,GAAG,IAAA,qDAAkC,EAAC,IAAI,CAAC,CAAC;IAC3E,MAAM,0BAA0B,GAAG,IAAA,sDAAmC,EAAC,IAAI,CAAC,CAAC;IAE7E,iFAAiF;IACjF,MAAM,MAAM,GAAG,IAAA,0BAAiB,EAC9B,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,CACN,CAAC;IACF,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAChE,MAAM,EACN;QACE,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;QACb,yBAAyB;KAC1B,EACD,EAAE,iBAAiB,EAAE,0BAAiB,CAAC,YAAY,EAAE,CACtD,CAAC;IAEF,gCAAgC;IAChC,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAA,0BAAiB,EACtC,yBAAyB,EACzB,yBAAyB,EACzB,aAAa,CACd,CAAC;IACF,MAAM,IAAA,oCAAiB,EACrB,IAAI,EACJ,cAAc,EACd,QAAQ,kBAAkB,SAAS,EACnC,GAAG,kBAAkB,QAAQ,CAC9B,CAAC;IAEF,uEAAuE;IACvE,IAAA,mCAA8B,EAAC,IAAI,EAAE,yBAAyB,EAAE;QAC9D,uBAAuB;KACxB,CAAC,CAAC;IAEH,2DAA2D;IAC3D,MAAM,cAAc,GAAG,IAAA,0BAAiB,EACtC,aAAa,CAAC,IAAI,EAClB,cAAc,CAAC,IAAI,IAAI,KAAK,CAC7B,CAAC;IACF,MAAM,aAAa,GAAG,IAAA,0BAAiB,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEpE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,GAAG,kBAAkB,QAAQ,CAAC;QACtD,MAAM,aAAa,GAAG,kBAAkB,CAAC;QAEzC,MAAM,oBAAoB,CACxB,IAAI,EACJ,aAAa,EACb,yBAAyB,EACzB,eAAe,CAChB,CAAC;QACF,MAAM,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAC7D,MAAM,sBAAsB,CAC1B,IAAI,EACJ,aAAa,EACb,eAAe,EACf,aAAa,CACd,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAA,sCAAiC,EAC/B,IAAI,EACJ,aAAa,CAAC,IAAI,EAClB,0BAA0B,CAC3B,CAAC;IAEF,4CAA4C;IAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,IAAI,OAAO,CAAC;IACjD,MAAM,oBAAoB,GAAG,GAAG,SAAS,cAAc,CAAC;IACxD,MAAM,uBAAuB,GAAG,GAAG,gBAAgB,cAAc,CAAC;IAElE,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,GAAG;YACjB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC3B;gBACE,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC9B,MAAM,EAAE,uBAAuB;aAChC;SACF,CAAC;QACF,IAAA,mCAA0B,EAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,IAAA,yCAA+B,EAAC,IAAI,EAAE;QAC1C,sDAA8C;KAC/C,CAAC,CAAC;IAEH,MAAM,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC;IACjC,OAAO,GAAG,EAAE;QACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC,CAAC;AA7IW,QAAA,oCAAoC,wCA6I/C;AAEF;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,KAAK,EAChC,IAAU,EACV,QAAgB,EAChB,yBAAiC,EACjC,eAAuB,EACR,EAAE;IACjB,IAAI,MAAM,IAAA,iBAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,eAAe,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO;IACT,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAW,EAChC,IAAI,EACJ,QAAQ,EACR,EAAE,CACA,UAAU,yBAAyB,0CAA0C,eAAe,MAAM,CACnG,CACF,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,6DAA6D;QAC7D,+CAA+C;QAC/C,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,QAAQ,EACR,EAAE,CACA,qEAAqE,yBAAyB,WAAW,eAAe,IAAI,CAC7H,CACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAC9B,IAAU,EACV,QAAgB,EAChB,aAAqB,EACN,EAAE;IACjB,IACE,MAAM,IAAA,iBAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,aAAa,sBAAsB,CAAC,EAC3E,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,QAAQ,EACR,EAAE,CAAC;2BACoB,aAAa;;kBAEtB,aAAa;;kDAEmB,aAAa;;EAE7D,CAAC,CACA,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,KAAK,EAClC,IAAU,EACV,QAAgB,EAChB,eAAuB,EACvB,aAAqB,EACN,EAAE;IACjB,IAAI,MAAM,IAAA,iBAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,eAAe,eAAe,CAAC,EAAE,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,6EAA6E;IAC7E,MAAM,WAAW,GAAG,MAAM,IAAA,iBAAW,EACnC,IAAI,EACJ,QAAQ,EACR,EAAE,CAAC;6BACsB,aAAa;kBACxB,aAAa;EAC7B,CAAC,CACA,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,wEAAwE;QACxE,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,QAAQ,EACR,EAAE,CAAC;+BACsB,eAAe;iBAC7B,aAAa,MAAM,eAAe;EACjD,CAAC,CACE,CAAC;QACF,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,QAAQ,EACR,EAAE,CAAC;;;;;MAKD,aAAa,MAAM,eAAe;;UAE9B,aAAa;;gBAEP,CAAC,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,4CAAoC,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -104,23 +104,9 @@ const useCreateTestAgentClient = (): TestAgent => {
104
104
  const auth = useAuth();
105
105
  const user = auth?.user;
106
106
  const cognitoClient: typeof fetch = (url, init) => {
107
- const headers = { Authorization: \`Bearer \${user?.id_token}\` };
108
- const existingHeaders = init?.headers;
109
-
110
- return fetch(url, {
111
- ...init,
112
- headers: !existingHeaders
113
- ? headers
114
- : existingHeaders instanceof Headers
115
- ? (() => {
116
- const h = new Headers(existingHeaders);
117
- Object.entries(headers).forEach(([k, v]) => h.append(k, v));
118
- return h;
119
- })()
120
- : Array.isArray(existingHeaders)
121
- ? [...existingHeaders, ...Object.entries(headers)]
122
- : { ...existingHeaders, ...headers },
123
- });
107
+ const headers = new Headers(init?.headers);
108
+ headers.set('Authorization', \`Bearer \${user?.id_token}\`);
109
+ return fetch(url, { ...init, headers });
124
110
  };
125
111
  return useMemo(
126
112
  () =>
@@ -10,6 +10,7 @@ const format_1 = require("../../../utils/format");
10
10
  const nx_1 = require("../../../utils/nx");
11
11
  const metrics_1 = require("../../../utils/metrics");
12
12
  const react_1 = require("../../../utils/connection/open-api/react");
13
+ const agent_runtime_config_1 = require("../../../connection/agent-runtime-config");
13
14
  const names_1 = require("../../../utils/names");
14
15
  const object_1 = require("../../../utils/object");
15
16
  const serve_local_1 = require("./serve-local");
@@ -83,6 +84,13 @@ const pyStrandsAgentReactConnectionGenerator = async (tree, options) => {
83
84
  port: agentPort,
84
85
  targetComponent,
85
86
  });
87
+ // Expose the agent's runtime ARN to the frontend via the 'connection'
88
+ // namespace (which is published to runtime-config.json). The agent construct
89
+ // itself only registers to the 'agentcore' namespace by default.
90
+ await (0, agent_runtime_config_1.addAgentRuntimeToConnectionNamespace)(tree, {
91
+ agentNameKebabCase: (0, names_1.kebabCase)(agentNameClassName),
92
+ agentNameClassName,
93
+ });
86
94
  await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [
87
95
  exports.PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO,
88
96
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/react-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/react-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -104,23 +104,9 @@ const useCreateTestApiClient = (): TestApi => {
104
104
  const auth = useAuth();
105
105
  const user = auth?.user;
106
106
  const cognitoClient: typeof fetch = (url, init) => {
107
- const headers = { Authorization: \`Bearer \${user?.id_token}\` };
108
- const existingHeaders = init?.headers;
109
-
110
- return fetch(url, {
111
- ...init,
112
- headers: !existingHeaders
113
- ? headers
114
- : existingHeaders instanceof Headers
115
- ? (() => {
116
- const h = new Headers(existingHeaders);
117
- Object.entries(headers).forEach(([k, v]) => h.append(k, v));
118
- return h;
119
- })()
120
- : Array.isArray(existingHeaders)
121
- ? [...existingHeaders, ...Object.entries(headers)]
122
- : { ...existingHeaders, ...headers },
123
- });
107
+ const headers = new Headers(init?.headers);
108
+ headers.set('Authorization', \`Bearer \${user?.id_token}\`);
109
+ return fetch(url, { ...init, headers });
124
110
  };
125
111
  return useMemo(
126
112
  () =>
@@ -76,8 +76,8 @@ export class SnapshotBedrockServer extends Construct implements IGrantable {
76
76
 
77
77
  rc.grantReadAppConfig(this.agentCoreRuntime);
78
78
 
79
- rc.set('connection', 'agentRuntimes', {
80
- ...rc.get('connection').agentRuntimes,
79
+ rc.set('agentcore', 'agentRuntimes', {
80
+ ...rc.get('agentcore').agentRuntimes,
81
81
  SnapshotBedrockServer: this.agentCoreRuntime.agentRuntimeArn,
82
82
  });
83
83
  }
@@ -543,7 +543,7 @@ module "agent_core_runtime" {
543
543
  module "add_agent_runtime_to_runtime_config" {
544
544
  source = "../../../core/runtime-config/entry"
545
545
 
546
- namespace = "connection"
546
+ namespace = "agentcore"
547
547
  key = "agentRuntimes"
548
548
  value = { "TerraformSnapshotServer" = module.agent_core_runtime.agent_core_runtime_arn }
549
549
 
@@ -80,8 +80,8 @@ export class SnapshotBedrockAgent extends Construct implements IGrantable {
80
80
 
81
81
  rc.grantReadAppConfig(this.agentCoreRuntime);
82
82
 
83
- rc.set('connection', 'agentRuntimes', {
84
- ...rc.get('connection').agentRuntimes,
83
+ rc.set('agentcore', 'agentRuntimes', {
84
+ ...rc.get('agentcore').agentRuntimes,
85
85
  SnapshotBedrockAgent: this.agentCoreRuntime.agentRuntimeArn,
86
86
  });
87
87
  }
@@ -188,7 +188,7 @@ module "agent_core_runtime" {
188
188
  module "add_agent_runtime_to_runtime_config" {
189
189
  source = "../../../core/runtime-config/entry"
190
190
 
191
- namespace = "connection"
191
+ namespace = "agentcore"
192
192
  key = "agentRuntimes"
193
193
  value = { "TerraformSnapshotAgent" = module.agent_core_runtime.agent_core_runtime_arn }
194
194
 
@@ -0,0 +1,27 @@
1
+ import { A2AAgent } from '@strands-agents/sdk/a2a';
2
+ import { AgentCoreA2aClient } from '../core/agentcore-a2a-client.js';
3
+ import { getConnectedAgentRuntimeArn } from '../core/runtime-config.js';
4
+
5
+ /**
6
+ * Client for connecting to the <%- targetAgentClassName %> A2A agent.
7
+ *
8
+ * In deployed mode: resolves the AgentCore runtime ARN from runtime config
9
+ * and uses a SigV4-authenticated A2A transport.
10
+ *
11
+ * In local mode (SERVE_LOCAL env var set): connects directly to the local
12
+ * A2A server over plain HTTP.
13
+ */
14
+ export class <%- targetAgentClassName %>Client {
15
+ static async create(sessionId: string): Promise<A2AAgent> {
16
+ if (process.env.SERVE_LOCAL === 'true') {
17
+ return new A2AAgent({
18
+ url: 'http://localhost:<%- targetAgentPort %>/',
19
+ });
20
+ }
21
+
22
+ return AgentCoreA2aClient.withIamAuth({
23
+ agentRuntimeArn: await getConnectedAgentRuntimeArn('<%- targetAgentClassName %>'),
24
+ sessionId,
25
+ });
26
+ }
27
+ }
@@ -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 { GeneratorCallback, Tree } from '@nx/devkit';
6
+ import { TsStrandsAgentA2aConnectionGeneratorSchema } from './schema';
7
+ import { NxGeneratorInfo } from '../../../utils/nx';
8
+ export declare const TS_STRANDS_AGENT_A2A_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
9
+ export declare const tsStrandsAgentA2aConnectionGenerator: (tree: Tree, options: TsStrandsAgentA2aConnectionGeneratorSchema) => Promise<GeneratorCallback>;
10
+ export default tsStrandsAgentA2aConnectionGenerator;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsStrandsAgentA2aConnectionGenerator = exports.TS_STRANDS_AGENT_A2A_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 nx_1 = require("../../../utils/nx");
10
+ const metrics_1 = require("../../../utils/metrics");
11
+ const format_1 = require("../../../utils/format");
12
+ const names_1 = require("../../../utils/names");
13
+ const versions_1 = require("../../../utils/versions");
14
+ const npm_scope_1 = require("../../../utils/npm-scope");
15
+ const ast_1 = require("../../../utils/ast");
16
+ const agent_connection_1 = require("../../../utils/agent-connection/agent-connection");
17
+ exports.TS_STRANDS_AGENT_A2A_CONNECTION_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
18
+ const tsStrandsAgentA2aConnectionGenerator = 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
+ const targetAgentComponent = options.targetComponent;
23
+ if (!agentComponent || !targetAgentComponent) {
24
+ throw new Error('Both sourceComponent and targetComponent must be provided for ts#strands-agent -> a2a connections');
25
+ }
26
+ if (targetAgentComponent.protocol !== 'A2A') {
27
+ throw new Error(`Target agent '${targetAgentComponent.name}' uses the ${targetAgentComponent.protocol ?? 'HTTP'} protocol — only A2A agents can be connected as tools.`);
28
+ }
29
+ if (targetAgentComponent.auth && targetAgentComponent.auth !== 'IAM') {
30
+ throw new Error(`A2A agent connection currently only supports IAM authentication, but '${targetAgentComponent.name}' uses '${targetAgentComponent.auth}' authentication.`);
31
+ }
32
+ const targetAgentComponentName = targetAgentComponent.name ?? 'agent';
33
+ const targetAgentClassName = targetAgentComponent.rc;
34
+ const targetAgentKebabCase = (0, names_1.kebabCase)(targetAgentClassName);
35
+ const targetAgentPort = targetAgentComponent.port ?? 9000;
36
+ const npmScope = (0, npm_scope_1.getNpmScope)(tree);
37
+ // 1. Ensure the shared agent-connection project exists + has the A2A core client
38
+ await (0, agent_connection_1.ensureTypeScriptAgentConnectionProject)(tree);
39
+ (0, agent_connection_1.addTypeScriptCoreClient)(tree, 'a2a');
40
+ // 2. Generate the per-connection <Name>Client into app/
41
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'agent-connection', 'app'), (0, devkit_1.joinPathFragments)(agent_connection_1.AGENT_CONNECTION_PROJECT_DIR, 'src', 'app'), {
42
+ targetAgentKebabCase,
43
+ targetAgentClassName,
44
+ targetAgentPort,
45
+ }, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
46
+ // Add re-export to index.ts
47
+ await (0, ast_1.addStarExport)(tree, (0, devkit_1.joinPathFragments)(agent_connection_1.AGENT_CONNECTION_PROJECT_DIR, 'src', 'index.ts'), `./app/${targetAgentKebabCase}-client.js`);
48
+ // 3. AST transform agent.ts to add the remote A2A agent as a tool
49
+ const agentSourceDir = (0, devkit_1.joinPathFragments)(sourceProject.root, agentComponent.path ?? 'src');
50
+ const agentFilePath = (0, devkit_1.joinPathFragments)(agentSourceDir, 'agent.ts');
51
+ if (tree.exists(agentFilePath)) {
52
+ const clientClassName = `${targetAgentClassName}Client`;
53
+ const clientVarName = targetAgentClassName.charAt(0).toLowerCase() +
54
+ targetAgentClassName.slice(1);
55
+ const toolName = `ask${targetAgentClassName}`;
56
+ const toolVarName = `${clientVarName}Tool`;
57
+ // Ensure tool + z imports are available
58
+ await (0, ast_1.addDestructuredImport)(tree, agentFilePath, ['tool'], '@strands-agents/sdk');
59
+ await (0, ast_1.addDestructuredImport)(tree, agentFilePath, ['z'], 'zod');
60
+ await (0, ast_1.addDestructuredImport)(tree, agentFilePath, [clientClassName], `:${npmScope}/agent-connection`);
61
+ // Build the tool creation + Agent wiring. We wrap the getAgent body so
62
+ // the client can be created per-invocation (passing through sessionId).
63
+ const toolCreationBlock = `const ${clientVarName} = await ${clientClassName}.create(sessionId);
64
+ const ${toolVarName} = tool({
65
+ name: '${toolName}',
66
+ description: 'Delegate a question to the remote ${targetAgentClassName} A2A agent and return its reply.',
67
+ inputSchema: z.object({ prompt: z.string() }),
68
+ callback: async ({ prompt }) => (await ${clientVarName}.invoke(prompt)).toString(),
69
+ });`;
70
+ // Transform the arrow function that contains `new Agent`:
71
+ // - Expression body: wrap in block with tool creation and return
72
+ // - Block body: prepend tool creation statement
73
+ await (0, ast_1.applyGritQL)(tree, agentFilePath, `or { \`async ($p) => new Agent($args)\` => raw\`async ($p) => {
74
+ ${toolCreationBlock}
75
+ return new Agent($args);
76
+ }\` where { $program <: not contains \`${clientClassName}.create\` }, \`async ($p) => { $body }\` => raw\`async ($p) => {
77
+ ${toolCreationBlock}
78
+ $body
79
+ }\` where { $body <: contains \`new Agent($_)\`, $program <: not contains \`${clientClassName}.create\` } }`);
80
+ // Append the tool to the tools array (after existing items)
81
+ await (0, ast_1.applyGritQL)(tree, agentFilePath, `\`tools: [$items]\` => \`tools: [$items, ${toolVarName}]\` where { $items <: within \`new Agent($_)\`, $items <: not contains \`${toolVarName}\` }`);
82
+ }
83
+ // 4. Set up serve-local target — depend on the target agent's serve-local
84
+ // so running the host's serve-local also spins up the remote A2A agent.
85
+ const agentName = agentComponent.name ?? 'agent';
86
+ const serveLocalTargetName = `${agentName}-serve-local`;
87
+ const targetServeLocalTargetName = `${targetAgentComponentName}-serve-local`;
88
+ if (sourceProject.targets?.[serveLocalTargetName]) {
89
+ const target = sourceProject.targets[serveLocalTargetName];
90
+ target.dependsOn = [
91
+ ...(target.dependsOn ?? []),
92
+ {
93
+ projects: [targetProject.name],
94
+ target: targetServeLocalTargetName,
95
+ },
96
+ ];
97
+ (0, devkit_1.updateProjectConfiguration)(tree, sourceProject.name, sourceProject);
98
+ }
99
+ // 5. Add dependencies
100
+ (0, devkit_1.addDependenciesToPackageJson)(tree, (0, versions_1.withVersions)([
101
+ '@a2a-js/sdk',
102
+ '@strands-agents/sdk',
103
+ '@aws-lambda-powertools/parameters',
104
+ '@aws-sdk/client-appconfigdata',
105
+ 'aws4fetch',
106
+ '@aws-sdk/credential-providers',
107
+ 'zod',
108
+ ]), {});
109
+ await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [
110
+ exports.TS_STRANDS_AGENT_A2A_CONNECTION_GENERATOR_INFO,
111
+ ]);
112
+ await (0, format_1.formatFilesInSubtree)(tree);
113
+ return () => {
114
+ (0, devkit_1.installPackagesTask)(tree);
115
+ };
116
+ };
117
+ exports.tsStrandsAgentA2aConnectionGenerator = tsStrandsAgentA2aConnectionGenerator;
118
+ exports.default = exports.tsStrandsAgentA2aConnectionGenerator;
119
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/strands-agent/a2a-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { ComponentMetadata } from '../../../utils/nx';
6
+
7
+ /**
8
+ * TypeScript types for options defined in schema.json
9
+ */
10
+ export interface TsStrandsAgentA2aConnectionGeneratorSchema {
11
+ sourceProject: string;
12
+ targetProject: string;
13
+ sourceComponent?: ComponentMetadata;
14
+ targetComponent?: ComponentMetadata;
15
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "ts#strands-agent#a2a-connection",
4
+ "title": "ts#strands-agent#a2a-connection",
5
+ "description": "Connect a TypeScript Strands Agent to an A2A agent",
6
+ "type": "object",
7
+ "properties": {
8
+ "sourceProject": {
9
+ "type": "string",
10
+ "description": "The project containing the host Strands Agent"
11
+ },
12
+ "targetProject": {
13
+ "type": "string",
14
+ "description": "The project containing the target A2A Strands Agent"
15
+ },
16
+ "sourceComponent": {
17
+ "type": "string",
18
+ "description": "The host agent component name"
19
+ },
20
+ "targetComponent": {
21
+ "type": "string",
22
+ "description": "The target A2A agent component name"
23
+ }
24
+ },
25
+ "required": ["sourceProject", "targetProject"]
26
+ }