webcontext-ai 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 +583 -0
- package/dist/browser/manager.d.ts +47 -0
- package/dist/browser/manager.d.ts.map +1 -0
- package/dist/browser/manager.js +215 -0
- package/dist/browser/manager.js.map +1 -0
- package/dist/cache/cache.d.ts +22 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +150 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/chunking/chunker.d.ts +26 -0
- package/dist/chunking/chunker.d.ts.map +1 -0
- package/dist/chunking/chunker.js +208 -0
- package/dist/chunking/chunker.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 +406 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/pipeline.d.ts +35 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +476 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/stream.d.ts +48 -0
- package/dist/core/stream.d.ts.map +1 -0
- package/dist/core/stream.js +72 -0
- package/dist/core/stream.js.map +1 -0
- package/dist/core/types.d.ts +259 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -0
- package/dist/export/index.d.ts +3 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +8 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/templates.d.ts +25 -0
- package/dist/export/templates.d.ts.map +1 -0
- package/dist/export/templates.js +76 -0
- package/dist/export/templates.js.map +1 -0
- package/dist/export/vectordb.d.ts +21 -0
- package/dist/export/vectordb.d.ts.map +1 -0
- package/dist/export/vectordb.js +101 -0
- package/dist/export/vectordb.js.map +1 -0
- package/dist/extractors/content.d.ts +23 -0
- package/dist/extractors/content.d.ts.map +1 -0
- package/dist/extractors/content.js +328 -0
- package/dist/extractors/content.js.map +1 -0
- package/dist/extractors/github.d.ts +19 -0
- package/dist/extractors/github.d.ts.map +1 -0
- package/dist/extractors/github.js +150 -0
- package/dist/extractors/github.js.map +1 -0
- package/dist/extractors/images.d.ts +20 -0
- package/dist/extractors/images.d.ts.map +1 -0
- package/dist/extractors/images.js +73 -0
- package/dist/extractors/images.js.map +1 -0
- package/dist/extractors/pdf.d.ts +11 -0
- package/dist/extractors/pdf.d.ts.map +1 -0
- package/dist/extractors/pdf.js +107 -0
- package/dist/extractors/pdf.js.map +1 -0
- package/dist/extractors/screenshot.d.ts +21 -0
- package/dist/extractors/screenshot.d.ts.map +1 -0
- package/dist/extractors/screenshot.js +85 -0
- package/dist/extractors/screenshot.js.map +1 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +108 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/sdk/client.d.ts +48 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/client.js +120 -0
- package/dist/sdk/client.js.map +1 -0
- package/dist/sdk/mcp.d.ts +12 -0
- package/dist/sdk/mcp.d.ts.map +1 -0
- package/dist/sdk/mcp.js +146 -0
- package/dist/sdk/mcp.js.map +1 -0
- package/dist/sdk/server.d.ts +5 -0
- package/dist/sdk/server.d.ts.map +1 -0
- package/dist/sdk/server.js +158 -0
- package/dist/sdk/server.js.map +1 -0
- package/dist/search/vector.d.ts +26 -0
- package/dist/search/vector.d.ts.map +1 -0
- package/dist/search/vector.js +142 -0
- package/dist/search/vector.js.map +1 -0
- package/dist/transformers/markdown.d.ts +21 -0
- package/dist/transformers/markdown.d.ts.map +1 -0
- package/dist/transformers/markdown.js +242 -0
- package/dist/transformers/markdown.js.map +1 -0
- package/dist/utils/dedup.d.ts +20 -0
- package/dist/utils/dedup.d.ts.map +1 -0
- package/dist/utils/dedup.js +61 -0
- package/dist/utils/dedup.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +15 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/metrics.d.ts +16 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +28 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/scheduler.d.ts +19 -0
- package/dist/utils/scheduler.d.ts.map +1 -0
- package/dist/utils/scheduler.js +63 -0
- package/dist/utils/scheduler.js.map +1 -0
- package/dist/utils/sitemap.d.ts +17 -0
- package/dist/utils/sitemap.d.ts.map +1 -0
- package/dist/utils/sitemap.js +118 -0
- package/dist/utils/sitemap.js.map +1 -0
- package/dist/utils/validation.d.ts +142 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +35 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/webhook.d.ts +21 -0
- package/dist/utils/webhook.d.ts.map +1 -0
- package/dist/utils/webhook.js +108 -0
- package/dist/utils/webhook.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CrawlOptions, CrawlResult, ContentChunk, SearchResult, WebContextConfig, MetricsData } from '../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* WebContext SDK Client - connects to a running WebContext server or runs locally.
|
|
4
|
+
*/
|
|
5
|
+
export declare class WebContextClient {
|
|
6
|
+
private baseUrl?;
|
|
7
|
+
private local?;
|
|
8
|
+
constructor(options?: {
|
|
9
|
+
serverUrl?: string;
|
|
10
|
+
config?: WebContextConfig;
|
|
11
|
+
});
|
|
12
|
+
extract(url: string, options?: Partial<CrawlOptions>): Promise<CrawlResult>;
|
|
13
|
+
crawl(url: string, options?: Partial<CrawlOptions>): Promise<CrawlResult>;
|
|
14
|
+
toMarkdown(url: string): Promise<string>;
|
|
15
|
+
toChunks(url: string, options?: Partial<CrawlOptions>): Promise<ContentChunk[]>;
|
|
16
|
+
toContext(url: string, maxTokens?: number): Promise<string>;
|
|
17
|
+
search(url: string, query: string, topK?: number): Promise<SearchResult[]>;
|
|
18
|
+
getMetrics(): Promise<MetricsData>;
|
|
19
|
+
scheduleJob(id: string, config: {
|
|
20
|
+
cron: string;
|
|
21
|
+
urls: string[];
|
|
22
|
+
options?: Partial<CrawlOptions>;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
id: string;
|
|
25
|
+
status: string;
|
|
26
|
+
}>;
|
|
27
|
+
cancelJob(id: string): Promise<{
|
|
28
|
+
id: string;
|
|
29
|
+
status: string;
|
|
30
|
+
}>;
|
|
31
|
+
private post;
|
|
32
|
+
private get;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* LangChain-compatible document loader.
|
|
36
|
+
*/
|
|
37
|
+
export declare class WebContextLoader {
|
|
38
|
+
private client;
|
|
39
|
+
constructor(options?: {
|
|
40
|
+
serverUrl?: string;
|
|
41
|
+
config?: WebContextConfig;
|
|
42
|
+
});
|
|
43
|
+
load(url: string, options?: Partial<CrawlOptions>): Promise<Array<{
|
|
44
|
+
pageContent: string;
|
|
45
|
+
metadata: Record<string, any>;
|
|
46
|
+
}>>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKrH;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,KAAK,CAAC,CAAa;gBAEf,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAO;IAQrE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAM/E,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAM7E,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOxC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOnF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOrE,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAKlC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAK3I,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;YAMtD,IAAI;YAaJ,GAAG;CAKlB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAmB;gBAErB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAO;IAIrE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;CAcrI"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebContextLoader = exports.WebContextClient = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const urlSchema = zod_1.z.string().url();
|
|
7
|
+
/**
|
|
8
|
+
* WebContext SDK Client - connects to a running WebContext server or runs locally.
|
|
9
|
+
*/
|
|
10
|
+
class WebContextClient {
|
|
11
|
+
baseUrl;
|
|
12
|
+
local;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
if (options.serverUrl) {
|
|
15
|
+
this.baseUrl = options.serverUrl.replace(/\/$/, '');
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.local = new index_1.WebContext(options.config);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async extract(url, options = {}) {
|
|
22
|
+
urlSchema.parse(url);
|
|
23
|
+
if (this.local)
|
|
24
|
+
return this.local.extract(url, options);
|
|
25
|
+
return this.post('/extract', { url, options });
|
|
26
|
+
}
|
|
27
|
+
async crawl(url, options = {}) {
|
|
28
|
+
urlSchema.parse(url);
|
|
29
|
+
if (this.local)
|
|
30
|
+
return this.local.crawlDocs(url, options);
|
|
31
|
+
return this.post('/crawl', { url, options });
|
|
32
|
+
}
|
|
33
|
+
async toMarkdown(url) {
|
|
34
|
+
urlSchema.parse(url);
|
|
35
|
+
if (this.local)
|
|
36
|
+
return this.local.toMarkdown(url);
|
|
37
|
+
const res = await this.post('/extract', { url });
|
|
38
|
+
return res.markdown;
|
|
39
|
+
}
|
|
40
|
+
async toChunks(url, options = {}) {
|
|
41
|
+
urlSchema.parse(url);
|
|
42
|
+
if (this.local)
|
|
43
|
+
return this.local.toChunks(url, options);
|
|
44
|
+
const res = await this.post('/chunks', { url, options });
|
|
45
|
+
return res.chunks;
|
|
46
|
+
}
|
|
47
|
+
async toContext(url, maxTokens = 8000) {
|
|
48
|
+
urlSchema.parse(url);
|
|
49
|
+
if (this.local)
|
|
50
|
+
return this.local.toContext(url, { maxTokens });
|
|
51
|
+
const res = await this.post('/context', { url, maxTokens });
|
|
52
|
+
return res.context;
|
|
53
|
+
}
|
|
54
|
+
async search(url, query, topK = 5) {
|
|
55
|
+
urlSchema.parse(url);
|
|
56
|
+
if (this.local)
|
|
57
|
+
return this.local.search(url, query, topK);
|
|
58
|
+
const res = await this.post('/search', { url, query, topK });
|
|
59
|
+
return res.results;
|
|
60
|
+
}
|
|
61
|
+
async getMetrics() {
|
|
62
|
+
if (!this.baseUrl)
|
|
63
|
+
throw new Error('Metrics only available in remote mode');
|
|
64
|
+
return this.get('/metrics');
|
|
65
|
+
}
|
|
66
|
+
async scheduleJob(id, config) {
|
|
67
|
+
config.urls.forEach(u => urlSchema.parse(u));
|
|
68
|
+
return this.post('/schedule', { id, ...config });
|
|
69
|
+
}
|
|
70
|
+
async cancelJob(id) {
|
|
71
|
+
const response = await fetch(`${this.baseUrl}/schedule/${id}`, { method: 'DELETE' });
|
|
72
|
+
if (!response.ok)
|
|
73
|
+
throw new Error(`HTTP ${response.status}`);
|
|
74
|
+
return response.json();
|
|
75
|
+
}
|
|
76
|
+
async post(path, body) {
|
|
77
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: { 'Content-Type': 'application/json' },
|
|
80
|
+
body: JSON.stringify(body),
|
|
81
|
+
});
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
const err = await response.json().catch(() => ({ error: response.statusText }));
|
|
84
|
+
throw new Error(err.error || `HTTP ${response.status}`);
|
|
85
|
+
}
|
|
86
|
+
return response.json();
|
|
87
|
+
}
|
|
88
|
+
async get(path) {
|
|
89
|
+
const response = await fetch(`${this.baseUrl}${path}`);
|
|
90
|
+
if (!response.ok)
|
|
91
|
+
throw new Error(`HTTP ${response.status}`);
|
|
92
|
+
return response.json();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.WebContextClient = WebContextClient;
|
|
96
|
+
/**
|
|
97
|
+
* LangChain-compatible document loader.
|
|
98
|
+
*/
|
|
99
|
+
class WebContextLoader {
|
|
100
|
+
client;
|
|
101
|
+
constructor(options = {}) {
|
|
102
|
+
this.client = new WebContextClient(options);
|
|
103
|
+
}
|
|
104
|
+
async load(url, options = {}) {
|
|
105
|
+
const chunks = await this.client.toChunks(url, options);
|
|
106
|
+
return chunks.map(chunk => ({
|
|
107
|
+
pageContent: chunk.content,
|
|
108
|
+
metadata: {
|
|
109
|
+
source: chunk.metadata.sourceUrl,
|
|
110
|
+
title: chunk.metadata.title,
|
|
111
|
+
headingPath: chunk.metadata.headingPath,
|
|
112
|
+
chunkIndex: chunk.metadata.chunkIndex,
|
|
113
|
+
hasCode: chunk.metadata.hasCode,
|
|
114
|
+
language: chunk.metadata.language,
|
|
115
|
+
},
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.WebContextLoader = WebContextLoader;
|
|
120
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) Server for WebContext.
|
|
3
|
+
* Exposes web extraction as tools for AI agents.
|
|
4
|
+
*/
|
|
5
|
+
export interface MCPTool {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
inputSchema: Record<string, any>;
|
|
9
|
+
handler: (input: any) => Promise<any>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createMCPTools(config?: any): MCPTool[];
|
|
12
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/sdk/mcp.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACvC;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,EAAE,CA4ItD"}
|
package/dist/sdk/mcp.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMCPTools = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
function createMCPTools(config) {
|
|
6
|
+
const wc = new index_1.WebContext(config);
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
name: 'webcontext_extract',
|
|
10
|
+
description: 'Extract clean content from a web URL. Returns markdown with code blocks preserved.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {
|
|
14
|
+
url: { type: 'string', description: 'URL to extract content from' },
|
|
15
|
+
focus: { type: 'string', enum: ['full', 'article', 'code', 'api', 'readme'], description: 'Content focus mode' },
|
|
16
|
+
maxTokens: { type: 'number', description: 'Maximum tokens in output' },
|
|
17
|
+
},
|
|
18
|
+
required: ['url'],
|
|
19
|
+
},
|
|
20
|
+
handler: async (input) => {
|
|
21
|
+
const context = await wc.toContext(input.url, {
|
|
22
|
+
focusMode: input.focus || 'full',
|
|
23
|
+
maxTokens: input.maxTokens,
|
|
24
|
+
});
|
|
25
|
+
return { content: context };
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'webcontext_crawl',
|
|
30
|
+
description: 'Crawl a documentation site and return structured content.',
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: {
|
|
34
|
+
url: { type: 'string', description: 'Base URL to crawl' },
|
|
35
|
+
depth: { type: 'number', description: 'Crawl depth (default: 2)' },
|
|
36
|
+
maxPages: { type: 'number', description: 'Max pages (default: 20)' },
|
|
37
|
+
},
|
|
38
|
+
required: ['url'],
|
|
39
|
+
},
|
|
40
|
+
handler: async (input) => {
|
|
41
|
+
const result = await wc.crawlDocs(input.url, {
|
|
42
|
+
depth: input.depth ?? 2,
|
|
43
|
+
maxPages: input.maxPages ?? 20,
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
pages: result.pages.map(p => ({ title: p.title, url: p.url, markdown: p.markdown.slice(0, 2000) })),
|
|
47
|
+
stats: result.stats,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'webcontext_search',
|
|
53
|
+
description: 'Extract content from a URL and perform semantic search for specific information.',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
url: { type: 'string', description: 'URL to search within' },
|
|
58
|
+
query: { type: 'string', description: 'Search query to find relevant sections' },
|
|
59
|
+
topK: { type: 'number', description: 'Number of results (default: 5)' },
|
|
60
|
+
},
|
|
61
|
+
required: ['url', 'query'],
|
|
62
|
+
},
|
|
63
|
+
handler: async (input) => {
|
|
64
|
+
const results = await wc.search(input.url, input.query, input.topK ?? 5);
|
|
65
|
+
return { results: results.map(r => ({ content: r.chunk.content, score: r.score, metadata: r.chunk.metadata })) };
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'webcontext_chunk',
|
|
70
|
+
description: 'Get RAG-ready content chunks from a URL.',
|
|
71
|
+
inputSchema: {
|
|
72
|
+
type: 'object',
|
|
73
|
+
properties: {
|
|
74
|
+
url: { type: 'string', description: 'URL to chunk' },
|
|
75
|
+
maxTokens: { type: 'number', description: 'Max tokens per chunk (default: 1500)' },
|
|
76
|
+
},
|
|
77
|
+
required: ['url'],
|
|
78
|
+
},
|
|
79
|
+
handler: async (input) => {
|
|
80
|
+
const chunks = await wc.toChunks(input.url);
|
|
81
|
+
return { chunks: chunks.map(c => ({ id: c.id, content: c.content, tokens: c.tokens, metadata: c.metadata })), count: chunks.length };
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'webcontext_summarize',
|
|
86
|
+
description: 'Get an extractive summary of a web page.',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
url: { type: 'string', description: 'URL to summarize' },
|
|
91
|
+
},
|
|
92
|
+
required: ['url'],
|
|
93
|
+
},
|
|
94
|
+
handler: async (input) => {
|
|
95
|
+
const result = await wc.extract(input.url);
|
|
96
|
+
return {
|
|
97
|
+
title: result.pages[0]?.title,
|
|
98
|
+
summary: result.context.summary,
|
|
99
|
+
pageCount: result.stats.pagesProcessed,
|
|
100
|
+
totalTokens: result.stats.totalTokens,
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'webcontext_github',
|
|
106
|
+
description: 'Extract README and docs from a GitHub repository.',
|
|
107
|
+
inputSchema: {
|
|
108
|
+
type: 'object',
|
|
109
|
+
properties: {
|
|
110
|
+
url: { type: 'string', description: 'GitHub repository URL (e.g., https://github.com/user/repo)' },
|
|
111
|
+
includeDocs: { type: 'boolean', description: 'Also extract /docs folder (default: true)' },
|
|
112
|
+
},
|
|
113
|
+
required: ['url'],
|
|
114
|
+
},
|
|
115
|
+
handler: async (input) => {
|
|
116
|
+
const result = await wc.extractGitHub(input.url, { depth: input.includeDocs !== false ? 1 : 0 });
|
|
117
|
+
return {
|
|
118
|
+
pages: result.pages.map(p => ({ title: p.title, url: p.url, markdown: p.markdown.slice(0, 3000) })),
|
|
119
|
+
stats: result.stats,
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: 'webcontext_pdf',
|
|
125
|
+
description: 'Extract text content from a PDF file (URL or local path).',
|
|
126
|
+
inputSchema: {
|
|
127
|
+
type: 'object',
|
|
128
|
+
properties: {
|
|
129
|
+
source: { type: 'string', description: 'PDF URL or local file path' },
|
|
130
|
+
},
|
|
131
|
+
required: ['source'],
|
|
132
|
+
},
|
|
133
|
+
handler: async (input) => {
|
|
134
|
+
const result = await wc.extractPdf(input.source);
|
|
135
|
+
return {
|
|
136
|
+
title: result.pages[0]?.title,
|
|
137
|
+
markdown: result.pages[0]?.markdown.slice(0, 5000),
|
|
138
|
+
chunks: result.context.chunks.length,
|
|
139
|
+
totalTokens: result.stats.totalTokens,
|
|
140
|
+
};
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
exports.createMCPTools = createMCPTools;
|
|
146
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/sdk/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/sdk/server.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAa,GAAG,IAAI,CAkIrD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.startServer = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const cors_1 = __importDefault(require("cors"));
|
|
9
|
+
const index_1 = require("../index");
|
|
10
|
+
const metrics_1 = require("../utils/metrics");
|
|
11
|
+
const scheduler_1 = require("../utils/scheduler");
|
|
12
|
+
const vector_1 = require("../search/vector");
|
|
13
|
+
const validation_1 = require("../utils/validation");
|
|
14
|
+
/**
|
|
15
|
+
* REST API server for WebContext.
|
|
16
|
+
*/
|
|
17
|
+
function startServer(port = 3456) {
|
|
18
|
+
const app = (0, express_1.default)();
|
|
19
|
+
app.use((0, cors_1.default)());
|
|
20
|
+
app.use(express_1.default.json());
|
|
21
|
+
const wc = new index_1.WebContext({ metrics: true });
|
|
22
|
+
const metrics = new metrics_1.MetricsCollector();
|
|
23
|
+
const scheduler = new scheduler_1.CrawlScheduler();
|
|
24
|
+
const vector = new vector_1.VectorSearch();
|
|
25
|
+
// Request logging
|
|
26
|
+
app.use((req, res, next) => {
|
|
27
|
+
const start = Date.now();
|
|
28
|
+
res.on('finish', () => {
|
|
29
|
+
console.log(`${req.method} ${req.path} ${res.statusCode} ${Date.now() - start}ms`);
|
|
30
|
+
});
|
|
31
|
+
next();
|
|
32
|
+
});
|
|
33
|
+
app.get('/health', (_req, res) => {
|
|
34
|
+
res.json({ status: 'ok', version: '1.0.0' });
|
|
35
|
+
});
|
|
36
|
+
// Extract single URL
|
|
37
|
+
app.post('/extract', async (req, res, next) => {
|
|
38
|
+
try {
|
|
39
|
+
const { url, options = {} } = req.body;
|
|
40
|
+
if (!url)
|
|
41
|
+
return res.status(400).json({ error: 'url is required' });
|
|
42
|
+
(0, validation_1.validateUrl)(url);
|
|
43
|
+
const result = await wc.extract(url, options);
|
|
44
|
+
res.json({
|
|
45
|
+
markdown: result.pages.map(p => p.markdown).join('\n\n---\n\n'),
|
|
46
|
+
metadata: result.pages[0]?.metadata,
|
|
47
|
+
stats: result.stats,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
next(err);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Crawl documentation site
|
|
55
|
+
app.post('/crawl', async (req, res, next) => {
|
|
56
|
+
try {
|
|
57
|
+
const { url, options = {} } = req.body;
|
|
58
|
+
if (!url)
|
|
59
|
+
return res.status(400).json({ error: 'url is required' });
|
|
60
|
+
(0, validation_1.validateUrl)(url);
|
|
61
|
+
const result = await wc.crawlDocs(url, options);
|
|
62
|
+
res.json({ context: result.context, stats: result.stats });
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
next(err);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
// Generate LLM context
|
|
69
|
+
app.post('/context', async (req, res, next) => {
|
|
70
|
+
try {
|
|
71
|
+
const { url, maxTokens = 8000, focusMode = 'full' } = req.body;
|
|
72
|
+
if (!url)
|
|
73
|
+
return res.status(400).json({ error: 'url is required' });
|
|
74
|
+
(0, validation_1.validateUrl)(url);
|
|
75
|
+
const context = await wc.toContext(url, { focusMode, maxTokens });
|
|
76
|
+
res.json({ context, tokens: Math.ceil(context.length / 4) });
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
next(err);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// Get chunks for RAG
|
|
83
|
+
app.post('/chunks', async (req, res, next) => {
|
|
84
|
+
try {
|
|
85
|
+
const { url, options = {} } = req.body;
|
|
86
|
+
if (!url)
|
|
87
|
+
return res.status(400).json({ error: 'url is required' });
|
|
88
|
+
(0, validation_1.validateUrl)(url);
|
|
89
|
+
const chunks = await wc.toChunks(url, options);
|
|
90
|
+
res.json({ chunks, count: chunks.length, totalTokens: chunks.reduce((s, c) => s + c.tokens, 0) });
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
next(err);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// Semantic search
|
|
97
|
+
app.post('/search', async (req, res, next) => {
|
|
98
|
+
try {
|
|
99
|
+
const { url, query, topK = 5 } = req.body;
|
|
100
|
+
if (!url || !query)
|
|
101
|
+
return res.status(400).json({ error: 'url and query are required' });
|
|
102
|
+
(0, validation_1.validateUrl)(url);
|
|
103
|
+
const chunks = await wc.toChunks(url);
|
|
104
|
+
vector.index(chunks);
|
|
105
|
+
const results = vector.search(query, topK);
|
|
106
|
+
res.json({ results, count: results.length });
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
next(err);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
// Metrics
|
|
113
|
+
app.get('/metrics', (_req, res) => {
|
|
114
|
+
const wcMetrics = wc.getMetrics();
|
|
115
|
+
res.json(wcMetrics || metrics.getMetrics());
|
|
116
|
+
});
|
|
117
|
+
// Schedule crawl
|
|
118
|
+
app.post('/schedule', (req, res, next) => {
|
|
119
|
+
try {
|
|
120
|
+
const { id, cron, urls, options = {} } = req.body;
|
|
121
|
+
if (!id || !cron || !urls?.length) {
|
|
122
|
+
return res.status(400).json({ error: 'id, cron, and urls are required' });
|
|
123
|
+
}
|
|
124
|
+
urls.forEach((u) => (0, validation_1.validateUrl)(u));
|
|
125
|
+
scheduler.schedule(id, { cron, urls, options }, (url, opts) => wc.crawlDocs(url, opts));
|
|
126
|
+
res.json({ id, status: 'scheduled' });
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
next(err);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// Cancel scheduled job
|
|
133
|
+
app.delete('/schedule/:id', (req, res) => {
|
|
134
|
+
scheduler.cancel(req.params.id);
|
|
135
|
+
res.json({ id: req.params.id, status: 'cancelled' });
|
|
136
|
+
});
|
|
137
|
+
// List scheduled jobs
|
|
138
|
+
app.get('/schedule', (_req, res) => {
|
|
139
|
+
res.json({ jobs: scheduler.listJobs() });
|
|
140
|
+
});
|
|
141
|
+
// Error handling middleware
|
|
142
|
+
app.use((err, _req, res, _next) => {
|
|
143
|
+
const status = err.status || 500;
|
|
144
|
+
res.status(status).json({ error: err.message || 'Internal server error' });
|
|
145
|
+
});
|
|
146
|
+
app.listen(port, () => {
|
|
147
|
+
console.log(`🌐 WebContext API server running on http://localhost:${port}`);
|
|
148
|
+
console.log(` POST /extract - Extract content from URL`);
|
|
149
|
+
console.log(` POST /crawl - Crawl documentation site`);
|
|
150
|
+
console.log(` POST /context - Generate LLM-ready context`);
|
|
151
|
+
console.log(` POST /chunks - Get RAG-ready chunks`);
|
|
152
|
+
console.log(` POST /search - Semantic search within content`);
|
|
153
|
+
console.log(` GET /metrics - View metrics`);
|
|
154
|
+
console.log(` POST /schedule - Schedule recurring crawls`);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
exports.startServer = startServer;
|
|
158
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/sdk/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ContentChunk, SearchResult } from '../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* Simple in-memory vector search for content chunks.
|
|
4
|
+
* Uses TF-IDF based embeddings for local semantic search without external dependencies.
|
|
5
|
+
*/
|
|
6
|
+
export declare class VectorSearch {
|
|
7
|
+
private embeddings;
|
|
8
|
+
private vocabulary;
|
|
9
|
+
private idfScores;
|
|
10
|
+
private docFrequency;
|
|
11
|
+
/** Index chunks for search */
|
|
12
|
+
index(chunks: ContentChunk[]): void;
|
|
13
|
+
/** Search indexed chunks by query */
|
|
14
|
+
search(query: string, topK?: number): SearchResult[];
|
|
15
|
+
/** Add a single chunk to the index and recompute IDF from actual document frequencies */
|
|
16
|
+
addChunk(chunk: ContentChunk): void;
|
|
17
|
+
/** Clear the index */
|
|
18
|
+
clear(): void;
|
|
19
|
+
/** Get index size */
|
|
20
|
+
get size(): number;
|
|
21
|
+
private tokenize;
|
|
22
|
+
private computeTfIdf;
|
|
23
|
+
private cosineSimilarity;
|
|
24
|
+
private buildVocabulary;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/search/vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,YAAY,EAAmB,MAAM,eAAe,CAAC;AAmB3F;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,YAAY,CAAkC;IAEtD,8BAA8B;IAC9B,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAenC,qCAAqC;IACrC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,YAAY,EAAE;IAiBvD,yFAAyF;IACzF,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IA6BnC,sBAAsB;IACtB,KAAK,IAAI,IAAI;IAOb,qBAAqB;IACrB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,eAAe;CAgBxB"}
|