webpeel 0.7.0 → 0.7.1

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 (72) hide show
  1. package/README.md +140 -500
  2. package/dist/cli-auth.d.ts +2 -0
  3. package/dist/cli-auth.d.ts.map +1 -1
  4. package/dist/cli-auth.js +16 -3
  5. package/dist/cli-auth.js.map +1 -1
  6. package/dist/cli.js +475 -77
  7. package/dist/cli.js.map +1 -1
  8. package/dist/core/actions.d.ts +19 -10
  9. package/dist/core/actions.d.ts.map +1 -1
  10. package/dist/core/actions.js +214 -43
  11. package/dist/core/actions.js.map +1 -1
  12. package/dist/core/agent.d.ts +60 -3
  13. package/dist/core/agent.d.ts.map +1 -1
  14. package/dist/core/agent.js +375 -86
  15. package/dist/core/agent.js.map +1 -1
  16. package/dist/core/answer.d.ts +43 -0
  17. package/dist/core/answer.d.ts.map +1 -0
  18. package/dist/core/answer.js +378 -0
  19. package/dist/core/answer.js.map +1 -0
  20. package/dist/core/cache.d.ts +14 -0
  21. package/dist/core/cache.d.ts.map +1 -0
  22. package/dist/core/cache.js +122 -0
  23. package/dist/core/cache.js.map +1 -0
  24. package/dist/core/dns-cache.d.ts +21 -0
  25. package/dist/core/dns-cache.d.ts.map +1 -0
  26. package/dist/core/dns-cache.js +184 -0
  27. package/dist/core/dns-cache.js.map +1 -0
  28. package/dist/core/documents.d.ts +24 -0
  29. package/dist/core/documents.d.ts.map +1 -0
  30. package/dist/core/documents.js +124 -0
  31. package/dist/core/documents.js.map +1 -0
  32. package/dist/core/extract-inline.d.ts +39 -0
  33. package/dist/core/extract-inline.d.ts.map +1 -0
  34. package/dist/core/extract-inline.js +214 -0
  35. package/dist/core/extract-inline.js.map +1 -0
  36. package/dist/core/fetcher.d.ts +33 -7
  37. package/dist/core/fetcher.d.ts.map +1 -1
  38. package/dist/core/fetcher.js +608 -41
  39. package/dist/core/fetcher.js.map +1 -1
  40. package/dist/core/jobs.d.ts +66 -0
  41. package/dist/core/jobs.d.ts.map +1 -0
  42. package/dist/core/jobs.js +513 -0
  43. package/dist/core/jobs.js.map +1 -0
  44. package/dist/core/markdown.d.ts.map +1 -1
  45. package/dist/core/markdown.js +141 -31
  46. package/dist/core/markdown.js.map +1 -1
  47. package/dist/core/pdf.d.ts.map +1 -1
  48. package/dist/core/pdf.js +3 -1
  49. package/dist/core/pdf.js.map +1 -1
  50. package/dist/core/screenshot.d.ts +33 -0
  51. package/dist/core/screenshot.d.ts.map +1 -0
  52. package/dist/core/screenshot.js +30 -0
  53. package/dist/core/screenshot.js.map +1 -0
  54. package/dist/core/search-provider.d.ts +46 -0
  55. package/dist/core/search-provider.d.ts.map +1 -0
  56. package/dist/core/search-provider.js +281 -0
  57. package/dist/core/search-provider.js.map +1 -0
  58. package/dist/core/strategies.d.ts +7 -10
  59. package/dist/core/strategies.d.ts.map +1 -1
  60. package/dist/core/strategies.js +370 -63
  61. package/dist/core/strategies.js.map +1 -1
  62. package/dist/index.d.ts +9 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +61 -32
  65. package/dist/index.js.map +1 -1
  66. package/dist/mcp/server.js +335 -70
  67. package/dist/mcp/server.js.map +1 -1
  68. package/dist/types.d.ts +43 -1
  69. package/dist/types.d.ts.map +1 -1
  70. package/dist/types.js.map +1 -1
  71. package/llms.txt +85 -47
  72. package/package.json +11 -5
@@ -2,43 +2,174 @@
2
2
  * Smart escalation strategy: try simple fetch first, escalate to browser if needed
3
3
  */
4
4
  import { simpleFetch, browserFetch, retryFetch } from './fetcher.js';
