@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.
- package/README.md +132 -10
- package/build/crawler/auth.d.ts +17 -6
- package/build/crawler/auth.js +166 -31
- package/build/crawler/auth.js.map +1 -1
- package/build/crawler/auth.test.js +197 -33
- package/build/crawler/auth.test.js.map +1 -1
- package/build/index.js +68 -16
- package/build/index.js.map +1 -1
- package/build/index.test.js +134 -0
- package/build/index.test.js.map +1 -1
- package/build/storage/storage.d.ts +17 -0
- package/build/storage/storage.js +102 -5
- package/build/storage/storage.js.map +1 -1
- package/build/storage/storage.test.js +91 -0
- package/build/storage/storage.test.js.map +1 -1
- package/build/types.d.ts +4 -0
- package/build/util/security.js +8 -0
- package/build/util/security.js.map +1 -1
- package/build/util/security.test.js +18 -0
- package/build/util/security.test.js.map +1 -1
- package/package.json +11 -2
- package/build/crawler/cheerio.d.ts +0 -11
- package/build/crawler/cheerio.js +0 -134
- package/build/crawler/cheerio.js.map +0 -1
- package/build/crawler/chromium.d.ts +0 -21
- package/build/crawler/chromium.js +0 -596
- package/build/crawler/chromium.js.map +0 -1
- package/build/crawler/default.d.ts +0 -11
- package/build/crawler/default.js +0 -138
- package/build/crawler/default.js.map +0 -1
- package/build/crawler/factory.d.ts +0 -6
- package/build/crawler/factory.js +0 -83
- package/build/crawler/factory.js.map +0 -1
- package/build/crawler/puppeteer.d.ts +0 -16
- package/build/crawler/puppeteer.js +0 -191
- package/build/crawler/puppeteer.js.map +0 -1
- package/build/embeddings/openai.d.ts +0 -8
- package/build/embeddings/openai.js +0 -56
- package/build/embeddings/openai.js.map +0 -1
- package/build/rag/cache.d.ts +0 -10
- package/build/rag/cache.js +0 -10
- package/build/rag/cache.js.map +0 -1
- package/build/rag/code-generator.d.ts +0 -11
- package/build/rag/code-generator.js +0 -30
- package/build/rag/code-generator.js.map +0 -1
- package/build/rag/context-assembler.d.ts +0 -23
- package/build/rag/context-assembler.js +0 -113
- package/build/rag/context-assembler.js.map +0 -1
- package/build/rag/docs-search.d.ts +0 -55
- package/build/rag/docs-search.js +0 -380
- package/build/rag/docs-search.js.map +0 -1
- package/build/rag/pipeline.d.ts +0 -26
- package/build/rag/pipeline.js +0 -91
- package/build/rag/pipeline.js.map +0 -1
- package/build/rag/query-processor.d.ts +0 -14
- package/build/rag/query-processor.js +0 -57
- package/build/rag/query-processor.js.map +0 -1
- package/build/rag/reranker.d.ts +0 -55
- package/build/rag/reranker.js +0 -210
- package/build/rag/reranker.js.map +0 -1
- package/build/rag/response-generator.d.ts +0 -20
- package/build/rag/response-generator.js +0 -101
- package/build/rag/response-generator.js.map +0 -1
- package/build/rag/retriever.d.ts +0 -19
- package/build/rag/retriever.js +0 -111
- package/build/rag/retriever.js.map +0 -1
- package/build/rag/validator.d.ts +0 -22
- package/build/rag/validator.js +0 -128
- package/build/rag/validator.js.map +0 -1
- package/build/rag/version-manager.d.ts +0 -23
- package/build/rag/version-manager.js +0 -98
- package/build/rag/version-manager.js.map +0 -1
- package/build/types/rag.d.ts +0 -27
- package/build/types/rag.js +0 -2
- package/build/types/rag.js.map +0 -1
- package/build/util/content-utils.d.ts +0 -31
- package/build/util/content-utils.js +0 -120
- package/build/util/content-utils.js.map +0 -1
- package/build/util/content.d.ts +0 -1
- package/build/util/content.js +0 -16
- package/build/util/content.js.map +0 -1
- package/build/util/site-detector.d.ts +0 -22
- package/build/util/site-detector.js +0 -42
- package/build/util/site-detector.js.map +0 -1
package/build/rag/retriever.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { logger } from "../util/logger.js";
|
|
2
|
-
export class ContextRetriever {
|
|
3
|
-
store;
|
|
4
|
-
embeddings;
|
|
5
|
-
constructor(store, embeddings) {
|
|
6
|
-
this.store = store;
|
|
7
|
-
this.embeddings = embeddings;
|
|
8
|
-
}
|
|
9
|
-
async retrieveContext(queryIntent, options = {}) {
|
|
10
|
-
const { limit = 10, minScore = 0.7, filterByIntent = true } = options;
|
|
11
|
-
logger.debug(`[ContextRetriever] Retrieving context for intent: ${queryIntent.intent}`, {
|
|
12
|
-
embedding: {
|
|
13
|
-
length: queryIntent.embedding.length,
|
|
14
|
-
sample: queryIntent.embedding.slice(0, 5)
|
|
15
|
-
},
|
|
16
|
-
options: { limit, minScore, filterByIntent }
|
|
17
|
-
});
|
|
18
|
-
// Validate the embedding
|
|
19
|
-
if (!queryIntent.embedding || queryIntent.embedding.length === 0) {
|
|
20
|
-
logger.debug('[ContextRetriever] Empty embedding in queryIntent');
|
|
21
|
-
return { chunks: [], relevanceScores: [] };
|
|
22
|
-
}
|
|
23
|
-
// Search for relevant chunks using the original query embedding
|
|
24
|
-
logger.debug(`[ContextRetriever] Searching documents with embedding of length ${queryIntent.embedding.length}`);
|
|
25
|
-
// Cast to any to work around TypeScript errors with the StorageProvider interface
|
|
26
|
-
const searchResults = await this.store.searchDocuments(queryIntent.embedding, // Use the pre-computed query embedding
|
|
27
|
-
{
|
|
28
|
-
limit: limit * 2, // Get more results initially for filtering
|
|
29
|
-
includeVectors: true, // Need vectors for filtering
|
|
30
|
-
filterByType: filterByIntent ? queryIntent.intent : undefined
|
|
31
|
-
});
|
|
32
|
-
logger.debug(`[ContextRetriever] Search returned ${searchResults.length} results`);
|
|
33
|
-
// Filter and process results
|
|
34
|
-
const filteredResults = searchResults
|
|
35
|
-
.filter((result) => {
|
|
36
|
-
// Apply minimum relevance score threshold
|
|
37
|
-
if (result.score < minScore) {
|
|
38
|
-
logger.debug(`[ContextRetriever] Filtering out result with score ${result.score} < ${minScore}`);
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
if (filterByIntent) {
|
|
42
|
-
// Additional intent-based filtering logic here
|
|
43
|
-
// For example, for API queries, prioritize chunks with API documentation
|
|
44
|
-
// Map intent to metadata type
|
|
45
|
-
const typeMap = {
|
|
46
|
-
'overview': ['overview'],
|
|
47
|
-
'api': ['api'],
|
|
48
|
-
'example': ['example'],
|
|
49
|
-
'usage': ['usage', 'overview'],
|
|
50
|
-
'component_usage': ['usage', 'overview'],
|
|
51
|
-
'concept': ['overview'],
|
|
52
|
-
'troubleshooting': ['example', 'usage'],
|
|
53
|
-
'general': ['overview', 'api', 'example', 'usage']
|
|
54
|
-
};
|
|
55
|
-
const allowedTypes = typeMap[queryIntent.intent] || ['overview'];
|
|
56
|
-
const resultType = result.metadata?.type || 'overview';
|
|
57
|
-
const isAllowed = allowedTypes.includes(resultType);
|
|
58
|
-
if (!isAllowed) {
|
|
59
|
-
logger.debug(`[ContextRetriever] Filtering out result with type ${resultType} not in allowed types:`, allowedTypes);
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
})
|
|
65
|
-
.slice(0, limit);
|
|
66
|
-
logger.debug(`[ContextRetriever] After filtering, ${filteredResults.length} results remain`);
|
|
67
|
-
// Convert search results to EnhancedChunks
|
|
68
|
-
const chunks = filteredResults.map((result) => {
|
|
69
|
-
// Log vector information for debugging
|
|
70
|
-
logger.debug(`[ContextRetriever] Processing result:`, {
|
|
71
|
-
id: result.id,
|
|
72
|
-
score: result.score,
|
|
73
|
-
hasVector: !!result.vector,
|
|
74
|
-
vectorLength: result.vector ? result.vector.length : 'N/A'
|
|
75
|
-
});
|
|
76
|
-
// Use the vector from the search result if available, otherwise create a default vector
|
|
77
|
-
const embedding = result.vector && Array.isArray(result.vector) && result.vector.length > 0
|
|
78
|
-
? result.vector
|
|
79
|
-
: new Array(this.embeddings.dimensions).fill(0);
|
|
80
|
-
return {
|
|
81
|
-
id: result.id,
|
|
82
|
-
content: result.content,
|
|
83
|
-
embedding,
|
|
84
|
-
metadata: {
|
|
85
|
-
sourceReliability: 1.0, // Default reliability score
|
|
86
|
-
lastVerified: new Date(),
|
|
87
|
-
citationInfo: {
|
|
88
|
-
version: "1.0", // Default version
|
|
89
|
-
},
|
|
90
|
-
contextualSummary: result.content.substring(0, 200), // Simple summary
|
|
91
|
-
prerequisites: [],
|
|
92
|
-
validationRules: {
|
|
93
|
-
constraints: [],
|
|
94
|
-
requirements: []
|
|
95
|
-
},
|
|
96
|
-
semanticTags: queryIntent.entities,
|
|
97
|
-
complexity: 'basic', // Default complexity
|
|
98
|
-
type: result.metadata?.type || 'overview', // Use type from search result or default to overview
|
|
99
|
-
framework: result.metadata?.framework,
|
|
100
|
-
language: result.metadata?.language
|
|
101
|
-
},
|
|
102
|
-
relationships: []
|
|
103
|
-
};
|
|
104
|
-
});
|
|
105
|
-
return {
|
|
106
|
-
chunks,
|
|
107
|
-
relevanceScores: filteredResults.map((r) => r.score)
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=retriever.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retriever.js","sourceRoot":"","sources":["../../src/rag/retriever.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAa3C,MAAM,OAAO,gBAAgB;IAER;IACA;IAFnB,YACmB,KAAoB,EACpB,UAA8B;QAD9B,UAAK,GAAL,KAAK,CAAe;QACpB,eAAU,GAAV,UAAU,CAAoB;IAC9C,CAAC;IAEJ,KAAK,CAAC,eAAe,CACnB,WAAwB,EACxB,UAA4B,EAAE;QAE9B,MAAM,EACJ,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,GAAG,EACd,cAAc,GAAG,IAAI,EACtB,GAAG,OAAO,CAAC;QAEZ,MAAM,CAAC,KAAK,CAAC,qDAAqD,WAAW,CAAC,MAAM,EAAE,EAAE;YACtF,SAAS,EAAE;gBACT,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM;gBACpC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aAC1C;YACD,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE;SAC7C,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;QAC7C,CAAC;QAED,gEAAgE;QAChE,MAAM,CAAC,KAAK,CAAC,mEAAmE,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAChH,kFAAkF;QAClF,MAAM,aAAa,GAAG,MAAO,IAAI,CAAC,KAAa,CAAC,eAAe,CAC7D,WAAW,CAAC,SAAS,EAAE,uCAAuC;QAC9D;YACE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,2CAA2C;YAC7D,cAAc,EAAE,IAAI,EAAE,6BAA6B;YACnD,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC9D,CACF,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,sCAAsC,aAAa,CAAC,MAAM,UAAU,CAAC,CAAC;QAEnF,6BAA6B;QAC7B,MAAM,eAAe,GAAG,aAAa;aAClC,MAAM,CAAC,CAAC,MAAoB,EAAE,EAAE;YAC/B,0CAA0C;YAC1C,IAAI,MAAM,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,sDAAsD,MAAM,CAAC,KAAK,MAAM,QAAQ,EAAE,CAAC,CAAC;gBACjG,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,+CAA+C;gBAC/C,yEAAyE;gBACzE,8BAA8B;gBAC9B,MAAM,OAAO,GAAsC;oBACjD,UAAU,EAAE,CAAC,UAAU,CAAC;oBACxB,KAAK,EAAE,CAAC,KAAK,CAAC;oBACd,SAAS,EAAE,CAAC,SAAS,CAAC;oBACtB,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;oBAC9B,iBAAiB,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;oBACxC,SAAS,EAAE,CAAC,UAAU,CAAC;oBACvB,iBAAiB,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;oBACvC,SAAS,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;iBACnD,CAAC;gBAEF,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,UAAU,CAAC;gBACvD,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,qDAAqD,UAAU,wBAAwB,EAAE,YAAY,CAAC,CAAC;oBACpH,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnB,MAAM,CAAC,KAAK,CAAC,uCAAuC,eAAe,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAE7F,2CAA2C;QAC3C,MAAM,MAAM,GAAoB,eAAe,CAAC,GAAG,CAAC,CAAC,MAAoB,EAAE,EAAE;YAC3E,uCAAuC;YACvC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;gBACpD,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gBAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;aAC3D,CAAC,CAAC;YAEH,wFAAwF;YACxF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACzF,CAAC,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAElD,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS;gBACT,QAAQ,EAAE;oBACR,iBAAiB,EAAE,GAAG,EAAE,4BAA4B;oBACpD,YAAY,EAAE,IAAI,IAAI,EAAE;oBACxB,YAAY,EAAE;wBACZ,OAAO,EAAE,KAAK,EAAE,kBAAkB;qBACnC;oBACD,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,iBAAiB;oBACtE,aAAa,EAAE,EAAE;oBACjB,eAAe,EAAE;wBACf,WAAW,EAAE,EAAE;wBACf,YAAY,EAAE,EAAE;qBACjB;oBACD,YAAY,EAAE,WAAW,CAAC,QAAQ;oBAClC,UAAU,EAAE,OAAO,EAAE,qBAAqB;oBAC1C,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,UAAU,EAAE,qDAAqD;oBAChG,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS;oBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ;iBACpC;gBACD,aAAa,EAAE,EAAE;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACnE,CAAC;IACJ,CAAC;CACF"}
|
package/build/rag/validator.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { GeneratedResponse } from "./response-generator.js";
|
|
2
|
-
import { AssembledContext } from "./context-assembler.js";
|
|
3
|
-
export interface ValidationResult {
|
|
4
|
-
factCheck: boolean;
|
|
5
|
-
codeCheck: boolean;
|
|
6
|
-
consistencyCheck: boolean;
|
|
7
|
-
details: {
|
|
8
|
-
factCheckDetails: string[];
|
|
9
|
-
codeCheckDetails: string[];
|
|
10
|
-
consistencyCheckDetails: string[];
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export declare class ResponseValidator {
|
|
14
|
-
private openai;
|
|
15
|
-
constructor(apiKey: string);
|
|
16
|
-
validateResponse(response: GeneratedResponse, context: AssembledContext): Promise<ValidationResult>;
|
|
17
|
-
private validateFacts;
|
|
18
|
-
private validateCode;
|
|
19
|
-
private validateConsistency;
|
|
20
|
-
private formatContext;
|
|
21
|
-
private checkCommonCodeIssues;
|
|
22
|
-
}
|
package/build/rag/validator.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import OpenAI from "openai";
|
|
2
|
-
export class ResponseValidator {
|
|
3
|
-
openai;
|
|
4
|
-
constructor(apiKey) {
|
|
5
|
-
this.openai = new OpenAI({ apiKey });
|
|
6
|
-
}
|
|
7
|
-
async validateResponse(response, context) {
|
|
8
|
-
const [factCheck, codeCheck, consistencyCheck] = await Promise.all([
|
|
9
|
-
this.validateFacts(response, context),
|
|
10
|
-
this.validateCode(response),
|
|
11
|
-
this.validateConsistency(response, context)
|
|
12
|
-
]);
|
|
13
|
-
return {
|
|
14
|
-
factCheck: factCheck.valid,
|
|
15
|
-
codeCheck: codeCheck.valid,
|
|
16
|
-
consistencyCheck: consistencyCheck.valid,
|
|
17
|
-
details: {
|
|
18
|
-
factCheckDetails: factCheck.details,
|
|
19
|
-
codeCheckDetails: codeCheck.details,
|
|
20
|
-
consistencyCheckDetails: consistencyCheck.details
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
async validateFacts(response, context) {
|
|
25
|
-
const completion = await this.openai.chat.completions.create({
|
|
26
|
-
model: "gpt-3.5-turbo",
|
|
27
|
-
messages: [
|
|
28
|
-
{
|
|
29
|
-
role: "system",
|
|
30
|
-
content: `You are a fact-checking assistant. Compare the generated response against the source documentation and identify any factual inconsistencies or inaccuracies. Focus on technical accuracy and completeness.
|
|
31
|
-
|
|
32
|
-
Return a JSON response in this format:
|
|
33
|
-
{
|
|
34
|
-
"isAccurate": true/false,
|
|
35
|
-
"issues": ["array of identified issues or inconsistencies"]
|
|
36
|
-
}`
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
role: "user",
|
|
40
|
-
content: `Source Documentation:\n${this.formatContext(context)}\n\nGenerated Response:\n${response.text}\n\nVerify the factual accuracy of the response.`
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
response_format: { type: "json_object" }
|
|
44
|
-
});
|
|
45
|
-
const result = JSON.parse(completion.choices[0].message.content || "{}");
|
|
46
|
-
return {
|
|
47
|
-
valid: result.isAccurate || false,
|
|
48
|
-
details: result.issues || []
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
async validateCode(response) {
|
|
52
|
-
if (!response.codeExamples?.length) {
|
|
53
|
-
return { valid: true, details: [] };
|
|
54
|
-
}
|
|
55
|
-
const issues = [];
|
|
56
|
-
for (const example of response.codeExamples) {
|
|
57
|
-
try {
|
|
58
|
-
// Basic syntax validation
|
|
59
|
-
Function(`"use strict";${example}`);
|
|
60
|
-
// Check for common issues
|
|
61
|
-
const commonIssues = this.checkCommonCodeIssues(example);
|
|
62
|
-
issues.push(...commonIssues);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
issues.push(`Syntax error: ${error instanceof Error ? error.message : String(error)}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
valid: issues.length === 0,
|
|
70
|
-
details: issues
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
async validateConsistency(response, context) {
|
|
74
|
-
const completion = await this.openai.chat.completions.create({
|
|
75
|
-
model: "gpt-3.5-turbo",
|
|
76
|
-
messages: [
|
|
77
|
-
{
|
|
78
|
-
role: "system",
|
|
79
|
-
content: `You are a consistency checker. Verify that the response maintains consistency with the documentation context, uses consistent terminology, and provides a coherent explanation.
|
|
80
|
-
|
|
81
|
-
Return a JSON response in this format:
|
|
82
|
-
{
|
|
83
|
-
"isConsistent": true/false,
|
|
84
|
-
"issues": ["array of identified consistency issues"]
|
|
85
|
-
}`
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
role: "user",
|
|
89
|
-
content: `Context:\n${this.formatContext(context)}\n\nResponse:\n${response.text}\n\nCheck for consistency issues.`
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
response_format: { type: "json_object" }
|
|
93
|
-
});
|
|
94
|
-
const result = JSON.parse(completion.choices[0].message.content || "{}");
|
|
95
|
-
return {
|
|
96
|
-
valid: result.isConsistent || false,
|
|
97
|
-
details: result.issues || []
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
formatContext(context) {
|
|
101
|
-
return context.hierarchicalContext
|
|
102
|
-
.map(chunk => `[${chunk.metadata.type}]\n${chunk.content}`)
|
|
103
|
-
.join('\n\n');
|
|
104
|
-
}
|
|
105
|
-
checkCommonCodeIssues(code) {
|
|
106
|
-
const issues = [];
|
|
107
|
-
// Check for undefined variables
|
|
108
|
-
const undefinedVarRegex = /\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*(?:;|$)/;
|
|
109
|
-
const matches = code.match(new RegExp(undefinedVarRegex, 'g'));
|
|
110
|
-
if (matches) {
|
|
111
|
-
const vars = matches.map(m => m.match(undefinedVarRegex)[1]);
|
|
112
|
-
const unusedVars = vars.filter(v => !code.includes(v));
|
|
113
|
-
if (unusedVars.length > 0) {
|
|
114
|
-
issues.push(`Unused variables: ${unusedVars.join(', ')}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Check for missing error handling
|
|
118
|
-
if (code.includes('async') && !code.includes('try') && !code.includes('catch')) {
|
|
119
|
-
issues.push('Missing error handling in async code');
|
|
120
|
-
}
|
|
121
|
-
// Check for hardcoded values
|
|
122
|
-
if (code.match(/(['"])(?:https?:\/\/|www\.)[^\s'"]+\1/)) {
|
|
123
|
-
issues.push('Contains hardcoded URLs');
|
|
124
|
-
}
|
|
125
|
-
return issues;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/rag/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AssembledContext } from "./context-assembler.js";
|
|
2
|
-
import { EnhancedChunk } from "../types/rag.js";
|
|
3
|
-
export interface VersionedContext {
|
|
4
|
-
compatibleChunks: EnhancedChunk[];
|
|
5
|
-
versionedExamples: {
|
|
6
|
-
version: string;
|
|
7
|
-
examples: string[];
|
|
8
|
-
compatibility: {
|
|
9
|
-
minVersion: string;
|
|
10
|
-
maxVersion?: string;
|
|
11
|
-
deprecatedIn?: string;
|
|
12
|
-
removedIn?: string;
|
|
13
|
-
};
|
|
14
|
-
}[];
|
|
15
|
-
}
|
|
16
|
-
export declare class VersionManager {
|
|
17
|
-
getVersionedContext(context: AssembledContext, version: string): Promise<VersionedContext>;
|
|
18
|
-
private filterCompatibleChunks;
|
|
19
|
-
private extractVersionedExamples;
|
|
20
|
-
private extractVersionInfo;
|
|
21
|
-
private isVersionCompatible;
|
|
22
|
-
private sortExamplesByVersion;
|
|
23
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import semver from "semver";
|
|
2
|
-
export class VersionManager {
|
|
3
|
-
async getVersionedContext(context, version) {
|
|
4
|
-
// Extract version information from chunks
|
|
5
|
-
const versionedChunks = this.filterCompatibleChunks(context.hierarchicalContext, version);
|
|
6
|
-
// Group examples by version
|
|
7
|
-
const versionedExamples = this.extractVersionedExamples(versionedChunks);
|
|
8
|
-
// Sort examples by version compatibility
|
|
9
|
-
const sortedExamples = this.sortExamplesByVersion(versionedExamples, version);
|
|
10
|
-
return {
|
|
11
|
-
compatibleChunks: versionedChunks,
|
|
12
|
-
versionedExamples: sortedExamples
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
filterCompatibleChunks(chunks, targetVersion) {
|
|
16
|
-
return chunks.filter(chunk => {
|
|
17
|
-
const versionInfo = this.extractVersionInfo(chunk);
|
|
18
|
-
return this.isVersionCompatible(versionInfo, targetVersion);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
extractVersionedExamples(chunks) {
|
|
22
|
-
const examples = new Map();
|
|
23
|
-
for (const chunk of chunks) {
|
|
24
|
-
if (chunk.metadata.type === 'example') {
|
|
25
|
-
const versionInfo = this.extractVersionInfo(chunk);
|
|
26
|
-
const key = versionInfo.version;
|
|
27
|
-
if (!examples.has(key)) {
|
|
28
|
-
examples.set(key, {
|
|
29
|
-
examples: [],
|
|
30
|
-
compatibility: versionInfo
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
examples.get(key).examples.push(chunk.content);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return Array.from(examples.entries()).map(([version, data]) => ({
|
|
37
|
-
version,
|
|
38
|
-
examples: data.examples,
|
|
39
|
-
compatibility: {
|
|
40
|
-
minVersion: data.compatibility.minVersion || version,
|
|
41
|
-
maxVersion: data.compatibility.maxVersion,
|
|
42
|
-
deprecatedIn: data.compatibility.deprecatedIn,
|
|
43
|
-
removedIn: data.compatibility.removedIn
|
|
44
|
-
}
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
extractVersionInfo(chunk) {
|
|
48
|
-
const citationInfo = chunk.metadata.citationInfo;
|
|
49
|
-
return {
|
|
50
|
-
version: citationInfo.version,
|
|
51
|
-
minVersion: citationInfo.version, // Default to current version as minimum
|
|
52
|
-
maxVersion: undefined, // No upper bound by default
|
|
53
|
-
deprecatedIn: undefined,
|
|
54
|
-
removedIn: undefined
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
isVersionCompatible(versionInfo, targetVersion) {
|
|
58
|
-
// If no version information is available, consider it compatible
|
|
59
|
-
if (!versionInfo.version)
|
|
60
|
-
return true;
|
|
61
|
-
try {
|
|
62
|
-
// Check if the version is removed
|
|
63
|
-
if (versionInfo.removedIn && semver.gte(targetVersion, versionInfo.removedIn)) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
// Check version range compatibility
|
|
67
|
-
const minVersion = versionInfo.minVersion || versionInfo.version;
|
|
68
|
-
if (!semver.gte(targetVersion, minVersion)) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
if (versionInfo.maxVersion && semver.gt(targetVersion, versionInfo.maxVersion)) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
// If version comparison fails, default to compatible
|
|
78
|
-
console.warn(`Version comparison failed for ${targetVersion}:`, error);
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
sortExamplesByVersion(examples, targetVersion) {
|
|
83
|
-
return examples.sort((a, b) => {
|
|
84
|
-
// Prioritize non-deprecated examples
|
|
85
|
-
const aDeprecated = a.compatibility.deprecatedIn && semver.gte(targetVersion, a.compatibility.deprecatedIn);
|
|
86
|
-
const bDeprecated = b.compatibility.deprecatedIn && semver.gte(targetVersion, b.compatibility.deprecatedIn);
|
|
87
|
-
if (aDeprecated && !bDeprecated)
|
|
88
|
-
return 1;
|
|
89
|
-
if (!aDeprecated && bDeprecated)
|
|
90
|
-
return -1;
|
|
91
|
-
// Sort by version proximity to target
|
|
92
|
-
const aDistance = Math.abs(semver.compare(targetVersion, a.version));
|
|
93
|
-
const bDistance = Math.abs(semver.compare(targetVersion, b.version));
|
|
94
|
-
return aDistance - bDistance;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=version-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version-manager.js","sourceRoot":"","sources":["../../src/rag/version-manager.ts"],"names":[],"mappings":"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"}
|
package/build/types/rag.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export interface RAGMetadata {
|
|
2
|
-
sourceReliability: number;
|
|
3
|
-
lastVerified: Date;
|
|
4
|
-
citationInfo: {
|
|
5
|
-
version: string;
|
|
6
|
-
commitHash?: string;
|
|
7
|
-
documentVersion?: string;
|
|
8
|
-
};
|
|
9
|
-
contextualSummary: string;
|
|
10
|
-
prerequisites: string[];
|
|
11
|
-
validationRules: {
|
|
12
|
-
constraints: string[];
|
|
13
|
-
requirements: string[];
|
|
14
|
-
};
|
|
15
|
-
semanticTags: string[];
|
|
16
|
-
complexity: 'basic' | 'intermediate' | 'advanced';
|
|
17
|
-
type: 'overview' | 'api' | 'example' | 'usage';
|
|
18
|
-
framework?: string;
|
|
19
|
-
language?: string;
|
|
20
|
-
}
|
|
21
|
-
export interface EnhancedChunk {
|
|
22
|
-
id: string;
|
|
23
|
-
content: string;
|
|
24
|
-
embedding: number[];
|
|
25
|
-
metadata: RAGMetadata;
|
|
26
|
-
relationships: any[];
|
|
27
|
-
}
|
package/build/types/rag.js
DELETED
package/build/types/rag.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rag.js","sourceRoot":"","sources":["../../src/types/rag.ts"],"names":[],"mappings":""}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utilities for cleaning and formatting content
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Cleans text content by normalizing whitespace and line endings
|
|
6
|
-
*/
|
|
7
|
-
export declare function cleanTextContent(text: string): string;
|
|
8
|
-
/**
|
|
9
|
-
* Cleans and formats code blocks
|
|
10
|
-
*/
|
|
11
|
-
export declare function cleanupCode(code: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Formats a code block with language specification
|
|
14
|
-
*/
|
|
15
|
-
export declare function formatCodeBlock(code: string, language: string): string;
|
|
16
|
-
/**
|
|
17
|
-
* Checks if an element is visible in the DOM
|
|
18
|
-
*/
|
|
19
|
-
export declare function isElementVisible(element: Element): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Extracts links and inline code from an element, converting to markdown
|
|
22
|
-
*/
|
|
23
|
-
export declare function extractLinks(element: Element): string;
|
|
24
|
-
/**
|
|
25
|
-
* Waits for Storybook API to be ready
|
|
26
|
-
*/
|
|
27
|
-
export declare function waitForStorybookAPI(): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Waits for Storybook content to be loaded
|
|
30
|
-
*/
|
|
31
|
-
export declare function waitForStorybookContent(document: Document): Promise<Element | null>;
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utilities for cleaning and formatting content
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Cleans text content by normalizing whitespace and line endings
|
|
6
|
-
*/
|
|
7
|
-
export function cleanTextContent(text) {
|
|
8
|
-
return text
|
|
9
|
-
.replace(/\\n/g, '\n') // Convert escaped newlines
|
|
10
|
-
.replace(/\r\n/g, '\n') // Normalize line endings
|
|
11
|
-
.replace(/\t/g, ' ') // Convert tabs to spaces
|
|
12
|
-
.replace(/[^\S\n]+/g, ' ') // Replace multiple spaces with single space (except newlines)
|
|
13
|
-
.split('\n')
|
|
14
|
-
.map(line => line.trim()) // Trim each line
|
|
15
|
-
.join('\n')
|
|
16
|
-
.replace(/\n{3,}/g, '\n\n') // Max 2 consecutive newlines
|
|
17
|
-
.trim();
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Cleans and formats code blocks
|
|
21
|
-
*/
|
|
22
|
-
export function cleanupCode(code) {
|
|
23
|
-
return code
|
|
24
|
-
.replace(/^\s+|\s+$/g, '') // Trim whitespace
|
|
25
|
-
.replace(/\t/g, ' ') // Convert tabs to spaces
|
|
26
|
-
.replace(/\n{3,}/g, '\n\n') // Reduce multiple blank lines
|
|
27
|
-
.replace(/\u00A0/g, ' ') // Replace non-breaking spaces
|
|
28
|
-
.replace(/\r\n/g, '\n') // Normalize line endings
|
|
29
|
-
.replace(/[ \t]+$/gm, '') // Remove trailing spaces
|
|
30
|
-
.replace(/^\n+|\n+$/g, ''); // Trim leading/trailing newlines
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Formats a code block with language specification
|
|
34
|
-
*/
|
|
35
|
-
export function formatCodeBlock(code, language) {
|
|
36
|
-
const cleanCode = cleanupCode(code);
|
|
37
|
-
return `\`\`\`${language}\n${cleanCode}\n\`\`\``;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Checks if an element is visible in the DOM
|
|
41
|
-
*/
|
|
42
|
-
export function isElementVisible(element) {
|
|
43
|
-
const style = window.getComputedStyle(element);
|
|
44
|
-
return style.display !== 'none' &&
|
|
45
|
-
style.visibility !== 'hidden' &&
|
|
46
|
-
style.opacity !== '0';
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Extracts links and inline code from an element, converting to markdown
|
|
50
|
-
*/
|
|
51
|
-
export function extractLinks(element) {
|
|
52
|
-
let content = element.innerHTML;
|
|
53
|
-
// Handle links
|
|
54
|
-
const links = element.querySelectorAll('a');
|
|
55
|
-
links.forEach(link => {
|
|
56
|
-
const text = link.textContent?.trim();
|
|
57
|
-
const href = link.getAttribute('href');
|
|
58
|
-
if (text && href) {
|
|
59
|
-
const linkHtml = link.outerHTML;
|
|
60
|
-
content = content.replace(linkHtml, `[${text}](${href})`);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
// Handle inline code elements
|
|
64
|
-
const codeElements = element.querySelectorAll('code, [class*="code"], [class*="inline-code"], [class*="monospace"]');
|
|
65
|
-
codeElements.forEach(code => {
|
|
66
|
-
const text = code.textContent?.trim();
|
|
67
|
-
if (text) {
|
|
68
|
-
const codeHtml = code.outerHTML;
|
|
69
|
-
content = content.replace(codeHtml, `\`${text}\``);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
// Convert HTML to plain text while preserving markdown
|
|
73
|
-
const div = document.createElement('div');
|
|
74
|
-
div.innerHTML = content;
|
|
75
|
-
return div.textContent?.trim() || '';
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Waits for Storybook API to be ready
|
|
79
|
-
*/
|
|
80
|
-
export async function waitForStorybookAPI() {
|
|
81
|
-
const maxAttempts = 5;
|
|
82
|
-
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
83
|
-
const hasAPI = !!window.__STORYBOOK_CLIENT_API__;
|
|
84
|
-
if (hasAPI) {
|
|
85
|
-
const api = window.__STORYBOOK_CLIENT_API__;
|
|
86
|
-
if (api.storyStore && typeof api.storyStore.ready === 'function') {
|
|
87
|
-
await api.storyStore.ready();
|
|
88
|
-
}
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Waits for Storybook content to be loaded
|
|
96
|
-
*/
|
|
97
|
-
export async function waitForStorybookContent(document) {
|
|
98
|
-
const maxAttempts = 10;
|
|
99
|
-
const delay = 500;
|
|
100
|
-
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
101
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
102
|
-
const mainArea = document.querySelector('.sbdocs-content, #docs-root');
|
|
103
|
-
if (!mainArea)
|
|
104
|
-
continue;
|
|
105
|
-
const hasContent = mainArea.querySelector('h1') && (mainArea.querySelector('p') ||
|
|
106
|
-
mainArea.querySelector('table') ||
|
|
107
|
-
mainArea.querySelector('ul, ol') ||
|
|
108
|
-
mainArea.querySelector('[class*="docblock"]'));
|
|
109
|
-
if (hasContent) {
|
|
110
|
-
await new Promise(resolve => setTimeout(resolve, 500));
|
|
111
|
-
return mainArea;
|
|
112
|
-
}
|
|
113
|
-
const loadingIndicator = document.querySelector('[class*="loading"], [class*="pending"]');
|
|
114
|
-
if (!loadingIndicator) {
|
|
115
|
-
console.warn('No loading indicator found but content is missing');
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=content-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-utils.js","sourceRoot":"","sources":["../../src/util/content-utils.ts"],"names":[],"mappings":"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"}
|
package/build/util/content.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function cleanContent(text: string): string;
|
package/build/util/content.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export function cleanContent(text) {
|
|
2
|
-
return text
|
|
3
|
-
.replace(/\\n/g, '\n') // Convert escaped newlines
|
|
4
|
-
.replace(/\r\n/g, '\n') // Normalize line endings
|
|
5
|
-
.replace(/\t/g, ' ') // Convert tabs to spaces
|
|
6
|
-
.replace(/[^\S\n]+/g, ' ') // Replace multiple spaces with single space (except newlines)
|
|
7
|
-
.replace(/\u00A0/g, ' ') // Replace non-breaking spaces
|
|
8
|
-
.replace(/[ \t]+$/gm, '') // Remove trailing spaces
|
|
9
|
-
.split('\n')
|
|
10
|
-
.map(line => line.trim()) // Trim each line
|
|
11
|
-
.join('\n')
|
|
12
|
-
.replace(/\n{3,}/g, '\n\n') // Max 2 consecutive newlines
|
|
13
|
-
.replace(/^\n+|\n+$/g, '') // Trim leading/trailing newlines
|
|
14
|
-
.trim();
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=content.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/util/content.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI;SACR,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAQ,2BAA2B;SACxD,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAO,yBAAyB;SACtD,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAS,yBAAyB;SACtD,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAI,8DAA8D;SAC3F,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAM,8BAA8B;SAC3D,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAK,yBAAyB;SACtD,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAK,iBAAiB;SAC9C,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAG,6BAA6B;SAC1D,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAI,iCAAiC;SAC9D,IAAI,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detects the type of documentation site based on DOM structure and window properties
|
|
3
|
-
*/
|
|
4
|
-
export type SiteType = 'storybook' | 'github' | 'default';
|
|
5
|
-
export interface SiteTypeDetector {
|
|
6
|
-
canHandle(document: Document): Promise<boolean>;
|
|
7
|
-
}
|
|
8
|
-
export declare class StorybookDetector implements SiteTypeDetector {
|
|
9
|
-
canHandle(document: Document): Promise<boolean>;
|
|
10
|
-
}
|
|
11
|
-
export declare class GitHubPagesDetector implements SiteTypeDetector {
|
|
12
|
-
canHandle(document: Document): Promise<boolean>;
|
|
13
|
-
}
|
|
14
|
-
export declare class DefaultDetector implements SiteTypeDetector {
|
|
15
|
-
canHandle(_document: Document): Promise<boolean>;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Detects the type of documentation site
|
|
19
|
-
* @param document The document to analyze
|
|
20
|
-
* @returns The detected site type
|
|
21
|
-
*/
|
|
22
|
-
export declare function detectSiteType(document: Document): Promise<SiteType>;
|