webpeel 0.8.1 → 0.9.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 (99) hide show
  1. package/README.md +39 -5
  2. package/dist/cli.js +1299 -85
  3. package/dist/cli.js.map +1 -1
  4. package/dist/core/application-tracker.d.ts +85 -0
  5. package/dist/core/application-tracker.d.ts.map +1 -0
  6. package/dist/core/application-tracker.js +184 -0
  7. package/dist/core/application-tracker.js.map +1 -0
  8. package/dist/core/apply.d.ts +163 -0
  9. package/dist/core/apply.d.ts.map +1 -0
  10. package/dist/core/apply.js +817 -0
  11. package/dist/core/apply.js.map +1 -0
  12. package/dist/core/branding.d.ts +1 -1
  13. package/dist/core/branding.d.ts.map +1 -1
  14. package/dist/core/budget.d.ts +43 -0
  15. package/dist/core/budget.d.ts.map +1 -0
  16. package/dist/core/budget.js +325 -0
  17. package/dist/core/budget.js.map +1 -0
  18. package/dist/core/challenge-detection.d.ts +27 -0
  19. package/dist/core/challenge-detection.d.ts.map +1 -0
  20. package/dist/core/challenge-detection.js +436 -0
  21. package/dist/core/challenge-detection.js.map +1 -0
  22. package/dist/core/change-tracking.d.ts.map +1 -1
  23. package/dist/core/change-tracking.js +10 -1
  24. package/dist/core/change-tracking.js.map +1 -1
  25. package/dist/core/crawler.d.ts.map +1 -1
  26. package/dist/core/crawler.js +17 -4
  27. package/dist/core/crawler.js.map +1 -1
  28. package/dist/core/diff.d.ts +62 -0
  29. package/dist/core/diff.d.ts.map +1 -0
  30. package/dist/core/diff.js +289 -0
  31. package/dist/core/diff.js.map +1 -0
  32. package/dist/core/extract-listings.d.ts +39 -0
  33. package/dist/core/extract-listings.d.ts.map +1 -0
  34. package/dist/core/extract-listings.js +331 -0
  35. package/dist/core/extract-listings.js.map +1 -0
  36. package/dist/core/extract.d.ts.map +1 -1
  37. package/dist/core/extract.js +15 -2
  38. package/dist/core/extract.js.map +1 -1
  39. package/dist/core/fetcher.d.ts +29 -3
  40. package/dist/core/fetcher.d.ts.map +1 -1
  41. package/dist/core/fetcher.js +158 -20
  42. package/dist/core/fetcher.js.map +1 -1
  43. package/dist/core/human.d.ts +176 -0
  44. package/dist/core/human.d.ts.map +1 -0
  45. package/dist/core/human.js +681 -0
  46. package/dist/core/human.js.map +1 -0
  47. package/dist/core/jobs.d.ts +12 -2
  48. package/dist/core/jobs.d.ts.map +1 -1
  49. package/dist/core/jobs.js +124 -2
  50. package/dist/core/jobs.js.map +1 -1
  51. package/dist/core/map.d.ts.map +1 -1
  52. package/dist/core/map.js +14 -2
  53. package/dist/core/map.js.map +1 -1
  54. package/dist/core/paginate.d.ts +32 -0
  55. package/dist/core/paginate.d.ts.map +1 -0
  56. package/dist/core/paginate.js +107 -0
  57. package/dist/core/paginate.js.map +1 -0
  58. package/dist/core/rate-governor.d.ts +81 -0
  59. package/dist/core/rate-governor.d.ts.map +1 -0
  60. package/dist/core/rate-governor.js +238 -0
  61. package/dist/core/rate-governor.js.map +1 -0
  62. package/dist/core/search-provider.d.ts +5 -0
  63. package/dist/core/search-provider.d.ts.map +1 -1
  64. package/dist/core/search-provider.js +81 -2
  65. package/dist/core/search-provider.js.map +1 -1
  66. package/dist/core/site-search.d.ts +45 -0
  67. package/dist/core/site-search.d.ts.map +1 -0
  68. package/dist/core/site-search.js +253 -0
  69. package/dist/core/site-search.js.map +1 -0
  70. package/dist/core/strategies.d.ts +8 -0
  71. package/dist/core/strategies.d.ts.map +1 -1
  72. package/dist/core/strategies.js +185 -45
  73. package/dist/core/strategies.js.map +1 -1
  74. package/dist/core/strategy-hooks.d.ts +6 -0
  75. package/dist/core/strategy-hooks.d.ts.map +1 -1
  76. package/dist/core/strategy-hooks.js.map +1 -1
  77. package/dist/core/table-format.d.ts +31 -0
  78. package/dist/core/table-format.d.ts.map +1 -0
  79. package/dist/core/table-format.js +147 -0
  80. package/dist/core/table-format.js.map +1 -0
  81. package/dist/core/user-agents.d.ts +58 -0
  82. package/dist/core/user-agents.d.ts.map +1 -0
  83. package/dist/core/user-agents.js +159 -0
  84. package/dist/core/user-agents.js.map +1 -0
  85. package/dist/core/watch.d.ts +100 -0
  86. package/dist/core/watch.d.ts.map +1 -0
  87. package/dist/core/watch.js +368 -0
  88. package/dist/core/watch.js.map +1 -0
  89. package/dist/index.d.ts +13 -2
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +41 -4
  92. package/dist/index.js.map +1 -1
  93. package/dist/mcp/server.js +3 -0
  94. package/dist/mcp/server.js.map +1 -1
  95. package/dist/types.d.ts +73 -0
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js.map +1 -1
  98. package/llms.txt +1 -1
  99. package/package.json +3 -3
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Rate Governor — controls application rate to stay within safe limits.
3
+ *
4
+ * Prevents over-application and bot-detection triggers by:
5
+ * - Capping daily application count
6
+ * - Enforcing minimum/maximum delays between applications
7
+ * - Restricting activity to configured active hours
8
+ * - Supporting optional weekday-only mode
9
+ * - Entering cooldown after a CAPTCHA / warning signal is detected
10
+ *
11
+ * State is persisted to ~/.webpeel/rate-state.json.
12
+ */
13
+ export interface RateConfig {
14
+ /** Max applications per day. Default: 5 */
15
+ maxPerDay: number;
16
+ /** Min delay between applications in ms. Default: 900000 (15 min) */
17
+ minDelayMs: number;
18
+ /** Max delay between applications in ms. Default: 2700000 (45 min) */
19
+ maxDelayMs: number;
20
+ /** Active hours range [start, end] in 24h format. Default: [9, 18] */
21
+ activeHours: [number, number];
22
+ /** Only apply on weekdays. Default: true */
23
+ weekdaysOnly: boolean;
24
+ /** Cooldown period after CAPTCHA/warning detection in ms. Default: 172800000 (48h) */
25
+ warningCooldownMs: number;
26
+ }
27
+ export interface RateState {
28
+ /** Applications submitted today (resets at midnight) */
29
+ todayCount: number;
30
+ /** Date string (YYYY-MM-DD) for today tracking */
31
+ todayDate: string;
32
+ /** Timestamp of last application */
33
+ lastApplyTimestamp: number;
34
+ /** Timestamp when cooldown expires (0 if no cooldown) */
35
+ cooldownUntil: number;
36
+ /** Total applications all time */
37
+ totalApplications: number;
38
+ }
39
+ export interface CanApplyResult {
40
+ allowed: boolean;
41
+ reason?: string;
42
+ /** Milliseconds to wait before trying again */
43
+ waitMs?: number;
44
+ }
45
+ export declare class RateGovernor {
46
+ private config;
47
+ private state;
48
+ constructor(config?: Partial<RateConfig>);
49
+ /**
50
+ * Check whether we are allowed to submit an application right now.
51
+ * Returns `{ allowed: true }` if all checks pass, otherwise returns
52
+ * `{ allowed: false, reason, waitMs }`.
53
+ */
54
+ canApply(): CanApplyResult;
55
+ /** Record a successful application submission. */
56
+ recordApplication(): void;
57
+ /**
58
+ * Record a warning signal (CAPTCHA detected, rate-limit notice, etc.).
59
+ * Activates a cooldown period to avoid further detection.
60
+ */
61
+ recordWarning(): void;
62
+ /** Get a snapshot of the current rate state. */
63
+ getState(): RateState;
64
+ /** Manually clear the active cooldown. */
65
+ resetCooldown(): void;
66
+ /**
67
+ * Calculate a randomised delay for the next application submission.
68
+ * Returns a value uniformly distributed between minDelayMs and maxDelayMs.
69
+ */
70
+ getNextDelay(): number;
71
+ /** Expose resolved config (useful for CLI display). */
72
+ getConfig(): RateConfig;
73
+ /** Reset today's counter if the calendar date has changed. */
74
+ private maybeResetDay;
75
+ private loadState;
76
+ private freshState;
77
+ private saveState;
78
+ }
79
+ /** Human-readable duration string from milliseconds. */
80
+ export declare function formatDuration(ms: number): string;
81
+ //# sourceMappingURL=rate-governor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-governor.d.ts","sourceRoot":"","sources":["../../src/core/rate-governor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuDD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAY;gBAEb,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IAQxC;;;;OAIG;IACH,QAAQ,IAAI,cAAc;IA0E1B,kDAAkD;IAClD,iBAAiB,IAAI,IAAI;IAQzB;;;OAGG;IACH,aAAa,IAAI,IAAI;IAKrB,gDAAgD;IAChD,QAAQ,IAAI,SAAS;IAKrB,0CAA0C;IAC1C,aAAa,IAAI,IAAI;IAKrB;;;OAGG;IACH,YAAY,IAAI,MAAM;IAKtB,uDAAuD;IACvD,SAAS,IAAI,UAAU;IAMvB,8DAA8D;IAC9D,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,SAAS;CASlB;AAID,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUjD"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Rate Governor — controls application rate to stay within safe limits.
3
+ *
4
+ * Prevents over-application and bot-detection triggers by:
5
+ * - Capping daily application count
6
+ * - Enforcing minimum/maximum delays between applications
7
+ * - Restricting activity to configured active hours
8
+ * - Supporting optional weekday-only mode
9
+ * - Entering cooldown after a CAPTCHA / warning signal is detected
10
+ *
11
+ * State is persisted to ~/.webpeel/rate-state.json.
12
+ */
13
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
14
+ import { homedir } from 'os';
15
+ import { join } from 'path';
16
+ // ── Defaults ───────────────────────────────────────────────────────────
17
+ const DEFAULT_CONFIG = {
18
+ maxPerDay: 5,
19
+ minDelayMs: 900_000, // 15 minutes
20
+ maxDelayMs: 2_700_000, // 45 minutes
21
+ activeHours: [9, 18],
22
+ weekdaysOnly: true,
23
+ warningCooldownMs: 172_800_000, // 48 hours
24
+ };
25
+ const WEBPEEL_DIR = join(homedir(), '.webpeel');
26
+ const RATE_STATE_PATH = join(WEBPEEL_DIR, 'rate-state.json');
27
+ // ── Helpers ────────────────────────────────────────────────────────────
28
+ /** Format a Date as YYYY-MM-DD in local time */
29
+ function toDateString(d) {
30
+ const y = d.getFullYear();
31
+ const m = String(d.getMonth() + 1).padStart(2, '0');
32
+ const day = String(d.getDate()).padStart(2, '0');
33
+ return `${y}-${m}-${day}`;
34
+ }
35
+ /** Milliseconds until the next occurrence of a given hour (local time) */
36
+ function msUntilHour(hour) {
37
+ const now = new Date();
38
+ const target = new Date(now);
39
+ target.setHours(hour, 0, 0, 0);
40
+ if (target <= now) {
41
+ target.setDate(target.getDate() + 1);
42
+ }
43
+ return target.getTime() - now.getTime();
44
+ }
45
+ /** Milliseconds until next weekday morning (Monday 9am) */
46
+ function msUntilNextWeekdayMorning(startHour) {
47
+ const now = new Date();
48
+ const target = new Date(now);
49
+ // Step forward day by day until we hit a weekday
50
+ for (let i = 1; i <= 7; i++) {
51
+ target.setDate(now.getDate() + i);
52
+ target.setHours(startHour, 0, 0, 0);
53
+ const dow = target.getDay(); // 0=Sun, 6=Sat
54
+ if (dow >= 1 && dow <= 5)
55
+ break;
56
+ }
57
+ return target.getTime() - now.getTime();
58
+ }
59
+ // ── RateGovernor class ─────────────────────────────────────────────────
60
+ export class RateGovernor {
61
+ config;
62
+ state;
63
+ constructor(config) {
64
+ this.config = { ...DEFAULT_CONFIG, ...config };
65
+ this.state = this.loadState();
66
+ this.maybeResetDay();
67
+ }
68
+ // ── Public API ───────────────────────────────────────────────────────
69
+ /**
70
+ * Check whether we are allowed to submit an application right now.
71
+ * Returns `{ allowed: true }` if all checks pass, otherwise returns
72
+ * `{ allowed: false, reason, waitMs }`.
73
+ */
74
+ canApply() {
75
+ const now = Date.now();
76
+ const nowDate = new Date();
77
+ // 1. Active cooldown check
78
+ if (this.state.cooldownUntil > 0 && now < this.state.cooldownUntil) {
79
+ const waitMs = this.state.cooldownUntil - now;
80
+ return {
81
+ allowed: false,
82
+ reason: `Warning cooldown active — resumes in ${formatDuration(waitMs)}`,
83
+ waitMs,
84
+ };
85
+ }
86
+ // 2. Weekday-only check
87
+ if (this.config.weekdaysOnly) {
88
+ const dow = nowDate.getDay(); // 0=Sun, 6=Sat
89
+ if (dow === 0 || dow === 6) {
90
+ const waitMs = msUntilNextWeekdayMorning(this.config.activeHours[0]);
91
+ return {
92
+ allowed: false,
93
+ reason: 'Weekday-only mode — today is a weekend',
94
+ waitMs,
95
+ };
96
+ }
97
+ }
98
+ // 3. Active hours check
99
+ const [startHour, endHour] = this.config.activeHours;
100
+ const currentHour = nowDate.getHours();
101
+ if (currentHour < startHour) {
102
+ const waitMs = msUntilHour(startHour);
103
+ return {
104
+ allowed: false,
105
+ reason: `Outside active hours — active between ${startHour}:00 and ${endHour}:00`,
106
+ waitMs,
107
+ };
108
+ }
109
+ if (currentHour >= endHour) {
110
+ // Past today's window; next window is tomorrow morning
111
+ const waitMs = msUntilHour(startHour) + 0; // already points to tomorrow
112
+ return {
113
+ allowed: false,
114
+ reason: `Outside active hours — active between ${startHour}:00 and ${endHour}:00`,
115
+ waitMs,
116
+ };
117
+ }
118
+ // 4. Daily cap check
119
+ if (this.state.todayCount >= this.config.maxPerDay) {
120
+ const waitMs = msUntilHour(startHour); // Try again tomorrow
121
+ return {
122
+ allowed: false,
123
+ reason: `Daily limit reached (${this.config.maxPerDay} applications today)`,
124
+ waitMs,
125
+ };
126
+ }
127
+ // 5. Minimum delay between applications
128
+ if (this.state.lastApplyTimestamp > 0) {
129
+ const elapsed = now - this.state.lastApplyTimestamp;
130
+ if (elapsed < this.config.minDelayMs) {
131
+ const waitMs = this.config.minDelayMs - elapsed;
132
+ return {
133
+ allowed: false,
134
+ reason: `Minimum delay not elapsed — please wait ${formatDuration(waitMs)}`,
135
+ waitMs,
136
+ };
137
+ }
138
+ }
139
+ return { allowed: true };
140
+ }
141
+ /** Record a successful application submission. */
142
+ recordApplication() {
143
+ this.maybeResetDay();
144
+ this.state.todayCount += 1;
145
+ this.state.lastApplyTimestamp = Date.now();
146
+ this.state.totalApplications += 1;
147
+ this.saveState();
148
+ }
149
+ /**
150
+ * Record a warning signal (CAPTCHA detected, rate-limit notice, etc.).
151
+ * Activates a cooldown period to avoid further detection.
152
+ */
153
+ recordWarning() {
154
+ this.state.cooldownUntil = Date.now() + this.config.warningCooldownMs;
155
+ this.saveState();
156
+ }
157
+ /** Get a snapshot of the current rate state. */
158
+ getState() {
159
+ this.maybeResetDay();
160
+ return { ...this.state };
161
+ }
162
+ /** Manually clear the active cooldown. */
163
+ resetCooldown() {
164
+ this.state.cooldownUntil = 0;
165
+ this.saveState();
166
+ }
167
+ /**
168
+ * Calculate a randomised delay for the next application submission.
169
+ * Returns a value uniformly distributed between minDelayMs and maxDelayMs.
170
+ */
171
+ getNextDelay() {
172
+ const range = this.config.maxDelayMs - this.config.minDelayMs;
173
+ return Math.floor(this.config.minDelayMs + Math.random() * range);
174
+ }
175
+ /** Expose resolved config (useful for CLI display). */
176
+ getConfig() {
177
+ return { ...this.config };
178
+ }
179
+ // ── Private helpers ──────────────────────────────────────────────────
180
+ /** Reset today's counter if the calendar date has changed. */
181
+ maybeResetDay() {
182
+ const today = toDateString(new Date());
183
+ if (this.state.todayDate !== today) {
184
+ this.state.todayCount = 0;
185
+ this.state.todayDate = today;
186
+ this.saveState();
187
+ }
188
+ }
189
+ loadState() {
190
+ try {
191
+ if (existsSync(RATE_STATE_PATH)) {
192
+ const raw = readFileSync(RATE_STATE_PATH, 'utf-8');
193
+ return JSON.parse(raw);
194
+ }
195
+ }
196
+ catch {
197
+ // Corrupt / missing state — start fresh
198
+ }
199
+ return this.freshState();
200
+ }
201
+ freshState() {
202
+ return {
203
+ todayCount: 0,
204
+ todayDate: toDateString(new Date()),
205
+ lastApplyTimestamp: 0,
206
+ cooldownUntil: 0,
207
+ totalApplications: 0,
208
+ };
209
+ }
210
+ saveState() {
211
+ try {
212
+ mkdirSync(WEBPEEL_DIR, { recursive: true });
213
+ writeFileSync(RATE_STATE_PATH, JSON.stringify(this.state, null, 2), 'utf-8');
214
+ }
215
+ catch (err) {
216
+ // Non-fatal — state will be recomputed on next run
217
+ console.error('[rate-governor] Failed to save state:', err);
218
+ }
219
+ }
220
+ }
221
+ // ── Utility ────────────────────────────────────────────────────────────
222
+ /** Human-readable duration string from milliseconds. */
223
+ export function formatDuration(ms) {
224
+ if (ms <= 0)
225
+ return '0s';
226
+ const seconds = Math.floor(ms / 1000);
227
+ if (seconds < 60)
228
+ return `${seconds}s`;
229
+ const minutes = Math.floor(seconds / 60);
230
+ if (minutes < 60)
231
+ return `${minutes}m ${seconds % 60}s`;
232
+ const hours = Math.floor(minutes / 60);
233
+ if (hours < 24)
234
+ return `${hours}h ${minutes % 60}m`;
235
+ const days = Math.floor(hours / 24);
236
+ return `${days}d ${hours % 24}h`;
237
+ }
238
+ //# sourceMappingURL=rate-governor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-governor.js","sourceRoot":"","sources":["../../src/core/rate-governor.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,11 @@ export declare class DuckDuckGoProvider implements SearchProvider {
35
35
  private buildQueryAttempts;
