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.
- package/LICENSE +21 -0
- package/README.md +400 -0
- package/dist/channels/discord.d.ts +18 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +275 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/index.d.ts +67 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +127 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/slack.d.ts +20 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +296 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +20 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +223 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +25 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +187 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/cli/commands/badge.d.ts +11 -0
- package/dist/cli/commands/badge.d.ts.map +1 -0
- package/dist/cli/commands/badge.js +98 -0
- package/dist/cli/commands/badge.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +140 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +3 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +56 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +99 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +3 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +90 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +76 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +160 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +3 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +133 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +56 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +70 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config.d.ts +167 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +398 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/parser.d.ts +34 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +462 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/runtime.d.ts +68 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +560 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/types.d.ts +525 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +44 -0
- package/dist/core/types.js.map +1 -0
- package/dist/guard/index.d.ts +57 -0
- package/dist/guard/index.d.ts.map +1 -0
- package/dist/guard/index.js +238 -0
- package/dist/guard/index.js.map +1 -0
- package/dist/guard/patterns.d.ts +21 -0
- package/dist/guard/patterns.d.ts.map +1 -0
- package/dist/guard/patterns.js +797 -0
- package/dist/guard/patterns.js.map +1 -0
- package/dist/hub/index.d.ts +44 -0
- package/dist/hub/index.d.ts.map +1 -0
- package/dist/hub/index.js +144 -0
- package/dist/hub/index.js.map +1 -0
- package/dist/hub/registry.d.ts +52 -0
- package/dist/hub/registry.d.ts.map +1 -0
- package/dist/hub/registry.js +192 -0
- package/dist/hub/registry.js.map +1 -0
- package/dist/i18n/index.d.ts +19 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +92 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/en.d.ts +110 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +123 -0
- package/dist/i18n/locales/en.js.map +1 -0
- package/dist/i18n/locales/es.d.ts +110 -0
- package/dist/i18n/locales/es.d.ts.map +1 -0
- package/dist/i18n/locales/es.js +123 -0
- package/dist/i18n/locales/es.js.map +1 -0
- package/dist/i18n/locales/pt.d.ts +110 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -0
- package/dist/i18n/locales/pt.js +123 -0
- package/dist/i18n/locales/pt.js.map +1 -0
- package/dist/i18n/locales/zh.d.ts +110 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -0
- package/dist/i18n/locales/zh.js +123 -0
- package/dist/i18n/locales/zh.js.map +1 -0
- package/dist/index.d.ts +168 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +275 -0
- package/dist/index.js.map +1 -0
- package/dist/router/index.d.ts +89 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +292 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/providers.d.ts +48 -0
- package/dist/router/providers.d.ts.map +1 -0
- package/dist/router/providers.js +733 -0
- package/dist/router/providers.js.map +1 -0
- package/dist/runtime/executor.d.ts +96 -0
- package/dist/runtime/executor.d.ts.map +1 -0
- package/dist/runtime/executor.js +389 -0
- package/dist/runtime/executor.js.map +1 -0
- package/dist/sandbox/index.d.ts +52 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +248 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/security/skillguard.d.ts +25 -0
- package/dist/security/skillguard.d.ts.map +1 -0
- package/dist/security/skillguard.js +137 -0
- package/dist/security/skillguard.js.map +1 -0
- package/dist/tools/index.d.ts +55 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +276 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/web-engine.d.ts +158 -0
- package/dist/tools/web-engine.d.ts.map +1 -0
- package/dist/tools/web-engine.js +802 -0
- package/dist/tools/web-engine.js.map +1 -0
- package/dist/tools/web-tools.d.ts +173 -0
- package/dist/tools/web-tools.d.ts.map +1 -0
- package/dist/tools/web-tools.js +251 -0
- package/dist/tools/web-tools.js.map +1 -0
- package/dist/utils/errors.d.ts +44 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +130 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +28 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +121 -0
- package/dist/utils/logger.js.map +1 -0
- package/examples/basic-usage.ts +276 -0
- package/examples/code-reviewer.skill.md +83 -0
- package/examples/creative-writer.skill.md +80 -0
- package/examples/data-analyzer.skill.md +61 -0
- package/examples/hello-world.skill.md +36 -0
- package/examples/sample-skill.md +156 -0
- package/examples/summarizer.skill.md +62 -0
- package/examples/translator.skill.md +45 -0
- 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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"}
|