@aws/nx-plugin 0.107.0 → 0.108.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.
Files changed (43) hide show
  1. package/LICENSE-THIRD-PARTY +2401 -175
  2. package/package.json +19 -8
  3. package/src/infra/app/__snapshots__/generator.spec.ts.snap +13 -13
  4. package/src/mcp-server/generator-info.d.ts +95 -13
  5. package/src/mcp-server/generator-info.js +319 -164
  6. package/src/mcp-server/generator-info.js.map +1 -1
  7. package/src/mcp-server/guide-pipeline.d.ts +28 -0
  8. package/src/mcp-server/guide-pipeline.js +393 -0
  9. package/src/mcp-server/guide-pipeline.js.map +1 -0
  10. package/src/mcp-server/guide-render.d.ts +25 -0
  11. package/src/mcp-server/guide-render.js +50 -0
  12. package/src/mcp-server/guide-render.js.map +1 -0
  13. package/src/mcp-server/mdx-ast.d.ts +30 -0
  14. package/src/mcp-server/mdx-ast.js +96 -0
  15. package/src/mcp-server/mdx-ast.js.map +1 -0
  16. package/src/mcp-server/option-filter.d.ts +33 -0
  17. package/src/mcp-server/option-filter.js +119 -0
  18. package/src/mcp-server/option-filter.js.map +1 -0
  19. package/src/mcp-server/schema-registry.d.ts +36 -0
  20. package/src/mcp-server/schema-registry.js +79 -0
  21. package/src/mcp-server/schema-registry.js.map +1 -0
  22. package/src/mcp-server/tools/generator-guide.d.ts +7 -1
  23. package/src/mcp-server/tools/generator-guide.js +32 -4
  24. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  25. package/src/mcp-server/tools/list-generators.d.ts +10 -1
  26. package/src/mcp-server/tools/list-generators.js +34 -13
  27. package/src/mcp-server/tools/list-generators.js.map +1 -1
  28. package/src/preset/__snapshots__/generator.spec.ts.snap +3 -3
  29. package/src/preset/schema.json +2 -2
  30. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +1 -1
  31. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +4 -4
  32. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +2 -2
  33. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +2 -0
  34. package/src/ts/nx-generator/files/nx-plugin-for-aws/docs/__nameKebabCase__.mdx.template +2 -0
  35. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +27 -27
  36. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +12 -3
  37. package/src/utils/files/common/shadcn/src/components/ui/avatar.tsx.template +60 -4
  38. package/src/utils/files/common/shadcn/src/components/ui/textarea.tsx.template +1 -1
  39. package/src/utils/generators.d.ts +1 -1
  40. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +13 -3
  41. package/src/utils/versions.d.ts +37 -37
  42. package/src/utils/versions.js +36 -36
  43. package/src/utils/versions.js.map +1 -1
@@ -1,28 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.postProcessGuide = exports.fetchSnippet = exports.fetchGuidePages = exports.fetchGuidePagesForGenerator = exports.renderGeneratorInfo = exports.buildNxCommand = void 0;
3
+ exports.postProcessGuide = exports.fetchSnippet = exports.fetchGuidePages = exports.fetchGuideFrontmatters = exports.fetchGuidePagesForGenerator = exports.renderFilterableOptionsAsync = exports.loadFilterableOptionsFromSchema = exports.renderGeneratorInfo = exports.buildNxCommand = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  /**
6
6
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
7
7
  * SPDX-License-Identifier: Apache-2.0
8
8
  */
9
9
  const names_1 = require("../utils/names");
10
- const commands_1 = require("../utils/commands");
10
+ const option_filter_1 = require("./option-filter");
11
+ const guide_render_1 = require("./guide-render");
12
+ const guide_pipeline_1 = require("./guide-pipeline");
13
+ const mdx_ast_1 = require("./mdx-ast");
14
+ const schema_registry_1 = require("./schema-registry");
11
15
  const fs_1 = tslib_1.__importDefault(require("fs"));
