@aws/nx-plugin 0.121.0 → 1.0.0-rc.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/generators.json +47 -6
- package/package.json +1 -1
- package/src/connection/generator.js +2 -2
- package/src/connection/generator.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +11 -11
- package/src/infra/app/files/app/src/main.ts.template +2 -2
- package/src/infra/app/generator.js +9 -9
- package/src/infra/app/generator.js.map +1 -1
- package/src/infra/app/schema.d.ts +1 -1
- package/src/infra/app/schema.json +1 -1
- package/src/mcp-server/guide-pipeline.js +8 -10
- package/src/mcp-server/guide-pipeline.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +1 -1
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.js +2 -2
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +6 -8
- package/src/preset/generator.d.ts +1 -1
- package/src/preset/generator.js +4 -6
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.ts +5 -5
- package/src/preset/schema.json +4 -4
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/py/agent/a2a-connection/generator.js +4 -3
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/files/deploy/Dockerfile.template +3 -3
- package/src/py/agent/generator.js +23 -23
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/generator.js +1 -1
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/agent/react-connection/generator.js +4 -4
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/schema.d.ts +8 -8
- package/src/py/agent/schema.json +18 -18
- package/src/py/api/generator.d.ts +10 -0
- package/src/py/api/generator.js +25 -0
- package/src/py/api/generator.js.map +1 -0
- package/src/py/api/schema.d.ts +17 -0
- package/src/py/api/schema.json +100 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/py/fast-api/generator.js +10 -10
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/generator.js +1 -1
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/schema.d.ts +4 -6
- package/src/py/fast-api/schema.json +15 -15
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +6 -6
- package/src/py/lambda-function/generator.js +9 -9
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/lambda-function/schema.d.ts +4 -4
- package/src/py/lambda-function/schema.json +7 -7
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/py/mcp-server/generator.js +11 -11
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.d.ts +5 -9
- package/src/py/mcp-server/schema.json +15 -15
- package/src/py/project/generator.js +1 -1
- package/src/py/project/generator.js.map +1 -1
- package/src/py/project/schema.d.ts +1 -1
- package/src/py/project/schema.json +2 -2
- package/src/smithy/project/generator.js +2 -2
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/react-connection/generator.js +1 -1
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/smithy/ts/api/generator.js +8 -8
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.ts +4 -6
- package/src/smithy/ts/api/schema.json +15 -15
- package/src/terraform/project/generator.js +1 -1
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/trpc/backend/files/src/client/index.ts.template +5 -5
- package/src/trpc/backend/files/src/handler.ts.template +2 -2
- package/src/trpc/backend/generator.js +22 -22
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.ts +4 -4
- package/src/trpc/backend/schema.json +15 -15
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +14 -14
- package/src/trpc/react/generator.js +6 -5
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/agent/a2a-connection/generator.js +4 -3
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/files/deploy/Dockerfile.template +1 -1
- package/src/ts/agent/generator.js +22 -22
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/generator.js +1 -1
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +8 -8
- package/src/ts/agent/react-connection/generator.js +6 -6
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/serve-local.js +2 -2
- package/src/ts/agent/schema.d.ts +8 -8
- package/src/ts/agent/schema.json +18 -18
- package/src/ts/api/generator.d.ts +10 -0
- package/src/ts/api/generator.js +36 -0
- package/src/ts/api/generator.js.map +1 -0
- package/src/ts/api/schema.d.ts +18 -0
- package/src/ts/api/schema.json +105 -0
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/ts/astro-docs/generator.js +1 -0
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/docs/generator.d.ts +10 -0
- package/src/ts/docs/generator.js +13 -0
- package/src/ts/docs/generator.js.map +1 -0
- package/src/ts/docs/schema.d.ts +34 -0
- package/src/ts/docs/schema.json +70 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +10 -10
- package/src/ts/lambda-function/generator.js +12 -12
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lambda-function/schema.d.ts +4 -4
- package/src/ts/lambda-function/schema.json +7 -7
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/mcp-server/generator.js +12 -12
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.ts +5 -9
- package/src/ts/mcp-server/schema.json +15 -15
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.spec.ts.template +1 -1
- package/src/ts/nx-plugin/generator.js +2 -2
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/rdb/files/prisma.config.ts.template +1 -1
- package/src/ts/rdb/files/scripts/docker-pull.ts.template +1 -1
- package/src/ts/rdb/files/scripts/docker-start.ts.template +3 -3
- package/src/ts/rdb/files/scripts/wait-for-db.ts.template +3 -3
- package/src/ts/rdb/files/src/create-db-user-handler.ts.template +2 -2
- package/src/ts/rdb/files/src/migration-handler.ts.template +2 -2
- package/src/ts/rdb/files/src/prisma.ts.template +2 -2
- package/src/ts/rdb/generator.js +18 -18
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/schema.d.ts +5 -5
- package/src/ts/rdb/schema.json +13 -13
- package/src/ts/rdb/trpc-connection/files/src/middleware/__rdbNameKebab__.ts.template +1 -1
- package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +9 -9
- package/src/ts/react-website/agui/generator.d.ts +2 -2
- package/src/ts/react-website/agui/generator.js +9 -9
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +25 -23
- package/src/ts/react-website/app/files/app/cloudscape/src/components/AppLayout/index.tsx.template +5 -5
- package/src/ts/react-website/app/files/app/cloudscape/src/main.tsx.template +1 -1
- package/src/ts/react-website/app/files/app/cloudscape/src/styles.css.template +1 -1
- package/src/ts/react-website/app/files/app/none/src/components/AppLayout/index.tsx.template +5 -5
- package/src/ts/react-website/app/files/app/none/src/main.tsx.template +1 -1
- package/src/ts/react-website/app/files/app/none/src/styles.css.template +2 -2
- package/src/ts/react-website/app/files/app/shadcn/src/components/AppLayout/index.tsx.template +6 -6
- package/src/ts/react-website/app/files/app/shadcn/src/main.tsx.template +1 -1
- package/src/ts/react-website/app/generator.d.ts +3 -3
- package/src/ts/react-website/app/generator.js +28 -27
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/app/schema.d.ts +6 -6
- package/src/ts/react-website/app/schema.json +13 -13
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +3 -3
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +3 -3
- package/src/ts/react-website/cognito-auth/generator.js +9 -9
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/schema.d.ts +2 -2
- package/src/ts/react-website/cognito-auth/schema.json +4 -4
- package/src/ts/website/app/generator.d.ts +10 -0
- package/src/ts/website/app/generator.js +13 -0
- package/src/ts/website/app/generator.js.map +1 -0
- package/src/ts/website/app/schema.d.ts +20 -0
- package/src/ts/website/app/schema.json +97 -0
- package/src/ts/website/auth/generator.d.ts +10 -0
- package/src/ts/website/auth/generator.js +17 -0
- package/src/ts/website/auth/generator.js.map +1 -0
- package/src/ts/website/auth/schema.d.ts +12 -0
- package/src/ts/website/auth/schema.json +46 -0
- package/src/utils/agent-connection/agent-connection.js +1 -1
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +9 -9
- package/src/utils/agent-core-constructs/agent-core-constructs.js +11 -13
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +13 -13
- package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +5 -5
- package/src/utils/api-constructs/api-constructs.d.ts +3 -3
- package/src/utils/api-constructs/api-constructs.js +4 -6
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +12 -12
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +12 -12
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +7 -7
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +10 -10
- package/src/utils/api-constructs/open-api-metadata.d.ts +3 -3
- package/src/utils/api-constructs/open-api-metadata.js +2 -2
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/commands.d.ts +1 -1
- package/src/utils/commands.js +2 -2
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/__snapshots__/utils.spec.ts.snap +6 -6
- package/src/utils/config/index.d.ts +2 -2
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +7 -7
- package/src/utils/connection/open-api/react.d.ts +1 -1
- package/src/utils/connection/open-api/react.js +3 -3
- package/src/utils/containers.d.ts +5 -5
- package/src/utils/containers.js +6 -6
- package/src/utils/containers.js.map +1 -1
- package/src/utils/function-constructs/files/cdk/app/lambda-functions/{__functionNameKebabCase__.ts.template → __nameKebabCase__.ts.template} +1 -1
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/{__functionNameKebabCase__/__functionNameKebabCase__.tf.template → __nameKebabCase__/__nameKebabCase__.tf.template} +7 -7
- package/src/utils/function-constructs/function-constructs.d.ts +4 -4
- package/src/utils/function-constructs/function-constructs.js +5 -7
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/iac-providers.d.ts +3 -3
- package/src/utils/iac-providers.js +1 -1
- package/src/utils/iac.d.ts +2 -2
- package/src/utils/iac.js +6 -6
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
- package/src/utils/identity-constructs/identity-constructs.js +3 -3
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +4 -4
- package/src/utils/rdb-constructs/rdb-constructs.js +4 -6
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +2 -2
- package/src/utils/shared-constructs.js +3 -3
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/website-constructs/website-constructs.d.ts +2 -2
- package/src/utils/website-constructs/website-constructs.js +4 -6
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
|
@@ -24,16 +24,16 @@ const iac_1 = require("../../utils/iac");
|
|
|
24
24
|
const bundle_1 = require("../../utils/bundle/bundle");
|
|
25
25
|
exports.TRPC_BACKEND_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
26
26
|
const VALID_TRPC_INTEGRATION_PERMUTATIONS = new Set([
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
27
|
+
'rest-lambda::isolated',
|
|
28
|
+
'rest-lambda::shared',
|
|
29
|
+
'http-lambda::isolated',
|
|
30
|
+
'http-lambda::shared',
|
|
31
31
|
]);
|
|
32
32
|
async function tsTrpcApiGenerator(tree, options) {
|
|
33
|
-
|
|
34
|
-
const
|
|
33
|
+
validateTrpcInfraAndIntegrationPatternCombination(options);
|
|
34
|
+
const iac = await (0, iac_1.resolveIac)(tree, options.iac);
|
|
35
35
|
await (0, shared_constructs_1.sharedConstructsGenerator)(tree, {
|
|
36
|
-
|
|
36
|
+
iac,
|
|
37
37
|
});
|
|
38
38
|
const apiNamespace = (0, npm_scope_1.getNpmScopePrefix)(tree);
|
|
39
39
|
const apiNameKebabCase = (0, names_1.kebabCase)(options.name);
|
|
@@ -63,25 +63,25 @@ async function tsTrpcApiGenerator(tree, options) {
|
|
|
63
63
|
apiProjectName: backendProjectName,
|
|
64
64
|
apiNameClassName,
|
|
65
65
|
apiNameKebabCase,
|
|
66
|
-
constructType: options.
|
|
66
|
+
constructType: options.infra === 'http-lambda' ? 'http' : 'rest',
|
|
67
67
|
backend: {
|
|
68
68
|
type: 'trpc',
|
|
69
69
|
projectAlias: enhancedOptions.backendProjectAlias,
|
|
70
70
|
bundleOutputDir: (0, devkit_1.joinPathFragments)('dist', backendRoot, 'bundle'),
|
|
71
71
|
integrationPattern: getIntegrationPattern(options),
|
|
72
|
-
...(options.auth === '
|
|
72
|
+
...(options.auth === 'custom' && {
|
|
73
73
|
authorizerBundleOutputDir: (0, devkit_1.joinPathFragments)('dist', backendRoot, 'bundle', 'authorizer'),
|
|
74
74
|
}),
|
|
75
75
|
},
|
|
76
76
|
auth: options.auth,
|
|
77
|
-
|
|
77
|
+
iac,
|
|
78
78
|
});
|
|
79
79
|
projectConfig.metadata = {
|
|
80
80
|
...projectConfig.metadata,
|
|
81
81
|
apiName: options.name,
|
|
82
82
|
apiType: 'trpc',
|
|
83
83
|
auth: options.auth,
|
|
84
|
-
|
|
84
|
+
infra: options.infra,
|
|
85
85
|
integrationPattern: getIntegrationPattern(options),
|
|
86
86
|
};
|
|
87
87
|
projectConfig.targets.serve = {
|
|
@@ -105,7 +105,7 @@ async function tsTrpcApiGenerator(tree, options) {
|
|
|
105
105
|
targetFilePath: 'src/handler.ts',
|
|
106
106
|
external: [/@aws-sdk\/.*/], // lambda runtime provides aws sdk
|
|
107
107
|
});
|
|
108
|
-
if (options.auth === '
|
|
108
|
+
if (options.auth === 'custom') {
|
|
109
109
|
await (0, bundle_1.addTypeScriptBundleTarget)(tree, projectConfig, {
|
|
110
110
|
targetFilePath: 'src/authorizer.ts',
|
|
111
111
|
bundleOutputDir: 'authorizer',
|
|
@@ -119,14 +119,14 @@ async function tsTrpcApiGenerator(tree, options) {
|
|
|
119
119
|
overwriteStrategy: devkit_1.OverwriteStrategy.Overwrite,
|
|
120
120
|
});
|
|
121
121
|
tree.delete((0, devkit_1.joinPathFragments)(backendRoot, 'src', 'lib'));
|
|
122
|
-
if (options.auth === '
|
|
123
|
-
const authorizerType = options.
|
|
122
|
+
if (options.auth === 'custom') {
|
|
123
|
+
const authorizerType = options.infra === 'http-lambda' ? 'http' : 'rest';
|
|
124
124
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '..', '..', 'utils', 'api-constructs', 'files', 'cdk', 'authorizer', authorizerType), (0, devkit_1.joinPathFragments)(backendRoot, 'src'), {}, {
|
|
125
125
|
overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
|
|
126
126
|
});
|
|
127
127
|
}
|
|
128
128
|
// Remove streaming schema helper for HTTP APIs (API Gateway HTTP API doesn't support streaming)
|
|
129
|
-
if (options.
|
|
129
|
+
if (options.infra !== 'rest-lambda') {
|
|
130
130
|
tree.delete((0, devkit_1.joinPathFragments)(backendRoot, 'src', 'schema', 'z-async-iterable.ts'));
|
|
131
131
|
}
|
|
132
132
|
(0, devkit_1.addDependenciesToPackageJson)(tree, (0, versions_1.withVersions)([
|
|
@@ -141,7 +141,7 @@ async function tsTrpcApiGenerator(tree, options) {
|
|
|
141
141
|
'@trpc/client',
|
|
142
142
|
'aws4fetch',
|
|
143
143
|
'@aws-sdk/credential-providers',
|
|
144
|
-
...(options.auth === '
|
|
144
|
+
...(options.auth === 'custom'
|
|
145
145
|
? ['@middy/core', '@aws-lambda-powertools/parser']
|
|
146
146
|
: []),
|
|
147
147
|
]), (0, versions_1.withVersions)(['@types/aws-lambda', 'tsx', 'cors', '@types/cors']));
|
|
@@ -153,24 +153,24 @@ async function tsTrpcApiGenerator(tree, options) {
|
|
|
153
153
|
(0, devkit_1.installPackagesTask)(tree);
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
|
-
const
|
|
156
|
+
const validateTrpcInfraAndIntegrationPatternCombination = (options) => {
|
|
157
157
|
const integrationPattern = getIntegrationPattern(options);
|
|
158
|
-
const permutation = `${options.
|
|
158
|
+
const permutation = `${options.infra}::${integrationPattern}`;
|
|
159
159
|
if (!VALID_TRPC_INTEGRATION_PERMUTATIONS.has(permutation)) {
|
|
160
|
-
throw new Error(`Invalid tRPC
|
|
160
|
+
throw new Error(`Invalid tRPC infra/integrationPattern combination: ${options.infra} + ${integrationPattern}.`);
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
163
|
const getIntegrationPattern = (options) => {
|
|
164
164
|
return options.integrationPattern ?? 'isolated';
|
|
165
165
|
};
|
|
166
166
|
const getApiGatewayEventType = (options) => {
|
|
167
|
-
if (options.
|
|
167
|
+
if (options.infra === 'rest-lambda') {
|
|
168
168
|
return 'APIGatewayProxyEvent';
|
|
169
169
|
}
|
|
170
|
-
if (options.auth === '
|
|
170
|
+
if (options.auth === 'iam') {
|
|
171
171
|
return 'APIGatewayProxyEventV2WithIAMAuthorizer';
|
|
172
172
|
}
|
|
173
|
-
else if (options.auth === '
|
|
173
|
+
else if (options.auth === 'cognito') {
|
|
174
174
|
return 'APIGatewayProxyEventV2WithJWTAuthorizer';
|
|
175
175
|
}
|
|
176
176
|
return 'APIGatewayProxyEventV2';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/backend/generator.ts"],"names":[],"mappings":";;;AA6CA,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/backend/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { Linter } from '@nx/eslint';
|
|
6
|
-
import {
|
|
6
|
+
import { IacOption } from '../../utils/iac';
|
|
7
7
|
import { TsProjectGeneratorSchema } from '../../ts/lib/schema';
|
|
8
8
|
|
|
9
9
|
export interface TsTrpcApiGeneratorSchema {
|
|
10
10
|
name: string;
|
|
11
|
-
|
|
11
|
+
infra: 'rest-lambda' | 'http-lambda';
|
|
12
12
|
integrationPattern?: 'isolated' | 'shared';
|
|
13
|
-
auth: '
|
|
13
|
+
auth: 'iam' | 'cognito' | 'custom';
|
|
14
14
|
directory?: TsProjectGeneratorSchema['directory'];
|
|
15
15
|
subDirectory?: TsProjectGeneratorSchema['subDirectory'];
|
|
16
|
-
|
|
16
|
+
iac: IacOption;
|
|
17
17
|
}
|
|
@@ -13,14 +13,6 @@
|
|
|
13
13
|
},
|
|
14
14
|
"x-prompt": "What name would you like your API to have? i.e: MyApi"
|
|
15
15
|
},
|
|
16
|
-
"computeType": {
|
|
17
|
-
"type": "string",
|
|
18
|
-
"description": "The type of compute to use to deploy this API. Choose between ServerlessApiGatewayRestApi (default) or ServerlessApiGatewayHttpApi.",
|
|
19
|
-
"default": "ServerlessApiGatewayRestApi",
|
|
20
|
-
"enum": ["ServerlessApiGatewayRestApi", "ServerlessApiGatewayHttpApi"],
|
|
21
|
-
"x-prompt": "What compute type would you like to deploy your API with?",
|
|
22
|
-
"x-priority": "important"
|
|
23
|
-
},
|
|
24
16
|
"integrationPattern": {
|
|
25
17
|
"type": "string",
|
|
26
18
|
"description": "How API Gateway integrations are generated for the API. Choose between isolated (default) and shared.",
|
|
@@ -45,9 +37,9 @@
|
|
|
45
37
|
},
|
|
46
38
|
"auth": {
|
|
47
39
|
"type": "string",
|
|
48
|
-
"description": "The method used to authenticate with your API. Choose between
|
|
49
|
-
"default": "
|
|
50
|
-
"enum": ["
|
|
40
|
+
"description": "The method used to authenticate with your API. Choose between iam (default), cognito or custom.",
|
|
41
|
+
"default": "iam",
|
|
42
|
+
"enum": ["iam", "cognito", "custom"],
|
|
51
43
|
"x-prompt": "How would you like users to authenticate with your API?",
|
|
52
44
|
"x-priority": "important"
|
|
53
45
|
},
|
|
@@ -64,13 +56,21 @@
|
|
|
64
56
|
"description": "The sub directory the project is placed in. By default this is the project name.",
|
|
65
57
|
"x-prompt": "Which sub directory do you want to create the project in? (By default this is the project name)"
|
|
66
58
|
},
|
|
67
|
-
"
|
|
59
|
+
"iac": {
|
|
68
60
|
"type": "string",
|
|
69
61
|
"description": "The preferred IaC provider. By default this is inherited from your initial selection.",
|
|
70
|
-
"enum": ["
|
|
62
|
+
"enum": ["inherit", "cdk", "terraform"],
|
|
71
63
|
"x-priority": "important",
|
|
72
|
-
"default": "
|
|
73
|
-
"x-prompt": "Which provider would you like to manage your infrastructure? (default:
|
|
64
|
+
"default": "inherit",
|
|
65
|
+
"x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
|
|
66
|
+
},
|
|
67
|
+
"infra": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "The type of infrastructure to use to deploy this API. Choose between rest-lambda (default) or http-lambda.",
|
|
70
|
+
"default": "rest-lambda",
|
|
71
|
+
"enum": ["rest-lambda", "http-lambda"],
|
|
72
|
+
"x-prompt": "What infrastructure would you like to deploy your API with?",
|
|
73
|
+
"x-priority": "important"
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"required": ["name"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
-
exports[`trpc react generator > REST API (
|
|
3
|
+
exports[`trpc react generator > REST API (rest-lambda) > should generate REST API client provider with splitLink for Cognito auth > TestApiClientProvider-REST-Cognito.tsx 1`] = `
|
|
4
4
|
"import { AppRouter } from 'backend';
|
|
5
5
|
import { useQueryClient } from '@tanstack/react-query';
|
|
6
6
|
import { createTRPCOptionsProxy } from '@trpc/tanstack-react-query';
|
|
@@ -77,7 +77,7 @@ export default TestApiClientProvider;
|
|
|
77
77
|
"
|
|
78
78
|
`;
|
|
79
79
|
|
|
80
|
-
exports[`trpc react generator > REST API (
|
|
80
|
+
exports[`trpc react generator > REST API (rest-lambda) > should generate REST API client provider with splitLink for Custom auth > TestApiClientProvider-REST-Custom.tsx 1`] = `
|
|
81
81
|
"import { AppRouter } from 'backend';
|
|
82
82
|
import { useQueryClient } from '@tanstack/react-query';
|
|
83
83
|
import { createTRPCOptionsProxy } from '@trpc/tanstack-react-query';
|
|
@@ -147,7 +147,7 @@ export default TestApiClientProvider;
|
|
|
147
147
|
"
|
|
148
148
|
`;
|
|
149
149
|
|
|
150
|
-
exports[`trpc react generator > REST API (
|
|
150
|
+
exports[`trpc react generator > REST API (rest-lambda) > should generate REST API client provider with splitLink for IAM auth > TestApiClientProvider-REST-IAM.tsx 1`] = `
|
|
151
151
|
"import { AppRouter } from 'backend';
|
|
152
152
|
import { useQueryClient } from '@tanstack/react-query';
|
|
153
153
|
import { createTRPCOptionsProxy } from '@trpc/tanstack-react-query';
|
|
@@ -9,9 +9,9 @@ import { EventSourcePolyfill } from "event-source-polyfill";
|
|
|
9
9
|
<%_ } else { _%>
|
|
10
10
|
import { HTTPLinkOptions, TRPCClient, createTRPCClient, httpLink } from "@trpc/client";
|
|
11
11
|
<%_ } _%>
|
|
12
|
-
<%_ if (auth === '
|
|
12
|
+
<%_ if (auth === 'iam') { _%>
|
|
13
13
|
import { useSigV4 } from "../hooks/useSigV4";
|
|
14
|
-
<%_ } else if (auth === '
|
|
14
|
+
<%_ } else if (auth === 'cognito') { _%>
|
|
15
15
|
import { useAuth } from "react-oidc-context";
|
|
16
16
|
<%_ } _%>
|
|
17
17
|
|
|
@@ -28,9 +28,9 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
|
|
|
28
28
|
const queryClient = useQueryClient();
|
|
29
29
|
const runtimeConfig = useRuntimeConfig();
|
|
30
30
|
const apiUrl = runtimeConfig.apis.<%= apiNameClassName %>;
|
|
31
|
-
<%_ if (auth === '
|
|
31
|
+
<%_ if (auth === 'iam') { _%>
|
|
32
32
|
const sigv4Client = useSigV4();
|
|
33
|
-
<%_ } else if (auth === '
|
|
33
|
+
<%_ } else if (auth === 'cognito') { _%>
|
|
34
34
|
const auth = useAuth();
|
|
35
35
|
const user = auth?.user;
|
|
36
36
|
<%_ } _%>
|
|
@@ -45,7 +45,7 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
|
|
|
45
45
|
url: apiUrl,
|
|
46
46
|
EventSource: EventSourcePolyfill,
|
|
47
47
|
eventSourceOptions: async ({ op }) => {
|
|
48
|
-
<%_ if (auth === '
|
|
48
|
+
<%_ if (auth === 'iam') { _%>
|
|
49
49
|
const url =
|
|
50
50
|
`${apiUrl.replace(/\/$/, '')}/${op.path}` +
|
|
51
51
|
(op.input !== undefined
|
|
@@ -57,13 +57,13 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
|
|
|
57
57
|
headers[k] = v;
|
|
58
58
|
});
|
|
59
59
|
return { headers };
|
|
60
|
-
<%_ } else if (auth === '
|
|
60
|
+
<%_ } else if (auth === 'cognito') { _%>
|
|
61
61
|
return {
|
|
62
62
|
headers: {
|
|
63
63
|
Authorization: `Bearer ${user?.id_token}`,
|
|
64
64
|
},
|
|
65
65
|
};
|
|
66
|
-
<%_ } else if (auth === '
|
|
66
|
+
<%_ } else if (auth === 'custom') { _%>
|
|
67
67
|
// TODO: Add headers required by your custom authorizer
|
|
68
68
|
return { headers: {} };
|
|
69
69
|
<%_ } _%>
|
|
@@ -71,13 +71,13 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
|
|
|
71
71
|
}),
|
|
72
72
|
false: httpLink({
|
|
73
73
|
url: apiUrl,
|
|
74
|
-
<%_ if (auth === '
|
|
74
|
+
<%_ if (auth === 'iam') { _%>
|
|
75
75
|
fetch: sigv4Client.fetch,
|
|
76
|
-
<%_ } else if (auth === '
|
|
76
|
+
<%_ } else if (auth === 'cognito') { _%>
|
|
77
77
|
headers: {
|
|
78
78
|
Authorization: `Bearer ${user?.id_token}`,
|
|
79
79
|
},
|
|
80
|
-
<%_ } else if (auth === '
|
|
80
|
+
<%_ } else if (auth === 'custom') { _%>
|
|
81
81
|
// TODO: Add headers required by your custom authorizer
|
|
82
82
|
headers: {},
|
|
83
83
|
<%_ } _%>
|
|
@@ -88,13 +88,13 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
|
|
|
88
88
|
<%_ } else { _%>
|
|
89
89
|
const linkOptions: HTTPLinkOptions<any> = {
|
|
90
90
|
url: apiUrl,
|
|
91
|
-
<%_ if (auth === '
|
|
91
|
+
<%_ if (auth === 'iam') { _%>
|
|
92
92
|
fetch: sigv4Client.fetch,
|
|
93
|
-
<%_ } else if (auth === '
|
|
93
|
+
<%_ } else if (auth === 'cognito') { _%>
|
|
94
94
|
headers: {
|
|
95
95
|
Authorization: `Bearer ${user?.id_token}`,
|
|
96
96
|
},
|
|
97
|
-
<%_ } else if (auth === '
|
|
97
|
+
<%_ } else if (auth === 'custom') { _%>
|
|
98
98
|
// TODO: Add headers required by your custom authorizer
|
|
99
99
|
headers: {},
|
|
100
100
|
<%_ } _%>
|
|
@@ -111,7 +111,7 @@ export const <%= apiNameClassName %>ClientProvider: FC<PropsWithChildren> = ({
|
|
|
111
111
|
});
|
|
112
112
|
|
|
113
113
|
return { optionsProxy, client };
|
|
114
|
-
}, [apiUrl, queryClient<% if (auth === '
|
|
114
|
+
}, [apiUrl, queryClient<% if (auth === 'iam') { %>, sigv4Client<% } else if (auth === 'cognito') { %>, user<% } %>]);
|
|
115
115
|
|
|
116
116
|
return (
|
|
117
117
|
<<%= apiNameClassName %>TRPCContext.Provider value={container}>
|
|
@@ -23,9 +23,10 @@ async function reactGenerator(tree, options) {
|
|
|
23
23
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
24
24
|
const metadata = backendProjectConfig.metadata;
|
|
25
25
|
const apiName = metadata.apiName;
|
|
26
|
-
const auth = metadata.auth ?? '
|
|
26
|
+
const auth = (metadata.auth ?? 'iam').toLowerCase();
|
|
27
27
|
const port = metadata.port ?? metadata.ports?.[0] ?? 2022;
|
|
28
|
-
const
|
|
28
|
+
const rawInfra = (metadata.infra ?? metadata.computeType ?? '').toLowerCase();
|
|
29
|
+
const isRestApi = rawInfra === 'rest-lambda' || rawInfra === 'serverlessapigatewayrestapi';
|
|
29
30
|
const apiNameClassName = (0, names_1.toClassName)(apiName);
|
|
30
31
|
const backendProjectAlias = (0, npm_scope_1.toScopeAlias)(backendProjectConfig.name);
|
|
31
32
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), frontendProjectConfig.root, {
|
|
@@ -42,7 +43,7 @@ async function reactGenerator(tree, options) {
|
|
|
42
43
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../../utils/files/website/components/tanstack-query'), (0, devkit_1.joinPathFragments)(frontendProjectConfig.sourceRoot, 'components'), {}, {
|
|
43
44
|
overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
|
|
44
45
|
});
|
|
45
|
-
if (auth === '
|
|
46
|
+
if (auth === 'iam') {
|
|
46
47
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../../utils/files/website/hooks/sigv4'), (0, devkit_1.joinPathFragments)(frontendProjectConfig.sourceRoot, 'hooks'), {}, {
|
|
47
48
|
overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting,
|
|
48
49
|
});
|
|
@@ -69,7 +70,7 @@ async function reactGenerator(tree, options) {
|
|
|
69
70
|
'@tanstack/react-query',
|
|
70
71
|
'@tanstack/react-query-devtools',
|
|
71
72
|
...(isRestApi ? ['event-source-polyfill'] : []),
|
|
72
|
-
...(auth === '
|
|
73
|
+
...(auth === 'iam'
|
|
73
74
|
? [
|
|
74
75
|
'oidc-client-ts',
|
|
75
76
|
'aws4fetch',
|
|
@@ -77,7 +78,7 @@ async function reactGenerator(tree, options) {
|
|
|
77
78
|
'react-oidc-context',
|
|
78
79
|
]
|
|
79
80
|
: []),
|
|
80
|
-
...(auth === '
|
|
81
|
+
...(auth === 'cognito' ? ['react-oidc-context'] : []),
|
|
81
82
|
]), (0, versions_1.withVersions)([
|
|
82
83
|
'@smithy/types',
|
|
83
84
|
...(isRestApi ? ['@types/event-source-polyfill'] : []),
|
|
@@ -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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"}
|
|
@@ -292,7 +292,7 @@ variable "server_protocol" {
|
|
|
292
292
|
default = "HTTP"
|
|
293
293
|
validation {
|
|
294
294
|
condition = contains(["MCP", "HTTP", "A2A"], var.server_protocol)
|
|
295
|
-
error_message = "Protocol type must be either '
|
|
295
|
+
error_message = "Protocol type must be either 'mcp', 'http', or 'a2a'."
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
|
|
@@ -23,10 +23,11 @@ const tsAgentA2aConnectionGenerator = async (tree, options) => {
|
|
|
23
23
|
if (!agentComponent || !targetAgentComponent) {
|
|
24
24
|
throw new Error('Both sourceComponent and targetComponent must be provided for ts#agent -> a2a connections');
|
|
25
25
|
}
|
|
26
|
-
if (targetAgentComponent.protocol !== '
|
|
27
|
-
throw new Error(`Target agent '${targetAgentComponent.name}' uses the ${targetAgentComponent.protocol ?? '
|
|
26
|
+
if ((targetAgentComponent.protocol ?? '').toLowerCase() !== 'a2a') {
|
|
27
|
+
throw new Error(`Target agent '${targetAgentComponent.name}' uses the ${targetAgentComponent.protocol ?? 'http'} protocol — only A2A agents can be connected as tools.`);
|
|
28
28
|
}
|
|
29
|
-
if (targetAgentComponent.auth &&
|
|
29
|
+
if (targetAgentComponent.auth &&
|
|
30
|
+
targetAgentComponent.auth.toLowerCase() !== 'iam') {
|
|
30
31
|
throw new Error(`A2A agent connection currently only supports IAM authentication, but '${targetAgentComponent.name}' uses '${targetAgentComponent.auth}' authentication.`);
|
|
31
32
|
}
|
|
32
33
|
const targetAgentComponentName = targetAgentComponent.name ?? 'agent';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/agent/a2a-connection/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AAEpB,0CAK2B;AAC3B,oDAAyE;AACzE,kDAA6D;AAC7D,gDAAiD;AACjD,sDAAuD;AACvD,wDAAuD;AACvD,4CAI4B;AAC5B,uFAI0D;AAE7C,QAAA,sCAAsC,GACjD,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;AAExB,MAAM,6BAA6B,GAAG,KAAK,EAChD,IAAU,EACV,OAA4C,EAChB,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,MAAM,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAErD,IAAI,CAAC,cAAc,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/ts/agent/a2a-connection/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,12 +34,12 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
34
34
|
const targetSourceDir = (0, devkit_1.joinPathFragments)(project.root, targetSourceDirRelativeToProjectRoot);
|
|
35
35
|
const relativeSourceDir = targetSourceDir.replace(project.root + '/', './');
|
|
36
36
|
const distDir = (0, devkit_1.joinPathFragments)('dist', project.root);
|
|
37
|
-
const
|
|
38
|
-
const protocol = options.protocol ?? '
|
|
39
|
-
if (
|
|
40
|
-
console.warn('Warning: auth is ignored when no
|
|
37
|
+
const infra = options.infra ?? 'agentcore';
|
|
38
|
+
const protocol = options.protocol ?? 'http';
|
|
39
|
+
if (infra === 'none' && options.auth && options.auth !== 'iam') {
|
|
40
|
+
console.warn('Warning: auth is ignored when no infrastructure is configured (no infrastructure is generated)');
|
|
41
41
|
}
|
|
42
|
-
const auth = options.auth ?? '
|
|
42
|
+
const auth = options.auth ?? 'iam';
|
|
43
43
|
// Ensure the shared agent-connection project exists so the server entry
|
|
44
44
|
// point can import `runWithSessionId` and propagate the AgentCore session
|
|
45
45
|
// ID to any downstream MCP / A2A clients a later connection generator
|
|
@@ -55,8 +55,8 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
55
55
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
|
|
56
56
|
// Generate protocol-specific files
|
|
57
57
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', protocol.toLowerCase()), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
|
|
58
|
-
if (
|
|
59
|
-
const
|
|
58
|
+
if (infra === 'agentcore') {
|
|
59
|
+
const containers = await (0, containers_1.resolveContainers)(tree, 'inherit');
|
|
60
60
|
const dockerImageTag = `${(0, npm_scope_1.getNpmScope)(tree)}-${name}:latest`;
|
|
61
61
|
// Add bundle target
|
|
62
62
|
await (0, bundle_1.addTypeScriptBundleTarget)(tree, project, {
|
|
@@ -80,7 +80,7 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
80
80
|
options: {
|
|
81
81
|
commands: [
|
|
82
82
|
fs.cp(`${targetSourceDir}/Dockerfile`, `${dockerOutputDir}/Dockerfile`),
|
|
83
|
-
`${
|
|
83
|
+
`${containers} build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}`,
|
|
84
84
|
],
|
|
85
85
|
parallel: false,
|
|
86
86
|
},
|
|
@@ -89,20 +89,20 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
89
89
|
(0, nx_1.addDependencyToTargetIfNotPresent)(project, 'docker', dockerTargetName);
|
|
90
90
|
(0, nx_1.addDependencyToTargetIfNotPresent)(project, 'build', 'docker');
|
|
91
91
|
// Add shared constructs
|
|
92
|
-
const
|
|
93
|
-
await (0, shared_constructs_1.sharedConstructsGenerator)(tree, {
|
|
92
|
+
const iac = await (0, iac_1.resolveIac)(tree, options.iac);
|
|
93
|
+
await (0, shared_constructs_1.sharedConstructsGenerator)(tree, { iac });
|
|
94
94
|
// AG-UI uses HTTP as the AgentCore protocol type (AG-UI is HTTP-based with SSE over POST).
|
|
95
|
-
const infraProtocol = protocol === '
|
|
95
|
+
const infraProtocol = protocol === 'ag-ui' ? 'http' : protocol;
|
|
96
96
|
await (0, agent_core_constructs_1.addAgentInfra)(tree, {
|
|
97
97
|
agentNameKebabCase: name,
|
|
98
98
|
agentNameClassName,
|
|
99
99
|
projectName: project.name,
|
|
100
100
|
dockerImageTag,
|
|
101
101
|
dockerOutputDir,
|
|
102
|
-
|
|
102
|
+
iac,
|
|
103
103
|
auth,
|
|
104
104
|
serverProtocol: infraProtocol,
|
|
105
|
-
|
|
105
|
+
containers,
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
// Add dependencies
|
|
@@ -113,9 +113,9 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
113
113
|
'@aws-sdk/client-appconfigdata',
|
|
114
114
|
'@aws-lambda-powertools/parameters',
|
|
115
115
|
'@modelcontextprotocol/sdk',
|
|
116
|
-
...(protocol === '
|
|
116
|
+
...(protocol === 'a2a'
|
|
117
117
|
? ['express', '@a2a-js/sdk']
|
|
118
|
-
: protocol === '
|
|
118
|
+
: protocol === 'ag-ui'
|
|
119
119
|
? [
|
|
120
120
|
'@ag-ui/aws-strands',
|
|
121
121
|
'@ag-ui/core',
|
|
@@ -134,18 +134,18 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
134
134
|
'tsx',
|
|
135
135
|
'@types/node',
|
|
136
136
|
'agent-chat-cli',
|
|
137
|
-
...(protocol === '
|
|
137
|
+
...(protocol === 'a2a' || protocol === 'ag-ui'
|
|
138
138
|
? ['@types/express', '@types/cors']
|
|
139
139
|
: ['@types/ws', '@types/cors']),
|
|
140
140
|
]));
|
|
141
141
|
// A2A servers use port 9000 as per the Strands A2A SDK default and AgentCore A2A contract.
|
|
142
142
|
// HTTP and AG-UI agents use port 8081+ to avoid conflict with VS Code server on 8080.
|
|
143
|
-
const localDevPortStart = protocol === '
|
|
143
|
+
const localDevPortStart = protocol === 'a2a' ? 9000 : 8081;
|
|
144
144
|
const localDevPort = (0, port_1.assignPort)(tree, project, localDevPortStart);
|
|
145
145
|
// HTTP chat needs a tiny generated script to wrap the project's tRPC
|
|
146
146
|
// WebSocket client in a `ChatAdapter`. A2A speaks the standard A2A
|
|
147
147
|
// protocol, so we can run `agent-chat-cli` directly as a binary.
|
|
148
|
-
if (protocol === '
|
|
148
|
+
if (protocol === 'http') {
|
|
149
149
|
const scriptsDir = (0, devkit_1.joinPathFragments)(project.root, 'scripts', agentTargetPrefix);
|
|
150
150
|
const relativeAgentImport = `../../${targetSourceDirRelativeToProjectRoot}`;
|
|
151
151
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'scripts', 'http'), scriptsDir, {
|
|
@@ -155,14 +155,14 @@ const tsAgentGenerator = async (tree, options) => {
|
|
|
155
155
|
relativeAgentImport,
|
|
156
156
|
}, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
|
|
157
157
|
}
|
|
158
|
-
const chatUrl = protocol === '
|
|
158
|
+
const chatUrl = protocol === 'http'
|
|
159
159
|
? `ws://localhost:${localDevPort}/ws`
|
|
160
|
-
: protocol === '
|
|
160
|
+
: protocol === 'ag-ui'
|
|
161
161
|
? `http://localhost:${localDevPort}/invocations`
|
|
162
162
|
: `http://localhost:${localDevPort}`;
|
|
163
|
-
const chatCommand = protocol === '
|
|
163
|
+
const chatCommand = protocol === 'http'
|
|
164
164
|
? `tsx ./scripts/${agentTargetPrefix}/chat.ts`
|
|
165
|
-
: protocol === '
|
|
165
|
+
: protocol === 'ag-ui'
|
|
166
166
|
? `agent-chat-cli agui ${chatUrl}`
|
|
167
167
|
: `agent-chat-cli a2a ${chatUrl}`;
|
|
168
168
|
(0, devkit_1.updateProjectConfiguration)(tree, project.name, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/agent/generator.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCASoB;AAEpB,uCAMwB;AACxB,iDAAsE;AACtE,+CAA0D;AAC1D,6CAA2D;AAC3D,mDAAiE;AACjE,qDAAoD;AACpD,sDAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/agent/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ const tsAgentMcpConnectionGenerator = async (tree, options) => {
|
|
|
23
23
|
if (!agentComponent || !mcpComponent) {
|
|
24
24
|
throw new Error('Both sourceComponent and targetComponent must be provided for ts#agent -> mcp connections');
|
|
25
25
|
}
|
|
26
|
-
if (mcpComponent.auth && mcpComponent.auth !== '
|
|
26
|
+
if (mcpComponent.auth && mcpComponent.auth.toLowerCase() !== 'iam') {
|
|
27
27
|
throw new Error(`MCP server connection currently only supports IAM authentication, but '${mcpComponent.name}' uses '${mcpComponent.auth}' authentication.`);
|
|
28
28
|
}
|
|
29
29
|
const mcpComponentName = mcpComponent.name ?? 'mcp-server';
|