@aws/nx-plugin 1.0.0-rc.21 → 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 (35) 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/serve-local.js +9 -1
  24. package/src/py/agent/react-connection/serve-local.js.map +1 -1
  25. package/src/py/agent/schema.d.ts +1 -1
  26. package/src/py/agent/schema.json +1 -1
  27. package/src/utils/agent-connection/agent-connection.d.ts +50 -7
  28. package/src/utils/agent-connection/agent-connection.js +138 -8
  29. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  30. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +99 -0
  31. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  32. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  33. package/src/utils/versions.d.ts +6 -0
  34. package/src/utils/versions.js +6 -0
  35. package/src/utils/versions.js.map +1 -1
@@ -0,0 +1,73 @@
1
+ import logging
2
+ import time
3
+ import uuid
4
+
5
+ from ag_ui.core import EventType, RunAgentInput, RunErrorEvent
6
+ from ag_ui.encoder import EventEncoder
7
+ from ag_ui_langgraph import LangGraphAgent
8
+ from fastapi import FastAPI, Request
9
+ from fastapi.responses import JSONResponse, StreamingResponse
10
+ from <%- agentConnectionModuleName %> import get_current_session_id, session_id_context
11
+ from starlette.middleware.base import BaseHTTPMiddleware
12
+
13
+ from .agent import get_agent
14
+
15
+ logging.basicConfig(level=logging.INFO)
16
+
17
+ SESSION_ID_HEADER = "x-amzn-bedrock-agentcore-runtime-session-id"
18
+
19
+ _graph = get_agent()
20
+
21
+ agui_agent = LangGraphAgent(
22
+ name="<%= agentNameClassName %>",
23
+ graph=_graph,
24
+ description="A LangChain/LangGraph Agent exposed via the AG-UI protocol.",
25
+ )
26
+
27
+
28
+ class _SessionIdMiddleware(BaseHTTPMiddleware):
29
+ """Bind the session ID for this request so downstream MCP / A2A clients forward it on outbound calls."""
30
+
31
+ async def dispatch(self, request: Request, call_next):
32
+ session_id = request.headers.get(SESSION_ID_HEADER) or str(uuid.uuid4())
33
+ with session_id_context(session_id):
34
+ return await call_next(request)
35
+
36
+
37
+ app = FastAPI(title="<%= agentNameClassName %>")
38
+ app.add_middleware(_SessionIdMiddleware)
39
+
40
+
41
+ @app.post("/invocations")
42
+ async def invocations(request: Request):
43
+ # Validate the body manually since AgentCore may omit Content-Type.
44
+ accept = request.headers.get("accept") or ""
45
+ encoder = EventEncoder(accept=accept)
46
+ raw = await request.body()
47
+ try:
48
+ input_data = RunAgentInput.model_validate_json(raw)
49
+ except Exception as exc:
50
+ message = f"Invalid RunAgentInput: {str(exc)[:200]}"
51
+
52
+ async def _bad():
53
+ yield encoder.encode(RunErrorEvent(type=EventType.RUN_ERROR, message=message, code="BAD_REQUEST"))
54
+
55
+ return StreamingResponse(_bad(), media_type=encoder.get_content_type())
56
+
57
+ session_id = request.headers.get(SESSION_ID_HEADER) or get_current_session_id()
58
+
59
+ async def event_generator():
60
+ # Re-bind the session: the streaming body runs outside the middleware.
61
+ with session_id_context(session_id or str(uuid.uuid4())):
62
+ try:
63
+ async for event in agui_agent.run(input_data):
64
+ yield encoder.encode(event)
65
+ except Exception as e:
66
+ yield encoder.encode(RunErrorEvent(type=EventType.RUN_ERROR, message=str(e)[:300], code="AGENT_ERROR"))
67
+
68
+ return StreamingResponse(event_generator(), media_type=encoder.get_content_type())
69
+
70
+
71
+ @app.get("/ping")
72
+ async def ping():
73
+ return JSONResponse({"status": "Healthy", "time_of_last_update": int(time.time())})
@@ -0,0 +1,30 @@
1
+ import os
2
+
3
+ from langchain.agents import create_agent
4
+ from langchain_aws import ChatBedrockConverse
5
+ from langchain_core.tools import tool
6
+ from langgraph.checkpoint.memory import InMemorySaver
7
+
8
+ REGION = os.environ.get("AWS_REGION", "us-east-1")
9
+ MODEL_ID = os.environ.get("MODEL_ID", "global.anthropic.claude-haiku-4-5-20251001-v1:0")
10
+
11
+
12
+ @tool
13
+ def subtract(a: int, b: int) -> int:
14
+ """Subtract b from a."""
15
+ return a - b
16
+
17
+
18
+ def get_agent():
19
+ model = ChatBedrockConverse(model=MODEL_ID, region_name=REGION)
20
+ # Swap InMemorySaver for a durable checkpointer in a multi-replica deployment.
21
+ return create_agent(
22
+ model=model,
23
+ tools=[subtract],
24
+ system_prompt="""
25
+ You are a mathematical wizard.
26
+ Use your tools for mathematical tasks.
27
+ Refer to tools as your 'spellbook'.
28
+ """,
29
+ checkpointer=InMemorySaver(),
30
+ )
@@ -0,0 +1,84 @@
1
+ import uuid
2
+
3
+ import uvicorn
4
+ from bedrock_agentcore.runtime.models import PingStatus
5
+ from fastapi import Request
6
+ from pydantic import BaseModel, Field
7
+ from starlette.middleware.base import BaseHTTPMiddleware
8
+ from <%- agentConnectionModuleName %> import get_current_session_id, session_id_context
9
+
10
+ from .agent import get_agent
11
+ from .init import JsonStreamingResponse, app
12
+
13
+ SESSION_ID_HEADER = "x-amzn-bedrock-agentcore-runtime-session-id"
14
+
15
+ _graph = get_agent()
16
+
17
+
18
+ class InvokeInput(BaseModel):
19
+ message: str = Field(max_length=100000)
20
+
21
+
22
+ class StreamChunk(BaseModel):
23
+ content: str
24
+
25
+
26
+ def _text(content) -> str:
27
+ # ChatBedrockConverse streams content as a list of blocks, not a plain string.
28
+ if isinstance(content, str):
29
+ return content
30
+ return "".join(
31
+ block.get("text", "")
32
+ for block in content
33
+ if isinstance(block, dict) and block.get("type") == "text"
34
+ )
35
+
36
+
37
+ async def handle_invoke(input: InvokeInput, session_id: str):
38
+ """Streaming handler for agent invocation"""
39
+ # The session id is the LangGraph thread id, so the checkpointer keeps memory per session.
40
+ config = {"configurable": {"thread_id": session_id}}
41
+ # Re-bind the session: the streaming body runs outside the middleware scope.
42
+ with session_id_context(session_id):
43
+ stream = _graph.astream(
44
+ {"messages": [{"role": "user", "content": input.message}]},
45
+ config,
46
+ stream_mode="messages",
47
+ )
48
+ async for message_chunk, _metadata in stream:
49
+ text = _text(message_chunk.content)
50
+ if text:
51
+ yield StreamChunk(content=text)
52
+
53
+
54
+ @app.post(
55
+ "/invocations",
56
+ response_class=JsonStreamingResponse,
57
+ responses={200: JsonStreamingResponse.openapi_response(StreamChunk, "Stream of agent response chunks")},
58
+ )
59
+ async def invoke(input: InvokeInput) -> JsonStreamingResponse:
60
+ """Entry point for agent invocation"""
61
+ session_id = get_current_session_id() or str(uuid.uuid4())
62
+ return JsonStreamingResponse(handle_invoke(input, session_id))
63
+
64
+
65
+ class _SessionIdMiddleware(BaseHTTPMiddleware):
66
+ """Bind the inbound session (or a fresh UUID) to async context."""
67
+
68
+ async def dispatch(self, request: Request, call_next):
69
+ session_id = request.headers.get(SESSION_ID_HEADER) or str(uuid.uuid4())
70
+ with session_id_context(session_id):
71
+ return await call_next(request)
72
+
73
+
74
+ app.add_middleware(_SessionIdMiddleware)
75
+
76
+
77
+ @app.get("/ping")
78
+ def ping() -> str:
79
+ # TODO: if running an async task, return PingStatus.HEALTHY_BUSY
80
+ return PingStatus.HEALTHY
81
+
82
+
83
+ if __name__ == "__main__":
84
+ uvicorn.run("<%- moduleName %>.<%- agentNameSnakeCase %>.main:app", port=8080)
@@ -0,0 +1,34 @@
1
+ import os
2
+
3
+ from langchain_core.tools import BaseTool
4
+
5
+ from <%- agentConnectionModuleName %>.core.agentcore_gateway_mcp_client_langchain import (
6
+ AgentCoreGatewayMCPClientLangChain,
7
+ )
8
+ from <%- agentConnectionModuleName %>.core.runtime_config import (
9
+ get_agentcore_runtime_config,
10
+ )
11
+
12
+
13
+ class <%- gatewayClassName %>ClientLangChain:
14
+ """Loads LangChain tools from the <%- gatewayClassName %> AgentCore Gateway.
15
+
16
+ Deployed: SigV4-signed tools pointing at the gateway URL. Local
17
+ (``SERVE_LOCAL=true``): plain-HTTP tools pointing at the local gateway
18
+ started by the gateway project's serve-local target. The local gateway
19
+ aggregates every attached MCP server but does not evaluate Cedar policies.
20
+ """
21
+
22
+ @staticmethod
23
+ def create() -> list[BaseTool]:
24
+ if os.environ.get("SERVE_LOCAL") == "true":
25
+ return AgentCoreGatewayMCPClientLangChain.without_auth(
26
+ gateway_url="http://localhost:<%- gatewayPort %>/mcp"
27
+ )
28
+ config = get_agentcore_runtime_config()
29
+ gateway_url = config.get("gateways", {}).get("<%- gatewayClassName %>")
30
+ if not gateway_url:
31
+ raise RuntimeError(
32
+ "No connected gateway named '<%- gatewayClassName %>' found in runtime configuration."
33
+ )
34
+ return AgentCoreGatewayMCPClientLangChain.with_iam_auth(gateway_url=gateway_url)
@@ -37,21 +37,28 @@ const pyAgentGatewayConnectionGenerator = async (tree, options) => {
37
37
  const gatewayKebabCase = gatewaySnakeCase.replace(/_/g, '-');
38
38
  const gatewayServeTargetName = `${gatewayKebabCase}-serve`;
39
39
  const gatewayServeLocalTargetName = `${gatewayKebabCase}-serve-local`;
40
+ // The source agent's framework selects the client shape, dependencies and the
41
+ // agent.py transform — see PY_MCP_FAMILY_CONNECTIONS (keyed by framework, not a
42
+ // boolean, so a third framework is an additive entry there). A Gateway exposes
43
+ // its tools over MCP, so it reuses the same wiring as an MCP server connection.
44
+ const framework = (0, agent_connection_1.resolveAgentFramework)(agentComponent.framework);
45
+ const connection = agent_connection_1.PY_MCP_FAMILY_CONNECTIONS[framework];
40
46
  await (0, agent_connection_1.ensurePythonAgentConnectionProject)(tree);
41
- await (0, agent_connection_1.addPythonCoreClient)(tree, 'gateway');
47
+ await (0, agent_connection_1.addPythonCoreClient)(tree, 'gateway', framework);
42
48
  const agentConnectionProjectDir = (0, agent_connection_1.getPythonAgentConnectionProjectDir)(tree);
43
49
  const agentConnectionModuleName = (0, agent_connection_1.getPythonAgentConnectionModuleName)(tree);
44
50
  const agentConnectionPackageName = (0, agent_connection_1.getPythonAgentConnectionPackageName)(tree);
45
- // Layer 0/1 deps for the MCP transport + signed httpx auth. The framework's
46
- // own dependency (strands-agents) is added by addPythonCoreClient.
51
+ // Shared MCP transport + signed httpx auth deps, plus whatever extra deps the
52
+ // framework's MCP client needs (e.g. langchain-mcp-adapters for LangChain).
47
53
  (0, py_1.addDependenciesToPyProjectToml)(tree, agentConnectionProjectDir, [
48
54
  'boto3',
49
55
  'httpx',
50
56
  'mcp',
57
+ ...connection.deps,
51
58
  ]);
52
59
  const appDir = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, 'app');
