@aws/nx-plugin-mcp 1.0.0-rc.4 → 1.0.0-rc.41
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/bin/aws-nx-mcp.js +2240 -1030
- package/docs/get_started/building-with-ai.mdx +116 -0
- package/docs/get_started/concepts.mdx +52 -0
- package/docs/get_started/existing-project.mdx +176 -0
- package/docs/get_started/quick-start.mdx +266 -0
- package/docs/get_started/tutorials/contribute-generator.mdx +405 -0
- package/docs/get_started/tutorials/dungeon-game/1.mdx +1205 -0
- package/docs/get_started/tutorials/dungeon-game/2.mdx +237 -0
- package/docs/get_started/tutorials/dungeon-game/3.mdx +76 -0
- package/docs/get_started/tutorials/dungeon-game/4.mdx +162 -0
- package/docs/get_started/tutorials/dungeon-game/overview.mdx +144 -0
- package/docs/get_started/tutorials/dungeon-game/wrap-up.mdx +41 -0
- package/docs/get_started/tutorials/existing-project.mdx +4 -0
- package/docs/guides/agentcore-gateway.mdx +376 -0
- package/docs/guides/connection/agentcore-gateway-gateway.mdx +154 -0
- package/docs/guides/connection/agentcore-gateway-mcp.mdx +134 -0
- package/docs/guides/connection/py-agent-a2a.mdx +47 -15
- package/docs/guides/connection/py-agent-dynamodb.mdx +116 -0
- package/docs/guides/connection/py-agent-gateway.mdx +176 -0
- package/docs/guides/connection/py-agent-mcp.mdx +42 -13
- package/docs/guides/connection/py-agent-rdb.mdx +178 -0
- package/docs/guides/connection/py-fast-api-dynamodb.mdx +56 -0
- package/docs/guides/connection/py-fast-api-rdb.mdx +184 -0
- package/docs/guides/connection/py-mcp-server-dynamodb.mdx +116 -0
- package/docs/guides/connection/py-mcp-server-rdb.mdx +187 -0
- package/docs/guides/connection/react-agui.mdx +4 -4
- package/docs/guides/connection/react-fastapi.mdx +38 -2
- package/docs/guides/connection/react-py-agent.mdx +7 -13
- package/docs/guides/connection/react-smithy.mdx +3 -3
- package/docs/guides/connection/react-trpc.mdx +1 -1
- package/docs/guides/connection/react-ts-agent.mdx +8 -8
- package/docs/guides/connection/smithy-dynamodb.mdx +4 -4
- package/docs/guides/connection/smithy-rdb.mdx +5 -5
- package/docs/guides/connection/trpc-dynamodb.mdx +4 -4
- package/docs/guides/connection/trpc-rdb.mdx +5 -5
- package/docs/guides/connection/ts-agent-a2a.mdx +12 -9
- package/docs/guides/connection/ts-agent-dynamodb.mdx +3 -3
- package/docs/guides/connection/ts-agent-gateway.mdx +141 -0
- package/docs/guides/connection/ts-agent-mcp.mdx +11 -8
- package/docs/guides/connection/ts-agent-rdb.mdx +66 -21
- package/docs/guides/connection/ts-mcp-server-dynamodb.mdx +3 -3
- package/docs/guides/connection/ts-mcp-server-rdb.mdx +66 -16
- package/docs/guides/connection.mdx +104 -5
- package/docs/guides/docker-bundling.mdx +68 -8
- package/docs/guides/fastapi.mdx +244 -4
- package/docs/guides/license.mdx +264 -109
- package/docs/guides/local-development.mdx +87 -0
- package/docs/guides/nx-generator.mdx +7 -2
- package/docs/guides/py-agent.mdx +257 -49
- package/docs/guides/py-dynamodb.mdx +476 -0
- package/docs/guides/py-mcp-server.mdx +61 -2
- package/docs/guides/py-rdb.mdx +254 -0
- package/docs/guides/react-website-auth.mdx +58 -1
- package/docs/guides/react-website.mdx +130 -19
- package/docs/guides/security.mdx +75 -0
- package/docs/guides/terraform-project.mdx +1 -1
- package/docs/guides/trpc.mdx +45 -9
- package/docs/guides/ts-agent.mdx +149 -9
- package/docs/guides/ts-dynamodb.mdx +62 -239
- package/docs/guides/ts-mcp-server.mdx +66 -3
- package/docs/guides/ts-nx-plugin.mdx +1 -1
- package/docs/guides/ts-rdb.mdx +117 -470
- package/docs/guides/ts-smithy-api.mdx +183 -4
- package/docs/guides/typescript-infrastructure.mdx +9 -1
- package/docs/guides/typescript-project.mdx +5 -10
- package/docs/guides/workspace.mdx +2 -2
- package/docs/snippets/agent/architecture.mdx +1 -1
- package/docs/snippets/agent/bedrock-deployment.mdx +4 -0
- package/docs/snippets/agent/runtime-arn.mdx +21 -0
- package/docs/snippets/agent/securing-your-agent.mdx +39 -0
- package/docs/snippets/api/access-logging.mdx +33 -0
- package/docs/snippets/api/type-safe-api-integrations.mdx +31 -0
- package/docs/snippets/api/waf-configuration.mdx +1 -1
- package/docs/snippets/connection/dynamodb-local-development.mdx +2 -2
- package/docs/snippets/connection/py-dynamodb-local-development.mdx +7 -0
- package/docs/snippets/connection/py-lambda-rdb-ssl-requirements.mdx +7 -0
- package/docs/snippets/connection/rdb-api-infrastructure.mdx +50 -18
- package/docs/snippets/dynamodb/deploying-table.mdx +166 -0
- package/docs/snippets/dynamodb/gsi-config.mdx +38 -0
- package/docs/snippets/dynamodb/infrastructure.mdx +33 -0
- package/docs/snippets/dynamodb/local-dev-start.mdx +13 -0
- package/docs/snippets/dynamodb/local-dev-windows.mdx +15 -0
- package/docs/snippets/mcp/architecture.mdx +1 -1
- package/docs/snippets/mcp/bedrock-deployment.mdx +4 -0
- package/docs/snippets/mcp/config.mdx +3 -2
- package/docs/snippets/rdb/architecture.mdx +38 -0
- package/docs/snippets/rdb/cluster-instances.mdx +31 -0
- package/docs/snippets/rdb/deletion-protection.mdx +34 -0
- package/docs/snippets/rdb/deploying.mdx +187 -0
- package/docs/snippets/rdb/encryption-key-rotation.mdx +30 -0
- package/docs/snippets/rdb/engine-version.mdx +63 -0
- package/docs/snippets/rdb/infrastructure.mdx +35 -0
- package/docs/snippets/rdb/logging.mdx +32 -0
- package/docs/snippets/rdb/rds-proxy.mdx +50 -0
- package/docs/snippets/rdb/removal-policy.mdx +57 -0
- package/docs/snippets/rdb/serverless-capacity.mdx +32 -0
- package/docs/snippets/required-prerequisites.mdx +1 -1
- package/docs/snippets/trivy-image-scan.mdx +27 -0
- package/generators.json +101 -2
- package/package.json +1 -1
- package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
- package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
- package/src/agentcore-gateway/schema.json +70 -0
- package/src/connection/schema.json +5 -0
- package/src/infra/app/schema.json +5 -0
- package/src/init/schema.json +35 -0
- package/src/license/schema.json +11 -0
- package/src/preset/schema.json +11 -5
- package/src/py/agent/a2a-connection/schema.json +5 -0
- package/src/py/agent/gateway-connection/schema.json +31 -0
- package/src/py/agent/mcp-connection/schema.json +5 -0
- package/src/py/agent/react-connection/schema.json +5 -0
- package/src/py/agent/schema.json +6 -1
- package/src/py/api/schema.json +5 -0
- package/src/py/dynamodb/agent-connection/schema.json +27 -0
- package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
- package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
- package/src/py/dynamodb/schema.json +75 -0
- package/src/py/fast-api/react/schema.json +5 -0
- package/src/py/fast-api/schema.json +5 -0
- package/src/py/lambda-function/schema.json +5 -0
- package/src/py/mcp-server/schema.json +5 -0
- package/src/py/project/schema.json +5 -0
- package/src/py/rdb/agent-connection/schema.json +27 -0
- package/src/py/rdb/fast-api-connection/schema.json +23 -0
- package/src/py/rdb/mcp-server-connection/schema.json +27 -0
- package/src/py/rdb/schema.json +77 -0
- package/src/smithy/project/schema.json +5 -0
- package/src/smithy/react-connection/schema.json +5 -0
- package/src/smithy/ts/api/schema.json +5 -0
- package/src/terraform/project/schema.json +5 -0
- package/src/trpc/backend/schema.json +5 -0
- package/src/trpc/react/schema.json +5 -0
- package/src/ts/agent/a2a-connection/schema.json +5 -0
- package/src/ts/agent/gateway-connection/schema.json +31 -0
- package/src/ts/agent/mcp-connection/schema.json +5 -0
- package/src/ts/agent/react-connection/schema.json +5 -0
- package/src/ts/agent/schema.json +5 -0
- package/src/ts/api/schema.json +5 -0
- package/src/ts/astro-docs/schema.json +3 -3
- package/src/ts/docs/schema.json +3 -3
- package/src/ts/dynamodb/agent-connection/schema.json +5 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
- package/src/ts/dynamodb/schema.json +25 -2
- package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
- package/src/ts/lambda-function/schema.json +5 -0
- package/src/ts/lib/schema.json +5 -0
- package/src/ts/mcp-server/schema.json +5 -0
- package/src/ts/nx-generator/schema.json +5 -0
- package/src/ts/nx-plugin/schema.json +5 -0
- package/src/ts/rdb/agent-connection/schema.json +5 -0
- package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
- package/src/ts/rdb/schema.json +6 -1
- package/src/ts/rdb/smithy-connection/schema.json +5 -0
- package/src/ts/rdb/trpc-connection/schema.json +5 -0
- package/src/ts/react-website/app/schema.json +11 -6
- package/src/ts/react-website/cognito-auth/schema.json +5 -0
- package/src/ts/react-website/runtime-config/schema.json +5 -0
- package/src/ts/website/app/schema.json +11 -6
- package/src/ts/website/auth/schema.json +5 -0
- /package/docs/snippets/connection/{lambda-rdb-ssl-requirements.mdx → ts-lambda-rdb-ssl-requirements.mdx} +0 -0
- /package/docs/snippets/connection/{mcp-server-rdb-ssl-requirements.mdx → ts-mcp-server-rdb-ssl-requirements.mdx} +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Engine Version
|
|
3
|
+
---
|
|
4
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
5
|
+
import OptionFilter from '@components/option-filter.astro';
|
|
6
|
+
|
|
7
|
+
Pin a specific Aurora engine version.
|
|
8
|
+
|
|
9
|
+
By default, the generated local database container image matches the default Aurora engine version. If you change the Aurora engine version, it's recommended to also use a matching local container image version for maximum compatibility. See the AWS release notes for [Aurora PostgreSQL versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/aurorapostgresql-release-calendar.html) and [Aurora MySQL versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.Updates.30Updates.html) to identify the corresponding community database version.
|
|
10
|
+
|
|
11
|
+
The local database image is configured in the `localDev.image` field of the generated `config.json` file in your database project root. Update that value when you change engine versions.
|
|
12
|
+
|
|
13
|
+
<OptionFilter when={{ engine: 'postgres' }}>
|
|
14
|
+
<Infrastructure>
|
|
15
|
+
<Fragment slot="cdk">
|
|
16
|
+
|
|
17
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
18
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
19
|
+
|
|
20
|
+
const db = new MyDatabase(this, 'Db', {
|
|
21
|
+
...
|
|
22
|
+
engineVersion: AuroraPostgresEngineVersion.VER_17_7,
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
</Fragment>
|
|
26
|
+
<Fragment slot="terraform">
|
|
27
|
+
|
|
28
|
+
```hcl title="packages/infra/src/main.tf"
|
|
29
|
+
module "my_database" {
|
|
30
|
+
source = "../../common/terraform/src/app/dbs/my-database"
|
|
31
|
+
...
|
|
32
|
+
engine_version = "17.7"
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
</Fragment>
|
|
36
|
+
</Infrastructure>
|
|
37
|
+
</OptionFilter>
|
|
38
|
+
|
|
39
|
+
<OptionFilter when={{ engine: 'mysql' }}>
|
|
40
|
+
<Infrastructure>
|
|
41
|
+
<Fragment slot="cdk">
|
|
42
|
+
|
|
43
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
44
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
45
|
+
|
|
46
|
+
const db = new MyDatabase(this, 'Db', {
|
|
47
|
+
...
|
|
48
|
+
engineVersion: AuroraMysqlEngineVersion.VER_3_12_0,
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
</Fragment>
|
|
52
|
+
<Fragment slot="terraform">
|
|
53
|
+
|
|
54
|
+
```hcl title="packages/infra/src/main.tf"
|
|
55
|
+
module "my_database" {
|
|
56
|
+
source = "../../common/terraform/src/app/dbs/my-database"
|
|
57
|
+
...
|
|
58
|
+
engine_version = "8.0.mysql_aurora.3.12.0"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
</Fragment>
|
|
62
|
+
</Infrastructure>
|
|
63
|
+
</OptionFilter>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: RDB Infrastructure
|
|
3
|
+
---
|
|
4
|
+
import { FileTree } from '@astrojs/starlight/components';
|
|
5
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
6
|
+
import Snippet from '@components/snippet.astro';
|
|
7
|
+
|
|
8
|
+
<Snippet name="shared-constructs" />
|
|
9
|
+
|
|
10
|
+
<Infrastructure>
|
|
11
|
+
<Fragment slot="cdk">
|
|
12
|
+
<FileTree>
|
|
13
|
+
- packages/common/constructs/src
|
|
14
|
+
- app
|
|
15
|
+
- dbs
|
|
16
|
+
- \<name>.ts Infrastructure specific to your database
|
|
17
|
+
- core
|
|
18
|
+
- rdb
|
|
19
|
+
- aurora.ts Generic Aurora database construct
|
|
20
|
+
</FileTree>
|
|
21
|
+
</Fragment>
|
|
22
|
+
<Fragment slot="terraform">
|
|
23
|
+
<FileTree>
|
|
24
|
+
- packages/common/terraform/src
|
|
25
|
+
- app
|
|
26
|
+
- dbs
|
|
27
|
+
- \<name>
|
|
28
|
+
- \<name>.tf Module specific to your database
|
|
29
|
+
- core
|
|
30
|
+
- rdb
|
|
31
|
+
- aurora
|
|
32
|
+
- aurora.tf Generic Aurora module
|
|
33
|
+
</FileTree>
|
|
34
|
+
</Fragment>
|
|
35
|
+
</Infrastructure>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Logging and Monitoring
|
|
3
|
+
---
|
|
4
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
5
|
+
|
|
6
|
+
Performance Insights is enabled on the Aurora writer instance by default (encrypted with the cluster's KMS key). You can also export the Aurora engine logs to [CloudWatch Logs](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html) (`postgresql` for [Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.CloudWatch.html); `audit`, `error`, `general` and `slowquery` for [Aurora MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.CloudWatch.html)). Enable log export per database:
|
|
7
|
+
|
|
8
|
+
<Infrastructure>
|
|
9
|
+
<Fragment slot="cdk">
|
|
10
|
+
|
|
11
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
12
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
13
|
+
|
|
14
|
+
const db = new MyDatabase(this, 'Db', {
|
|
15
|
+
...
|
|
16
|
+
enableCloudwatchLogs: true,
|
|
17
|
+
enablePerformanceInsights: false, // disable if not required
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
</Fragment>
|
|
21
|
+
<Fragment slot="terraform">
|
|
22
|
+
|
|
23
|
+
```hcl title="packages/infra/src/main.tf"
|
|
24
|
+
module "my_database" {
|
|
25
|
+
source = "../../common/terraform/src/app/dbs/my-database"
|
|
26
|
+
...
|
|
27
|
+
enable_cloudwatch_logs = true
|
|
28
|
+
enable_performance_insights = false # disable if not required
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
</Fragment>
|
|
32
|
+
</Infrastructure>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: RDS Proxy Configuration
|
|
3
|
+
---
|
|
4
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
5
|
+
|
|
6
|
+
The generated infrastructure includes an [RDS Proxy](https://aws.amazon.com/rds/proxy/) by default, which sits between your application and the Aurora cluster. RDS Proxy provides several benefits:
|
|
7
|
+
|
|
8
|
+
- **Connection pooling** - Maintains a pool of database connections that can be shared across application instances, reducing the overhead of establishing new connections
|
|
9
|
+
- **Connection resilience** - Automatically handles failovers and reconnects during Aurora instance replacements or maintenance
|
|
10
|
+
- **IAM authentication** - Supports IAM-based database authentication, eliminating the need to manage database credentials in your application code
|
|
11
|
+
- **Improved security** - Enforces TLS encryption for all connections
|
|
12
|
+
|
|
13
|
+
:::note[Additional Cost]
|
|
14
|
+
RDS Proxy is enabled by default but incurs additional charges on top of the Aurora cluster cost. See [AWS RDS Proxy pricing](https://aws.amazon.com/rds/proxy/pricing/) for details. If you would prefer to disable the proxy, see the section below.
|
|
15
|
+
:::
|
|
16
|
+
|
|
17
|
+
#### Disable RDS Proxy
|
|
18
|
+
|
|
19
|
+
You can disable the RDS proxy as follows:
|
|
20
|
+
|
|
21
|
+
<Infrastructure>
|
|
22
|
+
<Fragment slot="cdk">
|
|
23
|
+
|
|
24
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
25
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
26
|
+
|
|
27
|
+
const db = new MyDatabase(this, 'Db', {
|
|
28
|
+
...
|
|
29
|
+
enableRdsProxy: false,
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
When RDS Proxy is disabled, your application connects directly to the Aurora cluster endpoint.
|
|
34
|
+
</Fragment>
|
|
35
|
+
<Fragment slot="terraform">
|
|
36
|
+
|
|
37
|
+
By default, RDS Proxy is enabled. You can disable it if needed:
|
|
38
|
+
|
|
39
|
+
```hcl title="packages/infra/src/main.tf"
|
|
40
|
+
module "my_database" {
|
|
41
|
+
source = "../../common/terraform/src/app/dbs/my-database"
|
|
42
|
+
...
|
|
43
|
+
enable_rds_proxy = false
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
When RDS Proxy is disabled, your application connects directly to the Aurora cluster endpoint.
|
|
48
|
+
</Fragment>
|
|
49
|
+
</Infrastructure>
|
|
50
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Removal Policy
|
|
3
|
+
---
|
|
4
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
5
|
+
|
|
6
|
+
The CDK construct retains the Aurora cluster by default (`removalPolicy: RemovalPolicy.RETAIN`). Change this when you want CDK stack deletion to snapshot or destroy the cluster instead.
|
|
7
|
+
|
|
8
|
+
When using `RemovalPolicy.DESTROY`, deletion protection must also be disabled before the cluster can be deleted.
|
|
9
|
+
|
|
10
|
+
<Infrastructure>
|
|
11
|
+
<Fragment slot="cdk">
|
|
12
|
+
|
|
13
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
14
|
+
import { RemovalPolicy } from 'aws-cdk-lib';
|
|
15
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
16
|
+
|
|
17
|
+
const db = new MyDatabase(this, 'Db', {
|
|
18
|
+
...
|
|
19
|
+
removalPolicy: RemovalPolicy.SNAPSHOT,
|
|
20
|
+
});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
For an ephemeral environment where the database should be deleted with the stack:
|
|
24
|
+
|
|
25
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
26
|
+
import { RemovalPolicy } from 'aws-cdk-lib';
|
|
27
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
28
|
+
|
|
29
|
+
const db = new MyDatabase(this, 'Db', {
|
|
30
|
+
...
|
|
31
|
+
deletionProtection: false,
|
|
32
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
::::caution[Data Loss]
|
|
37
|
+
`RemovalPolicy.DESTROY` will permanently erase all data when the stack is deleted. Use only in ephemeral environments (such as automated tests). Use `RETAIN` or `SNAPSHOT` for all persistent and production stacks to prevent data loss.
|
|
38
|
+
::::
|
|
39
|
+
</Fragment>
|
|
40
|
+
<Fragment slot="terraform">
|
|
41
|
+
|
|
42
|
+
Terraform does not use CDK removal policies. By default, the module creates a final snapshot on deletion (`skip_final_snapshot = false`). To skip the final snapshot for an ephemeral environment:
|
|
43
|
+
|
|
44
|
+
```hcl title="packages/infra/src/main.tf"
|
|
45
|
+
module "my_database" {
|
|
46
|
+
source = "../../common/terraform/src/app/dbs/my-database"
|
|
47
|
+
...
|
|
48
|
+
deletion_protection = false
|
|
49
|
+
skip_final_snapshot = true
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
::::caution[Data Loss]
|
|
54
|
+
`skip_final_snapshot = true` will permanently erase all data when the cluster is deleted. Use only in ephemeral environments (such as automated tests). Keep `skip_final_snapshot = false` for all persistent and production stacks to prevent data loss.
|
|
55
|
+
::::
|
|
56
|
+
</Fragment>
|
|
57
|
+
</Infrastructure>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Serverless Capacity
|
|
3
|
+
---
|
|
4
|
+
import Infrastructure from '@components/infrastructure.astro';
|
|
5
|
+
|
|
6
|
+
Control Aurora Serverless v2 scaling limits to match your workload.
|
|
7
|
+
|
|
8
|
+
<Infrastructure>
|
|
9
|
+
<Fragment slot="cdk">
|
|
10
|
+
|
|
11
|
+
```ts title="packages/infra/src/stacks/application-stack.ts"
|
|
12
|
+
import { MyDatabase } from ':my-scope/common-constructs';
|
|
13
|
+
|
|
14
|
+
const db = new MyDatabase(this, 'Db', {
|
|
15
|
+
...
|
|
16
|
+
serverlessV2MinCapacity: 0.5,
|
|
17
|
+
serverlessV2MaxCapacity: 8,
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
</Fragment>
|
|
21
|
+
<Fragment slot="terraform">
|
|
22
|
+
|
|
23
|
+
```hcl title="packages/infra/src/main.tf"
|
|
24
|
+
module "my_database" {
|
|
25
|
+
source = "../../common/terraform/src/app/dbs/my-database"
|
|
26
|
+
...
|
|
27
|
+
serverless_min_capacity = 0.5
|
|
28
|
+
serverless_max_capacity = 8
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
</Fragment>
|
|
32
|
+
</Infrastructure>
|
|
@@ -4,7 +4,7 @@ title: Required Prerequisites
|
|
|
4
4
|
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
|
|
5
5
|
- [Node >= 22](https://nodejs.org/en/download) (We recommend using something like [NVM](https://github.com/nvm-sh/nvm) to manage your node versions)
|
|
6
6
|
- verify by running `node --version`
|
|
7
|
-
- [PNPM >=
|
|
7
|
+
- [PNPM >= 11](https://pnpm.io/installation#using-npm) (you can also use [Yarn >= 4](https://yarnpkg.com/getting-started/install), [Bun >= 1](https://bun.sh/docs/installation), or [NPM >= 10](https://nodejs.org/en/learn/getting-started/an-introduction-to-the-npm-package-manager) if you prefer)
|
|
8
8
|
- verify by running `pnpm --version`, `yarn --version`, `bun --version` or `npm --version`
|
|
9
9
|
- [UV >= 0.5.29](https://docs.astral.sh/uv/getting-started/installation/)
|
|
10
10
|
1. install Python 3.14 by running: `uv python install 3.14.0`
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Container Image Scanning
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
The Docker image built for this project is scanned for vulnerabilities as part of the build using [Trivy](https://trivy.dev/), running from the [ECR-hosted Trivy image](https://gallery.ecr.aws/aquasecurity/trivy).
|
|
6
|
+
|
|
7
|
+
A `trivy` target is added to your project which scans the built image and **fails the build** if any `HIGH` or `CRITICAL` severity vulnerability is found. The generated `Dockerfile` uses a base image with no known fixable vulnerabilities of these severities at time of generation, and upgrades bundled tooling (such as `npm`) to keep it that way.
|
|
8
|
+
|
|
9
|
+
The scan uses the same container engine as your image build (`docker` or `finch`), so no additional tooling is required. Since the scan is only re-run when the image changes, an unchanged image is not re-scanned.
|
|
10
|
+
|
|
11
|
+
:::caution[Unfixable vulnerabilities are ignored]
|
|
12
|
+
The scan runs with `--ignore-unfixed`, so vulnerabilities without an available fix do not fail the build, since they cannot be actioned by upgrading tooling in your `Dockerfile` — they are not reported in the build's scan output. As new vulnerabilities are disclosed the result of scans may change over time, so review the image periodically by running `trivy image <your-image>` without the flag, and rebuild against a newer base image (or add container steps to apply available patches) once a fix is published.
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
#### Suppressing Trivy Findings
|
|
16
|
+
|
|
17
|
+
There may be instances where you want to suppress a specific vulnerability, for example when no fix is yet available and you have assessed the risk as acceptable.
|
|
18
|
+
|
|
19
|
+
Add the vulnerability ID (one per line) to the `.trivyignore` file in the root of your project (i.e. next to your `project.json`):
|
|
20
|
+
|
|
21
|
+
```gitignore
|
|
22
|
+
# .trivyignore
|
|
23
|
+
# node-tar arbitrary file write - not exploitable in our usage
|
|
24
|
+
CVE-2024-XXXXX
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
For more details on filtering findings, refer to the [Trivy filtering documentation](https://trivy.dev/latest/docs/configuration/filtering/#by-finding-ids).
|
package/generators.json
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
"name": "@aws/nx-plugin",
|
|
4
4
|
"version": "0.0.1",
|
|
5
5
|
"generators": {
|
|
6
|
+
"init": {
|
|
7
|
+
"factory": "./src/init/generator",
|
|
8
|
+
"schema": "./src/init/schema.json",
|
|
9
|
+
"description": "Configure an existing Nx workspace to use the @aws/nx-plugin",
|
|
10
|
+
"metric": "g57",
|
|
11
|
+
"guidePages": ["existing-project"]
|
|
12
|
+
},
|
|
13
|
+
"agentcore-gateway": {
|
|
14
|
+
"factory": "./src/agentcore-gateway/generator",
|
|
15
|
+
"schema": "./src/agentcore-gateway/schema.json",
|
|
16
|
+
"description": "Generate an AgentCore Gateway project",
|
|
17
|
+
"metric": "g48"
|
|
18
|
+
},
|
|
19
|
+
"agentcore-gateway#mcp-connection": {
|
|
20
|
+
"factory": "./src/agentcore-gateway/mcp-connection/generator",
|
|
21
|
+
"schema": "./src/agentcore-gateway/mcp-connection/schema.json",
|
|
22
|
+
"description": "Connect an AgentCore Gateway to an MCP server",
|
|
23
|
+
"metric": "g49",
|
|
24
|
+
"hidden": true
|
|
25
|
+
},
|
|
26
|
+
"agentcore-gateway#gateway-connection": {
|
|
27
|
+
"factory": "./src/agentcore-gateway/gateway-connection/generator",
|
|
28
|
+
"schema": "./src/agentcore-gateway/gateway-connection/schema.json",
|
|
29
|
+
"description": "Connect an AgentCore Gateway to another AgentCore Gateway",
|
|
30
|
+
"metric": "g52",
|
|
31
|
+
"hidden": true
|
|
32
|
+
},
|
|
6
33
|
"connection": {
|
|
7
34
|
"factory": "./src/connection/generator",
|
|
8
35
|
"schema": "./src/connection/schema.json",
|
|
@@ -23,7 +50,11 @@
|
|
|
23
50
|
"connection/trpc-rdb",
|
|
24
51
|
"connection/smithy-rdb",
|
|
25
52
|
"connection/ts-mcp-server-rdb",
|
|
26
|
-
"connection/ts-agent-rdb"
|
|
53
|
+
"connection/ts-agent-rdb",
|
|
54
|
+
"connection/ts-agent-gateway",
|
|
55
|
+
"connection/py-agent-gateway",
|
|
56
|
+
"connection/agentcore-gateway-mcp",
|
|
57
|
+
"connection/agentcore-gateway-gateway"
|
|
27
58
|
]
|
|
28
59
|
},
|
|
29
60
|
"license": {
|
|
@@ -279,6 +310,13 @@
|
|
|
279
310
|
"metric": "g35",
|
|
280
311
|
"hidden": true
|
|
281
312
|
},
|
|
313
|
+
"ts#agent#gateway-connection": {
|
|
314
|
+
"factory": "./src/ts/agent/gateway-connection/generator",
|
|
315
|
+
"schema": "./src/ts/agent/gateway-connection/schema.json",
|
|
316
|
+
"description": "Connect a TypeScript Agent to an AgentCore Gateway",
|
|
317
|
+
"metric": "g50",
|
|
318
|
+
"hidden": true
|
|
319
|
+
},
|
|
282
320
|
"py#agent#a2a-connection": {
|
|
283
321
|
"factory": "./src/py/agent/a2a-connection/generator",
|
|
284
322
|
"schema": "./src/py/agent/a2a-connection/schema.json",
|
|
@@ -286,6 +324,13 @@
|
|
|
286
324
|
"metric": "g36",
|
|
287
325
|
"hidden": true
|
|
288
326
|
},
|
|
327
|
+
"py#agent#gateway-connection": {
|
|
328
|
+
"factory": "./src/py/agent/gateway-connection/generator",
|
|
329
|
+
"schema": "./src/py/agent/gateway-connection/schema.json",
|
|
330
|
+
"description": "Connect a Python Agent to an AgentCore Gateway",
|
|
331
|
+
"metric": "g51",
|
|
332
|
+
"hidden": true
|
|
333
|
+
},
|
|
289
334
|
"ts#sync": {
|
|
290
335
|
"factory": "./src/ts/sync/generator",
|
|
291
336
|
"schema": "./src/ts/sync/schema.json",
|
|
@@ -353,7 +398,7 @@
|
|
|
353
398
|
"ts#dynamodb": {
|
|
354
399
|
"factory": "./src/ts/dynamodb/generator",
|
|
355
400
|
"schema": "./src/ts/dynamodb/schema.json",
|
|
356
|
-
"description": "Create a DynamoDB project",
|
|
401
|
+
"description": "Create a TypeScript DynamoDB project",
|
|
357
402
|
"metric": "g43"
|
|
358
403
|
},
|
|
359
404
|
"ts#dynamodb#trpc-connection": {
|
|
@@ -383,6 +428,60 @@
|
|
|
383
428
|
"description": "Connect a ts#mcp-server to a ts#dynamodb project",
|
|
384
429
|
"metric": "g47",
|
|
385
430
|
"hidden": true
|
|
431
|
+
},
|
|
432
|
+
"py#dynamodb": {
|
|
433
|
+
"factory": "./src/py/dynamodb/generator",
|
|
434
|
+
"schema": "./src/py/dynamodb/schema.json",
|
|
435
|
+
"description": "Create a Python DynamoDB project",
|
|
436
|
+
"metric": "g52"
|
|
437
|
+
},
|
|
438
|
+
"py#dynamodb#fast-api-connection": {
|
|
439
|
+
"factory": "./src/py/dynamodb/fast-api-connection/generator",
|
|
440
|
+
"schema": "./src/py/dynamodb/fast-api-connection/schema.json",
|
|
441
|
+
"description": "Connect a py#fast-api project to a py#dynamodb project",
|
|
442
|
+
"metric": "g53",
|
|
443
|
+
"hidden": true
|
|
444
|
+
},
|
|
445
|
+
"py#dynamodb#agent-connection": {
|
|
446
|
+
"factory": "./src/py/dynamodb/agent-connection/generator",
|
|
447
|
+
"schema": "./src/py/dynamodb/agent-connection/schema.json",
|
|
448
|
+
"description": "Connect a py#agent to a py#dynamodb project",
|
|
449
|
+
"metric": "g54",
|
|
450
|
+
"hidden": true
|
|
451
|
+
},
|
|
452
|
+
"py#dynamodb#mcp-server-connection": {
|
|
453
|
+
"factory": "./src/py/dynamodb/mcp-server-connection/generator",
|
|
454
|
+
"schema": "./src/py/dynamodb/mcp-server-connection/schema.json",
|
|
455
|
+
"description": "Connect a py#mcp-server to a py#dynamodb project",
|
|
456
|
+
"metric": "g55",
|
|
457
|
+
"hidden": true
|
|
458
|
+
},
|
|
459
|
+
"py#rdb": {
|
|
460
|
+
"factory": "./src/py/rdb/generator",
|
|
461
|
+
"schema": "./src/py/rdb/schema.json",
|
|
462
|
+
"description": "Create a Python relational database project",
|
|
463
|
+
"metric": "g56"
|
|
464
|
+
},
|
|
465
|
+
"py#rdb#fast-api-connection": {
|
|
466
|
+
"factory": "./src/py/rdb/fast-api-connection/generator",
|
|
467
|
+
"schema": "./src/py/rdb/fast-api-connection/schema.json",
|
|
468
|
+
"description": "Connect a py#fast-api project to a py#rdb project",
|
|
469
|
+
"metric": "g57",
|
|
470
|
+
"hidden": true
|
|
471
|
+
},
|
|
472
|
+
"py#rdb#agent-connection": {
|
|
473
|
+
"factory": "./src/py/rdb/agent-connection/generator",
|
|
474
|
+
"schema": "./src/py/rdb/agent-connection/schema.json",
|
|
475
|
+
"description": "Connect a py#agent to a py#rdb project",
|
|
476
|
+
"metric": "g58",
|
|
477
|
+
"hidden": true
|
|
478
|
+
},
|
|
479
|
+
"py#rdb#mcp-server-connection": {
|
|
480
|
+
"factory": "./src/py/rdb/mcp-server-connection/generator",
|
|
481
|
+
"schema": "./src/py/rdb/mcp-server-connection/schema.json",
|
|
482
|
+
"description": "Connect a py#mcp-server to a py#rdb project",
|
|
483
|
+
"metric": "g59",
|
|
484
|
+
"hidden": true
|
|
386
485
|
}
|
|
387
486
|
}
|
|
388
487
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "agentcore-gateway#gateway-connection",
|
|
4
|
+
"title": "agentcore-gateway#gateway-connection",
|
|
5
|
+
"description": "Connect an AgentCore Gateway to another AgentCore Gateway",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"sourceProject": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "The gateway project to add the target gateway to"
|
|
11
|
+
},
|
|
12
|
+
"targetProject": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "The gateway project to register as a target"
|
|
15
|
+
},
|
|
16
|
+
"sourceComponent": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "The gateway component in the source project"
|
|
19
|
+
},
|
|
20
|
+
"targetComponent": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "The gateway component in the target project"
|
|
23
|
+
},
|
|
24
|
+
"preferInstallDependencies": {
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
|
|
27
|
+
"default": true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"required": ["sourceProject", "targetProject"]
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "agentcore-gateway#mcp-connection",
|
|
4
|
+
"title": "agentcore-gateway#mcp-connection",
|
|
5
|
+
"description": "Connect an AgentCore Gateway to an MCP server",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"sourceProject": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "The gateway project"
|
|
11
|
+
},
|
|
12
|
+
"targetProject": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "The MCP server project"
|
|
15
|
+
},
|
|
16
|
+
"sourceComponent": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "The gateway component in the source project"
|
|
19
|
+
},
|
|
20
|
+
"targetComponent": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "The MCP server component in the target project"
|
|
23
|
+
},
|
|
24
|
+
"preferInstallDependencies": {
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
|
|
27
|
+
"default": true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"required": ["sourceProject", "targetProject"]
|
|
31
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "agentcore-gateway",
|
|
4
|
+
"title": "agentcore-gateway",
|
|
5
|
+
"description": "Generate an AgentCore Gateway project",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "The name of your AgentCore Gateway project",
|
|
11
|
+
"$default": {
|
|
12
|
+
"$source": "argv",
|
|
13
|
+
"index": 0
|
|
14
|
+
},
|
|
15
|
+
"x-prompt": "What would you like to call your AgentCore Gateway?",
|
|
16
|
+
"x-priority": "important"
|
|
17
|
+
},
|
|
18
|
+
"directory": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Parent directory where the gateway project is placed.",
|
|
21
|
+
"default": "packages"
|
|
22
|
+
},
|
|
23
|
+
"subDirectory": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "The sub directory the project is placed in. By default this is the project name."
|
|
26
|
+
},
|
|
27
|
+
"protocol": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"description": "The inbound protocol exposed by your gateway. Only mcp is supported today; additional protocols may be added in future.",
|
|
30
|
+
"enum": ["mcp"],
|
|
31
|
+
"default": "mcp",
|
|
32
|
+
"x-priority": "important"
|
|
33
|
+
},
|
|
34
|
+
"auth": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "The method used to authenticate inbound requests to your gateway. Only iam is supported today; cognito and custom-jwt may be added in future.",
|
|
37
|
+
"enum": ["iam"],
|
|
38
|
+
"default": "iam",
|
|
39
|
+
"x-priority": "important"
|
|
40
|
+
},
|
|
41
|
+
"cedarPolicy": {
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"description": "Whether to include a Cedar policy engine enforcing fine-grained authorization on the gateway.",
|
|
44
|
+
"default": true,
|
|
45
|
+
"x-priority": "important"
|
|
46
|
+
},
|
|
47
|
+
"infra": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "The type of infrastructure to host your gateway. Select none for no hosting.",
|
|
50
|
+
"x-prompt": "How would you like to host your gateway?",
|
|
51
|
+
"enum": ["agentcore", "none"],
|
|
52
|
+
"default": "agentcore",
|
|
53
|
+
"x-priority": "important"
|
|
54
|
+
},
|
|
55
|
+
"iac": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "The preferred IaC provider. By default this is inherited from your initial selection.",
|
|
58
|
+
"enum": ["inherit", "cdk", "terraform"],
|
|
59
|
+
"x-priority": "important",
|
|
60
|
+
"default": "inherit",
|
|
61
|
+
"x-prompt": "Which provider would you like to manage your infrastructure? (default: inherit)"
|
|
62
|
+
},
|
|
63
|
+
"preferInstallDependencies": {
|
|
64
|
+
"type": "boolean",
|
|
65
|
+
"description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
|
|
66
|
+
"default": true
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"required": ["name"]
|
|
70
|
+
}
|
|
@@ -27,6 +27,11 @@
|
|
|
27
27
|
"targetComponent": {
|
|
28
28
|
"type": "string",
|
|
29
29
|
"description": "The target component to connect to (component name, path relative to target project root, or generator id). Use '.' to explicitly select the project as the target."
|
|
30
|
+
},
|
|
31
|
+
"preferInstallDependencies": {
|
|
32
|
+
"type": "boolean",
|
|
33
|
+
"description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
|
|
34
|
+
"default": true
|
|
30
35
|
}
|
|
31
36
|
},
|
|
32
37
|
"required": ["sourceProject", "targetProject"]
|
|
@@ -32,6 +32,11 @@
|
|
|
32
32
|
"type": "boolean",
|
|
33
33
|
"default": false,
|
|
34
34
|
"x-prompt": "Would you like to enable centralized stage credential configuration?"
|
|
35
|
+
},
|
|
36
|
+
"preferInstallDependencies": {
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
|
|
39
|
+
"default": true
|
|
35
40
|
}
|
|
36
41
|
},
|
|
37
42
|
"required": ["name"]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "init",
|
|
4
|
+
"title": "init",
|
|
5
|
+
"description": "Configure an existing Nx workspace to use the @aws/nx-plugin.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"iac": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "The preferred IaC provider.",
|
|
11
|
+
"enum": ["cdk", "terraform"],
|
|
12
|
+
"default": "cdk",
|
|
13
|
+
"x-priority": "important",
|
|
14
|
+
"x-prompt": "Which provider would you like to manage your infrastructure?"
|
|
15
|
+
},
|
|
16
|
+
"mcp": {
|
|
17
|
+
"type": "boolean",
|
|
18
|
+
"description": "Whether to configure the Nx Plugin for AWS MCP server for use by coding agents.",
|
|
19
|
+
"default": true
|
|
20
|
+
},
|
|
21
|
+
"containers": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "The container engine to use for build/push/login. 'infer' picks docker if installed, otherwise finch (falling back to docker when neither is installed).",
|
|
24
|
+
"enum": ["infer", "docker", "finch"],
|
|
25
|
+
"default": "infer",
|
|
26
|
+
"x-priority": "important",
|
|
27
|
+
"x-prompt": "Which container engine would you like to use? (default: infer)"
|
|
28
|
+
},
|
|
29
|
+
"preferInstallDependencies": {
|
|
30
|
+
"type": "boolean",
|
|
31
|
+
"description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
|
|
32
|
+
"default": true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|