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.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +583 -0
  3. package/dist/browser/manager.d.ts +47 -0
  4. package/dist/browser/manager.d.ts.map +1 -0
  5. package/dist/browser/manager.js +215 -0
  6. package/dist/browser/manager.js.map +1 -0
  7. package/dist/cache/cache.d.ts +22 -0
  8. package/dist/cache/cache.d.ts.map +1 -0
  9. package/dist/cache/cache.js +150 -0
  10. package/dist/cache/cache.js.map +1 -0
  11. package/dist/chunking/chunker.d.ts +26 -0
  12. package/dist/chunking/chunker.d.ts.map +1 -0
  13. package/dist/chunking/chunker.js +208 -0
  14. package/dist/chunking/chunker.js.map +1 -0
  15. package/dist/cli/index.d.ts +3 -0
  16. package/dist/cli/index.d.ts.map +1 -0
  17. package/dist/cli/index.js +406 -0
  18. package/dist/cli/index.js.map +1 -0
  19. package/dist/core/pipeline.d.ts +35 -0
  20. package/dist/core/pipeline.d.ts.map +1 -0
  21. package/dist/core/pipeline.js +476 -0
  22. package/dist/core/pipeline.js.map +1 -0
  23. package/dist/core/stream.d.ts +48 -0
  24. package/dist/core/stream.d.ts.map +1 -0
  25. package/dist/core/stream.js +72 -0
  26. package/dist/core/stream.js.map +1 -0
  27. package/dist/core/types.d.ts +259 -0
  28. package/dist/core/types.d.ts.map +1 -0
  29. package/dist/core/types.js +4 -0
  30. package/dist/core/types.js.map +1 -0
  31. package/dist/export/index.d.ts +3 -0
  32. package/dist/export/index.d.ts.map +1 -0
  33. package/dist/export/index.js +8 -0
  34. package/dist/export/index.js.map +1 -0
  35. package/dist/export/templates.d.ts +25 -0
  36. package/dist/export/templates.d.ts.map +1 -0
  37. package/dist/export/templates.js +76 -0
  38. package/dist/export/templates.js.map +1 -0
  39. package/dist/export/vectordb.d.ts +21 -0
  40. package/dist/export/vectordb.d.ts.map +1 -0
  41. package/dist/export/vectordb.js +101 -0
  42. package/dist/export/vectordb.js.map +1 -0
  43. package/dist/extractors/content.d.ts +23 -0
  44. package/dist/extractors/content.d.ts.map +1 -0
  45. package/dist/extractors/content.js +328 -0
  46. package/dist/extractors/content.js.map +1 -0
  47. package/dist/extractors/github.d.ts +19 -0
  48. package/dist/extractors/github.d.ts.map +1 -0
  49. package/dist/extractors/github.js +150 -0
  50. package/dist/extractors/github.js.map +1 -0
  51. package/dist/extractors/images.d.ts +20 -0
  52. package/dist/extractors/images.d.ts.map +1 -0
  53. package/dist/extractors/images.js +73 -0
  54. package/dist/extractors/images.js.map +1 -0
  55. package/dist/extractors/pdf.d.ts +11 -0
  56. package/dist/extractors/pdf.d.ts.map +1 -0
  57. package/dist/extractors/pdf.js +107 -0
  58. package/dist/extractors/pdf.js.map +1 -0
  59. package/dist/extractors/screenshot.d.ts +21 -0
  60. package/dist/extractors/screenshot.d.ts.map +1 -0
  61. package/dist/extractors/screenshot.js +85 -0
  62. package/dist/extractors/screenshot.js.map +1 -0
  63. package/dist/index.d.ts +70 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +206 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/mcp-server.d.ts +3 -0
  68. package/dist/mcp-server.d.ts.map +1 -0
  69. package/dist/mcp-server.js +108 -0
  70. package/dist/mcp-server.js.map +1 -0
  71. package/dist/sdk/client.d.ts +48 -0
  72. package/dist/sdk/client.d.ts.map +1 -0
  73. package/dist/sdk/client.js +120 -0
  74. package/dist/sdk/client.js.map +1 -0
  75. package/dist/sdk/mcp.d.ts +12 -0
  76. package/dist/sdk/mcp.d.ts.map +1 -0
  77. package/dist/sdk/mcp.js +146 -0
  78. package/dist/sdk/mcp.js.map +1 -0
  79. package/dist/sdk/server.d.ts +5 -0
  80. package/dist/sdk/server.d.ts.map +1 -0
  81. package/dist/sdk/server.js +158 -0
  82. package/dist/sdk/server.js.map +1 -0
  83. package/dist/search/vector.d.ts +26 -0
  84. package/dist/search/vector.d.ts.map +1 -0
  85. package/dist/search/vector.js +142 -0
  86. package/dist/search/vector.js.map +1 -0
  87. package/dist/transformers/markdown.d.ts +21 -0
  88. package/dist/transformers/markdown.d.ts.map +1 -0
  89. package/dist/transformers/markdown.js +242 -0
  90. package/dist/transformers/markdown.js.map +1 -0
  91. package/dist/utils/dedup.d.ts +20 -0
  92. package/dist/utils/dedup.d.ts.map +1 -0
  93. package/dist/utils/dedup.js +61 -0
  94. package/dist/utils/dedup.js.map +1 -0
  95. package/dist/utils/index.d.ts +6 -0
  96. package/dist/utils/index.d.ts.map +1 -0
  97. package/dist/utils/index.js +15 -0
  98. package/dist/utils/index.js.map +1 -0
  99. package/dist/utils/metrics.d.ts +16 -0
  100. package/dist/utils/metrics.d.ts.map +1 -0
  101. package/dist/utils/metrics.js +28 -0
  102. package/dist/utils/metrics.js.map +1 -0
  103. package/dist/utils/scheduler.d.ts +19 -0
  104. package/dist/utils/scheduler.d.ts.map +1 -0
  105. package/dist/utils/scheduler.js +63 -0
  106. package/dist/utils/scheduler.js.map +1 -0
  107. package/dist/utils/sitemap.d.ts +17 -0
  108. package/dist/utils/sitemap.d.ts.map +1 -0
  109. package/dist/utils/sitemap.js +118 -0
  110. package/dist/utils/sitemap.js.map +1 -0
  111. package/dist/utils/validation.d.ts +142 -0
  112. package/dist/utils/validation.d.ts.map +1 -0
  113. package/dist/utils/validation.js +35 -0
  114. package/dist/utils/validation.js.map +1 -0
  115. package/dist/utils/webhook.d.ts +21 -0
  116. package/dist/utils/webhook.d.ts.map +1 -0
  117. package/dist/utils/webhook.js +108 -0
  118. package/dist/utils/webhook.js.map +1 -0
  119. 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"}
