@aws/nx-plugin 0.112.1 → 0.113.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 (42) hide show
  1. package/LICENSE-THIRD-PARTY +957 -429
  2. package/package.json +1 -1
  3. package/src/py/project/generator.js +4 -0
  4. package/src/py/project/generator.js.map +1 -1
  5. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +42 -20
  6. package/src/py/strands-agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +6 -13
  7. package/src/py/strands-agent/a2a-connection/generator.js +1 -1
  8. package/src/py/strands-agent/files/a2a/main.py.template +24 -3
  9. package/src/py/strands-agent/files/ag-ui/main.py.template +3 -2
  10. package/src/py/strands-agent/files/common/agent.py.template +1 -2
  11. package/src/py/strands-agent/files/http/main.py.template +32 -13
  12. package/src/py/strands-agent/generator.js +11 -0
  13. package/src/py/strands-agent/generator.js.map +1 -1
  14. package/src/py/strands-agent/mcp-connection/__snapshots__/generator.spec.ts.snap +66 -59
  15. package/src/py/strands-agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +6 -14
  16. package/src/py/strands-agent/mcp-connection/generator.js +3 -3
  17. package/src/ts/strands-agent/__snapshots__/generator.spec.ts.snap +17 -7
  18. package/src/ts/strands-agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +6 -14
  19. package/src/ts/strands-agent/a2a-connection/generator.js +2 -3
  20. package/src/ts/strands-agent/a2a-connection/generator.js.map +1 -1
  21. package/src/ts/strands-agent/files/a2a/index.ts.template +12 -2
  22. package/src/ts/strands-agent/files/common/agent.ts.template +2 -4
  23. package/src/ts/strands-agent/files/http/init.ts.template +12 -1
  24. package/src/ts/strands-agent/files/http/router.ts.template +3 -2
  25. package/src/ts/strands-agent/generator.js +7 -0
  26. package/src/ts/strands-agent/generator.js.map +1 -1
  27. package/src/ts/strands-agent/mcp-connection/__snapshots__/generator.spec.ts.snap +46 -71
  28. package/src/ts/strands-agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +8 -19
  29. package/src/ts/strands-agent/mcp-connection/generator.js +1 -1
  30. package/src/ts/strands-agent/mcp-connection/generator.js.map +1 -1
  31. package/src/utils/agent-connection/agent-connection.js +22 -0
  32. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  33. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +46 -57
  34. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +35 -51
  35. package/src/utils/agent-connection/files/core-runtime-config/session-context.ts.template +21 -0
  36. package/src/utils/agent-connection/files/core-runtime-config/with-session-id.ts.template +27 -0
  37. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +44 -15
  38. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +50 -43
  39. package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +22 -0
  40. package/src/utils/agent-connection/files/py-core-runtime-config/with_session_id.py.template +44 -0
  41. package/src/utils/bundle/bundle.js +1 -0
  42. package/src/utils/bundle/bundle.js.map +1 -1
@@ -1,6 +1,5 @@
1
1
  import os
2
2
 
3
- from mcp.client.streamable_http import streamablehttp_client
4
3
  from strands.tools.mcp.mcp_client import MCPClient
5
4
 
6
5
  from <%- agentConnectionModuleName %>.core.agentcore_mcp_client import AgentCoreMCPClient
