@cosmocoder/mcp-web-docs 1.0.0 → 1.0.1

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 (84) hide show
  1. package/README.md +132 -10
  2. package/build/crawler/auth.d.ts +17 -6
  3. package/build/crawler/auth.js +166 -31
  4. package/build/crawler/auth.js.map +1 -1
  5. package/build/crawler/auth.test.js +197 -33
  6. package/build/crawler/auth.test.js.map +1 -1
  7. package/build/index.js +68 -16
  8. package/build/index.js.map +1 -1
  9. package/build/index.test.js +134 -0
  10. package/build/index.test.js.map +1 -1
  11. package/build/storage/storage.d.ts +17 -0
  12. package/build/storage/storage.js +102 -5
  13. package/build/storage/storage.js.map +1 -1
  14. package/build/storage/storage.test.js +91 -0
  15. package/build/storage/storage.test.js.map +1 -1
  16. package/build/types.d.ts +4 -0
  17. package/build/util/security.js +8 -0
  18. package/build/util/security.js.map +1 -1
  19. package/build/util/security.test.js +18 -0
  20. package/build/util/security.test.js.map +1 -1
  21. package/package.json +11 -2
  22. package/build/crawler/cheerio.d.ts +0 -11
  23. package/build/crawler/cheerio.js +0 -134
  24. package/build/crawler/cheerio.js.map +0 -1
  25. package/build/crawler/chromium.d.ts +0 -21
  26. package/build/crawler/chromium.js +0 -596
  27. package/build/crawler/chromium.js.map +0 -1
  28. package/build/crawler/default.d.ts +0 -11
  29. package/build/crawler/default.js +0 -138
  30. package/build/crawler/default.js.map +0 -1
  31. package/build/crawler/factory.d.ts +0 -6
  32. package/build/crawler/factory.js +0 -83
  33. package/build/crawler/factory.js.map +0 -1
  34. package/build/crawler/puppeteer.d.ts +0 -16
  35. package/build/crawler/puppeteer.js +0 -191
  36. package/build/crawler/puppeteer.js.map +0 -1
  37. package/build/embeddings/openai.d.ts +0 -8
  38. package/build/embeddings/openai.js +0 -56
  39. package/build/embeddings/openai.js.map +0 -1
  40. package/build/rag/cache.d.ts +0 -10
  41. package/build/rag/cache.js +0 -10
  42. package/build/rag/cache.js.map +0 -1
  43. package/build/rag/code-generator.d.ts +0 -11
  44. package/build/rag/code-generator.js +0 -30
  45. package/build/rag/code-generator.js.map +0 -1
  46. package/build/rag/context-assembler.d.ts +0 -23
  47. package/build/rag/context-assembler.js +0 -113
  48. package/build/rag/context-assembler.js.map +0 -1
  49. package/build/rag/docs-search.d.ts +0 -55
  50. package/build/rag/docs-search.js +0 -380
  51. package/build/rag/docs-search.js.map +0 -1
  52. package/build/rag/pipeline.d.ts +0 -26
  53. package/build/rag/pipeline.js +0 -91
  54. package/build/rag/pipeline.js.map +0 -1
  55. package/build/rag/query-processor.d.ts +0 -14
  56. package/build/rag/query-processor.js +0 -57
  57. package/build/rag/query-processor.js.map +0 -1
  58. package/build/rag/reranker.d.ts +0 -55
  59. package/build/rag/reranker.js +0 -210
  60. package/build/rag/reranker.js.map +0 -1
  61. package/build/rag/response-generator.d.ts +0 -20
  62. package/build/rag/response-generator.js +0 -101
  63. package/build/rag/response-generator.js.map +0 -1
  64. package/build/rag/retriever.d.ts +0 -19
  65. package/build/rag/retriever.js +0 -111
  66. package/build/rag/retriever.js.map +0 -1
  67. package/build/rag/validator.d.ts +0 -22
  68. package/build/rag/validator.js +0 -128
  69. package/build/rag/validator.js.map +0 -1
  70. package/build/rag/version-manager.d.ts +0 -23
  71. package/build/rag/version-manager.js +0 -98
  72. package/build/rag/version-manager.js.map +0 -1
  73. package/build/types/rag.d.ts +0 -27
  74. package/build/types/rag.js +0 -2
  75. package/build/types/rag.js.map +0 -1
  76. package/build/util/content-utils.d.ts +0 -31
  77. package/build/util/content-utils.js +0 -120
  78. package/build/util/content-utils.js.map +0 -1
  79. package/build/util/content.d.ts +0 -1
  80. package/build/util/content.js +0 -16
  81. package/build/util/content.js.map +0 -1
  82. package/build/util/site-detector.d.ts +0 -22
  83. package/build/util/site-detector.js +0 -42
  84. package/build/util/site-detector.js.map +0 -1
