@aws/nx-plugin 0.99.0 → 0.100.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 (51) hide show
  1. package/LICENSE-THIRD-PARTY +14 -94
  2. package/generators.json +1 -0
  3. package/package.json +1 -1
  4. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +10 -10
  5. package/src/py/mcp-server/files/deploy/Dockerfile.template +1 -1
  6. package/src/py/mcp-server/generator.js +10 -2
  7. package/src/py/mcp-server/generator.js.map +1 -1
  8. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +43 -12
  9. package/src/py/strands-agent/files/ag-ui/main.py.template +19 -0
  10. package/src/py/strands-agent/files/deploy/Dockerfile.template +3 -1
  11. package/src/py/strands-agent/generator.js +20 -7
  12. package/src/py/strands-agent/generator.js.map +1 -1
  13. package/src/py/strands-agent/react-connection/__snapshots__/generator.spec.ts.snap +133 -0
  14. package/src/py/strands-agent/react-connection/generator.js +69 -56
  15. package/src/py/strands-agent/react-connection/generator.js.map +1 -1
  16. package/src/py/strands-agent/react-connection/serve-local.d.ts +6 -2
  17. package/src/py/strands-agent/react-connection/serve-local.js +11 -6
  18. package/src/py/strands-agent/react-connection/serve-local.js.map +1 -1
  19. package/src/py/strands-agent/schema.d.ts +1 -1
  20. package/src/py/strands-agent/schema.json +2 -2
  21. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1 -1
  22. package/src/trpc/backend/files/src/middleware/metrics.ts.template +1 -1
  23. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +10 -10
  24. package/src/ts/mcp-server/files/Dockerfile.template +1 -1
  25. package/src/ts/mcp-server/generator.js +9 -1
  26. package/src/ts/mcp-server/generator.js.map +1 -1
  27. package/src/ts/react-website/agui/files/src/components/AguiProvider.tsx.template +19 -0
  28. package/src/ts/react-website/agui/files/src/hooks/useAgui__agentNameClassName__.tsx.template +142 -0
  29. package/src/ts/react-website/agui/generator.d.ts +26 -0
  30. package/src/ts/react-website/agui/generator.js +98 -0
  31. package/src/ts/react-website/agui/generator.js.map +1 -0
  32. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +49 -0
  33. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +2 -0
  34. package/src/ts/strands-agent/__snapshots__/generator.spec.ts.snap +43 -12
  35. package/src/ts/strands-agent/files/deploy/Dockerfile.template +1 -1
  36. package/src/ts/strands-agent/generator.js +14 -1
  37. package/src/ts/strands-agent/generator.js.map +1 -1
  38. package/src/ts/strands-agent/schema.d.ts +1 -1
  39. package/src/ts/strands-agent/schema.json +2 -2
  40. package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +24 -0
  41. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +3 -0
  42. package/src/utils/agent-core-constructs/agent-core-constructs.js +2 -0
  43. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  44. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +26 -11
  45. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +13 -1
  46. package/src/utils/files/common/constructs/src/core/index.ts.template +2 -1
  47. package/src/utils/files/common/constructs/src/core/workspace.ts.template +19 -0
  48. package/src/utils/versions.d.ts +6 -1
  49. package/src/utils/versions.js +5 -0
  50. package/src/utils/versions.js.map +1 -1
  51. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/Dockerfile.template +0 -1
@@ -220,3 +220,136 @@ export function Main() {
220
220
  }
221
221
  "
