@aws/nx-plugin 0.23.1 → 0.24.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/LICENSE-THIRD-PARTY +212 -29
- package/README.md +22 -0
- package/bin/aws-nx-mcp.d.ts +2 -0
- package/bin/aws-nx-mcp.js +18 -0
- package/bin/aws-nx-mcp.js.map +1 -0
- package/generators.json +24 -10
- package/package.json +7 -2
- package/src/mcp-server/generator-info.d.ts +23 -0
- package/src/mcp-server/generator-info.js +134 -0
- package/src/mcp-server/generator-info.js.map +1 -0
- package/src/mcp-server/index.d.ts +1 -0
- package/src/mcp-server/index.js +17 -0
- package/src/mcp-server/index.js.map +1 -0
- package/src/mcp-server/schema.d.ts +7 -0
- package/src/mcp-server/schema.js +11 -0
- package/src/mcp-server/schema.js.map +1 -0
- package/src/mcp-server/server.d.ts +9 -0
- package/src/mcp-server/server.js +40 -0
- package/src/mcp-server/server.js.map +1 -0
- package/src/mcp-server/tools/create-workspace-command.d.ts +9 -0
- package/src/mcp-server/tools/create-workspace-command.js +34 -0
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -0
- package/src/mcp-server/tools/general-guidance.d.ts +11 -0
- package/src/mcp-server/tools/general-guidance.js +74 -0
- package/src/mcp-server/tools/general-guidance.js.map +1 -0
- package/src/mcp-server/tools/generator-guide.d.ts +10 -0
- package/src/mcp-server/tools/generator-guide.js +36 -0
- package/src/mcp-server/tools/generator-guide.js.map +1 -0
- package/src/mcp-server/tools/list-generators.d.ts +10 -0
- package/src/mcp-server/tools/list-generators.js +23 -0
- package/src/mcp-server/tools/list-generators.js.map +1 -0
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +1 -2
- package/src/ts/nx-generator/files/nx-plugin-for-aws/docs/__nameKebabCase__.mdx.template +1 -2
- package/src/utils/nx.d.ts +9 -0
- package/src/utils/nx.js +16 -6
- package/src/utils/nx.js.map +1 -1
- package/src/utils/versions.d.ts +2 -2
- package/src/utils/versions.js +1 -1
package/LICENSE-THIRD-PARTY
CHANGED
|
@@ -3556,6 +3556,33 @@ THE SOFTWARE.
|
|
|
3556
3556
|
|
|
3557
3557
|
---
|
|
3558
3558
|
|
|
3559
|
+
The following software may be included in this product: @modelcontextprotocol/sdk (1.11.3)
|
|
3560
|
+
This software contains the following license and notice below:
|
|
3561
|
+
|
|
3562
|
+
MIT License
|
|
3563
|
+
|
|
3564
|
+
Copyright (c) 2024 Anthropic, PBC
|
|
3565
|
+
|
|
3566
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
3567
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
3568
|
+
in the Software without restriction, including without limitation the rights
|
|
3569
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
3570
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
3571
|
+
furnished to do so, subject to the following conditions:
|
|
3572
|
+
|
|
3573
|
+
The above copyright notice and this permission notice shall be included in all
|
|
3574
|
+
copies or substantial portions of the Software.
|
|
3575
|
+
|
|
3576
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
3577
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
3578
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
3579
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
3580
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
3581
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
3582
|
+
SOFTWARE.
|
|
3583
|
+
|
|
3584
|
+
---
|
|
3585
|
+
|
|
3559
3586
|
The following software may be included in this product: @modern-js/node-bundle-require (2.65.1)
|
|
3560
3587
|
This software contains the following license and notice below:
|
|
3561
3588
|
|
|
@@ -4793,34 +4820,6 @@ SOFTWARE.
|
|
|
4793
4820
|
|
|
4794
4821
|
---
|
|
4795
4822
|
|
|
4796
|
-
The following software may be included in this product: @nx/devkit (20.6.4)
|
|
4797
|
-
This software contains the following license and notice below:
|
|
4798
|
-
|
|
4799
|
-
(The MIT License)
|
|
4800
|
-
|
|
4801
|
-
Copyright (c) 2017-2025 Narwhal Technologies Inc.
|
|
4802
|
-
|
|
4803
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
4804
|
-
a copy of this software and associated documentation files (the
|
|
4805
|
-
'Software'), to deal in the Software without restriction, including
|
|
4806
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
|
4807
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
|
4808
|
-
permit persons to whom the Software is furnished to do so, subject to
|
|
4809
|
-
the following conditions:
|
|
4810
|
-
|
|
4811
|
-
The above copyright notice and this permission notice shall be
|
|
4812
|
-
included in all copies or substantial portions of the Software.
|
|
4813
|
-
|
|
4814
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
4815
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
4816
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
4817
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
4818
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
4819
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
4820
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
4821
|
-
|
|
4822
|
-
---
|
|
4823
|
-
|
|
4824
4823
|
The following software may be included in this product: @nx/devkit (21.0.3)
|
|
4825
4824
|
This software contains the following license and notice below:
|
|
4826
4825
|
|
|
@@ -5060,7 +5059,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
5060
5059
|
|
|
5061
5060
|
---
|
|
5062
5061
|
|
|
5063
|
-
The following software may be included in this product: @nxlv/python (
|
|
5062
|
+
The following software may be included in this product: @nxlv/python (21.0.0)
|
|
5064
5063
|
This software contains the following license and notice below:
|
|
5065
5064
|
|
|
5066
5065
|
MIT License
|
|
@@ -11616,6 +11615,61 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
11616
11615
|
|
|
11617
11616
|
---
|
|
11618
11617
|
|
|
11618
|
+
The following software may be included in this product: eventsource (3.0.7)
|
|
11619
|
+
This software contains the following license and notice below:
|
|
11620
|
+
|
|
11621
|
+
The MIT License
|
|
11622
|
+
|
|
11623
|
+
Copyright (c) EventSource GitHub organisation
|
|
11624
|
+
|
|
11625
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
11626
|
+
a copy of this software and associated documentation files (the
|
|
11627
|
+
"Software"), to deal in the Software without restriction, including
|
|
11628
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
11629
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
11630
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11631
|
+
the following conditions:
|
|
11632
|
+
|
|
11633
|
+
The above copyright notice and this permission notice shall be
|
|
11634
|
+
included in all copies or substantial portions of the Software.
|
|
11635
|
+
|
|
11636
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
11637
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
11638
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
11639
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
11640
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
11641
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
11642
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
11643
|
+
|
|
11644
|
+
---
|
|
11645
|
+
|
|
11646
|
+
The following software may be included in this product: eventsource-parser (3.0.2)
|
|
11647
|
+
This software contains the following license and notice below:
|
|
11648
|
+
|
|
11649
|
+
MIT License
|
|
11650
|
+
|
|
11651
|
+
Copyright (c) 2025 Espen Hovlandsdal <espen@hovlandsdal.com>
|
|
11652
|
+
|
|
11653
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11654
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11655
|
+
in the Software without restriction, including without limitation the rights
|
|
11656
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11657
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11658
|
+
furnished to do so, subject to the following conditions:
|
|
11659
|
+
|
|
11660
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11661
|
+
copies or substantial portions of the Software.
|
|
11662
|
+
|
|
11663
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11664
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
11665
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
11666
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
11667
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
11668
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
11669
|
+
SOFTWARE.
|
|
11670
|
+
|
|
11671
|
+
---
|
|
11672
|
+
|
|
11619
11673
|
The following software may be included in this product: expand-tilde (2.0.2)
|
|
11620
11674
|
This software contains the following license and notice below:
|
|
11621
11675
|
|
|
@@ -11686,6 +11740,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
11686
11740
|
|
|
11687
11741
|
---
|
|
11688
11742
|
|
|
11743
|
+
The following software may be included in this product: express-rate-limit (7.5.0)
|
|
11744
|
+
This software contains the following license and notice below:
|
|
11745
|
+
|
|
11746
|
+
# MIT License
|
|
11747
|
+
|
|
11748
|
+
Copyright 2023 Nathan Friedly, Vedant K
|
|
11749
|
+
|
|
11750
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
11751
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
11752
|
+
the Software without restriction, including without limitation the rights to
|
|
11753
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
11754
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
11755
|
+
subject to the following conditions:
|
|
11756
|
+
|
|
11757
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11758
|
+
copies or substantial portions of the Software.
|
|
11759
|
+
|
|
11760
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11761
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
11762
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
11763
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
11764
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
11765
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
11766
|
+
|
|
11767
|
+
---
|
|
11768
|
+
|
|
11689
11769
|
The following software may be included in this product: extend (3.0.2)
|
|
11690
11770
|
This software contains the following license and notice below:
|
|
11691
11771
|
|
|
@@ -18047,6 +18127,33 @@ SOFTWARE.
|
|
|
18047
18127
|
|
|
18048
18128
|
---
|
|
18049
18129
|
|
|
18130
|
+
The following software may be included in this product: pkce-challenge (5.0.0)
|
|
18131
|
+
This software contains the following license and notice below:
|
|
18132
|
+
|
|
18133
|
+
MIT License
|
|
18134
|
+
|
|
18135
|
+
Copyright (c) 2019
|
|
18136
|
+
|
|
18137
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18138
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
18139
|
+
in the Software without restriction, including without limitation the rights
|
|
18140
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18141
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
18142
|
+
furnished to do so, subject to the following conditions:
|
|
18143
|
+
|
|
18144
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18145
|
+
copies or substantial portions of the Software.
|
|
18146
|
+
|
|
18147
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18148
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18149
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18150
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18151
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18152
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
18153
|
+
SOFTWARE.
|
|
18154
|
+
|
|
18155
|
+
---
|
|
18156
|
+
|
|
18050
18157
|
The following software may be included in this product: pkg-types (1.3.1)
|
|
18051
18158
|
This software contains the following license and notice below:
|
|
18052
18159
|
|
|
@@ -18666,6 +18773,34 @@ THE SOFTWARE.
|
|
|
18666
18773
|
|
|
18667
18774
|
---
|
|
18668
18775
|
|
|
18776
|
+
The following software may be included in this product: raw-body (3.0.0)
|
|
18777
|
+
This software contains the following license and notice below:
|
|
18778
|
+
|
|
18779
|
+
The MIT License (MIT)
|
|
18780
|
+
|
|
18781
|
+
Copyright (c) 2013-2014 Jonathan Ong <me@jongleberry.com>
|
|
18782
|
+
Copyright (c) 2014-2022 Douglas Christopher Wilson <doug@somethingdoug.com>
|
|
18783
|
+
|
|
18784
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
18785
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
18786
|
+
in the Software without restriction, including without limitation the rights
|
|
18787
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
18788
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
18789
|
+
furnished to do so, subject to the following conditions:
|
|
18790
|
+
|
|
18791
|
+
The above copyright notice and this permission notice shall be included in
|
|
18792
|
+
all copies or substantial portions of the Software.
|
|
18793
|
+
|
|
18794
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18795
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18796
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18797
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18798
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18799
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
18800
|
+
THE SOFTWARE.
|
|
18801
|
+
|
|
18802
|
+
---
|
|
18803
|
+
|
|
18669
18804
|
The following software may be included in this product: rc9 (2.1.2)
|
|
18670
18805
|
This software contains the following license and notice below:
|
|
18671
18806
|
|
|
@@ -28380,6 +28515,33 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
28380
28515
|
|
|
28381
28516
|
---
|
|
28382
28517
|
|
|
28518
|
+
The following software may be included in this product: zod (3.24.2)
|
|
28519
|
+
This software contains the following license and notice below:
|
|
28520
|
+
|
|
28521
|
+
MIT License
|
|
28522
|
+
|
|
28523
|
+
Copyright (c) 2020 Colin McDonnell
|
|
28524
|
+
|
|
28525
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
28526
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
28527
|
+
in the Software without restriction, including without limitation the rights
|
|
28528
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
28529
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
28530
|
+
furnished to do so, subject to the following conditions:
|
|
28531
|
+
|
|
28532
|
+
The above copyright notice and this permission notice shall be included in all
|
|
28533
|
+
copies or substantial portions of the Software.
|
|
28534
|
+
|
|
28535
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
28536
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
28537
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
28538
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
28539
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28540
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28541
|
+
SOFTWARE.
|
|
28542
|
+
|
|
28543
|
+
---
|
|
28544
|
+
|
|
28383
28545
|
The following software may be included in this product: @ampproject/remapping (2.3.0)
|
|
28384
28546
|
This software contains the following license and notice below:
|
|
28385
28547
|
|
|
@@ -35809,6 +35971,27 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
35809
35971
|
|
|
35810
35972
|
---
|
|
35811
35973
|
|
|
35974
|
+
The following software may be included in this product: zod-to-json-schema (3.24.5)
|
|
35975
|
+
This software contains the following license and notice below:
|
|
35976
|
+
|
|
35977
|
+
ISC License
|
|
35978
|
+
|
|
35979
|
+
Copyright (c) 2020, Stefan Terdell
|
|
35980
|
+
|
|
35981
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
35982
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
35983
|
+
copyright notice and this permission notice appear in all copies.
|
|
35984
|
+
|
|
35985
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
35986
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
35987
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
35988
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
35989
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
35990
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
35991
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
35992
|
+
|
|
35993
|
+
---
|
|
35994
|
+
|
|
35812
35995
|
The following software may be included in this product: @xtuc/ieee754 (1.2.0)
|
|
35813
35996
|
This software contains the following license and notice below:
|
|
35814
35997
|
|
package/README.md
CHANGED
|
@@ -100,6 +100,28 @@ pnpm nx g @aws/nx-plugin:ts#infra
|
|
|
100
100
|
- [Build a Dungeon Adventure Game](https://awslabs.github.io/nx-plugin-for-aws/get_started/tutorials/dungeon-game/overview/) to get an in-depth guided tutorial on how to use the @aws/nx-plugin.
|
|
101
101
|
- [Add @aws/nx-plugin to your existing project](https://awslabs.github.io/nx-plugin-for-aws/get_started/tutorials/existing-project/)
|
|
102
102
|
|
|
103
|
+
## MCP Server Installation and Setup
|
|
104
|
+
|
|
105
|
+
This package additionally provides an MCP server to help AI assistants use the Nx Plugin for AWS.
|
|
106
|
+
|
|
107
|
+
1. Ensure you have `node` and `npm` installed ([see here](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm))
|
|
108
|
+
2. Add the server to your MCP client configuration
|
|
109
|
+
|
|
110
|
+
Example configuration for Amazon Q CLI MCP (`~/.aws/amazonq/mcp.json`):
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"mcpServers": {
|
|
115
|
+
"aws-nx-mcp": {
|
|
116
|
+
"command": "npx",
|
|
117
|
+
"args": ["-p", "@aws/nx-plugin", "aws-nx-mcp"]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
If you have issues such as `ENOENT npx`, replace the command with `/full/path/to/npx` (use `which npx` to find this).
|
|
124
|
+
|
|
103
125
|
## Documentation Translation
|
|
104
126
|
|
|
105
127
|
The project supports automatic translation of documentation using AWS Bedrock's Deepseek & Haiku 3.5 models. Documentation is translated from English to multiple languages (currently Japanese, with support for French, Spanish, German, Chinese, and Korean).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const mcp_server_1 = require("../src/mcp-server");
|
|
10
|
+
void (() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
11
|
+
try {
|
|
12
|
+
yield (0, mcp_server_1.startMcpServer)();
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
console.error(e);
|
|
16
|
+
}
|
|
17
|
+
}))();
|
|
18
|
+
//# sourceMappingURL=aws-nx-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aws-nx-mcp.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/bin/aws-nx-mcp.ts"],"names":[],"mappings":";;;;AACA;;;GAGG;AACH,kDAAmD;AAEnD,KAAK,CAAC,GAAS,EAAE;IACf,IAAI,CAAC;QACH,MAAM,IAAA,2BAAc,GAAE,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAA,CAAC,EAAE,CAAC"}
|
package/generators.json
CHANGED
|
@@ -7,19 +7,22 @@
|
|
|
7
7
|
"factory": "./src/ts/lib/generator",
|
|
8
8
|
"schema": "./src/ts/lib/schema.json",
|
|
9
9
|
"description": "Generates a TypeScript project",
|
|
10
|
-
"metric": "g1"
|
|
10
|
+
"metric": "g1",
|
|
11
|
+
"guidePages": ["typescript-project"]
|
|
11
12
|
},
|
|
12
13
|
"py#project": {
|
|
13
14
|
"factory": "./src/py/project/generator",
|
|
14
15
|
"schema": "./src/py/project/schema.json",
|
|
15
16
|
"description": "Generates a Python project",
|
|
16
|
-
"metric": "g2"
|
|
17
|
+
"metric": "g2",
|
|
18
|
+
"guidePages": ["python-project"]
|
|
17
19
|
},
|
|
18
20
|
"py#fast-api": {
|
|
19
21
|
"factory": "./src/py/fast-api/generator",
|
|
20
22
|
"schema": "./src/py/fast-api/schema.json",
|
|
21
23
|
"description": "Generates a FastAPI Python project",
|
|
22
|
-
"metric": "g3"
|
|
24
|
+
"metric": "g3",
|
|
25
|
+
"guidePages": ["fastapi"]
|
|
23
26
|
},
|
|
24
27
|
"py#fast-api#react-connection": {
|
|
25
28
|
"factory": "./src/py/fast-api/react/generator",
|
|
@@ -32,13 +35,15 @@
|
|
|
32
35
|
"factory": "./src/cloudscape-website/app/generator",
|
|
33
36
|
"schema": "./src/cloudscape-website/app/schema.json",
|
|
34
37
|
"description": "Generates a React static website based on Cloudscape",
|
|
35
|
-
"metric": "g5"
|
|
38
|
+
"metric": "g5",
|
|
39
|
+
"guidePages": ["cloudscape-website"]
|
|
36
40
|
},
|
|
37
41
|
"ts#cloudscape-website#auth": {
|
|
38
42
|
"factory": "./src/cloudscape-website/cognito-auth/generator",
|
|
39
43
|
"schema": "./src/cloudscape-website/cognito-auth/schema.json",
|
|
40
44
|
"description": "Adds auth to an existing cloudscape website",
|
|
41
|
-
"metric": "g6"
|
|
45
|
+
"metric": "g6",
|
|
46
|
+
"guidePages": ["cloudscape-website-auth"]
|
|
42
47
|
},
|
|
43
48
|
"ts#cloudscape-website#runtime-config": {
|
|
44
49
|
"factory": "./src/cloudscape-website/runtime-config/generator",
|
|
@@ -51,13 +56,15 @@
|
|
|
51
56
|
"factory": "./src/infra/app/generator",
|
|
52
57
|
"schema": "./src/infra/app/schema.json",
|
|
53
58
|
"description": "Generates a cdk application",
|
|
54
|
-
"metric": "g8"
|
|
59
|
+
"metric": "g8",
|
|
60
|
+
"guidePages": ["typescript-infrastructure"]
|
|
55
61
|
},
|
|
56
62
|
"ts#trpc-api": {
|
|
57
63
|
"factory": "./src/trpc/backend/generator",
|
|
58
64
|
"schema": "./src/trpc/backend/schema.json",
|
|
59
65
|
"description": "creates a trpc backend",
|
|
60
|
-
"metric": "g9"
|
|
66
|
+
"metric": "g9",
|
|
67
|
+
"guidePages": ["trpc"]
|
|
61
68
|
},
|
|
62
69
|
"ts#trpc-api#react-connection": {
|
|
63
70
|
"factory": "./src/trpc/react/generator",
|
|
@@ -70,7 +77,12 @@
|
|
|
70
77
|
"factory": "./src/api-connection/generator",
|
|
71
78
|
"schema": "./src/api-connection/schema.json",
|
|
72
79
|
"description": "Integrates a source project with a target API project",
|
|
73
|
-
"metric": "g11"
|
|
80
|
+
"metric": "g11",
|
|
81
|
+
"guidePages": [
|
|
82
|
+
"api-connection",
|
|
83
|
+
"api-connection/react-fastapi",
|
|
84
|
+
"api-connection/react-trpc"
|
|
85
|
+
]
|
|
74
86
|
},
|
|
75
87
|
"open-api#ts-client": {
|
|
76
88
|
"factory": "./src/open-api/ts-client/generator",
|
|
@@ -103,13 +115,15 @@
|
|
|
103
115
|
"factory": "./src/py/lambda-function/generator",
|
|
104
116
|
"schema": "./src/py/lambda-function/schema.json",
|
|
105
117
|
"description": "Adds a lambda function to a python project",
|
|
106
|
-
"metric": "g16"
|
|
118
|
+
"metric": "g16",
|
|
119
|
+
"guidePages": ["python-lambda-function"]
|
|
107
120
|
},
|
|
108
121
|
"ts#nx-generator": {
|
|
109
122
|
"factory": "./src/ts/nx-generator/generator",
|
|
110
123
|
"schema": "./src/ts/nx-generator/schema.json",
|
|
111
124
|
"description": "Generator for adding an Nx Generator to an existing TypeScript project",
|
|
112
|
-
"metric": "g17"
|
|
125
|
+
"metric": "g17",
|
|
126
|
+
"guidePages": ["nx-generator"]
|
|
113
127
|
},
|
|
114
128
|
"ts#mcp-server": {
|
|
115
129
|
"factory": "./src/ts/mcp-server/generator",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws/nx-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/awslabs/nx-plugin-for-aws.git",
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
"publishConfig": {
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
17
|
+
"bin": {
|
|
18
|
+
"aws-nx-mcp": "./bin/aws-nx-mcp.js"
|
|
19
|
+
},
|
|
17
20
|
"generators": "./generators.json",
|
|
18
21
|
"peerDependencies": {
|
|
19
22
|
"prettier": "^3.4.2",
|
|
@@ -23,6 +26,7 @@
|
|
|
23
26
|
"@apidevtools/swagger-parser": "^10.1.1",
|
|
24
27
|
"@hey-api/openapi-ts": "0.64.13",
|
|
25
28
|
"@iarna/toml": "^2.2.5",
|
|
29
|
+
"@modelcontextprotocol/sdk": "^1.11.3",
|
|
26
30
|
"@nx/devkit": "~21.0.3",
|
|
27
31
|
"@nx/eslint": "~21.0.3",
|
|
28
32
|
"@nx/js": "~21.0.3",
|
|
@@ -42,7 +46,8 @@
|
|
|
42
46
|
"openapi-types": "^12.1.3",
|
|
43
47
|
"typescript": "~5.8.2",
|
|
44
48
|
"vite": "^6.2.3",
|
|
45
|
-
"vitest": "^3.0.9"
|
|
49
|
+
"vitest": "^3.0.9",
|
|
50
|
+
"zod": "^3.24.2"
|
|
46
51
|
},
|
|
47
52
|
"types": "./src/index.d.ts"
|
|
48
53
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NxGeneratorInfo } from '../utils/nx';
|
|
2
|
+
/**
|
|
3
|
+
* Build a command to run nx
|
|
4
|
+
*/
|
|
5
|
+
export declare const buildNxCommand: (command: string, pm?: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Render summary information about a generator
|
|
8
|
+
*/
|
|
9
|
+
export declare const renderGeneratorInfo: (packageManager: string, info: NxGeneratorInfo) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Retrieve the markdown guide pages for a generator from github.
|
|
12
|
+
* If the generator has guidePages in generators.json we fetch all of those, otherwise we
|
|
13
|
+
* try to fetch a guide with the generator name kebab-cased.
|
|
14
|
+
*/
|
|
15
|
+
export declare const fetchGuidePagesForGenerator: (info: NxGeneratorInfo, generators: NxGeneratorInfo[], packageManager?: string) => Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Fetch markdown guide pages from github
|
|
18
|
+
*/
|
|
19
|
+
export declare const fetchGuidePages: (guidePages: string[], generators: NxGeneratorInfo[], packageManager?: string) => Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Post-process a guide page to "inline" relevant components
|
|
22
|
+
*/
|
|
23
|
+
export declare const postProcessGuide: (guide: string, generators: NxGeneratorInfo[], packageManager?: string) => string;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.postProcessGuide = exports.fetchGuidePages = exports.fetchGuidePagesForGenerator = exports.renderGeneratorInfo = exports.buildNxCommand = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const lodash_kebabcase_1 = tslib_1.__importDefault(require("lodash.kebabcase"));
|
|
10
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
11
|
+
/**
|
|
12
|
+
* Build a command to run nx
|
|
13
|
+
*/
|
|
14
|
+
const buildNxCommand = (command, pm) => {
|
|
15
|
+
var _a;
|
|
16
|
+
return `${pm
|
|
17
|
+
? `${(_a = {
|
|
18
|
+
npm: 'npx',
|
|
19
|
+
bun: 'bunx',
|
|
20
|
+
}[pm]) !== null && _a !== void 0 ? _a : pm} `
|
|
21
|
+
: ''}nx ${command}`;
|
|
22
|
+
};
|
|
23
|
+
exports.buildNxCommand = buildNxCommand;
|
|
24
|
+
const renderSchema = (schema) => Object.entries(schema.properties)
|
|
25
|
+
.map(([parameter, parameterSchema]) => { var _a; return `- ${parameter} [type: ${parameterSchema.type}]${((_a = schema.required) !== null && _a !== void 0 ? _a : []).includes(parameter) ? ` (required)` : ''} ${parameterSchema.description}`; })
|
|
26
|
+
.join('\n');
|
|
27
|
+
const renderGeneratorCommand = (generatorId, schema, packageManager) => `\`\`\`bash
|
|
28
|
+
${(0, exports.buildNxCommand)(`g @aws/nx-plugin:${generatorId} --no-interactive ${Object.entries(schema.properties)
|
|
29
|
+
.filter(([parameter]) => { var _a; return ((_a = schema.required) !== null && _a !== void 0 ? _a : []).includes(parameter); })
|
|
30
|
+
.map(([parameter]) => `--${parameter}=<${parameter}>`)
|
|
31
|
+
.join(' ')}`, packageManager)}
|
|
32
|
+
\`\`\``;
|
|
33
|
+
/**
|
|
34
|
+
* Render summary information about a generator
|
|
35
|
+
*/
|
|
36
|
+
const renderGeneratorInfo = (packageManager, info) => {
|
|
37
|
+
const schema = JSON.parse(fs_1.default.readFileSync(info.resolvedSchemaPath, 'utf-8'));
|
|
38
|
+
return `${info.id}
|
|
39
|
+
|
|
40
|
+
Description: ${info.description}
|
|
41
|
+
|
|
42
|
+
Available Parameters:
|
|
43
|
+
${renderSchema(schema)}
|
|
44
|
+
|
|
45
|
+
Command:
|
|
46
|
+
${renderGeneratorCommand(info.id, schema, packageManager)}
|
|
47
|
+
`;
|
|
48
|
+
};
|
|
49
|
+
exports.renderGeneratorInfo = renderGeneratorInfo;
|
|
50
|
+
/**
|
|
51
|
+
* Retrieve the markdown guide pages for a generator from github.
|
|
52
|
+
* If the generator has guidePages in generators.json we fetch all of those, otherwise we
|
|
53
|
+
* try to fetch a guide with the generator name kebab-cased.
|
|
54
|
+
*/
|
|
55
|
+
const fetchGuidePagesForGenerator = (info, generators, packageManager) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
56
|
+
var _a;
|
|
57
|
+
return yield (0, exports.fetchGuidePages)((_a = info.guidePages) !== null && _a !== void 0 ? _a : [(0, lodash_kebabcase_1.default)(info.id)], generators, packageManager);
|
|
58
|
+
});
|
|
59
|
+
exports.fetchGuidePagesForGenerator = fetchGuidePagesForGenerator;
|
|
60
|
+
/**
|
|
61
|
+
* Fetch markdown guide pages from github
|
|
62
|
+
*/
|
|
63
|
+
const fetchGuidePages = (guidePages, generators, packageManager) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
const guides = yield Promise.allSettled(guidePages.map((guide) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
return yield (yield fetch(`https://raw.githubusercontent.com/awslabs/nx-plugin-for-aws/refs/heads/main/docs/src/content/docs/en/guides/${guide}.mdx`)).text();
|
|
66
|
+
})));
|
|
67
|
+
return guides
|
|
68
|
+
.filter((result) => result.status === 'fulfilled')
|
|
69
|
+
.map((result) => (0, exports.postProcessGuide)(result.value, generators, packageManager))
|
|
70
|
+
.join('\n\n');
|
|
71
|
+
});
|
|
72
|
+
exports.fetchGuidePages = fetchGuidePages;
|
|
73
|
+
const findGeneratorAndSchema = (generators, generatorId) => {
|
|
74
|
+
const generator = generators.find((info) => info.id === generatorId);
|
|
75
|
+
if (!generator) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const schema = JSON.parse(fs_1.default.readFileSync(generator.resolvedSchemaPath, 'utf-8'));
|
|
80
|
+
return { generator, schema };
|
|
81
|
+
}
|
|
82
|
+
catch (_a) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Post-process a guide page to "inline" relevant components
|
|
88
|
+
*/
|
|
89
|
+
const postProcessGuide = (guide, generators, packageManager) => {
|
|
90
|
+
// Replace <NxCommands /> with markdown code blocks
|
|
91
|
+
let processedGuide = guide.replace(/<NxCommands\s+commands={([^}]+)}\s*\/>/g, (match, commandsMatch) => {
|
|
92
|
+
try {
|
|
93
|
+
const commands = JSON.parse(commandsMatch
|
|
94
|
+
.replaceAll("\\'", '__ESCAPED_SINGLE_QUOTE__')
|
|
95
|
+
.replaceAll("'", '"')
|
|
96
|
+
.replaceAll('__ESCAPED_SINGLE_QUOTE__', "\\'"));
|
|
97
|
+
return `\`\`\`bash\n${commands.map((command) => (0, exports.buildNxCommand)(command, packageManager)).join('\n')}\n\`\`\``;
|
|
98
|
+
}
|
|
99
|
+
catch (_a) {
|
|
100
|
+
return match;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// Replace <RunGenerator /> with renderGeneratorCommand
|
|
104
|
+
processedGuide = processedGuide.replace(/<RunGenerator\s+([^/>]+)\s*\/>/g, (match, attributes) => {
|
|
105
|
+
// Extract generator parameter
|
|
106
|
+
const generatorMatch = attributes.match(/generator=["']([^"']+)["']/);
|
|
107
|
+
if (!generatorMatch) {
|
|
108
|
+
return match; // If no generator parameter, leave as is
|
|
109
|
+
}
|
|
110
|
+
const generatorId = generatorMatch[1];
|
|
111
|
+
const info = findGeneratorAndSchema(generators, generatorId);
|
|
112
|
+
if (!info) {
|
|
113
|
+
return match;
|
|
114
|
+
}
|
|
115
|
+
return renderGeneratorCommand(generatorId, info.schema, packageManager);
|
|
116
|
+
});
|
|
117
|
+
// Replace <GeneratorParameters /> with renderSchema
|
|
118
|
+
processedGuide = processedGuide.replace(/<GeneratorParameters\s+([^/>]+)\s*\/>/g, (match, attributes) => {
|
|
119
|
+
// Extract generator parameter
|
|
120
|
+
const generatorMatch = attributes.match(/generator=["']([^"']+)["']/);
|
|
121
|
+
if (!generatorMatch) {
|
|
122
|
+
return match; // If no generator parameter, leave as is
|
|
123
|
+
}
|
|
124
|
+
const generatorId = generatorMatch[1];
|
|
125
|
+
const info = findGeneratorAndSchema(generators, generatorId);
|
|
126
|
+
if (!info) {
|
|
127
|
+
return match;
|
|
128
|
+
}
|
|
129
|
+
return renderSchema(info.schema);
|
|
130
|
+
});
|
|
131
|
+
return processedGuide;
|
|
132
|
+
};
|
|
133
|
+
exports.postProcessGuide = postProcessGuide;
|
|
134
|
+
//# sourceMappingURL=generator-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-info.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/generator-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const startMcpServer: () => Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startMcpServer = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
10
|
+
const server_1 = require("./server");
|
|
11
|
+
const startMcpServer = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
13
|
+
yield (0, server_1.createServer)().connect(transport);
|
|
14
|
+
console.error('Nx Plugin for AWS MCP Server listening on STDIO');
|
|
15
|
+
});
|
|
16
|
+
exports.startMcpServer = startMcpServer;
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/index.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,wEAAiF;AACjF,qCAAwC;AAEjC,MAAM,cAAc,GAAG,GAAS,EAAE;IACvC,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,IAAA,qBAAY,GAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACnE,CAAC,CAAA,CAAC;AAJW,QAAA,cAAc,kBAIzB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export declare const PACKAGE_MANAGERS: readonly ["pnpm", "yarn", "npm", "bun"];
|
|
7
|
+
export declare const PackageManagerSchema: z.ZodEnum<["pnpm", "yarn", "npm", "bun"]>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PackageManagerSchema = exports.PACKAGE_MANAGERS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
exports.PACKAGE_MANAGERS = ['pnpm', 'yarn', 'npm', 'bun'];
|
|
10
|
+
exports.PackageManagerSchema = zod_1.z.enum(exports.PACKAGE_MANAGERS);
|
|
11
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/schema.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,6BAAwB;AAEX,QAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAC3D,QAAA,oBAAoB,GAAG,OAAC,CAAC,IAAI,CAAC,wBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create the MCP Server
|
|
8
|
+
*/
|
|
9
|
+
export declare const createServer: () => McpServer;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createServer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
9
|
+
const nx_1 = require("../utils/nx");
|
|
10
|
+
const create_workspace_command_1 = require("./tools/create-workspace-command");
|
|
11
|
+
const list_generators_1 = require("./tools/list-generators");
|
|
12
|
+
const generator_guide_1 = require("./tools/generator-guide");
|
|
13
|
+
const general_guidance_1 = require("./tools/general-guidance");
|
|
14
|
+
/**
|
|
15
|
+
* Create the MCP Server
|
|
16
|
+
*/
|
|
17
|
+
const createServer = () => {
|
|
18
|
+
const generators = (0, nx_1.listGenerators)();
|
|
19
|
+
const server = new mcp_js_1.McpServer({
|
|
20
|
+
name: 'nx-plugin-for-aws',
|
|
21
|
+
version: '1.0.0',
|
|
22
|
+
}, {
|
|
23
|
+
instructions: `# Nx Plugin for AWS MCP Server
|
|
24
|
+
|
|
25
|
+
This server provides resources and tools for quickly scaffolding AWS projects within an Nx workspace (monorepo), using the Nx Plugin for AWS (@aws/nx-plugin).
|
|
26
|
+
|
|
27
|
+
The Nx Plugin for AWS provides "generators" to add projects or functionality to your workspace. Use this to build the foundations of any project you are building
|
|
28
|
+
on AWS, if the generators apply to your use case.
|
|
29
|
+
|
|
30
|
+
${general_guidance_1.TOOL_SELECTION_GUIDE}
|
|
31
|
+
`,
|
|
32
|
+
});
|
|
33
|
+
(0, general_guidance_1.addGeneralGuidanceTool)(server, generators);
|
|
34
|
+
(0, create_workspace_command_1.addCreateWorkspaceCommandTool)(server);
|
|
35
|
+
(0, list_generators_1.addListGeneratorsTool)(server, generators);
|
|
36
|
+
(0, generator_guide_1.addGeneratorGuideTool)(server, generators);
|
|
37
|
+
return server;
|
|
38
|
+
};
|
|
39
|
+
exports.createServer = createServer;
|
|
40
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/mcp-server/server.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,oEAAoE;AACpE,oCAA6C;AAC7C,+EAAiF;AACjF,6DAAgE;AAChE,6DAAgE;AAChE,+DAGkC;AAElC;;GAEG;AACI,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,UAAU,GAAG,IAAA,mBAAc,GAAE,CAAC;IAEpC,MAAM,MAAM,GAAG,IAAI,kBAAS,CAC1B;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;;;;;;;EAOlB,uCAAoB;CACrB;KACI,CACF,CAAC;IAEF,IAAA,yCAAsB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAA,wDAA6B,EAAC,MAAM,CAAC,CAAC;IACtC,IAAA,uCAAqB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,IAAA,uCAAqB,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA3BW,QAAA,YAAY,gBA2BvB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
/**
|
|
7
|
+
* Add a tool which tells a model how to create an Nx workspace
|
|
8
|
+
*/
|
|
9
|
+
export declare const addCreateWorkspaceCommandTool: (server: McpServer) => void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addCreateWorkspaceCommandTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const schema_1 = require("../schema");
|
|
6
|
+
/**
|
|
7
|
+
* Add a tool which tells a model how to create an Nx workspace
|
|
8
|
+
*/
|
|
9
|
+
const addCreateWorkspaceCommandTool = (server) => {
|
|
10
|
+
server.tool('create-workspace-command', { workspaceName: zod_1.z.string(), packageManager: schema_1.PackageManagerSchema }, ({ workspaceName, packageManager }) => ({
|
|
11
|
+
content: [
|
|
12
|
+
{
|
|
13
|
+
type: 'text',
|
|
14
|
+
text: `Run the following command to create a workspace:
|
|
15
|
+
|
|
16
|
+
\`\`\`bash
|
|
17
|
+
npx create-nx-workspace@~21.0.3 ${workspaceName} --pm=${packageManager} --preset=@aws/nx-plugin --ci=skip
|
|
18
|
+
\`\`\`
|
|
19
|
+
|
|
20
|
+
Note that this will create a workspace in a new directory named ${workspaceName}. If you are already working in the directory
|
|
21
|
+
you would like for your workspace, you can move all the files up one level and delete the empty directory afterwards, eg:
|
|
22
|
+
|
|
23
|
+
\`\`\`bash
|
|
24
|
+
mv ${workspaceName}/{*,.*} ./ && rm -rf ${workspaceName}
|
|
25
|
+
\`\`\`
|
|
26
|
+
|
|
27
|
+
(Note that the above command will complain about moving . and .. but that is expected and ok!)
|
|
28
|
+
`,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
exports.addCreateWorkspaceCommandTool = addCreateWorkspaceCommandTool;
|
|
34
|
+
//# sourceMappingURL=create-workspace-command.js.map
|
|
@@ -0,0 +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,6BAAwB;AACxB,sCAAiD;AAEjD;;GAEG;AACI,MAAM,6BAA6B,GAAG,CAAC,MAAiB,EAAE,EAAE;IACjE,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,EAAE,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,6BAAoB,EAAE,EACnE,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;;;kCAGkB,aAAa,SAAS,cAAc;;;kEAGJ,aAAa;;;;KAI1E,aAAa,wBAAwB,aAAa;;;;GAIpD;aACM;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,6BAA6B,iCA2BxC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { NxGeneratorInfo } from '../../utils/nx';
|
|
7
|
+
export declare const TOOL_SELECTION_GUIDE = "## Tool Selection Guide\n\n- Use the `general-guidance` tool for guidance and best practices for working with Nx and the Nx Plugin for AWS.\n- Use the `create-workspace-command` tool to discover how to create a workspace to start a new project.\n- Use the `list-generators` tool to discover the available generators and how to run them.\n- Use the `generator-guide` tool to retrieve detailed information about a specific generator.";
|
|
8
|
+
/**
|
|
9
|
+
* Add a tool which provides general guidance for using Nx and the Nx Plugin for AWS
|
|
10
|
+
*/
|
|
11
|
+
export declare const addGeneralGuidanceTool: (server: McpServer, generators: NxGeneratorInfo[]) => void;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addGeneralGuidanceTool = exports.TOOL_SELECTION_GUIDE = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const schema_1 = require("../schema");
|
|
6
|
+
const generator_info_1 = require("../generator-info");
|
|
7
|
+
exports.TOOL_SELECTION_GUIDE = `## Tool Selection Guide
|
|
8
|
+
|
|
9
|
+
- Use the \`general-guidance\` tool for guidance and best practices for working with Nx and the Nx Plugin for AWS.
|
|
10
|
+
- Use the \`create-workspace-command\` tool to discover how to create a workspace to start a new project.
|
|
11
|
+
- Use the \`list-generators\` tool to discover the available generators and how to run them.
|
|
12
|
+
- Use the \`generator-guide\` tool to retrieve detailed information about a specific generator.`;
|
|
13
|
+
/**
|
|
14
|
+
* Add a tool which provides general guidance for using Nx and the Nx Plugin for AWS
|
|
15
|
+
*/
|
|
16
|
+
const addGeneralGuidanceTool = (server, generators) => {
|
|
17
|
+
server.tool('general-guidance', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
return ({
|
|
19
|
+
content: [
|
|
20
|
+
{
|
|
21
|
+
type: 'text',
|
|
22
|
+
text: `# Nx Plugin for AWS Guidance
|
|
23
|
+
|
|
24
|
+
${exports.TOOL_SELECTION_GUIDE}
|
|
25
|
+
|
|
26
|
+
## Getting Started
|
|
27
|
+
|
|
28
|
+
- Choose a package manager first. You can choose between ${schema_1.PACKAGE_MANAGERS.join(' ,')}. It's recommended to use "pnpm" if the user has no preference
|
|
29
|
+
- Next, you must create an Nx workspace. Use the \`create-workspace-command\` tool for more details, and provide it with your chosen package manager
|
|
30
|
+
- After this, you can start scaffolding the main components of your application using generators. Use the \`list-generators\` tool to discover available generators, and the \`generator-guide\` tool for more detailed information about a specific generator
|
|
31
|
+
|
|
32
|
+
## Nx Primer
|
|
33
|
+
|
|
34
|
+
- Prefix nx commands with the appropriate prefix for your package manager, for example:
|
|
35
|
+
${schema_1.PACKAGE_MANAGERS.map((pm) => (0, generator_info_1.buildNxCommand)('<options>', pm)).join(' - \n')}
|
|
36
|
+
- Each project in your workspace has a file named \`project.json\` which contains important project information such as its name, and defines the "targets" which can be run for that project, for example building or testing the project
|
|
37
|
+
- Use the command \`nx reset\` to reset the Nx daemon when unexpected issues arise
|
|
38
|
+
- After adding dependencies between projects, use \`nx sync\` to ensure project references are set up correctly
|
|
39
|
+
|
|
40
|
+
## General Instructions
|
|
41
|
+
|
|
42
|
+
- Workspaces contain a single \`package.json\` file at the root which defines the dependencies for all projects. Therefore when installing dependencies, you must add these to the root workspace using the appropriate command for your package manager:
|
|
43
|
+
- pnpm add -w -D <package>
|
|
44
|
+
- yarn add -D <package>
|
|
45
|
+
- npm install --legacy-peer-deps -D <package>
|
|
46
|
+
- bun install -D <package>
|
|
47
|
+
- (Omit -D for production dependencies)
|
|
48
|
+
- When specifying project names as arguments to generators, use the _fully qualified_ project name, for example \`@workspace-name/project-name\`. Check the \`project.json\` file for the specific package to find its fully qualified name
|
|
49
|
+
- When no generator exists for a specific framework required, use the base \`ts#project\` and \`py#project\` generators and build on top, unless building a React website in which case use the \`ts#cloudscape-website\` generator and replace CloudScape with your desired UI component library
|
|
50
|
+
|
|
51
|
+
## Useful Commands
|
|
52
|
+
|
|
53
|
+
- Fix lint issues with \`nx run-many --target lint --configuration=fix --all --output-style=stream\`
|
|
54
|
+
- Build all projects with \`nx run-many --target build --all --output-style=stream\`
|
|
55
|
+
|
|
56
|
+
## Best Practices
|
|
57
|
+
|
|
58
|
+
- Generate all projects into the \`packages/\` directory
|
|
59
|
+
- After making changes to your projects, fix linting issues, then run a full build
|
|
60
|
+
|
|
61
|
+
## Language Specific Guidance
|
|
62
|
+
|
|
63
|
+
Please refer to the below documentation for important details regarding working with any TypeScript or Python projects.
|
|
64
|
+
|
|
65
|
+
${yield (0, generator_info_1.fetchGuidePages)(['typescript-project', 'python-project'], generators)}
|
|
66
|
+
|
|
67
|
+
`,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
});
|
|
71
|
+
}));
|
|
72
|
+
};
|
|
73
|
+
exports.addGeneralGuidanceTool = addGeneralGuidanceTool;
|
|
74
|
+
//# sourceMappingURL=general-guidance.js.map
|
|
@@ -0,0 +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;AAEvD,QAAA,oBAAoB,GAAG;;;;;gGAK4D,CAAC;AAEjG;;GAEG;AACI,MAAM,sBAAsB,GAAG,CACpC,MAAiB,EACjB,UAA6B,EAC7B,EAAE;IACF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAS,EAAE;QAAC,OAAA,CAAC;YAC3C,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;EAEZ,4BAAoB;;;;2DAIqC,yBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;EAOpF,yBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,+BAAc,EAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3E,MAAM,IAAA,gCAAe,EAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC;;KAExE;iBACE;aACF;SACF,CAAC,CAAA;MAAA,CAAC,CAAC;AACN,CAAC,CAAC;AAzDW,QAAA,sBAAsB,0BAyDjC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { NxGeneratorInfo } from '../../utils/nx';
|
|
7
|
+
/**
|
|
8
|
+
* Add a tool which provides a detailed guide for an individual generator
|
|
9
|
+
*/
|
|
10
|
+
export declare const addGeneratorGuideTool: (server: McpServer, generators: NxGeneratorInfo[]) => void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addGeneratorGuideTool = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const generator_info_1 = require("../generator-info");
|
|
7
|
+
const schema_1 = require("../schema");
|
|
8
|
+
/**
|
|
9
|
+
* Add a tool which provides a detailed guide for an individual generator
|
|
10
|
+
*/
|
|
11
|
+
const addGeneratorGuideTool = (server, generators) => {
|
|
12
|
+
server.tool('generator-guide', {
|
|
13
|
+
packageManager: schema_1.PackageManagerSchema,
|
|
14
|
+
generator: zod_1.z.custom((v) => generators.map((g) => g.id).includes(v)),
|
|
15
|
+
}, (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ packageManager, generator: generatorId }) {
|
|
16
|
+
const generator = generators.find((g) => g.id === generatorId);
|
|
17
|
+
if (!generator) {
|
|
18
|
+
throw new Error(`No generator found with id ${generatorId}. Available generators: ${generators.map((g) => g.id).join(' ,')}`);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
content: [
|
|
22
|
+
{
|
|
23
|
+
type: 'text',
|
|
24
|
+
text: `## ${(0, generator_info_1.renderGeneratorInfo)(packageManager, generator)}
|
|
25
|
+
|
|
26
|
+
# Guide
|
|
27
|
+
|
|
28
|
+
${yield (0, generator_info_1.fetchGuidePagesForGenerator)(generator, generators, packageManager)}
|
|
29
|
+
`,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
}));
|
|
34
|
+
};
|
|
35
|
+
exports.addGeneratorGuideTool = addGeneratorGuideTool;
|
|
36
|
+
//# sourceMappingURL=generator-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-guide.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/mcp-server/tools/generator-guide.ts"],"names":[],"mappings":";;;;AAMA,6BAAwB;AACxB,sDAG2B;AAC3B,sCAAiD;AAEjD;;GAEG;AACI,MAAM,qBAAqB,GAAG,CACnC,MAAiB,EACjB,UAA6B,EAC7B,EAAE;IACF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB;QACE,cAAc,EAAE,6BAAoB;QACpC,SAAS,EAAE,OAAC,CAAC,MAAM,CAAS,CAAC,CAAC,EAAE,EAAE,CAChC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACxC;KACF,EACD,KAAmD,EAAE,oDAA9C,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,8BAA8B,WAAW,2BAA2B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7G,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAA,oCAAmB,EAAC,cAAc,EAAE,SAAS,CAAC;;;;EAIpE,MAAM,IAAA,4CAA2B,EAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC;CACzE;iBACU;aACF;SACF,CAAC;IACJ,CAAC,CAAA,CACF,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,qBAAqB,yBAmChC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { NxGeneratorInfo } from '../../utils/nx';
|
|
7
|
+
/**
|
|
8
|
+
* Adds a tool which lists details about the available generators
|
|
9
|
+
*/
|
|
10
|
+
export declare const addListGeneratorsTool: (server: McpServer, generators: NxGeneratorInfo[]) => void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addListGeneratorsTool = void 0;
|
|
4
|
+
const schema_1 = require("../schema");
|
|
5
|
+
const generator_info_1 = require("../generator-info");
|
|
6
|
+
/**
|
|
7
|
+
* Adds a tool which lists details about the available generators
|
|
8
|
+
*/
|
|
9
|
+
const addListGeneratorsTool = (server, generators) => {
|
|
10
|
+
server.tool('list-generators', { packageManager: schema_1.PackageManagerSchema }, ({ packageManager }) => ({
|
|
11
|
+
content: [
|
|
12
|
+
{
|
|
13
|
+
type: 'text',
|
|
14
|
+
text: `## Available Generators
|
|
15
|
+
|
|
16
|
+
${generators.map((g) => `### ${(0, generator_info_1.renderGeneratorInfo)(packageManager, g)}`).join('\n\n')}
|
|
17
|
+
`,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
exports.addListGeneratorsTool = addListGeneratorsTool;
|
|
23
|
+
//# sourceMappingURL=list-generators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-generators.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/mcp-server/tools/list-generators.ts"],"names":[],"mappings":";;;AAKA,sCAAiD;AACjD,sDAAwD;AAGxD;;GAEG;AACI,MAAM,qBAAqB,GAAG,CACnC,MAAiB,EACjB,UAA6B,EAC7B,EAAE;IACF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,EAAE,cAAc,EAAE,6BAAoB,EAAE,EACxC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;;IAEZ,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAA,oCAAmB,EAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;GACpF;aACM;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,qBAAqB,yBAmBhC"}
|
|
@@ -9,7 +9,6 @@ description: Some description
|
|
|
9
9
|
import { FileTree } from '@astrojs/starlight/components';
|
|
10
10
|
import RunGenerator from '@components/run-generator.astro';
|
|
11
11
|
import GeneratorParameters from '@components/generator-parameters.astro';
|
|
12
|
-
import schema from '../../../../../../packages/nx-plugin/src/foo-bar/schema.json';
|
|
13
12
|
|
|
14
13
|
TODO: Add an overview of your generator here.
|
|
15
14
|
|
|
@@ -23,7 +22,7 @@ You can generate a foo#bar in two ways:
|
|
|
23
22
|
|
|
24
23
|
### Options
|
|
25
24
|
|
|
26
|
-
<GeneratorParameters
|
|
25
|
+
<GeneratorParameters generator="foo#bar" />
|
|
27
26
|
|
|
28
27
|
## Generator Output
|
|
29
28
|
|
|
@@ -6,7 +6,6 @@ description: <%- description ?? 'TODO - A short description of your generator' %
|
|
|
6
6
|
import { FileTree } from '@astrojs/starlight/components';
|
|
7
7
|
import RunGenerator from '@components/run-generator.astro';
|
|
8
8
|
import GeneratorParameters from '@components/generator-parameters.astro';
|
|
9
|
-
import schema from '../../../../../../packages/nx-plugin/src/<%- generatorSubDir %>/schema.json';
|
|
10
9
|
|
|
11
10
|
TODO: Add an overview of your generator here.
|
|
12
11
|
|
|
@@ -20,7 +19,7 @@ You can generate a <%- name %> in two ways:
|
|
|
20
19
|
|
|
21
20
|
### Options
|
|
22
21
|
|
|
23
|
-
<GeneratorParameters
|
|
22
|
+
<GeneratorParameters generator="<%- name %>" />
|
|
24
23
|
|
|
25
24
|
## Generator Output
|
|
26
25
|
|
package/src/utils/nx.d.ts
CHANGED
|
@@ -2,7 +2,16 @@ export interface NxGeneratorInfo {
|
|
|
2
2
|
readonly id: string;
|
|
3
3
|
readonly metric: string;
|
|
4
4
|
readonly resolvedFactoryPath: string;
|
|
5
|
+
readonly resolvedSchemaPath: string;
|
|
6
|
+
readonly hidden?: boolean;
|
|
7
|
+
readonly description: string;
|
|
8
|
+
readonly guidePages?: string[];
|
|
5
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* List Nx Plugin for AWS generators
|
|
12
|
+
* @param includeHidden include hidden generators (default false)
|
|
13
|
+
*/
|
|
14
|
+
export declare const listGenerators: (includeHidden?: boolean) => NxGeneratorInfo[];
|
|
6
15
|
/**
|
|
7
16
|
* Return generator information. Call this from a generator method with __filename
|
|
8
17
|
*/
|
package/src/utils/nx.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPackageVersion = exports.getGeneratorInfo = void 0;
|
|
3
|
+
exports.getPackageVersion = exports.getGeneratorInfo = exports.listGenerators = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/**
|
|
6
6
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
@@ -9,11 +9,21 @@ const tslib_1 = require("tslib");
|
|
|
9
9
|
const generators_json_1 = tslib_1.__importDefault(require("../../generators.json"));
|
|
10
10
|
const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
|
|
11
11
|
const path = tslib_1.__importStar(require("path"));
|
|
12
|
-
const GENERATORS = Object.entries(generators_json_1.default.generators).map(([id, { metric, factory
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}))
|
|
12
|
+
const GENERATORS = Object.entries(generators_json_1.default.generators).map(([id, info]) => (Object.assign(Object.assign({ id, metric: info.metric, resolvedFactoryPath: path.resolve(__dirname, '..', '..', info.factory), resolvedSchemaPath: path.resolve(__dirname, '..', '..', info.schema), description: info.description }, ('hidden' in info && info.hidden
|
|
13
|
+
? {
|
|
14
|
+
hidden: info.hidden,
|
|
15
|
+
}
|
|
16
|
+
: {})), ('guidePages' in info && info.guidePages
|
|
17
|
+
? {
|
|
18
|
+
guidePages: info.guidePages,
|
|
19
|
+
}
|
|
20
|
+
: {}))));
|
|
21
|
+
/**
|
|
22
|
+
* List Nx Plugin for AWS generators
|
|
23
|
+
* @param includeHidden include hidden generators (default false)
|
|
24
|
+
*/
|
|
25
|
+
const listGenerators = (includeHidden = false) => GENERATORS.filter((g) => includeHidden || !g.hidden);
|
|
26
|
+
exports.listGenerators = listGenerators;
|
|
17
27
|
/**
|
|
18
28
|
* Return generator information. Call this from a generator method with __filename
|
|
19
29
|
*/
|
package/src/utils/nx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/nx.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,oFAAmD;AACnD,8EAA6C;AAC7C,mDAA6B;
|
|
1
|
+
{"version":3,"file":"nx.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/nx.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,oFAAmD;AACnD,8EAA6C;AAC7C,mDAA6B;AAY7B,MAAM,UAAU,GAAsB,MAAM,CAAC,OAAO,CAClD,yBAAc,CAAC,UAAU,CAC1B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,+BACpB,EAAE,EACF,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EACtE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EACpE,WAAW,EAAE,IAAI,CAAC,WAAW,IAC1B,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM;IACjC,CAAC,CAAC;QACE,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB;IACH,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU;IACzC,CAAC,CAAC;QACE,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B;IACH,CAAC,CAAC,EAAE,CAAC,EACP,CAAC,CAAC;AAEJ;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAC,aAAa,GAAG,KAAK,EAAqB,EAAE,CACzE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAD1C,QAAA,cAAc,kBAC4B;AAEvD;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAC9B,iBAAyB,EACR,EAAE;IACnB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,UAAU,CAAC,IAAI,CACpB,CAAC,aAAa,EAAE,EAAE,CAChB,aAAa,CAAC,mBAAmB,KAAK,mBAAmB,CAC5D,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,gBAAgB,oBAS3B;AAEK,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,OAAO,sBAAW,CAAC,OAAO,CAAC;AAC7B,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B"}
|
package/src/utils/versions.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare const VERSIONS: {
|
|
|
13
13
|
readonly '@aws-lambda-powertools/tracer': "^2.17.0";
|
|
14
14
|
readonly '@nxlv/python': "^21.0.0";
|
|
15
15
|
readonly '@nx/devkit': "~21.0.3";
|
|
16
|
-
readonly '@modelcontextprotocol/sdk': "^1.
|
|
16
|
+
readonly '@modelcontextprotocol/sdk': "^1.11.3";
|
|
17
17
|
readonly '@tanstack/react-router': "^1.114.27";
|
|
18
18
|
readonly '@tanstack/router-plugin': "^1.114.27";
|
|
19
19
|
readonly '@cloudscape-design/board-components': "^3.0.94";
|
|
@@ -46,5 +46,5 @@ export declare const VERSIONS: {
|
|
|
46
46
|
* Add versions to the given dependencies
|
|
47
47
|
*/
|
|
48
48
|
export declare const withVersions: (deps: (keyof typeof VERSIONS)[]) => {
|
|
49
|
-
[k: string]: "^0.0.60" | "^2.185.0-alpha.0" | "^3.775.0" | "^2.17.0" | "^21.0.0" | "~21.0.3" | "^1.
|
|
49
|
+
[k: string]: "^0.0.60" | "^2.185.0-alpha.0" | "^3.775.0" | "^2.17.0" | "^21.0.0" | "~21.0.3" | "^1.11.3" | "^1.114.27" | "^3.0.94" | "^3.0.928" | "^1.0.38" | "^5.74.3" | "11.0.0" | "^22.13.13" | "^8.10.148" | "^4.2.0" | "^1.0.20" | "^2.1006.0" | "^2.185.0" | "^3.10.3" | "^10.4.2" | "^0.25.1" | "^5.2.5" | "^2.4.0" | "^3.2.0" | "^3.5.3" | "^0.5.21" | "^4.19.3" | "^5.1.4" | "^3.24.2";
|
|
50
50
|
};
|
package/src/utils/versions.js
CHANGED
|
@@ -16,7 +16,7 @@ exports.VERSIONS = {
|
|
|
16
16
|
'@aws-lambda-powertools/tracer': '^2.17.0',
|
|
17
17
|
'@nxlv/python': '^21.0.0',
|
|
18
18
|
'@nx/devkit': '~21.0.3',
|
|
19
|
-
'@modelcontextprotocol/sdk': '^1.
|
|
19
|
+
'@modelcontextprotocol/sdk': '^1.11.3',
|
|
20
20
|
'@tanstack/react-router': '^1.114.27',
|
|
21
21
|
'@tanstack/router-plugin': '^1.114.27',
|
|
22
22
|
'@cloudscape-design/board-components': '^3.0.94',
|