36
36
  private buildSearchUrl;
37
37
  private searchOnce;
38
+ /**
39
+ * Fallback: DuckDuckGo Lite endpoint. Different HTML structure, sometimes
40
+ * works when the main HTML endpoint is temporarily blocked on datacenter IPs.
41
+ */
42
+ private searchLite;
38
43
  searchWeb(query: string, options: WebSearchOptions): Promise<WebSearchResult[]>;
39
44
  }
40
45
  export declare class BraveSearchProvider implements SearchProvider {
@@ -1 +1 @@
1
- {"version":3,"file":"search-provider.d.ts","sourceRoot":"","sources":["../../src/core/search-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAEjC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACjF;AAwED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAgB;IAC7C,QAAQ,CAAC,cAAc,SAAS;IAEhC,OAAO,CAAC,kBAAkB;IA8C1B,OAAO,CAAC,cAAc;YAoBR,UAAU;IA8ElB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAWtF;AAED,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAW;IACxC,QAAQ,CAAC,cAAc,QAAQ;IAEzB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA8DtF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAMlF"}
1
+ {"version":3,"file":"search-provider.d.ts","sourceRoot":"","sources":["../../src/core/search-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAEjC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACjF;AAwED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAgB;IAC7C,QAAQ,CAAC,cAAc,SAAS;IAEhC,OAAO,CAAC,kBAAkB;IA8C1B,OAAO,CAAC,cAAc;YAoBR,UAAU;IAuFxB;;;OAGG;YACW,UAAU;IAiElB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAmBtF;AAED,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAW;IACxC,QAAQ,CAAC,cAAc,QAAQ;IAEzB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA8DtF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAMlF"}
@@ -135,11 +135,20 @@ export class DuckDuckGoProvider {
135
135
  async searchOnce(query, options) {
136
136
  const { count, signal } = options;
137
137
  const searchUrl = this.buildSearchUrl(query, options);
138
+ // Use realistic browser headers to avoid DDG bot detection on datacenter IPs
138
139
  const response = await undiciFetch(searchUrl, {
139
140
  headers: {
140
- 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
141
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
141
+ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
142
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
142
143
  'Accept-Language': 'en-US,en;q=0.9',
144
+ 'Accept-Encoding': 'gzip, deflate, br',
145
+ 'Cache-Control': 'no-cache',
146
+ 'Sec-Fetch-Dest': 'document',
147
+ 'Sec-Fetch-Mode': 'navigate',
148
+ 'Sec-Fetch-Site': 'none',
149
+ 'Sec-Fetch-User': '?1',
150
+ 'Upgrade-Insecure-Requests': '1',
151
+ 'Referer': 'https://duckduckgo.com/',
143
152
  },
144
153
  signal,
145
154
  });
@@ -201,6 +210,67 @@ export class DuckDuckGoProvider {
201
210
  });
202
211
  return results;
203
212
  }
213
+ /**
214
+ * Fallback: DuckDuckGo Lite endpoint. Different HTML structure, sometimes
215
+ * works when the main HTML endpoint is temporarily blocked on datacenter IPs.
216
+ */
217
+ async searchLite(query, options) {
218
+ const { count, signal } = options;
219
+ const params = new URLSearchParams();
220
+ params.set('q', query);
221
+ const response = await undiciFetch(`https://lite.duckduckgo.com/lite/?${params.toString()}`, {
222
+ headers: {
223
+ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
224
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
225
+ 'Accept-Language': 'en-US,en;q=0.9',
226
+ 'Referer': 'https://lite.duckduckgo.com/',
227
+ },
228
+ signal,
229
+ });
230
+ if (!response.ok)
231
+ return [];
232
+ const html = await response.text();
233
+ const $ = load(html);
234
+ const results = [];
235
+ const seen = new Set();
236
+ // DDG Lite uses a table-based layout with class="result-link" for links
237
+ // and class="result-snippet" for snippets
238
+ $('a.result-link').each((_i, elem) => {
239
+ if (results.length >= count)
240
+ return;
241
+ const $a = $(elem);
242
+ const title = cleanText($a.text(), { maxLen: 200 });
243
+ let url = $a.attr('href') || '';
244
+ if (!title || !url)
245
+ return;
246
+ // Extract actual URL from DDG redirect
247
+ try {
248
+ const ddgUrl = new URL(url, 'https://lite.duckduckgo.com');
249
+ const uddg = ddgUrl.searchParams.get('uddg');
250
+ if (uddg)
251
+ url = decodeURIComponent(uddg);
252
+ }
253
+ catch { /* use raw */ }
254
+ // Validate URL
255
+ try {
256
+ const parsed = new URL(url);
257
+ if (!['http:', 'https:'].includes(parsed.protocol))
258
+ return;
259
+ url = parsed.href;
260
+ }
261
+ catch {
262
+ return;
263
+ }
264
+ const dedupeKey = normalizeUrlForDedupe(url);
265
+ if (seen.has(dedupeKey))
266
+ return;
267
+ seen.add(dedupeKey);
268
+ // Lite snippets are in the next <td> with class result-snippet
269
+ const snippet = cleanText($a.closest('tr').next('tr').find('.result-snippet').text(), { maxLen: 500, stripEllipsisPadding: true });
270
+ results.push({ title, url, snippet });
271
+ });
272
+ return results;
273
+ }
204
274
  async searchWeb(query, options) {
205
275
  const attempts = this.buildQueryAttempts(query);
206
276
  // Retry only when DDG returns 0 results.
@@ -209,6 +279,15 @@ export class DuckDuckGoProvider {
209
279
  if (results.length > 0)
210
280
  return results;
211
281
  }
282
+ // Fallback: try DDG Lite endpoint (different HTML, sometimes bypasses blocks)
283
+ try {
284
+ const liteResults = await this.searchLite(query, options);
285
+ if (liteResults.length > 0)
286
+ return liteResults;
287
+ }
288
+ catch {
289
+ // Lite also failed — return empty
290
+ }
212
291
  return [];
213
292
  }
214
293
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search-provider.js","sourceRoot":"","sources":["../../src/core/search-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-provider.js","sourceRoot":"","sources":["../../src/core/search-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Site-Aware Search URL Builders
3
+ *
4
+ * Provides URL templates for popular websites so AI agents can search them
5
+ * without needing to know site-specific URL structures.
6
+ *
7
+ * @module site-search
8
+ */
9
+ export interface SiteSearchResult {
10
+ url: string;
11
+ site: string;
12
+ query: string;
13
+ }
14
+ export interface SiteTemplate {
15
+ name: string;
16
+ searchUrl: (query: string) => string;
17
+ category: 'shopping' | 'social' | 'jobs' | 'general' | 'tech' | 'real-estate' | 'food';
18
+ }
19
+ /**
20
+ * URL templates for popular sites, keyed by site ID.
21
+ * All query values are URL-encoded via encodeURIComponent.
22
+ */
23
+ export declare const SITE_TEMPLATES: Record<string, SiteTemplate>;
24
+ /**
25
+ * Build a search URL for a given site and query.
26
+ *
27
+ * @param site Site ID (e.g. "ebay", "amazon") or alias (e.g. "x")
28
+ * @param query Search query string
29
+ * @throws Error if the site is not recognized
30
+ */
31
+ export declare function buildSiteSearchUrl(site: string, query: string): SiteSearchResult;
32
+ /**
33
+ * List all available site templates in a flat array.
34
+ */
35
+ export declare function listSites(): Array<{
36
+ id: string;
37
+ name: string;
38
+ category: string;
39
+ }>;
40
+ /**
41
+ * Find which site ID a given URL belongs to (reverse lookup).
42
+ * Returns the canonical site ID, or null if the URL doesn't match any template.
43
+ */
44
+ export declare function findSiteByUrl(url: string): string | null;
45
+ //# sourceMappingURL=site-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-search.d.ts","sourceRoot":"","sources":["../../src/core/site-search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;CACxF;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAqJvD,CAAC;AAsBF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAgBhF;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAMjF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyCxD"}