222
222
  `;
223
+
224
+ exports[`py strands agent react connection generator - AG-UI protocol > should generate a shared AguiProvider and a per-agent hook for AG-UI agents > AguiProvider.tsx 1`] = `
225
+ "import { useAguiTestAgent } from '../hooks/useAguiTestAgent';
226
+ import { CopilotKitProvider } from '@copilotkit/react-core/v2';
227
+ import '@copilotkit/react-core/v2/styles.css';
228
+ import { type FC, type PropsWithChildren, useMemo } from 'react';
229
+ import type { AbstractAgent } from '@ag-ui/client';
230
+
231
+ export const AguiProvider: FC<PropsWithChildren> = ({ children }) => {
232
+ const testAgentAgents = useAguiTestAgent();
233
+ const selfManagedAgents = useMemo<Record<string, AbstractAgent>>(
234
+ () => ({ ...testAgentAgents }),
235
+ [testAgentAgents],
236
+ );
237
+
238
+ return (
239
+ <CopilotKitProvider selfManagedAgents={selfManagedAgents}>
240
+ {children}
241
+ </CopilotKitProvider>
242
+ );
243
+ };
244
+
245
+ export default AguiProvider;
246
+ "
247
+ `;
248
+
249
+ exports[`py strands agent react connection generator - AG-UI protocol > should generate a shared AguiProvider and a per-agent hook for AG-UI agents > useAguiTestAgent.tsx 1`] = `
250
+ "import { HttpAgent } from '@ag-ui/client';
251
+ import type { AbstractAgent, RunAgentInput } from '@ag-ui/client';
252
+ import { Observable } from 'rxjs';
253
+ import { useMemo } from 'react';
254
+ import { useRuntimeConfig } from './useRuntimeConfig';
255
+ import { useSigV4, type SigV4Client } from './useSigV4';
256
+
257
+ function buildAgentCoreUrl(agentRuntimeArn: string): string {
258
+ const region = agentRuntimeArn.split(':')[3];
259
+ return \`https://bedrock-agentcore.\${region}.amazonaws.com/runtimes/\${encodeURIComponent(agentRuntimeArn)}/invocations?qualifier=DEFAULT\`;
260
+ }
261
+
262
+ // AgentCore session ids must be at least 33 characters.
263
+ function agentCoreSessionId(input: RunAgentInput): string {
264
+ return (input.threadId ?? '').padEnd(33, '0');
265
+ }
266
+
267
+ class SigV4HttpAgent extends HttpAgent {
268
+ sigV4Client: SigV4Client;
269
+
270
+ constructor(
271
+ config: ConstructorParameters<typeof HttpAgent>[0],
272
+ sigV4Client: SigV4Client,
273
+ ) {
274
+ super(config);
275
+ this.sigV4Client = sigV4Client;
276
+ }
277
+
278
+ protected override requestInit(input: RunAgentInput): RequestInit {
279
+ const init = super.requestInit(input);
280
+ init.headers = {
281
+ ...(init.headers as Record<string, string>),
282
+ 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id': agentCoreSessionId(input),
283
+ };
284
+ return init;
285
+ }
286
+
287
+ // Remove this override once https://github.com/ag-ui-protocol/ag-ui/issues/1316 is fixed.
288
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
289
+ override run(input: RunAgentInput): any {
290
+ const sigV4Fetch = this.sigV4Client.fetch as typeof window.fetch;
291
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
292
+ return new Observable<any>((subscriber) => {
293
+ const originalFetch = window.fetch;
294
+ window.fetch = sigV4Fetch;
295
+ const sub = super.run(input).subscribe(subscriber);
296
+ window.fetch = originalFetch;
297
+ return () => sub.unsubscribe();
298
+ });
299
+ }
300
+
301
+ override clone(): SigV4HttpAgent {
302
+ const cloned = super.clone() as SigV4HttpAgent;
303
+ cloned.sigV4Client = this.sigV4Client;
304
+ return cloned;
305
+ }
306
+ }
307
+
308
+ export const useAguiTestAgent = (): Record<string, AbstractAgent> => {
309
+ const runtimeConfig = useRuntimeConfig();
310
+ const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
311
+ const sigv4 = useSigV4();
312
+
313
+ const url = useMemo(
314
+ () =>
315
+ agentRuntimeValue.startsWith('arn:')
316
+ ? buildAgentCoreUrl(agentRuntimeValue)
317
+ : agentRuntimeValue,
318
+ [agentRuntimeValue],
319
+ );
320
+
321
+ return useMemo((): Record<string, AbstractAgent> => {
322
+ const agent = new SigV4HttpAgent({ url }, sigv4);
323
+
324
+ return { agent: agent };
325
+ }, [url, sigv4]);
326
+ };
327
+ "
328
+ `;
329
+
330
+ exports[`py strands agent react connection generator - AG-UI protocol > should register multiple AG-UI agents in the shared AguiProvider > AguiProvider-multi-agent.tsx 1`] = `
331
+ "import { useAguiResearchAgent } from '../hooks/useAguiResearchAgent';
332
+ import { useAguiTestAgent } from '../hooks/useAguiTestAgent';
333
+ import { CopilotKitProvider } from '@copilotkit/react-core/v2';
334
+ import '@copilotkit/react-core/v2/styles.css';
335
+ import { type FC, type PropsWithChildren, useMemo } from 'react';
336
+ import type { AbstractAgent } from '@ag-ui/client';
337
+
338
+ export const AguiProvider: FC<PropsWithChildren> = ({ children }) => {
339
+ const testAgentAgents = useAguiTestAgent();
340
+ const researchAgentAgents = useAguiResearchAgent();
341
+ const selfManagedAgents = useMemo<Record<string, AbstractAgent>>(
342
+ () => ({ ...testAgentAgents, ...researchAgentAgents }),
343
+ [testAgentAgents, researchAgentAgents],
344
+ );
345
+
346
+ return (
347
+ <CopilotKitProvider selfManagedAgents={selfManagedAgents}>
348
+ {children}
349
+ </CopilotKitProvider>
350
+ );
351
+ };
352
+
353
+ export default AguiProvider;
354
+ "
355
+ `;
@@ -14,6 +14,7 @@ const agent_runtime_config_1 = require("../../../connection/agent-runtime-config
14
14
  const names_1 = require("../../../utils/names");
15
15
  const object_1 = require("../../../utils/object");
16
16
  const serve_local_1 = require("./serve-local");
17
+ const generator_1 = require("../../../ts/react-website/agui/generator");
17
18
  exports.PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
18
19
  const pyStrandsAgentReactConnectionGenerator = async (tree, options) => {
19
20
  const frontendProjectConfig = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.sourceProject);
@@ -25,71 +26,83 @@ const pyStrandsAgentReactConnectionGenerator = async (tree, options) => {
25
26
  const agentNameClassName = targetComponent?.rc ?? (0, names_1.toClassName)(agentName);
26
27
  const agentPort = targetComponent?.port ?? metadata?.ports?.[0] ?? 8081;
27
28
  const auth = targetComponent?.auth ?? metadata?.auth ?? 'IAM';
28
- if (targetComponent?.protocol === 'A2A') {
29
+ const protocol = targetComponent?.protocol ?? 'HTTP';
30
+ if (protocol === 'A2A') {
29
31
  throw new Error(`Cannot connect a React website to an A2A agent. ` +
30
- `Consider generating an agent with the HTTP protocol instead.`);
32
+ `Consider generating an agent with the HTTP or AG-UI protocol instead.`);
31
33
  }
32
- // Determine the module name from the project source root
33
- const moduleName = getModuleName(agentProjectConfig);
34
- const agentNameSnakeCase = (0, names_1.toSnakeCase)(agentName);
35
- const agentTargetPrefix = targetComponent?.name ? agentName : 'agent';
36
- // Add OpenAPI spec generation script scoped to this agent
37
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files/agent'), agentProjectConfig.root, {
38
- moduleName,
39
- agentNameSnakeCase,
40
- }, {
41
- overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
42
- });
43
- // Instrument the OpenAPI spec generation as a target on the agent project
44
- const openApiTargetName = `${agentTargetPrefix}-openapi`;
45
- const openApiDist = (0, devkit_1.joinPathFragments)('dist', agentProjectConfig.root, 'openapi', agentNameSnakeCase);
46
- const specPath = (0, devkit_1.joinPathFragments)(openApiDist, 'openapi.json');
47
- (0, devkit_1.updateProjectConfiguration)(tree, agentProjectConfig.name, {
48
- ...agentProjectConfig,
49
- targets: (0, object_1.sortObjectKeys)({
50
- ...agentProjectConfig.targets,
51
- [openApiTargetName]: {
52
- cache: true,
53
- executor: 'nx:run-commands',
54
- outputs: [
55
- `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`,
56
- ],
57
- options: {
58
- commands: [
59
- `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py "dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json"`,
34
+ let additionalServeLocalDeps = [];
35
+ if (protocol === 'AG-UI') {
36
+ await (0, generator_1.addAgUiReactConnection)(tree, {
37
+ frontendProjectConfig,
38
+ agentName,
39
+ agentNameClassName,
40
+ auth: auth,
41
+ });
42
+ }
43
+ else {
44
+ const moduleName = getModuleName(agentProjectConfig);
45
+ const agentNameSnakeCase = (0, names_1.toSnakeCase)(agentName);
46
+ const agentTargetPrefix = targetComponent?.name ? agentName : 'agent';
47
+ // Add OpenAPI spec generation script scoped to this agent
48
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files/agent'), agentProjectConfig.root, {
49
+ moduleName,
50
+ agentNameSnakeCase,
51
+ }, {
52
+ overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
53
+ });
54
+ // Instrument the OpenAPI spec generation as a target on the agent project
55
+ const openApiTargetName = `${agentTargetPrefix}-openapi`;
56
+ const openApiDist = (0, devkit_1.joinPathFragments)('dist', agentProjectConfig.root, 'openapi', agentNameSnakeCase);
57
+ const specPath = (0, devkit_1.joinPathFragments)(openApiDist, 'openapi.json');
58
+ (0, devkit_1.updateProjectConfiguration)(tree, agentProjectConfig.name, {
59
+ ...agentProjectConfig,
60
+ targets: (0, object_1.sortObjectKeys)({
61
+ ...agentProjectConfig.targets,
62
+ [openApiTargetName]: {
63
+ cache: true,
64
+ executor: 'nx:run-commands',
65
+ outputs: [
66
+ `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`,
60
67
  ],
68
+ options: {
69
+ commands: [
70
+ `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py "dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json"`,
71
+ ],
72
+ },
61
73
  },
62
- },
63
- }),
64
- });
65
- // Use the shared OpenAPI react client utility for hooks, providers, and build targets.
66
- // Serve-local is handled separately below using the agent-specific serve-local target.
67
- const apiName = agentNameClassName;
68
- await (0, react_1.addOpenApiReactClient)(tree, {
69
- apiName,
70
- frontendProjectConfig,
71
- backendProjectConfig: agentProjectConfig,
72
- specBuildProject: agentProjectConfig,
73
- specPath,
74
- specBuildTargetName: `${agentProjectConfig.name}:${openApiTargetName}`,
75
- auth,
76
- port: agentPort,
77
- isAgentRuntime: true,
78
- skipServeLocal: true,
79
- });
80
- // Add serve-local integration using the agent's serve-local target
74
+ }),
75
+ });
76
+ // Use the shared OpenAPI react client utility for hooks, providers, and build targets.
77
+ // Serve-local is handled separately below using the agent-specific serve-local target.
78
+ await (0, react_1.addOpenApiReactClient)(tree, {
79
+ apiName: agentNameClassName,
80
+ frontendProjectConfig,
81
+ backendProjectConfig: agentProjectConfig,
82
+ specBuildProject: agentProjectConfig,
83
+ specPath,
84
+ specBuildTargetName: `${agentProjectConfig.name}:${openApiTargetName}`,
85
+ auth,
86
+ port: agentPort,
87
+ isAgentRuntime: true,
88
+ skipServeLocal: true,
89
+ });
90
+ additionalServeLocalDeps = (0, serve_local_1.openApiClientServeLocalDeps)(agentNameClassName);
91
+ // HTTP only — the AG-UI branch handles this inside addAgUiReactConnection.
92
+ // Agent constructs publish their runtime ARN to the 'agentcore' namespace
93
+ // by default, which isn't exposed to the website; patch them to also
94
+ // publish under 'connection' so the browser can read it.
95
+ await (0, agent_runtime_config_1.addAgentRuntimeToConnectionNamespace)(tree, {
96
+ agentNameKebabCase: (0, names_1.kebabCase)(agentNameClassName),
97
+ agentNameClassName,
98
+ });
99
+ }
81
100
  await (0, serve_local_1.addPyStrandsAgentTargetToServeLocal)(tree, frontendProjectConfig.name, agentProjectConfig.name, {
82
101
  agentName,
83
102
  agentNameClassName,
84
103
  port: agentPort,
85
104
  targetComponent,
86
- });
87
- // Expose the agent's runtime ARN to the frontend via the 'connection'
88
- // namespace (which is published to runtime-config.json). The agent construct
89
- // itself only registers to the 'agentcore' namespace by default.
90
- await (0, agent_runtime_config_1.addAgentRuntimeToConnectionNamespace)(tree, {
91
- agentNameKebabCase: (0, names_1.kebabCase)(agentNameClassName),
92
- agentNameClassName,
105
+ additionalDependencyTargets: additionalServeLocalDeps,
93
106
  });
94
107
  await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [
95
108
  exports.PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO,
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/react-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/react-connection/generator.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,15 @@ export interface PyStrandsAgentServeLocalOptions {
9
9
  agentNameClassName: string;
10
10
  port: number;
11
11
  targetComponent?: ComponentMetadata;
12
+ additionalDependencyTargets?: string[];
12
13
  }
13
14
  /**
14
15
  * Adds the given py strands agent target project to the source project's serve-local target.
15
16
  * Updates the runtime config provider (if it exists) to point to the local HTTP URL.
16
- * Also adds dependencies on the OpenAPI client generation targets so that local
17
- * API changes are reflected in the generated client.
18
17
  */
19
18
  export declare const addPyStrandsAgentTargetToServeLocal: (tree: Tree, sourceProjectName: string, targetProjectName: string, options: PyStrandsAgentServeLocalOptions) => Promise<void>;
19
+ /**
20
+ * Build the OpenAPI client generation target names for an HTTP agent so
21
+ * that local API changes regenerate the client.
22
+ */
23
+ export declare const openApiClientServeLocalDeps: (agentNameClassName: string) => string[];
@@ -1,25 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addPyStrandsAgentTargetToServeLocal = void 0;
3
+ exports.openApiClientServeLocalDeps = exports.addPyStrandsAgentTargetToServeLocal = void 0;
4
4
  const agent_serve_local_1 = require("../../../connection/agent-serve-local");
5
5
  const names_1 = require("../../../utils/names");
6
6
  /**
7
7
  * Adds the given py strands agent target project to the source project's serve-local target.
8
8
  * Updates the runtime config provider (if it exists) to point to the local HTTP URL.
9
- * Also adds dependencies on the OpenAPI client generation targets so that local
10
- * API changes are reflected in the generated client.
11
9
  */
12
10
  const addPyStrandsAgentTargetToServeLocal = async (tree, sourceProjectName, targetProjectName, options) => {
13
- const clientGenTarget = `generate:${(0, names_1.kebabCase)(options.agentNameClassName)}-client`;
14
- const clientGenWatchTarget = `watch-${clientGenTarget}`;
15
11
  await (0, agent_serve_local_1.addAgentTargetToServeLocal)(tree, sourceProjectName, targetProjectName, {
16
12
  agentNameClassName: options.agentNameClassName,
17
13
  port: options.port,
18
14
  targetComponent: options.targetComponent,
19
15
  runtimeConfigNamespace: 'agentRuntimes',
20
16
  localUrl: `http://localhost:${options.port}/`,
21
- additionalDependencyTargets: [clientGenTarget, clientGenWatchTarget],
17
+ additionalDependencyTargets: options.additionalDependencyTargets,
22
18
  });
23
19
  };
24
20
  exports.addPyStrandsAgentTargetToServeLocal = addPyStrandsAgentTargetToServeLocal;
21
+ /**
22
+ * Build the OpenAPI client generation target names for an HTTP agent so
23
+ * that local API changes regenerate the client.
24
+ */
25
+ const openApiClientServeLocalDeps = (agentNameClassName) => {
26
+ const clientGenTarget = `generate:${(0, names_1.kebabCase)(agentNameClassName)}-client`;
27
+ return [clientGenTarget, `watch-${clientGenTarget}`];
28
+ };
29
+ exports.openApiClientServeLocalDeps = openApiClientServeLocalDeps;
25
30
  //# sourceMappingURL=serve-local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve-local.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/react-connection/serve-local.ts"],"names":[],"mappings":";;;AAKA,6EAAmF;AAEnF,gDAAiD;AASjD;;;;;GAKG;AACI,MAAM,mCAAmC,GAAG,KAAK,EACtD,IAAU,EACV,iBAAyB,EACzB,iBAAyB,EACzB,OAAwC,EACxC,EAAE;IACF,MAAM,eAAe,GAAG,YAAY,IAAA,iBAAS,EAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC;IACnF,MAAM,oBAAoB,GAAG,SAAS,eAAe,EAAE,CAAC;IAExD,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,GAAG;QAC7C,2BAA2B,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;KACrE,CAAC,CAAC;AACL,CAAC,CAAC;AAjBW,QAAA,mCAAmC,uCAiB9C"}
1
+ {"version":3,"file":"serve-local.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/strands-agent/react-connection/serve-local.ts"],"names":[],"mappings":";;;AAKA,6EAAmF;AAEnF,gDAAiD;AAUjD;;;GAGG;AACI,MAAM,mCAAmC,GAAG,KAAK,EACtD,IAAU,EACV,iBAAyB,EACzB,iBAAyB,EACzB,OAAwC,EACxC,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,GAAG;QAC7C,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;KACjE,CAAC,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,mCAAmC,uCAc9C;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"}
@@ -6,7 +6,7 @@
6
6
  import { IacProviderOption } from '../../utils/iac';
7
7
 
8
8
  export type PyStrandsAgentComputeType = 'BedrockAgentCoreRuntime' | 'None';
9
- export type StrandsAgentProtocol = 'HTTP' | 'A2A';
9
+ export type StrandsAgentProtocol = 'HTTP' | 'A2A' | 'AG-UI';
10
10
 
11
11
  export type PyStrandsAgentAuth = 'IAM' | 'Cognito';
12
12
 
@@ -38,9 +38,9 @@
38
38
  },
