@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.
Files changed (188) hide show
  1. package/README.md +682 -902
  2. package/dist/cache/cache-manager.d.ts +71 -0
  3. package/dist/cache/cache-manager.d.ts.map +1 -0
  4. package/dist/cache/cache-manager.js +244 -0
  5. package/dist/cache/cache-manager.js.map +1 -0
  6. package/dist/executor/cli-executor.d.ts +106 -0
  7. package/dist/executor/cli-executor.d.ts.map +1 -0
  8. package/dist/executor/cli-executor.js +133 -0
  9. package/dist/executor/cli-executor.js.map +1 -0
  10. package/dist/executor/dependency-checker.d.ts +23 -0
  11. package/dist/executor/dependency-checker.d.ts.map +1 -0
  12. package/dist/executor/dependency-checker.js +62 -0
  13. package/dist/executor/dependency-checker.js.map +1 -0
  14. package/dist/index.js +3 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/processor/content-processor.d.ts +76 -0
  17. package/dist/processor/content-processor.d.ts.map +1 -0
  18. package/dist/processor/content-processor.js +182 -0
  19. package/dist/processor/content-processor.js.map +1 -0
  20. package/dist/processor/guide-generator.d.ts +68 -0
  21. package/dist/processor/guide-generator.d.ts.map +1 -0
  22. package/dist/processor/guide-generator.js +189 -0
  23. package/dist/processor/guide-generator.js.map +1 -0
  24. package/dist/server/safe-coder-mcp.d.ts +18 -0
  25. package/dist/server/safe-coder-mcp.d.ts.map +1 -0
  26. package/dist/server/safe-coder-mcp.js +164 -0
  27. package/dist/server/safe-coder-mcp.js.map +1 -0
  28. package/dist/tools/cache-tools.d.ts +42 -0
  29. package/dist/tools/cache-tools.d.ts.map +1 -0
  30. package/dist/tools/cache-tools.js +70 -0
  31. package/dist/tools/cache-tools.js.map +1 -0
  32. package/dist/tools/crawl-documentation.d.ts +57 -0
  33. package/dist/tools/crawl-documentation.d.ts.map +1 -0
  34. package/dist/tools/crawl-documentation.js +96 -0
  35. package/dist/tools/crawl-documentation.js.map +1 -0
  36. package/dist/tools/index.d.ts +4 -0
  37. package/dist/tools/index.d.ts.map +1 -0
  38. package/dist/tools/index.js +4 -0
  39. package/dist/tools/index.js.map +1 -0
  40. package/dist/tools/save-skill.d.ts +49 -0
  41. package/dist/tools/save-skill.d.ts.map +1 -0
  42. package/dist/tools/save-skill.js +207 -0
  43. package/dist/tools/save-skill.js.map +1 -0
  44. package/package.json +18 -22
  45. package/dist/documentation/browser-doc-browser.d.ts +0 -41
  46. package/dist/documentation/browser-doc-browser.d.ts.map +0 -1
  47. package/dist/documentation/browser-doc-browser.js +0 -357
  48. package/dist/documentation/browser-doc-browser.js.map +0 -1
  49. package/dist/documentation/cache.d.ts +0 -13
  50. package/dist/documentation/cache.d.ts.map +0 -1
  51. package/dist/documentation/cache.js +0 -48
  52. package/dist/documentation/cache.js.map +0 -1
  53. package/dist/documentation/checkpoint-manager.d.ts +0 -38
  54. package/dist/documentation/checkpoint-manager.d.ts.map +0 -1
  55. package/dist/documentation/checkpoint-manager.js +0 -101
  56. package/dist/documentation/checkpoint-manager.js.map +0 -1
  57. package/dist/documentation/doc-crawler.d.ts +0 -185
  58. package/dist/documentation/doc-crawler.d.ts.map +0 -1
  59. package/dist/documentation/doc-crawler.js +0 -1162
  60. package/dist/documentation/doc-crawler.js.map +0 -1
  61. package/dist/documentation/github-client.d.ts +0 -13
  62. package/dist/documentation/github-client.d.ts.map +0 -1
  63. package/dist/documentation/github-client.js +0 -90
  64. package/dist/documentation/github-client.js.map +0 -1
  65. package/dist/documentation/http-fetcher.d.ts +0 -8
  66. package/dist/documentation/http-fetcher.d.ts.map +0 -1
  67. package/dist/documentation/http-fetcher.js +0 -31
  68. package/dist/documentation/http-fetcher.js.map +0 -1
  69. package/dist/documentation/index.d.ts +0 -16
  70. package/dist/documentation/index.d.ts.map +0 -1
  71. package/dist/documentation/index.js +0 -159
  72. package/dist/documentation/index.js.map +0 -1
  73. package/dist/documentation/llms-txt/detector.d.ts +0 -31
  74. package/dist/documentation/llms-txt/detector.d.ts.map +0 -1
  75. package/dist/documentation/llms-txt/detector.js +0 -77
  76. package/dist/documentation/llms-txt/detector.js.map +0 -1
  77. package/dist/documentation/llms-txt/downloader.d.ts +0 -30
  78. package/dist/documentation/llms-txt/downloader.d.ts.map +0 -1
  79. package/dist/documentation/llms-txt/downloader.js +0 -84
  80. package/dist/documentation/llms-txt/downloader.js.map +0 -1
  81. package/dist/documentation/llms-txt/index.d.ts +0 -4
  82. package/dist/documentation/llms-txt/index.d.ts.map +0 -1
  83. package/dist/documentation/llms-txt/index.js +0 -4
  84. package/dist/documentation/llms-txt/index.js.map +0 -1
  85. package/dist/documentation/llms-txt/parser.d.ts +0 -43
  86. package/dist/documentation/llms-txt/parser.d.ts.map +0 -1
  87. package/dist/documentation/llms-txt/parser.js +0 -177
  88. package/dist/documentation/llms-txt/parser.js.map +0 -1
  89. package/dist/documentation/normalizer.d.ts +0 -6
  90. package/dist/documentation/normalizer.d.ts.map +0 -1
  91. package/dist/documentation/normalizer.js +0 -38
  92. package/dist/documentation/normalizer.js.map +0 -1
  93. package/dist/documentation/npm-client.d.ts +0 -19
  94. package/dist/documentation/npm-client.d.ts.map +0 -1
  95. package/dist/documentation/npm-client.js +0 -182
  96. package/dist/documentation/npm-client.js.map +0 -1
  97. package/dist/documentation/skill-generator.d.ts +0 -108
  98. package/dist/documentation/skill-generator.d.ts.map +0 -1
  99. package/dist/documentation/skill-generator.js +0 -642
  100. package/dist/documentation/skill-generator.js.map +0 -1
  101. package/dist/documentation/web-doc-browser.d.ts +0 -67
  102. package/dist/documentation/web-doc-browser.d.ts.map +0 -1
  103. package/dist/documentation/web-doc-browser.js +0 -555
  104. package/dist/documentation/web-doc-browser.js.map +0 -1
  105. package/dist/errors/api-validator.d.ts +0 -9
  106. package/dist/errors/api-validator.d.ts.map +0 -1
  107. package/dist/errors/api-validator.js +0 -57
  108. package/dist/errors/api-validator.js.map +0 -1
  109. package/dist/errors/contextual-analysis.d.ts +0 -14
  110. package/dist/errors/contextual-analysis.d.ts.map +0 -1
  111. package/dist/errors/contextual-analysis.js +0 -173
  112. package/dist/errors/contextual-analysis.js.map +0 -1
  113. package/dist/errors/cross-file-analyzer.d.ts +0 -16
  114. package/dist/errors/cross-file-analyzer.d.ts.map +0 -1
  115. package/dist/errors/cross-file-analyzer.js +0 -172
  116. package/dist/errors/cross-file-analyzer.js.map +0 -1
  117. package/dist/errors/eslint-integration.d.ts +0 -9
  118. package/dist/errors/eslint-integration.d.ts.map +0 -1
  119. package/dist/errors/eslint-integration.js +0 -131
  120. package/dist/errors/eslint-integration.js.map +0 -1
  121. package/dist/errors/framework-detector.d.ts +0 -10
  122. package/dist/errors/framework-detector.d.ts.map +0 -1
  123. package/dist/errors/framework-detector.js +0 -126
  124. package/dist/errors/framework-detector.js.map +0 -1
  125. package/dist/errors/index.d.ts +0 -18
  126. package/dist/errors/index.d.ts.map +0 -1
  127. package/dist/errors/index.js +0 -134
  128. package/dist/errors/index.js.map +0 -1
  129. package/dist/errors/pattern-matcher.d.ts +0 -25
  130. package/dist/errors/pattern-matcher.d.ts.map +0 -1
  131. package/dist/errors/pattern-matcher.js +0 -44
  132. package/dist/errors/pattern-matcher.js.map +0 -1
  133. package/dist/errors/patterns.d.ts +0 -11
  134. package/dist/errors/patterns.d.ts.map +0 -1
  135. package/dist/errors/patterns.js +0 -351
  136. package/dist/errors/patterns.js.map +0 -1
  137. package/dist/errors/performance-detector.d.ts +0 -11
  138. package/dist/errors/performance-detector.d.ts.map +0 -1
  139. package/dist/errors/performance-detector.js +0 -119
  140. package/dist/errors/performance-detector.js.map +0 -1
  141. package/dist/errors/runtime-detector.d.ts +0 -7
  142. package/dist/errors/runtime-detector.d.ts.map +0 -1
  143. package/dist/errors/runtime-detector.js +0 -86
  144. package/dist/errors/runtime-detector.js.map +0 -1
  145. package/dist/errors/security-detector.d.ts +0 -6
  146. package/dist/errors/security-detector.d.ts.map +0 -1
  147. package/dist/errors/security-detector.js +0 -75
  148. package/dist/errors/security-detector.js.map +0 -1
  149. package/dist/errors/typescript-integration.d.ts +0 -6
  150. package/dist/errors/typescript-integration.d.ts.map +0 -1
  151. package/dist/errors/typescript-integration.js +0 -46
  152. package/dist/errors/typescript-integration.js.map +0 -1
  153. package/dist/server/mcp-server.d.ts +0 -14
  154. package/dist/server/mcp-server.d.ts.map +0 -1
  155. package/dist/server/mcp-server.js +0 -776
  156. package/dist/server/mcp-server.js.map +0 -1
  157. package/dist/types/documentation.d.ts +0 -26
  158. package/dist/types/documentation.d.ts.map +0 -1
  159. package/dist/types/documentation.js +0 -2
  160. package/dist/types/documentation.js.map +0 -1
  161. package/dist/utils/config.d.ts +0 -21
  162. package/dist/utils/config.d.ts.map +0 -1
  163. package/dist/utils/config.js +0 -34
  164. package/dist/utils/config.js.map +0 -1
  165. package/dist/utils/http-client.d.ts +0 -17
  166. package/dist/utils/http-client.d.ts.map +0 -1
  167. package/dist/utils/http-client.js +0 -62
  168. package/dist/utils/http-client.js.map +0 -1
  169. package/dist/utils/logger.d.ts +0 -36
  170. package/dist/utils/logger.d.ts.map +0 -1
  171. package/dist/utils/logger.js +0 -128
  172. package/dist/utils/logger.js.map +0 -1
  173. package/dist/utils/rate-limiter.d.ts +0 -9
  174. package/dist/utils/rate-limiter.d.ts.map +0 -1
  175. package/dist/utils/rate-limiter.js +0 -26
  176. package/dist/utils/rate-limiter.js.map +0 -1
  177. package/dist/validation/auto-fix.d.ts +0 -15
  178. package/dist/validation/auto-fix.d.ts.map +0 -1
  179. package/dist/validation/auto-fix.js +0 -49
  180. package/dist/validation/auto-fix.js.map +0 -1
  181. package/dist/validation/index.d.ts +0 -21
  182. package/dist/validation/index.d.ts.map +0 -1
  183. package/dist/validation/index.js +0 -45
  184. package/dist/validation/index.js.map +0 -1
  185. package/dist/validation/resolution-db.d.ts +0 -15
  186. package/dist/validation/resolution-db.d.ts.map +0 -1
  187. package/dist/validation/resolution-db.js +0 -62
  188. package/dist/validation/resolution-db.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { crawlDocumentation, CrawlDocumentationSchema, listCachedDocumentation, clearCache, ClearCacheSchema, saveSkill, SaveSkillSchema, } from '../tools/index.js';
