skillshield 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +400 -0
  3. package/dist/channels/discord.d.ts +18 -0
  4. package/dist/channels/discord.d.ts.map +1 -0
  5. package/dist/channels/discord.js +275 -0
  6. package/dist/channels/discord.js.map +1 -0
  7. package/dist/channels/index.d.ts +67 -0
  8. package/dist/channels/index.d.ts.map +1 -0
  9. package/dist/channels/index.js +127 -0
  10. package/dist/channels/index.js.map +1 -0
  11. package/dist/channels/slack.d.ts +20 -0
  12. package/dist/channels/slack.d.ts.map +1 -0
  13. package/dist/channels/slack.js +296 -0
  14. package/dist/channels/slack.js.map +1 -0
  15. package/dist/channels/telegram.d.ts +20 -0
  16. package/dist/channels/telegram.d.ts.map +1 -0
  17. package/dist/channels/telegram.js +223 -0
  18. package/dist/channels/telegram.js.map +1 -0
  19. package/dist/channels/whatsapp.d.ts +25 -0
  20. package/dist/channels/whatsapp.d.ts.map +1 -0
  21. package/dist/channels/whatsapp.js +187 -0
  22. package/dist/channels/whatsapp.js.map +1 -0
  23. package/dist/cli/commands/badge.d.ts +11 -0
  24. package/dist/cli/commands/badge.d.ts.map +1 -0
  25. package/dist/cli/commands/badge.js +98 -0
  26. package/dist/cli/commands/badge.js.map +1 -0
  27. package/dist/cli/commands/config.d.ts +3 -0
  28. package/dist/cli/commands/config.d.ts.map +1 -0
  29. package/dist/cli/commands/config.js +140 -0
  30. package/dist/cli/commands/config.js.map +1 -0
  31. package/dist/cli/commands/deploy.d.ts +3 -0
  32. package/dist/cli/commands/deploy.d.ts.map +1 -0
  33. package/dist/cli/commands/deploy.js +56 -0
  34. package/dist/cli/commands/deploy.js.map +1 -0
  35. package/dist/cli/commands/init.d.ts +3 -0
  36. package/dist/cli/commands/init.d.ts.map +1 -0
  37. package/dist/cli/commands/init.js +99 -0
  38. package/dist/cli/commands/init.js.map +1 -0
  39. package/dist/cli/commands/install.d.ts +3 -0
  40. package/dist/cli/commands/install.d.ts.map +1 -0
  41. package/dist/cli/commands/install.js +90 -0
  42. package/dist/cli/commands/install.js.map +1 -0
  43. package/dist/cli/commands/list.d.ts +3 -0
  44. package/dist/cli/commands/list.d.ts.map +1 -0
  45. package/dist/cli/commands/list.js +76 -0
  46. package/dist/cli/commands/list.js.map +1 -0
  47. package/dist/cli/commands/run.d.ts +3 -0
  48. package/dist/cli/commands/run.d.ts.map +1 -0
  49. package/dist/cli/commands/run.js +160 -0
  50. package/dist/cli/commands/run.js.map +1 -0
  51. package/dist/cli/commands/scan.d.ts +3 -0
  52. package/dist/cli/commands/scan.d.ts.map +1 -0
  53. package/dist/cli/commands/scan.js +133 -0
  54. package/dist/cli/commands/scan.js.map +1 -0
  55. package/dist/cli/commands/search.d.ts +3 -0
  56. package/dist/cli/commands/search.d.ts.map +1 -0
  57. package/dist/cli/commands/search.js +56 -0
  58. package/dist/cli/commands/search.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/index.js +70 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/core/config.d.ts +167 -0
  64. package/dist/core/config.d.ts.map +1 -0
  65. package/dist/core/config.js +398 -0
  66. package/dist/core/config.js.map +1 -0
  67. package/dist/core/parser.d.ts +34 -0
  68. package/dist/core/parser.d.ts.map +1 -0
  69. package/dist/core/parser.js +462 -0
  70. package/dist/core/parser.js.map +1 -0
  71. package/dist/core/runtime.d.ts +68 -0
  72. package/dist/core/runtime.d.ts.map +1 -0
  73. package/dist/core/runtime.js +560 -0
  74. package/dist/core/runtime.js.map +1 -0
  75. package/dist/core/types.d.ts +525 -0
  76. package/dist/core/types.d.ts.map +1 -0
  77. package/dist/core/types.js +44 -0
  78. package/dist/core/types.js.map +1 -0
  79. package/dist/guard/index.d.ts +57 -0
  80. package/dist/guard/index.d.ts.map +1 -0
  81. package/dist/guard/index.js +238 -0
  82. package/dist/guard/index.js.map +1 -0
  83. package/dist/guard/patterns.d.ts +21 -0
  84. package/dist/guard/patterns.d.ts.map +1 -0
  85. package/dist/guard/patterns.js +797 -0
  86. package/dist/guard/patterns.js.map +1 -0
  87. package/dist/hub/index.d.ts +44 -0
  88. package/dist/hub/index.d.ts.map +1 -0
  89. package/dist/hub/index.js +144 -0
  90. package/dist/hub/index.js.map +1 -0
  91. package/dist/hub/registry.d.ts +52 -0
  92. package/dist/hub/registry.d.ts.map +1 -0
  93. package/dist/hub/registry.js +192 -0
  94. package/dist/hub/registry.js.map +1 -0
  95. package/dist/i18n/index.d.ts +19 -0
  96. package/dist/i18n/index.d.ts.map +1 -0
  97. package/dist/i18n/index.js +92 -0
  98. package/dist/i18n/index.js.map +1 -0
  99. package/dist/i18n/locales/en.d.ts +110 -0
  100. package/dist/i18n/locales/en.d.ts.map +1 -0
  101. package/dist/i18n/locales/en.js +123 -0
  102. package/dist/i18n/locales/en.js.map +1 -0
  103. package/dist/i18n/locales/es.d.ts +110 -0
  104. package/dist/i18n/locales/es.d.ts.map +1 -0
  105. package/dist/i18n/locales/es.js +123 -0
  106. package/dist/i18n/locales/es.js.map +1 -0
  107. package/dist/i18n/locales/pt.d.ts +110 -0
  108. package/dist/i18n/locales/pt.d.ts.map +1 -0
  109. package/dist/i18n/locales/pt.js +123 -0
  110. package/dist/i18n/locales/pt.js.map +1 -0
  111. package/dist/i18n/locales/zh.d.ts +110 -0
  112. package/dist/i18n/locales/zh.d.ts.map +1 -0
  113. package/dist/i18n/locales/zh.js +123 -0
  114. package/dist/i18n/locales/zh.js.map +1 -0
  115. package/dist/index.d.ts +168 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +275 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/router/index.d.ts +89 -0
  120. package/dist/router/index.d.ts.map +1 -0
  121. package/dist/router/index.js +292 -0
  122. package/dist/router/index.js.map +1 -0
  123. package/dist/router/providers.d.ts +48 -0
  124. package/dist/router/providers.d.ts.map +1 -0
  125. package/dist/router/providers.js +733 -0
  126. package/dist/router/providers.js.map +1 -0
  127. package/dist/runtime/executor.d.ts +96 -0
  128. package/dist/runtime/executor.d.ts.map +1 -0
  129. package/dist/runtime/executor.js +389 -0
  130. package/dist/runtime/executor.js.map +1 -0
  131. package/dist/sandbox/index.d.ts +52 -0
  132. package/dist/sandbox/index.d.ts.map +1 -0
  133. package/dist/sandbox/index.js +248 -0
  134. package/dist/sandbox/index.js.map +1 -0
  135. package/dist/security/skillguard.d.ts +25 -0
  136. package/dist/security/skillguard.d.ts.map +1 -0
  137. package/dist/security/skillguard.js +137 -0
  138. package/dist/security/skillguard.js.map +1 -0
  139. package/dist/tools/index.d.ts +55 -0
  140. package/dist/tools/index.d.ts.map +1 -0
  141. package/dist/tools/index.js +276 -0
  142. package/dist/tools/index.js.map +1 -0
  143. package/dist/tools/web-engine.d.ts +158 -0
  144. package/dist/tools/web-engine.d.ts.map +1 -0
  145. package/dist/tools/web-engine.js +802 -0
  146. package/dist/tools/web-engine.js.map +1 -0
  147. package/dist/tools/web-tools.d.ts +173 -0
  148. package/dist/tools/web-tools.d.ts.map +1 -0
  149. package/dist/tools/web-tools.js +251 -0
  150. package/dist/tools/web-tools.js.map +1 -0
  151. package/dist/utils/errors.d.ts +44 -0
  152. package/dist/utils/errors.d.ts.map +1 -0
  153. package/dist/utils/errors.js +130 -0
  154. package/dist/utils/errors.js.map +1 -0
  155. package/dist/utils/logger.d.ts +28 -0
  156. package/dist/utils/logger.d.ts.map +1 -0
  157. package/dist/utils/logger.js +121 -0
  158. package/dist/utils/logger.js.map +1 -0
  159. package/examples/basic-usage.ts +276 -0
  160. package/examples/code-reviewer.skill.md +83 -0
  161. package/examples/creative-writer.skill.md +80 -0
  162. package/examples/data-analyzer.skill.md +61 -0
  163. package/examples/hello-world.skill.md +36 -0
  164. package/examples/sample-skill.md +156 -0
  165. package/examples/summarizer.skill.md +62 -0
  166. package/examples/translator.skill.md +45 -0
  167. package/package.json +110 -0