12
- /**
13
- * Build a command to run nx
14
- */
15
- const buildNxCommand = (command, pm) => pm ? (0, commands_1.buildPackageManagerExecCommand)(pm, `nx ${command}`) : `nx ${command}`;
16
- exports.buildNxCommand = buildNxCommand;
17
- const renderSchema = (schema) => Object.entries(schema.properties)
18
- .map(([parameter, parameterSchema]) => `- ${parameter} [type: ${parameterSchema.type}]${parameterSchema.enum ? ` [options: ${parameterSchema.enum.join(', ')}]` : ''}${(schema.required ?? []).includes(parameter) ? ` (required)` : ''} ${parameterSchema.description}`)
19
- .join('\n');
20
- const renderGeneratorCommand = (generatorId, schema, packageManager) => `\`\`\`bash
21
- ${(0, exports.buildNxCommand)(`g @aws/nx-plugin:${generatorId} --no-interactive ${Object.entries(schema.properties)
22
- .filter(([parameter]) => (schema.required ?? []).includes(parameter))
23
- .map(([parameter]) => `--${parameter}=<${parameter}>`)
24
- .join(' ')}`, packageManager)}
25
- \`\`\``;
16
+ const path_1 = tslib_1.__importDefault(require("path"));
17
+ // Re-export so existing callers of `generator-info` continue working.
18
+ var guide_render_2 = require("./guide-render");
19
+ Object.defineProperty(exports, "buildNxCommand", { enumerable: true, get: function () { return guide_render_2.buildNxCommand; } });
26
20
  /**
27
21
  * Render summary information about a generator
28
22
  */
