@aws/nx-plugin 0.93.1 → 0.94.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 (45) hide show
  1. package/LICENSE-THIRD-PARTY +1114 -478
  2. package/generators.json +9 -0
  3. package/package.json +12 -12
  4. package/src/connection/agent-serve-local.d.ts +33 -0
  5. package/src/connection/agent-serve-local.js +49 -0
  6. package/src/connection/agent-serve-local.js.map +1 -0
  7. package/src/connection/generator.js +3 -0
  8. package/src/connection/generator.js.map +1 -1
  9. package/src/connection/serve-local.js +1 -1
  10. package/src/connection/serve-local.js.map +1 -1
  11. package/src/infra/app/__snapshots__/generator.spec.ts.snap +23 -23
  12. package/src/preset/__snapshots__/generator.spec.ts.snap +2 -2
  13. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
  14. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +21 -16
  15. package/src/py/strands-agent/files/app/main.py.template +12 -7
  16. package/src/py/strands-agent/react-connection/__snapshots__/generator.spec.ts.snap +236 -0
  17. package/src/py/strands-agent/react-connection/files/agent/scripts/__agentNameSnakeCase___openapi.py.template +6 -0
  18. package/src/py/strands-agent/react-connection/generator.d.ts +10 -0
  19. package/src/py/strands-agent/react-connection/generator.js +102 -0
  20. package/src/py/strands-agent/react-connection/generator.js.map +1 -0
  21. package/src/py/strands-agent/react-connection/schema.d.ts +15 -0
  22. package/src/py/strands-agent/react-connection/schema.json +26 -0
  23. package/src/py/strands-agent/react-connection/serve-local.d.ts +19 -0
  24. package/src/py/strands-agent/react-connection/serve-local.js +25 -0
  25. package/src/py/strands-agent/react-connection/serve-local.js.map +1 -0
  26. package/src/trpc/react/generator.js +2 -6
  27. package/src/trpc/react/generator.js.map +1 -1
  28. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  29. package/src/ts/nx-generator/generator.js +1 -1
  30. package/src/ts/nx-generator/generator.js.map +1 -1
  31. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +1 -1
  32. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +46 -46
  33. package/src/ts/strands-agent/react-connection/generator.js +2 -6
  34. package/src/ts/strands-agent/react-connection/generator.js.map +1 -1
  35. package/src/ts/strands-agent/react-connection/serve-local.js +8 -34
  36. package/src/ts/strands-agent/react-connection/serve-local.js.map +1 -1
  37. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +17 -0
  38. package/src/utils/connection/open-api/react.d.ts +13 -1
  39. package/src/utils/connection/open-api/react.js +18 -18
  40. package/src/utils/connection/open-api/react.js.map +1 -1
  41. package/src/utils/shared-shadcn.js +2 -6
  42. package/src/utils/shared-shadcn.js.map +1 -1
  43. package/src/utils/versions.d.ts +42 -42
  44. package/src/utils/versions.js +41 -41
  45. package/src/utils/versions.js.map +1 -1
