@sfdxy/sf-documentation-knowledge 1.0.0 → 1.1.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.
@@ -0,0 +1,45 @@
1
+ export interface CodeSnippet {
2
+ /** Source document node ID (e.g. "doc:apex-guide:apex_batch") */
3
+ docId: string;
4
+ /** Source domain */
5
+ domain: string;
6
+ /** Source topic (filename without .md) */
7
+ topic: string;
8
+ /** Programming language (from fence tag) */
9
+ language: string;
10
+ /** The code content */
11
+ code: string;
12
+ /** The heading above this code block */
13
+ heading: string;
14
+ /** 1-2 lines of text context above the code block */
15
+ context: string;
16
+ /** Document title from the first heading */
17
+ docTitle: string;
18
+ }
19
+ export declare class CodeIndex {
20
+ private knowledgeDir;
21
+ private snippets;
22
+ /** keyword → snippet indices */
23
+ private keywordMap;
24
+ private loaded;
25
+ constructor(knowledgeDir: string);
26
+ load(): Promise<void>;
27
+ private extractSnippets;
28
+ private extractTitle;
29
+ private findHeadingAbove;
30
+ private findContextAbove;
31
+ private normalizeLanguage;
32
+ /**
33
+ * Search for code snippets matching a query.
34
+ */
35
+ search(query: string, options?: {
36
+ language?: string;
37
+ domain?: string;
38
+ limit?: number;
39
+ }): CodeSnippet[];
40
+ getStats(): {
41
+ totalSnippets: number;
42
+ languages: Record<string, number>;
43
+ };
44
+ }
45
+ //# sourceMappingURL=code-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-index.d.ts","sourceRoot":"","sources":["../../src/mcp/code-index.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IAMR,OAAO,CAAC,YAAY;IALhC,OAAO,CAAC,QAAQ,CAAqB;IACrC,gCAAgC;IAChC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,MAAM,CAAS;gBAEH,YAAY,EAAE,MAAM;IAElC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D3B,OAAO,CAAC,eAAe;IAwDvB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;IAwBzB;;OAEG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACnE,WAAW,EAAE;IA4ChB,QAAQ,IAAI;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;CAOzE"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * CodeIndex — In-memory index of code snippets extracted from knowledge files.
3
+ *
4
+ * Scans all markdown files at startup, extracts fenced code blocks with
5
+ * surrounding context (heading, description), and builds a searchable index.
6
+ */
7
+ import fs from "fs-extra";
8
+ import path from "node:path";
9
+ import { createChildLogger } from "../utils/logger.js";
10
+ const log = createChildLogger("mcp:code-index");
11
+ export class CodeIndex {
12
+ knowledgeDir;
13
+ snippets = [];
14
+ /** keyword → snippet indices */
15
+ keywordMap = new Map();
16
+ loaded = false;
17
+ constructor(knowledgeDir) {
18
+ this.knowledgeDir = knowledgeDir;
19
+ }
20
+ async load() {
21
+ if (this.loaded)
22
+ return;
23
+ const startTime = Date.now();
24
+ const domainDirs = await fs.readdir(this.knowledgeDir);
25
+ for (const domain of domainDirs) {
26
+ const domainPath = path.join(this.knowledgeDir, domain);
27
+ const stat = await fs.stat(domainPath);
28
+ if (!stat.isDirectory())
29
+ continue;
30
+ const files = (await fs.readdir(domainPath)).filter((f) => f.endsWith(".md") && f !== "_index.md");
31
+ for (const file of files) {
32
+ try {
33
+ const content = await fs.readFile(path.join(domainPath, file), "utf-8");
34
+ const topic = file.replace(/\.md$/, "");
35
+ this.extractSnippets(content, domain, topic);
36
+ }
37
+ catch {
38
+ // Skip files that can't be read
39
+ }
40
+ }
41
+ }
42
+ // Build keyword index
43
+ for (let i = 0; i < this.snippets.length; i++) {
44
+ const s = this.snippets[i];
45
+ const words = [
46
+ ...s.heading.toLowerCase().split(/\s+/),
47
+ ...s.context.toLowerCase().split(/\s+/),
48
+ ...s.docTitle.toLowerCase().split(/\s+/),
49
+ s.language.toLowerCase(),
50
+ ...s.domain.toLowerCase().split("-"),
51
+ ].filter((w) => w.length >= 3);
52
+ for (const word of new Set(words)) {
53
+ if (!this.keywordMap.has(word)) {
54
+ this.keywordMap.set(word, []);
55
+ }
56
+ this.keywordMap.get(word).push(i);
57
+ }
58
+ }
59
+ this.loaded = true;
60
+ log.info({
61
+ snippets: this.snippets.length,
62
+ keywords: this.keywordMap.size,
63
+ ms: Date.now() - startTime,
64
+ }, "Code index built");
65
+ }
66
+ extractSnippets(content, domain, topic) {
67
+ const lines = content.split("\n");
68
+ const docTitle = this.extractTitle(lines);
69
+ // Find fenced code blocks
70
+ const codeBlockRegex = /^```(\w+)?\s*$/;
71
+ let inBlock = false;
72
+ let blockLang = "";
73
+ let blockLines = [];
74
+ let blockStartLine = 0;
75
+ for (let i = 0; i < lines.length; i++) {
76
+ const line = lines[i];
77
+ if (!inBlock) {
78
+ const match = line.match(codeBlockRegex);
79
+ if (match) {
80
+ inBlock = true;
81
+ blockLang = match[1] || "text";
82
+ blockLines = [];
83
+ blockStartLine = i;
84
+ }
85
+ }
86
+ else {
87
+ if (line.startsWith("```")) {
88
+ // End of code block
89
+ inBlock = false;
90
+ const code = blockLines.join("\n").trim();
91
+ // Skip empty or trivially small snippets
92
+ if (code.length < 10)
93
+ continue;
94
+ // Get surrounding context
95
+ const heading = this.findHeadingAbove(lines, blockStartLine);
96
+ const context = this.findContextAbove(lines, blockStartLine);
97
+ this.snippets.push({
98
+ docId: `doc:${domain}:${topic}`,
99
+ domain,
100
+ topic,
101
+ language: this.normalizeLanguage(blockLang),
102
+ code,
103
+ heading,
104
+ context,
105
+ docTitle,
106
+ });
107
+ }
108
+ else {
109
+ blockLines.push(line);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ extractTitle(lines) {
115
+ for (const line of lines.slice(0, 20)) {
116
+ if (line.startsWith("# ")) {
117
+ return line.replace(/^#+\s*/, "").trim();
118
+ }
119
+ }
120
+ return "";
121
+ }
122
+ findHeadingAbove(lines, lineIndex) {
123
+ for (let i = lineIndex - 1; i >= Math.max(0, lineIndex - 15); i--) {
124
+ if (lines[i].startsWith("#")) {
125
+ return lines[i].replace(/^#+\s*/, "").trim();
126
+ }
127
+ }
128
+ return "";
129
+ }
130
+ findContextAbove(lines, lineIndex) {
131
+ const contextLines = [];
132
+ for (let i = lineIndex - 1; i >= Math.max(0, lineIndex - 3); i--) {
133
+ const line = lines[i].trim();
134
+ if (line && !line.startsWith("#") && !line.startsWith("```")) {
135
+ contextLines.unshift(line);
136
+ }
137
+ }
138
+ return contextLines.join(" ").slice(0, 200);
139
+ }
140
+ normalizeLanguage(lang) {
141
+ const map = {
142
+ js: "javascript",
143
+ ts: "typescript",
144
+ py: "python",
145
+ java: "java",
146
+ cls: "apex",
147
+ trigger: "apex",
148
+ apxc: "apex",
149
+ soql: "soql",
150
+ sosl: "sosl",
151
+ xml: "xml",
152
+ html: "html",
153
+ css: "css",
154
+ sh: "bash",
155
+ bash: "bash",
156
+ json: "json",
157
+ yaml: "yaml",
158
+ yml: "yaml",
159
+ sql: "sql",
160
+ };
161
+ return map[lang?.toLowerCase()] || lang?.toLowerCase() || "text";
162
+ }
163
+ /**
164
+ * Search for code snippets matching a query.
165
+ */
166
+ search(query, options = {}) {
167
+ if (!this.loaded)
168
+ return [];
169
+ const { language, domain, limit = 5 } = options;
170
+ const terms = query
171
+ .toLowerCase()
172
+ .split(/\s+/)
173
+ .filter((t) => t.length >= 3);
174
+ if (terms.length === 0)
175
+ return [];
176
+ // Score snippets by keyword match count
177
+ const scores = new Map();
178
+ for (const term of terms) {
179
+ for (const [keyword, indices] of this.keywordMap) {
180
+ const shorter = Math.min(keyword.length, term.length);
181
+ const longer = Math.max(keyword.length, term.length);
182
+ if (shorter / longer < 0.6)
183
+ continue;
184
+ if (keyword.includes(term) || term.includes(keyword)) {
185
+ for (const idx of indices) {
186
+ scores.set(idx, (scores.get(idx) || 0) + 1);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ // Filter and sort
192
+ let results = [...scores.entries()]
193
+ .filter(([, score]) => score >= 1)
194
+ .sort((a, b) => b[1] - a[1])
195
+ .map(([idx]) => this.snippets[idx]);
196
+ if (language) {
197
+ results = results.filter((s) => s.language === this.normalizeLanguage(language));
198
+ }
199
+ if (domain) {
200
+ results = results.filter((s) => s.domain === domain);
201
+ }
202
+ return results.slice(0, limit);
203
+ }
204
+ getStats() {
205
+ const languages = {};
206
+ for (const s of this.snippets) {
207
+ languages[s.language] = (languages[s.language] || 0) + 1;
208
+ }
209
+ return { totalSnippets: this.snippets.length, languages };
210
+ }
211
+ }
212
+ //# sourceMappingURL=code-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-index.js","sourceRoot":"","sources":["../../src/mcp/code-index.ts"],"names":[],"mappings":"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"}
@@ -14,13 +14,31 @@ import { z } from "zod";
14
14
  import fs from "fs-extra";
15
15
  import path from "node:path";
16
16
  import { GraphQuery } from "../utils/graph-query.js";
17
+ import { CodeIndex } from "./code-index.js";
17
18
  const KNOWLEDGE_DIR = path.resolve(process.env.SF_KNOWLEDGE_DIR || "knowledge/current");
18
19
  // Shared graph query instance — loaded once on startup
19
20
  const gq = new GraphQuery(KNOWLEDGE_DIR);
21
+ const codeIndex = new CodeIndex(KNOWLEDGE_DIR);
20
22
  const server = new McpServer({
21
23
  name: "sf-documentation-knowledge",
22
- version: "1.0.0",
24
+ version: "1.1.0",
23
25
  });
26
+ // ─── Helper: build next-action suggestions ──────────────────────
27
+ function suggestNext(toolUsed, context = {}) {
28
+ const suggestions = {
29
+ sf_search: context.domain
30
+ ? `💡 Next: sf_read_topic("${context.domain}", "_index") to see all topics, or sf_code_examples("${context.query || '...'}") for code snippets.`
31
+ : `💡 Next: sf_read_topic(domain, topic) to read a result, or sf_code_examples("${context.query || '...'}") for code.`,
32
+ sf_read_topic: `💡 Next: sf_graph_query("context", nodeId) for related docs, or sf_code_examples("${context.topic || '...'}") for more code.`,
33
+ sf_graph_query: `💡 Next: sf_read_topic to read a doc, or sf_code_examples to find code snippets.`,
34
+ sf_list_domains: `💡 Next: sf_read_topic(domain, "_index") to explore a domain's topics.`,
35
+ sf_apex_lookup: `💡 Next: sf_code_examples("${context.className || '...'}") for usage examples, or sf_graph_query("related", nodeId) for related classes.`,
36
+ sf_code_examples: `💡 Next: sf_read_topic(domain, topic) to read the full page, or sf_apex_lookup(className) for class docs.`,
37
+ sf_object_reference: `💡 Next: sf_search("${context.object || '...'} trigger") for related automation docs.`,
38
+ sf_explain_error: `💡 Next: sf_code_examples("${context.error || '...'}") for handling patterns, or sf_apex_lookup(className) for class reference.`,
39
+ };
40
+ return suggestions[toolUsed] || '';
41
+ }
24
42
  // ─── Tool 1: sf_search ──────────────────────────────────────────
25
43
  server.tool("sf_search", "Search across all 121 Salesforce documentation domains for a topic. Returns matching documents with titles, domains, and descriptions.", {
26
44
  query: z.string().describe("Search query (e.g. 'SOQL queries', 'Platform Events', 'ConnectApi')"),
@@ -59,7 +77,7 @@ server.tool("sf_search", "Search across all 121 Salesforce documentation domains
59
77
  {
60
78
  type: "text",
61
79
  text: filtered.length > 0
62
- ? `Found ${filtered.length} results for "${query}":\n\n${text}`
80
+ ? `Found ${filtered.length} results for "${query}":\n\n${text}\n\n${suggestNext('sf_search', { query, domain: domain || '' })}`
63
81
  : `No results found for "${query}". Try broader terms or check available domains with sf_list_domains.`,
64
82
  },
65
83
  ],
@@ -90,7 +108,7 @@ server.tool("sf_read_topic", "Read a specific Salesforce documentation topic fil
90
108
  };
91
109
  }
92
110
  const content = await fs.readFile(filePath, "utf-8");
93
- return { content: [{ type: "text", text: content }] };
111
+ return { content: [{ type: "text", text: `${content}\n\n${suggestNext('sf_read_topic', { topic })}` }] };
94
112
  });
95
113
  // ─── Tool 3: sf_graph_query ─────────────────────────────────────
96
114
  server.tool("sf_graph_query", "Navigate the Salesforce Knowledge Graph. Find related docs, explore namespaces, discover service categories, or get full context for a document.", {
@@ -261,12 +279,167 @@ server.tool("sf_apex_lookup", "Look up an Apex class or method by name. Searches
261
279
  {
262
280
  type: "text",
263
281
  text: fileContent
264
- ? `${fileContent}${otherText}`
265
- : `Found: **${topResult.label}** (${topResult.nodeId})${otherText}`,
282
+ ? `${fileContent}${otherText}\n\n${suggestNext('sf_apex_lookup', { className })}`
283
+ : `Found: **${topResult.label}** (${topResult.nodeId})${otherText}\n\n${suggestNext('sf_apex_lookup', { className })}`,
266
284
  },
267
285
  ],
268
286
  };
269
287
  });
288
+ // ─── Tool 6: sf_code_examples ───────────────────────────────────
289
+ server.tool("sf_code_examples", "Find working code examples from Salesforce documentation. Returns code snippets with language, source file, and surrounding context. Great for learning patterns and copy-paste solutions.", {
290
+ topic: z.string().describe("Topic to find code for (e.g. 'batch apex', 'REST callout', 'SOQL aggregate')"),
291
+ language: z.string().optional().describe("Optional language filter (e.g. 'apex', 'javascript', 'soql', 'json')"),
292
+ domain: z.string().optional().describe("Optional domain filter (e.g. 'apex-guide', 'lwc')"),
293
+ limit: z.number().optional().default(5).describe("Max snippets to return (default 5)"),
294
+ }, async ({ topic, language, domain, limit }) => {
295
+ const snippets = codeIndex.search(topic, { language, domain, limit: limit || 5 });
296
+ if (snippets.length === 0) {
297
+ return {
298
+ content: [{
299
+ type: "text",
300
+ text: `No code examples found for "${topic}". Try broader terms or remove the language filter.\n\n💡 Next: sf_search("${topic}") to find documentation pages that may contain code.`,
301
+ }],
302
+ };
303
+ }
304
+ const fence = '```';
305
+ const text = snippets.map((s, i) => {
306
+ return [
307
+ `### Example ${i + 1}: ${s.heading || s.docTitle}`,
308
+ s.context ? `> ${s.context}` : '',
309
+ `${fence}${s.language}`,
310
+ s.code,
311
+ fence,
312
+ `*Source: ${s.domain}/${s.topic}*`,
313
+ ].filter(Boolean).join('\n');
314
+ }).join('\n\n');
315
+ return {
316
+ content: [{
317
+ type: "text",
318
+ text: `Found ${snippets.length} code examples for "${topic}":\n\n${text}\n\n${suggestNext('sf_code_examples', { topic })}`,
319
+ }],
320
+ };
321
+ });
322
+ // ─── Tool 7: sf_object_reference ────────────────────────────────
323
+ server.tool("sf_object_reference", "Look up a Salesforce standard object or field. Searches the Field Reference Guide (4,800+ pages) and Object Reference (1,700+ pages) for object details, field types, and relationships.", {
324
+ object: z.string().describe("Object name (e.g. 'Account', 'Contact', 'Opportunity', 'Case')"),
325
+ field: z.string().optional().describe("Optional specific field (e.g. 'Industry', 'OwnerId', 'StageName')"),
326
+ }, async ({ object, field }) => {
327
+ const searchQuery = field ? `${object} ${field}` : object;
328
+ const results = gq.searchNodes(searchQuery, { type: 'document', limit: 20 });
329
+ // Filter to field reference and object reference domains
330
+ const refResults = results.filter(r => r.nodeId.startsWith('doc:sfFieldRef:') ||
331
+ r.nodeId.startsWith('doc:object-reference:'));
332
+ if (refResults.length === 0) {
333
+ // Fallback: try keyword search
334
+ const kwResults = gq.findDocsByKeyword(object.toLowerCase(), 10);
335
+ const kwFiltered = kwResults.filter(r => r.nodeId.startsWith('doc:sfFieldRef:') ||
336
+ r.nodeId.startsWith('doc:object-reference:'));
337
+ if (kwFiltered.length === 0) {
338
+ return {
339
+ content: [{
340
+ type: "text",
341
+ text: `No object/field reference found for "${searchQuery}". Try sf_search("${object}") for broader results.`,
342
+ }],
343
+ };
344
+ }
345
+ // Read the top keyword result
346
+ const top = kwFiltered[0];
347
+ const parts = top.nodeId.split(':');
348
+ const filePath = path.join(KNOWLEDGE_DIR, parts[1], `${parts.slice(2).join(':')}.md`);
349
+ if (await fs.pathExists(filePath)) {
350
+ const content = await fs.readFile(filePath, 'utf-8');
351
+ return { content: [{ type: "text", text: `${content}\n\n${suggestNext('sf_object_reference', { object })}` }] };
352
+ }
353
+ }
354
+ // Read the top result
355
+ const topResult = refResults[0];
356
+ const topParts = topResult.nodeId.split(':');
357
+ const topDomain = topParts[1];
358
+ const topTopic = topParts.slice(2).join(':');
359
+ const filePath = path.join(KNOWLEDGE_DIR, topDomain, `${topTopic}.md`);
360
+ let fileContent = '';
361
+ if (await fs.pathExists(filePath)) {
362
+ fileContent = await fs.readFile(filePath, 'utf-8');
363
+ }
364
+ const otherResults = refResults.slice(1, 8);
365
+ const otherText = otherResults.length > 0
366
+ ? '\n\n### See also:\n' + otherResults.map(r => `- **${r.label}** (${r.nodeId})`).join('\n')
367
+ : '';
368
+ return {
369
+ content: [{
370
+ type: "text",
371
+ text: fileContent
372
+ ? `${fileContent}${otherText}\n\n${suggestNext('sf_object_reference', { object })}`
373
+ : `Found: **${topResult.label}** (${topResult.nodeId})${otherText}\n\n${suggestNext('sf_object_reference', { object })}`,
374
+ }],
375
+ };
376
+ });
377
+ // ─── Tool 8: sf_explain_error ───────────────────────────────────
378
+ server.tool("sf_explain_error", "Explain a Salesforce error message or exception. Searches documentation for the error, provides explanation, common causes, and resolution steps.", {
379
+ error: z.string().describe("Error message or exception (e.g. 'UNABLE_TO_LOCK_ROW', 'System.LimitException', 'FIELD_CUSTOM_VALIDATION_EXCEPTION')"),
380
+ }, async ({ error }) => {
381
+ // Search across all domains with priority on error-relevant ones
382
+ const results = gq.searchNodes(error, { type: 'document', limit: 20 });
383
+ // Prioritize apex, api, and guide domains
384
+ const priorityDomains = ['apex-guide', 'apex-reference', 'api', 'api-asynch', 'api-streaming'];
385
+ const sorted = results.sort((a, b) => {
386
+ const aPriority = priorityDomains.some(d => a.nodeId.startsWith(`doc:${d}:`)) ? 1 : 0;
387
+ const bPriority = priorityDomains.some(d => b.nodeId.startsWith(`doc:${d}:`)) ? 1 : 0;
388
+ return bPriority - aPriority;
389
+ });
390
+ // Also try keyword search for the error code
391
+ const errorCode = error.replace(/[^a-zA-Z_]/g, '_').toLowerCase();
392
+ const kwResults = gq.findDocsByKeyword(errorCode, 5);
393
+ // Merge and deduplicate
394
+ const allResults = [...sorted];
395
+ for (const r of kwResults) {
396
+ if (!allResults.some(a => a.nodeId === r.nodeId)) {
397
+ allResults.push(r);
398
+ }
399
+ }
400
+ if (allResults.length === 0) {
401
+ return {
402
+ content: [{
403
+ type: "text",
404
+ text: `No documentation found for error "${error}". Try:\n- sf_search("${error}") for broader results\n- sf_apex_lookup(className) if this is an Apex exception`,
405
+ }],
406
+ };
407
+ }
408
+ // Read the top result to provide detailed explanation
409
+ const topResult = allResults[0];
410
+ const topParts = topResult.nodeId.split(':');
411
+ const topDomain = topParts[1];
412
+ const topTopic = topParts.slice(2).join(':');
413
+ const filePath = path.join(KNOWLEDGE_DIR, topDomain, `${topTopic}.md`);
414
+ let explanation = '';
415
+ if (await fs.pathExists(filePath)) {
416
+ const content = await fs.readFile(filePath, 'utf-8');
417
+ // Try to extract a relevant section (up to 2000 chars around the error mention)
418
+ const errorLower = error.toLowerCase();
419
+ const contentLower = content.toLowerCase();
420
+ const idx = contentLower.indexOf(errorLower);
421
+ if (idx >= 0) {
422
+ const start = Math.max(0, content.lastIndexOf('\n#', idx) + 1);
423
+ const end = Math.min(content.length, idx + 2000);
424
+ explanation = content.slice(start, end).trim();
425
+ }
426
+ else {
427
+ // Return first 2000 chars if exact error not found in text
428
+ explanation = content.slice(0, 2000).trim();
429
+ }
430
+ }
431
+ const relatedDocs = allResults.slice(1, 6).map(r => `- **${r.label}** (${r.nodeId})`).join('\n');
432
+ const text = [
433
+ `## Error: ${error}`,
434
+ '',
435
+ explanation || `Found in: **${topResult.label}** (${topResult.nodeId})`,
436
+ '',
437
+ relatedDocs ? `### Related Documentation:\n${relatedDocs}` : '',
438
+ '',
439
+ suggestNext('sf_explain_error', { error }),
440
+ ].filter(Boolean).join('\n');
441
+ return { content: [{ type: "text", text }] };
442
+ });
270
443
  // ─── MCP Prompts ────────────────────────────────────────────────
271
444
  server.prompt("explore_api", "Explore a Salesforce API — discover endpoints, methods, and usage patterns", { api: z.string().describe("API to explore (e.g. 'REST API', 'Tooling API', 'Metadata API', 'Bulk API')") }, ({ api }) => ({
272
445
  messages: [
@@ -331,13 +504,14 @@ server.prompt("compare_services", "Compare Salesforce products by exploring thei
331
504
  }));
332
505
  // ─── Start the server ───────────────────────────────────────────
333
506
  async function main() {
334
- // Pre-load graph
335
- await gq.load();
507
+ // Pre-load graph and code index in parallel
508
+ await Promise.all([gq.load(), codeIndex.load()]);
336
509
  const transport = new StdioServerTransport();
337
510
  await server.connect(transport);
338
511
  // Log to stderr (stdout is for MCP protocol)
339
512
  const { nodes, edges } = gq.getStats();
340
- console.error(`@sfdxy/sf-documentation-knowledge MCP Server v1.0.0 (${nodes.toLocaleString()} nodes, ${edges.toLocaleString()} edges)`);
513
+ const { totalSnippets } = codeIndex.getStats();
514
+ console.error(`@sfdxy/sf-documentation-knowledge MCP Server v1.1.0 (${nodes.toLocaleString()} nodes, ${edges.toLocaleString()} edges, ${totalSnippets.toLocaleString()} code snippets)`);
341
515
  }
342
516
  main().catch((err) => {
343
517
  console.error("Fatal:", err);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ function extractKeywords(title, description, headings) {
51
51
  const allText = [title, description, ...headings].join(" ");
52
52
  // Split into words, clean and filter noise
53
53
  const words = allText
54
- .split(/[\s,;:()\[\]{}|/\\]+/)
54
+ .split(/[\s,;:()[\]{}|/\\]+/)
55
55
  .map((w) => w.trim())
56
56
  .map((w) => w.replace(/[.,:;!?'"]+$/g, "")) // Strip trailing punctuation
57
57
  .map((w) => w.replace(/^[.,:;!?'"]+/g, "")) // Strip leading punctuation
@@ -1 +1 @@
1
- {"version":3,"file":"tagger.js","sourceRoot":"","sources":["../../src/processors/tagger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tagger.js","sourceRoot":"","sources":["../../src/processors/tagger.ts"],"names":[],"mappings":"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"}