@@ -33,37 +27,322 @@ const renderGeneratorInfo = (packageManager, info) => {
33
27
  Description: ${info.description}
34
28
 
35
29
  Available Parameters:
36
- ${renderSchema(schema)}
30
+ ${(0, guide_render_1.renderSchema)(schema)}
37
31
 
38
32
  Command:
39
- ${renderGeneratorCommand(info.id, schema, packageManager)}
33
+ ${(0, guide_render_1.renderGeneratorCommand)(info.id, schema, packageManager)}
40
34
  `;
41
35
  };
42
36
  exports.renderGeneratorInfo = renderGeneratorInfo;
43
37
  /**
44
- * Retrieve the markdown guide pages for a generator from github.
45
- * If the generator has guidePages in generators.json we fetch all of those, otherwise we
46
- * try to fetch a guide with the generator name kebab-cased.
38
+ * Enum properties from the generator's JSON schema the options a user
39
+ * could pass on the CLI. Agents use this list to pick `options` values
40
+ * when calling `generator-guide`.
41
+ *
42
+ * Multi-variant generators (e.g. `connection`) layer additional keys on
43
+ * top via each guide page's `when:` frontmatter — merged in by
44
+ * `collectFrontmatterFilterableOptions` / `renderFilterableOptionsAsync`.
45
+ */
46
+ const loadFilterableOptionsFromSchema = (info) => {
47
+ try {
48
+ const schema = JSON.parse(fs_1.default.readFileSync(info.resolvedSchemaPath, 'utf-8'));
49
+ return (0, schema_registry_1.filterableOptionsFromSchema)(schema);
50
+ }
51
+ catch {
52
+ return [];
53
+ }
54
+ };
55
+ exports.loadFilterableOptionsFromSchema = loadFilterableOptionsFromSchema;
56
+ /**
57
+ * Look at the `when:` frontmatter of every guide page belonging to a
58
+ * generator and add any keys not already surfaced via the JSON schema.
59
+ * This lets the `connection` generator advertise `sourceType` /
60
+ * `targetType` / `protocol` without touching `generators.json`.
61
+ */
62
+ const collectFrontmatterFilterableOptions = (fetched, fromSchema) => {
63
+ const extras = new Map();
64
+ for (const guide of fetched) {
65
+ const when = guide.frontmatter.when;
66
+ if (!when)
67
+ continue;
68
+ for (const [key, rawValues] of Object.entries(when)) {
69
+ const bucket = extras.get(key) ?? new Set();
70
+ for (const v of rawValues)
71
+ bucket.add(v);
72
+ extras.set(key, bucket);
73
+ }
74
+ }
75
+ const out = [];
76
+ const seen = new Set(fromSchema.map((o) => o.key));
77
+ for (const [key, values] of extras) {
78
+ if (seen.has(key))
79
+ continue;
80
+ out.push({ key, enum: [...values] });
81
+ }
82
+ return out;
83
+ };
84
+ /**
85
+ * Decide whether the agent-supplied `options` describe a combination the
86
+ * generator actually supports. Returns undefined when the combination is
87
+ * fine (including when the agent hasn't narrowed enough to decide) and a
88
+ * human-readable explanation otherwise.
89
+ *
90
+ * Supported combinations are inferred from the union of `when:` predicates
91
+ * across a generator's guide pages. A generator with no `when:` predicates
92
+ * on any of its pages (the common case — `ts#trpc-api`, `py#fast-api` …)
93
+ * opts out of the check automatically.
94
+ */
95
+ const describeUnsupportedCombinationFromFetched = (info, fetched, options) => {
96
+ if (!options)
97
+ return undefined;
98
+ const predicates = fetched
99
+ .map((g) => g.frontmatter.when)
100
+ .filter((w) => w !== undefined);
101
+ if (predicates.length === 0)
102
+ return undefined;
103
+ // Consider only the option keys that actually participate in at least
104
+ // one predicate — other options (e.g. schema enums) are orthogonal.
105
+ const predicateKeys = new Set();
106
+ for (const p of predicates)
107
+ for (const k of Object.keys(p))
108
+ predicateKeys.add(k);
109
+ const suppliedPredicateKeys = [...predicateKeys].filter((k) => options[k] !== undefined);
110
+ if (suppliedPredicateKeys.length === 0)
111
+ return undefined;
112
+ // If any predicate is still reachable given the keys the agent has
113
+ // committed to so far, treat this as a partial (valid) selection and
114
+ // skip the warning — the agent can keep narrowing.
115
+ const stillReachable = predicates.some((pred) => suppliedPredicateKeys.every((k) => {
116
+ const values = pred[k];
117
+ if (values === undefined)
118
+ return true; // predicate doesn't care about this key
119
+ return values.includes(options[k]);
120
+ }));
121
+ if (stillReachable)
122
+ return undefined;
123
+ return renderUnsupportedMessage(info, options, predicates);
124
+ };
125
+ const renderUnsupportedMessage = (info, requested, predicates) => {
126
+ const requestedDesc = Object.entries(requested)
127
+ .map(([k, v]) => `${k} = ${v}`)
128
+ .join(', ');
129
+ const supportedList = predicates
130
+ .map((pred) => {
131
+ const parts = Object.entries(pred).map(([k, vs]) => `${k} = ${vs.join(' | ')}`);
132
+ return `- ${parts.join(', ')}`;
133
+ })
134
+ .join('\n');
135
+ return `## ${info.id}
136
+
137
+ > [!WARNING] Unsupported combination: ${requestedDesc}. The \`${info.id}\` generator has no guide variant matching this combination — running it will likely fail.
138
+
139
+ Supported combinations:
140
+ ${supportedList}
141
+
142
+ Pick a combination from the list above, or choose a different generator.`;
143
+ };
144
+ /**
145
+ * Render the "Filterable options" block that list-generators emits for each
146
+ * generator. Only keys the guide pages actually branch on are included —
147
+ * enum properties the schema exposes but no guide filters on are omitted
148
+ * so agents don't waste tokens setting options that won't affect the
149
+ * returned content.
150
+ *
151
+ * Keys come from two sources:
152
+ * - Schema enums, intersected with keys referenced by
153
+ * `<OptionFilter when>` / `<TabItem _filter>` across the generator's
154
+ * guide pages.
155
+ * - Per-page `when:` frontmatter blocks (multi-variant generators like
156
+ * `connection`).
157
+ */
158
+ const renderFilterableOptionsAsync = async (info) => {
159
+ const fetched = await (0, exports.fetchGuideFrontmatters)(info);
160
+ const referenced = new Set();
161
+ for (const g of fetched) {
162
+ for (const k of g.referencedKeys)
163
+ referenced.add(k);
164
+ }
165
+ const schemaOptions = (0, exports.loadFilterableOptionsFromSchema)(info).filter((o) => referenced.has(o.key));
166
+ const frontmatterOptions = collectFrontmatterFilterableOptions(fetched, schemaOptions);
167
+ return formatFilterableOptions(info, [
168
+ ...schemaOptions,
169
+ ...frontmatterOptions,
170
+ ]);
171
+ };
172
+ exports.renderFilterableOptionsAsync = renderFilterableOptionsAsync;
173
+ const formatFilterableOptions = (_info, filterable) => {
174
+ if (filterable.length === 0)
175
+ return '';
176
+ const entries = filterable
177
+ .map((opt) => {
178
+ const def = opt.default ? ` (default: ${opt.default})` : '';
179
+ return `- ${opt.key}: ${opt.enum.join(' | ')}${def}`;
180
+ })
181
+ .join('\n');
182
+ return `\`generator-guide\` options:\n${entries}`;
183
+ };
184
+ /**
185
+ * Retrieve the markdown guide pages for a generator.
186
+ *
187
+ * Every page listed in `guidePages` (or the kebab-cased generator id when
188
+ * that field is absent) is fetched in parallel — local files first, GitHub
189
+ * fallback — and its YAML frontmatter is parsed to pick up any `when:`
190
+ * predicate. Pages without a `when:` are always included; pages with a
191
+ * `when:` are included when either:
192
+ * - `options` is absent (agent hasn't narrowed yet — keep every variant),
193
+ * or
194
+ * - the predicate matches `options` using the same semantics as
195
+ * `<OptionFilter when={{…}}>` (AND across keys, OR within a key).
196
+ *
197
+ * If the agent has supplied enough options to identify a combination and
198
+ * no variant page matches, the result is `{ kind: 'unsupported' }` and the
199
+ * caller surfaces the warning directly.
47
200
  */
48
- const fetchGuidePagesForGenerator = async (info, generators, packageManager, snippetContentProvider) => {
49
- return await (0, exports.fetchGuidePages)(info.guidePages ?? [(0, names_1.kebabCase)(info.id)], generators, packageManager, snippetContentProvider);
201
+ const fetchGuidePagesForGenerator = async (info, generators, packageManager, snippetContentProvider, options) => {
202
+ const fetched = await (0, exports.fetchGuideFrontmatters)(info);
203
+ const unsupported = describeUnsupportedCombinationFromFetched(info, fetched, options);
204
+ if (unsupported !== undefined) {
205
+ return { kind: 'unsupported', content: unsupported };
206
+ }
207
+ const kept = fetched.filter((g) => {
208
+ if (!g.frontmatter.when)
209
+ return true;
210
+ if (!options)
211
+ return true;
212
+ return (0, option_filter_1.evaluatePredicate)(g.frontmatter.when, false, options);
213
+ });
214
+ const processed = await Promise.all(kept.map((g) => (0, exports.postProcessGuide)(g.body, generators, packageManager, snippetContentProvider, options)));
215
+ return { kind: 'ok', content: processed.join('\n\n') };
50
216
  };
51
217
  exports.fetchGuidePagesForGenerator = fetchGuidePagesForGenerator;
52
218
  /**
53
- * Fetch markdown guide pages from github
219
+ * Fetch every guide page referenced by a generator, in parallel, and
220
+ * return { page, raw, body, frontmatter } for each one. Used by both
221
+ * `fetchGuidePagesForGenerator` (to filter + render) and
222
+ * `renderFilterableOptionsAsync` (to build the filterable-options list
223
+ * from the union of frontmatter `when:` keys).
224
+ */
225
+ const fetchGuideFrontmatters = async (info) => {
226
+ const pages = [...(info.guidePages ?? [(0, names_1.kebabCase)(info.id)])];
227
+ const results = await Promise.allSettled(pages.map(async (page) => ({ page, raw: await fetchGuideRaw(page) })));
228
+ const fulfilled = [];
229
+ for (const r of results) {
230
+ if (r.status === 'fulfilled' && r.value.raw)
231
+ fulfilled.push(r.value);
232
+ }
233
+ return Promise.all(fulfilled.map(async ({ page, raw }) => {
234
+ const parsed = await parseGuide(raw);
235
+ return { page, raw, ...parsed };
236
+ }));
237
+ };
238
+ exports.fetchGuideFrontmatters = fetchGuideFrontmatters;
239
+ /**
240
+ * Read a guide's raw MDX, local filesystem first, GitHub fallback.
241
+ */
242
+ const fetchGuideRaw = async (page) => {
243
+ const local = fetchLocalGuide(page);
244
+ if (local !== undefined)
245
+ return local;
246
+ const response = await fetch(`https://raw.githubusercontent.com/awslabs/nx-plugin-for-aws/refs/heads/main/docs/src/content/docs/en/guides/${page}.mdx`);
247
+ return await response.text();
248
+ };
249
+ /**
250
+ * Parse a guide's MDX once and return the body, the frontmatter, and the
251
+ * set of option keys its `<OptionFilter>` / `<TabItem _filter>` blocks
252
+ * actually reference. The yaml node's `position.end.offset` gives us the
253
+ * body slice without re-stringifying the tree.
254
+ */
255
+ const parseGuide = async (raw) => {
256
+ const tree = await (0, guide_pipeline_1.parseMdx)(raw);
257
+ const { data, bodyOffset } = (0, mdx_ast_1.extractFrontmatter)(tree);
258
+ const body = raw.slice(bodyOffset).replace(/^\r?\n/, '');
259
+ const frontmatter = {};
260
+ if (typeof data.title === 'string')
261
+ frontmatter.title = data.title;
262
+ if (data.when && typeof data.when === 'object' && !Array.isArray(data.when)) {
263
+ const when = {};
264
+ for (const [key, value] of Object.entries(data.when)) {
265
+ when[key] = Array.isArray(value) ? value.map(String) : [String(value)];
266
+ }
267
+ frontmatter.when = when;
268
+ }
269
+ return {
270
+ body,
271
+ frontmatter,
272
+ referencedKeys: (0, mdx_ast_1.collectFilterableKeysFromJsx)(tree),
273
+ };
274
+ };
275
+ /**
276
+ * Search the monorepo-relative guides directory for a page before falling
277
+ * back to GitHub. This is the common case during local development
278
+ * (`pnpm nx mcp-inspect @aws/nx-plugin`), and it also means test workspaces
279
+ * that link the built plugin read the guides they're actually iterating on
280
+ * instead of whatever is currently on `main`.
281
+ *
282
+ * When running as the published `@aws/nx-plugin-mcp` package, `__dirname`
283
+ * resolves somewhere inside `node_modules/@aws/nx-plugin-mcp`, the local
284
+ * probe misses, and we fall back to GitHub.
285
+ */
286
+ const GUIDES_RELATIVE_PROBES = [
287
+ // nx-plugin package compiled from source (src/mcp-server/…)
288
+ '../../../docs/src/content/docs/en/guides',
289
+ // rolldown-bundled `@aws/nx-plugin-mcp` binary in dist
290
+ '../../../../docs/src/content/docs/en/guides',
291
+ ];
292
+ const fetchLocalGuide = (guide) => {
293
+ for (const rel of GUIDES_RELATIVE_PROBES) {
294
+ const candidate = path_1.default.resolve(__dirname, rel, `${guide}.mdx`);
295
+ try {
296
+ if (fs_1.default.existsSync(candidate)) {
297
+ return fs_1.default.readFileSync(candidate, 'utf-8');
298
+ }
299
+ }
300
+ catch {
301
+ // Probe failure → keep looking.
302
+ }
303
+ }
304
+ return undefined;
305
+ };
306
+ /**
307
+ * Fetch markdown guide pages. Prefers local files (see `fetchLocalGuide`)
308
+ * and falls back to fetching from the repo on `main` when no local copy
309
+ * is available.
54
310
  */
55
- const fetchGuidePages = async (guidePages, generators, packageManager, snippetContentProvider) => {
56
- const guides = await Promise.allSettled(guidePages.map(async (guide) => await (await fetch(`https://raw.githubusercontent.com/awslabs/nx-plugin-for-aws/refs/heads/main/docs/src/content/docs/en/guides/${guide}.mdx`)).text()));
311
+ const fetchGuidePages = async (guidePages, generators, packageManager, snippetContentProvider, options) => {
312
+ const guides = await Promise.allSettled(guidePages.map(async (guide) => {
313
+ const local = fetchLocalGuide(guide);
314
+ if (local !== undefined)
315
+ return local;
316
+ const response = await fetch(`https://raw.githubusercontent.com/awslabs/nx-plugin-for-aws/refs/heads/main/docs/src/content/docs/en/guides/${guide}.mdx`);
317
+ return await response.text();
318
+ }));
57
319
  const fulfilled = guides.filter((result) => result.status === 'fulfilled');
58
- const processed = await Promise.all(fulfilled.map((result) => (0, exports.postProcessGuide)(result.value, generators, packageManager, snippetContentProvider)));
320
+ const processed = await Promise.all(fulfilled.map((result) => (0, exports.postProcessGuide)(result.value, generators, packageManager, snippetContentProvider, options)));
59
321
  return processed.join('\n\n');
60
322
  };
61
323
  exports.fetchGuidePages = fetchGuidePages;
324
+ const SNIPPETS_RELATIVE_PROBES = [
325
+ '../../../docs/src/content/docs/en/snippets',
326
+ '../../../../docs/src/content/docs/en/snippets',
327
+ ];
62
328
  const SNIPPET_BASE_URL = 'https://raw.githubusercontent.com/awslabs/nx-plugin-for-aws/refs/heads/main/docs/src/content/docs/en/snippets';
63
329
  /**
64
- * Fetch a snippet's content from github
330
+ * Fetch a snippet's content. Tries the local repo checkout first (when
331
+ * running under `mcp-inspect` or a linked test workspace) before falling
332
+ * back to the copy on `main`.
65
333
  */
66
334
  const fetchSnippet = async (snippetName) => {
335
+ for (const rel of SNIPPETS_RELATIVE_PROBES) {
336
+ const candidate = path_1.default.resolve(__dirname, rel, `${snippetName}.mdx`);
337
+ try {
338
+ if (fs_1.default.existsSync(candidate)) {
339
+ return fs_1.default.readFileSync(candidate, 'utf-8');
340
+ }
341
+ }
342
+ catch {
343
+ // Probe failure — try next fallback.
344
+ }
345
+ }
67
346
  try {
68
347
  const response = await fetch(`${SNIPPET_BASE_URL}/${snippetName}.mdx`);
69
348
  if (!response.ok) {
@@ -76,145 +355,21 @@ const fetchSnippet = async (snippetName) => {
76
355
  }
77
356
  };
78
357
  exports.fetchSnippet = fetchSnippet;
79
- const findGeneratorAndSchema = (generators, generatorId) => {
80
- const generator = generators.find((info) => info.id === generatorId);
81
- if (!generator) {
82
- return undefined;
83
- }
84
- try {
85
- const schema = JSON.parse(fs_1.default.readFileSync(generator.resolvedSchemaPath, 'utf-8'));
86
- return { generator, schema };
87
- }
88
- catch {
89
- return undefined;
90
- }
91
- };
92
358
  /**
93
- * Post-process a guide page to "inline" relevant components
359
+ * Post-process a guide page. Thin wrapper around the unified/remark-mdx
360
+ * pipeline in `guide-pipeline.ts` — the real work (snippet inlining,
361
+ * OptionFilter/Infrastructure/TabItem filtering, command/schema rendering)
362
+ * happens there. Kept under the same name so other packages
363
+ * (e.g. the docs site's `markdown-content.astro`) can continue importing
364
+ * `postProcessGuide` with the same signature.
94
365
  */
95
- const postProcessGuide = async (guide, generators, packageManager, snippetContentProvider) => {
96
- const getSnippetContent = snippetContentProvider ?? exports.fetchSnippet;
97
- // Replace <Snippet /> with fetched snippet content
98
- // Use a regex that matches the full self-closing tag, allowing / in attribute values
99
- const snippetRegex = /<Snippet\s+((?:[^/]|\/(?!>))+)\s*\/>/g;
100
- const snippetMatches = [...guide.matchAll(snippetRegex)];
101
- let processedGuide = guide;
102
- if (snippetMatches.length > 0) {
103
- // Fetch all snippets in parallel
104
- const snippetResults = await Promise.all(snippetMatches.map(async (match) => {
105
- const nameMatch = match[1].match(/name=["']([^"']+)["']/);
106
- if (!nameMatch) {
107
- return { original: match[0], replacement: match[0] };
108
- }
109
- const snippetName = nameMatch[1];
110
- const snippetContent = await getSnippetContent(snippetName);
111
- if (!snippetContent) {
112
- return { original: match[0], replacement: match[0] };
113
- }
114
- // Recursively post-process the snippet content
115
- const processedContent = await (0, exports.postProcessGuide)(snippetContent.trim(), generators, packageManager, getSnippetContent);
116
- return {
117
- original: match[0],
118
- replacement: `<Snippet name="${snippetName}">\n${processedContent}\n</Snippet>`,
119
- };
120
- }));
121
- for (const { original, replacement } of snippetResults) {
122
- processedGuide = processedGuide.replace(original, replacement);
123
- }
124
- }
125
- // Replace <NxCommands /> with markdown code blocks
126
- processedGuide = processedGuide.replace(/<NxCommands\s+commands={([^}]+)}\s*\/>/g, (match, commandsMatch) => {
127
- try {
128
- const commands = JSON.parse(commandsMatch
129
- .replaceAll("\\'", '__ESCAPED_SINGLE_QUOTE__')
130
- .replaceAll("'", '"')
131
- .replaceAll('__ESCAPED_SINGLE_QUOTE__', "\\'"));
132
- return `\`\`\`bash\n${commands.map((command) => (0, exports.buildNxCommand)(command, packageManager)).join('\n')}\n\`\`\``;
133
- }
134
- catch {
135
- return match;
136
- }
137
- });
138
- // Replace <RunGenerator /> with renderGeneratorCommand
139
- processedGuide = processedGuide.replace(/<RunGenerator\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
140
- // Extract generator parameter
141
- const generatorMatch = attributes.match(/generator=["']([^"']+)["']/);
142
- if (!generatorMatch) {
143
- return match; // If no generator parameter, leave as is
144
- }
145
- const generatorId = generatorMatch[1];
146
- const info = findGeneratorAndSchema(generators, generatorId);
147
- if (!info) {
148
- return match;
149
- }
150
- return renderGeneratorCommand(generatorId, info.schema, packageManager);
151
- });
152
- // Replace <GeneratorParameters /> with renderSchema
153
- processedGuide = processedGuide.replace(/<GeneratorParameters\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
154
- // Extract generator parameter
155
- const generatorMatch = attributes.match(/generator=["']([^"']+)["']/);
156
- if (!generatorMatch) {
157
- return match; // If no generator parameter, leave as is
158
- }
159
- const generatorId = generatorMatch[1];
160
- const info = findGeneratorAndSchema(generators, generatorId);
161
- if (!info) {
162
- return match;
163
- }
164
- return renderSchema(info.schema);
165
- });
166
- // Replace <CreateNxWorkspaceCommand /> with npx create-nx-workspace command
167
- processedGuide = processedGuide.replace(/<CreateNxWorkspaceCommand\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
168
- const workspaceMatch = attributes.match(/workspace=["']([^"']+)["']/);
169
- if (!workspaceMatch)
170
- return match;
171
- const workspace = workspaceMatch[1];
172
- const iacMatch = attributes.match(/iacProvider=["']([^"']+)["']/);
173
- const iacProvider = iacMatch
174
- ? iacMatch[1]
175
- : undefined;
176
- const pm = packageManager ?? 'pnpm';
177
- return `\`\`\`bash\n${(0, commands_1.buildCreateNxWorkspaceCommand)(pm, workspace, iacProvider)}\n\`\`\``;
178
- });
179
- // Replace <InstallCommand /> with install command
180
- processedGuide = processedGuide.replace(/<InstallCommand\s+((?:[^/]|\/(?!>))+)\s*\/>/g, (match, attributes) => {
181
- const pkgMatch = attributes.match(/pkg=(?:["']([^"']+)["']|\{([^}]+)\})/);
182
- if (!pkgMatch)
183
- return match;
184
- const pkg = pkgMatch[1] || pkgMatch[2];
185
- const isDev = /dev/.test(attributes);
186
- const pm = packageManager ?? 'pnpm';
187
- return `\`\`\`bash\n${(0, commands_1.buildInstallCommand)(pm, pkg, isDev)}\n\`\`\``;
188
- });
189
- // Replace <PackageManagerShortCommand /> with short command
190
- processedGuide = processedGuide.replace(/<PackageManagerShortCommand\s+commands={([^}]+)}\s*\/>/g, (match, commandsMatch) => {
191
- try {
192
- const commands = JSON.parse(commandsMatch
193
- .replaceAll("\\'", '__ESCAPED_SINGLE_QUOTE__')
194
- .replaceAll("'", '"')
195
- .replaceAll('__ESCAPED_SINGLE_QUOTE__', "\\'"));
196
- const pm = packageManager ?? 'pnpm';
197
- return `\`\`\`bash\n${commands.map((command) => (0, commands_1.buildPackageManagerShortCommand)(pm, command)).join('\n')}\n\`\`\``;
198
- }
199
- catch {
200
- return match;
201
- }
202
- });
203
- // Replace <PackageManagerExecCommand /> with exec command
204
- processedGuide = processedGuide.replace(/<PackageManagerExecCommand\s+commands={([^}]+)}\s*\/>/g, (match, commandsMatch) => {
205
- try {
206
- const commands = JSON.parse(commandsMatch
207
- .replaceAll("\\'", '__ESCAPED_SINGLE_QUOTE__')
208
- .replaceAll("'", '"')
209
- .replaceAll('__ESCAPED_SINGLE_QUOTE__', "\\'"));
210
- const pm = packageManager ?? 'pnpm';
211
- return `\`\`\`bash\n${commands.map((command) => (0, commands_1.buildPackageManagerExecCommand)(pm, command)).join('\n')}\n\`\`\``;
212
- }
213
- catch {
214
- return match;
215
- }
366
+ const postProcessGuide = async (guide, generators, packageManager, snippetContentProvider, options) => {
367
+ return (0, guide_pipeline_1.postProcessGuideWithRemark)(guide, {
368
+ generators,
369
+ packageManager,
370
+ snippetContentProvider: snippetContentProvider ?? exports.fetchSnippet,
371
+ options,
216
372
  });
217
- return processedGuide;
218
373
  };
219
374
  exports.postProcessGuide = postProcessGuide;
220
375
  //# sourceMappingURL=generator-info.js.map
@@ -1 +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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"}
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,28 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Unified + remark-mdx pipeline for the MCP `generator-guide` tool.
7
+ *
8
+ * Passes (in order, each over the already-transformed tree):
9
+ * 1. Snippet inlining — `<Snippet name>` → recursive post-process.
10
+ * 2. Filter transforms — `<OptionFilter>`, `<Infrastructure>` slot
11
+ * selection, `<Tabs><TabItem _filter>` pruning.
12
+ * 3. Component transforms — `<NxCommands>` / `<RunGenerator>` /
13
+ * `<GeneratorParameters>` / `<CreateNxWorkspaceCommand>` /
14
+ * `<InstallCommand>` / `<PackageManagerShortCommand>` /
15
+ * `<PackageManagerExecCommand>` render down to markdown.
16
+ */
17
+ import type { Root } from 'mdast';
18
+ import { NxGeneratorInfo } from '../utils/generators';
19
+ export interface PipelineOptions {
20
+ generators: NxGeneratorInfo[];
21
+ packageManager?: string;
22
+ snippetContentProvider?: (name: string) => Promise<string> | string;
23
+ options?: Record<string, string>;
24
+ }
25
+ /** Parse MDX (with frontmatter) into mdast. Exposed so callers like
26
+ * `fetchGuideFrontmatters` don't need to re-load remark themselves. */
27
+ export declare const parseMdx: (source: string) => Promise<Root>;
28
+ export declare const postProcessGuideWithRemark: (guide: string, opts: PipelineOptions) => Promise<string>;