@aws/nx-plugin 1.0.0-rc.20 → 1.0.0-rc.22

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 (46) hide show
  1. package/package.json +1 -1
  2. package/src/license/generator.js +22 -8
  3. package/src/license/generator.js.map +1 -1
  4. package/src/license/known-exceptions.d.ts +1 -0
  5. package/src/license/known-exceptions.js +13 -1
  6. package/src/license/known-exceptions.js.map +1 -1
  7. package/src/py/agent/__snapshots__/generator.spec.ts.snap +154 -0
  8. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +28 -0
  9. package/src/py/agent/a2a-connection/generator.js +58 -29
  10. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  11. package/src/py/agent/files/a2a-langchain/main.py.template +89 -0
  12. package/src/py/agent/files/ag-ui-langchain/main.py.template +73 -0
  13. package/src/py/agent/files/common-langchain/agent.py.template +30 -0
  14. package/src/py/agent/files/http-langchain/main.py.template +84 -0
  15. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
  16. package/src/py/agent/gateway-connection/generator.js +14 -7
  17. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  18. package/src/py/agent/generator.js +68 -12
  19. package/src/py/agent/generator.js.map +1 -1
  20. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +30 -0
  21. package/src/py/agent/mcp-connection/generator.js +14 -9
  22. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  23. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  24. package/src/py/agent/react-connection/serve-local.js +9 -1
  25. package/src/py/agent/react-connection/serve-local.js.map +1 -1
  26. package/src/py/agent/schema.d.ts +1 -1
  27. package/src/py/agent/schema.json +1 -1
  28. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +3 -0
  29. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +1 -1
  30. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  31. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +6 -0
  32. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +6 -0
  33. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +3 -3
  34. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  35. package/src/utils/agent-connection/agent-connection.d.ts +50 -7
  36. package/src/utils/agent-connection/agent-connection.js +138 -8
  37. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  38. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +99 -0
  39. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  40. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  41. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +3 -0
  42. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +3 -0
  43. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +1 -1
  44. package/src/utils/versions.d.ts +6 -0
  45. package/src/utils/versions.js +6 -0
  46. package/src/utils/versions.js.map +1 -1
@@ -19,7 +19,7 @@
19
19
  "type": "string",
20
20
  "description": "The agent SDK to use.",
21
21
  "x-prompt": "Which agent SDK would you like to use?",
22
- "enum": ["strands"],
22
+ "enum": ["strands", "langchain"],
23
23
  "default": "strands",
24
24
  "x-priority": "important"
25
25
  },
