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
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * /answer core implementation
3
+ *
4
+ * Flow:
5
+ * - search the web
6
+ * - fetch top sources via WebPeel
7
+ * - call an LLM (BYOK) to generate a cited answer
8
+ */
9
+ import { type SearchProviderId } from './search-provider.js';
10
+ export type LLMProviderId = 'openai' | 'anthropic' | 'google';
11
+ export interface TokensUsed {
12
+ input: number;
13
+ output: number;
14
+ }
15
+ export interface AnswerCitation {
16
+ title: string;
17
+ url: string;
18
+ snippet: string;
19
+ }
20
+ export interface AnswerRequest {
21
+ question: string;
22
+ searchProvider?: SearchProviderId;
23
+ searchApiKey?: string;
24
+ llmProvider: LLMProviderId;
25
+ llmApiKey: string;
26
+ llmModel?: string;
27
+ maxSources?: number;
28
+ stream?: boolean;
29
+ /** Called with incremental text when stream=true */
30
+ onChunk?: (text: string) => void;
31
+ /** Optional AbortSignal */
32
+ signal?: AbortSignal;
33
+ }
34
+ export interface AnswerResponse {
35
+ answer: string;
36
+ citations: AnswerCitation[];
37
+ searchProvider: SearchProviderId;
38
+ llmProvider: LLMProviderId;
39
+ llmModel: string;
40
+ tokensUsed: TokensUsed;
41
+ }
42
+ export declare function answerQuestion(req: AnswerRequest): Promise<AnswerResponse>;
43
+ //# sourceMappingURL=answer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.d.ts","sourceRoot":"","sources":["../../src/core/answer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAqB,KAAK,gBAAgB,EAAwB,MAAM,sBAAsB,CAAC;AAEtG,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,cAAc,EAAE,gBAAgB,CAAC;IACjC,WAAW,EAAE,aAAa,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;CACxB;AA2WD,wBAAsB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAwGhF"}
@@ -0,0 +1,378 @@
1
+ /**
2
+ * /answer core implementation
3
+ *
4
+ * Flow:
5
+ * - search the web
6
+ * - fetch top sources via WebPeel
7
+ * - call an LLM (BYOK) to generate a cited answer
8
+ */
9
+ import { peel } from '../index.js';
10
+ import { getSearchProvider } from './search-provider.js';
11
+ function defaultModelForProvider(provider) {
12
+ switch (provider) {
13
+ case 'openai':
14
+ return 'gpt-4o-mini';
15
+ case 'anthropic':
16
+ return 'claude-3-5-sonnet-latest';
17
+ case 'google':
18
+ return 'gemini-1.5-flash';
19
+ }
20
+ }
21
+ function clamp(n, min, max) {
22
+ return Math.min(Math.max(n, min), max);
23
+ }
24
+ function truncateChars(text, maxChars) {
25
+ if (text.length <= maxChars)
26
+ return text;
27
+ return text.slice(0, maxChars) + '\n\n[Truncated]';
28
+ }
29
+ async function fetchSources(results, maxSources, signal) {
30
+ const chosen = results.slice(0, maxSources);
31
+ // Fetch in parallel, but keep it modest to avoid resource spikes.
32
+ const concurrency = 3;
33
+ const out = [];
34
+ for (let i = 0; i < chosen.length; i += concurrency) {
35
+ const batch = chosen.slice(i, i + concurrency);
36
+ const settled = await Promise.allSettled(batch.map(async (r) => {
37
+ const timeoutMs = 30_000;
38
+ if (signal?.aborted) {
39
+ throw new Error('Aborted');
40
+ }
41
+ const pr = await peel(r.url, {
42
+ format: 'markdown',
43
+ maxTokens: 1800,
44
+ timeout: timeoutMs,
45
+ // Keep it cheap/fast by default; users can always refetch with render=true.
46
+ render: false,
47
+ });
48
+ return { result: r, content: pr.content };
49
+ }));
50
+ for (let j = 0; j < settled.length; j++) {
51
+ const s = settled[j];
52
+ if (s.status === 'fulfilled') {
53
+ out.push({
54
+ result: s.value.result,
55
+ content: s.value.content,
56
+ });
57
+ }
58
+ else {
59
+ out.push({
60
+ result: batch[j],
61
+ content: `[Failed to fetch: ${s.reason instanceof Error ? s.reason.message : 'Unknown error'}]`,
62
+ });
63
+ }
64
+ }
65
+ }
66
+ return out;
67
+ }
68
+ function buildCitedContext(sources) {
69
+ const parts = [];
70
+ sources.forEach((s, i) => {
71
+ const n = i + 1;
72
+ const title = s.result.title || '(untitled)';
73
+ const url = s.result.url;
74
+ const snippet = s.result.snippet || '';
75
+ parts.push(`SOURCE [${n}]\nTitle: ${title}\nURL: ${url}\nSnippet: ${truncateChars(snippet, 800)}\n\nContent (markdown):\n${truncateChars(s.content || '', 20_000)}`);
76
+ });
77
+ return parts.join('\n\n---\n\n');
78
+ }
79
+ async function readTextStream(body, onText, signal) {
80
+ const reader = body.getReader();
81
+ const decoder = new TextDecoder();
82
+ let buffer = '';
83
+ try {
84
+ while (true) {
85
+ if (signal?.aborted)
86
+ throw new Error('Aborted');
87
+ const { done, value } = await reader.read();
88
+ if (done)
89
+ break;
90
+ buffer += decoder.decode(value, { stream: true });
91
+ // Process complete SSE events separated by blank lines
92
+ while (true) {
93
+ const idx = buffer.indexOf('\n\n');
94
+ if (idx === -1)
95
+ break;
96
+ const event = buffer.slice(0, idx);
97
+ buffer = buffer.slice(idx + 2);
98
+ const lines = event.split('\n');
99
+ for (const line of lines) {
100
+ const trimmed = line.trim();
101
+ if (!trimmed.startsWith('data:'))
102
+ continue;
103
+ const data = trimmed.slice(5).trim();
104
+ onText(data);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ finally {
110
+ reader.releaseLock();
111
+ }
112
+ }
113
+ async function callOpenAI(params) {
114
+ const { apiKey, model, messages, stream, onChunk, signal } = params;
115
+ const resp = await fetch('https://api.openai.com/v1/chat/completions', {
116
+ method: 'POST',
117
+ headers: {
118
+ 'Content-Type': 'application/json',
119
+ 'Authorization': `Bearer ${apiKey}`,
120
+ },
121
+ body: JSON.stringify({
122
+ model,
123
+ messages,
124
+ temperature: 0.2,
125
+ stream,
126
+ }),
127
+ signal,
128
+ });
129
+ if (!resp.ok) {
130
+ const text = await resp.text().catch(() => '');
131
+ throw new Error(`OpenAI API error: HTTP ${resp.status}${text ? ` - ${text}` : ''}`);
132
+ }
133
+ if (!stream) {
134
+ const json = await resp.json();
135
+ const text = String(json?.choices?.[0]?.message?.content || '').trim();
136
+ const usage = {
137
+ input: Number(json?.usage?.prompt_tokens || 0),
138
+ output: Number(json?.usage?.completion_tokens || 0),
139
+ };
140
+ return { text, usage };
141
+ }
142
+ if (!resp.body)
143
+ throw new Error('OpenAI stream error: missing body');
144
+ let out = '';
145
+ let usage = { input: 0, output: 0 };
146
+ await readTextStream(resp.body, (data) => {
147
+ if (data === '[DONE]')
148
+ return;
149
+ let obj;
150
+ try {
151
+ obj = JSON.parse(data);
152
+ }
153
+ catch {
154
+ return;
155
+ }
156
+ const delta = obj?.choices?.[0]?.delta?.content;
157
+ if (typeof delta === 'string' && delta.length > 0) {
158
+ out += delta;
159
+ onChunk?.(delta);
160
+ }
161
+ if (obj?.usage) {
162
+ usage = {
163
+ input: Number(obj.usage.prompt_tokens || usage.input),
164
+ output: Number(obj.usage.completion_tokens || usage.output),
165
+ };
166
+ }
167
+ }, signal);
168
+ return { text: out.trim(), usage };
169
+ }
170
+ async function callAnthropic(params) {
171
+ const { apiKey, model, system, user, stream, onChunk, signal } = params;
172
+ const resp = await fetch('https://api.anthropic.com/v1/messages', {
173
+ method: 'POST',
174
+ headers: {
175
+ 'Content-Type': 'application/json',
176
+ 'x-api-key': apiKey,
177
+ 'anthropic-version': '2023-06-01',
178
+ ...(stream ? { 'Accept': 'text/event-stream' } : {}),
179
+ },
180
+ body: JSON.stringify({
181
+ model,
182
+ system,
183
+ messages: [{ role: 'user', content: user }],
184
+ max_tokens: 4096,
185
+ temperature: 0.2,
186
+ stream,
187
+ }),
188
+ signal,
189
+ });
190
+ if (!resp.ok) {
191
+ const text = await resp.text().catch(() => '');
192
+ throw new Error(`Anthropic API error: HTTP ${resp.status}${text ? ` - ${text}` : ''}`);
193
+ }
194
+ if (!stream) {
195
+ const json = await resp.json();
196
+ const blocks = Array.isArray(json?.content) ? json.content : [];
197
+ const text = blocks.map((b) => (typeof b?.text === 'string' ? b.text : '')).join('').trim();
198
+ const usage = {
199
+ input: Number(json?.usage?.input_tokens || 0),
200
+ output: Number(json?.usage?.output_tokens || 0),
201
+ };
202
+ return { text, usage };
203
+ }
204
+ if (!resp.body)
205
+ throw new Error('Anthropic stream error: missing body');
206
+ let out = '';
207
+ let usage = { input: 0, output: 0 };
208
+ await readTextStream(resp.body, (data) => {
209
+ let obj;
210
+ try {
211
+ obj = JSON.parse(data);
212
+ }
213
+ catch {
214
+ return;
215
+ }
216
+ // Streaming event types: content_block_delta, message_delta, message_stop, etc.
217
+ if (obj?.type === 'content_block_delta') {
218
+ const delta = obj?.delta?.text;
219
+ if (typeof delta === 'string' && delta.length > 0) {
220
+ out += delta;
221
+ onChunk?.(delta);
222
+ }
223
+ }
224
+ if (obj?.type === 'message_delta' && obj?.usage) {
225
+ usage = {
226
+ input: Number(obj.usage.input_tokens || usage.input),
227
+ output: Number(obj.usage.output_tokens || usage.output),
228
+ };
229
+ }
230
+ if (obj?.type === 'message_stop' && obj?.message?.usage) {
231
+ usage = {
232
+ input: Number(obj.message.usage.input_tokens || usage.input),
233
+ output: Number(obj.message.usage.output_tokens || usage.output),
234
+ };
235
+ }
236
+ }, signal);
237
+ return { text: out.trim(), usage };
238
+ }
239
+ async function callGoogle(params) {
240
+ const { apiKey, model, system, user, signal } = params;
241
+ const url = `https://generativelanguage.googleapis.com/v1beta/models/${encodeURIComponent(model)}:generateContent?key=${encodeURIComponent(apiKey)}`;
242
+ const resp = await fetch(url, {
243
+ method: 'POST',
244
+ headers: {
245
+ 'Content-Type': 'application/json',
246
+ },
247
+ body: JSON.stringify({
248
+ contents: [
249
+ {
250
+ role: 'user',
251
+ parts: [{ text: `${system}\n\n${user}` }],
252
+ },
253
+ ],
254
+ generationConfig: {
255
+ temperature: 0.2,
256
+ },
257
+ }),
258
+ signal,
259
+ });
260
+ if (!resp.ok) {
261
+ const text = await resp.text().catch(() => '');
262
+ throw new Error(`Google API error: HTTP ${resp.status}${text ? ` - ${text}` : ''}`);
263
+ }
264
+ const json = await resp.json();
265
+ const parts = json?.candidates?.[0]?.content?.parts;
266
+ const text = Array.isArray(parts)
267
+ ? parts.map((p) => (typeof p?.text === 'string' ? p.text : '')).join('')
268
+ : '';
269
+ const usage = {
270
+ input: Number(json?.usageMetadata?.promptTokenCount || 0),
271
+ output: Number(json?.usageMetadata?.candidatesTokenCount || 0),
272
+ };
273
+ return { text: String(text || '').trim(), usage };
274
+ }
275
+ function systemPrompt() {
276
+ return [
277
+ 'You are a helpful assistant that answers questions using ONLY the provided sources.',
278
+ 'You must cite sources using bracketed numbers like [1], [2], etc. corresponding to the sources list.',
279
+ 'If the sources do not contain the answer, say you do not know.',
280
+ 'Do not fabricate URLs or citations.',
281
+ ].join('\n');
282
+ }
283
+ export async function answerQuestion(req) {
284
+ const question = (req.question || '').trim();
285
+ if (!question)
286
+ throw new Error('Missing or invalid "question"');
287
+ if (question.length > 2000)
288
+ throw new Error('Question too long (max 2000 characters)');
289
+ const searchProvider = req.searchProvider || 'duckduckgo';
290
+ const maxSources = clamp(req.maxSources ?? 5, 1, 10);
291
+ const llmProvider = req.llmProvider;
292
+ const llmApiKey = (req.llmApiKey || '').trim();
293
+ if (!llmApiKey)
294
+ throw new Error('Missing or invalid "llmApiKey" (BYOK required)');
295
+ const llmModel = (req.llmModel || '').trim() || defaultModelForProvider(llmProvider);
296
+ // 1) Search
297
+ const provider = getSearchProvider(searchProvider);
298
+ const searchResults = await provider.searchWeb(question, {
299
+ count: maxSources,
300
+ apiKey: req.searchApiKey,
301
+ signal: req.signal,
302
+ });
303
+ const citations = searchResults.slice(0, maxSources).map((r) => ({
304
+ title: r.title,
305
+ url: r.url,
306
+ snippet: r.snippet,
307
+ }));
308
+ // 2) Fetch sources
309
+ const fetched = await fetchSources(searchResults, maxSources, req.signal);
310
+ const context = buildCitedContext(fetched);
311
+ // 3) LLM
312
+ const sys = systemPrompt();
313
+ const user = `Question:\n${question}\n\nSources:\n\n${context}\n\nWrite the best possible answer. Remember to cite sources like [1], [2].`;
314
+ const stream = req.stream === true;
315
+ let answer = '';
316
+ let tokensUsed = { input: 0, output: 0 };
317
+ if (llmProvider === 'openai') {
318
+ const messages = [
319
+ { role: 'system', content: sys },
320
+ { role: 'user', content: user },
321
+ ];
322
+ const r = await callOpenAI({
323
+ apiKey: llmApiKey,
324
+ model: llmModel,
325
+ messages,
326
+ stream,
327
+ onChunk: req.onChunk,
328
+ signal: req.signal,
329
+ });
330
+ answer = r.text;
331
+ tokensUsed = r.usage;
332
+ }
333
+ else if (llmProvider === 'anthropic') {
334
+ const r = await callAnthropic({
335
+ apiKey: llmApiKey,
336
+ model: llmModel,
337
+ system: sys,
338
+ user,
339
+ stream,
340
+ onChunk: req.onChunk,
341
+ signal: req.signal,
342
+ });
343
+ answer = r.text;
344
+ tokensUsed = r.usage;
345
+ }
346
+ else if (llmProvider === 'google') {
347
+ // Google streaming is not implemented here; when stream=true, the caller can
348
+ // still stream the final text in chunks.
349
+ const r = await callGoogle({
350
+ apiKey: llmApiKey,
351
+ model: llmModel,
352
+ system: sys,
353
+ user,
354
+ signal: req.signal,
355
+ });
356
+ answer = r.text;
357
+ tokensUsed = r.usage;
358
+ if (stream && req.onChunk) {
359
+ // Emit reasonable chunks so SSE clients can start rendering.
360
+ const chunkSize = 120;
361
+ for (let i = 0; i < answer.length; i += chunkSize) {
362
+ req.onChunk(answer.slice(i, i + chunkSize));
363
+ }
364
+ }
365
+ }
366
+ else {
367
+ throw new Error(`Unsupported llmProvider: ${llmProvider}`);
368
+ }
369
+ return {
370
+ answer,
371
+ citations,
372
+ searchProvider,
373
+ llmProvider,
374
+ llmModel,
375
+ tokensUsed,
376
+ };
377
+ }
378
+ //# sourceMappingURL=answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../src/core/answer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * In-memory LRU response cache.
3
+ */
4
+ export interface CacheResult<T = unknown> {
5
+ value: T;
6
+ stale: boolean;
7
+ }
8
+ export declare function getCached<T = unknown>(url: string): T | null;
9
+ export declare function getCachedWithSWR<T = unknown>(url: string): CacheResult<T> | null;
10
+ export declare function markRevalidating(url: string): boolean;
11
+ export declare function setCached<T = unknown>(url: string, result: T): void;
12
+ export declare function clearCache(): void;
13
+ export declare function setCacheTTL(ms: number): void;
14
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;CAChB;AAmFD,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAM5D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAEhF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAoCrD;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAEnE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAM5C"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * In-memory LRU response cache.
3
+ */
4
+ const MAX_ENTRIES = 1000;
5
+ const DEFAULT_TTL_MS = 5 * 60 * 1000; // 5 minutes
6
+ const STALE_WHILE_REVALIDATE_MS = 10 * 60 * 1000; // 10 minutes
7
+ const REVALIDATION_TIMEOUT_MS = 30 * 1000; // 30 seconds — reset revalidating flag if fetch hangs
8
+ let cacheTTL = DEFAULT_TTL_MS;
9
+ const responseCache = new Map();
10
+ function normalizeUrl(url) {
11
+ try {
12
+ const normalized = new URL(url);
13
+ normalized.hash = '';
14
+ normalized.hostname = normalized.hostname.toLowerCase();
15
+ if ((normalized.protocol === 'http:' && normalized.port === '80') ||
16
+ (normalized.protocol === 'https:' && normalized.port === '443')) {
17
+ normalized.port = '';
18
+ }
19
+ if (!normalized.pathname) {
20
+ normalized.pathname = '/';
21
+ }
22
+ const sortedParams = [...normalized.searchParams.entries()]
23
+ .sort(([a], [b]) => a.localeCompare(b));
24
+ normalized.search = '';
25
+ for (const [key, value] of sortedParams) {
26
+ normalized.searchParams.append(key, value);
27
+ }
28
+ return normalized.toString();
29
+ }
30
+ catch {
31
+ return url.trim();
32
+ }
33
+ }
34
+ function getCacheEntry(key) {
35
+ const entry = responseCache.get(key);
36
+ if (!entry) {
37
+ return null;
38
+ }
39
+ const ageMs = Date.now() - entry.timestamp;
40
+ const maxAgeMs = cacheTTL + STALE_WHILE_REVALIDATE_MS;
41
+ if (ageMs > maxAgeMs) {
42
+ responseCache.delete(key);
43
+ return null;
44
+ }
45
+ const stale = ageMs > cacheTTL;
46
+ // LRU touch: move to the end when read.
47
+ responseCache.delete(key);
48
+ responseCache.set(key, entry);
49
+ return {
50
+ value: entry.result,
51
+ stale,
52
+ };
53
+ }
54
+ function setCacheEntry(key, result) {
55
+ if (responseCache.has(key)) {
56
+ responseCache.delete(key);
57
+ }
58
+ responseCache.set(key, {
59
+ result,
60
+ timestamp: Date.now(),
61
+ });
62
+ while (responseCache.size > MAX_ENTRIES) {
63
+ const oldestKey = responseCache.keys().next().value;
64
+ if (!oldestKey) {
65
+ break;
66
+ }
67
+ responseCache.delete(oldestKey);
68
+ }
69
+ }
70
+ export function getCached(url) {
71
+ const entry = getCacheEntry(normalizeUrl(url));
72
+ if (!entry || entry.stale) {
73
+ return null;
74
+ }
75
+ return entry.value;
76
+ }
77
+ export function getCachedWithSWR(url) {
78
+ return getCacheEntry(normalizeUrl(url));
79
+ }
80
+ export function markRevalidating(url) {
81
+ const key = normalizeUrl(url);
82
+ const entry = responseCache.get(key);
83
+ if (!entry) {
84
+ return false;
85
+ }
86
+ const ageMs = Date.now() - entry.timestamp;
87
+ const maxAgeMs = cacheTTL + STALE_WHILE_REVALIDATE_MS;
88
+ if (ageMs > maxAgeMs) {
89
+ responseCache.delete(key);
90
+ return false;
91
+ }
92
+ const stale = ageMs > cacheTTL;
93
+ if (!stale) {
94
+ return false;
95
+ }
96
+ // If already revalidating, check if the attempt has timed out
97
+ if (entry.revalidating && entry.revalidatingAt) {
98
+ if (Date.now() - entry.revalidatingAt < REVALIDATION_TIMEOUT_MS) {
99
+ return false; // Still within timeout, don't retry
100
+ }
101
+ // Timed out — allow a new attempt
102
+ }
103
+ entry.revalidating = true;
104
+ entry.revalidatingAt = Date.now();
105
+ // LRU touch: move to the end when updated.
106
+ responseCache.delete(key);
107
+ responseCache.set(key, entry);
108
+ return true;
109
+ }
110
+ export function setCached(url, result) {
111
+ setCacheEntry(normalizeUrl(url), result);
112
+ }
113
+ export function clearCache() {
114
+ responseCache.clear();
115
+ }
116
+ export function setCacheTTL(ms) {
117
+ if (!Number.isFinite(ms) || ms <= 0) {
118
+ throw new Error('Cache TTL must be a positive number of milliseconds');
119
+ }
120
+ cacheTTL = ms;
121
+ }
122
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"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"}