@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.
@@ -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 = '322d89dab5f2080fe09b795c93413c6a89222b13a447cdf3e6486d692717bc0c';
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(true)
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
- const { results } = await client.search(createSearchArguments(query, version));
128
- const allHits = results.flatMap((result) => result.hits);
129
- if (allHits.length === 0) {
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: 'No results found.',
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
- const html = await response.text();
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
- * Strips HTML tags from a string.
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(/&lt;/g, '<')
206
- .replace(/&gt;/g, '>')
207
- .replace(/&amp;/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 html The HTML content of a page.
214
- * @returns The content of the `<main>` element, or `undefined` if not found.
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(html) {
217
- const mainTagStart = html.indexOf('<main');
218
- if (mainTagStart === -1) {
219
- return undefined;
220
- }
221
- const mainTagEnd = html.lastIndexOf('</main>');
222
- if (mainTagEnd <= mainTagStart) {
223
- return undefined;
224
- }
225
- // Add 7 to include '</main>'
226
- return html.substring(mainTagStart, mainTagEnd + 7);
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
- // TODO: Consider major version specific indices once available
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":"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"}
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
- async function createFindExampleHandler({ exampleDatabasePath }) {
187
- let db;
188
- if (process.env['NG_MCP_EXAMPLES_DIR']) {
189
- db = await setupRuntimeExamples(process.env['NG_MCP_EXAMPLES_DIR']);
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
- suppressSqliteWarning();
192
- return async (input) => {
193
- if (!db) {
194
- if (!exampleDatabasePath) {
195
- // This should be prevented by the registration logic in mcp-server.ts
196
- throw new Error('Example database path is not available.');
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 { DatabaseSync } = await Promise.resolve().then(() => __importStar(require('node:sqlite')));
199
- db = new DatabaseSync(exampleDatabasePath, { readOnly: true });
258
+ const source = `framework version ${pkgJson.version}`;
259
+ return { dbPath, source };
200
260
  }
201
- const { query, keywords, required_packages, related_concepts, includeExperimental } = input;
202
- // Build the query dynamically
203
- const params = [];
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
- // JSON array filters
216
- const addJsonFilter = (column, values) => {
217
- if (values?.length) {
218
- for (const value of values) {
219
- whereClauses.push(`${column} LIKE ?`);
220
- params.push(`%"${value}"%`);
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
- if (whereClauses.length > 0) {
231
- sql += ` WHERE ${whereClauses.join(' AND ')}`;
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
- // Order the results by relevance using the BM25 algorithm.
234
- // The weights assigned to each column boost the ranking of documents where the
235
- // search term appears in a more important field.
236
- // Column order: title, summary, keywords, required_packages, related_concepts, related_tools, content
237
- sql += ' ORDER BY bm25(examples_fts, 10.0, 5.0, 5.0, 1.0, 2.0, 1.0, 1.0);';
238
- const queryStatement = db.prepare(sql);
239
- // Query database and return results
240
- const examples = [];
241
- const textContent = [];
242
- for (const exampleRecord of queryStatement.all(...params)) {
243
- const record = exampleRecord;
244
- const example = {
245
- title: record['title'],
246
- summary: record['summary'],
247
- keywords: JSON.parse(record['keywords'] || '[]'),
248
- required_packages: JSON.parse(record['required_packages'] || '[]'),
249
- related_concepts: JSON.parse(record['related_concepts'] || '[]'),
250
- related_tools: JSON.parse(record['related_tools'] || '[]'),
251
- content: record['content'],
252
- snippet: record['snippet'],
253
- };
254
- examples.push(example);
255
- // Also create a more structured text output
256
- let text = `## Example: ${example.title}\n**Summary:** ${example.summary}`;
257
- if (example.snippet) {
258
- text += `\n**Snippet:** ${example.snippet}`;
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
- return {
264
- content: textContent,
265
- structuredContent: { examples },
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
- arrayValues.push(arrayItemMatch[1].trim());
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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"}