@@ -4647,6 +4647,9 @@ resource "aws_api_gateway_method" "proxy_method" {
4647
4647
 
4648
4648
  authorization = "COGNITO_USER_POOLS"
4649
4649
  authorizer_id = aws_api_gateway_authorizer.cognito_authorizer.id
4650
+ # Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
4651
+ # and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
4652
+ authorization_scopes = ["openid", "aws.cognito.signin.user.admin"]
4650
4653
 
4651
4654
  request_parameters = {
4652
4655
  "method.request.path.proxy" = true
@@ -114,7 +114,7 @@ const useCreateTestApiClient = (): TestApi => {
114
114
  const user = auth?.user;
115
115
  const cognitoClient: typeof fetch = (url, init) => {
116
116
  const headers = new Headers(init?.headers);
117
- headers.set('Authorization', \`Bearer \${user?.id_token}\`);
117
+ headers.set('Authorization', \`Bearer \${user?.access_token}\`);
118
118
  return fetch(url, { ...init, headers });
119
119
  };
120
120
  return useMemo(
@@ -105,7 +105,7 @@ const useCreateTestApiClient = (): TestApi => {
105
105
  const user = auth?.user;
106
106
  const cognitoClient: typeof fetch = (url, init) => {
107
107
  const headers = new Headers(init?.headers);
108
- headers.set('Authorization', \`Bearer \${user?.id_token}\`);
108
+ headers.set('Authorization', \`Bearer \${user?.access_token}\`);
109
109
  return fetch(url, { ...init, headers });
110
110
  };
111
111
  return useMemo(
@@ -127,6 +127,9 @@ export class TestApi<
127
127
  authorizer: new CognitoUserPoolsAuthorizer(scope, 'TestApiAuthorizer', {
128
128
  cognitoUserPools: [props.identity.userPool],
129
129
  }),
130
+ // Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
131
+ // and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
132
+ authorizationScopes: ['openid', 'aws.cognito.signin.user.admin'],
130
133
  },
131
134
  deployOptions: {
132
135
  tracingEnabled: true,
@@ -2197,6 +2200,9 @@ resource "aws_api_gateway_method" "proxy_method" {
2197
2200
 
2198
2201
  authorization = "COGNITO_USER_POOLS"
2199
2202
  authorizer_id = aws_api_gateway_authorizer.cognito_authorizer.id
2203
+ # Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
2204
+ # and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
2205
+ authorization_scopes = ["openid", "aws.cognito.signin.user.admin"]
2200
2206
 
2201
2207
  request_parameters = {
2202
2208
  "method.request.path.proxy" = true
@@ -478,6 +478,9 @@ export class TestApi<
478
478
  authorizer: new CognitoUserPoolsAuthorizer(scope, 'TestApiAuthorizer', {
479
479
  cognitoUserPools: [props.identity.userPool],
480
480
  }),
481
+ // Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
482
+ // and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
483
+ authorizationScopes: ['openid', 'aws.cognito.signin.user.admin'],
481
484
  },
482
485
  deployOptions: {
483
486
  tracingEnabled: true,
@@ -5641,6 +5644,9 @@ resource "aws_api_gateway_method" "proxy_method" {
5641
5644
 
5642
5645
  authorization = "COGNITO_USER_POOLS"
5643
5646
  authorizer_id = aws_api_gateway_authorizer.cognito_authorizer.id
5647
+ # Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
5648
+ # and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
5649
+ authorization_scopes = ["openid", "aws.cognito.signin.user.admin"]
5644
5650
 
5645
5651
  request_parameters = {
5646
5652
  "method.request.path.proxy" = true
@@ -43,7 +43,7 @@ export const TestApiClientProvider: FC<PropsWithChildren> = ({ children }) => {
43
43
  eventSourceOptions: async ({ op }) => {
44
44
  return {
45
45
  headers: {
46
- Authorization: \`Bearer \${user?.id_token}\`,
46
+ Authorization: \`Bearer \${user?.access_token}\`,
47
47
  },
48
48
  };
49
49
  },
@@ -51,7 +51,7 @@ export const TestApiClientProvider: FC<PropsWithChildren> = ({ children }) => {
51
51
  false: httpLink({
52
52
  url: apiUrl,
53
53
  headers: {
54
- Authorization: \`Bearer \${user?.id_token}\`,
54
+ Authorization: \`Bearer \${user?.access_token}\`,
55
55
  },
56
56
  }),
57
57
  }),
@@ -345,7 +345,7 @@ export const TestApiClientProvider: FC<PropsWithChildren> = ({ children }) => {
345
345
  const linkOptions: HTTPLinkOptions<any> = {
346
346
  url: apiUrl,
347
347
  headers: {
348
- Authorization: \`Bearer \${user?.id_token}\`,
348
+ Authorization: \`Bearer \${user?.access_token}\`,
349
349
  },
350
350
  };
351
351
 
@@ -60,7 +60,7 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
60
60
  <%_ } else if (auth === 'cognito') { _%>
61
61
  return {
62
62
  headers: {
63
- Authorization: `Bearer ${user?.id_token}`,
63
+ Authorization: `Bearer ${user?.access_token}`,
64
64
  },
65
65
  };
66
66
  <%_ } else if (auth === 'custom') { _%>
@@ -75,7 +75,7 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
75
75
  fetch: sigv4Client.fetch,
76
76
  <%_ } else if (auth === 'cognito') { _%>
77
77
  headers: {
78
- Authorization: `Bearer ${user?.id_token}`,
78
+ Authorization: `Bearer ${user?.access_token}`,
79
79
  },
80
80
  <%_ } else if (auth === 'custom') { _%>
81
81
  // TODO: Add headers required by your custom authorizer
@@ -92,7 +92,7 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
92
92
  fetch: sigv4Client.fetch,
93
93
  <%_ } else if (auth === 'cognito') { _%>
94
94
  headers: {
95
- Authorization: `Bearer ${user?.id_token}`,
95
+ Authorization: `Bearer ${user?.access_token}`,
96
96
  },
97
97
  <%_ } else if (auth === 'custom') { _%>
98
98
  // TODO: Add headers required by your custom authorizer
@@ -3,6 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { type Tree } from '@nx/devkit';
6
+ import type { IPyDepVersion } from '../versions';
6
7
  export declare const AGENT_CONNECTION_PROJECT_DIR: string;
7
8
  /**
8
9
  * Get the directory of the shared Python agent-connection project.
@@ -29,7 +30,13 @@ export type ConnectionProtocol = 'mcp' | 'gateway' | 'a2a';
29
30
  * Layer-0/1 (`core-auth`, `core-shared`, the per-protocol transports/configs)
30
31
  * is reused unchanged.
31
32
  */
32
- export type AgentFramework = 'strands';
33
+ export type AgentFramework = 'strands' | 'langchain';
34
+ /**
35
+ * Resolve an agent component's framework, defaulting to `strands`. Connection
36
+ * generators dispatch on the returned framework to pick the matching templates
37
+ * and agent.py/agent.ts transforms.
38
+ */
39
+ export declare function resolveAgentFramework(framework: string | undefined): AgentFramework;
33
40
  /**
34
41
  * Ensure the shared TypeScript agent-connection project exists and has the
35
42
  * framework-agnostic core helpers (runtime-config loader, session context).
@@ -90,13 +97,49 @@ export declare function addPythonCoreClient(tree: Tree, protocol: ConnectionProt
90
97
  */
91
98
  export declare function addTypeScriptClientToAgent(tree: Tree, agentFilePath: string, clientClassName: string, clientVarName: string): Promise<void>;
92
99
  /**
93
- * Patch a Python agent.py to create a context-managed connection client,
94
- * enter it in the `with` block around `yield Agent(...)`, and spread its
95
- * `list_tools_sync()` into the Agent's tools. Used by the MCP and gateway
96
- * connection generators the client class must expose a static `create()`
97
- * returning a context manager with `list_tools_sync()` (e.g. an `MCPClient`).
100
+ * Per-framework naming + template layout for a Python per-connection client.
101
+ * Every py#agent connection generator (mcp, gateway, a2a) names its client
102
+ * class `<Name>Client<suffix>`, its module `<name>_client_<suffix>`, and reads
103
+ * the per-connection app-client template from a per-framework sub-path of its
104
+ * own `files/` dir all of which vary only by framework, so they live here as
105
+ * one source of truth.
106
+ *
107
+ * Keyed by {@link AgentFramework} rather than a boolean so a third framework is
108
+ * an additive entry here — never another `if (isLangchain)` branch in each
109
+ * generator.
110
+ */
111
+ export interface PyClientNaming {
112
+ /** Class-name suffix on the per-connection app client (`<Name>Client<suffix>`). */
113
+ clientClassSuffix: string;
114
+ /** Module/file-name suffix on the per-connection app client (`<name>_client_<suffix>`). */
115
+ clientModuleSuffix: string;
116
+ /**
117
+ * Sub-path, under a connection generator's `files/` dir, of the per-connection
118
+ * app client template for this framework. Every connection generator lays its
119
+ * templates out the same way, so this resolves against any of them.
120
+ */
121
+ appTemplateSubdir: string;
122
+ }
123
+ export declare const PY_CLIENT_NAMING: Record<AgentFramework, PyClientNaming>;
124
+ /**
125
+ * How an MCP-family connection (an MCP server or an AgentCore Gateway, both of
126
+ * which expose tools over MCP) is wired into a Python agent of a given
127
+ * framework. The mcp-connection and gateway-connection generators share this:
128
+ * they differ only in the metadata of the thing being connected, not in how
129
+ * the framework's client is shaped or spliced into agent.py. A2A connections
130
+ * wire tools differently, so they reuse only {@link PY_CLIENT_NAMING}.
98
131
  */
99
- export declare function addPythonClientToAgent(tree: Tree, agentFilePath: string, clientClassName: string, clientVarName: string): Promise<void>;
132
+ export interface PyMcpFamilyConnection extends PyClientNaming {
133
+ /** Extra Python deps this framework's MCP-family client needs (beyond the shared transport). */
134
+ deps: IPyDepVersion[];
135
+ /**
136
+ * Splice the per-connection client into the agent's `get_agent` in agent.py.
137
+ * Strands enters a context-managed `MCPClient` and spreads `list_tools_sync()`;
138
+ * LangChain loads `BaseTool`s and spreads them into `create_agent(...)`.
139
+ */
140
+ wireClientIntoAgent: (tree: Tree, agentFilePath: string, clientClassName: string, clientVarName: string) => Promise<void>;
141
+ }
142
+ export declare const PY_MCP_FAMILY_CONNECTIONS: Record<AgentFramework, PyMcpFamilyConnection>;
100
143
  /**
101
144
  * Add a re-export to the Python agent-connection module's __init__.py.
102
145
  * Equivalent to addStarExport for TS.
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AGENT_CONNECTION_PROJECT_DIR = void 0;
3
+ exports.PY_MCP_FAMILY_CONNECTIONS = exports.PY_CLIENT_NAMING = exports.AGENT_CONNECTION_PROJECT_DIR = void 0;
4
4
  exports.getPythonAgentConnectionProjectDir = getPythonAgentConnectionProjectDir;
5
5
  exports.getPythonAgentConnectionModuleName = getPythonAgentConnectionModuleName;
6
6
  exports.getPythonAgentConnectionPackageName = getPythonAgentConnectionPackageName;
7
+ exports.resolveAgentFramework = resolveAgentFramework;
7
8
  exports.ensureTypeScriptAgentConnectionProject = ensureTypeScriptAgentConnectionProject;
8
9
  exports.addTypeScriptFrameworkBase = addTypeScriptFrameworkBase;
9
10
  exports.addTypeScriptCoreClient = addTypeScriptCoreClient;
@@ -11,7 +12,6 @@ exports.ensurePythonAgentConnectionProject = ensurePythonAgentConnectionProject;
11
12
  exports.addPythonFrameworkBase = addPythonFrameworkBase;
12
13
  exports.addPythonCoreClient = addPythonCoreClient;
13
14
  exports.addTypeScriptClientToAgent = addTypeScriptClientToAgent;
14
- exports.addPythonClientToAgent = addPythonClientToAgent;
15
15
  exports.addPythonReExport = addPythonReExport;
16
16
  const tslib_1 = require("tslib");
17
17
  /**
@@ -60,6 +60,14 @@ function getPythonAgentConnectionPackageName(tree) {
60
60
  });
61
61
  return fullyQualifiedName;
62
62
  }
63
+ /**
64
+ * Resolve an agent component's framework, defaulting to `strands`. Connection
65
+ * generators dispatch on the returned framework to pick the matching templates
66
+ * and agent.py/agent.ts transforms.
67
+ */
68
+ function resolveAgentFramework(framework) {
69
+ return framework === 'langchain' ? 'langchain' : 'strands';
70
+ }
63
71
  /**
64
72
  * Framework-agnostic Layer-1 templates, keyed by protocol. These resolve the
65
73
  * endpoint and build the signed transport/client-config; they contain no
@@ -79,6 +87,16 @@ const FRAMEWORKS = {
79
87
  strands: {
80
88
  ts: {
81
89
  base: 'core-strands/base',
90
+ baseReExports: [
91
+ {
92
+ fromModule: './core/with-session-id-strands.js',
93
+ importName: '*',
94
+ },
95
+ {
96
+ fromModule: './core/model-errors-strands.js',
97
+ importName: '*',
98
+ },
99
+ ],
82
100
  protocols: {
83
101
  mcp: 'core-strands/mcp',
84
102
  gateway: 'core-strands/gateway',
@@ -88,6 +106,16 @@ const FRAMEWORKS = {
88
106
  },
89
107
  py: {
90
108
  base: 'py-core-strands/base',
109
+ baseReExports: [
110
+ {
111
+ fromModule: '.core.with_session_id_strands',
112
+ importName: 'with_session_id',
113
+ },
114
+ {
115
+ fromModule: '.core.model_errors_strands',
116
+ importName: 'log_model_errors',
117
+ },
118
+ ],
91
119
  protocols: {
92
120
  mcp: 'py-core-strands/mcp',
93
121
  gateway: 'py-core-strands/gateway',
@@ -96,6 +124,26 @@ const FRAMEWORKS = {
96
124
  deps: ['strands-agents'],
97
125
  },
98
126
  },
127
+ langchain: {
128
+ // LangChain is supported for Python agents only (the TypeScript LangChain
129
+ // agent foundation has no in-process AG-UI <-> LangGraph adapter, so it is
130
+ // not scaffolded — see ts#agent). Its Layer-2 clients stay usable after
131
+ // agent construction, so there is no base helper layer (no model-error
132
+ // logger / per-session agent cache) and no strands-agents dependency — its
133
+ // AG-UI foundation reuses only the framework-agnostic session context, and
134
+ // its A2A client drives the a2a SDK directly rather than wrapping Strands'
135
+ // A2AAgent. The per-connection adapter dependency (langchain-mcp-adapters /
136
+ // a2a-sdk) is added by the connection generators.
137
+ py: {
138
+ baseReExports: [],
139
+ protocols: {
140
+ mcp: 'py-core-langchain/mcp',
141
+ gateway: 'py-core-langchain/gateway',
142
+ a2a: 'py-core-langchain/a2a',
143
+ },
144
+ deps: [],
145
+ },
146
+ },
99
147
  };
100
148
  /** Resolve a framework's templates for a language + protocol, or throw. */
101
149
  function frameworkLanguage(framework, language, protocol) {
@@ -145,10 +193,13 @@ async function addTypeScriptFrameworkBase(tree, framework = 'strands') {
145
193
  if (!lang) {
146
194
  throw new Error(`The '${framework}' framework does not support TypeScript agents.`);
147
195
  }
148
- emitTs(tree, lang.base);
196
+ if (lang.base) {
197
+ emitTs(tree, lang.base);
198
+ }
149
199
  const indexPath = (0, devkit_1.joinPathFragments)(exports.AGENT_CONNECTION_PROJECT_DIR, 'src', 'index.ts');
150
- await (0, ast_1.addStarExport)(tree, indexPath, './core/with-session-id-strands.js');
151
- await (0, ast_1.addStarExport)(tree, indexPath, './core/model-errors-strands.js');
200
+ for (const reExport of lang.baseReExports) {
201
+ await (0, ast_1.addStarExport)(tree, indexPath, reExport.fromModule);
202
+ }
152
203
  }
153
204
  /**
154
205
  * Emit the TypeScript client templates for a connection protocol and agent
@@ -225,10 +276,13 @@ async function addPythonFrameworkBase(tree, framework = 'strands') {
225
276
  if (!lang) {
226
277
  throw new Error(`The '${framework}' framework does not support Python agents.`);
227
278
  }
228
- emitPy(tree, lang.base);
279
+ if (lang.base) {
280
+ emitPy(tree, lang.base);
281
+ }
229
282
  const moduleInitPath = (0, devkit_1.joinPathFragments)(getPythonAgentConnectionProjectDir(tree), getPythonAgentConnectionModuleName(tree), '__init__.py');
230
- await addPythonReExport(tree, moduleInitPath, '.core.with_session_id_strands', 'with_session_id');
231
- await addPythonReExport(tree, moduleInitPath, '.core.model_errors_strands', 'log_model_errors');
283
+ for (const reExport of lang.baseReExports) {
284
+ await addPythonReExport(tree, moduleInitPath, reExport.fromModule, reExport.importName);
285
+ }
232
286
  if (lang.deps.length > 0) {
233
287
  (0, py_1.addDependenciesToPyProjectToml)(tree, getPythonAgentConnectionProjectDir(tree), lang.deps);
234
288
  }
@@ -344,6 +398,82 @@ const addPythonClientToGetAgent = async (tree, filePath, clientClassName, client
344
398
  ):
345
399
  $body\``));
346
400
  };
401
+ /**
402
+ * Patch a LangChain agent.py to load connection tools and spread them into the
403
+ * `create_agent(...)` tools list. Used by the MCP and gateway connection
404
+ * generators when the source agent uses the `langchain` framework — the client
405
+ * class must expose a static `create()` returning a `list[BaseTool]`. The tools
406
+ * come from langchain-mcp-adapters' `MultiServerMCPClient`, which keeps the
407
+ * connection config on each tool and opens a fresh MCP session per call, so the
408
+ * tools stay usable after `get_agent` returns — no `with` block is needed.
409
+ * Mirrors {@link addPythonClientToAgent} for the Strands shape.
410
+ */
411
+ async function addPythonLangchainClientToAgent(tree, agentFilePath, clientClassName, clientVarName) {
412
+ await addPythonLangchainClientTools(tree, agentFilePath, clientVarName);
413
+ await addPythonLangchainClientToGetAgent(tree, agentFilePath, clientClassName, clientVarName);
414
+ }
415
+ /**
416
+ * Spread `*<clientVarName>` into the `create_agent(...)` tools list.
417
+ *
418
+ * Scoped via `$old <: within \`create_agent($_)\`` so only the agent's own
419
+ * tools= keyword argument is touched (not an unrelated function with a
420
+ * `tools=` parameter).
421
+ */
422
+ const addPythonLangchainClientTools = async (tree, filePath, clientVarName) => {
423
+ await (0, ast_1.applyGritQL)(tree, filePath, py(`\`tools=$old\` where {
424
+ $old <: within \`create_agent($_)\`,
425
+ $old <: not contains \`*${clientVarName}\`,
426
+ if ($old <: \`[]\`) {
427
+ $old => \`[*${clientVarName}]\`
428
+ } else {
429
+ $old <: \`[$items]\` where { $items += \`, *${clientVarName}\` }
430
+ }
431
+ }`));
432
+ };
433
+ /**
434
+ * Prepend `<clientVarName> = <clientClassName>.create()` to the get_agent body
435
+ * (which loads the connection's tools). No `with` block — the LangChain client
436
+ * hands langchain-mcp-adapters a connection config, so each tool opens its own
437
+ * MCP session per call and the tools are safe to use after get_agent returns.
438
+ * Idempotent via the `not contains <clientClassName>.create` guard.
439
+ */
440
+ const addPythonLangchainClientToGetAgent = async (tree, filePath, clientClassName, clientVarName) => {
441
+ if (await (0, ast_1.matchGritQL)(tree, filePath, py(`\`${clientClassName}.create()\``))) {
442
+ return;
443
+ }
444
+ await (0, ast_1.applyGritQL)(tree, filePath, py(`\`def get_agent($params):
445
+ $body\` where {
446
+ $body <: contains \`create_agent($_)\`,
447
+ $body <: not contains \`${clientClassName}.create\`
448
+ } => \`def get_agent($params):
449
+ ${clientVarName} = ${clientClassName}.create()
450
+ $body\``));
451
+ };
452
+ exports.PY_CLIENT_NAMING = {
453
+ strands: {
454
+ clientClassSuffix: 'Strands',
455
+ clientModuleSuffix: 'strands',
456
+ appTemplateSubdir: (0, devkit_1.joinPathFragments)('agent-connection', 'app'),
457
+ },
458
+ langchain: {
459
+ clientClassSuffix: 'LangChain',
460
+ clientModuleSuffix: 'langchain',
461
+ appTemplateSubdir: (0, devkit_1.joinPathFragments)('langchain', 'agent-connection', 'app'),
462
+ },
463
+ };
464
+ exports.PY_MCP_FAMILY_CONNECTIONS = {
465
+ strands: {
466
+ ...exports.PY_CLIENT_NAMING.strands,
467
+ deps: [],
468
+ wireClientIntoAgent: addPythonClientToAgent,
469
+ },
470
+ langchain: {
471
+ ...exports.PY_CLIENT_NAMING.langchain,
472
+ // langchain-mcp-adapters backs the LangChain client; it must not pull Strands in.
473
+ deps: ['langchain-mcp-adapters'],
474
+ wireClientIntoAgent: addPythonLangchainClientToAgent,
475
+ },
476
+ };
347
477
  /**
348
478
  * Add a re-export to the Python agent-connection module's __init__.py.
349
479
  * Equivalent to addStarExport for TS.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/agent-connection/agent-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/agent-connection/agent-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import asyncio
2
+ from collections.abc import Callable
3
+ from concurrent.futures import ThreadPoolExecutor
4
+ from uuid import uuid4
5
+
6
+ from a2a.client import A2ACardResolver, ClientConfig, ClientFactory
7
+ from a2a.types import Message, Part, Role, Task, TextPart
8
+
9
+ from .agentcore_a2a_client_config import AgentCoreA2aClientConfig
10
+
11
+
12
+ def _run_sync(coro):
13
+ # The tool is invoked from sync agent code, which under uvicorn runs inside a
14
+ # live event loop where asyncio.run() would raise — fall back to a worker.
15
+ try:
16
+ asyncio.get_running_loop()
17
+ except RuntimeError:
18
+ return asyncio.run(coro)
19
+ with ThreadPoolExecutor(max_workers=1) as pool:
20
+ return pool.submit(asyncio.run, coro).result()
21
+
22
+
23
+ def _text(event) -> str:
24
+ # Collect text parts from a bare Message or a (Task, update) event.
25
+ parts = []
26
+ if isinstance(event, Message):
27
+ parts = event.parts
28
+ elif isinstance(event, tuple):
29
+ task, update = event
30
+ if isinstance(task, Task) and task.artifacts:
31
+ parts = [p for a in task.artifacts for p in (a.parts or [])]
32
+ elif update is not None and getattr(update, "status", None) and update.status.message:
33
+ parts = update.status.message.parts
34
+ return "".join(p.root.text for p in parts if getattr(p.root, "text", None))
35
+
36
+
37
+ class _A2AClient:
38
+ """A synchronously-callable A2A client. Sends a text prompt to the remote
39
+ agent and returns its text reply. Built on the a2a SDK only — no Strands."""
40
+
41
+ def __init__(self, url: str, client_config: ClientConfig):
42
+ self._url = url
43
+ self._config = client_config
44
+
45
+ def __call__(self, prompt: str) -> str:
46
+ return _run_sync(self._invoke(prompt))
47
+
48
+ async def _invoke(self, prompt: str) -> str:
49
+ # AgentCoreA2aClientConfig always sets the signed httpx client.
50
+ httpx_client = self._config.httpx_client
51
+ if httpx_client is None:
52
+ raise RuntimeError("A2A client config is missing an httpx client")
53
+ card = await A2ACardResolver(
54
+ httpx_client=httpx_client, base_url=self._url
55
+ ).get_agent_card()
56
+ client = ClientFactory(self._config).create(card)
57
+ message = Message(
58
+ kind="message",
59
+ role=Role.user,
60
+ message_id=uuid4().hex,
61
+ parts=[Part(TextPart(kind="text", text=prompt))],
62
+ )
63
+ # The client config uses streaming=False, so the last event carries the
64
+ # complete response.
65
+ reply = ""
66
+ async for event in client.send_message(message):
67
+ text = _text(event)
68
+ if text:
69
+ reply = text
70
+ return reply
71
+
72
+
73
+ class AgentCoreA2aClientLangChain:
74
+ """Factory for A2A clients that connect to an AgentCore runtime.
75
+
76
+ Reuses the framework-agnostic Layer-1 ``AgentCoreA2aClientConfig`` (signed
77
+ ``a2a.client.ClientConfig``) and drives the a2a SDK directly, so a LangChain
78
+ agent delegating to an A2A agent pulls in no Strands dependency."""
79
+
80
+ @staticmethod
81
+ def with_iam_auth(agent_runtime_arn: str) -> _A2AClient:
82
+ """SigV4-authenticated client for a Bedrock AgentCore runtime."""
83
+ return _A2AClient(*AgentCoreA2aClientConfig.with_iam_auth(agent_runtime_arn))
84
+
85
+ @staticmethod
86
+ def with_jwt_auth(
87
+ agent_runtime_arn: str, access_token_provider: Callable[[], str]
88
+ ) -> _A2AClient:
89
+ """Bearer-authenticated client for a Bedrock AgentCore runtime."""
90
+ return _A2AClient(
91
+ *AgentCoreA2aClientConfig.with_jwt_auth(
92
+ agent_runtime_arn, access_token_provider
93
+ )
94
+ )
95
+
96
+ @staticmethod
97
+ def without_auth(url: str) -> _A2AClient:
98
+ """Plain-HTTP client for local dev."""
99
+ return _A2AClient(*AgentCoreA2aClientConfig.without_auth(url))
@@ -0,0 +1,57 @@
1
+ import asyncio
2
+ from concurrent.futures import ThreadPoolExecutor
3
+
4
+ import boto3
5
+ import httpx
6
+
7
+ from langchain_core.tools import BaseTool
8
+ from langchain_mcp_adapters.client import MultiServerMCPClient
9
+
10
+ from .agentcore_endpoints import region_from_gateway_url
11
+ from .auth.session import plain_auth, sigv4_auth
12
+
13
+
14
+ def _run_sync(coro):
15
+ # Tools load during agent construction, which under uvicorn runs inside a
16
+ # live event loop where asyncio.run() would raise — fall back to a worker.
17
+ try:
18
+ asyncio.get_running_loop()
19
+ except RuntimeError:
20
+ return asyncio.run(coro)
21
+ with ThreadPoolExecutor(max_workers=1) as pool:
22
+ return pool.submit(asyncio.run, coro).result()
23
+
24
+
25
+ def _load_tools(url: str, auth: httpx.Auth) -> list[BaseTool]:
26
+ # Pass a connection config so each tool opens a fresh session per call and
27
+ # stays usable after construction (no shared session to close).
28
+ client = MultiServerMCPClient(
29
+ {
30
+ "server": {
31
+ "transport": "streamable_http",
32
+ "url": url,
33
+ "auth": auth,
34
+ "terminate_on_close": False,
35
+ }
36
+ }
37
+ )
38
+ return _run_sync(client.get_tools())
39
+
40
+
41
+ class AgentCoreGatewayMCPClientLangChain:
42
+ """Loads LangChain tools from an AgentCore Gateway."""
43
+
44
+ @staticmethod
45
+ def with_iam_auth(
46
+ gateway_url: str,
47
+ region: str | None = None,
48
+ ) -> list[BaseTool]:
49
+ """SigV4-authenticated tools for an AgentCore Gateway."""
50
+ resolved_region = region or region_from_gateway_url(gateway_url)
51
+ credentials = boto3.Session(region_name=resolved_region).get_credentials()
52
+ return _load_tools(gateway_url, sigv4_auth(credentials, resolved_region))
53
+
54
+ @staticmethod
55
+ def without_auth(gateway_url: str) -> list[BaseTool]:
56
+ """Plain-HTTP tools for the local gateway started by serve-local."""
57
+ return _load_tools(gateway_url, plain_auth())