53
60
  // Local mode points at the gateway project's local gateway port.
54
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'agent-connection', 'app'), appDir, {
61
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', connection.appTemplateSubdir), appDir, {
55
62
  gatewaySnakeCase,
56
63
  gatewayClassName,
57
64
  agentConnectionModuleName,
@@ -62,14 +69,14 @@ const pyAgentGatewayConnectionGenerator = async (tree, options) => {
62
69
  tree.write(appInitPath, '');
63
70
  }
64
71
  const moduleInitPath = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, '__init__.py');
65
- await (0, agent_connection_1.addPythonReExport)(tree, moduleInitPath, `.app.${gatewaySnakeCase}_client_strands`, `${gatewayClassName}ClientStrands`);
72
+ await (0, agent_connection_1.addPythonReExport)(tree, moduleInitPath, `.app.${gatewaySnakeCase}_client_${connection.clientModuleSuffix}`, `${gatewayClassName}Client${connection.clientClassSuffix}`);
66
73
  const agentSourceDir = (0, devkit_1.joinPathFragments)(sourceProject.root, agentComponent.path ?? 'src');
67
74
  const agentFilePath = (0, devkit_1.joinPathFragments)(agentSourceDir, 'agent.py');
68
75
  if (tree.exists(agentFilePath)) {
69
- const clientClassName = `${gatewayClassName}ClientStrands`;
76
+ const clientClassName = `${gatewayClassName}Client${connection.clientClassSuffix}`;
70
77
  const clientVarName = gatewaySnakeCase;
71
78
  await (0, ast_1.addPythonDestructuredImport)(tree, agentFilePath, [clientClassName], agentConnectionModuleName);
72
- await (0, agent_connection_1.addPythonClientToAgent)(tree, agentFilePath, clientClassName, clientVarName);
79
+ await connection.wireClientIntoAgent(tree, agentFilePath, clientClassName, clientVarName);
73
80
  }