5
+ /**
6
+ * Safe Coder MCP Server
7
+ * Orchestrates safe-coder-cli for documentation crawling and SKILL generation
8
+ */
9
+ export class SafeCoderMCPServer {
10
+ server;
11
+ constructor() {
12
+ this.server = new McpServer({
13
+ name: 'safe-coder',
14
+ version: '1.0.0',
15
+ });
16
+ this.setupTools();
17
+ }
18
+ /**
19
+ * Register MCP tools
20
+ */
21
+ setupTools() {
22
+ // Register crawl_documentation tool
23
+ this.server.registerTool('crawl_documentation', {
24
+ title: 'Crawl Documentation',
25
+ description: 'Crawl documentation website and generate SKILL file guidance. This tool calls safe-coder-cli to perform the actual crawling, then processes the results and provides guidance for SKILL generation. Requires safe-coder-cli to be installed globally. Parameters: url (required), maxPages (optional, default 200), depth (optional, default 3), workers (optional), useBrowser (optional), browser (optional: puppeteer/playwright), spaStrategy (optional: smart/auto/manual), useCache (optional, default true), forceRefresh (optional, default false).',
26
+ inputSchema: CrawlDocumentationSchema,
27
+ }, async (args) => {
28
+ try {
29
+ const result = await crawlDocumentation(args);
30
+ return {
31
+ content: [
32
+ {
33
+ type: 'text',
34
+ text: JSON.stringify(result, null, 2),
35
+ },
36
+ ],
37
+ };
38
+ }
39
+ catch (error) {
40
+ const errorMessage = error instanceof Error ? error.message : String(error);
41
+ return {
42
+ content: [
43
+ {
44
+ type: 'text',
45
+ text: JSON.stringify({
46
+ success: false,
47
+ error: errorMessage,
48
+ }, null, 2),
49
+ },
50
+ ],
51
+ isError: true,
52
+ };
53
+ }
54
+ });
55
+ // Register list_cached_documentation tool
56
+ this.server.registerTool('list_cached_documentation', {
57
+ title: 'List Cached Documentation',
58
+ description: 'List all cached documentation crawl results with metadata. No parameters required.',
59
+ inputSchema: {},
60
+ }, async () => {
61
+ try {
62
+ const result = await listCachedDocumentation();
63
+ return {
64
+ content: [
65
+ {
66
+ type: 'text',
67
+ text: JSON.stringify(result, null, 2),
68
+ },
69
+ ],
70
+ };
71
+ }
72
+ catch (error) {
73
+ const errorMessage = error instanceof Error ? error.message : String(error);
74
+ return {
75
+ content: [
76
+ {
77
+ type: 'text',
78
+ text: JSON.stringify({
79
+ success: false,
80
+ error: errorMessage,
81
+ }, null, 2),
82
+ },
83
+ ],
84
+ isError: true,
85
+ };
86
+ }
87
+ });
88
+ // Register clear_cache tool
89
+ this.server.registerTool('clear_cache', {
90
+ title: 'Clear Cache',
91
+ description: 'Clear cached documentation results. Parameters: urlPattern (optional string) - URL pattern to match, clearAll (optional boolean) - clear all entries. If no parameters, clears only expired entries.',
92
+ inputSchema: ClearCacheSchema,
93
+ }, async (args) => {
94
+ try {
95
+ const result = await clearCache(args || {});
96
+ return {
97
+ content: [
98
+ {
99
+ type: 'text',
100
+ text: JSON.stringify(result, null, 2),
101
+ },
102
+ ],
103
+ };
104
+ }
105
+ catch (error) {
106
+ const errorMessage = error instanceof Error ? error.message : String(error);
107
+ return {
108
+ content: [
109
+ {
110
+ type: 'text',
111
+ text: JSON.stringify({
112
+ success: false,
113
+ error: errorMessage,
114
+ }, null, 2),
115
+ },
116
+ ],
117
+ isError: true,
118
+ };
119
+ }
120
+ });
121
+ // Register save_skill tool
122
+ this.server.registerTool('save_skill', {
123
+ title: 'Save SKILL Files',
124
+ description: 'Save complete SKILL directory structure (SKILL.md + references/) to filesystem. Creates a properly formatted Cursor Agent Skill with all reference documentation organized by category. Parameters: skillName (required string) - name for skill directory, skillContent (required string) - SKILL.md content, referenceFiles (optional object) - map of category -> markdown content, baseDirectory (optional string, default ~/.claude/skills) - base directory for skills, overwrite (optional boolean, default false) - overwrite existing skill.',
125
+ inputSchema: SaveSkillSchema,
126
+ }, async (args) => {
127
+ try {
128
+ const result = await saveSkill(args);
129
+ return {
130
+ content: [
131
+ {
132
+ type: 'text',
133
+ text: JSON.stringify(result, null, 2),
134
+ },
135
+ ],
136
+ };
137
+ }
138
+ catch (error) {
139
+ const errorMessage = error instanceof Error ? error.message : String(error);
140
+ return {
141
+ content: [
142
+ {
143
+ type: 'text',
144
+ text: JSON.stringify({
145
+ success: false,
146
+ error: errorMessage,
147
+ }, null, 2),
148
+ },
149
+ ],
150
+ isError: true,
151
+ };
152
+ }
153
+ });
154
+ }
155
+ /**
156
+ * Start the MCP server
157
+ */
158
+ async run() {
159
+ const transport = new StdioServerTransport();
160
+ await this.server.connect(transport);
161
+ console.error('Safe Coder MCP Server running on stdio');
162
+ }
163
+ }
164
+ //# sourceMappingURL=safe-coder-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-coder-mcp.js","sourceRoot":"","sources":["../../src/server/safe-coder-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * List cached documentation schema
4
+ */
5
+ export declare const ListCachedDocumentationSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
6
+ /**
7
+ * Clear cache schema
8
+ */
9
+ export declare const ClearCacheSchema: z.ZodObject<{
10
+ urlPattern: z.ZodOptional<z.ZodString>;
11
+ clearAll: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ clearAll: boolean;
14
+ urlPattern?: string | undefined;
15
+ }, {
16
+ urlPattern?: string | undefined;
17
+ clearAll?: boolean | undefined;
18
+ }>;
19
+ export type ClearCacheInput = z.infer<typeof ClearCacheSchema>;
20
+ /**
21
+ * List cached documentation
22
+ */
23
+ export declare function listCachedDocumentation(): Promise<{
24
+ success: boolean;
25
+ entries: import("../cache/cache-manager.js").CacheEntry[];
26
+ statistics: {
27
+ totalEntries: number;
28
+ totalSize: string;
29
+ oldestEntry: string | undefined;
30
+ newestEntry: string | undefined;
31
+ };
32
+ message: string;
33
+ }>;
34
+ /**
35
+ * Clear cache
36
+ */
37
+ export declare function clearCache(input: ClearCacheInput): Promise<{
38
+ success: boolean;
39
+ deletedCount: number;
40
+ message: string;
41
+ }>;
42
+ //# sourceMappingURL=cache-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-tools.d.ts","sourceRoot":"","sources":["../../src/tools/cache-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,6BAA6B,gDAAe,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D;;GAEG;AACH,wBAAsB,uBAAuB;;;;;;;;;;GAiB5C;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe;;;;GAuBtD"}
@@ -0,0 +1,70 @@
1
+ import { z } from 'zod';
2
+ import { CacheManager } from '../cache/cache-manager.js';
3
+ /**
4
+ * List cached documentation schema
5
+ */
6
+ export const ListCachedDocumentationSchema = z.object({});
7
+ /**
8
+ * Clear cache schema
9
+ */
10
+ export const ClearCacheSchema = z.object({
11
+ urlPattern: z.string().optional().describe('URL pattern to match for deletion (optional)'),
12
+ clearAll: z.boolean().optional().default(false).describe('Clear all cached entries'),
13
+ });
14
+ /**
15
+ * List cached documentation
16
+ */
17
+ export async function listCachedDocumentation() {
18
+ const cache = new CacheManager();
19
+ const entries = await cache.list();
20
+ const stats = await cache.getStats();
21
+ return {
22
+ success: true,
23
+ entries,
24
+ statistics: {
25
+ totalEntries: stats.totalEntries,
26
+ totalSize: formatBytes(stats.totalSize),
27
+ oldestEntry: stats.oldestEntry?.toISOString(),
28
+ newestEntry: stats.newestEntry?.toISOString(),
29
+ },
30
+ message: `Found ${entries.length} cached documentation${entries.length !== 1 ? 's' : ''}`,
31
+ };
32
+ }
33
+ /**
34
+ * Clear cache
35
+ */
36
+ export async function clearCache(input) {
37
+ const cache = new CacheManager();
38
+ let deletedCount;
39
+ let message;
40
+ if (input.clearAll) {
41
+ deletedCount = await cache.clear();
42
+ message = `Cleared all cache: deleted ${deletedCount} entry${deletedCount !== 1 ? 'ies' : 'y'}`;
43
+ }
44
+ else if (input.urlPattern) {
45
+ deletedCount = await cache.clear(input.urlPattern);
46
+ message = `Cleared cache matching "${input.urlPattern}": deleted ${deletedCount} entry${deletedCount !== 1 ? 'ies' : 'y'}`;
47
+ }
48
+ else {
49
+ // Clear expired only
50
+ deletedCount = await cache.clearExpired();
51
+ message = `Cleared expired cache: deleted ${deletedCount} entry${deletedCount !== 1 ? 'ies' : 'y'}`;
52
+ }
53
+ return {
54
+ success: true,
55
+ deletedCount,
56
+ message,
57
+ };
58
+ }
59
+ /**
60
+ * Format bytes to human-readable format
61
+ */
62
+ function formatBytes(bytes) {
63
+ if (bytes === 0)
64
+ return '0 Bytes';
65
+ const k = 1024;
66
+ const sizes = ['Bytes', 'KB', 'MB', 'GB'];
67
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
68
+ return `${Math.round(bytes / Math.pow(k, i) * 100) / 100} ${sizes[i]}`;
69
+ }
70
+ //# sourceMappingURL=cache-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-tools.js","sourceRoot":"","sources":["../../src/tools/cache-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Input schema for crawl_documentation tool
4
+ */
5
+ export declare const CrawlDocumentationSchema: z.ZodObject<{
6
+ url: z.ZodString;
7
+ maxPages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
+ depth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
9
+ workers: z.ZodOptional<z.ZodNumber>;
10
+ useBrowser: z.ZodOptional<z.ZodBoolean>;
11
+ browser: z.ZodOptional<z.ZodEnum<["puppeteer", "playwright"]>>;
12
+ spaStrategy: z.ZodOptional<z.ZodEnum<["smart", "auto", "manual"]>>;
13
+ useCache: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
14
+ forceRefresh: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ url: string;
17
+ maxPages: number;
18
+ depth: number;
19
+ useCache: boolean;
20
+ forceRefresh: boolean;
21
+ workers?: number | undefined;
22
+ useBrowser?: boolean | undefined;
23
+ browser?: "puppeteer" | "playwright" | undefined;
24
+ spaStrategy?: "smart" | "auto" | "manual" | undefined;
25
+ }, {
26
+ url: string;
27
+ maxPages?: number | undefined;
28
+ depth?: number | undefined;
29
+ workers?: number | undefined;
30
+ useBrowser?: boolean | undefined;
31
+ browser?: "puppeteer" | "playwright" | undefined;
32
+ spaStrategy?: "smart" | "auto" | "manual" | undefined;
33
+ useCache?: boolean | undefined;
34
+ forceRefresh?: boolean | undefined;
35
+ }>;
36
+ export type CrawlDocumentationInput = z.infer<typeof CrawlDocumentationSchema>;
37
+ /**
38
+ * Crawl documentation tool handler
39
+ */
40
+ export declare function crawlDocumentation(input: CrawlDocumentationInput): Promise<{
41
+ success: boolean;
42
+ data: import("../processor/content-processor.js").ProcessedContent;
43
+ skillGenerationGuide: import("../processor/guide-generator.js").SkillGenerationGuide;
44
+ fromCache: boolean;
45
+ cacheAge: string;
46
+ message: string;
47
+ rawCrawlResult?: undefined;
48
+ } | {
49
+ success: boolean;
50
+ data: import("../processor/content-processor.js").ProcessedContent;
51
+ rawCrawlResult: import("../executor/cli-executor.js").CrawlResult;
52
+ skillGenerationGuide: import("../processor/guide-generator.js").SkillGenerationGuide;
53
+ fromCache: boolean;
54
+ message: string;
55
+ cacheAge?: undefined;
56
+ }>;
57
+ //# sourceMappingURL=crawl-documentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-documentation.d.ts","sourceRoot":"","sources":["../../src/tools/crawl-documentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUnC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB;;;;;;;;;;;;;;;;GA+EtE"}
@@ -0,0 +1,96 @@
1
+ import { z } from 'zod';
2
+ import { DependencyChecker } from '../executor/dependency-checker.js';
3
+ import { CLIExecutor } from '../executor/cli-executor.js';
4
+ import { ContentProcessor } from '../processor/content-processor.js';
5
+ import { GuideGenerator } from '../processor/guide-generator.js';
6
+ import { CacheManager } from '../cache/cache-manager.js';
7
+ /**
8
+ * Input schema for crawl_documentation tool
9
+ */
10
+ export const CrawlDocumentationSchema = z.object({
11
+ url: z.string().url().describe('Documentation URL to crawl'),
12
+ maxPages: z.number().optional().default(200).describe('Maximum number of pages to crawl'),
13
+ depth: z.number().optional().default(3).describe('Maximum crawl depth'),
14
+ workers: z.number().optional().describe('Number of parallel workers'),
15
+ useBrowser: z.boolean().optional().describe('Force browser automation'),
16
+ browser: z.enum(['puppeteer', 'playwright']).optional().describe('Browser type to use'),
17
+ spaStrategy: z.enum(['smart', 'auto', 'manual']).optional().describe('SPA crawling strategy'),
18
+ useCache: z.boolean().optional().default(true).describe('Use cached results if available'),
19
+ forceRefresh: z.boolean().optional().default(false).describe('Force refresh even if cached'),
20
+ });
21
+ /**
22
+ * Crawl documentation tool handler
23
+ */
24
+ export async function crawlDocumentation(input) {
25
+ const checker = new DependencyChecker();
26
+ const executor = new CLIExecutor(checker);
27
+ const processor = new ContentProcessor();
28
+ const guideGenerator = new GuideGenerator();
29
+ const cache = new CacheManager();
30
+ // 1. Check if CLI is installed
31
+ const cliCheck = await checker.checkCLIInstalled();
32
+ if (!cliCheck.installed) {
33
+ throw new Error(cliCheck.message);
34
+ }
35
+ // 2. Check cache (if enabled and not forcing refresh)
36
+ if (input.useCache && !input.forceRefresh) {
37
+ const cached = await cache.get(input.url);
38
+ if (cached) {
39
+ const ageMinutes = Math.floor((Date.now() - cached.timestamp) / 1000 / 60);
40
+ return {
41
+ success: true,
42
+ data: cached.data,
43
+ skillGenerationGuide: cached.guide,
44
+ fromCache: true,
45
+ cacheAge: `${ageMinutes} minutes`,
46
+ message: `Using cached data from ${ageMinutes} minutes ago. Use forceRefresh: true to re-crawl.`,
47
+ };
48
+ }
49
+ }
50
+ // 3. Prepare crawl parameters
51
+ const crawlParams = {
52
+ url: input.url,
53
+ maxPages: input.maxPages,
54
+ maxDepth: input.depth,
55
+ workers: input.workers,
56
+ useBrowser: input.useBrowser,
57
+ browser: input.browser,
58
+ spaStrategy: input.spaStrategy,
59
+ };
60
+ // 4. Execute crawl with progress reporting
61
+ let lastProgress = '';
62
+ const rawResult = await executor.executeCrawl(crawlParams, (progress) => {
63
+ // Log progress to stderr (visible in MCP client logs)
64
+ if (progress.message !== lastProgress) {
65
+ console.error(`[Progress] ${progress.message}`);
66
+ lastProgress = progress.message;
67
+ }
68
+ });
69
+ // 5. Process content
70
+ console.error('[Processing] Analyzing crawled content...');
71
+ const processed = await processor.process(rawResult);
72
+ // 6. Generate SKILL guidance
73
+ console.error('[Processing] Generating SKILL generation guide...');
74
+ const guide = guideGenerator.generate(processed);
75
+ // 7. Cache results
76
+ if (input.useCache) {
77
+ try {
78
+ await cache.set(input.url, processed, guide);
79
+ console.error('[Cache] Results cached successfully');
80
+ }
81
+ catch (error) {
82
+ console.error('[Cache] Warning: Failed to cache results:', error);
83
+ // Don't fail the entire operation if caching fails
84
+ }
85
+ }
86
+ // 8. Return results with raw crawl data for file saving
87
+ return {
88
+ success: true,
89
+ data: processed,
90
+ rawCrawlResult: rawResult, // Include raw result for skill file generation
91
+ skillGenerationGuide: guide,
92
+ fromCache: false,
93
+ message: `Successfully crawled ${processed.statistics.totalPages} pages. Quality score: ${guide.quality.overall}/100`,
94
+ };
95
+ }
96
+ //# sourceMappingURL=crawl-documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crawl-documentation.js","sourceRoot":"","sources":["../../src/tools/crawl-documentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { crawlDocumentation, CrawlDocumentationSchema, type CrawlDocumentationInput, } from './crawl-documentation.js';
2
+ export { listCachedDocumentation, clearCache, ListCachedDocumentationSchema, ClearCacheSchema, type ClearCacheInput, } from './cache-tools.js';
3
+ export { saveSkill, SaveSkillSchema, type SaveSkillInput, type SaveSkillResult, extractSkillDataFromCrawlResult, } from './save-skill.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,6BAA6B,EAC7B,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,+BAA+B,GAChC,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { crawlDocumentation, CrawlDocumentationSchema, } from './crawl-documentation.js';
2
+ export { listCachedDocumentation, clearCache, ListCachedDocumentationSchema, ClearCacheSchema, } from './cache-tools.js';
3
+ export { saveSkill, SaveSkillSchema, extractSkillDataFromCrawlResult, } from './save-skill.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAEzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,6BAA6B,EAC7B,gBAAgB,GAEjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,eAAe,EAGf,+BAA+B,GAChC,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ import type { CrawlResult } from '../executor/cli-executor.js';
3
+ /**
4
+ * Input schema for save_skill tool
5
+ */
6
+ export declare const SaveSkillSchema: z.ZodObject<{
7
+ skillName: z.ZodString;
8
+ skillContent: z.ZodString;
9
+ referenceFiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
10
+ baseDirectory: z.ZodDefault<z.ZodOptional<z.ZodString>>;
11
+ overwrite: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ skillName: string;
14
+ skillContent: string;
15
+ baseDirectory: string;
16
+ overwrite: boolean;
17
+ referenceFiles?: Record<string, string> | undefined;
18
+ }, {
19
+ skillName: string;
20
+ skillContent: string;
21
+ referenceFiles?: Record<string, string> | undefined;
22
+ baseDirectory?: string | undefined;
23
+ overwrite?: boolean | undefined;
24
+ }>;
25
+ export type SaveSkillInput = z.infer<typeof SaveSkillSchema>;
26
+ /**
27
+ * Save skill result
28
+ */
29
+ export interface SaveSkillResult {
30
+ success: boolean;
31
+ skillDirectory: string;
32
+ filesCreated: {
33
+ skillMd: string;
34
+ references: string[];
35
+ };
36
+ message: string;
37
+ }
38
+ /**
39
+ * Helper to extract skill data from crawl result
40
+ */
41
+ export declare function extractSkillDataFromCrawlResult(crawlResult: CrawlResult, skillName: string): {
42
+ skillContent: string;
43
+ referenceFiles: Record<string, string>;
44
+ };
45
+ /**
46
+ * Save skill tool handler
47
+ */
48
+ export declare function saveSkill(input: SaveSkillInput): Promise<SaveSkillResult>;
49
+ //# sourceMappingURL=save-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save-skill.d.ts","sourceRoot":"","sources":["../../src/tools/save-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAM1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAmBA;AAyJD;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAqD/E"}