@aws/nx-plugin 1.0.0-rc.18 → 1.0.0-rc.19
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.
- package/package.json +1 -1
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +15 -6
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +201 -0
- package/src/py/agent/a2a-connection/files/agent-connection/app/{__targetAgentSnakeCase___client.py.template → __targetAgentSnakeCase___client_strands.py.template} +7 -5
- package/src/py/agent/a2a-connection/generator.js +6 -5
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/files/http/main.py.template +2 -2
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +197 -0
- package/src/py/agent/gateway-connection/files/agent-connection/app/{__gatewaySnakeCase___client.py.template → __gatewaySnakeCase___client_strands.py.template} +6 -6
- package/src/py/agent/gateway-connection/generator.js +5 -5
- package/src/py/agent/gateway-connection/generator.js.map +1 -1
- package/src/py/agent/generator.js +3 -0
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +157 -79
- package/src/py/agent/mcp-connection/files/agent-connection/app/{__mcpServerSnakeCase___client.py.template → __mcpServerSnakeCase___client_strands.py.template} +7 -5
- package/src/py/agent/mcp-connection/generator.js +5 -5
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +37 -3
- package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +13 -4
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/smithy/project/files/src/operations/echo.smithy.template +1 -0
- package/src/terraform/project/files/application/src/main.tf.template +6 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +35 -4
- package/src/trpc/backend/files/src/procedures/echo.ts.template +1 -1
- package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +14 -5
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +256 -0
- package/src/ts/agent/a2a-connection/files/agent-connection/app/{__targetAgentKebabCase__-client.ts.template → __targetAgentKebabCase__-client-strands.ts.template} +5 -5
- package/src/ts/agent/a2a-connection/generator.js +3 -3
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/files/http/router.ts.template +1 -1
- package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +220 -0
- package/src/ts/agent/gateway-connection/files/agent-connection/app/{__gatewayKebabCase__-client.ts.template → __gatewayKebabCase__-client-strands.ts.template} +5 -5
- package/src/ts/agent/gateway-connection/generator.js +3 -3
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/generator.js +3 -0
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +183 -110
- package/src/ts/agent/mcp-connection/files/agent-connection/app/{__mcpServerKebabCase__-client.ts.template → __mcpServerKebabCase__-client-strands.ts.template} +5 -5
- package/src/ts/agent/mcp-connection/generator.js +3 -3
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +13 -4
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +64 -24
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +13 -4
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +9 -3
- package/src/utils/agent-connection/agent-connection.d.ts +50 -24
- package/src/utils/agent-connection/agent-connection.js +137 -45
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
- package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
- package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
- package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
- package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
- package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
- package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
- package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +66 -0
- package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
- package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +7 -2
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +13 -4
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +9 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +23 -1
- package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +9 -3
- package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +7 -2
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +9 -3
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +22 -8
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +10 -4
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +13 -4
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-client.ts.template +0 -78
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_client.py.template +0 -78
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
- /package/src/utils/agent-connection/files/{core-runtime-config/model-errors.ts.template → core-strands/base/model-errors-strands.ts.template} +0 -0
- /package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +0 -0
- /package/src/utils/agent-connection/files/{py-core-runtime-config/model_errors.py.template → py-core-strands/base/model_errors_strands.py.template} +0 -0
- /package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +0 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`ts#agent#gateway-connection generator > should match snapshot for agent-connection src files > agent-connection-index.ts 1`] = `
|
|
4
|
+
"export * from './app/my-gateway-client-strands.js';
|
|
5
|
+
export * from './core/model-errors-strands.js';
|
|
6
|
+
export * from './core/with-session-id-strands.js';
|
|
7
|
+
export * from './core/session-context.js';
|
|
8
|
+
// Export your library code here
|
|
9
|
+
"
|
|
10
|
+
`;
|
|
11
|
+
|
|
12
|
+
exports[`ts#agent#gateway-connection generator > should match snapshot for agent-connection src files > agentcore-fetch.ts 1`] = `
|
|
13
|
+
"import { AwsClient } from 'aws4fetch';
|
|
14
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
15
|
+
import { getCurrentSessionId } from './session-context.js';
|
|
16
|
+
|
|
17
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
18
|
+
|
|
19
|
+
/** Wrap a fetch so each request carries the current async-context session id. */
|
|
20
|
+
const withSessionHeader =
|
|
21
|
+
(inner: typeof fetch): typeof fetch =>
|
|
22
|
+
async (input, init) => {
|
|
23
|
+
const headers = new Headers(init?.headers);
|
|
24
|
+
const sessionId = getCurrentSessionId();
|
|
25
|
+
if (sessionId) headers.set(SESSION_HEADER, sessionId);
|
|
26
|
+
return inner(input, { ...init, headers });
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** Options for a SigV4-signing fetch. */
|
|
30
|
+
export interface SigV4FetchOptions {
|
|
31
|
+
/** AWS region to sign for. */
|
|
32
|
+
region: string;
|
|
33
|
+
/** AWS service to sign for. Defaults to \`bedrock-agentcore\`. */
|
|
34
|
+
service?: string;
|
|
35
|
+
/** AWS credential provider; defaults to the standard provider chain. */
|
|
36
|
+
credentialProvider?: ReturnType<typeof fromNodeProviderChain>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** A fetch that signs every request with AWS SigV4 (per-request, body-aware). */
|
|
40
|
+
export const createSigV4Fetch = (options: SigV4FetchOptions): typeof fetch => {
|
|
41
|
+
const { region, service = 'bedrock-agentcore' } = options;
|
|
42
|
+
const credentialProvider =
|
|
43
|
+
options.credentialProvider ?? fromNodeProviderChain();
|
|
44
|
+
const signedFetch: typeof fetch = async (...args) => {
|
|
45
|
+
const client = new AwsClient({
|
|
46
|
+
...(await credentialProvider()),
|
|
47
|
+
service,
|
|
48
|
+
region,
|
|
49
|
+
});
|
|
50
|
+
return client.fetch(...args);
|
|
51
|
+
};
|
|
52
|
+
return withSessionHeader(signedFetch);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/** A fetch that adds a bearer token from the given async provider. */
|
|
56
|
+
export const createJwtFetch = (
|
|
57
|
+
accessTokenProvider: () => Promise<string>,
|
|
58
|
+
): typeof fetch =>
|
|
59
|
+
withSessionHeader(async (input, init) => {
|
|
60
|
+
const headers = new Headers(init?.headers);
|
|
61
|
+
headers.set('Authorization', \`Bearer \${await accessTokenProvider()}\`);
|
|
62
|
+
return fetch(input, { ...init, headers });
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
/** A plain fetch (local dev) that still forwards the session id. */
|
|
66
|
+
export const createPlainFetch = (): typeof fetch => withSessionHeader(fetch);
|
|
67
|
+
"
|
|
68
|
+
`;
|
|
69
|
+
|
|
70
|
+
exports[`ts#agent#gateway-connection generator > should match snapshot for agent-connection src files > agentcore-gateway-mcp-client-strands.ts 1`] = `
|
|
71
|
+
"import { McpClient } from '@strands-agents/sdk';
|
|
72
|
+
import {
|
|
73
|
+
AgentCoreGatewayMcpTransport,
|
|
74
|
+
type AgentCoreGatewayMcpTransportIamOptions,
|
|
75
|
+
} from './agentcore-gateway-mcp-transport.js';
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Strands MCP clients that connect to an AgentCore Gateway.
|
|
79
|
+
*/
|
|
80
|
+
export class AgentCoreGatewayMcpClientStrands {
|
|
81
|
+
/** Create a gateway MCP client authenticated with IAM SigV4. */
|
|
82
|
+
static withIamAuth(
|
|
83
|
+
options: AgentCoreGatewayMcpTransportIamOptions,
|
|
84
|
+
): McpClient {
|
|
85
|
+
return new McpClient({
|
|
86
|
+
transport: AgentCoreGatewayMcpTransport.withIamAuth(options),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Plain-HTTP gateway client, for the local gateway started by serve-local. */
|
|
91
|
+
static withoutAuth(options: { gatewayUrl: string }): McpClient {
|
|
92
|
+
return new McpClient({
|
|
93
|
+
transport: AgentCoreGatewayMcpTransport.withoutAuth(options),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
"
|
|
98
|
+
`;
|
|
99
|
+
|
|
100
|
+
exports[`ts#agent#gateway-connection generator > should match snapshot for agent-connection src files > agentcore-gateway-mcp-transport.ts 1`] = `
|
|
101
|
+
"import type { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
102
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
103
|
+
import { regionFromGatewayUrl } from './agentcore-endpoints.js';
|
|
104
|
+
import { sigV4Transport, noAuthTransport } from './agentcore-transport.js';
|
|
105
|
+
|
|
106
|
+
export interface AgentCoreGatewayMcpTransportIamOptions {
|
|
107
|
+
/**
|
|
108
|
+
* The MCP URL of the AgentCore Gateway, of the form
|
|
109
|
+
* https://<gatewayId>.gateway.bedrock-agentcore.<region>.amazonaws.com/mcp
|
|
110
|
+
*/
|
|
111
|
+
gatewayUrl: string;
|
|
112
|
+
/** AWS region override; by default parsed from \`gatewayUrl\`. */
|
|
113
|
+
region?: string;
|
|
114
|
+
/** AWS credential provider; defaults to the standard provider chain. */
|
|
115
|
+
credentialProvider?: ReturnType<typeof fromNodeProviderChain>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Factory for MCP transports that connect to an AgentCore Gateway. Forwards the
|
|
120
|
+
* current async-context session via the AgentCore session header, which the
|
|
121
|
+
* gateway propagates to downstream MCP server targets.
|
|
122
|
+
*/
|
|
123
|
+
export class AgentCoreGatewayMcpTransport {
|
|
124
|
+
/** Create a gateway MCP transport authenticated with IAM SigV4. */
|
|
125
|
+
static withIamAuth(
|
|
126
|
+
options: AgentCoreGatewayMcpTransportIamOptions,
|
|
127
|
+
): StreamableHTTPClientTransport {
|
|
128
|
+
return sigV4Transport({
|
|
129
|
+
region: options.region ?? regionFromGatewayUrl(options.gatewayUrl),
|
|
130
|
+
url: options.gatewayUrl,
|
|
131
|
+
credentialProvider: options.credentialProvider,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Plain-HTTP gateway transport, for the local gateway started by serve-local. */
|
|
136
|
+
static withoutAuth(options: {
|
|
137
|
+
gatewayUrl: string;
|
|
138
|
+
}): StreamableHTTPClientTransport {
|
|
139
|
+
return noAuthTransport({ url: options.gatewayUrl });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
"
|
|
143
|
+
`;
|
|
144
|
+
|
|
145
|
+
exports[`ts#agent#gateway-connection generator > should match snapshot for agent-connection src files > agentcore-transport.ts 1`] = `
|
|
146
|
+
"import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
147
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
148
|
+
import {
|
|
149
|
+
createSigV4Fetch,
|
|
150
|
+
createJwtFetch,
|
|
151
|
+
createPlainFetch,
|
|
152
|
+
} from './agentcore-fetch.js';
|
|
153
|
+
|
|
154
|
+
const build = (
|
|
155
|
+
url: string,
|
|
156
|
+
fetchFn: typeof fetch,
|
|
157
|
+
): StreamableHTTPClientTransport =>
|
|
158
|
+
new StreamableHTTPClientTransport(new URL(url), { fetch: fetchFn });
|
|
159
|
+
|
|
160
|
+
/** SigV4-signed transport for a resolved AgentCore endpoint. */
|
|
161
|
+
export const sigV4Transport = (options: {
|
|
162
|
+
region: string;
|
|
163
|
+
url: string;
|
|
164
|
+
credentialProvider?: ReturnType<typeof fromNodeProviderChain>;
|
|
165
|
+
}): StreamableHTTPClientTransport =>
|
|
166
|
+
build(
|
|
167
|
+
options.url,
|
|
168
|
+
createSigV4Fetch({
|
|
169
|
+
region: options.region,
|
|
170
|
+
credentialProvider: options.credentialProvider,
|
|
171
|
+
}),
|
|
172
|
+
);
|
|
173
|
+
|
|
174
|
+
/** Bearer-token transport for a resolved AgentCore endpoint. */
|
|
175
|
+
export const jwtTransport = (options: {
|
|
176
|
+
url: string;
|
|
177
|
+
accessTokenProvider: () => Promise<string>;
|
|
178
|
+
}): StreamableHTTPClientTransport =>
|
|
179
|
+
build(options.url, createJwtFetch(options.accessTokenProvider));
|
|
180
|
+
|
|
181
|
+
/** Plain-HTTP transport — for local dev. */
|
|
182
|
+
export const noAuthTransport = (options: {
|
|
183
|
+
url: string;
|
|
184
|
+
}): StreamableHTTPClientTransport => build(options.url, createPlainFetch());
|
|
185
|
+
"
|
|
186
|
+
`;
|
|
187
|
+
|
|
188
|
+
exports[`ts#agent#gateway-connection generator > should match snapshot for agent-connection src files > my-gateway-client-strands.ts 1`] = `
|
|
189
|
+
"import { McpClient } from '@strands-agents/sdk';
|
|
190
|
+
import { AgentCoreGatewayMcpClientStrands } from '../core/agentcore-gateway-mcp-client-strands.js';
|
|
191
|
+
import { getAgentCoreRuntimeConfig } from '../core/runtime-config.js';
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Strands client for the MyGateway AgentCore Gateway.
|
|
195
|
+
*
|
|
196
|
+
* Deployed: a SigV4-signed MCP client pointing at the gateway URL.
|
|
197
|
+
* Local (\`SERVE_LOCAL=true\`): a plain-HTTP client pointing at the local
|
|
198
|
+
* gateway started by the gateway project's serve-local target. The local
|
|
199
|
+
* gateway aggregates every attached MCP server but does not evaluate
|
|
200
|
+
* Cedar policies.
|
|
201
|
+
*/
|
|
202
|
+
export class MyGatewayClientStrands {
|
|
203
|
+
static async create(): Promise<McpClient> {
|
|
204
|
+
if (process.env.SERVE_LOCAL === 'true') {
|
|
205
|
+
return AgentCoreGatewayMcpClientStrands.withoutAuth({
|
|
206
|
+
gatewayUrl: 'http://localhost:8100/mcp',
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
const config = await getAgentCoreRuntimeConfig();
|
|
210
|
+
const gatewayUrl = config.gateways?.['MyGateway'];
|
|
211
|
+
if (!gatewayUrl) {
|
|
212
|
+
throw new Error(
|
|
213
|
+
\`No connected gateway named 'MyGateway' found in runtime configuration.\`,
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
return AgentCoreGatewayMcpClientStrands.withIamAuth({ gatewayUrl });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
"
|
|
220
|
+
`;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { McpClient } from '@strands-agents/sdk';
|
|
2
|
-
import {
|
|
2
|
+
import { AgentCoreGatewayMcpClientStrands } from '../core/agentcore-gateway-mcp-client-strands.js';
|
|
3
3
|
import { getAgentCoreRuntimeConfig } from '../core/runtime-config.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Strands client for the <%- gatewayClassName %> AgentCore Gateway.
|
|
7
7
|
*
|
|
8
8
|
* Deployed: a SigV4-signed MCP client pointing at the gateway URL.
|
|
9
9
|
* Local (`SERVE_LOCAL=true`): a plain-HTTP client pointing at the local
|
|
@@ -11,10 +11,10 @@ import { getAgentCoreRuntimeConfig } from '../core/runtime-config.js';
|
|
|
11
11
|
* gateway aggregates every attached MCP server but does not evaluate
|
|
12
12
|
* Cedar policies.
|
|
13
13
|
*/
|
|
14
|
-
export class <%- gatewayClassName %>
|
|
14
|
+
export class <%- gatewayClassName %>ClientStrands {
|
|
15
15
|
static async create(): Promise<McpClient> {
|
|
16
16
|
if (process.env.SERVE_LOCAL === 'true') {
|
|
17
|
-
return
|
|
17
|
+
return AgentCoreGatewayMcpClientStrands.withoutAuth({
|
|
18
18
|
gatewayUrl: 'http://localhost:<%- gatewayPort %>/mcp',
|
|
19
19
|
});
|
|
20
20
|
}
|
|
@@ -25,6 +25,6 @@ export class <%- gatewayClassName %>Client {
|
|
|
25
25
|
`No connected gateway named '<%- gatewayClassName %>' found in runtime configuration.`,
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
|
-
return
|
|
28
|
+
return AgentCoreGatewayMcpClientStrands.withIamAuth({ gatewayUrl });
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -41,7 +41,7 @@ const tsAgentGatewayConnectionGenerator = async (tree, options) => {
|
|
|
41
41
|
// 1. Ensure the shared agent-connection project exists + has the gateway
|
|
42
42
|
// core client template.
|
|
43
43
|
await (0, agent_connection_1.ensureTypeScriptAgentConnectionProject)(tree);
|
|
44
|
-
(0, agent_connection_1.addTypeScriptCoreClient)(tree, 'gateway');
|
|
44
|
+
await (0, agent_connection_1.addTypeScriptCoreClient)(tree, 'gateway');
|
|
45
45
|
// 2. Generate the per-connection <Gateway>Client into app/. Local mode
|
|
46
46
|
// points at the gateway project's local gateway port.
|
|
47
47
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'agent-connection', 'app'), (0, devkit_1.joinPathFragments)(agent_connection_1.AGENT_CONNECTION_PROJECT_DIR, 'src', 'app'), {
|
|
@@ -50,13 +50,13 @@ const tsAgentGatewayConnectionGenerator = async (tree, options) => {
|
|
|
50
50
|
gatewayPort: gateway.port,
|
|
51
51
|
}, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
|
|
52
52
|
// Re-export from the agent-connection index
|
|
53
|
-
await (0, ast_1.addStarExport)(tree, (0, devkit_1.joinPathFragments)(agent_connection_1.AGENT_CONNECTION_PROJECT_DIR, 'src', 'index.ts'), `./app/${gatewayKebabCase}-client.js`);
|
|
53
|
+
await (0, ast_1.addStarExport)(tree, (0, devkit_1.joinPathFragments)(agent_connection_1.AGENT_CONNECTION_PROJECT_DIR, 'src', 'index.ts'), `./app/${gatewayKebabCase}-client-strands.js`);
|
|
54
54
|
// 3. AST-transform agent.ts to add the gateway client (an McpClient in
|
|
55
55
|
// both deployed and local modes) to the agent's tools.
|
|
56
56
|
const agentSourceDir = (0, devkit_1.joinPathFragments)(sourceProject.root, agentComponent.path ?? 'src');
|
|
57
57
|
const agentFilePath = (0, devkit_1.joinPathFragments)(agentSourceDir, 'agent.ts');
|
|
58
58
|
if (tree.exists(agentFilePath)) {
|
|
59
|
-
const clientClassName = `${gatewayClassName}
|
|
59
|
+
const clientClassName = `${gatewayClassName}ClientStrands`;
|
|
60
60
|
const clientVarName = gatewayClassName.charAt(0).toLowerCase() + gatewayClassName.slice(1);
|
|
61
61
|
await (0, ast_1.addDestructuredImport)(tree, agentFilePath, [clientClassName], `:${npmScope}/agent-connection`);
|
|
62
62
|
await (0, agent_connection_1.addTypeScriptClientToAgent)(tree, agentFilePath, clientClassName, clientVarName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/agent/gateway-connection/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AACpB,oEAAoF;AACpF,uFAK0D;AAC1D,4CAA0E;AAC1E,kDAA6D;AAC7D,oDAAyE;AACzE,gDAAiD;AACjD,wDAAuD;AACvD,0CAK2B;AAC3B,sDAAuD;AAG1C,QAAA,0CAA0C,GACrD,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,MAAM,iCAAiC,GAAG,KAAK,EACpD,IAAU,EACV,OAAgD,EACpB,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,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,wCAA4B,EAAC,aAAa,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,CAAC,IAAI,mBAAmB,OAAO,CAAC,QAAQ,8CAA8C,CAC1G,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,CAAC,IAAI,gBAAgB,OAAO,CAAC,IAAI,yDAAyD,CAC9G,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,UAAU,cAAc,CAAC,IAAI,gBAAgB,cAAc,CAAC,IAAI,+DAA+D,CAChI,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAG,IAAA,iBAAS,EAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,sBAAsB,GAAG,GAAG,gBAAgB,QAAQ,CAAC;IAC3D,MAAM,2BAA2B,GAAG,GAAG,gBAAgB,cAAc,CAAC;IAEtE,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;IAEnC,yEAAyE;IACzE,2BAA2B;IAC3B,MAAM,IAAA,yDAAsC,EAAC,IAAI,CAAC,CAAC;IACnD,IAAA,0CAAuB,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/agent/gateway-connection/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,9 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
47
47
|
// ID to any downstream MCP / A2A clients a later connection generator
|
|
48
48
|
// wires into this agent.
|
|
49
49
|
await (0, agent_connection_1.ensureTypeScriptAgentConnectionProject)(tree);
|
|
50
|
+
// The agent server imports the framework base helpers (session cache + model
|
|
51
|
+
// error logging) regardless of whether a connection client is wired in.
|
|
52
|
+
await (0, agent_connection_1.addTypeScriptFrameworkBase)(tree);
|
|
50
53
|
const templateContext = {
|
|
51
54
|
name,
|
|
52
55
|
agentNameClassName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/agent/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AACpB,kEAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/agent/generator.ts"],"names":[],"mappings":"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"}
|