39
39
  "protocol": {
40
40
  "type": "string",
41
- "description": "The server protocol for your Strands Agent. HTTP exposes a FastAPI HTTP server. A2A exposes an Agent-to-Agent protocol server.",
41
+ "description": "The server protocol for your Strands Agent. HTTP exposes a FastAPI HTTP server. A2A exposes an Agent-to-Agent protocol server. AG-UI exposes an Agent-User Interaction protocol server for direct frontend integration.",
42
42
  "x-prompt": "Which protocol would you like to use for your Strands Agent?",
43
- "enum": ["HTTP", "A2A"],
43
+ "enum": ["HTTP", "A2A", "AG-UI"],
44
44
  "default": "HTTP",
45
45
  "x-priority": "important"
46
46
  },
@@ -193,9 +193,9 @@ export interface IMetricsContext {
193
193
 
194
194
  export const createMetricsPlugin = () => {
195
195
  const t = initTRPC.context<IMetricsContext>().create();
196
+ const metrics = new Metrics();
196
197
 
197
198
  return t.procedure.use(async (opts) => {
198
- const metrics = new Metrics();
199
199
  metrics.addDimensions({
200
200
  procedure: opts.path,
201
201
  type: opts.type,
@@ -7,9 +7,9 @@ export interface IMetricsContext {
7
7
 
8
8
  export const createMetricsPlugin = () => {
9
9
  const t = initTRPC.context<IMetricsContext>().create();
10
+ const metrics = new Metrics();
10
11
 
11
12
  return t.procedure.use(async (opts) => {
12
- const metrics = new Metrics();
13
13
  metrics.addDimensions({
14
14
  procedure: opts.path,
15
15
  type: opts.type,
@@ -9,6 +9,7 @@ exports[`ts#mcp-server generator > should match snapshot for BedrockAgentCoreRun
9
9
  "export * from './app.js';
10
10
  export * from './checkov.js';
11
11
  export * from './runtime-config.js';
12
+ export * from './workspace.js';
12
13
  "
13
14
  `;
14
15
 
@@ -16,7 +17,6 @@ exports[`ts#mcp-server generator > should match snapshot for BedrockAgentCoreRun
16
17
  "import { Lazy, Names } from 'aws-cdk-lib';
17
18
  import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
18
19
  import { Construct } from 'constructs';
19
- import { execSync } from 'child_process';
20
20
  import * as path from 'path';
21
21
  import * as url from 'url';
22
22
  import {
@@ -27,6 +27,7 @@ import {
27
27
  } from '@aws-cdk/aws-bedrock-agentcore-alpha';
28
28
  import { IGrantable, IPrincipal, Grant } from 'aws-cdk-lib/aws-iam';
29
29
  import { RuntimeConfig } from '../../../core/runtime-config.js';
30
+ import { findWorkspaceRoot } from '../../../core/workspace.js';
30
31
 
31
32
  export type SnapshotBedrockServerProps = Omit<
32
33
  RuntimeProps,
@@ -49,17 +50,16 @@ export class SnapshotBedrockServer extends Construct implements IGrantable {
49
50
 
50
51
  const rc = RuntimeConfig.ensure(this);
51
52
 
52
- this.dockerImage = AgentRuntimeArtifact.fromAsset(
53
- path.dirname(url.fileURLToPath(new URL(import.meta.url))),
54
- {
55
- platform: Platform.LINUX_ARM64,
56
- extraHash: execSync(
57
- \`docker inspect proj-snapshot-bedrock-server:latest --format '{{.Id}}'\`,
58
- { encoding: 'utf-8' },
59
- ).trim(),
60
- },
53
+ // Resolve the bundle output directory containing the Dockerfile and built artifacts
54
+ const bundleDir = path.join(
55
+ findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
56
+ 'dist/apps/test-project/bundle/mcp/snapshot-bedrock-server',
61
57
  );
62
58
 
59
+ this.dockerImage = AgentRuntimeArtifact.fromAsset(bundleDir, {
60
+ platform: Platform.LINUX_ARM64,
61
+ });
62
+
63
63
  this.agentCoreRuntime = new Runtime(this, 'SnapshotBedrockServer', {
64
64
  runtimeName: Lazy.string({
65
65
  produce: () =>
@@ -7,7 +7,7 @@ WORKDIR /app
7
7
  RUN npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation@<%- adotVersion %>
8
8
 
9
9
  # Copy bundled streamable http server
10
- COPY --from=workspace <%- distDir %>/bundle/mcp/<%- name %>/index.js /app
10
+ COPY index.js /app
11
11
 
12
12
  EXPOSE 8000
13
13
 
@@ -17,6 +17,7 @@ const npm_scope_1 = require("../../utils/npm-scope");
17
17
  const iac_1 = require("../../utils/iac");
18
18
  const bundle_1 = require("../../utils/bundle/bundle");
19
19
  const port_1 = require("../../utils/port");
20
+ const fs_1 = require("../../utils/fs");
20
21
  exports.TS_MCP_SERVER_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
21
22
  const tsMcpServerGenerator = async (tree, options) => {
22
23
  const project = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.project);
@@ -82,12 +83,18 @@ const tsMcpServerGenerator = async (tree, options) => {
82
83
  targetFilePath: `${targetSourceDirRelativeToProjectRoot}/http.ts`,
83
84
  bundleOutputDir: (0, devkit_1.joinPathFragments)('mcp', name),
84
85
  });
86
+ const dockerOutputDir = (0, devkit_1.joinPathFragments)('dist', project.root, 'bundle', 'mcp', name);
85
87
  const dockerTargetName = `${mcpTargetPrefix}-docker`;
88
+ const fs = new fs_1.FsCommands(tree);
86
89
  project.targets[dockerTargetName] = {
87
90
  cache: true,
88
91
  executor: 'nx:run-commands',
89
92
  options: {
90
- command: `docker build --platform linux/arm64 -t ${dockerImageTag} ${targetSourceDir} --build-context workspace=.`,
93
+ commands: [
94
+ fs.cp(`${targetSourceDir}/Dockerfile`, `${dockerOutputDir}/Dockerfile`),
95
+ `docker build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}`,
96
+ ],
97
+ parallel: false,
91
98
  },
92
99
  dependsOn: ['bundle'],
93
100
  };
@@ -102,6 +109,7 @@ const tsMcpServerGenerator = async (tree, options) => {
102
109
  mcpServerNameClassName,
103
110
  projectName: project.name,
104
111
  dockerImageTag,
112
+ dockerOutputDir,
105
113
  iacProvider,
106
114
  auth,
107
115
  });
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/mcp-server/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/mcp-server/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAYoB;AAEpB,uCAMwB;AACxB,iDAAsE;AACtE,+CAA0D;AAC1D,mDAAiE;AACjE,6CAA2D;AAC3D,qEAA0E;AAC1E,mGAA4F;AAE5F,qDAAoD;AACpD,yCAAqD;AACrD,sDAAsE;AACtE,2CAA8C;AAC9C,uCAA4C;AAE/B,QAAA,4BAA4B,GACvC,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,MAAM,oBAAoB,GAAG,KAAK,EACvC,IAAU,EACV,OAAmC,EACP,EAAE;IAC9B,MAAM,OAAO,GAAG,IAAA,wCAAmC,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,CAAC,OAAO,wDAAwD,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;IACpD,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3D,MAAM,oCAAoC,GAAG,IAAA,0BAAiB,EAC5D,KAAK,EACL,eAAe,CAChB,CAAC;IACF,MAAM,eAAe,GAAG,IAAA,0BAAiB,EACvC,OAAO,CAAC,IAAI,EACZ,oCAAoC,CACrC,CAAC;IACF,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,IAAA,0BAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,yBAAyB,CAAC;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEnC,8FAA8F;IAC9F,MAAM,sBAAsB,GAAG,IAAA,0BAAiB,EAC9C,OAAO,CAAC,IAAI,EACZ,cAAc,CACf,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACzC,0CAA0C;QAC1C,IAAA,kBAAS,EAAC,IAAI,EAAE,sBAAsB,EAAE;YACtC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,qFAAqF;IACrF,+DAA+D;IAC/D,0CAA0C;IAC1C,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;IAErE,+DAA+D;IAC/D,uFAAuF;IACvF,+BAA+B;IAC/B,IAAA,mBAAU,EAAC,IAAI,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,EAAE;QAC/C,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,iBAAiB,WAAW,CAAC;QAChD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EAAC,SAAS,EAAE,OAAO,CAAC,EACrC,eAAe,EACf;QACE,IAAI;QACJ,GAAG;QACH,OAAO;QACP,WAAW,EACT,sBAAW,CAAC,wDAAwD,CAAC;KACxE,EACD,EAAE,iBAAiB,EAAE,0BAAiB,CAAC,YAAY,EAAE,CACtD,CAAC;IAEF,mBAAmB;IACnB,MAAM,IAAI,GAAG,IAAA,uBAAY,EAAC;QACxB,2BAA2B;QAC3B,KAAK;QACL,SAAS;QACT,mCAAmC;QACnC,+BAA+B;KAChC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAA,uBAAY,EAAC;QAC3B,KAAK;QACL,gBAAgB;QAChB,iCAAiC;KAClC,CAAC,CAAC;IAEH,oCAAoC;IACpC,IAAI,WAAW,KAAK,yBAAyB,EAAE,CAAC;QAC9C,MAAM,cAAc,GAAG,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;QAE7D,oBAAoB;QACpB,MAAM,IAAA,kCAAyB,EAAC,IAAI,EAAE,OAAO,EAAE;YAC7C,cAAc,EAAE,GAAG,oCAAoC,UAAU;YACjE,eAAe,EAAE,IAAA,0BAAiB,EAAC,KAAK,EAAE,IAAI,CAAC;SAChD,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAA,0BAAiB,EACvC,MAAM,EACN,OAAO,CAAC,IAAI,EACZ,QAAQ,EACR,KAAK,EACL,IAAI,CACL,CAAC;QACF,MAAM,gBAAgB,GAAG,GAAG,eAAe,SAAS,CAAC;QAErD,MAAM,EAAE,GAAG,IAAI,eAAU,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG;YAClC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE;gBACP,QAAQ,EAAE;oBACR,EAAE,CAAC,EAAE,CACH,GAAG,eAAe,aAAa,EAC/B,GAAG,eAAe,aAAa,CAChC;oBACD,0CAA0C,cAAc,IAAI,eAAe,EAAE;iBAC9E;gBACD,QAAQ,EAAE,KAAK;aAChB;YACD,SAAS,EAAE,CAAC,QAAQ,CAAC;SACtB,CAAC;QAEF,IAAA,sCAAiC,EAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACvE,IAAA,sCAAiC,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE9D,wBAAwB;QACxB,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,IAAA,6CAAyB,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAEvD,6CAA6C;QAC7C,MAAM,IAAA,yCAAiB,EAAC,IAAI,EAAE;YAC5B,sBAAsB,EAAE,IAAI;YAC5B,sBAAsB;YACtB,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,cAAc;YACd,eAAe;YACf,WAAW;YACX,IAAI;SACL,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAA,0BAAiB,EAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,IAAA,qCAA4B,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,IAAA,qCAA4B,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAE1E,MAAM,YAAY,GAAG,IAAA,iBAAU,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAErD,IAAA,mCAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QAC7C,GAAG,OAAO;QACV,OAAO,EAAE;YACP,GAAG,OAAO,CAAC,OAAO;YAClB,yCAAyC;YACzC,CAAC,GAAG,eAAe,cAAc,CAAC,EAAE;gBAClC,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE;oBACP,QAAQ,EAAE,CAAC,eAAe,iBAAiB,WAAW,CAAC;oBACvD,GAAG,EAAE,eAAe;iBACrB;gBACD,UAAU,EAAE,IAAI;aACjB;YACD,CAAC,GAAG,eAAe,QAAQ,CAAC,EAAE;gBAC5B,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE;oBACP,QAAQ,EAAE,CAAC,eAAe,iBAAiB,UAAU,CAAC;oBACtD,GAAG,EAAE,eAAe;oBACpB,GAAG,EAAE;wBACH,IAAI,EAAE,GAAG,YAAY,EAAE;qBACxB;iBACF;gBACD,UAAU,EAAE,IAAI;aACjB;YACD,CAAC,GAAG,eAAe,cAAc,CAAC,EAAE;gBAClC,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE;oBACP,QAAQ,EAAE,CAAC,eAAe,iBAAiB,UAAU,CAAC;oBACtD,GAAG,EAAE,eAAe;oBACpB,GAAG,EAAE;wBACH,IAAI,EAAE,GAAG,YAAY,EAAE;wBACvB,WAAW,EAAE,MAAM;qBACpB;iBACF;gBACD,UAAU,EAAE,IAAI;aACjB;YACD,CAAC,GAAG,eAAe,UAAU,CAAC,EAAE;gBAC9B,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE;oBACP,QAAQ,EAAE;wBACR,gCAAgC,iBAAiB,WAAW;qBAC7D;oBACD,GAAG,EAAE,eAAe;iBACrB;gBACD,UAAU,EAAE,IAAI;aACjB;SACF;KACF,CAAC,CAAC;IAEH,IAAA,kCAA6B,EAC3B,IAAI,EACJ,OAAO,CAAC,IAAI,EACZ,oCAA4B,EAC5B,oCAAoC,EACpC,eAAe,EACf;QACE,IAAI,EAAE,YAAY;QAClB,EAAE,EAAE,sBAAsB;QAC1B,IAAI;KACL,CACF,CAAC;IAEF,MAAM,IAAA,yCAA+B,EAAC,IAAI,EAAE,CAAC,oCAA4B,CAAC,CAAC,CAAC;IAE5E,MAAM,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC;IACjC,OAAO,GAAG,EAAE;QACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC,CAAC;AAzNW,QAAA,oBAAoB,wBAyN/B;AAEF,kBAAe,4BAAoB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { CopilotKitProvider } from '@copilotkit/react-core/v2';
2
+ import '@copilotkit/react-core/v2/styles.css';
3
+ import { type FC, type PropsWithChildren, useMemo } from 'react';
4
+ import type { AbstractAgent } from '@ag-ui/client';
5
+
6
+ export const AguiProvider: FC<PropsWithChildren> = ({ children }) => {
7
+ const selfManagedAgents = useMemo<Record<string, AbstractAgent>>(
8
+ () => ({}),
9
+ [],
10
+ );
11
+
12
+ return (
13
+ <CopilotKitProvider selfManagedAgents={selfManagedAgents}>
14
+ {children}
15
+ </CopilotKitProvider>
16
+ );
17
+ };
18
+
19
+ export default AguiProvider;