@gulibs/safe-coder 0.0.25 → 0.0.27
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 +682 -902
- package/dist/cache/cache-manager.d.ts +71 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +244 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/executor/cli-executor.d.ts +106 -0
- package/dist/executor/cli-executor.d.ts.map +1 -0
- package/dist/executor/cli-executor.js +133 -0
- package/dist/executor/cli-executor.js.map +1 -0
- package/dist/executor/dependency-checker.d.ts +23 -0
- package/dist/executor/dependency-checker.d.ts.map +1 -0
- package/dist/executor/dependency-checker.js +62 -0
- package/dist/executor/dependency-checker.js.map +1 -0
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/processor/content-processor.d.ts +76 -0
- package/dist/processor/content-processor.d.ts.map +1 -0
- package/dist/processor/content-processor.js +182 -0
- package/dist/processor/content-processor.js.map +1 -0
- package/dist/processor/guide-generator.d.ts +68 -0
- package/dist/processor/guide-generator.d.ts.map +1 -0
- package/dist/processor/guide-generator.js +189 -0
- package/dist/processor/guide-generator.js.map +1 -0
- package/dist/server/safe-coder-mcp.d.ts +18 -0
- package/dist/server/safe-coder-mcp.d.ts.map +1 -0
- package/dist/server/safe-coder-mcp.js +164 -0
- package/dist/server/safe-coder-mcp.js.map +1 -0
- package/dist/tools/cache-tools.d.ts +42 -0
- package/dist/tools/cache-tools.d.ts.map +1 -0
- package/dist/tools/cache-tools.js +70 -0
- package/dist/tools/cache-tools.js.map +1 -0
- package/dist/tools/crawl-documentation.d.ts +57 -0
- package/dist/tools/crawl-documentation.d.ts.map +1 -0
- package/dist/tools/crawl-documentation.js +96 -0
- package/dist/tools/crawl-documentation.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/save-skill.d.ts +49 -0
- package/dist/tools/save-skill.d.ts.map +1 -0
- package/dist/tools/save-skill.js +207 -0
- package/dist/tools/save-skill.js.map +1 -0
- package/package.json +18 -22
- package/dist/documentation/browser-doc-browser.d.ts +0 -41
- package/dist/documentation/browser-doc-browser.d.ts.map +0 -1
- package/dist/documentation/browser-doc-browser.js +0 -357
- package/dist/documentation/browser-doc-browser.js.map +0 -1
- package/dist/documentation/cache.d.ts +0 -13
- package/dist/documentation/cache.d.ts.map +0 -1
- package/dist/documentation/cache.js +0 -48
- package/dist/documentation/cache.js.map +0 -1
- package/dist/documentation/checkpoint-manager.d.ts +0 -38
- package/dist/documentation/checkpoint-manager.d.ts.map +0 -1
- package/dist/documentation/checkpoint-manager.js +0 -101
- package/dist/documentation/checkpoint-manager.js.map +0 -1
- package/dist/documentation/doc-crawler.d.ts +0 -185
- package/dist/documentation/doc-crawler.d.ts.map +0 -1
- package/dist/documentation/doc-crawler.js +0 -1162
- package/dist/documentation/doc-crawler.js.map +0 -1
- package/dist/documentation/github-client.d.ts +0 -13
- package/dist/documentation/github-client.d.ts.map +0 -1
- package/dist/documentation/github-client.js +0 -90
- package/dist/documentation/github-client.js.map +0 -1
- package/dist/documentation/http-fetcher.d.ts +0 -8
- package/dist/documentation/http-fetcher.d.ts.map +0 -1
- package/dist/documentation/http-fetcher.js +0 -31
- package/dist/documentation/http-fetcher.js.map +0 -1
- package/dist/documentation/index.d.ts +0 -16
- package/dist/documentation/index.d.ts.map +0 -1
- package/dist/documentation/index.js +0 -159
- package/dist/documentation/index.js.map +0 -1
- package/dist/documentation/llms-txt/detector.d.ts +0 -31
- package/dist/documentation/llms-txt/detector.d.ts.map +0 -1
- package/dist/documentation/llms-txt/detector.js +0 -77
- package/dist/documentation/llms-txt/detector.js.map +0 -1
- package/dist/documentation/llms-txt/downloader.d.ts +0 -30
- package/dist/documentation/llms-txt/downloader.d.ts.map +0 -1
- package/dist/documentation/llms-txt/downloader.js +0 -84
- package/dist/documentation/llms-txt/downloader.js.map +0 -1
- package/dist/documentation/llms-txt/index.d.ts +0 -4
- package/dist/documentation/llms-txt/index.d.ts.map +0 -1
- package/dist/documentation/llms-txt/index.js +0 -4
- package/dist/documentation/llms-txt/index.js.map +0 -1
- package/dist/documentation/llms-txt/parser.d.ts +0 -43
- package/dist/documentation/llms-txt/parser.d.ts.map +0 -1
- package/dist/documentation/llms-txt/parser.js +0 -177
- package/dist/documentation/llms-txt/parser.js.map +0 -1
- package/dist/documentation/normalizer.d.ts +0 -6
- package/dist/documentation/normalizer.d.ts.map +0 -1
- package/dist/documentation/normalizer.js +0 -38
- package/dist/documentation/normalizer.js.map +0 -1
- package/dist/documentation/npm-client.d.ts +0 -19
- package/dist/documentation/npm-client.d.ts.map +0 -1
- package/dist/documentation/npm-client.js +0 -182
- package/dist/documentation/npm-client.js.map +0 -1
- package/dist/documentation/skill-generator.d.ts +0 -108
- package/dist/documentation/skill-generator.d.ts.map +0 -1
- package/dist/documentation/skill-generator.js +0 -642
- package/dist/documentation/skill-generator.js.map +0 -1
- package/dist/documentation/web-doc-browser.d.ts +0 -67
- package/dist/documentation/web-doc-browser.d.ts.map +0 -1
- package/dist/documentation/web-doc-browser.js +0 -555
- package/dist/documentation/web-doc-browser.js.map +0 -1
- package/dist/errors/api-validator.d.ts +0 -9
- package/dist/errors/api-validator.d.ts.map +0 -1
- package/dist/errors/api-validator.js +0 -57
- package/dist/errors/api-validator.js.map +0 -1
- package/dist/errors/contextual-analysis.d.ts +0 -14
- package/dist/errors/contextual-analysis.d.ts.map +0 -1
- package/dist/errors/contextual-analysis.js +0 -173
- package/dist/errors/contextual-analysis.js.map +0 -1
- package/dist/errors/cross-file-analyzer.d.ts +0 -16
- package/dist/errors/cross-file-analyzer.d.ts.map +0 -1
- package/dist/errors/cross-file-analyzer.js +0 -172
- package/dist/errors/cross-file-analyzer.js.map +0 -1
- package/dist/errors/eslint-integration.d.ts +0 -9
- package/dist/errors/eslint-integration.d.ts.map +0 -1
- package/dist/errors/eslint-integration.js +0 -131
- package/dist/errors/eslint-integration.js.map +0 -1
- package/dist/errors/framework-detector.d.ts +0 -10
- package/dist/errors/framework-detector.d.ts.map +0 -1
- package/dist/errors/framework-detector.js +0 -126
- package/dist/errors/framework-detector.js.map +0 -1
- package/dist/errors/index.d.ts +0 -18
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -134
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/pattern-matcher.d.ts +0 -25
- package/dist/errors/pattern-matcher.d.ts.map +0 -1
- package/dist/errors/pattern-matcher.js +0 -44
- package/dist/errors/pattern-matcher.js.map +0 -1
- package/dist/errors/patterns.d.ts +0 -11
- package/dist/errors/patterns.d.ts.map +0 -1
- package/dist/errors/patterns.js +0 -351
- package/dist/errors/patterns.js.map +0 -1
- package/dist/errors/performance-detector.d.ts +0 -11
- package/dist/errors/performance-detector.d.ts.map +0 -1
- package/dist/errors/performance-detector.js +0 -119
- package/dist/errors/performance-detector.js.map +0 -1
- package/dist/errors/runtime-detector.d.ts +0 -7
- package/dist/errors/runtime-detector.d.ts.map +0 -1
- package/dist/errors/runtime-detector.js +0 -86
- package/dist/errors/runtime-detector.js.map +0 -1
- package/dist/errors/security-detector.d.ts +0 -6
- package/dist/errors/security-detector.d.ts.map +0 -1
- package/dist/errors/security-detector.js +0 -75
- package/dist/errors/security-detector.js.map +0 -1
- package/dist/errors/typescript-integration.d.ts +0 -6
- package/dist/errors/typescript-integration.d.ts.map +0 -1
- package/dist/errors/typescript-integration.js +0 -46
- package/dist/errors/typescript-integration.js.map +0 -1
- package/dist/server/mcp-server.d.ts +0 -14
- package/dist/server/mcp-server.d.ts.map +0 -1
- package/dist/server/mcp-server.js +0 -776
- package/dist/server/mcp-server.js.map +0 -1
- package/dist/types/documentation.d.ts +0 -26
- package/dist/types/documentation.d.ts.map +0 -1
- package/dist/types/documentation.js +0 -2
- package/dist/types/documentation.js.map +0 -1
- package/dist/utils/config.d.ts +0 -21
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -34
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/http-client.d.ts +0 -17
- package/dist/utils/http-client.d.ts.map +0 -1
- package/dist/utils/http-client.js +0 -62
- package/dist/utils/http-client.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -36
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -128
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/rate-limiter.d.ts +0 -9
- package/dist/utils/rate-limiter.d.ts.map +0 -1
- package/dist/utils/rate-limiter.js +0 -26
- package/dist/utils/rate-limiter.js.map +0 -1
- package/dist/validation/auto-fix.d.ts +0 -15
- package/dist/validation/auto-fix.d.ts.map +0 -1
- package/dist/validation/auto-fix.js +0 -49
- package/dist/validation/auto-fix.js.map +0 -1
- package/dist/validation/index.d.ts +0 -21
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js +0 -45
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/resolution-db.d.ts +0 -15
- package/dist/validation/resolution-db.d.ts.map +0 -1
- package/dist/validation/resolution-db.js +0 -62
- package/dist/validation/resolution-db.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../src/executor/dependency-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC9C,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,OAAO;aACd,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE;aACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,OAAO;;;;;;;;;;;;;;;KAeN,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,0BAA0B,EAAE;gBACnD,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;aAClC,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { SafeCoderMCPServer } from './server/mcp
|
|
3
|
-
import { logger } from './utils/logger.js';
|
|
2
|
+
import { SafeCoderMCPServer } from './server/safe-coder-mcp.js';
|
|
4
3
|
async function main() {
|
|
5
4
|
try {
|
|
6
5
|
const server = new SafeCoderMCPServer();
|
|
7
6
|
await server.run();
|
|
8
7
|
}
|
|
9
8
|
catch (error) {
|
|
10
|
-
|
|
9
|
+
console.error('Fatal error starting server:', error);
|
|
11
10
|
process.exit(1);
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
main().catch((error) => {
|
|
15
|
-
|
|
14
|
+
console.error('Unhandled error:', error);
|
|
16
15
|
process.exit(1);
|
|
17
16
|
});
|
|
18
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { CrawlResult } from '../executor/cli-executor.js';
|
|
2
|
+
/**
|
|
3
|
+
* Processed content with additional analysis
|
|
4
|
+
*/
|
|
5
|
+
export interface ProcessedContent extends CrawlResult {
|
|
6
|
+
pages: ProcessedPage[];
|
|
7
|
+
analysis: ContentAnalysis;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Processed page with extracted insights
|
|
11
|
+
*/
|
|
12
|
+
export interface ProcessedPage {
|
|
13
|
+
url: string;
|
|
14
|
+
title: string;
|
|
15
|
+
content: string;
|
|
16
|
+
category?: string;
|
|
17
|
+
wordCount: number;
|
|
18
|
+
codeBlocks: number;
|
|
19
|
+
headings: string[];
|
|
20
|
+
keyPoints: string[];
|
|
21
|
+
codePatterns: CodePattern[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Code pattern identified in content
|
|
25
|
+
*/
|
|
26
|
+
export interface CodePattern {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
example: string;
|
|
30
|
+
frequency: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Content analysis summary
|
|
34
|
+
*/
|
|
35
|
+
export interface ContentAnalysis {
|
|
36
|
+
totalWords: number;
|
|
37
|
+
totalCodeBlocks: number;
|
|
38
|
+
categories: Record<string, number>;
|
|
39
|
+
difficulty: 'beginner' | 'intermediate' | 'advanced';
|
|
40
|
+
mainTopics: string[];
|
|
41
|
+
technicalDensity: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Content processor that enhances CLI output with additional analysis
|
|
45
|
+
*/
|
|
46
|
+
export declare class ContentProcessor {
|
|
47
|
+
/**
|
|
48
|
+
* Process raw crawl result from CLI
|
|
49
|
+
*/
|
|
50
|
+
process(raw: CrawlResult): Promise<ProcessedContent>;
|
|
51
|
+
/**
|
|
52
|
+
* Process a single page
|
|
53
|
+
*/
|
|
54
|
+
private processPage;
|
|
55
|
+
/**
|
|
56
|
+
* Extract key points from content
|
|
57
|
+
*/
|
|
58
|
+
private extractKeyPoints;
|
|
59
|
+
/**
|
|
60
|
+
* Identify code patterns in content
|
|
61
|
+
*/
|
|
62
|
+
private identifyCodePatterns;
|
|
63
|
+
/**
|
|
64
|
+
* Analyze overall content
|
|
65
|
+
*/
|
|
66
|
+
private analyzeContent;
|
|
67
|
+
/**
|
|
68
|
+
* Extract main topics from headings
|
|
69
|
+
*/
|
|
70
|
+
private extractMainTopics;
|
|
71
|
+
/**
|
|
72
|
+
* Estimate difficulty level
|
|
73
|
+
*/
|
|
74
|
+
private estimateDifficulty;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=content-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-processor.d.ts","sourceRoot":"","sources":["../../src/processor/content-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgB1D;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsD5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAoD3B"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content processor that enhances CLI output with additional analysis
|
|
3
|
+
*/
|
|
4
|
+
export class ContentProcessor {
|
|
5
|
+
/**
|
|
6
|
+
* Process raw crawl result from CLI
|
|
7
|
+
*/
|
|
8
|
+
async process(raw) {
|
|
9
|
+
// Process each page
|
|
10
|
+
const processedPages = raw.pages.map(page => this.processPage(page));
|
|
11
|
+
// Generate analysis
|
|
12
|
+
const analysis = this.analyzeContent(processedPages);
|
|
13
|
+
return {
|
|
14
|
+
...raw,
|
|
15
|
+
pages: processedPages,
|
|
16
|
+
analysis,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Process a single page
|
|
21
|
+
*/
|
|
22
|
+
processPage(page) {
|
|
23
|
+
return {
|
|
24
|
+
...page,
|
|
25
|
+
keyPoints: this.extractKeyPoints(page.content),
|
|
26
|
+
codePatterns: this.identifyCodePatterns(page.content),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract key points from content
|
|
31
|
+
*/
|
|
32
|
+
extractKeyPoints(content) {
|
|
33
|
+
const points = [];
|
|
34
|
+
// Match important notices
|
|
35
|
+
const importantRegex = /(?:Important|Note|Warning|Tip|Caution):\s*([^\n]+)/gi;
|
|
36
|
+
let match;
|
|
37
|
+
while ((match = importantRegex.exec(content)) !== null) {
|
|
38
|
+
points.push(match[1].trim());
|
|
39
|
+
}
|
|
40
|
+
// Match bullet points that start with strong indicators
|
|
41
|
+
const bulletRegex = /^[•\-*]\s*\*\*([^*]+)\*\*:?\s*([^\n]+)/gm;
|
|
42
|
+
while ((match = bulletRegex.exec(content)) !== null) {
|
|
43
|
+
points.push(`${match[1]}: ${match[2]}`);
|
|
44
|
+
}
|
|
45
|
+
return points.slice(0, 10); // Limit to top 10
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Identify code patterns in content
|
|
49
|
+
*/
|
|
50
|
+
identifyCodePatterns(content) {
|
|
51
|
+
const patterns = [];
|
|
52
|
+
// Extract code blocks
|
|
53
|
+
const codeBlockRegex = /```(\w+)?\n([\s\S]*?)```/g;
|
|
54
|
+
let match;
|
|
55
|
+
while ((match = codeBlockRegex.exec(content)) !== null) {
|
|
56
|
+
const language = match[1] || 'unknown';
|
|
57
|
+
const code = match[2];
|
|
58
|
+
// Identify common patterns
|
|
59
|
+
if (code.includes('import ') || code.includes('require(')) {
|
|
60
|
+
patterns.push({
|
|
61
|
+
type: 'import',
|
|
62
|
+
description: 'Module import pattern',
|
|
63
|
+
example: code.substring(0, 200),
|
|
64
|
+
frequency: 1,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (code.includes('function ') || code.includes('const ') || code.includes('class ')) {
|
|
68
|
+
patterns.push({
|
|
69
|
+
type: 'definition',
|
|
70
|
+
description: 'Function/class definition',
|
|
71
|
+
example: code.substring(0, 200),
|
|
72
|
+
frequency: 1,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (code.includes('async ') || code.includes('await ') || code.includes('.then(')) {
|
|
76
|
+
patterns.push({
|
|
77
|
+
type: 'async',
|
|
78
|
+
description: 'Asynchronous pattern',
|
|
79
|
+
example: code.substring(0, 200),
|
|
80
|
+
frequency: 1,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Aggregate patterns by type
|
|
85
|
+
const aggregated = patterns.reduce((acc, pattern) => {
|
|
86
|
+
const existing = acc.find(p => p.type === pattern.type);
|
|
87
|
+
if (existing) {
|
|
88
|
+
existing.frequency++;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
acc.push(pattern);
|
|
92
|
+
}
|
|
93
|
+
return acc;
|
|
94
|
+
}, []);
|
|
95
|
+
return aggregated;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Analyze overall content
|
|
99
|
+
*/
|
|
100
|
+
analyzeContent(pages) {
|
|
101
|
+
const totalWords = pages.reduce((sum, p) => sum + p.wordCount, 0);
|
|
102
|
+
const totalCodeBlocks = pages.reduce((sum, p) => sum + p.codeBlocks, 0);
|
|
103
|
+
// Categorize pages
|
|
104
|
+
const categories = {};
|
|
105
|
+
pages.forEach(page => {
|
|
106
|
+
if (page.category) {
|
|
107
|
+
categories[page.category] = (categories[page.category] || 0) + 1;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
// Extract main topics from headings
|
|
111
|
+
const allHeadings = pages.flatMap(p => p.headings);
|
|
112
|
+
const mainTopics = this.extractMainTopics(allHeadings);
|
|
113
|
+
// Calculate technical density (code blocks per 1000 words)
|
|
114
|
+
const technicalDensity = totalWords > 0
|
|
115
|
+
? (totalCodeBlocks / totalWords) * 1000
|
|
116
|
+
: 0;
|
|
117
|
+
// Estimate difficulty
|
|
118
|
+
const difficulty = this.estimateDifficulty(technicalDensity, pages);
|
|
119
|
+
return {
|
|
120
|
+
totalWords,
|
|
121
|
+
totalCodeBlocks,
|
|
122
|
+
categories,
|
|
123
|
+
difficulty,
|
|
124
|
+
mainTopics,
|
|
125
|
+
technicalDensity,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Extract main topics from headings
|
|
130
|
+
*/
|
|
131
|
+
extractMainTopics(headings) {
|
|
132
|
+
// Count heading occurrences
|
|
133
|
+
const topicCounts = new Map();
|
|
134
|
+
headings.forEach(heading => {
|
|
135
|
+
const normalized = heading.toLowerCase().trim();
|
|
136
|
+
topicCounts.set(normalized, (topicCounts.get(normalized) || 0) + 1);
|
|
137
|
+
});
|
|
138
|
+
// Sort by frequency and take top 10
|
|
139
|
+
return Array.from(topicCounts.entries())
|
|
140
|
+
.sort((a, b) => b[1] - a[1])
|
|
141
|
+
.slice(0, 10)
|
|
142
|
+
.map(([topic]) => topic);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Estimate difficulty level
|
|
146
|
+
*/
|
|
147
|
+
estimateDifficulty(technicalDensity, pages) {
|
|
148
|
+
// High technical density indicates advanced content
|
|
149
|
+
if (technicalDensity > 10) {
|
|
150
|
+
return 'advanced';
|
|
151
|
+
}
|
|
152
|
+
// Check for advanced keywords
|
|
153
|
+
const advancedKeywords = [
|
|
154
|
+
'architecture',
|
|
155
|
+
'optimization',
|
|
156
|
+
'performance',
|
|
157
|
+
'scalability',
|
|
158
|
+
'concurrent',
|
|
159
|
+
'distributed',
|
|
160
|
+
'algorithm',
|
|
161
|
+
];
|
|
162
|
+
const hasAdvancedContent = pages.some(page => advancedKeywords.some(keyword => page.content.toLowerCase().includes(keyword)));
|
|
163
|
+
if (hasAdvancedContent) {
|
|
164
|
+
return 'advanced';
|
|
165
|
+
}
|
|
166
|
+
// Check for beginner keywords
|
|
167
|
+
const beginnerKeywords = [
|
|
168
|
+
'getting started',
|
|
169
|
+
'introduction',
|
|
170
|
+
'tutorial',
|
|
171
|
+
'beginner',
|
|
172
|
+
'quick start',
|
|
173
|
+
'installation',
|
|
174
|
+
];
|
|
175
|
+
const hasBeginnerContent = pages.some(page => beginnerKeywords.some(keyword => page.content.toLowerCase().includes(keyword)));
|
|
176
|
+
if (hasBeginnerContent && technicalDensity < 5) {
|
|
177
|
+
return 'beginner';
|
|
178
|
+
}
|
|
179
|
+
return 'intermediate';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=content-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-processor.js","sourceRoot":"","sources":["../../src/processor/content-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ProcessedContent } from './content-processor.js';
|
|
2
|
+
/**
|
|
3
|
+
* SKILL generation guide for Cursor AI
|
|
4
|
+
*/
|
|
5
|
+
export interface SkillGenerationGuide {
|
|
6
|
+
suggestedStructure: string[];
|
|
7
|
+
keyTopics: string[];
|
|
8
|
+
recommendedSections: {
|
|
9
|
+
overview: string;
|
|
10
|
+
quickStart: string[];
|
|
11
|
+
coreFeatures: string[];
|
|
12
|
+
bestPractices: string[];
|
|
13
|
+
troubleshooting: string[];
|
|
14
|
+
};
|
|
15
|
+
tips: string[];
|
|
16
|
+
quality: {
|
|
17
|
+
contentQuality: number;
|
|
18
|
+
codeExamples: number;
|
|
19
|
+
completeness: number;
|
|
20
|
+
overall: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Guide generator that provides SKILL generation guidance to Cursor AI
|
|
25
|
+
*/
|
|
26
|
+
export declare class GuideGenerator {
|
|
27
|
+
/**
|
|
28
|
+
* Generate SKILL generation guidance
|
|
29
|
+
*/
|
|
30
|
+
generate(content: ProcessedContent): SkillGenerationGuide;
|
|
31
|
+
/**
|
|
32
|
+
* Suggest SKILL structure based on content
|
|
33
|
+
*/
|
|
34
|
+
private suggestStructure;
|
|
35
|
+
/**
|
|
36
|
+
* Extract key topics from content
|
|
37
|
+
*/
|
|
38
|
+
private extractTopics;
|
|
39
|
+
/**
|
|
40
|
+
* Generate overview guidance
|
|
41
|
+
*/
|
|
42
|
+
private generateOverviewGuide;
|
|
43
|
+
/**
|
|
44
|
+
* Find quick start pages
|
|
45
|
+
*/
|
|
46
|
+
private findQuickStartPages;
|
|
47
|
+
/**
|
|
48
|
+
* Identify core features
|
|
49
|
+
*/
|
|
50
|
+
private identifyCoreFeatures;
|
|
51
|
+
/**
|
|
52
|
+
* Extract best practice hints
|
|
53
|
+
*/
|
|
54
|
+
private extractBestPracticeHints;
|
|
55
|
+
/**
|
|
56
|
+
* Find troubleshooting content
|
|
57
|
+
*/
|
|
58
|
+
private findTroubleshootingContent;
|
|
59
|
+
/**
|
|
60
|
+
* Generate tips for SKILL creation
|
|
61
|
+
*/
|
|
62
|
+
private generateTips;
|
|
63
|
+
/**
|
|
64
|
+
* Assess content quality
|
|
65
|
+
*/
|
|
66
|
+
private assessQuality;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=guide-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide-generator.d.ts","sourceRoot":"","sources":["../../src/processor/guide-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,oBAAoB;IAgBzD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;OAEG;IACH,OAAO,CAAC,aAAa;CA4BtB"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guide generator that provides SKILL generation guidance to Cursor AI
|
|
3
|
+
*/
|
|
4
|
+
export class GuideGenerator {
|
|
5
|
+
/**
|
|
6
|
+
* Generate SKILL generation guidance
|
|
7
|
+
*/
|
|
8
|
+
generate(content) {
|
|
9
|
+
return {
|
|
10
|
+
suggestedStructure: this.suggestStructure(content),
|
|
11
|
+
keyTopics: this.extractTopics(content),
|
|
12
|
+
recommendedSections: {
|
|
13
|
+
overview: this.generateOverviewGuide(content),
|
|
14
|
+
quickStart: this.findQuickStartPages(content),
|
|
15
|
+
coreFeatures: this.identifyCoreFeatures(content),
|
|
16
|
+
bestPractices: this.extractBestPracticeHints(content),
|
|
17
|
+
troubleshooting: this.findTroubleshootingContent(content),
|
|
18
|
+
},
|
|
19
|
+
tips: this.generateTips(content),
|
|
20
|
+
quality: this.assessQuality(content),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Suggest SKILL structure based on content
|
|
25
|
+
*/
|
|
26
|
+
suggestStructure(content) {
|
|
27
|
+
const structure = [
|
|
28
|
+
'Overview and When to Use',
|
|
29
|
+
'Prerequisites and Setup',
|
|
30
|
+
];
|
|
31
|
+
// Add tutorial if beginner-friendly content exists
|
|
32
|
+
const hasQuickStart = content.pages.some(p => p.title.toLowerCase().includes('quick start') ||
|
|
33
|
+
p.title.toLowerCase().includes('getting started') ||
|
|
34
|
+
p.title.toLowerCase().includes('tutorial'));
|
|
35
|
+
if (hasQuickStart) {
|
|
36
|
+
structure.push('Quick Start Tutorial');
|
|
37
|
+
}
|
|
38
|
+
// Core sections
|
|
39
|
+
structure.push('Core Concepts and Workflow', 'Common Patterns and Examples');
|
|
40
|
+
// Add API reference if many code examples
|
|
41
|
+
if (content.analysis.totalCodeBlocks > 20) {
|
|
42
|
+
structure.push('API Reference');
|
|
43
|
+
}
|
|
44
|
+
// Always include these
|
|
45
|
+
structure.push('Best Practices', 'Troubleshooting Guide', 'Additional Resources');
|
|
46
|
+
return structure;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Extract key topics from content
|
|
50
|
+
*/
|
|
51
|
+
extractTopics(content) {
|
|
52
|
+
return content.analysis.mainTopics.slice(0, 15);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generate overview guidance
|
|
56
|
+
*/
|
|
57
|
+
generateOverviewGuide(content) {
|
|
58
|
+
const { source, statistics, analysis } = content;
|
|
59
|
+
return `Based on ${statistics.totalPages} pages crawled from ${source.url}, this is ${analysis.difficulty}-level documentation about ${content.metadata.technology || 'the technology'}. The content includes ${analysis.totalCodeBlocks} code examples and covers ${Object.keys(analysis.categories).length} main categories. Focus on explaining what this technology does, when to use it, and its main advantages.`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Find quick start pages
|
|
63
|
+
*/
|
|
64
|
+
findQuickStartPages(content) {
|
|
65
|
+
return content.pages
|
|
66
|
+
.filter(p => {
|
|
67
|
+
const title = p.title.toLowerCase();
|
|
68
|
+
return (title.includes('quick start') ||
|
|
69
|
+
title.includes('getting started') ||
|
|
70
|
+
title.includes('installation') ||
|
|
71
|
+
title.includes('setup') ||
|
|
72
|
+
title.includes('introduction'));
|
|
73
|
+
})
|
|
74
|
+
.map(p => p.title)
|
|
75
|
+
.slice(0, 5);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Identify core features
|
|
79
|
+
*/
|
|
80
|
+
identifyCoreFeatures(content) {
|
|
81
|
+
// Use categories and high-frequency topics
|
|
82
|
+
const features = [];
|
|
83
|
+
// Add categories as features
|
|
84
|
+
Object.keys(content.analysis.categories)
|
|
85
|
+
.sort((a, b) => content.analysis.categories[b] - content.analysis.categories[a])
|
|
86
|
+
.slice(0, 8)
|
|
87
|
+
.forEach(cat => features.push(cat));
|
|
88
|
+
// Add pages with many code examples
|
|
89
|
+
content.pages
|
|
90
|
+
.filter(p => p.codeBlocks >= 3)
|
|
91
|
+
.sort((a, b) => b.codeBlocks - a.codeBlocks)
|
|
92
|
+
.slice(0, 5)
|
|
93
|
+
.forEach(p => {
|
|
94
|
+
if (!features.includes(p.title)) {
|
|
95
|
+
features.push(p.title);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return features.slice(0, 10);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract best practice hints
|
|
102
|
+
*/
|
|
103
|
+
extractBestPracticeHints(content) {
|
|
104
|
+
const hints = [];
|
|
105
|
+
content.pages.forEach(page => {
|
|
106
|
+
const title = page.title.toLowerCase();
|
|
107
|
+
if (title.includes('best practice') ||
|
|
108
|
+
title.includes('recommendation') ||
|
|
109
|
+
title.includes('guide') ||
|
|
110
|
+
title.includes('tip')) {
|
|
111
|
+
hints.push(page.title);
|
|
112
|
+
}
|
|
113
|
+
// Also check key points
|
|
114
|
+
page.keyPoints.forEach(point => {
|
|
115
|
+
if (point.toLowerCase().includes('should') ||
|
|
116
|
+
point.toLowerCase().includes('recommend') ||
|
|
117
|
+
point.toLowerCase().includes('avoid')) {
|
|
118
|
+
hints.push(point);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
return hints.slice(0, 10);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Find troubleshooting content
|
|
126
|
+
*/
|
|
127
|
+
findTroubleshootingContent(content) {
|
|
128
|
+
return content.pages
|
|
129
|
+
.filter(p => {
|
|
130
|
+
const title = p.title.toLowerCase();
|
|
131
|
+
const content = p.content.toLowerCase();
|
|
132
|
+
return (title.includes('troubleshoot') ||
|
|
133
|
+
title.includes('common issue') ||
|
|
134
|
+
title.includes('faq') ||
|
|
135
|
+
title.includes('error') ||
|
|
136
|
+
title.includes('debug') ||
|
|
137
|
+
content.includes('common mistake') ||
|
|
138
|
+
content.includes('frequently asked'));
|
|
139
|
+
})
|
|
140
|
+
.map(p => p.title)
|
|
141
|
+
.slice(0, 5);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Generate tips for SKILL creation
|
|
145
|
+
*/
|
|
146
|
+
generateTips(content) {
|
|
147
|
+
const tips = [
|
|
148
|
+
'Organize SKILL by phase-based workflow (Setup -> Development -> Testing -> Deployment)',
|
|
149
|
+
'Include verification checklists for each major step',
|
|
150
|
+
'Provide decision trees for common choices (e.g., which approach to use when)',
|
|
151
|
+
'Include troubleshooting for common errors with solutions',
|
|
152
|
+
];
|
|
153
|
+
// Add difficulty-specific tips
|
|
154
|
+
if (content.analysis.difficulty === 'beginner') {
|
|
155
|
+
tips.push('Focus on step-by-step instructions with clear examples', 'Explain prerequisites and fundamental concepts thoroughly');
|
|
156
|
+
}
|
|
157
|
+
else if (content.analysis.difficulty === 'advanced') {
|
|
158
|
+
tips.push('Focus on architecture patterns and advanced techniques', 'Include performance considerations and optimization strategies');
|
|
159
|
+
}
|
|
160
|
+
// Add code-specific tips if many examples
|
|
161
|
+
if (content.analysis.totalCodeBlocks > 30) {
|
|
162
|
+
tips.push('Create a comprehensive code examples section', 'Categorize code patterns by use case');
|
|
163
|
+
}
|
|
164
|
+
return tips;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Assess content quality
|
|
168
|
+
*/
|
|
169
|
+
assessQuality(content) {
|
|
170
|
+
// Content quality: based on word count and structure
|
|
171
|
+
const avgWordsPerPage = content.analysis.totalWords / content.statistics.totalPages;
|
|
172
|
+
const contentQuality = Math.min(100, (avgWordsPerPage / 500) * 100);
|
|
173
|
+
// Code examples: based on code block density
|
|
174
|
+
const codeExamplesScore = Math.min(100, content.analysis.technicalDensity * 10);
|
|
175
|
+
// Completeness: based on page count and categories
|
|
176
|
+
const hasGoodCoverage = content.statistics.totalPages >= 10 &&
|
|
177
|
+
Object.keys(content.analysis.categories).length >= 3;
|
|
178
|
+
const completeness = hasGoodCoverage ? 80 + (Math.min(content.statistics.totalPages, 50) / 50) * 20 : 50;
|
|
179
|
+
// Overall quality
|
|
180
|
+
const overall = Math.round((contentQuality + codeExamplesScore + completeness) / 3);
|
|
181
|
+
return {
|
|
182
|
+
contentQuality: Math.round(contentQuality),
|
|
183
|
+
codeExamples: Math.round(codeExamplesScore),
|
|
184
|
+
completeness: Math.round(completeness),
|
|
185
|
+
overall,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=guide-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guide-generator.js","sourceRoot":"","sources":["../../src/processor/guide-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Safe Coder MCP Server
|
|
4
|
+
* Orchestrates safe-coder-cli for documentation crawling and SKILL generation
|
|
5
|
+
*/
|
|
6
|
+
export declare class SafeCoderMCPServer {
|
|
7
|
+
private server;
|
|
8
|
+
constructor();
|
|
9
|
+
/**
|
|
10
|
+
* Register MCP tools
|
|
11
|
+
*/
|
|
12
|
+
private setupTools;
|
|
13
|
+
/**
|
|
14
|
+
* Start the MCP server
|
|
15
|
+
*/
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=safe-coder-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-coder-mcp.d.ts","sourceRoot":"","sources":["../../src/server/safe-coder-mcp.ts"],"names":[],"mappings":";AAaA;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAY;;IAW1B;;OAEG;IACH,OAAO,CAAC,UAAU;IA8JlB;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAM3B"}
|