@framers/agentos-ext-web-search 1.1.0 → 1.2.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 (39) hide show
  1. package/README.md +31 -188
  2. package/dist/index.d.ts +18 -11
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +57 -50
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/searchProvider.d.ts +89 -3
  7. package/dist/services/searchProvider.d.ts.map +1 -1
  8. package/dist/services/searchProvider.js +342 -26
  9. package/dist/services/searchProvider.js.map +1 -1
  10. package/dist/tools/factCheck.d.ts +46 -88
  11. package/dist/tools/factCheck.d.ts.map +1 -1
  12. package/dist/tools/factCheck.js +141 -170
  13. package/dist/tools/factCheck.js.map +1 -1
  14. package/dist/tools/researchAggregator.d.ts +37 -91
  15. package/dist/tools/researchAggregator.d.ts.map +1 -1
  16. package/dist/tools/researchAggregator.js +141 -175
  17. package/dist/tools/researchAggregator.js.map +1 -1
  18. package/dist/tools/webSearch.d.ts +31 -59
  19. package/dist/tools/webSearch.d.ts.map +1 -1
  20. package/dist/tools/webSearch.js +76 -87
  21. package/dist/tools/webSearch.js.map +1 -1
  22. package/dist/types.d.ts.map +1 -1
  23. package/dist/types.js +2 -2
  24. package/dist/types.js.map +1 -1
  25. package/manifest.json +14 -9
  26. package/package.json +26 -16
  27. package/.eslintrc.json +0 -21
  28. package/CHANGELOG.md +0 -16
  29. package/src/index.ts +0 -123
  30. package/src/services/searchProvider.ts +0 -416
  31. package/src/tools/factCheck.ts +0 -318
  32. package/src/tools/researchAggregator.ts +0 -297
  33. package/src/tools/webSearch.ts +0 -128
  34. package/src/types.ts +0 -41
  35. package/test/integration.spec.ts +0 -173
  36. package/test/searchProvider.spec.ts +0 -153
  37. package/test/webSearch.spec.ts +0 -128
  38. package/tsconfig.json +0 -21
  39. package/vitest.config.ts +0 -32
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SearchProviderService = void 0;
4
1
  /**
5
2
  * Service for managing multiple search providers with fallback support
6
3
  *
@@ -16,7 +13,7 @@ exports.SearchProviderService = void 0;
16
13
  * const results = await service.search('query');
17
14
  * ```
18
15
  */
