@kenkaiiii/ggcoder 4.3.231 → 4.3.232

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 (91) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +1 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +7 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/config.test.d.ts +2 -0
  9. package/dist/config.test.d.ts.map +1 -0
  10. package/dist/config.test.js +29 -0
  11. package/dist/config.test.js.map +1 -0
  12. package/dist/core/ideal-review.d.ts +20 -0
  13. package/dist/core/ideal-review.d.ts.map +1 -0
  14. package/dist/core/ideal-review.js +55 -0
  15. package/dist/core/ideal-review.js.map +1 -0
  16. package/dist/core/ideal-review.test.d.ts +2 -0
  17. package/dist/core/ideal-review.test.d.ts.map +1 -0
  18. package/dist/core/ideal-review.test.js +59 -0
  19. package/dist/core/ideal-review.test.js.map +1 -0
  20. package/dist/core/settings-manager.d.ts +1 -0
  21. package/dist/core/settings-manager.d.ts.map +1 -1
  22. package/dist/core/settings-manager.js +2 -0
  23. package/dist/core/settings-manager.js.map +1 -1
  24. package/dist/tools/html-extract.d.ts +58 -0
  25. package/dist/tools/html-extract.d.ts.map +1 -0
  26. package/dist/tools/html-extract.js +130 -0
  27. package/dist/tools/html-extract.js.map +1 -0
  28. package/dist/tools/html-extract.test.d.ts +2 -0
  29. package/dist/tools/html-extract.test.d.ts.map +1 -0
  30. package/dist/tools/html-extract.test.js +60 -0
  31. package/dist/tools/html-extract.test.js.map +1 -0
  32. package/dist/tools/pdf-extract.d.ts +18 -0
  33. package/dist/tools/pdf-extract.d.ts.map +1 -0
  34. package/dist/tools/pdf-extract.js +43 -0
  35. package/dist/tools/pdf-extract.js.map +1 -0
  36. package/dist/tools/pdf-extract.test.d.ts +2 -0
  37. package/dist/tools/pdf-extract.test.d.ts.map +1 -0
  38. package/dist/tools/pdf-extract.test.js +15 -0
  39. package/dist/tools/pdf-extract.test.js.map +1 -0
  40. package/dist/tools/prompt-hints.d.ts.map +1 -1
  41. package/dist/tools/prompt-hints.js +2 -1
  42. package/dist/tools/prompt-hints.js.map +1 -1
  43. package/dist/tools/web-fetch.d.ts +16 -1
  44. package/dist/tools/web-fetch.d.ts.map +1 -1
  45. package/dist/tools/web-fetch.js +357 -45
  46. package/dist/tools/web-fetch.js.map +1 -1
  47. package/dist/tools/web-fetch.test.js +263 -2
  48. package/dist/tools/web-fetch.test.js.map +1 -1
  49. package/dist/tools/web-search.d.ts +14 -0
  50. package/dist/tools/web-search.d.ts.map +1 -1
  51. package/dist/tools/web-search.js +321 -35
  52. package/dist/tools/web-search.js.map +1 -1
  53. package/dist/tools/web-search.test.js +144 -1
  54. package/dist/tools/web-search.test.js.map +1 -1
  55. package/dist/ui/App.d.ts +2 -0
  56. package/dist/ui/App.d.ts.map +1 -1
  57. package/dist/ui/App.js +54 -1
  58. package/dist/ui/App.js.map +1 -1
  59. package/dist/ui/app-items.d.ts +14 -1
  60. package/dist/ui/app-items.d.ts.map +1 -1
  61. package/dist/ui/app-items.js +2 -0
  62. package/dist/ui/app-items.js.map +1 -1
  63. package/dist/ui/components/IdealHookMessage.d.ts +12 -0
  64. package/dist/ui/components/IdealHookMessage.d.ts.map +1 -0
  65. package/dist/ui/components/IdealHookMessage.js +24 -0
  66. package/dist/ui/components/IdealHookMessage.js.map +1 -0
  67. package/dist/ui/hooks/useAgentLoop.d.ts +2 -0
  68. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  69. package/dist/ui/hooks/useAgentLoop.js +45 -1
  70. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  71. package/dist/ui/render.d.ts +3 -0
  72. package/dist/ui/render.d.ts.map +1 -1
  73. package/dist/ui/render.js +2 -0
  74. package/dist/ui/render.js.map +1 -1
  75. package/dist/ui/terminal-history.d.ts.map +1 -1
  76. package/dist/ui/terminal-history.js +8 -0
  77. package/dist/ui/terminal-history.js.map +1 -1
  78. package/dist/ui/transcript/TranscriptRenderer.d.ts.map +1 -1
  79. package/dist/ui/transcript/TranscriptRenderer.js +3 -0
  80. package/dist/ui/transcript/TranscriptRenderer.js.map +1 -1
  81. package/dist/ui/transcript/spacing.d.ts +2 -2
  82. package/dist/ui/transcript/spacing.d.ts.map +1 -1
  83. package/dist/ui/transcript/spacing.js +1 -0
  84. package/dist/ui/transcript/spacing.js.map +1 -1
  85. package/dist/ui/transcript/spacing.test.js +2 -0
  86. package/dist/ui/transcript/spacing.test.js.map +1 -1
  87. package/dist/ui/tui-history-parity.test.js +8 -0
  88. package/dist/ui/tui-history-parity.test.js.map +1 -1
  89. package/dist/utils/format.js +7 -0
  90. package/dist/utils/format.js.map +1 -1
  91. package/package.json +10 -4