@@ -10,21 +9,14 @@ from <%- agentConnectionModuleName %>.core.runtime_config import (
10
9
 
11
10
 
12
11
  class <%- mcpServerClassName %>Client:
13
- """Client for connecting to the <%- mcpServerClassName %> MCP server.
14
-
15
- In deployed mode: resolves the AgentCore runtime ARN from runtime config
16
- and uses SigV4-authenticated AgentCore transport.
17
-
18
- In local mode (SERVE_LOCAL env var set): connects directly
19
- to the local MCP server via Streamable HTTP.
20
- """
12
+ """Client for the <%- mcpServerClassName %> MCP server."""
21
13
 
22
14
  @staticmethod
23
- def create(session_id: str) -> MCPClient:
15
+ def create() -> MCPClient:
24
16
  if os.environ.get("SERVE_LOCAL") == "true":
25
- return MCPClient(lambda: streamablehttp_client("http://localhost:<%- mcpServerPort %>/mcp"))
26
-
17
+ return AgentCoreMCPClient.without_auth(
18
+ "http://localhost:<%- mcpServerPort %>/mcp"
19
+ )
27
20
  return AgentCoreMCPClient.with_iam_auth(
28
- agent_runtime_arn=get_connected_agent_runtime_arn("<%- mcpServerClassName %>"),
29
- session_id=session_id,
21
+ get_connected_agent_runtime_arn("<%- mcpServerClassName %>")
30
22
  )
@@ -141,9 +141,9 @@ const addMcpClientToGetAgent = async (tree, filePath, clientClassName, clientVar
141
141
  }`));
142
142
  if (addedToWith) {
143
143
  // Subsequent connection — also add creation line after the existing one
144
- await (0, ast_1.applyGritQL)(tree, filePath, py(`\`$var = $cls.create(session_id=session_id)\` as $stmt where {
144
+ await (0, ast_1.applyGritQL)(tree, filePath, py(`\`$var = $cls.create()\` as $stmt where {
145
145
  $program <: not contains \`${clientClassName}.create\`,
146
- $stmt += \`\n${clientVarName} = ${clientClassName}.create(session_id=session_id)\`
146
+ $stmt += \`\n${clientVarName} = ${clientClassName}.create()\`
147
147
  }`));
148
148
  return;
149
149
  }