19
- class SearchProviderService {
16
+ export class SearchProviderService {
20
17
  config;
21
18
  rateLimitState;
22
19
  /**
@@ -26,12 +23,17 @@ class SearchProviderService {
26
23
  */
27
24
  constructor(config) {
28
25
  this.config = {
29
- maxRetries: 3,
30
- rateLimit: {
26
+ serperApiKey: config.serperApiKey,
27
+ serpApiKey: config.serpApiKey,
28
+ braveApiKey: config.braveApiKey,
29
+ searxngUrl: config.searxngUrl,
30
+ tavilyApiKey: config.tavilyApiKey,
31
+ firecrawlApiKey: config.firecrawlApiKey,
32
+ maxRetries: config.maxRetries ?? 3,
33
+ rateLimit: config.rateLimit ?? {
31
34
  maxRequests: 10,
32
- windowMs: 60000
35
+ windowMs: 60000,
33
36
  },
34
- ...config
35
37
  };
36
38
  this.rateLimitState = new Map();
37
39
  }
@@ -51,14 +53,14 @@ class SearchProviderService {
51
53
  const maxResults = options.maxResults || 10;
52
54
  // If specific provider requested, try only that one
53
55
  if (options.provider) {
54
- return this.searchWithProvider(query, options.provider, maxResults, startTime);
56
+ return this.searchWithProvider(query, options.provider, maxResults, startTime, options.category);
55
57
  }
56
58
  // Try providers in order of preference
57
59
  const providers = this.getAvailableProviders();
58
60
  for (const provider of providers) {
59
61
  try {
60
62
  if (await this.checkRateLimit(provider)) {
61
- return await this.searchWithProvider(query, provider, maxResults, startTime);
63
+ return await this.searchWithProvider(query, provider, maxResults, startTime, options.category);
62
64
  }
63
65
  }
64
66
  catch (error) {
@@ -79,7 +81,7 @@ class SearchProviderService {
79
81
  * @param {number} startTime - Request start timestamp
80
82
  * @returns {Promise<ProviderResponse>} Search results
81
83
  */
82
- async searchWithProvider(query, provider, maxResults, startTime) {
84
+ async searchWithProvider(query, provider, maxResults, startTime, category) {
83
85
  let results;
84
86
  switch (provider) {
85
87
  case 'serper':
@@ -91,6 +93,15 @@ class SearchProviderService {
91
93
  case 'brave':
92
94
  results = await this.searchBrave(query, maxResults);
93
95
  break;
96
+ case 'tavily':
97
+ results = await this.searchTavily(query, maxResults);
98
+ break;
99
+ case 'firecrawl':
100
+ results = await this.searchFirecrawl(query, maxResults);
101
+ break;
102
+ case 'searxng':
103
+ results = await this.searchSearXNG(query, maxResults, { categories: category });
104
+ break;
94
105
  case 'duckduckgo':
95
106
  default:
96
107
  results = await this.searchDuckDuckGoAPI(query, maxResults);
@@ -109,17 +120,22 @@ class SearchProviderService {
109
120
  /**
110
121
  * Gets list of available providers based on configured API keys
111
122
  *
112
- * @private
113
123
  * @returns {string[]} Array of available provider names
114
124
  */
115
125
  getAvailableProviders() {
116
126
  const providers = [];
117
127
  if (this.config.serperApiKey)
118
128
  providers.push('serper');
119
- if (this.config.serpApiKey)
120
- providers.push('serpapi');
129
+ if (this.config.tavilyApiKey)
130
+ providers.push('tavily');
121
131
  if (this.config.braveApiKey)
122
132
  providers.push('brave');
133
+ if (this.config.serpApiKey)
134
+ providers.push('serpapi');
135
+ if (this.config.firecrawlApiKey)
136
+ providers.push('firecrawl');
137
+ if (this.config.searxngUrl)
138
+ providers.push('searxng');
123
139
  return providers;
124
140
  }
125
141
  /**
@@ -164,7 +180,7 @@ class SearchProviderService {
164
180
  });
165
181
  if (!response.ok)
166
182
  throw new Error(`Serper API error: ${response.statusText}`);
167
- const data = await response.json();
183
+ const data = (await response.json());
168
184
  return (data.organic || []).map((item) => ({
169
185
  title: item.title,
170
186
  url: item.link,
@@ -189,7 +205,7 @@ class SearchProviderService {
189
205
  const response = await fetch(`https://serpapi.com/search?${params}`);
190
206
  if (!response.ok)
191
207
  throw new Error(`SerpAPI error: ${response.statusText}`);
192
- const data = await response.json();
208
+ const data = (await response.json());
193
209
  return (data.organic_results || []).map((item) => ({
194
210
  title: item.title,
195
211
  url: item.link,
@@ -217,7 +233,7 @@ class SearchProviderService {
217
233
  });
218
234
  if (!response.ok)
219
235
  throw new Error(`Brave API error: ${response.statusText}`);
220
- const data = await response.json();
236
+ const data = (await response.json());
221
237
  return (data.web?.results || []).map((item, index) => ({
222
238
  title: item.title,
223
239
  url: item.url,
@@ -263,7 +279,16 @@ class SearchProviderService {
263
279
  }
264
280
  }
265
281
  /**
266
- * Search using DuckDuckGo instant answer API
282
+ * Search using DuckDuckGo HTML search page.
283
+ *
284
+ * The Instant Answer API (`api.duckduckgo.com/?format=json`) only returns
285
+ * Wikipedia-style abstracts and related topics — it does NOT return actual
286
+ * web search results. For most factual queries (follower counts, prices,
287
+ * current stats) it returns nothing useful.
288
+ *
289
+ * This method POSTs to the HTML search endpoint instead, which returns real
290
+ * organic search results. If the HTML scrape fails, it falls back to the
291
+ * Instant Answer API as a last resort.
267
292
  *
268
293
  * @private
269
294
  * @param {string} query - Search query
@@ -271,38 +296,324 @@ class SearchProviderService {
271
296
  * @returns {Promise<SearchResult[]>} Search results
272
297
  */
273
298
  async searchDuckDuckGoAPI(query, maxResults) {
274
- // DuckDuckGo instant answer API (limited but free)
299
+ try {
300
+ const htmlResults = await this.scrapeDuckDuckGoHTML(query, maxResults);
301
+ if (htmlResults.length > 0)
302
+ return htmlResults;
303
+ }
304
+ catch {
305
+ // Fall through to instant answer API
306
+ }
307
+ // Fallback: DuckDuckGo instant answer API (limited but free)
308
+ return this.searchDuckDuckGoInstantAnswer(query, maxResults);
309
+ }
310
+ /**
311
+ * Scrapes real search results from DuckDuckGo's HTML search page.
312
+ *
313
+ * @private
314
+ */
315
+ async scrapeDuckDuckGoHTML(query, maxResults) {
316
+ const body = new URLSearchParams({ q: query, b: '' });
317
+ const response = await fetch('https://html.duckduckgo.com/html/', {
318
+ method: 'POST',
319
+ headers: {
320
+ 'Content-Type': 'application/x-www-form-urlencoded',
321
+ 'User-Agent': 'Mozilla/5.0 (compatible; WunderlandBot/1.0; +https://wunderland.sh)',
322
+ },
323
+ body: body.toString(),
324
+ });
325
+ if (!response.ok)
326
+ return [];
327
+ const html = await response.text();
328
+ const results = [];
329
+ // Each organic result lives inside a <div class="result ..."> block.
330
+ // We extract title+URL from the <a class="result__a"> and snippet from
331
+ // <a class="result__snippet">.
332
+ const resultBlockRe = /<div[^>]*class="[^"]*result[^"]*"[^>]*>[\s\S]*?<\/div>\s*<\/div>/gi;
333
+ const blocks = html.match(resultBlockRe) ?? [];
334
+ for (const block of blocks) {
335
+ if (results.length >= maxResults)
336
+ break;
337
+ // Title + URL
338
+ const linkMatch = block.match(/<a[^>]*class="result__a"[^>]*href="([^"]*)"[^>]*>([\s\S]*?)<\/a>/i);
339
+ if (!linkMatch)
340
+ continue;
341
+ let url = linkMatch[1];
342
+ const title = linkMatch[2].replace(/<[^>]+>/g, '').trim();
343
+ // DDG wraps URLs via a redirect — extract the actual destination
344
+ const uddgMatch = url.match(/[?&]uddg=([^&]+)/);
345
+ if (uddgMatch) {
346
+ url = decodeURIComponent(uddgMatch[1]);
347
+ }
348
+ if (!url || !title)
349
+ continue;
350
+ // Snippet
351
+ const snippetMatch = block.match(/<a[^>]*class="result__snippet"[^>]*>([\s\S]*?)<\/a>/i)
352
+ ?? block.match(/<span[^>]*class="result__snippet"[^>]*>([\s\S]*?)<\/span>/i);
353
+ const snippet = snippetMatch
354
+ ? snippetMatch[1].replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim()
355
+ : '';
356
+ results.push({ title, url, snippet });
357
+ }
358
+ return results;
359
+ }
360
+ /**
361
+ * DuckDuckGo Instant Answer API (limited — only returns Wikipedia-style
362
+ * abstracts and related topics, NOT real search results).
363
+ *
364
+ * @private
365
+ */
366
+ async searchDuckDuckGoInstantAnswer(query, maxResults) {
275
367
  const params = new URLSearchParams({
276
368
  q: query,
277
369
  format: 'json',
278
370
  no_html: '1',
279
- skip_disambig: '1'
371
+ skip_disambig: '1',
280
372
  });
281
373
  const response = await fetch(`https://api.duckduckgo.com/?${params}`);
282
- const data = await response.json();
374
+ const data = (await response.json());
283
375
  const results = [];
284
- // Add instant answer if available
285
376
  if (data.AbstractText && data.AbstractURL) {
286
377
  results.push({
287
378
  title: data.Heading || query,
288
379
  url: data.AbstractURL,
289
- snippet: data.AbstractText
380
+ snippet: data.AbstractText,
290
381
  });
291
382
  }
292
- // Add related topics
293
383
  if (data.RelatedTopics) {
294
384
  for (const topic of data.RelatedTopics.slice(0, maxResults - 1)) {
295
385
  if (topic.FirstURL && topic.Text) {
296
386
  results.push({
297
387
  title: topic.Text.split(' - ')[0] || topic.Text,
298
388
  url: topic.FirstURL,
299
- snippet: topic.Text
389
+ snippet: topic.Text,
300
390
  });
301
391
  }
302
392
  }
303
393
  }
304
394
  return results.slice(0, maxResults);
305
395
  }
396
+ /**
397
+ * Search using a self-hosted SearXNG metasearch instance.
398
+ *
399
+ * @private
400
+ * @param {string} query - Search query
401
+ * @param {number} maxResults - Maximum results
402
+ * @param {Object} [options] - SearXNG-specific options
403
+ * @param {string} [options.categories] - SearXNG categories (e.g. 'general', 'news', 'images')
404
+ * @returns {Promise<SearchResult[]>} Search results
405
+ */
406
+ async searchSearXNG(query, maxResults, options) {
407
+ const params = new URLSearchParams({
408
+ q: query,
409
+ format: 'json',
410
+ categories: options?.categories || 'general',
411
+ });
412
+ const baseUrl = this.config.searxngUrl.replace(/\/+$/, '');
413
+ const response = await fetch(`${baseUrl}/search?${params}`);
414
+ if (!response.ok)
415
+ throw new Error(`SearXNG API error: ${response.statusText}`);
416
+ const data = (await response.json());
417
+ return (data.results || []).slice(0, maxResults).map((item, index) => ({
418
+ title: item.title || '',
419
+ url: item.url || '',
420
+ snippet: item.content || '',
421
+ position: index + 1,
422
+ }));
423
+ }
424
+ /**
425
+ * Normalizes a URL for deduplication — strips www, tracking params, trailing slash.
426
+ */
427
+ static normalizeUrl(rawUrl) {
428
+ try {
429
+ const url = new URL(rawUrl);
430
+ url.hostname = url.hostname.replace(/^www\./, '');
431
+ const trackingParams = [
432
+ 'utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term',
433
+ 'fbclid', 'gclid', 'ref', 'source', 'sxsrf', 'ei', 'ved',
434
+ ];
435
+ for (const param of trackingParams)
436
+ url.searchParams.delete(param);
437
+ url.searchParams.sort();
438
+ url.pathname = url.pathname.replace(/\/+$/, '') || '/';
439
+ return url.toString();
440
+ }
441
+ catch {
442
+ return rawUrl.toLowerCase().trim();
443
+ }
444
+ }
445
+ /**
446
+ * Search using the Tavily API (AI-optimized search).
447
+ * @see https://docs.tavily.com/docs/tavily-api/rest-api
448
+ */
449
+ async searchTavily(query, maxResults) {
450
+ const controller = new AbortController();
451
+ const timeout = setTimeout(() => controller.abort(), 15_000);
452
+ try {
453
+ const res = await fetch('https://api.tavily.com/search', {
454
+ method: 'POST',
455
+ headers: { 'Content-Type': 'application/json' },
456
+ body: JSON.stringify({
457
+ api_key: this.config.tavilyApiKey,
458
+ query,
459
+ search_depth: 'advanced',
460
+ include_answer: false,
461
+ include_raw_content: false,
462
+ max_results: Math.min(maxResults, 20),
463
+ }),
464
+ signal: controller.signal,
465
+ });
466
+ if (!res.ok)
467
+ throw new Error(`Tavily API error: ${res.status} ${res.statusText}`);
468
+ const data = (await res.json());
469
+ return (data.results ?? []).map((r, i) => ({
470
+ title: r.title ?? '',
471
+ url: r.url ?? '',
472
+ snippet: r.content ?? '',
473
+ position: i + 1,
474
+ }));
475
+ }
476
+ catch (err) {
477
+ if (err.name === 'AbortError')
478
+ return [];
479
+ throw err;
480
+ }
481
+ finally {
482
+ clearTimeout(timeout);
483
+ }
484
+ }
485
+ /**
486
+ * Search using the Firecrawl /search endpoint.
487
+ * @see https://docs.firecrawl.dev/api-reference/endpoint/search
488
+ */
489
+ async searchFirecrawl(query, maxResults) {
490
+ const controller = new AbortController();
491
+ const timeout = setTimeout(() => controller.abort(), 15_000);
492
+ try {
493
+ const res = await fetch('https://api.firecrawl.dev/v1/search', {
494
+ method: 'POST',
495
+ headers: {
496
+ 'Content-Type': 'application/json',
497
+ 'Authorization': `Bearer ${this.config.firecrawlApiKey}`,
498
+ },
499
+ body: JSON.stringify({
500
+ query,
501
+ limit: Math.min(maxResults, 20),
502
+ }),
503
+ signal: controller.signal,
504
+ });
505
+ if (!res.ok)
506
+ throw new Error(`Firecrawl API error: ${res.status} ${res.statusText}`);
507
+ const data = (await res.json());
508
+ return (data.data ?? []).map((r, i) => ({
509
+ title: r.title ?? r.url,
510
+ url: r.url,
511
+ snippet: r.description ?? (r.markdown ?? '').slice(0, 300),
512
+ position: i + 1,
513
+ }));
514
+ }
515
+ catch (err) {
516
+ if (err.name === 'AbortError')
517
+ return [];
518
+ throw err;
519
+ }
520
+ finally {
521
+ clearTimeout(timeout);
522
+ }
523
+ }
524
+ /**
525
+ * Searches ALL available providers in parallel, then merges, deduplicates,
526
+ * and reranks results by cross-provider agreement.
527
+ */
528
+ async multiSearch(query, options = {}) {
529
+ const startTime = Date.now();
530
+ const maxResults = options.maxResults || 10;
531
+ const providers = [...new Set([...this.getAvailableProviders(), 'duckduckgo'])];
532
+ const providerResults = await Promise.allSettled(providers.map(async (provider) => {
533
+ try {
534
+ if (provider !== 'duckduckgo' && !(await this.checkRateLimit(provider))) {
535
+ throw new Error(`Rate limit exceeded for ${provider}`);
536
+ }
537
+ const response = await this.searchWithProvider(query, provider, maxResults, startTime);
538
+ return { provider, results: response.results, success: true };
539
+ }
540
+ catch {
541
+ return { provider, results: [], success: false };
542
+ }
543
+ }));
544
+ const succeeded = [];
545
+ const failed = [];
546
+ const allResults = [];
547
+ for (const outcome of providerResults) {
548
+ if (outcome.status === 'fulfilled') {
549
+ const { provider, results, success } = outcome.value;
550
+ if (success && results.length > 0) {
551
+ succeeded.push(provider);
552
+ results.forEach((result, index) => {
553
+ allResults.push({ provider, result, position: index + 1 });
554
+ });
555
+ }
556
+ else {
557
+ failed.push(provider);
558
+ }
559
+ }
560
+ else {
561
+ failed.push('unknown');
562
+ }
563
+ }
564
+ // Deduplicate and merge by normalized URL
565
+ const merged = new Map();
566
+ for (const { provider, result, position } of allResults) {
567
+ const key = SearchProviderService.normalizeUrl(result.url);
568
+ if (merged.has(key)) {
569
+ const existing = merged.get(key);
570
+ if (!existing.providers.includes(provider)) {
571
+ existing.providers.push(provider);
572
+ existing.agreementCount = existing.providers.length;
573
+ }
574
+ existing.providerPositions[provider] = position;
575
+ if ((result.snippet?.length || 0) > (existing.snippet?.length || 0)) {
576
+ existing.snippet = result.snippet;
577
+ }
578
+ }
579
+ else {
580
+ merged.set(key, {
581
+ title: result.title,
582
+ url: result.url,
583
+ snippet: result.snippet,
584
+ position,
585
+ providers: [provider],
586
+ agreementCount: 1,
587
+ confidenceScore: 0,
588
+ providerPositions: { [provider]: position },
589
+ });
590
+ }
591
+ }
592
+ // Score and rank
593
+ const totalProviders = succeeded.length || 1;
594
+ const scoredResults = Array.from(merged.values()).map((r) => {
595
+ const agreementBonus = (r.agreementCount / totalProviders) * 50;
596
+ const positions = Object.values(r.providerPositions);
597
+ const avgNorm = positions.reduce((s, p) => s + (1 - (p - 1) / maxResults), 0) / positions.length;
598
+ const positionScore = avgNorm * 30;
599
+ r.confidenceScore = Math.round(Math.min(100, agreementBonus + positionScore + 20));
600
+ return r;
601
+ });
602
+ scoredResults.sort((a, b) => b.confidenceScore - a.confidenceScore);
603
+ return {
604
+ results: scoredResults.slice(0, maxResults),
605
+ metadata: {
606
+ query,
607
+ timestamp: new Date().toISOString(),
608
+ totalResponseTime: Date.now() - startTime,
609
+ providersQueried: providers,
610
+ providersSucceeded: succeeded,
611
+ providersFailed: failed,
612
+ totalRawResults: allResults.length,
613
+ deduplicatedCount: merged.size,
614
+ },
615
+ };
616
+ }
306
617
  /**
307
618
  * Gets recommended search providers with signup information
308
619
  *
@@ -329,6 +640,12 @@ class SearchProviderService {
329
640
  freeQuota: '2,000 queries/month',
330
641
  description: 'Privacy-focused search API'
331
642
  },
643
+ {
644
+ name: 'SearXNG',
645
+ signupUrl: 'https://docs.searxng.org (self-hosted)',
646
+ freeQuota: 'Unlimited (self-hosted)',
647
+ description: 'Self-hosted metasearch engine aggregating 244+ search services'
648
+ },
332
649
  {
333
650
  name: 'DuckDuckGo',
334
651
  signupUrl: 'No signup required',
@@ -338,5 +655,4 @@ class SearchProviderService {
338
655
  ];
339
656
  }
340
657
  }
341
- exports.SearchProviderService = SearchProviderService;
342
658
  //# sourceMappingURL=searchProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchProvider.js","sourceRoot":"","sources":["../../src/services/searchProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchProvider.js","sourceRoot":"","sources":["../../src/services/searchProvider.ts"],"names":[],"mappings":"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"}