@@ -1,113 +0,0 @@
1
- export class ContextAssembler {
2
- async assembleContext(chunks) {
3
- // Group chunks by type
4
- const groups = this.groupChunksByType(chunks);
5
- // Extract relationships between chunks
6
- const relationships = this.extractRelationships(chunks);
7
- // Build hierarchical context
8
- const hierarchicalContext = this.buildHierarchy(groups);
9
- // Consolidate metadata
10
- const metadata = this.consolidateMetadata(chunks);
11
- return {
12
- hierarchicalContext,
13
- relationships,
14
- metadata
15
- };
16
- }
17
- groupChunksByType(chunks) {
18
- const groups = new Map();
19
- for (const chunk of chunks) {
20
- const type = chunk.metadata.type || 'overview';
21
- if (!groups.has(type)) {
22
- groups.set(type, { type, chunks: [] });
23
- }
24
- groups.get(type).chunks.push(chunk);
25
- }
26
- return groups;
27
- }
28
- extractRelationships(chunks) {
29
- const relationships = [];
30
- // Collect all relationships from chunks
31
- for (const chunk of chunks) {
32
- if (chunk.relationships) {
33
- relationships.push(...chunk.relationships);
34
- }
35
- }
36
- // Remove duplicates
37
- return this.deduplicateRelationships(relationships);
38
- }
39
- buildHierarchy(groups) {
40
- const hierarchy = [];
41
- // Start with overview chunks
42
- if (groups.has('overview')) {
43
- hierarchy.push(...groups.get('overview').chunks);
44
- }
45
- // Add API documentation
46
- if (groups.has('api')) {
47
- hierarchy.push(...groups.get('api').chunks);
48
- }
49
- // Add usage examples
50
- if (groups.has('usage')) {
51
- hierarchy.push(...groups.get('usage').chunks);
52
- }
53
- // Add code examples
54
- if (groups.has('example')) {
55
- hierarchy.push(...groups.get('example').chunks);
56
- }
57
- return hierarchy;
58
- }
59
- consolidateMetadata(chunks) {
60
- const topics = new Set();
61
- const prerequisites = new Set();
62
- const frameworks = new Set();
63
- const languages = new Set();
64
- let maxComplexity = 'basic';
65
- for (const chunk of chunks) {
66
- // Collect topics from semantic tags
67
- chunk.metadata.semanticTags?.forEach(tag => topics.add(tag));
68
- // Collect prerequisites
69
- chunk.metadata.prerequisites?.forEach(prereq => prerequisites.add(prereq));
70
- // Track frameworks and languages
71
- if (chunk.metadata.framework)
72
- frameworks.add(chunk.metadata.framework);
73
- if (chunk.metadata.language)
74
- languages.add(chunk.metadata.language);
75
- // Determine highest complexity
76
- if (chunk.metadata.complexity === 'advanced' ||
77
- (chunk.metadata.complexity === 'intermediate' && maxComplexity === 'basic')) {
78
- maxComplexity = chunk.metadata.complexity;
79
- }
80
- }
81
- // Generate a summary based on the most relevant chunks
82
- const summary = this.generateSummary(chunks);
83
- return {
84
- summary,
85
- topics: Array.from(topics),
86
- complexity: maxComplexity,
87
- prerequisites: Array.from(prerequisites),
88
- frameworks: Array.from(frameworks),
89
- languages: Array.from(languages)
90
- };
91
- }
92
- generateSummary(chunks) {
93
- // Sort chunks by relevance (using sourceReliability as a proxy)
94
- const sortedChunks = [...chunks].sort((a, b) => (b.metadata.sourceReliability || 0) - (a.metadata.sourceReliability || 0));
95
- // Take the most relevant chunks' summaries
96
- const summaries = sortedChunks
97
- .slice(0, 3)
98
- .map(chunk => chunk.metadata.contextualSummary || '')
99
- .filter(Boolean);
100
- return summaries.join(' ');
101
- }
102
- deduplicateRelationships(relationships) {
103
- const seen = new Set();
104
- return relationships.filter(rel => {
105
- const key = `${rel.sourceComponent}-${rel.targetComponent}-${rel.type}`;
106
- if (seen.has(key))
107
- return false;
108
- seen.add(key);
109
- return true;
110
- });
111
- }
112
- }
113
- //# sourceMappingURL=context-assembler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-assembler.js","sourceRoot":"","sources":["../../src/rag/context-assembler.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- import { DocumentStore } from "../storage/storage.js";
2
- import { EmbeddingsProvider } from "../embeddings/types.js";
3
- export interface DocsSearchResult {
4
- answer: string;
5
- codeExamples: string[];
6
- componentDetails: any[];
7
- validation: {
8
- factCheck: boolean;
9
- codeCheck: boolean;
10
- consistencyCheck: boolean;
11
- details: string[];
12
- };
13
- limitations: string[];
14
- }
15
- export interface DocsSearchOptions {
16
- urls: string[];
17
- componentNames?: string[];
18
- propNames?: string[];
19
- strictMode?: boolean;
20
- maxSourceChunks?: number;
21
- advanced?: {
22
- useQueryExpansion?: boolean;
23
- useMultiQuery?: boolean;
24
- maxQueryVariations?: number;
25
- mergeUrlResults?: boolean;
26
- };
27
- }
28
- export declare class DocsSearch {
29
- private queryProcessor;
30
- private contextRetriever;
31
- private contextAssembler;
32
- private responseGenerator;
33
- private responseValidator;
34
- private store;
35
- private openai;
36
- constructor(openaiApiKey: string, store: DocumentStore, embeddings: EmbeddingsProvider);
37
- /**
38
- * Generate alternative phrasings of the query to improve search recall
39
- * @param query The original query
40
- * @param componentNames Optional component names to include in variations
41
- * @param propNames Optional prop names to include in variations
42
- * @returns Array of query variations
43
- */
44
- private expandQuery;
45
- /**
46
- * Search across multiple URLs and merge the results
47
- * @param queryIntent The query intent
48
- * @param urls Array of URLs to search
49
- * @param options Retrieval options
50
- * @returns Combined retrieval result
51
- */
52
- private searchAcrossUrls;
53
- search(query: string, options: DocsSearchOptions): Promise<DocsSearchResult>;
54
- private identifyLimitations;
55
- }
@@ -1,380 +0,0 @@
1
- import { QueryProcessor } from "./query-processor.js";
2
- import { ContextRetriever } from "./retriever.js";
3
- import { ContextAssembler } from "./context-assembler.js";
4
- import { ResponseGenerator } from "./response-generator.js";
5
- import { ResponseValidator } from "./validator.js";
6
- import OpenAI from "openai";
7
- export class DocsSearch {
8
- queryProcessor;
9
- contextRetriever;
10
- contextAssembler;
11
- responseGenerator;
12
- responseValidator;
13
- store;
14
- openai; // OpenAI client
15
- constructor(openaiApiKey, store, embeddings) {
16
- this.store = store;
17
- this.queryProcessor = new QueryProcessor(openaiApiKey, embeddings);
18
- this.contextRetriever = new ContextRetriever(store, embeddings, openaiApiKey);
19
- this.contextAssembler = new ContextAssembler();
20
- this.responseGenerator = new ResponseGenerator(openaiApiKey);
21
- this.responseValidator = new ResponseValidator(openaiApiKey);
22
- // Initialize OpenAI client for query expansion
23
- this.openai = new OpenAI({ apiKey: openaiApiKey });
24
- }
25
- /**
26
- * Generate alternative phrasings of the query to improve search recall
27
- * @param query The original query
28
- * @param componentNames Optional component names to include in variations
29
- * @param propNames Optional prop names to include in variations
30
- * @returns Array of query variations
31
- */
32
- async expandQuery(query, componentNames, propNames) {
33
- try {
34
- console.debug(`[DocsSearch] Expanding query: "${query}"`);
35
- // Create a prompt that instructs the model to generate alternative phrasings
36
- const prompt = `Generate 3-5 alternative phrasings of the following query to improve search recall.
37
- Each phrasing should capture the same intent but use different wording, terminology, or structure.
38
-
39
- Original query: "${query}"
40
-
41
- ${componentNames && componentNames.length > 0
42
- ? `Important component names to include: ${componentNames.join(', ')}`
43
- : ''}
44
- ${propNames && propNames.length > 0
45
- ? `Important prop names to include: ${propNames.join(', ')}`
46
- : ''}
47
-
48
- Return only the alternative phrasings, one per line, without numbering or additional text.`;
49
- // Call the OpenAI API to generate variations
50
- const response = await this.openai.chat.completions.create({
51
- model: "gpt-3.5-turbo",
52
- messages: [{ role: "user", content: prompt }],
53
- temperature: 0.7,
54
- max_tokens: 300
55
- });
56
- // Extract the variations from the response
57
- const content = response.choices[0].message.content;
58
- if (!content) {
59
- return [query]; // Return original query if no content
60
- }
61
- // Split the content by newlines and filter out empty lines
62
- const variations = content
63
- .split('\n')
64
- .map((line) => line.trim())
65
- .filter((line) => line.length > 0);
66
- // Add the original query to the variations
67
- const allVariations = [query, ...variations];
68
- console.debug(`[DocsSearch] Generated ${variations.length} query variations`);
69
- return allVariations;
70
- }
71
- catch (error) {
72
- console.error('[DocsSearch] Error expanding query:', error);
73
- return [query]; // Return original query on error
74
- }
75
- }
76
- /**
77
- * Search across multiple URLs and merge the results
78
- * @param queryIntent The query intent
79
- * @param urls Array of URLs to search
80
- * @param options Retrieval options
81
- * @returns Combined retrieval result
82
- */
83
- async searchAcrossUrls(queryIntent, urls, options) {
84
- console.debug(`[DocsSearch] Searching across ${urls.length} URLs`);
85
- // Initialize combined results
86
- const allChunks = [];
87
- const allScores = [];
88
- const seenIds = new Set();
89
- // Search each URL
90
- for (const url of urls) {
91
- try {
92
- // Clone options and set URL filter
93
- const urlOptions = {
94
- ...options,
95
- filterByUrl: url
96
- };
97
- // Retrieve context for this URL
98
- const urlRetrieval = await this.contextRetriever.retrieveContext(queryIntent, urlOptions);
99
- // Add unique chunks to combined results
100
- for (let i = 0; i < urlRetrieval.chunks.length; i++) {
101
- const chunk = urlRetrieval.chunks[i];
102
- if (!seenIds.has(chunk.id)) {
103
- allChunks.push(chunk);
104
- allScores.push(urlRetrieval.relevanceScores[i]);
105
- seenIds.add(chunk.id);
106
- }
107
- }
108
- console.debug(`[DocsSearch] Found ${urlRetrieval.chunks.length} chunks for URL: ${url}`);
109
- }
110
- catch (error) {
111
- console.error(`[DocsSearch] Error searching URL ${url}:`, error);
112
- // Continue with other URLs
113
- }
114
- }
115
- // Sort combined results by score
116
- const combinedResults = allChunks.map((chunk, index) => ({
117
- chunk,
118
- score: allScores[index]
119
- }));
120
- combinedResults.sort((a, b) => b.score - a.score);
121
- // Take top results
122
- const limit = options.nFinal || 30;
123
- const topResults = combinedResults.slice(0, limit);
124
- console.debug(`[DocsSearch] Combined results: ${allChunks.length}, top results: ${topResults.length}`);
125
- return {
126
- chunks: topResults.map(r => r.chunk),
127
- relevanceScores: topResults.map(r => r.score)
128
- };
129
- }
130
- async search(query, options) {
131
- console.debug(`[DocsSearch] Starting search for query: "${query}"`, {
132
- urls: options.urls,
133
- componentNames: options.componentNames,
134
- propNames: options.propNames,
135
- strictMode: options.strictMode,
136
- advanced: options.advanced
137
- });
138
- try {
139
- // Set up advanced options with defaults
140
- const advanced = options.advanced || {};
141
- const useQueryExpansion = advanced.useQueryExpansion ?? true;
142
- const useMultiQuery = advanced.useMultiQuery ?? true;
143
- const maxQueryVariations = advanced.maxQueryVariations ?? 3;
144
- const mergeUrlResults = advanced.mergeUrlResults ?? (options.urls.length > 1);
145
- // Process query and determine intent
146
- const queryIntent = await this.queryProcessor.processQuery(query);
147
- console.debug('[DocsSearch] Query intent classified:', queryIntent);
148
- // Add component names and prop names from options
149
- if (options.componentNames) {
150
- queryIntent.componentNames = options.componentNames;
151
- }
152
- if (options.propNames) {
153
- queryIntent.propNames = options.propNames;
154
- }
155
- // Set up retrieval options
156
- const retrievalOptions = {
157
- limit: 40, // Doubled for more comprehensive results
158
- minScore: 0.6, // Further lowered threshold for better recall
159
- filterByIntent: false, // Disable intent filtering for diverse results
160
- nRetrieve: 100, // Significantly increased for better coverage
161
- nFinal: 50, // Increased final results count
162
- useReranking: true,
163
- rerankerModel: 'openai',
164
- // Enable advanced retrieval features
165
- useMultiStageRetrieval: true, // Use multi-stage retrieval for comprehensive results
166
- expandRelatedComponents: true // Discover and include related components
167
- };
168
- let retrieval;
169
- // Determine search strategy based on options
170
- if (useQueryExpansion && useMultiQuery) {
171
- // Multi-query approach with query expansion
172
- console.debug('[DocsSearch] Using multi-query approach with query expansion');
173
- // Generate query variations
174
- const queryVariations = await this.expandQuery(query, options.componentNames, options.propNames);
175
- // Limit the number of variations to use
176
- const limitedVariations = queryVariations.slice(0, maxQueryVariations);
177
- console.debug(`[DocsSearch] Using ${limitedVariations.length} query variations`);
178
- // Process each variation to get intents
179
- const intents = [];
180
- for (const variation of limitedVariations) {
181
- const intent = await this.queryProcessor.processQuery(variation);
182
- // Add component and prop names
183
- if (options.componentNames) {
184
- intent.componentNames = options.componentNames;
185
- }
186
- if (options.propNames) {
187
- intent.propNames = options.propNames;
188
- }
189
- intents.push(intent);
190
- }
191
- // Combine results from all variations
192
- const allChunks = [];
193
- const allScores = [];
194
- const seenIds = new Set();
195
- // Process each intent
196
- for (const intent of intents) {
197
- let intentResults;
198
- if (mergeUrlResults && options.urls.length > 1) {
199
- // Search across all URLs and merge results
200
- intentResults = await this.searchAcrossUrls(intent, options.urls, retrievalOptions);
201
- }
202
- else {
203
- // Use single URL filter if only one URL
204
- const urlOptions = {
205
- ...retrievalOptions,
206
- filterByUrl: options.urls.length === 1 ? options.urls[0] : undefined
207
- };
208
- intentResults = await this.contextRetriever.retrieveContext(intent, urlOptions);
209
- }
210
- // Add unique chunks to combined results
211
- for (let i = 0; i < intentResults.chunks.length; i++) {
212
- const chunk = intentResults.chunks[i];
213
- if (!seenIds.has(chunk.id)) {
214
- allChunks.push(chunk);
215
- allScores.push(intentResults.relevanceScores[i]);
216
- seenIds.add(chunk.id);
217
- }
218
- }
219
- }
220
- // Sort combined results by score
221
- const combinedResults = allChunks.map((chunk, index) => ({
222
- chunk,
223
- score: allScores[index]
224
- }));
225
- combinedResults.sort((a, b) => b.score - a.score);
226
- // Take top results
227
- const limit = retrievalOptions.nFinal || 50;
228
- const topResults = combinedResults.slice(0, limit);
229
- retrieval = {
230
- chunks: topResults.map(r => r.chunk),
231
- relevanceScores: topResults.map(r => r.score)
232
- };
233
- console.debug(`[DocsSearch] Multi-query approach found ${retrieval.chunks.length} unique chunks`);
234
- }
235
- else {
236
- // Standard single-query approach
237
- if (mergeUrlResults && options.urls.length > 1) {
238
- // Search across all URLs and merge results
239
- retrieval = await this.searchAcrossUrls(queryIntent, options.urls, retrievalOptions);
240
- }
241
- else {
242
- // Use single URL filter if only one URL
243
- retrievalOptions.filterByUrl = options.urls.length === 1 ? options.urls[0] : undefined;
244
- retrieval = await this.contextRetriever.retrieveContext(queryIntent, retrievalOptions);
245
- }
246
- }
247
- console.debug('[DocsSearch] Retrieved context chunks:', retrieval.chunks.length);
248
- // Get raw search results for source attribution (using original query for consistency)
249
- const rawResults = [];
250
- for (const url of options.urls) {
251
- try {
252
- const results = await this.store.searchByText(query, {
253
- limit: options.maxSourceChunks || 15,
254
- filterByUrl: url
255
- });
256
- rawResults.push(...results);
257
- }
258
- catch (error) {
259
- console.error(`[DocsSearch] Error searching text for URL ${url}:`, error);
260
- // Continue with other URLs
261
- }
262
- }
263
- console.debug('[DocsSearch] Retrieved raw search results:', rawResults.length);
264
- // Assemble context with enhanced chunks from our improved retrieval
265
- const assembled = await this.contextAssembler.assembleContext(retrieval.chunks);
266
- console.debug('[DocsSearch] Assembled context with relationships from enhanced retrieval');
267
- // Generate response
268
- const generatedResponse = await this.responseGenerator.generateResponse(assembled, queryIntent);
269
- console.debug('[DocsSearch] Generated response');
270
- // Validate response
271
- const validation = await this.responseValidator.validateResponse(generatedResponse, assembled);
272
- console.debug('[DocsSearch] Validated response:', validation);
273
- // Skip source attributions since they're not included in the response anymore
274
- console.debug('[DocsSearch] Skipping source attributions since they\'re not included in the response');
275
- // Identify limitations with advanced search information
276
- const limitations = this.identifyLimitations(generatedResponse, validation, assembled, options.strictMode || false, options.advanced);
277
- // If strict mode is enabled and validation failed, reject the response
278
- if (options.strictMode &&
279
- (!validation.factCheck || !validation.consistencyCheck || !validation.codeCheck)) {
280
- console.debug('[DocsSearch] Strict mode enabled and validation failed, rejecting response');
281
- // Collect all validation issues to explain why the response was rejected
282
- const validationIssues = [
283
- ...(validation.details.factCheckDetails || []),
284
- ...(validation.details.consistencyCheckDetails || []),
285
- ...(validation.details.codeCheckDetails || [])
286
- ];
287
- // Create a more informative rejection message that includes the specific issues
288
- let rejectionMessage = "I cannot provide a reliable answer based on the documentation. The generated response contains information that is not directly supported by the documentation sources.";
289
- if (validationIssues.length > 0) {
290
- rejectionMessage += "\n\nSpecific issues identified:\n";
291
- validationIssues.slice(0, 3).forEach(issue => {
292
- rejectionMessage += `- ${issue}\n`;
293
- });
294
- if (validationIssues.length > 3) {
295
- rejectionMessage += `- Plus ${validationIssues.length - 3} more issues\n`;
296
- }
297
- }
298
- return {
299
- answer: rejectionMessage,
300
- codeExamples: [],
301
- componentDetails: [],
302
- validation: {
303
- factCheck: validation.factCheck,
304
- codeCheck: validation.codeCheck,
305
- consistencyCheck: validation.consistencyCheck,
306
- details: validationIssues
307
- },
308
- limitations: [
309
- "The documentation does not contain sufficient information to answer this query accurately.",
310
- "Consider rephrasing your query to focus on information that is explicitly documented."
311
- ]
312
- };
313
- }
314
- // Return the combined result without source chunks to reduce noise
315
- return {
316
- answer: generatedResponse.text,
317
- codeExamples: generatedResponse.codeExamples || [],
318
- componentDetails: Object.entries(generatedResponse.componentDetails || {}).map(([name, details]) => ({
319
- name,
320
- ...details
321
- })),
322
- validation: {
323
- factCheck: validation.factCheck,
324
- codeCheck: validation.codeCheck,
325
- consistencyCheck: validation.consistencyCheck,
326
- details: [
327
- ...(validation.details.factCheckDetails || []),
328
- ...(validation.details.codeCheckDetails || []),
329
- ...(validation.details.consistencyCheckDetails || [])
330
- ]
331
- },
332
- limitations
333
- };
334
- }
335
- catch (error) {
336
- console.error('[DocsSearch] Error during search:', error);
337
- throw error;
338
- }
339
- }
340
- // Source attribution methods have been removed since they're not needed anymore
341
- identifyLimitations(response, validation, context, strictMode, advanced) {
342
- const limitations = [];
343
- // Check if validation failed
344
- if (!validation.factCheck) {
345
- limitations.push("Some information may not be directly supported by the documentation.");
346
- }
347
- if (!validation.consistencyCheck) {
348
- limitations.push("There may be inconsistencies between the response and the documentation.");
349
- }
350
- if (!validation.codeCheck) {
351
- limitations.push("The code examples may contain syntax errors or inconsistencies.");
352
- }
353
- // Check if context is limited
354
- if (context.hierarchicalContext.length < 5) {
355
- limitations.push("Limited documentation context was available for this query.");
356
- }
357
- // Check if code examples are missing
358
- if (response.codeExamples?.length === 0) {
359
- limitations.push("No code examples were found in the documentation for this query.");
360
- }
361
- // Add a note about strict mode
362
- if (strictMode) {
363
- limitations.push("Strict mode is enabled: only information directly supported by the documentation is included.");
364
- }
365
- // Add information about advanced search features
366
- if (advanced) {
367
- if (advanced.useQueryExpansion && advanced.useMultiQuery) {
368
- limitations.push("Enhanced search with query expansion and multi-query approach was used to improve results.");
369
- }
370
- else if (advanced.useQueryExpansion) {
371
- limitations.push("Query expansion was used to improve search results.");
372
- }
373
- if (advanced.mergeUrlResults && context.hierarchicalContext.length > 10) {
374
- limitations.push("Results from multiple documentation sources were combined to provide a more comprehensive answer.");
375
- }
376
- }
377
- return limitations;
378
- }
379
- }
380
- //# sourceMappingURL=docs-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-search.js","sourceRoot":"","sources":["../../src/rag/docs-search.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { GeneratedResponse } from "./response-generator.js";
2
- import { ValidationResult } from "./validator.js";
3
- export interface RAGResponse {
4
- response: GeneratedResponse;
5
- validation: ValidationResult;
6
- }
7
- export interface RAGConfig {
8
- openaiApiKey: string;
9
- dbPath: string;
10
- vectorDbPath: string;
11
- maxCacheSize?: number;
12
- }
13
- export declare class RAGPipeline {
14
- private queryProcessor;
15
- private contextRetriever;
16
- private contextAssembler;
17
- private responseGenerator;
18
- private responseValidator;
19
- private versionManager;
20
- private cache;
21
- private store;
22
- private embeddings;
23
- constructor(config: RAGConfig);
24
- initialize(): Promise<void>;
25
- process(query: string): Promise<RAGResponse>;
26
- }