@@ -0,0 +1,276 @@
1
+ import { z } from 'zod';
2
+ import { Logger } from '../utils/logger.js';
3
+ import { ToolError } from '../utils/errors.js';
4
+ import { createWebTools } from './web-tools.js';
5
+ export class ToolRegistry {
6
+ constructor() {
7
+ this.tools = new Map();
8
+ this.webToolsRegistered = false;
9
+ this.logger = new Logger({ level: 'warn' });
10
+ this.registerBuiltins();
11
+ this.registerNativeWebTools();
12
+ }
13
+ /**
14
+ * Register all 5 native web intelligence tools as first-class built-ins.
15
+ * No API keys required — all engines work out of the box.
16
+ *
17
+ * Tools registered:
18
+ * web_search — DuckDuckGo + Google + SearXNG search
19
+ * web_extract — Content-density extraction from any URL
20
+ * web_crawl — BFS crawler with depth control
21
+ * web_research — Multi-round search+extract+synthesis
22
+ * web_map — Sitemap.xml + link discovery
23
+ */
24
+ registerNativeWebTools() {
25
+ try {
26
+ const webTools = createWebTools();
27
+ for (const tool of webTools) {
28
+ this.tools.set(tool.name, tool);
29
+ }
30
+ this.webToolsRegistered = true;
31
+ this.logger.debug(`Native web tools registered: ${webTools.map(t => t.name).join(', ')}`);
32
+ }
33
+ catch (err) {
34
+ this.logger.warn(`Failed to register native web tools: ${err}`);
35
+ }
36
+ }
37
+ /** Check if native web intelligence tools are active */
38
+ isWebIntelligenceActive() {
39
+ return this.webToolsRegistered;
40
+ }
41
+ /** Register a SkillTool instance directly (used by plugins, custom tools, etc.) */
42
+ register(tool) {
43
+ this.tools.set(tool.name, tool);
44
+ }
45
+ registerBuiltins() {
46
+ // file_read tool
47
+ this.registerTool('file_read', async (input) => {
48
+ const validated = z.object({ path: z.string() }).parse(input);
49
+ try {
50
+ const fs = await import('fs/promises');
51
+ const content = await fs.readFile(validated.path, 'utf-8');
52
+ return { path: validated.path, content, size: content.length };
53
+ }
54
+ catch (error) {
55
+ throw new ToolError(`Failed to read file: ${String(error)}`);
56
+ }
57
+ }, z.object({
58
+ path: z.string().describe('File path to read'),
59
+ }));
60
+ // file_write tool
61
+ this.registerTool('file_write', async (input) => {
62
+ const validated = z
63
+ .object({
64
+ path: z.string(),
65
+ content: z.string(),
66
+ append: z.boolean().optional(),
67
+ })
68
+ .parse(input);
69
+ try {
70
+ const fs = await import('fs/promises');
71
+ if (validated.append) {
72
+ await fs.appendFile(validated.path, validated.content);
73
+ }
74
+ else {
75
+ await fs.writeFile(validated.path, validated.content, 'utf-8');
76
+ }
77
+ return {
78
+ path: validated.path,
79
+ status: 'success',
80
+ bytesWritten: validated.content.length,
81
+ };
82
+ }
83
+ catch (error) {
84
+ throw new ToolError(`Failed to write file: ${String(error)}`);
85
+ }
86
+ }, z.object({
87
+ path: z.string().describe('File path to write'),
88
+ content: z.string().describe('Content to write'),
89
+ append: z.boolean().optional().describe('Append instead of overwrite'),
90
+ }));
91
+ // shell_exec tool
92
+ this.registerTool('shell_exec', async (input) => {
93
+ const validated = z.object({ command: z.string(), timeout: z.number().optional() }).parse(input);
94
+ try {
95
+ const { exec } = await import('child_process');
96
+ const { promisify } = await import('util');
97
+ const execAsync = promisify(exec);
98
+ const timeout = validated.timeout || 30000;
99
+ const { stdout, stderr } = await execAsync(validated.command, { timeout });
100
+ return {
101
+ command: validated.command,
102
+ exitCode: 0,
103
+ stdout: stdout.trim(),
104
+ stderr: stderr.trim(),
105
+ };
106
+ }
107
+ catch (error) {
108
+ const err = error;
109
+ throw new ToolError(`Command execution failed: ${err.message}`);
110
+ }
111
+ }, z.object({
112
+ command: z.string().describe('Shell command to execute'),
113
+ timeout: z.number().optional().describe('Timeout in milliseconds (default: 30000)'),
114
+ }));
115
+ // http_request tool
116
+ this.registerTool('http_request', async (input) => {
117
+ const validated = z
118
+ .object({
119
+ method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH']).optional(),
120
+ url: z.string().url(),
121
+ headers: z.record(z.string()).optional(),
122
+ body: z.string().optional(),
123
+ timeout: z.number().optional(),
124
+ })
125
+ .parse(input);
126
+ try {
127
+ const fetch = (await import('node-fetch')).default;
128
+ const controller = new AbortController();
129
+ const timeout = validated.timeout || 30000;
130
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
131
+ const response = await fetch(validated.url, {
132
+ method: validated.method || 'GET',
133
+ headers: validated.headers || {},
134
+ body: validated.body,
135
+ signal: controller.signal,
136
+ });
137
+ clearTimeout(timeoutId);
138
+ const contentType = response.headers.get('content-type');
139
+ let data;
140
+ if (contentType?.includes('application/json')) {
141
+ data = await response.json();
142
+ }
143
+ else {
144
+ data = await response.text();
145
+ }
146
+ return {
147
+ status: response.status,
148
+ statusText: response.statusText,
149
+ headers: Object.fromEntries(response.headers),
150
+ data,
151
+ };
152
+ }
153
+ catch (error) {
154
+ throw new ToolError(`HTTP request failed: ${String(error)}`);
155
+ }
156
+ }, z.object({
157
+ url: z.string().url().describe('URL to request'),
158
+ method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH']).optional().describe('HTTP method'),
159
+ headers: z.record(z.string()).optional().describe('Request headers'),
160
+ body: z.string().optional().describe('Request body'),
161
+ timeout: z.number().optional().describe('Timeout in milliseconds'),
162
+ }));
163
+ }
164
+ registerTool(name, handler, schema) {
165
+ const tool = {
166
+ name,
167
+ description: `${name} tool`,
168
+ schema,
169
+ execute: handler,
170
+ };
171
+ this.tools.set(name, tool);
172
+ }
173
+ getTool(name) {
174
+ return this.tools.get(name);
175
+ }
176
+ async executeTool(request) {
177
+ const startTime = Date.now();
178
+ const tool = this.getTool(request.name);
179
+ if (!tool) {
180
+ throw new ToolError(`Tool not found: ${request.name}`);
181
+ }
182
+ try {
183
+ // Validate input
184
+ const validatedInput = tool.schema.parse(request.input);
185
+ // Execute tool
186
+ const output = await tool.execute(validatedInput);
187
+ const duration = Date.now() - startTime;
188
+ return {
189
+ toolName: request.name,
190
+ input: request.input,
191
+ output,
192
+ duration,
193
+ success: true,
194
+ };
195
+ }
196
+ catch (error) {
197
+ const duration = Date.now() - startTime;
198
+ return {
199
+ toolName: request.name,
200
+ input: request.input,
201
+ output: null,
202
+ duration,
203
+ success: false,
204
+ error: error instanceof Error ? error.message : String(error),
205
+ };
206
+ }
207
+ }
208
+ listTools() {
209
+ return Array.from(this.tools.values()).map((tool) => {
210
+ const zodToJsonSchema = (schema) => {
211
+ const descriptions = {};
212
+ if (schema instanceof z.ZodObject) {
213
+ const shape = schema.shape;
214
+ for (const [key, value] of Object.entries(shape)) {
215
+ if (value instanceof z.ZodType) {
216
+ descriptions[key] = value.description || key;
217
+ }
218
+ }
219
+ }
220
+ return descriptions;
221
+ };
222
+ return {
223
+ name: tool.name,
224
+ description: tool.description,
225
+ schema: zodToJsonSchema(tool.schema),
226
+ };
227
+ });
228
+ }
229
+ getToolsForVercelAI() {
230
+ const toolsObj = {};
231
+ for (const [name, tool] of this.tools.entries()) {
232
+ toolsObj[name] = {
233
+ description: tool.description,
234
+ parameters: this.zodSchemaToJsonSchema(tool.schema),
235
+ };
236
+ }
237
+ return toolsObj;
238
+ }
239
+ zodSchemaToJsonSchema(schema) {
240
+ // Simplified conversion - production would use zod-to-json-schema library
241
+ if (schema instanceof z.ZodObject) {
242
+ const shape = schema.shape;
243
+ const properties = {};
244
+ const required = [];
245
+ for (const [key, value] of Object.entries(shape)) {
246
+ const zodType = value;
247
+ properties[key] = {
248
+ type: this.mapZodToJsonType(zodType),
249
+ description: zodType.description || key,
250
+ };
251
+ if (!zodType.isOptional?.()) {
252
+ required.push(key);
253
+ }
254
+ }
255
+ return {
256
+ type: 'object',
257
+ properties,
258
+ required: required.length > 0 ? required : undefined,
259
+ };
260
+ }
261
+ return { type: 'object' };
262
+ }
263
+ mapZodToJsonType(zodType) {
264
+ const typeName = zodType.constructor.name;
265
+ const typeMap = {
266
+ ZodString: 'string',
267
+ ZodNumber: 'number',
268
+ ZodBoolean: 'boolean',
269
+ ZodArray: 'array',
270
+ ZodObject: 'object',
271
+ ZodEnum: 'string',
272
+ };
273
+ return typeMap[typeName] || 'any';
274
+ }
275
+ }
276
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * SkillKit Native Web Intelligence Engine
3
+ * =========================================
4
+ * Zero external API dependencies. No Tavily, no SerpAPI, no paid keys.
5
+ * SkillKit builds its own web intelligence from scratch.
6
+ *
7
+ * 5 capabilities (inspired by Tavily's architecture, built natively):
8
+ * 1. SEARCH — Multi-source web search (DuckDuckGo HTML + Google fallback + SearXNG)
9
+ * 2. EXTRACT — Content extraction from any URL (Readability-style + metadata)
10
+ * 3. CRAWL — Deep website crawling with link following and depth control
11
+ * 4. RESEARCH — Multi-step deep research with AI-powered synthesis
12
+ * 5. MAP — Site URL structure discovery (sitemap.xml + link harvesting)
13
+ *
14
+ * How it works WITHOUT paid APIs:
15
+ * - Search: Scrapes DuckDuckGo HTML (no API key needed), parses results
16
+ * - Extract: Fetches raw HTML, strips boilerplate via content-density algorithm
17
+ * - Crawl: BFS link-follower with domain scoping, depth limits, robots.txt respect
18
+ * - Research: Orchestrates search → extract → synthesize in multiple rounds
19
+ * - Map: Parses sitemap.xml + discovers links via crawl (URL-only mode)
20
+ *
21
+ * @module web-engine
22
+ */
23
+ export interface SearchResult {
24
+ title: string;
25
+ url: string;
26
+ snippet: string;
27
+ source: string;
28
+ position: number;
29
+ }
30
+ export interface SearchResponse {
31
+ query: string;
32
+ results: SearchResult[];
33
+ total_results: number;
34
+ search_engine: string;
35
+ response_time_ms: number;
36
+ }
37
+ export interface ExtractedContent {
38
+ url: string;
39
+ title: string;
40
+ description: string;
41
+ content: string;
42
+ raw_html?: string;
43
+ language?: string;
44
+ published_date?: string;
45
+ author?: string;
46
+ word_count: number;
47
+ links: string[];
48
+ images: string[];
49
+ metadata: Record<string, string>;
50
+ }
51
+ export interface ExtractResponse {
52
+ results: ExtractedContent[];
53
+ failed: Array<{
54
+ url: string;
55
+ error: string;
56
+ }>;
57
+ response_time_ms: number;
58
+ }
59
+ export interface CrawlPage {
60
+ url: string;
61
+ title: string;
62
+ content: string;
63
+ depth: number;
64
+ links_found: number;
65
+ word_count: number;
66
+ }
67
+ export interface CrawlResponse {
68
+ base_url: string;
69
+ pages: CrawlPage[];
70
+ total_pages: number;
71
+ total_links_discovered: number;
72
+ max_depth_reached: number;
73
+ response_time_ms: number;
74
+ }
75
+ export interface ResearchSource {
76
+ title: string;
77
+ url: string;
78
+ snippet: string;
79
+ relevance_score: number;
80
+ }
81
+ export interface ResearchResponse {
82
+ query: string;
83
+ summary: string;
84
+ key_findings: string[];
85
+ sources: ResearchSource[];
86
+ search_rounds: number;
87
+ total_pages_analyzed: number;
88
+ response_time_ms: number;
89
+ }
90
+ export interface MapResponse {
91
+ base_url: string;
92
+ urls: string[];
93
+ total_urls: number;
94
+ sitemap_found: boolean;
95
+ response_time_ms: number;
96
+ }
97
+ /**
98
+ * Native web search using DuckDuckGo HTML scraping.
99
+ * No API key needed. Free. Unlimited.
100
+ *
101
+ * Fallback order: DuckDuckGo HTML → Google HTML (if DDG blocked) → SearXNG (if configured)
102
+ */
103
+ export declare function nativeSearch(query: string, options?: {
104
+ max_results?: number;
105
+ region?: string;
106
+ time_range?: string;
107
+ safe_search?: boolean;
108
+ searxng_url?: string;
109
+ }): Promise<SearchResponse>;
110
+ /**
111
+ * Extract clean, structured content from one or more URLs.
112
+ * Native implementation — no Tavily, no Readability.js dependency.
113
+ * Uses content-density algorithm + metadata extraction.
114
+ */
115
+ export declare function nativeExtract(urls: string | string[], options?: {
116
+ include_raw_html?: boolean;
117
+ include_links?: boolean;
118
+ include_images?: boolean;
119
+ timeout?: number;
120
+ }): Promise<ExtractResponse>;
121
+ /**
122
+ * Native BFS web crawler.
123
+ * Follows links from a starting URL, collecting content from discovered pages.
124
+ * Respects: domain scope, depth limits, URL patterns, page limits.
125
+ */
126
+ export declare function nativeCrawl(startUrl: string, options?: {
127
+ max_depth?: number;
128
+ max_pages?: number;
129
+ include_patterns?: string[];
130
+ exclude_patterns?: string[];
131
+ same_domain_only?: boolean;
132
+ respect_robots?: boolean;
133
+ }): Promise<CrawlResponse>;
134
+ /**
135
+ * Multi-step deep research engine.
136
+ * Performs multiple rounds of: search → extract top results → identify gaps → refine search.
137
+ *
138
+ * If a `synthesize` callback is provided (AI model function), it generates a cohesive summary.
139
+ * Without it, returns structured findings from multiple search rounds.
140
+ */
141
+ export declare function nativeResearch(query: string, options?: {
142
+ max_rounds?: number;
143
+ max_sources?: number;
144
+ depth?: 'basic' | 'advanced';
145
+ synthesize?: (findings: string[], query: string) => Promise<string>;
146
+ searxng_url?: string;
147
+ }): Promise<ResearchResponse>;
148
+ /**
149
+ * Map a website's complete URL structure.
150
+ * First tries sitemap.xml, then falls back to link-discovery crawl (URL-only mode).
151
+ * Fast — doesn't extract content, just discovers URLs.
152
+ */
153
+ export declare function nativeMap(url: string, options?: {
154
+ max_urls?: number;
155
+ max_depth?: number;
156
+ include_subdomains?: boolean;
157
+ }): Promise<MapResponse>;
158
+ //# sourceMappingURL=web-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-engine.d.ts","sourceRoot":"","sources":["../../src/tools/web-engine.ts"],"names":[],"mappings":"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"}