@@ -0,0 +1,236 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`py strands agent react connection generator > should generate OpenAPI spec script scoped to the agent > agent_openapi.py 1`] = `
4
+ "from agent_project.agent.main import app
5
+ import json
6
+ import os
7
+ import sys
8
+
9
+ os.makedirs(os.path.dirname(sys.argv[1]), exist_ok=True)
10
+ with open(sys.argv[1], "w") as f:
11
+ json.dump(app.openapi(), f)
12
+ "
13
+ `;
14
+
15
+ exports[`py strands agent react connection generator > should generate provider component > TestAgentProvider.tsx 1`] = `
16
+ "import { createContext, FC, PropsWithChildren, useMemo } from 'react';
17
+ import { TestAgent } from '../generated/test-agent/client.gen';
18
+ import { TestAgentOptionsProxy } from '../generated/test-agent/options-proxy.gen';
19
+ import { useRuntimeConfig } from '../hooks/useRuntimeConfig';
20
+ import { useSigV4 } from '../hooks/useSigV4';
21
+
22
+ /**
23
+ * Build an HTTP URL from a Bedrock AgentCore Runtime ARN
24
+ */
25
+ function buildAgentCoreHttpUrl(agentRuntimeArn: string): string {
26
+ const region = agentRuntimeArn.split(':')[3];
27
+ return \`https://bedrock-agentcore.\${region}.amazonaws.com/runtimes/\${encodeURIComponent(agentRuntimeArn)}\`;
28
+ }
29
+
30
+ export const TestAgentContext = createContext<
31
+ TestAgentOptionsProxy | undefined
32
+ >(undefined);
33
+
34
+ export const TestAgentClientContext = createContext<TestAgent | undefined>(
35
+ undefined,
36
+ );
37
+
38
+ const useCreateTestAgentClient = (): TestAgent => {
39
+ const runtimeConfig = useRuntimeConfig();
40
+ const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
41
+ const apiUrl = agentRuntimeValue.startsWith('arn:')
42
+ ? buildAgentCoreHttpUrl(agentRuntimeValue)
43
+ : agentRuntimeValue;
44
+ const sigv4Client = useSigV4();
45
+ return useMemo(
46
+ () =>
47
+ new TestAgent({
48
+ url: apiUrl,
49
+ fetch: sigv4Client.fetch,
50
+ }),
51
+ [apiUrl, sigv4Client],
52
+ );
53
+ };
54
+
55
+ export const TestAgentProvider: FC<PropsWithChildren> = ({ children }) => {
56
+ const client = useCreateTestAgentClient();
57
+ const optionsProxy = useMemo(
58
+ () => new TestAgentOptionsProxy({ client }),
59
+ [client],
60
+ );
61
+
62
+ return (
63
+ <TestAgentClientContext.Provider value={client}>
64
+ <TestAgentContext.Provider value={optionsProxy}>
65
+ {children}
66
+ </TestAgentContext.Provider>
67
+ </TestAgentClientContext.Provider>
68
+ );
69
+ };
70
+
71
+ export default TestAgentProvider;
72
+ "
73
+ `;
74
+
75
+ exports[`py strands agent react connection generator > should handle Cognito auth option > TestAgentProvider-Cognito.tsx 1`] = `
76
+ "import { createContext, FC, PropsWithChildren, useMemo } from 'react';
77
+ import { TestAgent } from '../generated/test-agent/client.gen';
78
+ import { TestAgentOptionsProxy } from '../generated/test-agent/options-proxy.gen';
79
+ import { useRuntimeConfig } from '../hooks/useRuntimeConfig';
80
+ import { useAuth } from 'react-oidc-context';
81
+
82
+ /**
83
+ * Build an HTTP URL from a Bedrock AgentCore Runtime ARN
84
+ */
85
+ function buildAgentCoreHttpUrl(agentRuntimeArn: string): string {
86
+ const region = agentRuntimeArn.split(':')[3];
87
+ return \`https://bedrock-agentcore.\${region}.amazonaws.com/runtimes/\${encodeURIComponent(agentRuntimeArn)}\`;
88
+ }
89
+
90
+ export const TestAgentContext = createContext<
91
+ TestAgentOptionsProxy | undefined
92
+ >(undefined);
93
+
94
+ export const TestAgentClientContext = createContext<TestAgent | undefined>(
95
+ undefined,
96
+ );
97
+
98
+ const useCreateTestAgentClient = (): TestAgent => {
99
+ const runtimeConfig = useRuntimeConfig();
100
+ const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
101
+ const apiUrl = agentRuntimeValue.startsWith('arn:')
102
+ ? buildAgentCoreHttpUrl(agentRuntimeValue)
103
+ : agentRuntimeValue;
104
+ const auth = useAuth();
105
+ const user = auth?.user;
106
+ const cognitoClient: typeof fetch = (url, init) => {
107
+ const headers = { Authorization: \`Bearer \${user?.id_token}\` };
108
+ const existingHeaders = init?.headers;
109
+
110
+ return fetch(url, {
111
+ ...init,
112
+ headers: !existingHeaders
113
+ ? headers
114
+ : existingHeaders instanceof Headers
115
+ ? (() => {
116
+ const h = new Headers(existingHeaders);
117
+ Object.entries(headers).forEach(([k, v]) => h.append(k, v));
118
+ return h;
119
+ })()
120
+ : Array.isArray(existingHeaders)
121
+ ? [...existingHeaders, ...Object.entries(headers)]
122
+ : { ...existingHeaders, ...headers },
123
+ });
124
+ };
125
+ return useMemo(
126
+ () =>
127
+ new TestAgent({
128
+ url: apiUrl,
129
+ fetch: cognitoClient,
130
+ }),
131
+ [apiUrl, cognitoClient],
132
+ );
133
+ };
134
+
135
+ export const TestAgentProvider: FC<PropsWithChildren> = ({ children }) => {
136
+ const client = useCreateTestAgentClient();
137
+ const optionsProxy = useMemo(
138
+ () => new TestAgentOptionsProxy({ client }),
139
+ [client],
140
+ );
141
+
142
+ return (
143
+ <TestAgentClientContext.Provider value={client}>
144
+ <TestAgentContext.Provider value={optionsProxy}>
145
+ {children}
146
+ </TestAgentContext.Provider>
147
+ </TestAgentClientContext.Provider>
148
+ );
149
+ };
150
+
151
+ export default TestAgentProvider;
152
+ "
153
+ `;
154
+
155
+ exports[`py strands agent react connection generator > should handle IAM auth option > TestAgentProvider-IAM.tsx 1`] = `
156
+ "import { createContext, FC, PropsWithChildren, useMemo } from 'react';
157
+ import { TestAgent } from '../generated/test-agent/client.gen';
158
+ import { TestAgentOptionsProxy } from '../generated/test-agent/options-proxy.gen';
159
+ import { useRuntimeConfig } from '../hooks/useRuntimeConfig';
160
+ import { useSigV4 } from '../hooks/useSigV4';
161
+
162
+ /**
163
+ * Build an HTTP URL from a Bedrock AgentCore Runtime ARN
164
+ */
165
+ function buildAgentCoreHttpUrl(agentRuntimeArn: string): string {
166
+ const region = agentRuntimeArn.split(':')[3];
167
+ return \`https://bedrock-agentcore.\${region}.amazonaws.com/runtimes/\${encodeURIComponent(agentRuntimeArn)}\`;
168
+ }
169
+
170
+ export const TestAgentContext = createContext<
171
+ TestAgentOptionsProxy | undefined
172
+ >(undefined);
173
+
174
+ export const TestAgentClientContext = createContext<TestAgent | undefined>(
175
+ undefined,
176
+ );
177
+
178
+ const useCreateTestAgentClient = (): TestAgent => {
179
+ const runtimeConfig = useRuntimeConfig();
180
+ const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
181
+ const apiUrl = agentRuntimeValue.startsWith('arn:')
182
+ ? buildAgentCoreHttpUrl(agentRuntimeValue)
183
+ : agentRuntimeValue;
184
+ const sigv4Client = useSigV4();
185
+ return useMemo(
186
+ () =>
187
+ new TestAgent({
188
+ url: apiUrl,
189
+ fetch: sigv4Client.fetch,
190
+ }),
191
+ [apiUrl, sigv4Client],
192
+ );
193
+ };
194
+
195
+ export const TestAgentProvider: FC<PropsWithChildren> = ({ children }) => {
196
+ const client = useCreateTestAgentClient();
197
+ const optionsProxy = useMemo(
198
+ () => new TestAgentOptionsProxy({ client }),
199
+ [client],
200
+ );
201
+
202
+ return (
203
+ <TestAgentClientContext.Provider value={client}>
204
+ <TestAgentContext.Provider value={optionsProxy}>
205
+ {children}
206
+ </TestAgentContext.Provider>
207
+ </TestAgentClientContext.Provider>
208
+ );
209
+ };
210
+
211
+ export default TestAgentProvider;
212
+ "
213
+ `;
214
+
215
+ exports[`py strands agent react connection generator > should instrument providers in main.tsx > main.tsx 1`] = `
216
+ "import TestAgentProvider from './components/TestAgentProvider';
217
+ import QueryClientProvider from './components/QueryClientProvider';
218
+ import RuntimeConfigProvider from './components/RuntimeConfig';
219
+
220
+ import { RouterProvider } from '@tanstack/react-router';
221
+
222
+ const App = () => <RouterProvider router={router} />;
223
+
224
+ export function Main() {
225
+ return (
226
+ <RuntimeConfigProvider>
227
+ <QueryClientProvider>
228
+ <TestAgentProvider>
229
+ <App />
230
+ </TestAgentProvider>
231
+ </QueryClientProvider>
232
+ </RuntimeConfigProvider>
233
+ );
234
+ }
235
+ "
236
+ `;
@@ -0,0 +1,6 @@
1
+ from <%= moduleName %>.<%= agentNameSnakeCase %>.main import app
2
+ import json, os, sys
3
+
4
+ os.makedirs(os.path.dirname(sys.argv[1]), exist_ok=True)
5
+ with open(sys.argv[1], 'w') as f:
6
+ json.dump(app.openapi(), f)
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { Tree } from '@nx/devkit';
6
+ import { NxGeneratorInfo } from '../../../utils/nx';
7
+ import { ResolvedConnectionOptions } from '../../../connection/generator';
8
+ export declare const PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
9
+ export declare const pyStrandsAgentReactConnectionGenerator: (tree: Tree, options: ResolvedConnectionOptions) => Promise<() => void>;
10
+ export default pyStrandsAgentReactConnectionGenerator;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pyStrandsAgentReactConnectionGenerator = exports.PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO = void 0;
4
+ /**
5
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
+ * SPDX-License-Identifier: Apache-2.0
7
+ */
8
+ const devkit_1 = require("@nx/devkit");
9
+ const format_1 = require("../../../utils/format");
10
+ const nx_1 = require("../../../utils/nx");
11
+ const metrics_1 = require("../../../utils/metrics");
12
+ const react_1 = require("../../../utils/connection/open-api/react");
13
+ const names_1 = require("../../../utils/names");
14
+ const object_1 = require("../../../utils/object");
15
+ const serve_local_1 = require("./serve-local");
16
+ exports.PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
17
+ const pyStrandsAgentReactConnectionGenerator = async (tree, options) => {
18
+ const frontendProjectConfig = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.sourceProject);
19
+ const agentProjectConfig = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.targetProject);
20
+ const targetComponent = options.targetComponent;
21
+ // Extract agent metadata from the target component or project metadata
22
+ const metadata = agentProjectConfig.metadata;
23
+ const agentName = targetComponent?.name ?? 'agent';
24
+ const agentNameClassName = targetComponent?.rc ?? (0, names_1.toClassName)(agentName);
25
+ const agentPort = targetComponent?.port ?? metadata?.ports?.[0] ?? 8081;
26
+ const auth = targetComponent?.auth ?? metadata?.auth ?? 'IAM';
27
+ // Determine the module name from the project source root
28
+ const moduleName = getModuleName(agentProjectConfig);
29
+ const agentNameSnakeCase = (0, names_1.toSnakeCase)(agentName);
30
+ const agentTargetPrefix = targetComponent?.name ? agentName : 'agent';
31
+ // Add OpenAPI spec generation script scoped to this agent
32
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files/agent'), agentProjectConfig.root, {
33
+ moduleName,
34
+ agentNameSnakeCase,
35
+ }, {
36
+ overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
37
+ });
38
+ // Instrument the OpenAPI spec generation as a target on the agent project
39
+ const openApiTargetName = `${agentTargetPrefix}-openapi`;
40
+ const openApiDist = (0, devkit_1.joinPathFragments)('dist', agentProjectConfig.root, 'openapi', agentNameSnakeCase);
41
+ const specPath = (0, devkit_1.joinPathFragments)(openApiDist, 'openapi.json');
42
+ (0, devkit_1.updateProjectConfiguration)(tree, agentProjectConfig.name, {
43
+ ...agentProjectConfig,
44
+ targets: (0, object_1.sortObjectKeys)({
45
+ ...agentProjectConfig.targets,
46
+ [openApiTargetName]: {
47
+ cache: true,
48
+ executor: 'nx:run-commands',
49
+ outputs: [
50
+ `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`,
51
+ ],
52
+ options: {
53
+ commands: [
54
+ `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py "dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json"`,
55
+ ],
56
+ },
57
+ },
58
+ }),
59
+ });
60
+ // Use the shared OpenAPI react client utility for hooks, providers, and build targets.
61
+ // Serve-local is handled separately below using the agent-specific serve-local target.
62
+ const apiName = agentNameClassName;
63
+ await (0, react_1.addOpenApiReactClient)(tree, {
64
+ apiName,
65
+ frontendProjectConfig,
66
+ backendProjectConfig: agentProjectConfig,
67
+ specBuildProject: agentProjectConfig,
68
+ specPath,
69
+ specBuildTargetName: `${agentProjectConfig.name}:${openApiTargetName}`,
70
+ auth,
71
+ port: agentPort,
72
+ isAgentRuntime: true,
73
+ skipServeLocal: true,
74
+ });
75
+ // Add serve-local integration using the agent's serve-local target
76
+ await (0, serve_local_1.addPyStrandsAgentTargetToServeLocal)(tree, frontendProjectConfig.name, agentProjectConfig.name, {
77
+ agentName,
78
+ agentNameClassName,
79
+ port: agentPort,
80
+ targetComponent,
81
+ });
82
+ await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [
83
+ exports.PY_STRANDS_AGENT_REACT_CONNECTION_GENERATOR_INFO,
84
+ ]);
85
+ await (0, format_1.formatFilesInSubtree)(tree);
86
+ return () => {
87
+ (0, devkit_1.installPackagesTask)(tree);
88
+ };
89
+ };
90
+ exports.pyStrandsAgentReactConnectionGenerator = pyStrandsAgentReactConnectionGenerator;
91
+ /**
92
+ * Determine the Python module name from the project configuration
93
+ */
94
+ const getModuleName = (projectConfig) => {
95
+ if (projectConfig.sourceRoot) {
96
+ const sourceRootParts = projectConfig.sourceRoot.split('/');
97
+ return sourceRootParts[sourceRootParts.length - 1];
98
+ }
99
+ throw new Error(`Could not determine sourceRoot for project ${projectConfig.name}`);
100
+ };
101
+ exports.default = exports.pyStrandsAgentReactConnectionGenerator;
102
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { ComponentMetadata } from '../../../utils/nx';
6
+
7
+ /**
8
+ * TypeScript types for options defined in schema.json
9
+ */
10
+ export interface PyStrandsAgentReactConnectionGeneratorSchema {
11
+ sourceProject: string;
12
+ targetProject: string;
13
+ sourceComponent?: ComponentMetadata;
14
+ targetComponent?: ComponentMetadata;
15
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "py#strands-agent#react-connection",
4
+ "title": "py#strands-agent#react-connection",
5
+ "description": "Connect a React website to a Python Strands Agent",
6
+ "type": "object",
7
+ "properties": {
8
+ "sourceProject": {
9
+ "type": "string",
10
+ "description": "The React website project"
11
+ },
12
+ "targetProject": {
13
+ "type": "string",
14
+ "description": "The project containing the Python Strands Agent"
15
+ },
16
+ "sourceComponent": {
17
+ "type": "string",
18
+ "description": "The website component name"
19
+ },
20
+ "targetComponent": {
21
+ "type": "string",
22
+ "description": "The agent component name"
23
+ }
24
+ },
25
+ "required": ["sourceProject", "targetProject"]
26
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { Tree } from '@nx/devkit';
6
+ import { ComponentMetadata } from '../../../utils/nx';
7
+ export interface PyStrandsAgentServeLocalOptions {
8
+ agentName: string;
9
+ agentNameClassName: string;
10
+ port: number;
11
+ targetComponent?: ComponentMetadata;
12
+ }
13
+ /**
14
+ * Adds the given py strands agent target project to the source project's serve-local target.
15
+ * 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
+ */
19
+ export declare const addPyStrandsAgentTargetToServeLocal: (tree: Tree, sourceProjectName: string, targetProjectName: string, options: PyStrandsAgentServeLocalOptions) => Promise<void>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addPyStrandsAgentTargetToServeLocal = void 0;
4
+ const agent_serve_local_1 = require("../../../connection/agent-serve-local");
5
+ const names_1 = require("../../../utils/names");
6
+ /**
7
+ * Adds the given py strands agent target project to the source project's serve-local target.
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
+ */
12
+ const addPyStrandsAgentTargetToServeLocal = async (tree, sourceProjectName, targetProjectName, options) => {
13
+ const clientGenTarget = `generate:${(0, names_1.kebabCase)(options.agentNameClassName)}-client`;
14
+ const clientGenWatchTarget = `watch-${clientGenTarget}`;
15
+ await (0, agent_serve_local_1.addAgentTargetToServeLocal)(tree, sourceProjectName, targetProjectName, {
16
+ agentNameClassName: options.agentNameClassName,
17
+ port: options.port,
18
+ targetComponent: options.targetComponent,
19
+ runtimeConfigNamespace: 'agentRuntimes',
20
+ localUrl: `http://localhost:${options.port}/`,
21
+ additionalDependencyTargets: [clientGenTarget, clientGenWatchTarget],
22
+ });
23
+ };
24
+ exports.addPyStrandsAgentTargetToServeLocal = addPyStrandsAgentTargetToServeLocal;
25
+ //# sourceMappingURL=serve-local.js.map
@@ -0,0 +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"}
@@ -56,13 +56,9 @@ async function reactGenerator(tree, options) {
56
56
  const clientProviderName = `${apiNameClassName}ClientProvider`;
57
57
  await (0, ast_1.addSingleImport)(tree, mainTsxPath, clientProviderName, `./components/${clientProviderName}`);
58
58
  // Wrap <App /> in QueryClientProvider if not already present
59
- if (!(await (0, ast_1.matchGritQL)(tree, mainTsxPath, '`<QueryClientProvider>$_</QueryClientProvider>`'))) {
60
- await (0, ast_1.applyGritQL)(tree, mainTsxPath, '`<App />` => `<QueryClientProvider><App /></QueryClientProvider>`');
61
- }
59
+ await (0, ast_1.applyGritQL)(tree, mainTsxPath, '`<App />` => `<QueryClientProvider><App /></QueryClientProvider>` where { $program <: not contains `<QueryClientProvider>$_</QueryClientProvider>` }');
62
60
  // Wrap <App /> in the tRPC client provider if not already present
63
- if (!(await (0, ast_1.matchGritQL)(tree, mainTsxPath, `\`<${clientProviderName}>$_</${clientProviderName}>\``))) {
64
- await (0, ast_1.applyGritQL)(tree, mainTsxPath, `\`<App />\` => \`<${clientProviderName}><App /></${clientProviderName}>\``);
65
- }
61
+ await (0, ast_1.applyGritQL)(tree, mainTsxPath, `\`<App />\` => \`<${clientProviderName}><App /></${clientProviderName}>\` where { $program <: not contains \`<${clientProviderName}>$_</${clientProviderName}>\` }`);
66
62
  await (0, serve_local_1.addTargetToServeLocal)(tree, frontendProjectConfig.name, backendProjectConfig.name, {
67
63
  url: `http://localhost:${port}/`,
68
64
  apiName,
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/react/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/react/generator.ts"],"names":[],"mappings":"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"}
@@ -713,8 +713,8 @@ exports[`ts#mcp-server generator > should match snapshot for generated files > u
713
713
  },
714
714
  "dependencies": {
715
715
  "@aws-lambda-powertools/parameters": "2.32.0",
716
- "@aws-sdk/client-appconfigdata": "3.1017.0",
717
- "@modelcontextprotocol/sdk": "1.28.0",
716
+ "@aws-sdk/client-appconfigdata": "3.1024.0",
717
+ "@modelcontextprotocol/sdk": "1.29.0",
718
718
  "express": "5.2.1",
719
719
  "zod": "4.3.6"
720
720
  },
@@ -63,7 +63,7 @@ const tsNxGeneratorGenerator = async (tree, options) => {
63
63
  ...enhancedOptions,
64
64
  });
65
65
  // Update the docs config to add the page entry to the Generator guides sidebar section
66
- await (0, ast_1.applyGritQL)(tree, (0, devkit_1.joinPathFragments)('docs', 'astro.config.mjs'), `\`items: [$items]\` where { $items <: within \`sidebar: [$_]\`, $items <: contains \`'ts#project'\`, $items += \`, { label: '${name}', link: '/guides/${enhancedOptions.nameKebabCase}' }\` }`);
66
+ await (0, ast_1.applyGritQL)(tree, (0, devkit_1.joinPathFragments)('docs', 'astro.config.mjs'), `\`items: [$items]\` where { $items <: within \`sidebar: [$_]\`, $items <: contains \`'ts#project'\`, $items <: not contains \`'/guides/${enhancedOptions.nameKebabCase}'\`, $items += \`, { label: '${name}', link: '/guides/${enhancedOptions.nameKebabCase}' }\` }`);
67
67
  }
68
68
  else {
69
69
  // Local generator in a project other than nx-plugin-for-aws
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/nx-generator/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/nx-generator/generator.ts"],"names":[],"mappings":"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"}
@@ -248,7 +248,7 @@ export const registerCreateWorkspaceCommandTool = (server: McpServer) => {
248
248
  text: \`Run the following command to create a workspace:
249
249
 
250
250
  \\\`\\\`\\\`bash
251
- npx create-nx-workspace@22.6.1 \${workspaceName} --pm=\${packageManager} --preset=@aws/nx-plugin --ci=skip --aiAgents
251
+ npx create-nx-workspace@22.6.4 \${workspaceName} --pm=\${packageManager} --preset=@aws/nx-plugin --ci=skip --aiAgents
252
252
  \\\`\\\`\\\`
253
253
 
254
254
  This will create a new workspace within the \${workspaceName} directory.