@aws/nx-plugin 0.93.1 → 0.94.1
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/LICENSE-THIRD-PARTY +1114 -478
- package/generators.json +9 -0
- package/package.json +12 -12
- package/src/connection/agent-serve-local.d.ts +33 -0
- package/src/connection/agent-serve-local.js +49 -0
- package/src/connection/agent-serve-local.js.map +1 -0
- package/src/connection/generator.js +3 -0
- package/src/connection/generator.js.map +1 -1
- package/src/connection/serve-local.js +1 -1
- package/src/connection/serve-local.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +23 -23
- package/src/preset/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/mcp-server/generator.js +1 -1
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +21 -16
- package/src/py/strands-agent/files/app/main.py.template +12 -7
- package/src/py/strands-agent/generator.js +1 -1
- package/src/py/strands-agent/generator.js.map +1 -1
- package/src/py/strands-agent/react-connection/__snapshots__/generator.spec.ts.snap +236 -0
- package/src/py/strands-agent/react-connection/files/agent/scripts/__agentNameSnakeCase___openapi.py.template +6 -0
- package/src/py/strands-agent/react-connection/generator.d.ts +10 -0
- package/src/py/strands-agent/react-connection/generator.js +102 -0
- package/src/py/strands-agent/react-connection/generator.js.map +1 -0
- package/src/py/strands-agent/react-connection/schema.d.ts +15 -0
- package/src/py/strands-agent/react-connection/schema.json +26 -0
- package/src/py/strands-agent/react-connection/serve-local.d.ts +19 -0
- package/src/py/strands-agent/react-connection/serve-local.js +25 -0
- package/src/py/strands-agent/react-connection/serve-local.js.map +1 -0
- package/src/trpc/react/generator.js +2 -6
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/nx-generator/generator.js +1 -1
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +46 -46
- package/src/ts/strands-agent/react-connection/generator.js +2 -6
- package/src/ts/strands-agent/react-connection/generator.js.map +1 -1
- package/src/ts/strands-agent/react-connection/serve-local.js +8 -34
- package/src/ts/strands-agent/react-connection/serve-local.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +2 -2
- package/src/utils/bundle/bundle.js +2 -2
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +17 -0
- package/src/utils/connection/open-api/react.d.ts +13 -1
- package/src/utils/connection/open-api/react.js +18 -18
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/shared-shadcn.js +2 -6
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/versions.d.ts +42 -42
- package/src/utils/versions.js +41 -41
- 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,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
|
-
|
|
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
|
-
|
|
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":";;;AA8BA,
|
|
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.
|
|
717
|
-
"@modelcontextprotocol/sdk": "1.
|
|
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.
|
|
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.
|