74
81
  (0, py_1.addWorkspaceDependencyToPyProject)(tree, sourceProject.root, agentConnectionPackageName);
75
82
  const agentName = agentComponent.name ?? 'agent';
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/gateway-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/gateway-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ exports.pyAgentGenerator = exports.PY_AGENT_GENERATOR_INFO = void 0;
6
6
  * SPDX-License-Identifier: Apache-2.0
7
7
  */
8
8
  const devkit_1 = require("@nx/devkit");
9
+ const config_1 = require("../../license/config");
10
+ const known_exceptions_1 = require("../../license/known-exceptions");
9
11
  const agent_chat_1 = require("../../utils/agent-chat/agent-chat");
10
12
  const agent_connection_1 = require("../../utils/agent-connection/agent-connection");
11
13
  const agent_core_constructs_1 = require("../../utils/agent-core-constructs/agent-core-constructs");
@@ -47,6 +49,7 @@ const pyAgentGenerator = async (tree, options) => {
47
49
  const targetSourceDir = (0, devkit_1.joinPathFragments)(project.sourceRoot, agentNameSnakeCase);
48
50
  const infra = options.infra ?? 'agentcore';
49
51
  const protocol = options.protocol ?? 'http';
52
+ const framework = options.framework ?? 'strands';
50
53
  if (infra === 'none' && options.auth && options.auth !== 'iam') {
51
54
  console.warn('Warning: auth is ignored when no infrastructure is configured (no infrastructure is generated)');
52
55
  }
@@ -57,8 +60,10 @@ const pyAgentGenerator = async (tree, options) => {
57
60
  // generator wires into this agent.
58
61
  await (0, agent_connection_1.ensurePythonAgentConnectionProject)(tree);
59
62
  // The agent server imports the framework base helpers (session cache + model
60
- // error logging) regardless of whether a connection client is wired in.
61
- await (0, agent_connection_1.addPythonFrameworkBase)(tree);
63
+ // error logging) regardless of whether a connection client is wired in. The
64
+ // langchain framework has no base layer (its AG-UI foundation reuses only the
65
+ // framework-agnostic session context), so this is a no-op for langchain.
66
+ await (0, agent_connection_1.addPythonFrameworkBase)(tree, framework);
62
67
  const agentConnectionModuleName = (0, agent_connection_1.getPythonAgentConnectionModuleName)(tree);
63
68
  const agentConnectionPackageName = (0, agent_connection_1.getPythonAgentConnectionPackageName)(tree);
64
69
  (0, py_1.addWorkspaceDependencyToPyProject)(tree, project.root, agentConnectionPackageName);
@@ -68,11 +73,33 @@ const pyAgentGenerator = async (tree, options) => {
68
73
  agentNameClassName,
69
74
  moduleName,
70
75
  agentConnectionModuleName,
76
+ framework,
71
77
  };
72
- // Generate common files shared by both protocols
73
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
74
- // Generate protocol-specific files
75
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', protocol.toLowerCase()), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
78
+ // Generate common files shared by both protocols. The agent module (agent.py)
79
+ // is framework-specific (Strands yields a contextmanaged Agent; LangChain
80
+ // returns a compiled create_agent graph), so it comes from a per-framework
81
+ // dir. The package __init__.py is framework-agnostic (it stays in `common`).
82
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', framework === 'langchain' ? 'common-langchain' : 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
83
+ if (framework === 'langchain') {
84
+ // common-langchain only carries agent.py; the empty package __init__.py is
85
+ // framework-agnostic, so emit it from the shared `common` dir.
86
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
87
+ }
88
+ // Generate protocol-specific files. Each protocol's server entry point is
89
+ // framework-specific (Strands yields a contextmanaged Agent; LangChain drives
90
+ // a compiled create_agent graph), so it comes from a per-framework dir
91
+ // `<protocol>-langchain` for LangChain, or `<protocol>` for Strands.
92
+ const protocolLower = protocol.toLowerCase();
93
+ const protocolTemplateDir = framework === 'langchain' ? `${protocolLower}-langchain` : protocolLower;
94
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', protocolTemplateDir), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
95
+ // The HTTP server's init.py (the FastAPI app + JsonStreamingResponse) is
96
+ // framework-agnostic and the LangChain http main.py reuses it, so emit it
97
+ // from the shared `http` dir. Emitted after the langchain main.py above so
98
+ // KeepExisting preserves that main.py and only adds init.py (the shared dir's
99
+ // own Strands main.py is skipped).
100
+ if (protocolLower === 'http' && framework === 'langchain') {
101
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'http'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
102
+ }
76
103
  (0, py_1.addDependenciesToPyProjectToml)(tree, project.root, [
77
104
  'aws-lambda-powertools',
78
105
  'aws-opentelemetry-distro',
@@ -80,12 +107,31 @@ const pyAgentGenerator = async (tree, options) => {
80
107
  'boto3',
81
108
  'fastapi',
82
109
  'mcp',
83
- ...(protocol === 'a2a'
84
- ? ['strands-agents[a2a]']
85
- : protocol === 'ag-ui'
86
- ? ['strands-agents', 'ag-ui-protocol', 'ag-ui-strands']
87
- : ['strands-agents']),
88
- 'strands-agents-tools',
110
+ ...(framework === 'langchain'
111
+ ? // langchain pulls no Strands dependencies — the langchain model binding
112
+ // (langchain, langchain-aws, langgraph) plus the per-protocol server
113
+ // adapter: ag-ui-langgraph for AG-UI, a2a-sdk for A2A, nothing extra for
114
+ // HTTP (FastAPI is added above for every agent).
115
+ [
116
+ 'langchain',
117
+ 'langchain-aws',
118
+ 'langgraph',
119
+ ...(protocol === 'ag-ui'
120
+ ? ['ag-ui-protocol', 'ag-ui-langgraph']
121
+ : protocol === 'a2a'
122
+ ? ['a2a-sdk']
123
+ : []),
124
+ ]
125
+ : protocol === 'a2a'
126
+ ? ['strands-agents[a2a]', 'strands-agents-tools']
127
+ : protocol === 'ag-ui'
128
+ ? [
129
+ 'strands-agents',
130
+ 'strands-agents-tools',
131
+ 'ag-ui-protocol',
132
+ 'ag-ui-strands',
133
+ ]
134
+ : ['strands-agents', 'strands-agents-tools']),
89
135
  'uvicorn',
90
136
  ]);
91
137
  (0, py_1.addDependenciesToDependencyGroupInPyProjectToml)(tree, project.root, 'dev', [
@@ -283,8 +329,18 @@ const pyAgentGenerator = async (tree, options) => {
283
329
  rc: agentNameClassName,
284
330
  auth,
285
331
  protocol,
332
+ // The mcp / gateway connection generators dispatch on this field to pick
333
+ // the Strands vs LangChain Layer-2 client + agent.py transform.
334
+ framework,
286
335
  });
287
336
  await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [exports.PY_AGENT_GENERATOR_INFO]);
337
+ // langchain-core (pulled by every langchain agent regardless of protocol)
338
+ // brings jsonpatch/jsonpointer, whose wheels ship without resolvable SPDX
339
+ // license metadata, so register those exceptions so the workspace license
340
+ // check still passes.
341
+ if (framework === 'langchain') {
342
+ await (0, config_1.ensureLicenseExceptions)(tree, known_exceptions_1.AG_UI_LANGGRAPH_EXCEPTIONS);
343
+ }
288
344
  await (0, format_1.formatFilesInSubtree)(tree);
289
345
  return async () => {
290
346
  (0, devkit_1.installPackagesTask)(tree);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/agent/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/agent/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import os
2
+
3
+ from langchain_core.tools import BaseTool
4
+
5
+ from <%- agentConnectionModuleName %>.core.agentcore_mcp_client_langchain import (
6
+ AgentCoreMCPClientLangChain,
7
+ )
8
+ from <%- agentConnectionModuleName %>.core.runtime_config import (
9
+ get_agentcore_runtime_config,
10
+ )
11
+
12
+
13
+ class <%- mcpServerClassName %>ClientLangChain:
14
+ """Loads LangChain tools from the <%- mcpServerClassName %> MCP server."""
15
+
16
+ @staticmethod
17
+ def create() -> list[BaseTool]:
18
+ if os.environ.get("SERVE_LOCAL") == "true":
19
+ return AgentCoreMCPClientLangChain.without_auth(
20
+ "http://localhost:<%- mcpServerPort %>/mcp"
21
+ )
22
+ config = get_agentcore_runtime_config()
23
+ agent_runtime_arn = config.get("agentRuntimes", {}).get(
24
+ "<%- mcpServerClassName %>"
25
+ )
26
+ if not agent_runtime_arn:
27
+ raise RuntimeError(
28
+ "No connected MCP server runtime named '<%- mcpServerClassName %>' found in runtime configuration."
29
+ )
30
+ return AgentCoreMCPClientLangChain.with_iam_auth(agent_runtime_arn)
@@ -29,24 +29,29 @@ const pyAgentMcpConnectionGenerator = async (tree, options) => {
29
29
  const mcpServerClassName = mcpComponent.rc;
30
30
  const mcpServerSnakeCase = (0, names_1.snakeCase)(mcpServerClassName);
31
31
  const mcpServerPort = mcpComponent.port ?? 8000;
32
+ // The source agent's framework selects the client shape, dependencies and the
33
+ // agent.py transform — see PY_MCP_FAMILY_CONNECTIONS (keyed by framework, not a
34
+ // boolean, so a third framework is an additive entry there).
35
+ const framework = (0, agent_connection_1.resolveAgentFramework)(agentComponent.framework);
36
+ const connection = agent_connection_1.PY_MCP_FAMILY_CONNECTIONS[framework];
32
37
  // 1. Ensure the shared Python agent-connection project exists + has the
33
- // MCP core client and its shared SigV4 auth helper.
38
+ // MCP core client (framework Layer-2) and its shared SigV4 auth helper.
34
39
  await (0, agent_connection_1.ensurePythonAgentConnectionProject)(tree);
35
- await (0, agent_connection_1.addPythonCoreClient)(tree, 'mcp');
40
+ await (0, agent_connection_1.addPythonCoreClient)(tree, 'mcp', framework);
36
41
  const agentConnectionProjectDir = (0, agent_connection_1.getPythonAgentConnectionProjectDir)(tree);
37
42
  const agentConnectionModuleName = (0, agent_connection_1.getPythonAgentConnectionModuleName)(tree);
38
43
  const agentConnectionPackageName = (0, agent_connection_1.getPythonAgentConnectionPackageName)(tree);
39
- // Python deps required by the MCP core client + shared auth helper.
40
- // Layer 0/1 deps for the MCP transport + signed httpx auth. The framework's
41
- // own dependency (strands-agents) is added by addPythonCoreClient.
44
+ // Shared MCP transport + signed httpx auth deps, plus whatever extra deps the
45
+ // framework's MCP client needs (e.g. langchain-mcp-adapters for LangChain).
42
46
  (0, py_1.addDependenciesToPyProjectToml)(tree, agentConnectionProjectDir, [
43
47
  'boto3',
44
48
  'httpx',
45
49
  'mcp',
50
+ ...connection.deps,
46
51
  ]);
47
52
  // 2. Generate the per-connection client into the shared agent-connection project
48
53
  const appDir = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, 'app');
49
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'agent-connection', 'app'), appDir, {
54
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', connection.appTemplateSubdir), appDir, {
50
55
  mcpServerSnakeCase,
51
56
  mcpServerClassName,
52
57
  mcpServerPort,
@@ -59,15 +64,15 @@ const pyAgentMcpConnectionGenerator = async (tree, options) => {
59
64
  }
60
65
  // Add re-export to module __init__.py
61
66
  const moduleInitPath = (0, devkit_1.joinPathFragments)(agentConnectionProjectDir, agentConnectionModuleName, '__init__.py');
62
- await (0, agent_connection_1.addPythonReExport)(tree, moduleInitPath, `.app.${mcpServerSnakeCase}_client_strands`, `${mcpServerClassName}ClientStrands`);
67
+ await (0, agent_connection_1.addPythonReExport)(tree, moduleInitPath, `.app.${mcpServerSnakeCase}_client_${connection.clientModuleSuffix}`, `${mcpServerClassName}Client${connection.clientClassSuffix}`);
63
68
  // 3. Transform agent.py to add MCP client import and usage
64
69
  const agentSourceDir = (0, devkit_1.joinPathFragments)(sourceProject.root, agentComponent.path ?? 'src');
65
70
  const agentFilePath = (0, devkit_1.joinPathFragments)(agentSourceDir, 'agent.py');
66
71
  if (tree.exists(agentFilePath)) {
67
- const clientClassName = `${mcpServerClassName}ClientStrands`;
72
+ const clientClassName = `${mcpServerClassName}Client${connection.clientClassSuffix}`;
68
73
  const clientVarName = mcpServerSnakeCase;
69
74
  await (0, ast_1.addPythonDestructuredImport)(tree, agentFilePath, [clientClassName], agentConnectionModuleName);
70
- await (0, agent_connection_1.addPythonClientToAgent)(tree, agentFilePath, clientClassName, clientVarName);
75
+ await connection.wireClientIntoAgent(tree, agentFilePath, clientClassName, clientVarName);
71
76
  }
72
77
  // 4. Add workspace dependency from agent project to agent-connection project
73
78
  (0, py_1.addWorkspaceDependencyToPyProject)(tree, sourceProject.root, agentConnectionPackageName);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/mcp-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,20 @@ const names_1 = require("../../../utils/names");
8
8
  * Updates the runtime config provider (if it exists) to point to the local HTTP URL.
9
9
  */
10
10
  const addPyAgentTargetToServeLocal = async (tree, sourceProjectName, targetProjectName, options) => {
11
+ // AG-UI clients POST to the runtime config URL directly, so it must point at
12
+ // the agent's `/invocations` endpoint. HTTP agents go through the generated
13
+ // OpenAPI client, which appends the `/invocations` operation path itself, so
14
+ // its base URL must omit it (otherwise the request hits `/invocations/invocations`).
15
+ const protocol = (options.targetComponent?.protocol ?? 'http').toLowerCase();
16
+ const localUrl = protocol === 'ag-ui'
17
+ ? `http://localhost:${options.port}/invocations`
18
+ : `http://localhost:${options.port}`;
11
19
  await (0, agent_serve_local_1.addAgentTargetToServeLocal)(tree, sourceProjectName, targetProjectName, {
12
20
  agentNameClassName: options.agentNameClassName,
13
21
  port: options.port,
14
22
  targetComponent: options.targetComponent,
15
23
  runtimeConfigNamespace: 'agentRuntimes',
16
- localUrl: `http://localhost:${options.port}/invocations`,
24
+ localUrl,
17
25
  additionalDependencyTargets: options.additionalDependencyTargets,
18
26
  });
19
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"serve-local.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/serve-local.ts"],"names":[],"mappings":";;;AAKA,6EAAmF;AACnF,gDAAiD;AAWjD;;;GAGG;AACI,MAAM,4BAA4B,GAAG,KAAK,EAC/C,IAAU,EACV,iBAAyB,EACzB,iBAAyB,EACzB,OAAiC,EACjC,EAAE;IACF,MAAM,IAAA,8CAA0B,EAAC,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE;QAC3E,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,sBAAsB,EAAE,eAAe;QACvC,QAAQ,EAAE,oBAAoB,OAAO,CAAC,IAAI,cAAc;QACxD,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;KACjE,CAAC,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,4BAA4B,gCAcvC;AAEF;;;GAGG;AACI,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAChB,EAAE;IACZ,MAAM,eAAe,GAAG,YAAY,IAAA,iBAAS,EAAC,kBAAkB,CAAC,SAAS,CAAC;IAC3E,OAAO,CAAC,eAAe,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,2BAA2B,+BAKtC"}
1
+ {"version":3,"file":"serve-local.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/serve-local.ts"],"names":[],"mappings":";;;AAKA,6EAAmF;AACnF,gDAAiD;AAWjD;;;GAGG;AACI,MAAM,4BAA4B,GAAG,KAAK,EAC/C,IAAU,EACV,iBAAyB,EACzB,iBAAyB,EACzB,OAAiC,EACjC,EAAE;IACF,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,qFAAqF;IACrF,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,MAAM,QAAQ,GACZ,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,oBAAoB,OAAO,CAAC,IAAI,cAAc;QAChD,CAAC,CAAC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC;IAEzC,MAAM,IAAA,8CAA0B,EAAC,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE;QAC3E,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,sBAAsB,EAAE,eAAe;QACvC,QAAQ;QACR,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;KACjE,CAAC,CAAC;AACL,CAAC,CAAC;AAxBW,QAAA,4BAA4B,gCAwBvC;AAEF;;;GAGG;AACI,MAAM,2BAA2B,GAAG,CACzC,kBAA0B,EAChB,EAAE;IACZ,MAAM,eAAe,GAAG,YAAY,IAAA,iBAAS,EAAC,kBAAkB,CAAC,SAAS,CAAC;IAC3E,OAAO,CAAC,eAAe,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,2BAA2B,+BAKtC"}
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { IacOption } from '../../utils/iac';
7
7
 
8
- export type PyAgentFramework = 'strands';
8
+ export type PyAgentFramework = 'strands' | 'langchain';
9
9
  export type PyAgentInfra = 'agentcore' | 'none';
10
10
  export type AgentProtocol = 'http' | 'a2a' | 'ag-ui';
11
11
 
@@ -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
  },