5
+ import { getCachedWithSWR, setCached, markRevalidating } from './cache.js';
6
+ import { resolveAndCache } from './dns-cache.js';
5
7
  import { BlockedError, NetworkError } from '../types.js';
6
- /**
7
- * Smart fetch with automatic escalation
8
- *
9
- * Strategy:
10
- * 1. Try simple HTTP fetch first (fast, ~200ms)
11
- * 2. If blocked (403, 503, Cloudflare, empty body) → try browser
12
- * 3. If browser gets blocked (403, CAPTCHA) → try stealth mode
13
- * 4. If stealth mode is explicitly requested → skip to stealth
14
- *
15
- * Returns the result along with which method worked
16
- */
17
- export async function smartFetch(url, options = {}) {
18
- const { forceBrowser = false, stealth = false, waitMs = 0, userAgent, timeoutMs = 30000, screenshot = false, screenshotFullPage = false, headers, cookies, actions, keepPageOpen = false, } = options;
19
- // If stealth is requested, force browser mode (stealth requires browser)
20
- const shouldUseBrowser = forceBrowser || screenshot || stealth;
21
- // Strategy 1: Simple fetch (unless browser is forced or screenshot is requested)
22
- if (!shouldUseBrowser) {
23
- try {
24
- const result = await retryFetch(() => simpleFetch(url, userAgent, timeoutMs, headers), 3);
25
- return {
26
- ...result,
27
- method: 'simple',
28
- };
8
+ const DOMAIN_INTEL_MAX = 500;
9
+ const DOMAIN_INTEL_TTL_MS = 60 * 60 * 1000; // 1 hour
10
+ const DOMAIN_INTEL_EMA_ALPHA = 0.3;
11
+ const domainIntel = new Map();
12
+ const domainMethodCounts = new Map();
13
+ function getDomainKey(url) {
14
+ try {
15
+ return new URL(url).hostname.toLowerCase();
16
+ }
17
+ catch {
18
+ return '';
19
+ }
20
+ }
21
+ function pruneDomainIntel(now) {
22
+ for (const [key, intel] of domainIntel) {
23
+ if (now - intel.lastSeen > DOMAIN_INTEL_TTL_MS) {
24
+ domainIntel.delete(key);
25
+ domainMethodCounts.delete(key);
29
26
  }
30
- catch (error) {
31
- // If blocked or needs JS, escalate to browser
32
- if (error instanceof BlockedError) {
33
- // Fall through to browser strategy
34
- }
35
- else {
36
- // Re-throw other errors (timeout, network errors)
37
- throw error;
38
- }
27
+ }
28
+ }
29
+ function recordDomainResult(url, method, latencyMs) {
30
+ const key = getDomainKey(url);
31
+ if (!key) {
32
+ return;
33
+ }
34
+ const now = Date.now();
35
+ pruneDomainIntel(now);
36
+ const existing = domainIntel.get(key);
37
+ const sanitizedLatency = Number.isFinite(latencyMs) && latencyMs > 0
38
+ ? latencyMs
39
+ : (existing?.avgLatencyMs ?? 0);
40
+ const next = existing
41
+ ? {
42
+ needsBrowser: existing.needsBrowser || method === 'browser' || method === 'stealth',
43
+ needsStealth: existing.needsStealth || method === 'stealth',
44
+ avgLatencyMs: existing.avgLatencyMs === 0
45
+ ? sanitizedLatency
46
+ : (existing.avgLatencyMs * (1 - DOMAIN_INTEL_EMA_ALPHA)) + (sanitizedLatency * DOMAIN_INTEL_EMA_ALPHA),
47
+ lastSeen: now,
48
+ sampleCount: existing.sampleCount + 1,
49
+ }
50
+ : {
51
+ needsBrowser: method === 'browser' || method === 'stealth',
52
+ needsStealth: method === 'stealth',
53
+ avgLatencyMs: sanitizedLatency,
54
+ lastSeen: now,
55
+ sampleCount: 1,
56
+ };
57
+ const existingCounts = domainMethodCounts.get(key) ?? { simple: 0, browser: 0, stealth: 0 };
58
+ existingCounts[method] += 1;
59
+ domainIntel.delete(key);
60
+ domainIntel.set(key, next);
61
+ domainMethodCounts.set(key, existingCounts);
62
+ while (domainIntel.size > DOMAIN_INTEL_MAX) {
63
+ const oldestKey = domainIntel.keys().next().value;
64
+ if (!oldestKey) {
65
+ break;
66
+ }
67
+ domainIntel.delete(oldestKey);
68
+ domainMethodCounts.delete(oldestKey);
69
+ }
70
+ }
71
+ function getDomainRecommendation(url) {
72
+ const key = getDomainKey(url);
73
+ if (!key) {
74
+ return null;
75
+ }
76
+ const intel = domainIntel.get(key);
77
+ if (!intel) {
78
+ return null;
79
+ }
80
+ const now = Date.now();
81
+ if (now - intel.lastSeen > DOMAIN_INTEL_TTL_MS) {
82
+ domainIntel.delete(key);
83
+ domainMethodCounts.delete(key);
84
+ return null;
85
+ }
86
+ if (intel.sampleCount <= 2) {
87
+ return null;
88
+ }
89
+ const counts = domainMethodCounts.get(key);
90
+ if (!counts) {
91
+ return null;
92
+ }
93
+ // LRU touch
94
+ domainIntel.delete(key);
95
+ domainIntel.set(key, intel);
96
+ const allStealth = counts.stealth === intel.sampleCount;
97
+ if (allStealth && intel.needsStealth) {
98
+ return { mode: 'stealth' };
99
+ }
100
+ const allBrowser = counts.simple === 0 && (counts.browser + counts.stealth === intel.sampleCount);
101
+ if (allBrowser && intel.needsBrowser) {
102
+ return { mode: 'browser' };
103
+ }
104
+ return null;
105
+ }
106
+ export function clearDomainIntel() {
107
+ domainIntel.clear();
108
+ domainMethodCounts.clear();
109
+ }
110
+ function shouldForceBrowser(url) {
111
+ try {
112
+ const hostname = new URL(url).hostname.toLowerCase();
113
+ // Reddit often returns an HTML shell via simple fetch; browser rendering is needed for real content
114
+ if (hostname === 'reddit.com' || hostname.endsWith('.reddit.com')) {
115
+ return { mode: 'browser' };
116
+ }
117
+ // npmjs blocks simple fetch with 403 frequently
118
+ if (hostname === 'npmjs.com' ||
119
+ hostname === 'www.npmjs.com' ||
120
+ hostname.endsWith('.npmjs.com')) {
121
+ return { mode: 'browser' };
122
+ }
123
+ // StackOverflow commonly serves shell-like content to simple fetch clients
124
+ // Note: NOT forced — let the shell-page detector escalate naturally
125
+ // since SO needs extra wait time that the escalation path handles better
126
+ // These are known to aggressively block automation; go straight to stealth
127
+ if (hostname === 'glassdoor.com' || hostname.endsWith('.glassdoor.com')) {
128
+ return { mode: 'stealth' };
129
+ }
130
+ if (hostname === 'bloomberg.com' || hostname.endsWith('.bloomberg.com')) {
131
+ return { mode: 'stealth' };
39
132
  }
133
+ // Indeed uses Cloudflare aggressively on job detail pages
134
+ if (hostname === 'indeed.com' || hostname.endsWith('.indeed.com')) {
135
+ return { mode: 'stealth' };
136
+ }
137
+ }
138
+ catch {
139
+ // Ignore URL parsing errors here; validation happens inside fetchers
140
+ }
141
+ return null;
142
+ }
143
+ function isAbortError(error) {
144
+ return error instanceof Error && error.name === 'AbortError';
145
+ }
146
+ function shouldEscalateSimpleError(error) {
147
+ if (error instanceof BlockedError) {
148
+ return true;
149
+ }
150
+ return error instanceof NetworkError && error.message.includes('TLS/SSL');
151
+ }
152
+ function looksLikeShellPage(result) {
153
+ const contentTypeLower = (result.contentType || '').toLowerCase();
154
+ if (!contentTypeLower.includes('html')) {
155
+ return false;
40
156
  }
41
- // Strategy 2: Browser fetch (with or without stealth)
157
+ const textContent = result.html.replace(/<[^>]*>/g, '').trim();
158
+ return textContent.length < 500 && result.html.length > 1000;
159
+ }
160
+ function prefetchDns(url) {
161
+ try {
162
+ const hostname = new URL(url).hostname;
163
+ void resolveAndCache(hostname).catch(() => {
164
+ // Best-effort optimization only.
165
+ });
166
+ }
167
+ catch {
168
+ // Ignore invalid URL here; fetchers handle validation.
169
+ }
170
+ }
171
+ async function fetchWithBrowserStrategy(url, options) {
172
+ const { userAgent, waitMs, timeoutMs, screenshot, screenshotFullPage, headers, cookies, actions, keepPageOpen, effectiveStealth, signal, } = options;
42
173
  try {
43
174
  const result = await browserFetch(url, {
44
175
  userAgent,
@@ -48,62 +179,238 @@ export async function smartFetch(url, options = {}) {
48
179
  screenshotFullPage,
49
180
  headers,
50
181
  cookies,
51
- stealth,
182
+ stealth: effectiveStealth,
52
183
  actions,
53
184
  keepPageOpen,
185
+ signal,
54
186
  });
55
187
  return {
56
188
  ...result,
57
- method: stealth ? 'stealth' : 'browser',
189
+ method: effectiveStealth ? 'stealth' : 'browser',
58
190
  };
59
191
  }
60
192
  catch (error) {
193
+ if (isAbortError(error)) {
194
+ throw error;
195
+ }
61
196
  // Strategy 3: If browser gets blocked, try stealth mode as fallback (unless already using stealth)
62
- if (!stealth && error instanceof BlockedError) {
63
- try {
64
- const result = await browserFetch(url, {
65
- userAgent,
66
- waitMs,
67
- timeoutMs,
68
- screenshot,
69
- screenshotFullPage,
70
- headers,
71
- cookies,
72
- stealth: true, // Escalate to stealth mode
73
- actions,
74
- keepPageOpen,
75
- });
76
- return {
77
- ...result,
78
- method: 'stealth',
79
- };
80
- }
81
- catch (stealthError) {
82
- // If stealth also fails, throw the original error
83
- throw stealthError;
84
- }
197
+ if (!effectiveStealth && error instanceof BlockedError) {
198
+ const result = await browserFetch(url, {
199
+ userAgent,
200
+ waitMs,
201
+ timeoutMs,
202
+ screenshot,
203
+ screenshotFullPage,
204
+ headers,
205
+ cookies,
206
+ stealth: true,
207
+ actions,
208
+ keepPageOpen,
209
+ signal,
210
+ });
211
+ return {
212
+ ...result,
213
+ method: 'stealth',
214
+ };
85
215
  }
86
216
  // If browser encounters Cloudflare, retry with extra wait time
87
- if (error instanceof NetworkError &&
88
- error.message.toLowerCase().includes('cloudflare')) {
217
+ if (error instanceof NetworkError && error.message.toLowerCase().includes('cloudflare')) {
89
218
  const result = await browserFetch(url, {
90
219
  userAgent,
91
- waitMs: 5000, // Wait 5s for Cloudflare challenge
220
+ waitMs: 5000,
92
221
  timeoutMs,
93
222
  screenshot,
94
223
  screenshotFullPage,
95
224
  headers,
96
225
  cookies,
97
- stealth, // Keep stealth setting
226
+ stealth: effectiveStealth,
98
227
  actions,
99
228
  keepPageOpen,
229
+ signal,
100
230
  });
101
231
  return {
102
232
  ...result,
103
- method: stealth ? 'stealth' : 'browser',
233
+ method: effectiveStealth ? 'stealth' : 'browser',
104
234
  };
105
235
  }
106
236
  throw error;
107
237
  }
108
238
  }
239
+ /**
240
+ * Smart fetch with automatic escalation
241
+ */
242
+ export async function smartFetch(url, options = {}) {
243
+ const { forceBrowser = false, stealth = false, waitMs = 0, userAgent, timeoutMs = 30000, screenshot = false, screenshotFullPage = false, headers, cookies, actions, keepPageOpen = false, noCache = false, raceTimeoutMs = 2000, } = options;
244
+ const fetchStartMs = Date.now();
245
+ const recordSuccessfulMethod = (method) => {
246
+ if (method === 'cached') {
247
+ return;
248
+ }
249
+ recordDomainResult(url, method, Date.now() - fetchStartMs);
250
+ };
251
+ // Site-specific escalation overrides
252
+ // Hardcoded rules take priority (manually verified), domain intel is fallback
253
+ const forced = shouldForceBrowser(url);
254
+ const recommended = getDomainRecommendation(url);
255
+ const selectedRecommendation = forced ?? recommended;
256
+ let effectiveForceBrowser = forceBrowser;
257
+ let effectiveStealth = stealth;
258
+ if (selectedRecommendation) {
259
+ effectiveForceBrowser = true;
260
+ if (selectedRecommendation.mode === 'stealth') {
261
+ effectiveStealth = true;
262
+ }
263
+ }
264
+ prefetchDns(url);
265
+ const canUseCache = !noCache &&
266
+ !effectiveForceBrowser &&
267
+ !effectiveStealth &&
268
+ !screenshot &&
269
+ !keepPageOpen &&
270
+ !actions?.length &&
271
+ !headers &&
272
+ !cookies &&
273
+ waitMs === 0 &&
274
+ !userAgent;
275
+ if (canUseCache) {
276
+ const cacheResult = getCachedWithSWR(url);
277
+ if (cacheResult) {
278
+ if (cacheResult.stale) {
279
+ // Stale-while-revalidate: serve stale immediately, refresh in background
280
+ if (markRevalidating(url)) {
281
+ // Fire-and-forget background revalidation
282
+ void (async () => {
283
+ try {
284
+ const freshResult = await simpleFetch(url, userAgent, timeoutMs);
285
+ if (!looksLikeShellPage(freshResult)) {
286
+ setCached(url, { ...freshResult, method: 'simple' });
287
+ }
288
+ }
289
+ catch {
290
+ // Background revalidation failed — stale entry continues serving
291
+ }
292
+ })();
293
+ }
294
+ }
295
+ return {
296
+ ...cacheResult.value,
297
+ method: 'cached',
298
+ };
299
+ }
300
+ }
301
+ // If stealth is requested, force browser mode (stealth requires browser)
302
+ let shouldUseBrowser = effectiveForceBrowser || screenshot || effectiveStealth;
303
+ const browserOptions = {
304
+ userAgent,
305
+ waitMs,
306
+ timeoutMs,
307
+ screenshot,
308
+ screenshotFullPage,
309
+ headers,
310
+ cookies,
311
+ actions,
312
+ keepPageOpen,
313
+ effectiveStealth,
314
+ };
315
+ // Strategy 1: Simple fetch (unless browser is forced or screenshot is requested)
316
+ if (!shouldUseBrowser) {
317
+ const simpleAbortController = new AbortController();
318
+ const simplePromise = retryFetch(() => simpleFetch(url, userAgent, timeoutMs, headers, simpleAbortController.signal), 3).then((result) => {
319
+ if (looksLikeShellPage(result)) {
320
+ throw new BlockedError('Shell page detected. Browser rendering required.');
321
+ }
322
+ return result;
323
+ });
324
+ let raceTimer;
325
+ const simpleOrTimeout = await Promise.race([
326
+ simplePromise
327
+ .then((result) => ({ type: 'simple-success', result }))
328
+ .catch((error) => ({ type: 'simple-error', error })),
329
+ new Promise((resolve) => {
330
+ raceTimer = setTimeout(() => resolve({ type: 'race-timeout' }), Math.max(raceTimeoutMs, 0));
331
+ }),
332
+ ]);
333
+ if (raceTimer) {
334
+ clearTimeout(raceTimer);
335
+ }
336
+ if (simpleOrTimeout.type === 'simple-success') {
337
+ const strategyResult = {
338
+ ...simpleOrTimeout.result,
339
+ method: 'simple',
340
+ };
341
+ if (canUseCache) {
342
+ setCached(url, strategyResult);
343
+ }
344
+ recordSuccessfulMethod('simple');
345
+ return strategyResult;
346
+ }
347
+ if (simpleOrTimeout.type === 'simple-error') {
348
+ if (!shouldEscalateSimpleError(simpleOrTimeout.error)) {
349
+ throw simpleOrTimeout.error;
350
+ }
351
+ shouldUseBrowser = true;
352
+ }
353
+ else {
354
+ // Simple fetch is slow - start browser in parallel and return whichever succeeds first.
355
+ const browserAbortController = new AbortController();
356
+ let simpleError;
357
+ let browserError;
358
+ const simpleCandidate = simplePromise
359
+ .then((result) => ({ source: 'simple', result }))
360
+ .catch((error) => {
361
+ simpleError = error;
362
+ throw error;
363
+ });
364
+ const browserCandidate = fetchWithBrowserStrategy(url, {
365
+ ...browserOptions,
366
+ signal: browserAbortController.signal,
367
+ })
368
+ .then((result) => ({ source: 'browser', result }))
369
+ .catch((error) => {
370
+ browserError = error;
371
+ throw error;
372
+ });
373
+ try {
374
+ const winner = await Promise.any([simpleCandidate, browserCandidate]);
375
+ if (winner.source === 'simple') {
376
+ browserAbortController.abort();
377
+ const strategyResult = {
378
+ ...winner.result,
379
+ method: 'simple',
380
+ };
381
+ if (canUseCache) {
382
+ setCached(url, strategyResult);
383
+ }
384
+ recordSuccessfulMethod('simple');
385
+ return strategyResult;
386
+ }
387
+ simpleAbortController.abort();
388
+ if (canUseCache) {
389
+ setCached(url, winner.result);
390
+ }
391
+ recordSuccessfulMethod(winner.result.method);
392
+ return winner.result;
393
+ }
394
+ catch {
395
+ // Both failed: prefer non-escalation simple errors, otherwise return browser-side error.
396
+ if (simpleError && !shouldEscalateSimpleError(simpleError) && !isAbortError(simpleError)) {
397
+ throw simpleError;
398
+ }
399
+ if (browserError) {
400
+ throw browserError;
401
+ }
402
+ if (simpleError) {
403
+ throw simpleError;
404
+ }
405
+ throw new Error('Both simple and browser fetch attempts failed');
406
+ }
407
+ }
408
+ }
409
+ const browserResult = await fetchWithBrowserStrategy(url, browserOptions);
410
+ if (canUseCache) {
411
+ setCached(url, browserResult);
412
+ }
413
+ recordSuccessfulMethod(browserResult.method);
414
+ return browserResult;
415
+ }
109
416
  //# sourceMappingURL=strategies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../src/core/strategies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../src/core/strategies.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Main library export
5
5
  */
6
- import { cleanup } from './core/fetcher.js';
6
+ import { cleanup, warmup, closePool } from './core/fetcher.js';
7
7
  import type { PeelOptions, PeelResult } from './types.js';
8
8
  export * from './types.js';
9
9
  export { crawl, type CrawlOptions, type CrawlResult, type CrawlProgress } from './core/crawler.js';
@@ -12,8 +12,13 @@ export { mapDomain, type MapOptions, type MapResult } from './core/map.js';
12
12
  export { extractBranding, type BrandingProfile } from './core/branding.js';
13
13
  export { trackChange, getSnapshot, clearSnapshots, type ChangeResult, type Snapshot } from './core/change-tracking.js';
14
14
  export { extractWithLLM } from './core/extract.js';
15
- export { runAgent, type AgentOptions, type AgentResult, type AgentProgress } from './core/agent.js';
15
+ export { extractDocumentToFormat, isPdfContentType, isDocxContentType, type DocumentExtractionResult } from './core/documents.js';
16
+ export { extractInlineJson, type InlineExtractOptions, type InlineExtractResult } from './core/extract-inline.js';
17
+ export { runAgent, type AgentOptions, type AgentResult, type AgentProgress, type AgentStreamEvent, type AgentDepth, type AgentTopic } from './core/agent.js';
16
18
  export { summarizeContent, type SummarizeOptions } from './core/summarize.js';
19
+ export { getSearchProvider, DuckDuckGoProvider, BraveSearchProvider, type SearchProvider, type SearchProviderId, type WebSearchResult, type WebSearchOptions, } from './core/search-provider.js';
20
+ export { answerQuestion, type AnswerRequest, type AnswerResponse, type AnswerCitation, type LLMProviderId, type TokensUsed, } from './core/answer.js';
21
+ export { searchJobs, type JobCard, type JobDetail, type JobSearchOptions, type JobSearchResult } from './core/jobs.js';
17
22
  /**
18
23
  * Fetch and extract content from a URL
19
24
  *
@@ -56,5 +61,6 @@ export declare function peelBatch(urls: string[], options?: PeelOptions & {
56
61
  * Clean up any browser resources
57
62
  * Call this when you're done using WebPeel
58
63
  */
59
- export { cleanup };
64
+ export { cleanup, warmup, closePool };
65
+ export { getCached, setCached, clearCache, setCacheTTL } from './core/cache.js';
60
66
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAErE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA+RtF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,CAAC,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAC,CAwB1D;AAED;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAErE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAClI,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAClH,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7J,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvH;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyTtF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,CAAC,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,CAAC,CAwB1D;AAED;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}