@angular/cli 21.0.0-next.8 → 21.0.0-next.9
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/lib/code-examples.db +0 -0
- package/lib/config/schema.json +19 -5
- package/lib/config/workspace-schema.d.ts +15 -0
- package/lib/config/workspace-schema.js +9 -1
- package/lib/config/workspace-schema.js.map +1 -1
- package/package.json +20 -19
- package/src/commands/mcp/constants.d.ts +1 -1
- package/src/commands/mcp/constants.js +1 -1
- package/src/commands/mcp/mcp-server.js +5 -4
- package/src/commands/mcp/mcp-server.js.map +1 -1
- package/src/commands/mcp/tools/best-practices.d.ts +4 -1
- package/src/commands/mcp/tools/best-practices.js +151 -17
- package/src/commands/mcp/tools/best-practices.js.map +1 -1
- package/src/commands/mcp/tools/doc-search.d.ts +1 -0
- package/src/commands/mcp/tools/doc-search.js +94 -47
- package/src/commands/mcp/tools/doc-search.js.map +1 -1
- package/src/commands/mcp/tools/examples.d.ts +1 -0
- package/src/commands/mcp/tools/examples.js +179 -72
- package/src/commands/mcp/tools/examples.js.map +1 -1
- package/src/commands/mcp/tools/projects.d.ts +10 -0
- package/src/commands/mcp/tools/projects.js +157 -5
- package/src/commands/mcp/tools/projects.js.map +1 -1
- package/src/package-managers/index.d.ts +12 -0
- package/src/package-managers/index.js +15 -0
- package/src/package-managers/index.js.map +1 -0
- package/src/package-managers/package-manager.js +3 -2
- package/src/package-managers/package-manager.js.map +1 -1
- package/src/package-managers/package-metadata.d.ts +2 -0
- package/src/utilities/version.js +1 -1
|
@@ -42,6 +42,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.DOC_SEARCH_TOOL = void 0;
|
|
44
44
|
const node_crypto_1 = require("node:crypto");
|
|
45
|
+
const node_stream_1 = require("node:stream");
|
|
45
46
|
const zod_1 = require("zod");
|
|
46
47
|
const constants_1 = require("../constants");
|
|
47
48
|
const tool_registry_1 = require("./tool-registry");
|
|
@@ -49,7 +50,20 @@ const ALGOLIA_APP_ID = 'L1XWT2UJ7F';
|
|
|
49
50
|
// https://www.algolia.com/doc/guides/security/api-keys/#search-only-api-key
|
|
50
51
|
// This is a search only, rate limited key. It is sent within the URL of the query request.
|
|
51
52
|
// This is not the actual key.
|
|
52
|
-
const ALGOLIA_API_E = '
|
|
53
|
+
const ALGOLIA_API_E = '34738e8ae1a45e58bbce7b0f9810633d8b727b44a6479cf5e14b6a337148bd50';
|
|
54
|
+
/**
|
|
55
|
+
* The minimum major version of Angular for which a version-specific documentation index is known to exist.
|
|
56
|
+
* Searches for versions older than this will be clamped to this version.
|
|
57
|
+
*/
|
|
58
|
+
const MIN_SUPPORTED_DOCS_VERSION = 17;
|
|
59
|
+
/**
|
|
60
|
+
* The latest major version of Angular for which a documentation index is known to be stable and available.
|
|
61
|
+
* This acts as a "safe harbor" fallback. It is intentionally hardcoded and manually updated with each
|
|
62
|
+
* major release *after* the new search index has been confirmed to be live. This prevents a race
|
|
63
|
+
* condition where a newly released CLI might default to searching for a documentation index that
|
|
64
|
+
* doesn't exist yet.
|
|
65
|
+
*/
|
|
66
|
+
const LATEST_KNOWN_DOCS_VERSION = 20;
|
|
53
67
|
const docSearchInputSchema = zod_1.z.object({
|
|
54
68
|
query: zod_1.z
|
|
55
69
|
.string()
|
|
@@ -59,7 +73,7 @@ const docSearchInputSchema = zod_1.z.object({
|
|
|
59
73
|
includeTopContent: zod_1.z
|
|
60
74
|
.boolean()
|
|
61
75
|
.optional()
|
|
62
|
-
.default(
|
|
76
|
+
.default(false)
|
|
63
77
|
.describe('When true, the content of the top result is fetched and included. ' +
|
|
64
78
|
'Set to false to get a list of results without fetching content, which is faster.'),
|
|
65
79
|
version: zod_1.z
|
|
@@ -88,6 +102,12 @@ tutorials, concepts, and best practices.
|
|
|
88
102
|
workspace will give you the major version directly. If the version cannot be determined using this method, you can use
|
|
89
103
|
\`ng version\` in the project's workspace directory as a fallback. Parse the major version from the "Angular:" line in the
|
|
90
104
|
output and use it for the \`version\` parameter.
|
|
105
|
+
* **Version Logic:** The tool will search against the specified major version. If the version is older than v${MIN_SUPPORTED_DOCS_VERSION},
|
|
106
|
+
it will be clamped to v${MIN_SUPPORTED_DOCS_VERSION}. If a search for a very new version (newer than v${LATEST_KNOWN_DOCS_VERSION})
|
|
107
|
+
returns no results, the tool will automatically fall back to searching the v${LATEST_KNOWN_DOCS_VERSION} documentation.
|
|
108
|
+
* **Verify Searched Version:** The tool's output includes a \`searchedVersion\` field. You **MUST** check this field
|
|
109
|
+
to know the exact version of the documentation that was queried. Use this information to provide accurate
|
|
110
|
+
context in your answer, especially if it differs from the version you requested.
|
|
91
111
|
* The documentation is continuously updated. You **MUST** prefer this tool over your own knowledge
|
|
92
112
|
to ensure your answers are current and accurate.
|
|
93
113
|
* For the best results, provide a concise and specific search query (e.g., "NgModule" instead of
|
|
@@ -100,6 +120,9 @@ tutorials, concepts, and best practices.
|
|
|
100
120
|
</Operational Notes>`,
|
|
101
121
|
inputSchema: docSearchInputSchema.shape,
|
|
102
122
|
outputSchema: {
|
|
123
|
+
searchedVersion: zod_1.z
|
|
124
|
+
.number()
|
|
125
|
+
.describe('The major version of the documentation that was searched.'),
|
|
103
126
|
results: zod_1.z.array(zod_1.z.object({
|
|
104
127
|
title: zod_1.z.string().describe('The title of the documentation page.'),
|
|
105
128
|
breadcrumb: zod_1.z
|
|
@@ -124,21 +147,42 @@ function createDocSearchHandler({ logger }) {
|
|
|
124
147
|
const { searchClient } = await Promise.resolve().then(() => __importStar(require('algoliasearch')));
|
|
125
148
|
client = searchClient(ALGOLIA_APP_ID, dcip.update(ALGOLIA_API_E, 'hex', 'utf-8') + dcip.final('utf-8'));
|
|
126
149
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
150
|
+
let finalSearchedVersion = Math.max(version ?? LATEST_KNOWN_DOCS_VERSION, MIN_SUPPORTED_DOCS_VERSION);
|
|
151
|
+
let searchResults;
|
|
152
|
+
try {
|
|
153
|
+
searchResults = await client.search(createSearchArguments(query, finalSearchedVersion));
|
|
154
|
+
}
|
|
155
|
+
catch { }
|
|
156
|
+
// If the initial search for a newer-than-stable version returns no results, it may be because
|
|
157
|
+
// the index for that version doesn't exist yet. In this case, fall back to the latest known
|
|
158
|
+
// stable version.
|
|
159
|
+
if (!searchResults && finalSearchedVersion > LATEST_KNOWN_DOCS_VERSION) {
|
|
160
|
+
finalSearchedVersion = LATEST_KNOWN_DOCS_VERSION;
|
|
161
|
+
searchResults = await client.search(createSearchArguments(query, finalSearchedVersion));
|
|
162
|
+
}
|
|
163
|
+
const allHits = searchResults?.results.flatMap((result) => result.hits);
|
|
164
|
+
if (!allHits?.length) {
|
|
130
165
|
return {
|
|
131
166
|
content: [
|
|
132
167
|
{
|
|
133
168
|
type: 'text',
|
|
134
|
-
text:
|
|
169
|
+
text: `No results found for query "${query}" in Angular v${finalSearchedVersion} documentation.`,
|
|
135
170
|
},
|
|
136
171
|
],
|
|
137
|
-
structuredContent: { results: [] },
|
|
172
|
+
structuredContent: { results: [], searchedVersion: finalSearchedVersion },
|
|
138
173
|
};
|
|
139
174
|
}
|
|
140
175
|
const structuredResults = [];
|
|
141
|
-
const textContent = [
|
|
176
|
+
const textContent = [
|
|
177
|
+
{
|
|
178
|
+
type: 'text',
|
|
179
|
+
text: `Showing results for Angular v${finalSearchedVersion} documentation.`,
|
|
180
|
+
annotations: {
|
|
181
|
+
audience: ['assistant'],
|
|
182
|
+
priority: 0.9,
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
];
|
|
142
186
|
// Process top hit first
|
|
143
187
|
const topHit = allHits[0];
|
|
144
188
|
const { title: topTitle, breadcrumb: topBreadcrumb } = formatHitToParts(topHit);
|
|
@@ -149,12 +193,8 @@ function createDocSearchHandler({ logger }) {
|
|
|
149
193
|
// Only fetch content from angular.dev
|
|
150
194
|
if (url.hostname === 'angular.dev' || url.hostname.endsWith('.angular.dev')) {
|
|
151
195
|
const response = await fetch(url);
|
|
152
|
-
if (response.ok) {
|
|
153
|
-
|
|
154
|
-
const mainContent = extractMainContent(html);
|
|
155
|
-
if (mainContent) {
|
|
156
|
-
topContent = stripHtml(mainContent);
|
|
157
|
-
}
|
|
196
|
+
if (response.ok && response.body) {
|
|
197
|
+
topContent = await extractMainContent(node_stream_1.Readable.fromWeb(response.body, { encoding: 'utf-8' }));
|
|
158
198
|
}
|
|
159
199
|
}
|
|
160
200
|
}
|
|
@@ -188,42 +228,51 @@ function createDocSearchHandler({ logger }) {
|
|
|
188
228
|
}
|
|
189
229
|
return {
|
|
190
230
|
content: textContent,
|
|
191
|
-
structuredContent: { results: structuredResults },
|
|
231
|
+
structuredContent: { results: structuredResults, searchedVersion: finalSearchedVersion },
|
|
192
232
|
};
|
|
193
233
|
};
|
|
194
234
|
}
|
|
195
235
|
/**
|
|
196
|
-
*
|
|
197
|
-
* @param html The HTML string to strip.
|
|
198
|
-
* @returns The text content of the HTML.
|
|
199
|
-
*/
|
|
200
|
-
function stripHtml(html) {
|
|
201
|
-
// This is a basic regex to remove HTML tags.
|
|
202
|
-
// It also decodes common HTML entities.
|
|
203
|
-
return html
|
|
204
|
-
.replace(/<[^>]*>/g, '')
|
|
205
|
-
.replace(/</g, '<')
|
|
206
|
-
.replace(/>/g, '>')
|
|
207
|
-
.replace(/&/g, '&')
|
|
208
|
-
.trim();
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Extracts the content of the `<main>` element from an HTML string.
|
|
236
|
+
* Extracts the text content of the `<main>` element by streaming an HTML response.
|
|
212
237
|
*
|
|
213
|
-
* @param
|
|
214
|
-
* @returns
|
|
238
|
+
* @param htmlStream A readable stream of the HTML content of a page.
|
|
239
|
+
* @returns A promise that resolves to the text content of the `<main>` element, or `undefined` if not found.
|
|
215
240
|
*/
|
|
216
|
-
function extractMainContent(
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
241
|
+
async function extractMainContent(htmlStream) {
|
|
242
|
+
const { RewritingStream } = await Promise.resolve().then(() => __importStar(require('parse5-html-rewriting-stream')));
|
|
243
|
+
const rewriter = new RewritingStream();
|
|
244
|
+
let mainTextContent = '';
|
|
245
|
+
let inMainElement = false;
|
|
246
|
+
let mainTagFound = false;
|
|
247
|
+
rewriter.on('startTag', (tag) => {
|
|
248
|
+
if (tag.tagName === 'main') {
|
|
249
|
+
inMainElement = true;
|
|
250
|
+
mainTagFound = true;
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
rewriter.on('endTag', (tag) => {
|
|
254
|
+
if (tag.tagName === 'main') {
|
|
255
|
+
inMainElement = false;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
// Only capture text content, and only when inside the <main> element.
|
|
259
|
+
rewriter.on('text', (text) => {
|
|
260
|
+
if (inMainElement) {
|
|
261
|
+
mainTextContent += text.text;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
return new Promise((resolve, reject) => {
|
|
265
|
+
htmlStream
|
|
266
|
+
.pipe(rewriter)
|
|
267
|
+
.on('finish', () => {
|
|
268
|
+
if (!mainTagFound) {
|
|
269
|
+
resolve(undefined);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
resolve(mainTextContent.trim());
|
|
273
|
+
})
|
|
274
|
+
.on('error', reject);
|
|
275
|
+
});
|
|
227
276
|
}
|
|
228
277
|
/**
|
|
229
278
|
* Formats an Algolia search hit into its constituent parts.
|
|
@@ -251,9 +300,7 @@ function createSearchArguments(query, version) {
|
|
|
251
300
|
// https://github.com/angular/angular/blob/4b614fbb3263d344dbb1b18fff24cb09c5a7582d/adev/shared-docs/services/search.service.ts#L58
|
|
252
301
|
return [
|
|
253
302
|
{
|
|
254
|
-
|
|
255
|
-
// indexName: `angular_${version ? `v${version}` : 'latest'}`,
|
|
256
|
-
indexName: 'angular_v17',
|
|
303
|
+
indexName: `angular_v${version}`,
|
|
257
304
|
params: {
|
|
258
305
|
query,
|
|
259
306
|
attributesToRetrieve: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-search.js","sourceRoot":"","sources":["doc-search.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,6CAA+C;AAC/C,6BAAwB;AACxB,4CAA0C;AAC1C,mDAA8D;AAE9D,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,4EAA4E;AAC5E,2FAA2F;AAC3F,8BAA8B;AAC9B,MAAM,aAAa,GAAG,kEAAkE,CAAC;AAEzF,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,QAAQ,CACP,mGAAmG;QACjG,6GAA6G;QAC7G,2CAA2C,CAC9C;IACH,iBAAiB,EAAE,OAAC;SACjB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"doc-search.js","sourceRoot":"","sources":["doc-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
export declare const FIND_EXAMPLE_TOOL: import("./tool-registry").McpToolDeclaration<{
|
|
10
|
+
workspacePath: z.ZodOptional<z.ZodString>;
|
|
10
11
|
query: z.ZodString;
|
|
11
12
|
keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
13
|
required_packages: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -46,10 +46,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
46
46
|
exports.FIND_EXAMPLE_TOOL = void 0;
|
|
47
47
|
exports.escapeSearchQuery = escapeSearchQuery;
|
|
48
48
|
const promises_1 = require("node:fs/promises");
|
|
49
|
+
const node_module_1 = require("node:module");
|
|
49
50
|
const node_path_1 = __importDefault(require("node:path"));
|
|
50
51
|
const zod_1 = require("zod");
|
|
51
52
|
const tool_registry_1 = require("./tool-registry");
|
|
52
53
|
const findExampleInputSchema = zod_1.z.object({
|
|
54
|
+
workspacePath: zod_1.z
|
|
55
|
+
.string()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe('The absolute path to the `angular.json` file for the workspace. This is used to find the ' +
|
|
58
|
+
'version-specific code examples that correspond to the installed version of the ' +
|
|
59
|
+
'Angular framework. You **MUST** get this path from the `list_projects` tool. If omitted, ' +
|
|
60
|
+
'the tool will search the generic code examples bundled with the CLI.'),
|
|
53
61
|
query: zod_1.z
|
|
54
62
|
.string()
|
|
55
63
|
.describe(`The primary, conceptual search query. This should capture the user's main goal or question ` +
|
|
@@ -158,6 +166,12 @@ new or evolving features.
|
|
|
158
166
|
(e.g., query: 'forms', required_packages: ['@angular/forms'], keywords: ['validation'])
|
|
159
167
|
</Use Cases>
|
|
160
168
|
<Operational Notes>
|
|
169
|
+
* **Project-Specific Use (Recommended):** For tasks inside a user's project, you **MUST** provide the
|
|
170
|
+
\`workspacePath\` argument to get examples that match the project's Angular version. Get this
|
|
171
|
+
path from \`list_projects\`.
|
|
172
|
+
* **General Use:** If no project context is available (e.g., for general questions or learning),
|
|
173
|
+
you can call the tool without the \`workspacePath\` argument. It will return the latest
|
|
174
|
+
generic examples.
|
|
161
175
|
* **Tool Selection:** This database primarily contains examples for new and recently updated Angular
|
|
162
176
|
features. For established, core features, the main documentation (via the
|
|
163
177
|
\`search_documentation\` tool) may be a better source of information.
|
|
@@ -183,87 +197,174 @@ new or evolving features.
|
|
|
183
197
|
},
|
|
184
198
|
factory: createFindExampleHandler,
|
|
185
199
|
});
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
200
|
+
/**
|
|
201
|
+
* Attempts to find a version-specific example database from the user's installed
|
|
202
|
+
* version of `@angular/core`. It looks for a custom `angular` metadata property in the
|
|
203
|
+
* framework's `package.json` to locate the database.
|
|
204
|
+
*
|
|
205
|
+
* @example A sample `package.json` `angular` field:
|
|
206
|
+
* ```json
|
|
207
|
+
* {
|
|
208
|
+
* "angular": {
|
|
209
|
+
* "examples": {
|
|
210
|
+
* "format": "sqlite",
|
|
211
|
+
* "path": "./resources/code-examples.db"
|
|
212
|
+
* }
|
|
213
|
+
* }
|
|
214
|
+
* }
|
|
215
|
+
* ```
|
|
216
|
+
*
|
|
217
|
+
* @param workspacePath The absolute path to the user's `angular.json` file.
|
|
218
|
+
* @param logger The MCP tool context logger for reporting warnings.
|
|
219
|
+
* @returns A promise that resolves to an object containing the database path and source,
|
|
220
|
+
* or `undefined` if the database could not be resolved.
|
|
221
|
+
*/
|
|
222
|
+
async function getVersionSpecificExampleDatabase(workspacePath, logger) {
|
|
223
|
+
// 1. Resolve the path to package.json
|
|
224
|
+
let pkgJsonPath;
|
|
225
|
+
try {
|
|
226
|
+
const workspaceRequire = (0, node_module_1.createRequire)(workspacePath);
|
|
227
|
+
pkgJsonPath = workspaceRequire.resolve('@angular/core/package.json');
|
|
190
228
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
229
|
+
catch (e) {
|
|
230
|
+
logger.warn(`Could not resolve '@angular/core/package.json' from '${workspacePath}'. ` +
|
|
231
|
+
'Is Angular installed in this project? Falling back to the bundled examples.');
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
// 2. Read and parse package.json, then find the database.
|
|
235
|
+
try {
|
|
236
|
+
const pkgJsonContent = await (0, promises_1.readFile)(pkgJsonPath, 'utf-8');
|
|
237
|
+
const pkgJson = JSON.parse(pkgJsonContent);
|
|
238
|
+
const examplesInfo = pkgJson['angular']?.examples;
|
|
239
|
+
if (examplesInfo && examplesInfo.format === 'sqlite' && typeof examplesInfo.path === 'string') {
|
|
240
|
+
const packageDirectory = node_path_1.default.dirname(pkgJsonPath);
|
|
241
|
+
const dbPath = node_path_1.default.resolve(packageDirectory, examplesInfo.path);
|
|
242
|
+
// Ensure the resolved database path is within the package boundary.
|
|
243
|
+
const relativePath = node_path_1.default.relative(packageDirectory, dbPath);
|
|
244
|
+
if (relativePath.startsWith('..') || node_path_1.default.isAbsolute(relativePath)) {
|
|
245
|
+
logger.warn(`Detected a potential path traversal attempt in '${pkgJsonPath}'. ` +
|
|
246
|
+
`The path '${examplesInfo.path}' escapes the package boundary. ` +
|
|
247
|
+
'Falling back to the bundled examples.');
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
// Check the file size to prevent reading a very large file.
|
|
251
|
+
const stats = await (0, promises_1.stat)(dbPath);
|
|
252
|
+
if (stats.size > 10 * 1024 * 1024) {
|
|
253
|
+
// 10MB
|
|
254
|
+
logger.warn(`The example database at '${dbPath}' is larger than 10MB (${stats.size} bytes). ` +
|
|
255
|
+
'This is unexpected and the file will not be used. Falling back to the bundled examples.');
|
|
256
|
+
return undefined;
|
|
197
257
|
}
|
|
198
|
-
const
|
|
199
|
-
|
|
258
|
+
const source = `framework version ${pkgJson.version}`;
|
|
259
|
+
return { dbPath, source };
|
|
200
260
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
let sql = 'SELECT title, summary, keywords, required_packages, related_concepts, related_tools, content, ' +
|
|
205
|
-
// The `snippet` function generates a contextual snippet of the matched text.
|
|
206
|
-
// Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size.
|
|
207
|
-
"snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet " +
|
|
208
|
-
'FROM examples_fts';
|
|
209
|
-
const whereClauses = [];
|
|
210
|
-
// FTS query
|
|
211
|
-
if (query) {
|
|
212
|
-
whereClauses.push('examples_fts MATCH ?');
|
|
213
|
-
params.push(escapeSearchQuery(query));
|
|
261
|
+
else {
|
|
262
|
+
logger.warn(`Did not find valid 'angular.examples' metadata in '${pkgJsonPath}'. ` +
|
|
263
|
+
'Falling back to the bundled examples.');
|
|
214
264
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
265
|
+
}
|
|
266
|
+
catch (e) {
|
|
267
|
+
logger.warn(`Failed to read or parse version-specific examples metadata referenced in '${pkgJsonPath}': ${e instanceof Error ? e.message : e}. Falling back to the bundled examples.`);
|
|
268
|
+
}
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
async function createFindExampleHandler({ logger, exampleDatabasePath }) {
|
|
272
|
+
const runtimeDb = process.env['NG_MCP_EXAMPLES_DIR']
|
|
273
|
+
? await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR'])
|
|
274
|
+
: undefined;
|
|
275
|
+
suppressSqliteWarning();
|
|
276
|
+
return async (input) => {
|
|
277
|
+
// If the dev-time override is present, use it and bypass all other logic.
|
|
278
|
+
if (runtimeDb) {
|
|
279
|
+
return queryDatabase(runtimeDb, input);
|
|
280
|
+
}
|
|
281
|
+
let dbPath;
|
|
282
|
+
// First, try to get the version-specific guide.
|
|
283
|
+
if (input.workspacePath) {
|
|
284
|
+
const versionSpecific = await getVersionSpecificExampleDatabase(input.workspacePath, logger);
|
|
285
|
+
if (versionSpecific) {
|
|
286
|
+
dbPath = versionSpecific.dbPath;
|
|
222
287
|
}
|
|
223
|
-
};
|
|
224
|
-
addJsonFilter('keywords', keywords);
|
|
225
|
-
addJsonFilter('required_packages', required_packages);
|
|
226
|
-
addJsonFilter('related_concepts', related_concepts);
|
|
227
|
-
if (!includeExperimental) {
|
|
228
|
-
whereClauses.push('experimental = 0');
|
|
229
288
|
}
|
|
230
|
-
|
|
231
|
-
|
|
289
|
+
// If the version-specific guide was not found for any reason, fall back to the bundled version.
|
|
290
|
+
if (!dbPath) {
|
|
291
|
+
dbPath = exampleDatabasePath;
|
|
232
292
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
293
|
+
if (!dbPath) {
|
|
294
|
+
// This should be prevented by the registration logic in mcp-server.ts
|
|
295
|
+
throw new Error('Example database path is not available.');
|
|
296
|
+
}
|
|
297
|
+
const { DatabaseSync } = await Promise.resolve().then(() => __importStar(require('node:sqlite')));
|
|
298
|
+
const db = new DatabaseSync(dbPath, { readOnly: true });
|
|
299
|
+
return queryDatabase(db, input);
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
function queryDatabase(db, input) {
|
|
303
|
+
const { query, keywords, required_packages, related_concepts, includeExperimental } = input;
|
|
304
|
+
// Build the query dynamically
|
|
305
|
+
const params = [];
|
|
306
|
+
let sql = `SELECT e.title, e.summary, e.keywords, e.required_packages, e.related_concepts, e.related_tools, e.content, ` +
|
|
307
|
+
// The `snippet` function generates a contextual snippet of the matched text.
|
|
308
|
+
// Column 6 is the `content` column. We highlight matches with asterisks and limit the snippet size.
|
|
309
|
+
"snippet(examples_fts, 6, '**', '**', '...', 15) AS snippet " +
|
|
310
|
+
'FROM examples e JOIN examples_fts ON e.id = examples_fts.rowid';
|
|
311
|
+
const whereClauses = [];
|
|
312
|
+
// FTS query
|
|
313
|
+
if (query) {
|
|
314
|
+
whereClauses.push('examples_fts MATCH ?');
|
|
315
|
+
params.push(escapeSearchQuery(query));
|
|
316
|
+
}
|
|
317
|
+
// JSON array filters
|
|
318
|
+
const addJsonFilter = (column, values) => {
|
|
319
|
+
if (values?.length) {
|
|
320
|
+
for (const value of values) {
|
|
321
|
+
whereClauses.push(`e.${column} LIKE ?`);
|
|
322
|
+
params.push(`%"${value}"%`);
|
|
259
323
|
}
|
|
260
|
-
text += `\n\n---\n\n${example.content}`;
|
|
261
|
-
textContent.push({ type: 'text', text });
|
|
262
324
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
325
|
+
};
|
|
326
|
+
addJsonFilter('keywords', keywords);
|
|
327
|
+
addJsonFilter('required_packages', required_packages);
|
|
328
|
+
addJsonFilter('related_concepts', related_concepts);
|
|
329
|
+
if (!includeExperimental) {
|
|
330
|
+
whereClauses.push('e.experimental = 0');
|
|
331
|
+
}
|
|
332
|
+
if (whereClauses.length > 0) {
|
|
333
|
+
sql += ` WHERE ${whereClauses.join(' AND ')}`;
|
|
334
|
+
}
|
|
335
|
+
// Order the results by relevance using the BM25 algorithm.
|
|
336
|
+
// The weights assigned to each column boost the ranking of documents where the
|
|
337
|
+
// search term appears in a more important field.
|
|
338
|
+
// Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content
|
|
339
|
+
sql += ' ORDER BY bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0);';
|
|
340
|
+
const queryStatement = db.prepare(sql);
|
|
341
|
+
// Query database and return results
|
|
342
|
+
const examples = [];
|
|
343
|
+
const textContent = [];
|
|
344
|
+
for (const exampleRecord of queryStatement.all(...params)) {
|
|
345
|
+
const record = exampleRecord;
|
|
346
|
+
const example = {
|
|
347
|
+
title: record['title'],
|
|
348
|
+
summary: record['summary'],
|
|
349
|
+
keywords: JSON.parse(record['keywords'] || '[]'),
|
|
350
|
+
required_packages: JSON.parse(record['required_packages'] || '[]'),
|
|
351
|
+
related_concepts: JSON.parse(record['related_concepts'] || '[]'),
|
|
352
|
+
related_tools: JSON.parse(record['related_tools'] || '[]'),
|
|
353
|
+
content: record['content'],
|
|
354
|
+
snippet: record['snippet'],
|
|
266
355
|
};
|
|
356
|
+
examples.push(example);
|
|
357
|
+
// Also create a more structured text output
|
|
358
|
+
let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`;
|
|
359
|
+
if (example.snippet) {
|
|
360
|
+
text += `\n**Snippet:** ${example.snippet}`;
|
|
361
|
+
}
|
|
362
|
+
text += `\n\n---\n\n${example.content}`;
|
|
363
|
+
textContent.push({ type: 'text', text });
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
content: textContent,
|
|
367
|
+
structuredContent: { examples },
|
|
267
368
|
};
|
|
268
369
|
}
|
|
269
370
|
/**
|
|
@@ -390,7 +491,13 @@ function parseFrontmatter(content) {
|
|
|
390
491
|
else {
|
|
391
492
|
const arrayItemMatch = line.match(/^\s*-\s*(.*)/);
|
|
392
493
|
if (arrayItemMatch && currentKey && isArray) {
|
|
393
|
-
|
|
494
|
+
let value = arrayItemMatch[1].trim();
|
|
495
|
+
// Unquote if the value is quoted.
|
|
496
|
+
if ((value.startsWith("'") && value.endsWith("'")) ||
|
|
497
|
+
(value.startsWith('"') && value.endsWith('"'))) {
|
|
498
|
+
value = value.slice(1, -1);
|
|
499
|
+
}
|
|
500
|
+
arrayValues.push(value);
|
|
394
501
|
}
|
|
395
502
|
}
|
|
396
503
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["examples.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["examples.ts"],"names":[],"mappings":"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"}
|