@@ -20,15 +20,55 @@ const RATE_LIMIT_PATTERNS = [
20
20
  "challenge-form",
21
21
  ];
22
22
  const ENGINES = ["DuckDuckGo", "DuckDuckGoLite", "Brave", "Bing", "Google"];
23
+ /**
24
+ * Normalize a domain to lowercase punycode hostname, defending against Unicode
25
+ * homograph spoofing. Returns null for un-parseable input.
26
+ */
27
+ export function normalizeDomain(domain) {
28
+ const trimmed = domain.trim().replace(/^\*\.?/, "");
29
+ if (!trimmed)
30
+ return null;
31
+ try {
32
+ return new URL(`https://${trimmed.replace(/^https?:\/\//i, "")}`).hostname.toLowerCase();
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ }
38
+ function normalizeDomains(domains) {
39
+ if (!domains)
40
+ return [];
41
+ const out = [];
42
+ for (const d of domains) {
43
+ const n = normalizeDomain(d);
44
+ if (n)
45
+ out.push(n);
46
+ }
47
+ return out;
48
+ }
49
+ /** True if `hostname` equals or is a subdomain of `domain`. */
50
+ function hostMatchesDomain(hostname, domain) {
51
+ const host = hostname.toLowerCase();
52
+ return host === domain || host.endsWith(`.${domain}`);
53
+ }
23
54
  const AD_URL_PATTERNS = [
24
55
  /(?:^|\.)googleadservices\.com$/i,
56
+ /(?:^|\.)adservice\.google\./i,
25
57
  /(?:^|\.)doubleclick\.net$/i,
26
58
  /(?:^|\.)googlesyndication\.com$/i,
27
59
  /(?:^|\.)adsystem\.com$/i,
28
60
  /(?:^|\.)adnxs\.com$/i,
29
61
  /(?:^|\.)taboola\.com$/i,
30
62
  /(?:^|\.)outbrain\.com$/i,
63
+ /(?:^|\.)ads\.twitter\.com$/i,
64
+ /(?:^|\.)ads\.linkedin\.com$/i,
65
+ /(?:^|\.)awin1\.com$/i,
66
+ /(?:^|\.)shareasale\.com$/i,
67
+ /(?:^|\.)cj\.com$/i,
68
+ /(?:^|\.)impact\.com$/i,
69
+ /(?:^|\.)linksynergy\.com$/i,
31
70
  ];
71
+ const SPAM_HOST_PATTERNS = [/coupon/i, /promo-code/i, /deals/i, /discount/i];
32
72
  const AD_QUERY_KEYS = new Set([
33
73
  "ad_domain",
34
74
  "ad_provider",
@@ -40,6 +80,41 @@ const AD_QUERY_KEYS = new Set([
40
80
  "wbraid",
41
81
  "msclkid",
42
82
  ]);
83
+ const TRACKING_QUERY_KEYS = new Set([
84
+ ...AD_QUERY_KEYS,
85
+ "fbclid",
86
+ "igshid",
87
+ "yclid",
88
+ "mc_cid",
89
+ "mc_eid",
90
+ "_hsenc",
91
+ "_hsmi",
92
+ "vero_id",
93
+ "ref",
94
+ "ref_src",
95
+ "source",
96
+ "spm",
97
+ "scid",
98
+ "campaign",
99
+ "affiliate",
100
+ "aff",
101
+ "tag",
102
+ ]);
103
+ const REDIRECT_QUERY_KEYS = [
104
+ "uddg",
105
+ "url",
106
+ "q",
107
+ "u",
108
+ "to",
109
+ "target",
110
+ "dest",
111
+ "destination",
112
+ "redirect",
113
+ "redirect_url",
114
+ "r",
115
+ "u3",
116
+ "adurl",
117
+ ];
43
118
  const AD_PATH_PATTERNS = [/^\/y\.js$/i, /^\/aclk$/i, /^\/aclick$/i, /^\/pagead\//i];
44
119
  // ── HTML helpers ──────────────────────────────────────────
45
120
  function decodeHTMLEntities(text) {
@@ -59,14 +134,66 @@ function cleanHTML(text) {
59
134
  .replace(/\s+/g, " ")
60
135
  .trim();
61
136
  }
62
- export function isAdSearchResultUrl(rawURL) {
63
- let parsed;
137
+ function parseHttpUrl(rawURL, base = "https://duckduckgo.com") {
64
138
  try {
65
- parsed = new URL(rawURL, "https://duckduckgo.com");
139
+ const parsed = new URL(rawURL, base);
140
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:")
141
+ return null;
142
+ return parsed;
66
143
  }
67
144
  catch {
68
- return true;
145
+ return null;
146
+ }
147
+ }
148
+ function getNestedRedirectUrl(parsed) {
149
+ for (const key of REDIRECT_QUERY_KEYS) {
150
+ const value = parsed.searchParams.get(key);
151
+ if (!value)
152
+ continue;
153
+ const nested = parseHttpUrl(value);
154
+ if (nested)
155
+ return nested.href;
69
156
  }
157
+ return null;
158
+ }
159
+ function normalizeSearchUrl(rawURL, depth = 0) {
160
+ if (depth > 4)
161
+ return null;
162
+ const expandedURL = rawURL.startsWith("//") ? `https:${rawURL}` : rawURL;
163
+ const parsed = parseHttpUrl(expandedURL);
164
+ if (!parsed)
165
+ return null;
166
+ const nested = getNestedRedirectUrl(parsed);
167
+ if (nested) {
168
+ const unwrapped = normalizeSearchUrl(nested, depth + 1);
169
+ if (unwrapped)
170
+ return unwrapped;
171
+ }
172
+ return parsed;
173
+ }
174
+ export function canonicalSearchResultUrl(rawURL) {
175
+ const parsed = normalizeSearchUrl(rawURL);
176
+ if (!parsed)
177
+ return null;
178
+ if (isAdSearchResultUrl(parsed.href))
179
+ return null;
180
+ parsed.hash = "";
181
+ const keptParams = [...parsed.searchParams.entries()]
182
+ .filter(([key]) => {
183
+ const lowerKey = key.toLowerCase();
184
+ return !lowerKey.startsWith("utm_") && !TRACKING_QUERY_KEYS.has(lowerKey);
185
+ })
186
+ .sort(([aKey, aValue], [bKey, bValue]) => aKey.localeCompare(bKey) || aValue.localeCompare(bValue));
187
+ parsed.search = "";
188
+ for (const [key, value] of keptParams) {
189
+ parsed.searchParams.append(key, value);
190
+ }
191
+ return parsed.href;
192
+ }
193
+ export function isAdSearchResultUrl(rawURL) {
194
+ const parsed = parseHttpUrl(rawURL);
195
+ if (!parsed)
196
+ return true;
70
197
  const hostname = parsed.hostname.toLowerCase();
71
198
  if (AD_URL_PATTERNS.some((pattern) => pattern.test(hostname)))
72
199
  return true;
@@ -76,9 +203,11 @@ export function isAdSearchResultUrl(rawURL) {
76
203
  if (AD_QUERY_KEYS.has(key.toLowerCase()))
77
204
  return true;
78
205
  }
79
- const nestedURL = parsed.searchParams.get("u3") ?? parsed.searchParams.get("adurl");
80
- if (nestedURL && isAdSearchResultUrl(nestedURL))
81
- return true;
206
+ for (const key of REDIRECT_QUERY_KEYS) {
207
+ const nestedURL = parsed.searchParams.get(key);
208
+ if (nestedURL && parseHttpUrl(nestedURL) && isAdSearchResultUrl(nestedURL))
209
+ return true;
210
+ }
82
211
  return false;
83
212
  }
84
213
  function isAdSearchResult(result) {
@@ -87,25 +216,103 @@ function isAdSearchResult(result) {
87
216
  const combinedText = `${result.title} ${result.snippet}`.toLowerCase();
88
217
  return /\b(sponsored|advertisement|promoted result|exclusive discounts|limited-time offer)\b/.test(combinedText);
89
218
  }
90
- function filterSearchResults(results, maxResults) {
219
+ function isCommerceQuery(query) {
220
+ return /\b(buy|price|coupon|discount|deal|sale|review|best|cheap|shopping|product)\b/i.test(query);
221
+ }
222
+ function isSpammySearchResult(result, query) {
223
+ if (isCommerceQuery(query))
224
+ return false;
225
+ const combinedText = `${result.title} ${result.snippet}`.toLowerCase();
226
+ if (/\b(coupon code|promo code|exclusive deal|limited-time offer|best price|shop now|buy now|sale ends|discount code|cashback|affiliate disclosure)\b/i.test(combinedText)) {
227
+ return true;
228
+ }
229
+ try {
230
+ const parsed = new URL(result.url);
231
+ const hostAndPath = `${parsed.hostname}${parsed.pathname}`;
232
+ return SPAM_HOST_PATTERNS.some((pattern) => pattern.test(hostAndPath));
233
+ }
234
+ catch {
235
+ return true;
236
+ }
237
+ }
238
+ function resultHost(rawURL) {
239
+ try {
240
+ return new URL(rawURL).hostname.toLowerCase();
241
+ }
242
+ catch {
243
+ return null;
244
+ }
245
+ }
246
+ function passesDomainFilters(result, filters) {
247
+ const host = resultHost(result.url);
248
+ if (filters.includeDomains.length > 0) {
249
+ if (!host)
250
+ return false;
251
+ if (!filters.includeDomains.some((d) => hostMatchesDomain(host, d)))
252
+ return false;
253
+ }
254
+ if (filters.excludeDomains.length > 0) {
255
+ if (host && filters.excludeDomains.some((d) => hostMatchesDomain(host, d)))
256
+ return false;
257
+ }
258
+ return true;
259
+ }
260
+ function emptyFilterStats() {
261
+ return { ads: 0, spam: 0, duplicates: 0, domainFiltered: 0 };
262
+ }
263
+ function filterSearchResults(results, maxResults, filters, query) {
91
264
  const filtered = [];
92
265
  const seenUrls = new Set();
266
+ const stats = emptyFilterStats();
93
267
  for (const result of results) {
94
- if (isAdSearchResult(result))
268
+ const canonicalUrl = canonicalSearchResultUrl(result.url);
269
+ if (!canonicalUrl || isAdSearchResult({ ...result, url: canonicalUrl })) {
270
+ stats.ads++;
95
271
  continue;
96
- if (seenUrls.has(result.url))
272
+ }
273
+ const normalizedResult = { ...result, url: canonicalUrl };
274
+ if (isSpammySearchResult(normalizedResult, query)) {
275
+ stats.spam++;
276
+ continue;
277
+ }
278
+ if (!passesDomainFilters(normalizedResult, filters)) {
279
+ stats.domainFiltered++;
97
280
  continue;
98
- seenUrls.add(result.url);
99
- filtered.push(result);
281
+ }
282
+ if (seenUrls.has(canonicalUrl)) {
283
+ stats.duplicates++;
284
+ continue;
285
+ }
286
+ seenUrls.add(canonicalUrl);
287
+ filtered.push(normalizedResult);
100
288
  if (filtered.length >= maxResults)
101
289
  break;
102
290
  }
103
- return filtered;
291
+ return { results: filtered, stats };
104
292
  }
105
293
  // ── Request building ─────────────────────────────────────
106
- function buildRequest(engine, query) {
107
- const encoded = encodeURIComponent(query);
294
+ /** Build the `site:`/`-site:` clauses appended to the query for domain scoping. */
295
+ function domainScopeSuffix(filters) {
296
+ if (filters.includeDomains.length > 0) {
297
+ return " " + filters.includeDomains.map((d) => `site:${d}`).join(" OR ");
298
+ }
299
+ if (filters.excludeDomains.length > 0) {
300
+ return " " + filters.excludeDomains.map((d) => `-site:${d}`).join(" ");
301
+ }
302
+ return "";
303
+ }
304
+ const GOOGLE_QDR = { day: "d", week: "w", month: "m", year: "y" };
305
+ const DDG_DF = { day: "d", week: "w", month: "m", year: "y" };
306
+ const BING_FILTER = {
307
+ day: 'ex1:"ez1"',
308
+ week: 'ex1:"ez2"',
309
+ month: 'ex1:"ez3"',
310
+ };
311
+ function buildRequest(engine, query, filters) {
312
+ const scopedQuery = query + domainScopeSuffix(filters);
313
+ const encoded = encodeURIComponent(scopedQuery);
108
314
  const ua = USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)];
315
+ const time = filters.timeRange;
109
316
  const headers = {
110
317
  "User-Agent": ua,
111
318
  Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
@@ -117,23 +324,35 @@ function buildRequest(engine, query) {
117
324
  switch (engine) {
118
325
  case "DuckDuckGo":
119
326
  url = `https://html.duckduckgo.com/html/?q=${encoded}`;
327
+ if (time)
328
+ url += `&df=${DDG_DF[time]}`;
120
329
  break;
121
- case "DuckDuckGoLite":
330
+ case "DuckDuckGoLite": {
122
331
  url = "https://lite.duckduckgo.com/lite/";
123
332
  method = "POST";
124
- body = new URLSearchParams({ q: query }).toString();
333
+ const params = new URLSearchParams({ q: scopedQuery });
334
+ if (time)
335
+ params.set("df", DDG_DF[time]);
336
+ body = params.toString();
125
337
  headers["Content-Type"] = "application/x-www-form-urlencoded";
126
338
  break;
339
+ }
127
340
  case "Brave":
341
+ // Brave has no reliable recency URL param; domain scoping applies via site:.
128
342
  url = `https://search.brave.com/search?q=${encoded}&source=web`;
129
343
  headers.Accept = "text/html";
130
344
  break;
131
345
  case "Bing":
132
346
  url = `https://www.bing.com/search?q=${encoded}`;
347
+ if (time && BING_FILTER[time]) {
348
+ url += `&filters=${encodeURIComponent(BING_FILTER[time])}`;
349
+ }
133
350
  headers.Accept = "text/html";
134
351
  break;
135
352
  case "Google":
136
353
  url = `https://www.google.com/search?q=${encoded}&hl=en`;
354
+ if (time)
355
+ url += `&tbs=qdr:${GOOGLE_QDR[time]}`;
137
356
  break;
138
357
  }
139
358
  return { url, headers, method, body };
@@ -175,12 +394,20 @@ function getAttributeValue(html, attribute) {
175
394
  const match = html.match(new RegExp(`${attribute}=["']([^"']+)["']`, "i"));
176
395
  return match?.[1] ?? "";
177
396
  }
397
+ function isSponsoredBlock(html) {
398
+ const text = cleanHTML(html);
399
+ return (/\b(Sponsored|Ads?|Promoted)\b/i.test(text) ||
400
+ /\b(b_ad|b_adlabel|uEierd|pla-unit|commercial-unit-desktop-top)\b/i.test(html) ||
401
+ /(?:class|id|aria-label|data-testid|data-text-ad)=['"][^'"]*\b(?:ad|ads|sponsored|promoted)\b/i.test(html));
402
+ }
178
403
  function parseDDGResults(html) {
179
404
  const results = [];
180
405
  const blockRegex = /<div[^>]*class="[^"]*\bresult\b[^"]*"[^>]*>([\s\S]*?)(?=<div[^>]*class="[^"]*\bresult\b|<\/body>|$)/g;
181
406
  const fallbackLinkRegex = /<a[^>]*class="[^"]*result__a[^"]*"[^>]*href="([^"]+)"[^>]*>(.*?)<\/a>/gs;
182
407
  for (const block of html.matchAll(blockRegex)) {
183
408
  const blockHTML = block[1];
409
+ if (isSponsoredBlock(blockHTML))
410
+ continue;
184
411
  const linkMatch = blockHTML.match(/<a[^>]*class="[^"]*(?:result__a|result__title)[^"]*"[^>]*>[\s\S]*?<\/a>/i);
185
412
  if (!linkMatch)
186
413
  continue;
@@ -189,7 +416,8 @@ function parseDDGResults(html) {
189
416
  const title = cleanHTML(rawLink);
190
417
  const snippetMatch = blockHTML.match(/<[^>]*class="[^"]*result__snippet[^"]*"[^>]*>([\s\S]*?)<\/(?:a|div|span)>/i);
191
418
  const snippet = snippetMatch ? cleanHTML(snippetMatch[1]) : "";
192
- const url = unwrapDDGRedirect(rawURL);
419
+ const unwrappedURL = unwrapDDGRedirect(rawURL);
420
+ const url = canonicalSearchResultUrl(unwrappedURL) ?? unwrappedURL;
193
421
  if (url && title) {
194
422
  results.push({ title, url, snippet });
195
423
  }
@@ -197,8 +425,11 @@ function parseDDGResults(html) {
197
425
  if (results.length > 0)
198
426
  return results;
199
427
  for (const link of html.matchAll(fallbackLinkRegex)) {
200
- const [, rawURL, rawTitle] = link;
201
- const url = unwrapDDGRedirect(rawURL);
428
+ const [linkHTML, rawURL, rawTitle] = link;
429
+ if (isSponsoredBlock(linkHTML))
430
+ continue;
431
+ const unwrappedURL = unwrapDDGRedirect(rawURL);
432
+ const url = canonicalSearchResultUrl(unwrappedURL) ?? unwrappedURL;
202
433
  const title = cleanHTML(rawTitle);
203
434
  if (url && title) {
204
435
  results.push({ title, url, snippet: "" });
@@ -248,10 +479,13 @@ function parseBraveResults(html) {
248
479
  const descRegex = /<p[^>]*class="[^"]*snippet-description[^"]*"[^>]*>(.*?)<\/p>/s;
249
480
  for (const block of html.matchAll(blockRegex)) {
250
481
  const blockHTML = block[1];
482
+ if (isSponsoredBlock(blockHTML))
483
+ continue;
251
484
  const linkMatch = blockHTML.match(linkRegex);
252
485
  if (!linkMatch)
253
486
  continue;
254
- const url = linkMatch[1];
487
+ const rawURL = linkMatch[1];
488
+ const url = canonicalSearchResultUrl(rawURL) ?? rawURL;
255
489
  const title = cleanHTML(linkMatch[2]);
256
490
  const descMatch = blockHTML.match(descRegex);
257
491
  const snippet = descMatch ? cleanHTML(descMatch[1]) : "";
@@ -265,8 +499,11 @@ function parseBingResults(html) {
265
499
  const results = [];
266
500
  const blockRegex = /<li class="b_algo"[\s\S]*?<h2[^>]*>\s*<a[^>]*href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?(?:<p[^>]*>([\s\S]*?)<\/p>)?[\s\S]*?<\/li>/g;
267
501
  for (const block of html.matchAll(blockRegex)) {
268
- const [, rawURL, rawTitle, rawSnippet = ""] = block;
269
- const url = unwrapBingRedirect(decodeHTMLEntities(rawURL));
502
+ const [blockHTML, rawURL, rawTitle, rawSnippet = ""] = block;
503
+ if (isSponsoredBlock(blockHTML))
504
+ continue;
505
+ const unwrappedURL = unwrapBingRedirect(decodeHTMLEntities(rawURL));
506
+ const url = canonicalSearchResultUrl(unwrappedURL) ?? unwrappedURL;
270
507
  const title = cleanHTML(rawTitle);
271
508
  const snippet = cleanHTML(rawSnippet);
272
509
  if (url && title) {
@@ -297,15 +534,18 @@ function parseGoogleResults(html) {
297
534
  for (const regex of [blockRegex, fallbackBlockRegex]) {
298
535
  for (const block of html.matchAll(regex)) {
299
536
  const blockHTML = block[1];
537
+ if (isSponsoredBlock(blockHTML))
538
+ continue;
300
539
  const titleMatch = blockHTML.match(/<h3[^>]*>([\s\S]*?)<\/h3>/i);
301
540
  const linkMatch = blockHTML.match(/<a[^>]*href="([^"]+)"[^>]*>/i);
302
541
  if (!titleMatch || !linkMatch)
303
542
  continue;
304
543
  const snippetMatch = blockHTML.match(/<div[^>]*(?:class="[^"]*(?:VwiC3b|yDYNvb)[^"]*"|data-sncf="[^"]*")[^>]*>([\s\S]*?)<\/div>/i);
305
- const url = unwrapGoogleRedirect(decodeHTMLEntities(linkMatch[1]));
544
+ const unwrappedURL = unwrapGoogleRedirect(decodeHTMLEntities(linkMatch[1]));
545
+ const url = canonicalSearchResultUrl(unwrappedURL) ?? unwrappedURL;
306
546
  const title = cleanHTML(titleMatch[1]);
307
547
  const snippet = snippetMatch ? cleanHTML(snippetMatch[1]) : "";
308
- if (url.startsWith("http") && title) {
548
+ if (url && title) {
309
549
  results.push({ title, url, snippet });
310
550
  }
311
551
  }
@@ -315,10 +555,10 @@ function parseGoogleResults(html) {
315
555
  return results;
316
556
  }
317
557
  // ── Search cascade ───────────────────────────────────────
318
- async function performSearch(query, maxResults, signal) {
558
+ async function performSearch(query, maxResults, filters, signal) {
319
559
  for (const engine of ENGINES) {
320
560
  try {
321
- const { url, headers, method, body } = buildRequest(engine, query);
561
+ const { url, headers, method, body } = buildRequest(engine, query, filters);
322
562
  const { data: html, statusCode } = await fetchWithRetry(url, headers, signal, method, body);
323
563
  if (isRateLimited(statusCode, html))
324
564
  continue;
@@ -338,30 +578,76 @@ async function performSearch(query, maxResults, signal) {
338
578
  results = parseGoogleResults(html);
339
579
  break;
340
580
  }
341
- const filteredResults = filterSearchResults(results, maxResults);
342
- if (filteredResults.length > 0) {
343
- return { results: filteredResults, engine };
581
+ const filteredResults = filterSearchResults(results, maxResults, filters, query);
582
+ if (filteredResults.results.length > 0) {
583
+ return { results: filteredResults.results, engine, stats: filteredResults.stats };
344
584
  }
345
585
  }
346
586
  catch {
347
587
  // try next engine
348
588
  }
349
589
  }
350
- return { results: [], engine: "DuckDuckGo" };
590
+ return { results: [], engine: "DuckDuckGo", stats: emptyFilterStats() };
351
591
  }
352
592
  // ── Tool definition ──────────────────────────────────────
353
- const parameters = z.object({
593
+ const parameters = z
594
+ .object({
354
595
  query: z.string().describe("Search query"),
355
596
  max_results: z.number().optional().describe("Max results to return (default: 5, max: 20)"),
597
+ include_domains: z
598
+ .array(z.string())
599
+ .optional()
600
+ .describe("Only return results from these domains (mutually exclusive with exclude_domains)"),
601
+ exclude_domains: z
602
+ .array(z.string())
603
+ .optional()
604
+ .describe("Drop results from these domains (mutually exclusive with include_domains)"),
605
+ time_range: z
606
+ .enum(["day", "week", "month", "year"])
607
+ .optional()
608
+ .describe("Restrict results to a recency window"),
609
+ })
610
+ .refine((v) => !(v.include_domains?.length && v.exclude_domains?.length), {
611
+ message: "include_domains and exclude_domains are mutually exclusive.",
356
612
  });
613
+ function filtersFooter(filters) {
614
+ const parts = [];
615
+ if (filters.includeDomains.length > 0)
616
+ parts.push(`site:${filters.includeDomains.join(",")}`);
617
+ if (filters.excludeDomains.length > 0)
618
+ parts.push(`-site:${filters.excludeDomains.join(",")}`);
619
+ if (filters.timeRange)
620
+ parts.push(`past ${filters.timeRange}`);
621
+ return parts.length > 0 ? ` · ${parts.join(" · ")}` : "";
622
+ }
623
+ function statsFooter(stats) {
624
+ const parts = [];
625
+ if (stats.ads > 0)
626
+ parts.push(`filtered ${stats.ads} ad${stats.ads === 1 ? "" : "s"}`);
627
+ if (stats.spam > 0)
628
+ parts.push(`filtered ${stats.spam} spam result${stats.spam === 1 ? "" : "s"}`);
629
+ if (stats.duplicates > 0)
630
+ parts.push(`${stats.duplicates} duplicate${stats.duplicates === 1 ? "" : "s"}`);
631
+ if (stats.domainFiltered > 0) {
632
+ parts.push(`filtered ${stats.domainFiltered} by domain`);
633
+ }
634
+ return parts.length > 0 ? ` · ${parts.join(" · ")}` : "";
635
+ }
357
636
  export function createWebSearchTool() {
358
637
  return {
359
638
  name: "web_search",
360
- description: "Search the web and return results. Use for current information, recent events, or facts beyond your knowledge cutoff.",
639
+ description: "Search the web and return results. Use for current information, recent events, or facts " +
640
+ "beyond your knowledge cutoff. Supports include_domains / exclude_domains scoping (mutually " +
641
+ "exclusive) and a time_range recency filter (day|week|month|year).",
361
642
  parameters,
362
643
  async execute(args, context) {
363
644
  const maxResults = Math.min(args.max_results ?? 5, 20);
364
- const { results, engine } = await performSearch(args.query, maxResults, context.signal);
645
+ const filters = {
646
+ includeDomains: normalizeDomains(args.include_domains),
647
+ excludeDomains: normalizeDomains(args.exclude_domains),
648
+ ...(args.time_range ? { timeRange: args.time_range } : {}),
649
+ };
650
+ const { results, engine, stats } = await performSearch(args.query, maxResults, filters, context.signal);
365
651
  if (results.length === 0) {
366
652
  return `No search results found for: "${args.query}". All search engines were unavailable or returned no results.`;
367
653
  }
@@ -373,7 +659,7 @@ export function createWebSearchTool() {
373
659
  }
374
660
  output += "\n";
375
661
  }
376
- output += `(${results.length} results from ${engine})`;
662
+ output += `(${results.length} results from ${engine}${statsFooter(stats)}${filtersFooter(filters)})`;
377
663
  return output;
378
664
  },
379
665
  };
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}