@aws/nx-plugin 0.118.0 → 0.119.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/infra/app/generator.js +30 -18
- package/src/infra/app/generator.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +5 -0
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.js +3 -3
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +5 -1
- package/src/preset/generator.d.ts +1 -1
- package/src/preset/generator.js +29 -3
- package/src/preset/generator.js.map +1 -1
- package/src/preset/git-secrets-files/git-secrets-dir/git-secrets +206 -0
- package/src/preset/git-secrets-files/husky-dir/pre-commit +4 -0
- package/src/preset/schema.d.ts +5 -0
- package/src/preset/schema.json +13 -0
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/agent/generator.js +4 -1
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/mcp-server/generator.js +4 -1
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/smithy/project/generator.js +3 -1
- package/src/smithy/project/generator.js.map +1 -1
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/agent/generator.js +4 -1
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/mcp-server/generator.js +4 -1
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +128 -107
- package/src/ts/rdb/files/scripts/docker-pull.ts.template +11 -11
- package/src/ts/rdb/files/scripts/docker-start.ts.template +58 -56
- package/src/ts/rdb/generator.js +5 -6
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +4 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.js +3 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +6 -6
- package/src/utils/config/index.d.ts +6 -0
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/containers.d.ts +29 -0
- package/src/utils/containers.js +47 -0
- package/src/utils/containers.js.map +1 -0
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +2 -0
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/versions.d.ts +8 -3
- package/src/utils/versions.js +8 -3
- package/src/utils/versions.js.map +1 -1
package/package.json
CHANGED
|
@@ -23,10 +23,22 @@ const metrics_1 = require("../../utils/metrics");
|
|
|
23
23
|
const names_1 = require("../../utils/names");
|
|
24
24
|
const pkg_manager_1 = require("../../utils/pkg-manager");
|
|
25
25
|
const py_1 = require("../../utils/py");
|
|
26
|
+
const containers_1 = require("../../utils/containers");
|
|
26
27
|
exports.INFRA_APP_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
27
28
|
async function tsInfraGenerator(tree, schema) {
|
|
28
29
|
const lib = (0, generator_1.getTsLibDetails)(tree, schema);
|
|
29
30
|
await (0, generator_1.default)(tree, schema);
|
|
31
|
+
// CDK shells out to a container engine to build image assets. Default
|
|
32
|
+
// (docker) needs no env override; finch is set via CDK_DOCKER per
|
|
33
|
+
// https://docs.aws.amazon.com/cdk/v2/guide/build-containers.html#build-container-replace.
|
|
34
|
+
const containerEngine = await (0, containers_1.resolveContainerEngine)(tree, 'Inherit');
|
|
35
|
+
const cdkEnv = containerEngine === 'docker' ? undefined : { CDK_DOCKER: containerEngine };
|
|
36
|
+
const withCdkEnv = (opts) => {
|
|
37
|
+
if (!cdkEnv)
|
|
38
|
+
return opts;
|
|
39
|
+
const existingEnv = opts.env ?? {};
|
|
40
|
+
return { ...opts, env: { ...existingEnv, ...cdkEnv } };
|
|
41
|
+
};
|
|
30
42
|
(0, nx_1.addGeneratorMetadata)(tree, lib.fullyQualifiedName, exports.INFRA_APP_GENERATOR_INFO);
|
|
31
43
|
// Shared constructs always in CDK for typescript infra generator
|
|
32
44
|
await (0, shared_constructs_1.sharedConstructsGenerator)(tree, {
|
|
@@ -81,10 +93,10 @@ async function tsInfraGenerator(tree, schema) {
|
|
|
81
93
|
inputs: ['default'],
|
|
82
94
|
outputs: ['{workspaceRoot}/dist/{projectRoot}/cdk.out'],
|
|
83
95
|
dependsOn: ['^build', 'compile'], // compile clobbers dist directory, so ensure synth runs afterwards
|
|
84
|
-
options: {
|
|
96
|
+
options: withCdkEnv({
|
|
85
97
|
cwd: '{projectRoot}',
|
|
86
98
|
command: 'cdk synth',
|
|
87
|
-
},
|
|
99
|
+
}),
|
|
88
100
|
};
|
|
89
101
|
config.targets.checkov = {
|
|
90
102
|
cache: true,
|
|
@@ -100,53 +112,53 @@ async function tsInfraGenerator(tree, schema) {
|
|
|
100
112
|
executor: 'nx:run-commands',
|
|
101
113
|
dependsOn: ['^build', 'compile'],
|
|
102
114
|
options: enableStageConfig
|
|
103
|
-
? {
|
|
115
|
+
? withCdkEnv({
|
|
104
116
|
command: `tsx packages/common/scripts/src/infra-deploy.ts ${libraryRoot}`,
|
|
105
|
-
}
|
|
106
|
-
: {
|
|
117
|
+
})
|
|
118
|
+
: withCdkEnv({
|
|
107
119
|
cwd: '{projectRoot}',
|
|
108
120
|
command: 'cdk deploy --require-approval=never',
|
|
109
|
-
},
|
|
121
|
+
}),
|
|
110
122
|
};
|
|
111
123
|
config.targets['deploy-ci'] = {
|
|
112
124
|
executor: 'nx:run-commands',
|
|
113
|
-
options: {
|
|
125
|
+
options: withCdkEnv({
|
|
114
126
|
cwd: '{projectRoot}',
|
|
115
127
|
command: `cdk deploy --require-approval=never --app ${distDirFromProjectRoot}`,
|
|
116
|
-
},
|
|
128
|
+
}),
|
|
117
129
|
};
|
|
118
130
|
config.targets.destroy = {
|
|
119
131
|
executor: 'nx:run-commands',
|
|
120
132
|
dependsOn: ['^build', 'compile'],
|
|
121
133
|
options: enableStageConfig
|
|
122
|
-
? {
|
|
134
|
+
? withCdkEnv({
|
|
123
135
|
command: `tsx packages/common/scripts/src/infra-destroy.ts ${libraryRoot}`,
|
|
124
|
-
}
|
|
125
|
-
: {
|
|
136
|
+
})
|
|
137
|
+
: withCdkEnv({
|
|
126
138
|
cwd: '{projectRoot}',
|
|
127
139
|
command: 'cdk destroy --require-approval=never',
|
|
128
|
-
},
|
|
140
|
+
}),
|
|
129
141
|
};
|
|
130
142
|
config.targets['destroy-ci'] = {
|
|
131
143
|
executor: 'nx:run-commands',
|
|
132
|
-
options: {
|
|
144
|
+
options: withCdkEnv({
|
|
133
145
|
cwd: '{projectRoot}',
|
|
134
146
|
command: `cdk destroy --require-approval=never --app ${distDirFromProjectRoot}`,
|
|
135
|
-
},
|
|
147
|
+
}),
|
|
136
148
|
};
|
|
137
149
|
config.targets.cdk = {
|
|
138
150
|
executor: 'nx:run-commands',
|
|
139
|
-
options: {
|
|
151
|
+
options: withCdkEnv({
|
|
140
152
|
cwd: '{projectRoot}',
|
|
141
153
|
command: 'cdk',
|
|
142
|
-
},
|
|
154
|
+
}),
|
|
143
155
|
};
|
|
144
156
|
config.targets.bootstrap = {
|
|
145
157
|
executor: 'nx:run-commands',
|
|
146
|
-
options: {
|
|
158
|
+
options: withCdkEnv({
|
|
147
159
|
cwd: '{projectRoot}',
|
|
148
160
|
command: 'cdk bootstrap',
|
|
149
|
-
},
|
|
161
|
+
}),
|
|
150
162
|
};
|
|
151
163
|
config.targets = (0, object_1.sortObjectKeys)(config.targets);
|
|
152
164
|
return config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/infra/app/generator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/infra/app/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,11 @@ ${(0, commands_1.buildCreateNxWorkspaceCommand)(packageManager, '.')} --no-inter
|
|
|
33
33
|
|
|
34
34
|
Note that this will prompt for an Infrastructure as Code provider (${iac_providers_1.IAC_PROVIDERS.join(', ')}).
|
|
35
35
|
If you know the preferred option, pass ${iac_providers_1.IAC_PROVIDERS.map((iac) => `\`--iacProvider=${iac}\``).join(' or ')} to the above command to skip the prompt.
|
|
36
|
+
|
|
37
|
+
Additional options:
|
|
38
|
+
- \`--no-gitSecrets\`: Opt out of the default git-secrets pre-commit hook (prevents committing AWS credentials)
|
|
39
|
+
|
|
40
|
+
Refer to the \`general-guidance\` tool for full workspace documentation including structure, common commands, and configuration.
|
|
36
41
|
`,
|
|
37
42
|
},
|
|
38
43
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-workspace-command.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/mcp-server/tools/create-workspace-command.ts"],"names":[],"mappings":";;;AAKA,sCAAiD;AACjD,6DAA0D;AAC1D,mDAAqE;AAErE;;GAEG;AACI,MAAM,6BAA6B,GAAG,CAAC,MAAiB,EAAE,EAAE;IACjE,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,oEAAoE;QACtE,WAAW,EAAE;YACX,cAAc,EAAE,6BAAoB;SACrC;KACF,EACD,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE;;;EAGd,IAAA,wCAA6B,EAAC,cAAc,EAAE,kBAAkB,CAAC;;;;;;;;EAQjE,IAAA,wCAA6B,EAAC,cAAc,EAAE,GAAG,CAAC;;;qEAGiB,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC;yCACpD,6BAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"create-workspace-command.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/mcp-server/tools/create-workspace-command.ts"],"names":[],"mappings":";;;AAKA,sCAAiD;AACjD,6DAA0D;AAC1D,mDAAqE;AAErE;;GAEG;AACI,MAAM,6BAA6B,GAAG,CAAC,MAAiB,EAAE,EAAE;IACjE,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,oEAAoE;QACtE,WAAW,EAAE;YACX,cAAc,EAAE,6BAAoB;SACrC;KACF,EACD,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE;;;EAGd,IAAA,wCAA6B,EAAC,cAAc,EAAE,kBAAkB,CAAC;;;;;;;;EAQjE,IAAA,wCAA6B,EAAC,cAAc,EAAE,GAAG,CAAC;;;qEAGiB,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC;yCACpD,6BAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;GAMzG;aACM;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAxCW,QAAA,6BAA6B,iCAwCxC"}
|
|
@@ -65,11 +65,11 @@ ${schema_1.PACKAGE_MANAGERS.map((pm) => (0, generator_info_1.buildNxCommand)('<o
|
|
|
65
65
|
- After making changes to your projects, fix linting issues, then run a full build
|
|
66
66
|
- When it's time to start testing a project, suggest to the user that infrastructure is deployed to AWS. For websites, if a runtime-config.json is needed, use the load:runtime-config target after a deployment to point a local website at a sandbox stack.
|
|
67
67
|
|
|
68
|
-
##
|
|
68
|
+
## Detailed Guides
|
|
69
69
|
|
|
70
|
-
Please refer to the below documentation for important details regarding working with
|
|
70
|
+
Please refer to the below documentation for important details regarding workspaces and working with TypeScript or Python projects.
|
|
71
71
|
|
|
72
|
-
${await (0, generator_info_1.fetchGuidePages)(['typescript-project', 'python-project'], generators)}
|
|
72
|
+
${await (0, generator_info_1.fetchGuidePages)(['workspace', 'typescript-project', 'python-project'], generators)}
|
|
73
73
|
|
|
74
74
|
`,
|
|
75
75
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general-guidance.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/mcp-server/tools/general-guidance.ts"],"names":[],"mappings":";;;AAMA,sCAA6C;AAC7C,sDAAoE;AACpE,6DAA0D;AAE7C,QAAA,oBAAoB,GAAG;;;;;gGAK4D,CAAC;AAEjG;;GAEG;AACI,MAAM,sBAAsB,GAAG,CACpC,MAAiB,EACjB,UAA6B,EAC7B,EAAE;IACF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,oFAAoF;KACvF,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE;;EAEd,4BAAoB;;;;2DAIqC,yBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;iFACL,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;EAOvG,yBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,+BAAc,EAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC3E,MAAM,IAAA,gCAAe,EAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC;;
|
|
1
|
+
{"version":3,"file":"general-guidance.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/mcp-server/tools/general-guidance.ts"],"names":[],"mappings":";;;AAMA,sCAA6C;AAC7C,sDAAoE;AACpE,6DAA0D;AAE7C,QAAA,oBAAoB,GAAG;;;;;gGAK4D,CAAC;AAEjG;;GAEG;AACI,MAAM,sBAAsB,GAAG,CACpC,MAAiB,EACjB,UAA6B,EAC7B,EAAE;IACF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,oFAAoF;KACvF,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE;;EAEd,4BAAoB;;;;2DAIqC,yBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;iFACL,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;EAOvG,yBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,+BAAc,EAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC3E,MAAM,IAAA,gCAAe,EAAC,CAAC,WAAW,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC;;KAErF;aACI;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAtEW,QAAA,sBAAsB,0BAsEjC"}
|
|
@@ -168,7 +168,10 @@ Learn more:
|
|
|
168
168
|
exports[`preset generator > should run successfully > aws-nx-plugin.config.mts 1`] = `
|
|
169
169
|
"import { AwsNxPluginConfig } from '@aws/nx-plugin';
|
|
170
170
|
|
|
171
|
-
export default {
|
|
171
|
+
export default {
|
|
172
|
+
iac: { provider: 'CDK' },
|
|
173
|
+
containers: { engine: 'docker' },
|
|
174
|
+
} satisfies AwsNxPluginConfig;
|
|
172
175
|
"
|
|
173
176
|
`;
|
|
174
177
|
|
|
@@ -211,6 +214,7 @@ exports[`preset generator > should run successfully > package.json 1`] = `
|
|
|
211
214
|
"scripts": {
|
|
212
215
|
"build": "nx run-many --target build",
|
|
213
216
|
"lint": "nx run-many --target lint --configuration=fix",
|
|
217
|
+
"test": "nx run-many --target test --all",
|
|
214
218
|
"build:skip-lint": "nx run-many --target build --configuration=skip-lint",
|
|
215
219
|
"build:all": "nx run-many --target build --all",
|
|
216
220
|
"affected:all": "nx affected --target build"
|
|
@@ -29,5 +29,5 @@ export declare const PRESET_GENERATOR_INFO: NxGeneratorInfo;
|
|
|
29
29
|
* isAmazonian(); // false
|
|
30
30
|
*/
|
|
31
31
|
export declare function isAmazonian(): boolean;
|
|
32
|
-
export declare const presetGenerator: (tree: Tree, { addTsPlugin, iacProvider }: PresetGeneratorSchema) => Promise<GeneratorCallback>;
|
|
32
|
+
export declare const presetGenerator: (tree: Tree, { addTsPlugin, iacProvider, gitSecrets, containerEngine, }: PresetGeneratorSchema) => Promise<GeneratorCallback>;
|
|
33
33
|
export default presetGenerator;
|
package/src/preset/generator.js
CHANGED
|
@@ -17,9 +17,11 @@ const package_json_1 = require("nx/src/utils/package-json");
|
|
|
17
17
|
const npm_scope_1 = require("../utils/npm-scope");
|
|
18
18
|
const generators_json_1 = tslib_1.__importDefault(require("../../generators.json"));
|
|
19
19
|
const child_process_1 = require("child_process");
|
|
20
|
+
const fs_1 = require("fs");
|
|
20
21
|
const enquirer = tslib_1.__importStar(require("enquirer"));
|
|
21
22
|
const utils_1 = require("../utils/config/utils");
|
|
22
23
|
const generator_1 = require("../ts/sync/generator");
|
|
24
|
+
const containers_1 = require("../utils/containers");
|
|
23
25
|
const js_yaml_1 = tslib_1.__importDefault(require("js-yaml"));
|
|
24
26
|
const WORKSPACES = ['packages/*'];
|
|
25
27
|
const NX_TYPESCRIPT_SYNC_GENERATOR = '@nx/js:typescript-sync';
|
|
@@ -93,7 +95,24 @@ function isAmazonian() {
|
|
|
93
95
|
return false;
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
|
-
const
|
|
98
|
+
const setUpGitSecrets = (tree) => {
|
|
99
|
+
const gitSecretsDir = (0, devkit_1.joinPathFragments)(__dirname, 'git-secrets-files', 'git-secrets-dir');
|
|
100
|
+
const huskyDir = (0, devkit_1.joinPathFragments)(__dirname, 'git-secrets-files', 'husky-dir');
|
|
101
|
+
tree.write('.git-secrets/git-secrets', (0, fs_1.readFileSync)((0, devkit_1.joinPathFragments)(gitSecretsDir, 'git-secrets'), 'utf-8'));
|
|
102
|
+
tree.write('.husky/pre-commit', (0, fs_1.readFileSync)((0, devkit_1.joinPathFragments)(huskyDir, 'pre-commit'), 'utf-8'));
|
|
103
|
+
(0, devkit_1.updateJson)(tree, 'package.json', (json) => ({
|
|
104
|
+
...json,
|
|
105
|
+
scripts: {
|
|
106
|
+
...json.scripts,
|
|
107
|
+
prepare: 'husky',
|
|
108
|
+
},
|
|
109
|
+
}));
|
|
110
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, {}, (0, versions_1.withVersions)(['husky']));
|
|
111
|
+
};
|
|
112
|
+
const presetGenerator = async (tree, { addTsPlugin, iacProvider, gitSecrets, containerEngine, }) => {
|
|
113
|
+
const resolvedContainerEngine = !containerEngine || containerEngine === 'infer'
|
|
114
|
+
? (0, containers_1.inferContainerEngine)()
|
|
115
|
+
: containerEngine;
|
|
97
116
|
if (isAmazonian() &&
|
|
98
117
|
!process.env.VITEST &&
|
|
99
118
|
!process.env.CI &&
|
|
@@ -112,9 +131,12 @@ const presetGenerator = async (tree, { addTsPlugin, iacProvider }) => {
|
|
|
112
131
|
await (0, utils_1.updateAwsNxPluginConfig)(tree, { tags: [engagementId] });
|
|
113
132
|
}
|
|
114
133
|
}
|
|
115
|
-
// Write IaC provider to plugin config
|
|
134
|
+
// Write IaC provider and container engine to plugin config
|
|
116
135
|
await (0, utils_1.ensureAwsNxPluginConfig)(tree);
|
|
117
|
-
await (0, utils_1.updateAwsNxPluginConfig)(tree, {
|
|
136
|
+
await (0, utils_1.updateAwsNxPluginConfig)(tree, {
|
|
137
|
+
iac: { provider: iacProvider },
|
|
138
|
+
containers: { engine: resolvedContainerEngine },
|
|
139
|
+
});
|
|
118
140
|
await (0, js_1.initGenerator)(tree, {
|
|
119
141
|
formatter: 'prettier',
|
|
120
142
|
addTsPlugin: addTsPlugin ?? true,
|
|
@@ -146,6 +168,7 @@ const presetGenerator = async (tree, { addTsPlugin, iacProvider }) => {
|
|
|
146
168
|
...packageJson.scripts,
|
|
147
169
|
build: 'nx run-many --target build',
|
|
148
170
|
lint: 'nx run-many --target lint --configuration=fix',
|
|
171
|
+
test: 'nx run-many --target test --all',
|
|
149
172
|
'build:skip-lint': 'nx run-many --target build --configuration=skip-lint',
|
|
150
173
|
'build:all': 'nx run-many --target build --all',
|
|
151
174
|
'affected:all': 'nx affected --target build',
|
|
@@ -173,6 +196,9 @@ const presetGenerator = async (tree, { addTsPlugin, iacProvider }) => {
|
|
|
173
196
|
}, {
|
|
174
197
|
overwriteStrategy: devkit_1.OverwriteStrategy.Overwrite,
|
|
175
198
|
});
|
|
199
|
+
if (gitSecrets !== false) {
|
|
200
|
+
setUpGitSecrets(tree);
|
|
201
|
+
}
|
|
176
202
|
await (0, format_1.formatFilesInSubtree)(tree);
|
|
177
203
|
return () => {
|
|
178
204
|
(0, devkit_1.installPackagesTask)(tree);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/preset/generator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/preset/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License").
|
|
5
|
+
# You may not use this file except in compliance with the License.
|
|
6
|
+
# A copy of the License is located at
|
|
7
|
+
#
|
|
8
|
+
# http://aws.amazon.com/apache2.0
|
|
9
|
+
#
|
|
10
|
+
# or in the "license" file accompanying this file. This file is distributed
|
|
11
|
+
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
|
12
|
+
# express or implied. See the License for the specific language governing
|
|
13
|
+
# permissions and limitations under the License.
|
|
14
|
+
|
|
15
|
+
load_patterns() {
|
|
16
|
+
git config --get-all secrets.patterns
|
|
17
|
+
git config --get-all secrets.providers | while read -r cmd; do
|
|
18
|
+
local result="$(export IFS=$'\n\t '; $cmd | tr -d $'\r')"
|
|
19
|
+
if [ -n "${result}" ]; then
|
|
20
|
+
echo "${result}"
|
|
21
|
+
fi
|
|
22
|
+
done
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
load_allowed() {
|
|
26
|
+
git config --get-all secrets.allowed
|
|
27
|
+
local gitallowed="$(git rev-parse --show-toplevel)/.gitallowed"
|
|
28
|
+
if [ -e "$gitallowed" ]; then
|
|
29
|
+
cat "$gitallowed" | awk 'NF && $1!~/^#/'
|
|
30
|
+
fi
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
load_combined_patterns() {
|
|
34
|
+
local patterns=$(load_patterns)
|
|
35
|
+
local combined_patterns=''
|
|
36
|
+
for pattern in $patterns; do
|
|
37
|
+
combined_patterns=${combined_patterns}${pattern}"|"
|
|
38
|
+
done
|
|
39
|
+
combined_patterns=${combined_patterns%?}
|
|
40
|
+
echo "$combined_patterns"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
scan() {
|
|
44
|
+
local files=("${@}") options=""
|
|
45
|
+
[ "${SCAN_CACHED}" == 1 ] && options+="--cached"
|
|
46
|
+
[ "${SCAN_UNTRACKED}" == 1 ] && options+=" --untracked"
|
|
47
|
+
[ "${SCAN_NO_INDEX}" == 1 ] && options+=" --no-index"
|
|
48
|
+
if [ ${#files[@]} -eq 0 ] || [ ! -z "${options}" ]; then
|
|
49
|
+
output=$(git_grep $options "${files[@]}")
|
|
50
|
+
else
|
|
51
|
+
output=$(regular_grep "${files[@]}")
|
|
52
|
+
fi
|
|
53
|
+
process_output $? "${output}"
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
git_grep() {
|
|
57
|
+
local options="$1"; shift
|
|
58
|
+
local files=("${@}") combined_patterns=$(load_combined_patterns)
|
|
59
|
+
[ -z "${combined_patterns}" ] && return 1
|
|
60
|
+
GREP_OPTIONS= LC_ALL=C git grep -nwHEI ${options} "${combined_patterns}" -- "${files[@]}"
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
regular_grep() {
|
|
64
|
+
local files=("${@}") patterns=$(load_patterns) action='skip'
|
|
65
|
+
[ -z "${patterns}" ] && return 1
|
|
66
|
+
[ ${RECURSIVE} -eq 1 ] && action="recurse"
|
|
67
|
+
GREP_OPTIONS= LC_ALL=C grep -d "${action}" -nwHEI "${patterns}" "${files[@]}"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
process_output() {
|
|
71
|
+
local status="$1" output="$2"
|
|
72
|
+
local allowed=$(load_allowed)
|
|
73
|
+
case "$status" in
|
|
74
|
+
0)
|
|
75
|
+
[ -z "${allowed}" ] && echo "${output}" >&2 && return 1
|
|
76
|
+
echo "${output}" | GREP_OPTIONS= LC_ALL=C grep -Ev "${allowed}" >&2 \
|
|
77
|
+
&& return 1 || return 0
|
|
78
|
+
;;
|
|
79
|
+
1) return 0 ;;
|
|
80
|
+
*) exit $status
|
|
81
|
+
esac
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
scan_with_fn_or_die() {
|
|
85
|
+
local fn="$1"; shift
|
|
86
|
+
$fn "$@" && exit 0
|
|
87
|
+
echo >&2
|
|
88
|
+
echo "[ERROR] Matched one or more prohibited patterns" >&2
|
|
89
|
+
echo >&2
|
|
90
|
+
echo "Possible mitigations:" >&2
|
|
91
|
+
echo "- Mark false positives as allowed using: git config --add secrets.allowed ..." >&2
|
|
92
|
+
echo "- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory" >&2
|
|
93
|
+
echo "- List your configured patterns: git config --get-all secrets.patterns" >&2
|
|
94
|
+
echo "- List your configured allowed patterns: git config --get-all secrets.allowed" >&2
|
|
95
|
+
echo "- Use --no-verify if this is a one-time false positive" >&2
|
|
96
|
+
exit 1
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
pre_commit_hook() {
|
|
100
|
+
SCAN_CACHED=1
|
|
101
|
+
local files=() file rev="4b825dc642cb6eb9a060e54bf8d69288fbee4904"
|
|
102
|
+
git rev-parse --verify HEAD >/dev/null 2>&1 && rev="HEAD"
|
|
103
|
+
while IFS= read -r file; do
|
|
104
|
+
[ -n "$file" ] && files+=("$file")
|
|
105
|
+
done <<< "$(git diff-index --diff-filter 'ACMU' --name-only --cached $rev --)"
|
|
106
|
+
[ ${#files[@]} -eq 0 ] && exit 0
|
|
107
|
+
scan_with_fn_or_die "scan" "${files[@]}"
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
commit_msg_hook() {
|
|
111
|
+
scan_with_fn_or_die "scan" "$1"
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
prepare_commit_msg_hook() {
|
|
115
|
+
case "$2,$3" in
|
|
116
|
+
merge,)
|
|
117
|
+
local git_head=$(env | grep GITHEAD)
|
|
118
|
+
local sha="${git_head##*=}"
|
|
119
|
+
local branch=$(git symbolic-ref HEAD)
|
|
120
|
+
local dest="${branch#refs/heads/}"
|
|
121
|
+
git log "${dest}".."${sha}" -p | scan_with_fn_or_die "scan" -
|
|
122
|
+
;;
|
|
123
|
+
esac
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
add_config() {
|
|
127
|
+
local key="$1"; shift
|
|
128
|
+
local value="$@"
|
|
129
|
+
if [ ${LITERAL} -eq 1 ]; then
|
|
130
|
+
value=$(sed 's/[\.|$(){}?+*^]/\\&/g' <<< "${value}")
|
|
131
|
+
fi
|
|
132
|
+
if [ ${GLOBAL} -eq 1 ]; then
|
|
133
|
+
git config --global --get-all $key | grep -Fq "${value}" && return 1
|
|
134
|
+
git config --global --add "${key}" "${value}"
|
|
135
|
+
else
|
|
136
|
+
git config --get-all $key | grep -Fq "${value}" && return 1
|
|
137
|
+
git config --add "${key}" "${value}"
|
|
138
|
+
fi
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
register_aws() {
|
|
142
|
+
local aws="(AWS|aws|Aws)?_?" quote="(\"|')" connect="\s*(:|=>|=)\s*"
|
|
143
|
+
local opt_quote="${quote}?"
|
|
144
|
+
add_config 'secrets.providers' 'bash .git-secrets/git-secrets --aws-provider'
|
|
145
|
+
add_config 'secrets.patterns' '(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}'
|
|
146
|
+
add_config 'secrets.patterns' 'ABSK[A-Za-z0-9+/]{109,}=*'
|
|
147
|
+
add_config 'secrets.patterns' 'bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t'
|
|
148
|
+
add_config 'secrets.patterns' "${opt_quote}${aws}(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)${opt_quote}${connect}${opt_quote}[A-Za-z0-9/\+=]{40}${opt_quote}"
|
|
149
|
+
add_config 'secrets.patterns' "${opt_quote}${aws}(ACCOUNT|account|Account)_?(ID|id|Id)?${opt_quote}${connect}${opt_quote}[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}${opt_quote}"
|
|
150
|
+
add_config 'secrets.allowed' 'AKIAIOSFODNN7EXAMPLE'
|
|
151
|
+
add_config 'secrets.allowed' "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
aws_provider() {
|
|
155
|
+
local fi="$1"
|
|
156
|
+
[ -z "$fi" ] && fi=~/.aws/credentials
|
|
157
|
+
if [ -f "$fi" ]; then
|
|
158
|
+
awk -F "=" '/aws_access_key_id|aws_secret_access_key/ {print $2}' "$fi" \
|
|
159
|
+
| tr -d ' "' \
|
|
160
|
+
| sed 's/[]\.|$(){}?+*^]/\\&/g'
|
|
161
|
+
fi
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
declare RECURSIVE=0 LITERAL=0 GLOBAL=0 ALLOWED=0
|
|
165
|
+
declare SCAN_CACHED=0 SCAN_NO_INDEX=0 SCAN_UNTRACKED=0
|
|
166
|
+
|
|
167
|
+
COMMAND="$1"
|
|
168
|
+
shift 1
|
|
169
|
+
|
|
170
|
+
while [ "$#" -ne 0 ]; do
|
|
171
|
+
case "$1" in
|
|
172
|
+
-r) RECURSIVE=1 ;;
|
|
173
|
+
-l) LITERAL=1 ;;
|
|
174
|
+
-a) ALLOWED=1 ;;
|
|
175
|
+
--cached) SCAN_CACHED=1 ;;
|
|
176
|
+
--no-index) SCAN_NO_INDEX=1 ;;
|
|
177
|
+
--untracked) SCAN_UNTRACKED=1 ;;
|
|
178
|
+
--global) GLOBAL=1 ;;
|
|
179
|
+
--) shift; break ;;
|
|
180
|
+
esac
|
|
181
|
+
shift
|
|
182
|
+
done
|
|
183
|
+
|
|
184
|
+
case "${COMMAND}" in
|
|
185
|
+
--register-aws) register_aws ;;
|
|
186
|
+
--aws-provider) aws_provider "$1" ;;
|
|
187
|
+
--pre_commit_hook|--pre-commit-hook) pre_commit_hook "$@" ;;
|
|
188
|
+
--commit_msg_hook|--commit-msg-hook) commit_msg_hook "$@" ;;
|
|
189
|
+
--prepare_commit_msg_hook|--prepare-commit-msg-hook) prepare_commit_msg_hook "$@" ;;
|
|
190
|
+
--scan) scan_with_fn_or_die "scan" "$@" ;;
|
|
191
|
+
--add)
|
|
192
|
+
if [ ${ALLOWED} -eq 1 ]; then
|
|
193
|
+
add_config "secrets.allowed" "$1"
|
|
194
|
+
else
|
|
195
|
+
add_config "secrets.patterns" "$1"
|
|
196
|
+
fi
|
|
197
|
+
;;
|
|
198
|
+
--list)
|
|
199
|
+
if [ ${GLOBAL} -eq 1 ]; then
|
|
200
|
+
git config --global --get-regex secrets.*
|
|
201
|
+
else
|
|
202
|
+
git config --get-regex secrets.*
|
|
203
|
+
fi
|
|
204
|
+
;;
|
|
205
|
+
*) echo "Usage: git-secrets [--scan|--register-aws|--pre_commit_hook|--commit_msg_hook|--list|--add]" >&2; exit 1 ;;
|
|
206
|
+
esac
|
package/src/preset/schema.d.ts
CHANGED
|
@@ -3,8 +3,13 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { IacProvider } from '../utils/iac';
|
|
6
|
+
import { ContainerEngine } from '../utils/containers';
|
|
7
|
+
|
|
8
|
+
export type PresetContainerEngineOption = ContainerEngine | 'infer';
|
|
6
9
|
|
|
7
10
|
export interface PresetGeneratorSchema {
|
|
8
11
|
readonly addTsPlugin?: boolean;
|
|
9
12
|
readonly iacProvider: IacProvider;
|
|
13
|
+
readonly gitSecrets?: boolean;
|
|
14
|
+
readonly containerEngine?: PresetContainerEngineOption;
|
|
10
15
|
}
|
package/src/preset/schema.json
CHANGED
|
@@ -17,6 +17,19 @@
|
|
|
17
17
|
"default": "CDK",
|
|
18
18
|
"x-priority": "important",
|
|
19
19
|
"x-prompt": "Which provider would you like to manage your infrastructure?"
|
|
20
|
+
},
|
|
21
|
+
"gitSecrets": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"description": "Whether to configure git-secrets to prevent committing AWS credentials.",
|
|
24
|
+
"default": true
|
|
25
|
+
},
|
|
26
|
+
"containerEngine": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"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).",
|
|
29
|
+
"enum": ["infer", "docker", "finch"],
|
|
30
|
+
"default": "infer",
|
|
31
|
+
"x-priority": "important",
|
|
32
|
+
"x-prompt": "Which container engine would you like to use? (default: infer)"
|
|
20
33
|
}
|
|
21
34
|
}
|
|
22
35
|
}
|
|
@@ -523,12 +523,12 @@ resource "aws_iam_role_policy_attachment" "agent_core_policy" {
|
|
|
523
523
|
policy_arn = aws_iam_policy.agent_core_runtime_policy.arn
|
|
524
524
|
}
|
|
525
525
|
|
|
526
|
-
# Data source to get
|
|
526
|
+
# Data source to get container image digest
|
|
527
527
|
data "external" "docker_digest" {
|
|
528
528
|
program = ["sh", "-c", "echo '{\\"digest\\":\\"'$(docker inspect \${var.docker_image_tag} --format '{{.Id}}')'\\"}' "]
|
|
529
529
|
}
|
|
530
530
|
|
|
531
|
-
# Null resource for
|
|
531
|
+
# Null resource for container image publish
|
|
532
532
|
resource "null_resource" "docker_publish" {
|
|
533
533
|
triggers = {
|
|
534
534
|
docker_digest = data.external.docker_digest.result.digest
|
|
@@ -23,6 +23,7 @@ const npm_scope_1 = require("../../utils/npm-scope");
|
|
|
23
23
|
const shared_constructs_1 = require("../../utils/shared-constructs");
|
|
24
24
|
const nxlv_python_1 = require("../../utils/nxlv-python");
|
|
25
25
|
const iac_1 = require("../../utils/iac");
|
|
26
|
+
const containers_1 = require("../../utils/containers");
|
|
26
27
|
const port_1 = require("../../utils/port");
|
|
27
28
|
const paths_1 = require("../../utils/paths");
|
|
28
29
|
exports.PY_AGENT_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
@@ -85,6 +86,7 @@ const pyAgentGenerator = async (tree, options) => {
|
|
|
85
86
|
'fastapi[standard]',
|
|
86
87
|
]);
|
|
87
88
|
if (computeType === 'BedrockAgentCoreRuntime') {
|
|
89
|
+
const containerEngine = await (0, containers_1.resolveContainerEngine)(tree, 'Inherit');
|
|
88
90
|
const dockerImageTag = `${(0, npm_scope_1.getNpmScope)(tree)}-${name}:latest`;
|
|
89
91
|
// Add bundle target
|
|
90
92
|
const { bundleTargetName, bundleOutputDir } = (0, bundle_1.addPythonBundleTarget)(project, {
|
|
@@ -110,7 +112,7 @@ const pyAgentGenerator = async (tree, options) => {
|
|
|
110
112
|
fs.mkdir(dockerOutputDir),
|
|
111
113
|
fs.cp(bundleOutputDir, dockerOutputDir),
|
|
112
114
|
fs.cp(`${targetSourceDir}/Dockerfile`, `${dockerOutputDir}/Dockerfile`),
|
|
113
|
-
|
|
115
|
+
`${containerEngine} build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}`,
|
|
114
116
|
],
|
|
115
117
|
parallel: false,
|
|
116
118
|
},
|
|
@@ -133,6 +135,7 @@ const pyAgentGenerator = async (tree, options) => {
|
|
|
133
135
|
projectName: project.name,
|
|
134
136
|
auth,
|
|
135
137
|
serverProtocol: infraProtocol,
|
|
138
|
+
containerEngine,
|
|
136
139
|
});
|
|
137
140
|
}
|
|
138
141
|
// A2A servers use port 9000 as per the Strands A2A SDK default and AgentCore A2A contract.
|