@@ -155,7 +155,7 @@ const addMcpClientToGetAgent = async (tree, filePath, clientClassName, clientVar
155
155
  $body <: contains \`yield Agent($_)\`,
156
156
  $body <: not contains \`with ($_, ): $_\`
157
157
  } => \`def get_agent($params):
158
- ${clientVarName} = ${clientClassName}.create(session_id=session_id)
158
+ ${clientVarName} = ${clientClassName}.create()
159
159
  with (
160
160
  ${clientVarName},
161
161
  ):
@@ -641,15 +641,13 @@ const multiply = tool({
641
641
  callback: ({ a, b }) => a * b,
642
642
  });
643
643
 
644
- export const getAgent = async (sessionId: string) => {
645
- console.log(\`Creating agent for session \${sessionId}\`);
646
- return new Agent({
644
+ export const getAgent = async () =>
645
+ new Agent({
647
646
  systemPrompt: \`You are a mathematical wizard.
648
647
  Use your tools for mathematical tasks.
649
648
  Refer to tools as your 'spellbook'.\`,
650
649
  tools: [multiply],
651
650
  });
652
- };
653
651
  "
654
652
  `;
655
653
 
@@ -915,6 +913,7 @@ console.log(\`TRPC server listening on port \${PORT}\`);
915
913
 
916
914
  exports[`ts#strands-agent generator > should match snapshot for generated files > strands-agent-init.ts 1`] = `
917
915
  "import { initTRPC } from '@trpc/server';
916
+ import { enterSessionContext } from ':proj/agent-connection';
918
917
 
919
918
  export interface Context {
920
919
  sessionId: string;
@@ -922,7 +921,17 @@ export interface Context {
922
921
 
923
922
  export const t = initTRPC.context<Context>().create();
924
923
 
925
- export const publicProcedure = t.procedure;
924
+ /**
925
+ * Bind the inbound session onto the current async flow so downstream MCP /
926
+ * A2A clients forward it on outbound calls. Uses \`enterWith\` so the binding
927
+ * persists across subscription iterations.
928
+ */
929
+ const sessionMiddleware = t.middleware(({ ctx, next }) => {
930
+ enterSessionContext(ctx.sessionId);
931
+ return next();
932
+ });
933
+
934
+ export const publicProcedure = t.procedure.use(sessionMiddleware);
926
935
  "
927
936
  `;
928
937
 
@@ -930,10 +939,13 @@ exports[`ts#strands-agent generator > should match snapshot for generated files
930
939
  "import { publicProcedure, t } from './init.js';
931
940
  import { z } from 'zod';
932
941
  import { zAsyncIterable } from './schema/z-async-iterable.js';
942
+ import { withSessionId } from ':proj/agent-connection';
933
943
  import { getAgent } from './agent.js';
934
944
 
935
945
  export const router = t.router;
936
946
 
947
+ const agent = withSessionId(getAgent);
948
+
937
949
  export const appRouter = router({
938
950
  invoke: publicProcedure
939
951
  .input(z.object({ message: z.string() }))
@@ -944,8 +956,6 @@ export const appRouter = router({
944
956
  }),
945
957
  )
946
958
  .subscription(async function* (opts) {
947
- const agent = await getAgent(opts.ctx.sessionId);
948
-
949
959
  for await (const event of agent.stream(opts.input.message)) {
950
960
  if (
951
961
  event.type === 'modelStreamUpdateEvent' &&
@@ -2,26 +2,18 @@ import { A2AAgent } from '@strands-agents/sdk/a2a';
2
2
  import { AgentCoreA2aClient } from '../core/agentcore-a2a-client.js';
3
3
  import { getConnectedAgentRuntimeArn } from '../core/runtime-config.js';
4
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
- */
5
+ /** Client for the <%- targetAgentClassName %> A2A agent. */
14
6
  export class <%- targetAgentClassName %>Client {
15
- static async create(sessionId: string): Promise<A2AAgent> {
7
+ static async create(): Promise<A2AAgent> {
16
8
  if (process.env.SERVE_LOCAL === 'true') {
17
- return new A2AAgent({
9
+ return AgentCoreA2aClient.withoutAuth({
18
10
  url: 'http://localhost:<%- targetAgentPort %>/',
19
11
  });
20
12
  }
21
-
22
13
  return AgentCoreA2aClient.withIamAuth({
23
- agentRuntimeArn: await getConnectedAgentRuntimeArn('<%- targetAgentClassName %>'),
24
- sessionId,
14
+ agentRuntimeArn: await getConnectedAgentRuntimeArn(
15
+ '<%- targetAgentClassName %>',
16
+ ),
25
17
  });
26
18
  }
27
19
  }
@@ -58,9 +58,8 @@ const tsStrandsAgentA2aConnectionGenerator = async (tree, options) => {
58
58
  await (0, ast_1.addDestructuredImport)(tree, agentFilePath, ['tool'], '@strands-agents/sdk');
59
59
  await (0, ast_1.addDestructuredImport)(tree, agentFilePath, ['z'], 'zod');
60
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);
61
+ // Build the tool creation + Agent wiring.
62
+ const toolCreationBlock = `const ${clientVarName} = await ${clientClassName}.create();
64
63
  const ${toolVarName} = tool({
65
64
  name: '${toolName}',
66
65
  description: 'Delegate a question to the remote ${targetAgentClassName} A2A agent and return its reply.',
@@ -1 +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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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/strands-agent/a2a-connection/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AAEpB,0CAK2B;AAC3B,oDAAyE;AACzE,kDAA6D;AAC7D,gDAAiD;AACjD,sDAAuD;AACvD,wDAAuD;AACvD,4CAI4B;AAC5B,uFAI0D;AAE7C,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,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAErD,IAAI,CAAC,cAAc,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,iBAAiB,oBAAoB,CAAC,IAAI,cAAc,oBAAoB,CAAC,QAAQ,IAAI,MAAM,wDAAwD,CACxJ,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,IAAI,IAAI,oBAAoB,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,yEAAyE,oBAAoB,CAAC,IAAI,WAAW,oBAAoB,CAAC,IAAI,mBAAmB,CAC1J,CAAC;IACJ,CAAC;IAED,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,IAAI,IAAI,OAAO,CAAC;IACtE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,EAAY,CAAC;IAC/D,MAAM,oBAAoB,GAAG,IAAA,iBAAS,EAAC,oBAAoB,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,IAAI,IAAI,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;IAEnC,iFAAiF;IACjF,MAAM,IAAA,yDAAsC,EAAC,IAAI,CAAC,CAAC;IACnD,IAAA,0CAAuB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAErC,wDAAwD;IACxD,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAChE,IAAA,0BAAiB,EAAC,+CAA4B,EAAE,KAAK,EAAE,KAAK,CAAC,EAC7D;QACE,oBAAoB;QACpB,oBAAoB;QACpB,eAAe;KAChB,EACD,EAAE,iBAAiB,EAAE,0BAAiB,CAAC,YAAY,EAAE,CACtD,CAAC;IAEF,4BAA4B;IAC5B,MAAM,IAAA,mBAAa,EACjB,IAAI,EACJ,IAAA,0BAAiB,EAAC,+CAA4B,EAAE,KAAK,EAAE,UAAU,CAAC,EAClE,SAAS,oBAAoB,YAAY,CAC1C,CAAC;IAEF,kEAAkE;IAClE,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,oBAAoB,QAAQ,CAAC;QACxD,MAAM,aAAa,GACjB,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAC5C,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,GAAG,aAAa,MAAM,CAAC;QAE3C,wCAAwC;QACxC,MAAM,IAAA,2BAAqB,EACzB,IAAI,EACJ,aAAa,EACb,CAAC,MAAM,CAAC,EACR,qBAAqB,CACtB,CAAC;QACF,MAAM,IAAA,2BAAqB,EAAC,IAAI,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,IAAA,2BAAqB,EACzB,IAAI,EACJ,aAAa,EACb,CAAC,eAAe,CAAC,EACjB,IAAI,QAAQ,mBAAmB,CAChC,CAAC;QAEF,0CAA0C;QAC1C,MAAM,iBAAiB,GAAG,SAAS,aAAa,YAAY,eAAe;UACrE,WAAW;aACR,QAAQ;sDACiC,oBAAoB;;6CAE7B,aAAa;MACpD,CAAC;QAEH,0DAA0D;QAC1D,iEAAiE;QACjE,gDAAgD;QAChD,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,aAAa,EACb;IACF,iBAAiB;;yCAEoB,eAAe;IACpD,iBAAiB;;8EAEyD,eAAe,eAAe,CACvG,CAAC;QAEF,4DAA4D;QAC5D,MAAM,IAAA,iBAAW,EACf,IAAI,EACJ,aAAa,EACb,4CAA4C,WAAW,4EAA4E,WAAW,MAAM,CACrJ,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,IAAI,OAAO,CAAC;IACjD,MAAM,oBAAoB,GAAG,GAAG,SAAS,cAAc,CAAC;IACxD,MAAM,0BAA0B,GAAG,GAAG,wBAAwB,cAAc,CAAC;IAE7E,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAClD,IAAA,sCAAiC,EAAC,aAAa,EAAE,oBAAoB,EAAE;YACrE,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,0BAA0B;SACnC,CAAC,CAAC;QACH,IAAA,mCAA0B,EAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,sBAAsB;IACtB,IAAA,qCAA4B,EAC1B,IAAI,EACJ,IAAA,uBAAY,EAAC;QACX,aAAa;QACb,qBAAqB;QACrB,mCAAmC;QACnC,+BAA+B;QAC/B,WAAW;QACX,+BAA+B;QAC/B,KAAK;KACN,CAAC,EACF,EAAE,CACH,CAAC;IAEF,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;AApKW,QAAA,oCAAoC,wCAoK/C;AAEF,kBAAe,4CAAoC,CAAC"}
@@ -1,16 +1,20 @@
1
1
  import { A2AExpressServer } from '@strands-agents/sdk/a2a/express';
2
- import express from 'express';
2
+ import express, { type Request, type Response, type NextFunction } from 'express';
3
+ import { randomUUID } from 'node:crypto';
4
+ import { runWithSessionId, withSessionId } from '<%- agentConnectionImport %>';
3
5
  import { getAgent } from './agent.js';
4
6
 
5
7
  const PORT = parseInt(process.env.PORT || '9000');
6
8
  const HOST = '0.0.0.0';
7
9
 
10
+ const SESSION_ID_HEADER = 'x-amzn-bedrock-agentcore-runtime-session-id';
11
+
8
12
  void (async () => {
9
13
  const httpUrl =
10
14
  process.env.AGENTCORE_RUNTIME_URL ?? `http://localhost:${PORT}/`;
11
15
 
12
16
  const server = new A2AExpressServer({
13
- agent: await getAgent('default'),
17
+ agent: withSessionId(getAgent),
14
18
  name: '<%= agentNameClassName %>',
15
19
  description:
16
20
  'A Strands Agent exposed via the Agent-to-Agent (A2A) protocol.',
@@ -21,6 +25,12 @@ void (async () => {
21
25
 
22
26
  const app = express();
23
27
  app.get('/ping', (_req, res) => res.status(200).json({ status: 'Healthy' }));
28
+ // Bind the inbound session (or a fresh UUID) for downstream MCP / A2A calls.
29
+ app.use((req: Request, _res: Response, next: NextFunction) => {
30
+ const header = req.headers[SESSION_ID_HEADER];
31
+ const sessionId = (Array.isArray(header) ? header[0] : header) ?? randomUUID();
32
+ runWithSessionId(sessionId, () => next());
33
+ });
24
34
  app.use(server.createMiddleware());
25
35
  app.listen(PORT, HOST, () => {
26
36
  console.log(`A2A server listening on ${HOST}:${PORT}`);
@@ -11,12 +11,10 @@ const multiply = tool({
11
11
  callback: ({ a, b }) => a * b,
12
12
  });
13
13
 
14
- export const getAgent = async (sessionId: string) => {
15
- console.log(`Creating agent for session ${sessionId}`);
16
- return new Agent({
14
+ export const getAgent = async () =>
15
+ new Agent({
17
16
  systemPrompt: `You are a mathematical wizard.
18
17
  Use your tools for mathematical tasks.
19
18
  Refer to tools as your 'spellbook'.`,
20
19
  tools: [multiply],
21
20
  });
22
- };
@@ -1,4 +1,5 @@
1
1
  import { initTRPC } from '@trpc/server';
2
+ import { enterSessionContext } from '<%- agentConnectionImport %>';
2
3
 
3
4
  export interface Context {
4
5
  sessionId: string;
@@ -6,4 +7,14 @@ export interface Context {
6
7
 
7
8
  export const t = initTRPC.context<Context>().create();
8
9
 
9
- export const publicProcedure = t.procedure;
10
+ /**
11
+ * Bind the inbound session onto the current async flow so downstream MCP /
12
+ * A2A clients forward it on outbound calls. Uses `enterWith` so the binding
13
+ * persists across subscription iterations.
14
+ */
15
+ const sessionMiddleware = t.middleware(({ ctx, next }) => {
16
+ enterSessionContext(ctx.sessionId);
17
+ return next();
18
+ });
19
+
20
+ export const publicProcedure = t.procedure.use(sessionMiddleware);
@@ -1,10 +1,13 @@
1
1
  import { publicProcedure, t } from './init.js';
2
2
  import { z } from 'zod';
3
3
  import { zAsyncIterable } from './schema/z-async-iterable.js';
4
+ import { withSessionId } from '<%- agentConnectionImport %>';
4
5
  import { getAgent } from './agent.js';
5
6
 
6
7
  export const router = t.router;
7
8
 
9
+ const agent = withSessionId(getAgent);
10
+
8
11
  export const appRouter = router({
9
12
  invoke: publicProcedure
10
13
  .input(z.object({ message: z.string() }))
@@ -15,8 +18,6 @@ export const appRouter = router({
15
18
  }),
16
19
  )
17
20
  .subscription(async function* (opts) {
18
- const agent = await getAgent(opts.ctx.sessionId);
19
-
20
21
  for await (const event of agent.stream(opts.input.message)) {
21
22
  if (
22
23
  event.type === 'modelStreamUpdateEvent' &&
@@ -18,6 +18,7 @@ const shared_constructs_1 = require("../../utils/shared-constructs");
18
18
  const agent_core_constructs_1 = require("../../utils/agent-core-constructs/agent-core-constructs");
19
19
  const port_1 = require("../../utils/port");
20
20
  const fs_1 = require("../../utils/fs");
21
+ const agent_connection_1 = require("../../utils/agent-connection/agent-connection");
21
22
  exports.TS_STRANDS_AGENT_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
22
23
  const tsStrandsAgentGenerator = async (tree, options) => {
23
24
  const project = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.project);
@@ -40,10 +41,16 @@ const tsStrandsAgentGenerator = async (tree, options) => {
40
41
  `Use a Python Strands Agent with protocol='AG-UI' instead, or choose 'HTTP' or 'A2A' for TypeScript. ` +
41
42
  `Track TypeScript support at https://github.com/strands-agents/sdk-typescript/issues/347`);
42
43
  }
44
+ // Ensure the shared agent-connection project exists so the server entry
45
+ // point can import `runWithSessionId` and propagate the AgentCore session
46
+ // ID to any downstream MCP / A2A clients a later connection generator
47
+ // wires into this agent.
48
+ await (0, agent_connection_1.ensureTypeScriptAgentConnectionProject)(tree);
43
49
  const templateContext = {
44
50
  name,
45
51
  agentNameClassName,
46
52
  distDir,
53
+ agentConnectionImport: `:${(0, npm_scope_1.getNpmScope)(tree)}/agent-connection`,
47
54
  };
48
55
  // Generate common files shared by both protocols
49
56
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/strands-agent/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/strands-agent/generator.ts"],"names":[],"mappings":"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"}
@@ -2,34 +2,33 @@
2
2
 
3
3
  exports[`ts#strands-agent#mcp-connection generator > should match snapshot for agent-connection src files > agent-connection-index.ts 1`] = `
4
4
  "export * from './app/inventory-mcp-client.js';
5
+ export * from './core/with-session-id.js';
6
+ export * from './core/session-context.js';
5
7
  // Export your library code here
6
8
  "
7
9
  `;
8
10
 
9
11
  exports[`ts#strands-agent#mcp-connection generator > should match snapshot for agent-connection src files > agentcore-mcp-client.ts 1`] = `
10
- "import { randomUUID } from 'node:crypto';
11
- import { McpClient } from '@strands-agents/sdk';
12
+ "import { McpClient } from '@strands-agents/sdk';
12
13
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
13
14
  import { AwsClient } from 'aws4fetch';
14
15
  import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
16
+ import { getCurrentSessionId } from './session-context.js';
17
+
18
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
15
19
 
16
20
  /**
17
- * Common options for creating an AgentCore MCP client
21
+ * Common options for creating an AgentCore MCP client.
18
22
  */
19
23
  export interface AgentCoreMcpClientOptions {
20
24
  /**
21
- * The ARN of the Bedrock AgentCore Runtime to connect to
25
+ * The ARN of the Bedrock AgentCore Runtime to connect to.
22
26
  */
23
27
  agentRuntimeArn: string;
24
- /**
25
- * Session ID to include in request headers.
26
- * Defaults to a random UUID if not provided.
27
- */
28
- sessionId?: string;
29
28
  }
30
29
 
31
30
  /**
32
- * Options for creating an AgentCore MCP client with IAM authentication
31
+ * Options for creating an AgentCore MCP client with IAM authentication.
33
32
  */
34
33
  export interface AgentCoreMcpClientIamOptions extends AgentCoreMcpClientOptions {
35
34
  /**
@@ -40,32 +39,34 @@ export interface AgentCoreMcpClientIamOptions extends AgentCoreMcpClientOptions
40
39
  }
41
40
 
42
41
  /**
43
- * Options for creating an AgentCore MCP client with JWT authentication
42
+ * Options for creating an AgentCore MCP client with JWT authentication.
44
43
  */
45
44
  export interface AgentCoreMcpClientJwtOptions extends AgentCoreMcpClientOptions {
46
45
  /**
47
- * A function which returns the JWT access token used to authenticate
46
+ * A function which returns the JWT access token used to authenticate.
48
47
  */
49
48
  accessTokenProvider: () => Promise<string>;
50
49
  }
51
50
 
52
51
  /**
53
- * Internal options for creating an AgentCore MCP client
52
+ * Options for creating an MCP client with no auth (local dev).
54
53
  */
54
+ export interface AgentCoreMcpClientNoAuthOptions {
55
+ /** Full URL of the local MCP endpoint. */
56
+ url: string;
57
+ }
58
+
55
59
  interface CreateOptions {
56
60
  url: string;
57
- sessionId?: string;
58
61
  buildHeaders?: () => Promise<Record<string, string>>;
59
62
  fetch?: typeof fetch;
60
63
  }
61
64
 
62
- /**
63
- * Factory for clients to call MCP servers hosted on Bedrock AgentCore Runtime
64
- */
65
+ /** Factory for MCP clients that forward the current async-context session. */
65
66
  export class AgentCoreMcpClient {
66
67
  /**
67
- * Construct the invocation URL for an AgentCore runtime ARN and extract the region.
68
- * ARN format: arn:partition:service:region:account-id:resource
68
+ * Construct the invocation URL for an AgentCore runtime ARN and extract
69
+ * the region. ARN format: arn:partition:service:region:account-id:resource
69
70
  */
70
71
  private static buildUrl(agentRuntimeArn: string): {
71
72
  region: string;
@@ -76,78 +77,65 @@ export class AgentCoreMcpClient {
76
77
  return { region, url };
77
78
  }
78
79
 
79
- /**
80
- * Internal method to create an MCP client
81
- */
82
80
  private static create(options: CreateOptions): McpClient {
83
81
  const {
84
82
  url,
85
- sessionId = randomUUID(),
86
83
  buildHeaders = async (): Promise<Record<string, string>> => ({}),
87
84
  fetch: customFetch,
88
85
  } = options;
89
-
90
- // Create a custom fetch that adds required headers
91
86
  const fetchWithHeaders: typeof fetch = async (input, init) => {
92
87
  const headers = new Headers(init?.headers);
93
- headers.set('X-Amzn-Bedrock-AgentCore-Runtime-Session-Id', sessionId);
94
- for (const [k, v] of Object.entries(await buildHeaders())) {
95
- headers.set(k, v);
88
+ const sessionId = getCurrentSessionId();
89
+ if (sessionId) headers.set(SESSION_HEADER, sessionId);
90
+ const extra = await buildHeaders();
91
+ for (const k of Object.keys(extra)) {
92
+ headers.set(k, extra[k]);
96
93
  }
97
- return (customFetch || fetch)(input, { ...init, headers });
94
+ return (customFetch ?? fetch)(input, { ...init, headers });
98
95
  };
99
-
100
- // Create the transport
101
96
  const transport = new StreamableHTTPClientTransport(new URL(url), {
102
97
  fetch: fetchWithHeaders,
103
98
  });
104
-
105
- // Create and return the MCP client
106
99
  return new McpClient({ transport });
107
100
  }
108
101
 
109
102
  /**
110
- * Create an MCP client with IAM (SigV4) authentication
103
+ * SigV4-authenticated client for a Bedrock AgentCore runtime.
111
104
  */
112
105
  static withIamAuth(options: AgentCoreMcpClientIamOptions): McpClient {
113
- const { agentRuntimeArn, sessionId } = options;
106
+ const { region, url } = AgentCoreMcpClient.buildUrl(
107
+ options.agentRuntimeArn,
108
+ );
114
109
  const credentialProvider =
115
110
  options.credentialProvider ?? fromNodeProviderChain();
116
- const { region, url } = AgentCoreMcpClient.buildUrl(agentRuntimeArn);
117
-
118
- // Create a SigV4 signing fetch function
119
111
  const sigv4Fetch: typeof fetch = async (...args) => {
120
- const credentials = await credentialProvider();
121
112
  const client = new AwsClient({
122
- ...credentials,
113
+ ...(await credentialProvider()),
123
114
  service: 'bedrock-agentcore',
124
115
  region,
125
116
  });
126
117
  return client.fetch(...args);
127
118
  };
128
-
129
- return AgentCoreMcpClient.create({
130
- url,
131
- sessionId,
132
- fetch: sigv4Fetch,
133
- });
119
+ return AgentCoreMcpClient.create({ url, fetch: sigv4Fetch });
134
120
  }
135
121
 
136
122
  /**
137
- * Create an MCP client with JWT authentication
123
+ * Bearer-authenticated client for a Bedrock AgentCore runtime.
138
124
  */
139
125
  static withJwtAuth(options: AgentCoreMcpClientJwtOptions): McpClient {
140
- const { agentRuntimeArn, accessTokenProvider, sessionId } = options;
141
- const { url } = AgentCoreMcpClient.buildUrl(agentRuntimeArn);
142
-
126
+ const { url } = AgentCoreMcpClient.buildUrl(options.agentRuntimeArn);
143
127
  return AgentCoreMcpClient.create({
144
128
  url,
145
- sessionId,
146
129
  buildHeaders: async () => ({
147
- Authorization: \`Bearer \${await accessTokenProvider()}\`,
130
+ Authorization: \`Bearer \${await options.accessTokenProvider()}\`,
148
131
  }),
149
132
  });
150
133
  }
134
+
135
+ /** For local dev — plain HTTP, no auth. */
136
+ static withoutAuth(options: AgentCoreMcpClientNoAuthOptions): McpClient {
137
+ return AgentCoreMcpClient.create({ url: options.url });
138
+ }
151
139
  }
152
140
  "
153
141
  `;
@@ -155,31 +143,18 @@ export class AgentCoreMcpClient {
155
143
  exports[`ts#strands-agent#mcp-connection generator > should match snapshot for agent-connection src files > inventory-mcp-client.ts 1`] = `
156
144
  "import { McpClient } from '@strands-agents/sdk';
157
145
  import { AgentCoreMcpClient } from '../core/agentcore-mcp-client.js';
158
- import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
159
146
  import { getConnectedAgentRuntimeArn } from '../core/runtime-config.js';
160
147
 
161
- /**
162
- * Client for connecting to the InventoryMcp MCP server.
163
- *
164
- * In deployed mode: resolves the AgentCore runtime ARN from runtime config
165
- * and uses SigV4-authenticated AgentCore transport.
166
- *
167
- * In local mode (SERVE_LOCAL env var set): connects directly
168
- * to the local MCP server via Streamable HTTP.
169
- */
148
+ /** Client for the InventoryMcp MCP server. */
170
149
  export class InventoryMcpClient {
171
- static async create(sessionId: string): Promise<McpClient> {
150
+ static async create(): Promise<McpClient> {
172
151
  if (process.env.SERVE_LOCAL === 'true') {
173
- // Local development: connect directly via Streamable HTTP
174
- const transport = new StreamableHTTPClientTransport(
175
- new URL('http://localhost:8082/mcp'),
176
- );
177
- return new McpClient({ transport });
152
+ return AgentCoreMcpClient.withoutAuth({
153
+ url: 'http://localhost:8082/mcp',
154
+ });
178
155
  }
179
-
180
156
  return AgentCoreMcpClient.withIamAuth({
181
157
  agentRuntimeArn: await getConnectedAgentRuntimeArn('InventoryMcp'),
182
- sessionId,
183
158
  });
184
159
  }
185
160
  }
@@ -199,7 +174,7 @@ const multiply = tool({
199
174
  });
200
175
 
201
176
  export const getAgent = async (sessionId: string) => {
202
- const inventoryMcp = await InventoryMcpClient.create(sessionId);
177
+ const inventoryMcp = await InventoryMcpClient.create();
203
178
  return new Agent({
204
179
  systemPrompt: 'You are a mathematical wizard.',
205
180
  tools: [inventoryMcp, multiply],
@@ -1,30 +1,19 @@
1
1
  import { McpClient } from '@strands-agents/sdk';
2
2
  import { AgentCoreMcpClient } from '../core/agentcore-mcp-client.js';
3
- import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
4
3
  import { getConnectedAgentRuntimeArn } from '../core/runtime-config.js';
5
4
 
6
- /**
7
- * Client for connecting to the <%- mcpServerClassName %> MCP server.
8
- *
9
- * In deployed mode: resolves the AgentCore runtime ARN from runtime config
10
- * and uses SigV4-authenticated AgentCore transport.
11
- *
12
- * In local mode (SERVE_LOCAL env var set): connects directly
13
- * to the local MCP server via Streamable HTTP.
14
- */
5
+ /** Client for the <%- mcpServerClassName %> MCP server. */
15
6
  export class <%- mcpServerClassName %>Client {
16
- static async create(sessionId: string): Promise<McpClient> {
7
+ static async create(): Promise<McpClient> {
17
8
  if (process.env.SERVE_LOCAL === 'true') {
18
- // Local development: connect directly via Streamable HTTP
19
- const transport = new StreamableHTTPClientTransport(
20
- new URL('http://localhost:<%- mcpServerPort %>/mcp'),
21
- );
22
- return new McpClient({ transport });
9
+ return AgentCoreMcpClient.withoutAuth({
10
+ url: 'http://localhost:<%- mcpServerPort %>/mcp',
11
+ });
23
12
  }
24
-
25
13
  return AgentCoreMcpClient.withIamAuth({
26
- agentRuntimeArn: await getConnectedAgentRuntimeArn('<%- mcpServerClassName %>'),
27
- sessionId,
14
+ agentRuntimeArn: await getConnectedAgentRuntimeArn(
15
+ '<%- mcpServerClassName %>',
16
+ ),
28
17
  });
29
18
  }
30
19
  }
@@ -50,7 +50,7 @@ const tsStrandsAgentMcpConnectionGenerator = async (tree, options) => {
50
50
  const clientVarName = mcpServerClassName.charAt(0).toLowerCase() + mcpServerClassName.slice(1);
51
51
  // Add import for the client
52
52
  await (0, ast_1.addDestructuredImport)(tree, agentFilePath, [clientClassName], `:${npmScope}/agent-connection`);
53
- const clientCreationStmt = `const ${clientVarName} = await ${clientClassName}.create(sessionId);`;
53
+ const clientCreationStmt = `const ${clientVarName} = await ${clientClassName}.create();`;
54
54
  // Transform the arrow function that contains `new Agent`:
55
55
  // - Expression body: wrap in block with client creation and return
56
56
  // - Block body: prepend client creation statement
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/strands-agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/strands-agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}