@@ -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":";;;AAAA,oCAAsC;AAetC,SAAgB,cAAc,CAAC,MAAY;IACzC,MAAM,EAAE,GAAG,IAAI,kBAAU,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO;QACL;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,oFAAoF;YACjG,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;oBACnE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE;oBAChH,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;iBACvE;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;YACD,OAAO,EAAE,KAAK,EAAE,KAA0D,EAAE,EAAE;gBAC5E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;oBAC5C,SAAS,EAAG,KAAK,CAAC,KAAa,IAAI,MAAM;oBACzC,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YAC9B,CAAC;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,2DAA2D;YACxE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;oBACzD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBAClE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;iBACrE;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;YACD,OAAO,EAAE,KAAK,EAAE,KAAyD,EAAE,EAAE;gBAC3E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE;oBAC3C,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;oBACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;iBAC/B,CAAC,CAAC;gBACH,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnG,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,kFAAkF;YAC/F,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;oBAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;oBAChF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;iBACxE;gBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;aAC3B;YACD,OAAO,EAAE,KAAK,EAAE,KAAoD,EAAE,EAAE;gBACtE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;gBACzE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YACnH,CAAC;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,0CAA0C;YACvD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;oBACpD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;iBACnF;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;YACD,OAAO,EAAE,KAAK,EAAE,KAA0C,EAAE,EAAE;gBAC5D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACvI,CAAC;SACF;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,0CAA0C;YACvD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;iBACzD;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;YACD,OAAO,EAAE,KAAK,EAAE,KAAsB,EAAE,EAAE;gBACxC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3C,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK;oBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;oBAC/B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;oBACtC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;iBACtC,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,mDAAmD;YAChE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4DAA4D,EAAE;oBAClG,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2CAA2C,EAAE;iBAC3F;gBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;aAClB;YACD,OAAO,EAAE,KAAK,EAAE,KAA6C,EAAE,EAAE;gBAC/D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjG,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;oBACnG,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,2DAA2D;YACxE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;iBACtE;gBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;aACrB;YACD,OAAO,EAAE,KAAK,EAAE,KAAyB,EAAE,EAAE;gBAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK;oBAC7B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;oBAClD,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;oBACpC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;iBACtC,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AA5ID,wCA4IC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * REST API server for WebContext.
3
+ */
4
+ export declare function startServer(port?: number): void;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -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":";;;;;;AAAA,sDAAmE;AACnE,gDAAwB;AACxB,oCAAsC;AAEtC,8CAAoD;AACpD,kDAAoD;AACpD,6CAAgD;AAChD,oDAAkD;AAElD;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAe,IAAI;IAC7C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,MAAM,EAAE,GAAG,IAAI,kBAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,0BAAgB,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,0BAAc,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAElC,kBAAkB;IAClB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QACH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QAClD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC7E,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpE,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAgC,CAAC,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC/D,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC3E,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpE,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAgC,CAAC,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC7E,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC/D,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpE,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC5E,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpE,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC5E,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;YACzF,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,UAAU;IACV,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QACnD,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACxE,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAClD,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAClC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACxF,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC1D,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;QACpD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,IAAa,EAAE,GAAa,EAAE,KAAmB,EAAE,EAAE;QACtE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,uBAAuB,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAlID,kCAkIC"}
@@ -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"}