@aria-cli/tools 1.0.11 → 1.0.13
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.
- package/dist-cjs/index.js +400 -436
- package/dist-cjs/network-runtime/index.js +8 -173
- package/package.json +6 -6
- package/dist-cjs/ask-user-interaction.js +0 -28
- package/dist-cjs/ask-user-interaction.js.map +0 -1
- package/dist-cjs/cache/web-cache.js +0 -71
- package/dist-cjs/cache/web-cache.js.map +0 -1
- package/dist-cjs/definitions/arion.js +0 -108
- package/dist-cjs/definitions/arion.js.map +0 -1
- package/dist-cjs/definitions/browser/browser.js +0 -422
- package/dist-cjs/definitions/browser/browser.js.map +0 -1
- package/dist-cjs/definitions/browser/index.js +0 -9
- package/dist-cjs/definitions/browser/index.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-downloads.js +0 -118
- package/dist-cjs/definitions/browser/pw-downloads.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-interactions.js +0 -214
- package/dist-cjs/definitions/browser/pw-interactions.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-responses.js +0 -85
- package/dist-cjs/definitions/browser/pw-responses.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-session.js +0 -327
- package/dist-cjs/definitions/browser/pw-session.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-shared.js +0 -73
- package/dist-cjs/definitions/browser/pw-shared.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-snapshot.js +0 -308
- package/dist-cjs/definitions/browser/pw-snapshot.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-state.js +0 -71
- package/dist-cjs/definitions/browser/pw-state.js.map +0 -1
- package/dist-cjs/definitions/browser/types.js +0 -6
- package/dist-cjs/definitions/browser/types.js.map +0 -1
- package/dist-cjs/definitions/code-intelligence.js +0 -474
- package/dist-cjs/definitions/code-intelligence.js.map +0 -1
- package/dist-cjs/definitions/core.js +0 -134
- package/dist-cjs/definitions/core.js.map +0 -1
- package/dist-cjs/definitions/delegation.js +0 -516
- package/dist-cjs/definitions/delegation.js.map +0 -1
- package/dist-cjs/definitions/deploy.js +0 -69
- package/dist-cjs/definitions/deploy.js.map +0 -1
- package/dist-cjs/definitions/filesystem.js +0 -200
- package/dist-cjs/definitions/filesystem.js.map +0 -1
- package/dist-cjs/definitions/frg.js +0 -67
- package/dist-cjs/definitions/frg.js.map +0 -1
- package/dist-cjs/definitions/index.js +0 -44
- package/dist-cjs/definitions/index.js.map +0 -1
- package/dist-cjs/definitions/memory.js +0 -127
- package/dist-cjs/definitions/memory.js.map +0 -1
- package/dist-cjs/definitions/messaging.js +0 -632
- package/dist-cjs/definitions/messaging.js.map +0 -1
- package/dist-cjs/definitions/meta.js +0 -353
- package/dist-cjs/definitions/meta.js.map +0 -1
- package/dist-cjs/definitions/network.js +0 -163
- package/dist-cjs/definitions/network.js.map +0 -1
- package/dist-cjs/definitions/outlook.js +0 -281
- package/dist-cjs/definitions/outlook.js.map +0 -1
- package/dist-cjs/definitions/patch/apply-patch.js +0 -192
- package/dist-cjs/definitions/patch/apply-patch.js.map +0 -1
- package/dist-cjs/definitions/patch/fuzzy-match.js +0 -173
- package/dist-cjs/definitions/patch/fuzzy-match.js.map +0 -1
- package/dist-cjs/definitions/patch/index.js +0 -6
- package/dist-cjs/definitions/patch/index.js.map +0 -1
- package/dist-cjs/definitions/patch/patch-parser.js +0 -216
- package/dist-cjs/definitions/patch/patch-parser.js.map +0 -1
- package/dist-cjs/definitions/patch/sandbox-paths.js +0 -114
- package/dist-cjs/definitions/patch/sandbox-paths.js.map +0 -1
- package/dist-cjs/definitions/process/index.js +0 -9
- package/dist-cjs/definitions/process/index.js.map +0 -1
- package/dist-cjs/definitions/process/process-registry.js +0 -232
- package/dist-cjs/definitions/process/process-registry.js.map +0 -1
- package/dist-cjs/definitions/process/process.js +0 -390
- package/dist-cjs/definitions/process/process.js.map +0 -1
- package/dist-cjs/definitions/process/pty-keys.js +0 -260
- package/dist-cjs/definitions/process/pty-keys.js.map +0 -1
- package/dist-cjs/definitions/process/session-slug.js +0 -146
- package/dist-cjs/definitions/process/session-slug.js.map +0 -1
- package/dist-cjs/definitions/quip.js +0 -199
- package/dist-cjs/definitions/quip.js.map +0 -1
- package/dist-cjs/definitions/search.js +0 -64
- package/dist-cjs/definitions/search.js.map +0 -1
- package/dist-cjs/definitions/session-history.js +0 -73
- package/dist-cjs/definitions/session-history.js.map +0 -1
- package/dist-cjs/definitions/shell.js +0 -185
- package/dist-cjs/definitions/shell.js.map +0 -1
- package/dist-cjs/definitions/slack.js +0 -184
- package/dist-cjs/definitions/slack.js.map +0 -1
- package/dist-cjs/definitions/web.js +0 -113
- package/dist-cjs/definitions/web.js.map +0 -1
- package/dist-cjs/executors/apply-patch.js +0 -939
- package/dist-cjs/executors/apply-patch.js.map +0 -1
- package/dist-cjs/executors/arion.js +0 -126
- package/dist-cjs/executors/arion.js.map +0 -1
- package/dist-cjs/executors/code-intelligence.js +0 -926
- package/dist-cjs/executors/code-intelligence.js.map +0 -1
- package/dist-cjs/executors/deploy.js +0 -870
- package/dist-cjs/executors/deploy.js.map +0 -1
- package/dist-cjs/executors/filesystem.js +0 -1168
- package/dist-cjs/executors/filesystem.js.map +0 -1
- package/dist-cjs/executors/frg-freshness.js +0 -628
- package/dist-cjs/executors/frg-freshness.js.map +0 -1
- package/dist-cjs/executors/frg.js +0 -335
- package/dist-cjs/executors/frg.js.map +0 -1
- package/dist-cjs/executors/index.js +0 -144
- package/dist-cjs/executors/index.js.map +0 -1
- package/dist-cjs/executors/learning-meta.js +0 -1166
- package/dist-cjs/executors/learning-meta.js.map +0 -1
- package/dist-cjs/executors/lsp-client.js +0 -311
- package/dist-cjs/executors/lsp-client.js.map +0 -1
- package/dist-cjs/executors/memory.js +0 -797
- package/dist-cjs/executors/memory.js.map +0 -1
- package/dist-cjs/executors/meta.js +0 -227
- package/dist-cjs/executors/meta.js.map +0 -1
- package/dist-cjs/executors/process-registry.js +0 -470
- package/dist-cjs/executors/process-registry.js.map +0 -1
- package/dist-cjs/executors/pty-session-store.js +0 -35
- package/dist-cjs/executors/pty-session-store.js.map +0 -1
- package/dist-cjs/executors/pty.js +0 -313
- package/dist-cjs/executors/pty.js.map +0 -1
- package/dist-cjs/executors/restart.js +0 -156
- package/dist-cjs/executors/restart.js.map +0 -1
- package/dist-cjs/executors/search-freshness.js +0 -235
- package/dist-cjs/executors/search-freshness.js.map +0 -1
- package/dist-cjs/executors/search-types.js +0 -57
- package/dist-cjs/executors/search-types.js.map +0 -1
- package/dist-cjs/executors/search.js +0 -103
- package/dist-cjs/executors/search.js.map +0 -1
- package/dist-cjs/executors/self-diagnose.js +0 -435
- package/dist-cjs/executors/self-diagnose.js.map +0 -1
- package/dist-cjs/executors/session-history.js +0 -321
- package/dist-cjs/executors/session-history.js.map +0 -1
- package/dist-cjs/executors/shell-safety.js +0 -479
- package/dist-cjs/executors/shell-safety.js.map +0 -1
- package/dist-cjs/executors/shell.js +0 -1002
- package/dist-cjs/executors/shell.js.map +0 -1
- package/dist-cjs/executors/utils.js +0 -74
- package/dist-cjs/executors/utils.js.map +0 -1
- package/dist-cjs/executors/web.js +0 -548
- package/dist-cjs/executors/web.js.map +0 -1
- package/dist-cjs/extraction/content-extraction.js +0 -244
- package/dist-cjs/extraction/content-extraction.js.map +0 -1
- package/dist-cjs/extraction/index.js +0 -9
- package/dist-cjs/extraction/index.js.map +0 -1
- package/dist-cjs/headless-control-contract.js +0 -973
- package/dist-cjs/headless-control-contract.js.map +0 -1
- package/dist-cjs/index.js.map +0 -1
- package/dist-cjs/local-control-http-auth.js +0 -6
- package/dist-cjs/local-control-http-auth.js.map +0 -1
- package/dist-cjs/mcp/client.js +0 -186
- package/dist-cjs/mcp/client.js.map +0 -1
- package/dist-cjs/mcp/connection.js +0 -485
- package/dist-cjs/mcp/connection.js.map +0 -1
- package/dist-cjs/mcp/index.js +0 -31
- package/dist-cjs/mcp/index.js.map +0 -1
- package/dist-cjs/mcp/jsonrpc.js +0 -149
- package/dist-cjs/mcp/jsonrpc.js.map +0 -1
- package/dist-cjs/mcp/types.js +0 -9
- package/dist-cjs/mcp/types.js.map +0 -1
- package/dist-cjs/network-control-adapter.js +0 -78
- package/dist-cjs/network-control-adapter.js.map +0 -1
- package/dist-cjs/network-runtime/address-types.js +0 -169
- package/dist-cjs/network-runtime/address-types.js.map +0 -1
- package/dist-cjs/network-runtime/db-owner-fencing.js +0 -77
- package/dist-cjs/network-runtime/db-owner-fencing.js.map +0 -1
- package/dist-cjs/network-runtime/delivery-receipts.js +0 -277
- package/dist-cjs/network-runtime/delivery-receipts.js.map +0 -1
- package/dist-cjs/network-runtime/direct-endpoint-authority.js +0 -30
- package/dist-cjs/network-runtime/direct-endpoint-authority.js.map +0 -1
- package/dist-cjs/network-runtime/index.js.map +0 -1
- package/dist-cjs/network-runtime/local-control-contract.js +0 -634
- package/dist-cjs/network-runtime/local-control-contract.js.map +0 -1
- package/dist-cjs/network-runtime/node-store-contract.js +0 -39
- package/dist-cjs/network-runtime/node-store-contract.js.map +0 -1
- package/dist-cjs/network-runtime/pair-route-contract.js +0 -81
- package/dist-cjs/network-runtime/pair-route-contract.js.map +0 -1
- package/dist-cjs/network-runtime/peer-capabilities.js +0 -38
- package/dist-cjs/network-runtime/peer-capabilities.js.map +0 -1
- package/dist-cjs/network-runtime/peer-principal-ref.js +0 -16
- package/dist-cjs/network-runtime/peer-principal-ref.js.map +0 -1
- package/dist-cjs/network-runtime/peer-state-machine.js +0 -130
- package/dist-cjs/network-runtime/peer-state-machine.js.map +0 -1
- package/dist-cjs/network-runtime/protocol-schemas.js +0 -213
- package/dist-cjs/network-runtime/protocol-schemas.js.map +0 -1
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.js +0 -64
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.js.map +0 -1
- package/dist-cjs/outlook/desktop-session.js +0 -319
- package/dist-cjs/outlook/desktop-session.js.map +0 -1
- package/dist-cjs/policy.js +0 -156
- package/dist-cjs/policy.js.map +0 -1
- package/dist-cjs/providers/brave.js +0 -67
- package/dist-cjs/providers/brave.js.map +0 -1
- package/dist-cjs/providers/duckduckgo.js +0 -181
- package/dist-cjs/providers/duckduckgo.js.map +0 -1
- package/dist-cjs/providers/exa.js +0 -68
- package/dist-cjs/providers/exa.js.map +0 -1
- package/dist-cjs/providers/firecrawl.js +0 -60
- package/dist-cjs/providers/firecrawl.js.map +0 -1
- package/dist-cjs/providers/index.js +0 -18
- package/dist-cjs/providers/index.js.map +0 -1
- package/dist-cjs/providers/jina.js +0 -54
- package/dist-cjs/providers/jina.js.map +0 -1
- package/dist-cjs/providers/router.js +0 -101
- package/dist-cjs/providers/router.js.map +0 -1
- package/dist-cjs/providers/search-provider.js +0 -37
- package/dist-cjs/providers/search-provider.js.map +0 -1
- package/dist-cjs/providers/tavily.js +0 -59
- package/dist-cjs/providers/tavily.js.map +0 -1
- package/dist-cjs/quip/desktop-session.js +0 -354
- package/dist-cjs/quip/desktop-session.js.map +0 -1
- package/dist-cjs/registry/index.js +0 -7
- package/dist-cjs/registry/index.js.map +0 -1
- package/dist-cjs/registry/registry.js +0 -762
- package/dist-cjs/registry/registry.js.map +0 -1
- package/dist-cjs/runtime-socket-local-control-client.js +0 -368
- package/dist-cjs/runtime-socket-local-control-client.js.map +0 -1
- package/dist-cjs/security/dns-normalization.js +0 -23
- package/dist-cjs/security/dns-normalization.js.map +0 -1
- package/dist-cjs/security/dns-pinning.js +0 -161
- package/dist-cjs/security/dns-pinning.js.map +0 -1
- package/dist-cjs/security/external-content.js +0 -96
- package/dist-cjs/security/external-content.js.map +0 -1
- package/dist-cjs/security/ssrf.js +0 -222
- package/dist-cjs/security/ssrf.js.map +0 -1
- package/dist-cjs/slack/desktop-session.js +0 -367
- package/dist-cjs/slack/desktop-session.js.map +0 -1
- package/dist-cjs/tool-factory.js +0 -51
- package/dist-cjs/tool-factory.js.map +0 -1
- package/dist-cjs/types.js +0 -9
- package/dist-cjs/types.js.map +0 -1
- package/dist-cjs/utils/retry.js +0 -170
- package/dist-cjs/utils/retry.js.map +0 -1
- package/dist-cjs/utils/safe-parse-json.js +0 -165
- package/dist-cjs/utils/safe-parse-json.js.map +0 -1
- package/dist-cjs/utils/url.js +0 -24
- package/dist-cjs/utils/url.js.map +0 -1
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DuckDuckGoSearchProvider = void 0;
|
|
4
|
-
const search_provider_js_1 = require("./search-provider.js");
|
|
5
|
-
class DuckDuckGoSearchProvider {
|
|
6
|
-
name = "duckduckgo";
|
|
7
|
-
requiresApiKey = false;
|
|
8
|
-
priority = 6;
|
|
9
|
-
isAvailable() {
|
|
10
|
-
// DuckDuckGo is always available (no API key required)
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
async search(query, options) {
|
|
14
|
-
const limit = options?.limit ?? 5;
|
|
15
|
-
// DuckDuckGo HTML search endpoint (we'll parse the HTML response)
|
|
16
|
-
// The Instant Answer API doesn't provide web search results, only factoids
|
|
17
|
-
const url = new URL("https://html.duckduckgo.com/html/");
|
|
18
|
-
url.searchParams.set("q", query);
|
|
19
|
-
const { signal, cleanup } = (0, search_provider_js_1.createProviderAbortSignal)(30_000, options?.signal);
|
|
20
|
-
try {
|
|
21
|
-
const response = await fetch(url.toString(), {
|
|
22
|
-
method: "GET",
|
|
23
|
-
signal,
|
|
24
|
-
headers: {
|
|
25
|
-
"User-Agent": "Mozilla/5.0 (compatible; ARIA/1.0)",
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
if (!response.ok) {
|
|
29
|
-
throw new Error(`DuckDuckGo Search error: ${response.status} ${response.statusText}`);
|
|
30
|
-
}
|
|
31
|
-
const html = await response.text();
|
|
32
|
-
// Parse HTML to extract search results
|
|
33
|
-
// DuckDuckGo HTML results have result__a (title/url) and result__snippet (description)
|
|
34
|
-
const results = [];
|
|
35
|
-
// First pass: extract all result__a links (title + url)
|
|
36
|
-
const linkMap = new Map();
|
|
37
|
-
const linkRegex = /<a(?=[^>]*\bclass=(["'])[^"']*\bresult__a\b[^"']*\1)(?=[^>]*\bhref=(["'])(.*?)\2)[^>]*>([\s\S]*?)<\/a>/gi;
|
|
38
|
-
let match;
|
|
39
|
-
let resultAnchorCount = 0;
|
|
40
|
-
while ((match = linkRegex.exec(html)) !== null) {
|
|
41
|
-
const rawHref = match[3];
|
|
42
|
-
const rawTitle = match[4];
|
|
43
|
-
if (!rawHref || !rawTitle) {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
resultAnchorCount++;
|
|
47
|
-
const url = this.resolveDuckDuckGoResultUrl(rawHref);
|
|
48
|
-
if (!url) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
const title = this.stripHtmlTags(rawTitle);
|
|
52
|
-
if (!title) {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
linkMap.set(url, { title, url });
|
|
56
|
-
}
|
|
57
|
-
// If DDG returned result anchors but we extracted zero usable URLs, parsing is stale.
|
|
58
|
-
// Throw to allow router fallback rather than silently returning empty results.
|
|
59
|
-
if (resultAnchorCount > 0 && linkMap.size === 0) {
|
|
60
|
-
throw new Error("Could not resolve any result URLs from DuckDuckGo response");
|
|
61
|
-
}
|
|
62
|
-
// Second pass: extract snippets
|
|
63
|
-
const snippetRegex = /<(?:a|div|span)(?=[^>]*\bclass=(["'])[^"']*\bresult__snippet\b[^"']*\1)[^>]*>([\s\S]*?)<\/(?:a|div|span)>/gi;
|
|
64
|
-
const snippets = [];
|
|
65
|
-
while ((match = snippetRegex.exec(html)) !== null) {
|
|
66
|
-
const rawSnippet = match[2];
|
|
67
|
-
snippets.push(this.stripHtmlTags(rawSnippet ?? ""));
|
|
68
|
-
}
|
|
69
|
-
// Combine results (matching by order, which should align)
|
|
70
|
-
const linkEntries = Array.from(linkMap.values());
|
|
71
|
-
for (let i = 0; i < Math.min(linkEntries.length, limit); i++) {
|
|
72
|
-
const link = linkEntries[i];
|
|
73
|
-
if (!link) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const snippet = snippets[i] || link.title;
|
|
77
|
-
results.push({
|
|
78
|
-
title: link.title,
|
|
79
|
-
url: link.url,
|
|
80
|
-
content: snippet,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
return results;
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
cleanup();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Strip HTML tags from a string
|
|
91
|
-
*/
|
|
92
|
-
stripHtmlTags(html) {
|
|
93
|
-
return html
|
|
94
|
-
.replace(/<[^>]*>/g, "")
|
|
95
|
-
.replace(/ /g, " ")
|
|
96
|
-
.replace(/&/g, "&")
|
|
97
|
-
.replace(/</g, "<")
|
|
98
|
-
.replace(/>/g, ">")
|
|
99
|
-
.replace(/"/g, '"')
|
|
100
|
-
.replace(/'/g, "'")
|
|
101
|
-
.trim();
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Decode HTML entities in URLs
|
|
105
|
-
*/
|
|
106
|
-
decodeHtmlEntities(text) {
|
|
107
|
-
return text
|
|
108
|
-
.replace(/&/g, "&")
|
|
109
|
-
.replace(/</g, "<")
|
|
110
|
-
.replace(/>/g, ">")
|
|
111
|
-
.replace(/"/g, '"')
|
|
112
|
-
.replace(/'/g, "'");
|
|
113
|
-
}
|
|
114
|
-
resolveDuckDuckGoResultUrl(rawHref) {
|
|
115
|
-
const decodedHref = this.decodeHtmlEntities(rawHref).trim();
|
|
116
|
-
if (!decodedHref) {
|
|
117
|
-
return null;
|
|
118
|
-
}
|
|
119
|
-
let absoluteHref = decodedHref;
|
|
120
|
-
if (absoluteHref.startsWith("//")) {
|
|
121
|
-
absoluteHref = `https:${absoluteHref}`;
|
|
122
|
-
}
|
|
123
|
-
else if (absoluteHref.startsWith("/")) {
|
|
124
|
-
absoluteHref = `https://duckduckgo.com${absoluteHref}`;
|
|
125
|
-
}
|
|
126
|
-
let parsed;
|
|
127
|
-
try {
|
|
128
|
-
parsed = new URL(absoluteHref);
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
const hostname = parsed.hostname.toLowerCase();
|
|
134
|
-
if (hostname === "duckduckgo.com" || hostname.endsWith(".duckduckgo.com")) {
|
|
135
|
-
const redirected = parsed.searchParams.get("uddg");
|
|
136
|
-
if (!redirected) {
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
return this.normalizeResultUrl(redirected);
|
|
140
|
-
}
|
|
141
|
-
return this.normalizeResultUrl(absoluteHref);
|
|
142
|
-
}
|
|
143
|
-
normalizeResultUrl(candidate) {
|
|
144
|
-
let value = candidate.trim();
|
|
145
|
-
if (!value) {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
if (value.startsWith("//")) {
|
|
149
|
-
value = `https:${value}`;
|
|
150
|
-
}
|
|
151
|
-
// Some uddg values are encoded multiple times; decode at most twice.
|
|
152
|
-
for (let i = 0; i < 2; i++) {
|
|
153
|
-
try {
|
|
154
|
-
const decoded = decodeURIComponent(value);
|
|
155
|
-
if (decoded === value) {
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
value = decoded;
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
try {
|
|
165
|
-
const parsed = new URL(value);
|
|
166
|
-
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
|
-
const hostname = parsed.hostname.toLowerCase();
|
|
170
|
-
if (hostname === "duckduckgo.com" || hostname.endsWith(".duckduckgo.com")) {
|
|
171
|
-
return null;
|
|
172
|
-
}
|
|
173
|
-
return parsed.toString();
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
return null;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
exports.DuckDuckGoSearchProvider = DuckDuckGoSearchProvider;
|
|
181
|
-
//# sourceMappingURL=duckduckgo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckduckgo.js","sourceRoot":"","sources":["../../src/providers/duckduckgo.ts"],"names":[],"mappings":";;;AACA,6DAAiE;AAEjE,MAAa,wBAAwB;IAC1B,IAAI,GAAG,YAAY,CAAC;IACpB,cAAc,GAAG,KAAK,CAAC;IACvB,QAAQ,GAAG,CAAC,CAAC;IAEtB,WAAW;QACT,uDAAuD;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;QACjD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAElC,kEAAkE;QAClE,2EAA2E;QAC3E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACzD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,8CAAyB,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC3C,MAAM,EAAE,KAAK;gBACb,MAAM;gBACN,OAAO,EAAE;oBACP,YAAY,EAAE,oCAAoC;iBACnD;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,uCAAuC;YACvC,uFAAuF;YACvF,MAAM,OAAO,GAAmB,EAAE,CAAC;YAEnC,wDAAwD;YACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;YAClE,MAAM,SAAS,GACb,0GAA0G,CAAC;YAC7G,IAAI,KAAK,CAAC;YACV,IAAI,iBAAiB,GAAG,CAAC,CAAC;YAC1B,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,iBAAiB,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,SAAS;gBACX,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACnC,CAAC;YAED,sFAAsF;YACtF,+EAA+E;YAC/E,IAAI,iBAAiB,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,CAAC;YAED,gCAAgC;YAChC,MAAM,YAAY,GAChB,6GAA6G,CAAC;YAChH,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,0DAA0D;YAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAY;QAChC,OAAO,IAAI;aACR,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,IAAI,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAY;QACrC,OAAO,IAAI;aACR,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEO,0BAA0B,CAAC,OAAe;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,YAAY,GAAG,WAAW,CAAC;QAC/B,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC;QACzC,CAAC;aAAM,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,YAAY,GAAG,yBAAyB,YAAY,EAAE,CAAC;QACzD,CAAC;QAED,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,QAAQ,KAAK,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAEO,kBAAkB,CAAC,SAAiB;QAC1C,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,qEAAqE;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACtB,MAAM;gBACR,CAAC;gBACD,KAAK,GAAG,OAAO,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAChE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,QAAQ,KAAK,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC1E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAnMD,4DAmMC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExaSearchProvider = void 0;
|
|
4
|
-
const search_provider_js_1 = require("./search-provider.js");
|
|
5
|
-
class ExaSearchProvider {
|
|
6
|
-
env;
|
|
7
|
-
name = "exa";
|
|
8
|
-
requiresApiKey = true;
|
|
9
|
-
priority = 3;
|
|
10
|
-
constructor(env = process.env) {
|
|
11
|
-
this.env = env;
|
|
12
|
-
}
|
|
13
|
-
isAvailable() {
|
|
14
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).EXA_API_KEY;
|
|
15
|
-
return Boolean(apiKey && apiKey.trim().length > 0);
|
|
16
|
-
}
|
|
17
|
-
async search(query, options) {
|
|
18
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).EXA_API_KEY;
|
|
19
|
-
if (!apiKey) {
|
|
20
|
-
throw new Error("EXA_API_KEY environment variable is not set");
|
|
21
|
-
}
|
|
22
|
-
const limit = options?.limit ?? 5;
|
|
23
|
-
const body = {
|
|
24
|
-
query,
|
|
25
|
-
numResults: limit,
|
|
26
|
-
useAutoprompt: true,
|
|
27
|
-
contents: {
|
|
28
|
-
text: true,
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
// Domain filtering
|
|
32
|
-
if (options?.domains) {
|
|
33
|
-
body.includeDomains = options.domains;
|
|
34
|
-
}
|
|
35
|
-
if (options?.excludeDomains) {
|
|
36
|
-
body.excludeDomains = options.excludeDomains;
|
|
37
|
-
}
|
|
38
|
-
const { signal, cleanup } = (0, search_provider_js_1.createProviderAbortSignal)(30_000, options?.signal);
|
|
39
|
-
try {
|
|
40
|
-
const response = await fetch("https://api.exa.ai/search", {
|
|
41
|
-
method: "POST",
|
|
42
|
-
headers: {
|
|
43
|
-
"Content-Type": "application/json",
|
|
44
|
-
"x-api-key": apiKey,
|
|
45
|
-
},
|
|
46
|
-
body: JSON.stringify(body),
|
|
47
|
-
signal,
|
|
48
|
-
});
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
throw new Error(`Exa Search API error: ${response.status} ${response.statusText}`);
|
|
51
|
-
}
|
|
52
|
-
const json = await response.json();
|
|
53
|
-
const results = (json.results || []);
|
|
54
|
-
return results.map((r) => ({
|
|
55
|
-
title: r.title,
|
|
56
|
-
url: r.url,
|
|
57
|
-
content: r.text || "",
|
|
58
|
-
score: r.score,
|
|
59
|
-
publishedDate: r.publishedDate,
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
finally {
|
|
63
|
-
cleanup();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.ExaSearchProvider = ExaSearchProvider;
|
|
68
|
-
//# sourceMappingURL=exa.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exa.js","sourceRoot":"","sources":["../../src/providers/exa.ts"],"names":[],"mappings":";;;AAMA,6DAA2F;AAE3F,MAAa,iBAAiB;IAMT;IALV,IAAI,GAAG,KAAK,CAAC;IACb,cAAc,GAAG,IAAI,CAAC;IACtB,QAAQ,GAAG,CAAC,CAAC;IAEtB,YACmB,MAA8D,OAAO,CAAC,GAAG;QAAzE,QAAG,GAAH,GAAG,CAAsE;IACzF,CAAC;IAEJ,WAAW;QACT,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC9D,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;QACjD,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAElC,MAAM,IAAI,GAA4B;YACpC,KAAK;YACL,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI;aACX;SACF,CAAC;QAEF,mBAAmB;QACnB,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC/C,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,8CAAyB,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,2BAA2B,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,MAAM;iBACpB;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAMjC,CAAC;YAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,aAAa,EAAE,CAAC,CAAC,aAAa;aAC/B,CAAC,CAAC,CAAC;QACN,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AA5ED,8CA4EC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FirecrawlSearchProvider = void 0;
|
|
4
|
-
const search_provider_js_1 = require("./search-provider.js");
|
|
5
|
-
class FirecrawlSearchProvider {
|
|
6
|
-
env;
|
|
7
|
-
name = "firecrawl";
|
|
8
|
-
requiresApiKey = true;
|
|
9
|
-
priority = 2;
|
|
10
|
-
constructor(env = process.env) {
|
|
11
|
-
this.env = env;
|
|
12
|
-
}
|
|
13
|
-
isAvailable() {
|
|
14
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).FIRECRAWL_API_KEY;
|
|
15
|
-
return Boolean(apiKey && apiKey.trim().length > 0);
|
|
16
|
-
}
|
|
17
|
-
async search(query, options) {
|
|
18
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).FIRECRAWL_API_KEY;
|
|
19
|
-
if (!apiKey) {
|
|
20
|
-
throw new Error("FIRECRAWL_API_KEY environment variable is not set");
|
|
21
|
-
}
|
|
22
|
-
const limit = options?.limit ?? 5;
|
|
23
|
-
const body = {
|
|
24
|
-
query,
|
|
25
|
-
limit,
|
|
26
|
-
};
|
|
27
|
-
const { signal, cleanup } = (0, search_provider_js_1.createProviderAbortSignal)(30_000, options?.signal);
|
|
28
|
-
try {
|
|
29
|
-
const response = await fetch("https://api.firecrawl.dev/v1/search", {
|
|
30
|
-
method: "POST",
|
|
31
|
-
headers: {
|
|
32
|
-
"Content-Type": "application/json",
|
|
33
|
-
Authorization: `Bearer ${apiKey}`,
|
|
34
|
-
},
|
|
35
|
-
body: JSON.stringify(body),
|
|
36
|
-
signal,
|
|
37
|
-
});
|
|
38
|
-
if (!response.ok) {
|
|
39
|
-
throw new Error(`Firecrawl Search API error: ${response.status} ${response.statusText}`);
|
|
40
|
-
}
|
|
41
|
-
const json = await response.json();
|
|
42
|
-
// Firecrawl can return 200 with success: false
|
|
43
|
-
if (json.success === false) {
|
|
44
|
-
throw new Error(`Firecrawl API error: ${json.error || "Unknown error"}`);
|
|
45
|
-
}
|
|
46
|
-
const results = (json.data || []);
|
|
47
|
-
return results.map((r) => ({
|
|
48
|
-
title: r.title,
|
|
49
|
-
url: r.url,
|
|
50
|
-
content: r.markdown || "",
|
|
51
|
-
score: r.score,
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
cleanup();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
exports.FirecrawlSearchProvider = FirecrawlSearchProvider;
|
|
60
|
-
//# sourceMappingURL=firecrawl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"firecrawl.js","sourceRoot":"","sources":["../../src/providers/firecrawl.ts"],"names":[],"mappings":";;;AAMA,6DAA2F;AAE3F,MAAa,uBAAuB;IAMf;IALV,IAAI,GAAG,WAAW,CAAC;IACnB,cAAc,GAAG,IAAI,CAAC;IACtB,QAAQ,GAAG,CAAC,CAAC;IAEtB,YACmB,MAA8D,OAAO,CAAC,GAAG;QAAzE,QAAG,GAAH,GAAG,CAAsE;IACzF,CAAC;IAEJ,WAAW;QACT,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;QACpE,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;QACjD,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAElC,MAAM,IAAI,GAA4B;YACpC,KAAK;YACL,KAAK;SACN,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,8CAAyB,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;gBAClE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3F,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,+CAA+C;YAC/C,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAK9B,CAAC;YAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC,CAAC;QACN,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AApED,0DAoEC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchProviderRouter = exports.FirecrawlSearchProvider = exports.ExaSearchProvider = exports.BraveSearchProvider = exports.TavilySearchProvider = exports.DuckDuckGoSearchProvider = exports.JinaSearchProvider = void 0;
|
|
4
|
-
var jina_js_1 = require("./jina.js");
|
|
5
|
-
Object.defineProperty(exports, "JinaSearchProvider", { enumerable: true, get: function () { return jina_js_1.JinaSearchProvider; } });
|
|
6
|
-
var duckduckgo_js_1 = require("./duckduckgo.js");
|
|
7
|
-
Object.defineProperty(exports, "DuckDuckGoSearchProvider", { enumerable: true, get: function () { return duckduckgo_js_1.DuckDuckGoSearchProvider; } });
|
|
8
|
-
var tavily_js_1 = require("./tavily.js");
|
|
9
|
-
Object.defineProperty(exports, "TavilySearchProvider", { enumerable: true, get: function () { return tavily_js_1.TavilySearchProvider; } });
|
|
10
|
-
var brave_js_1 = require("./brave.js");
|
|
11
|
-
Object.defineProperty(exports, "BraveSearchProvider", { enumerable: true, get: function () { return brave_js_1.BraveSearchProvider; } });
|
|
12
|
-
var exa_js_1 = require("./exa.js");
|
|
13
|
-
Object.defineProperty(exports, "ExaSearchProvider", { enumerable: true, get: function () { return exa_js_1.ExaSearchProvider; } });
|
|
14
|
-
var firecrawl_js_1 = require("./firecrawl.js");
|
|
15
|
-
Object.defineProperty(exports, "FirecrawlSearchProvider", { enumerable: true, get: function () { return firecrawl_js_1.FirecrawlSearchProvider; } });
|
|
16
|
-
var router_js_1 = require("./router.js");
|
|
17
|
-
Object.defineProperty(exports, "SearchProviderRouter", { enumerable: true, get: function () { return router_js_1.SearchProviderRouter; } });
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;AACA,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAC3B,iDAA2D;AAAlD,yHAAA,wBAAwB,OAAA;AACjC,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA;AAC7B,uCAAiD;AAAxC,+GAAA,mBAAmB,OAAA;AAC5B,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,+CAAyD;AAAhD,uHAAA,uBAAuB,OAAA;AAChC,yCAAmD;AAA1C,iHAAA,oBAAoB,OAAA"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JinaSearchProvider = void 0;
|
|
4
|
-
const search_provider_js_1 = require("./search-provider.js");
|
|
5
|
-
class JinaSearchProvider {
|
|
6
|
-
env;
|
|
7
|
-
name = "jina";
|
|
8
|
-
requiresApiKey = false;
|
|
9
|
-
priority = 5;
|
|
10
|
-
constructor(env = process.env) {
|
|
11
|
-
this.env = env;
|
|
12
|
-
}
|
|
13
|
-
isAvailable() {
|
|
14
|
-
// Jina works without an API key (20 req/min), or with a key (200 req/min)
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
async search(query, options) {
|
|
18
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).JINA_API_KEY;
|
|
19
|
-
const limit = options?.limit ?? 5;
|
|
20
|
-
const url = new URL("https://s.jina.ai/");
|
|
21
|
-
url.searchParams.set("q", query);
|
|
22
|
-
const headers = {
|
|
23
|
-
Accept: "application/json",
|
|
24
|
-
};
|
|
25
|
-
if (apiKey) {
|
|
26
|
-
headers.Authorization = `Bearer ${apiKey}`;
|
|
27
|
-
}
|
|
28
|
-
const { signal, cleanup } = (0, search_provider_js_1.createProviderAbortSignal)(30_000, options?.signal);
|
|
29
|
-
try {
|
|
30
|
-
const response = await fetch(url.toString(), {
|
|
31
|
-
method: "GET",
|
|
32
|
-
headers,
|
|
33
|
-
signal,
|
|
34
|
-
});
|
|
35
|
-
if (!response.ok) {
|
|
36
|
-
throw new Error(`Jina Search API error: ${response.status} ${response.statusText}`);
|
|
37
|
-
}
|
|
38
|
-
const json = await response.json();
|
|
39
|
-
const results = (json.data || []);
|
|
40
|
-
// Apply limit client-side
|
|
41
|
-
return results.slice(0, limit).map((r) => ({
|
|
42
|
-
title: r.title,
|
|
43
|
-
url: r.url,
|
|
44
|
-
content: r.content,
|
|
45
|
-
score: r.score,
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
finally {
|
|
49
|
-
cleanup();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.JinaSearchProvider = JinaSearchProvider;
|
|
54
|
-
//# sourceMappingURL=jina.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jina.js","sourceRoot":"","sources":["../../src/providers/jina.ts"],"names":[],"mappings":";;;AAMA,6DAA2F;AAE3F,MAAa,kBAAkB;IAMV;IALV,IAAI,GAAG,MAAM,CAAC;IACd,cAAc,GAAG,KAAK,CAAC;IACvB,QAAQ,GAAG,CAAC,CAAC;IAEtB,YACmB,MAA8D,OAAO,CAAC,GAAG;QAAzE,QAAG,GAAH,GAAG,CAAsE;IACzF,CAAC;IAEJ,WAAW;QACT,0EAA0E;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;QACjD,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAElC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAgB;YAC3B,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,8CAAyB,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC3C,MAAM,EAAE,KAAK;gBACb,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAK9B,CAAC;YAEH,0BAA0B;YAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzC,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC,CAAC;QACN,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AA7DD,gDA6DC"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchProviderRouter = void 0;
|
|
4
|
-
const types_1 = require("@aria-cli/types");
|
|
5
|
-
const search_provider_js_1 = require("./search-provider.js");
|
|
6
|
-
class SearchProviderRouter {
|
|
7
|
-
_providers;
|
|
8
|
-
env;
|
|
9
|
-
constructor(_providers, env = process.env) {
|
|
10
|
-
this._providers = _providers;
|
|
11
|
-
this.env = env;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Resolves the best available search provider.
|
|
15
|
-
* Priority:
|
|
16
|
-
* 1. Explicit override via ARIA_SEARCH_PROVIDER env var
|
|
17
|
-
* 2. Highest-priority available provider (lowest priority number)
|
|
18
|
-
* @throws {Error} if no providers are available or override is invalid
|
|
19
|
-
*/
|
|
20
|
-
resolve() {
|
|
21
|
-
const env = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env);
|
|
22
|
-
// 1. Check for explicit override
|
|
23
|
-
const override = env.ARIA_SEARCH_PROVIDER;
|
|
24
|
-
if (override) {
|
|
25
|
-
const provider = this._providers.find((p) => p.name === override);
|
|
26
|
-
if (!provider) {
|
|
27
|
-
throw new Error(`ARIA_SEARCH_PROVIDER override '${override}' not found in provider registry`);
|
|
28
|
-
}
|
|
29
|
-
// Verify the overridden provider is actually available (e.g., has API key)
|
|
30
|
-
if (!provider.isAvailable()) {
|
|
31
|
-
// Fall through to default priority-based routing
|
|
32
|
-
types_1.log.debug(`[SearchProviderRouter] ARIA_SEARCH_PROVIDER override '${override}' is not available, falling back to priority routing`);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
return provider;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// 2. Select first available provider by priority (lower number = higher priority)
|
|
39
|
-
const sorted = [...this._providers].sort((a, b) => a.priority - b.priority);
|
|
40
|
-
const available = sorted.find((p) => p.isAvailable());
|
|
41
|
-
if (!available) {
|
|
42
|
-
throw new Error("No search providers available. Set at least one API key (BRAVE_API_KEY, TAVILY_API_KEY, etc.)");
|
|
43
|
-
}
|
|
44
|
-
return available;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Performs a search with automatic fallback.
|
|
48
|
-
* Tries providers in priority order (resolved provider first, then others).
|
|
49
|
-
* Circuit breaker: stops at first successful response.
|
|
50
|
-
* @throws {AggregateError} if all providers fail
|
|
51
|
-
*/
|
|
52
|
-
async search(query, options) {
|
|
53
|
-
if (options?.signal?.aborted) {
|
|
54
|
-
throw new Error("Search aborted");
|
|
55
|
-
}
|
|
56
|
-
const env = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env);
|
|
57
|
-
// Get all available providers sorted by priority
|
|
58
|
-
const availableProviders = [...this._providers]
|
|
59
|
-
.filter((p) => p.isAvailable())
|
|
60
|
-
.sort((a, b) => a.priority - b.priority);
|
|
61
|
-
if (availableProviders.length === 0) {
|
|
62
|
-
throw new Error("No search providers available");
|
|
63
|
-
}
|
|
64
|
-
// Honor ARIA_SEARCH_PROVIDER override: try the override provider first
|
|
65
|
-
const override = env.ARIA_SEARCH_PROVIDER;
|
|
66
|
-
if (override) {
|
|
67
|
-
const overrideProvider = availableProviders.find((p) => p.name === override);
|
|
68
|
-
if (overrideProvider) {
|
|
69
|
-
// Move override provider to front of the list
|
|
70
|
-
const reordered = [
|
|
71
|
-
overrideProvider,
|
|
72
|
-
...availableProviders.filter((p) => p.name !== override),
|
|
73
|
-
];
|
|
74
|
-
availableProviders.length = 0;
|
|
75
|
-
availableProviders.push(...reordered);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
const errors = [];
|
|
79
|
-
// Try each provider in order
|
|
80
|
-
for (const provider of availableProviders) {
|
|
81
|
-
if (options?.signal?.aborted) {
|
|
82
|
-
throw new Error("Search aborted");
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
const results = await provider.search(query, options);
|
|
86
|
-
return results; // Circuit breaker: return on first success
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
if (options?.signal?.aborted) {
|
|
90
|
-
throw error instanceof Error ? error : new Error("Search aborted");
|
|
91
|
-
}
|
|
92
|
-
errors.push(error instanceof Error ? error : new Error(`Unknown error from ${provider.name}`));
|
|
93
|
-
// Continue to next provider
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// All providers failed
|
|
97
|
-
throw new AggregateError(errors, `All search providers failed (tried ${availableProviders.length} providers)`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.SearchProviderRouter = SearchProviderRouter;
|
|
101
|
-
//# sourceMappingURL=router.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/providers/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveSearchProviderEnv = resolveSearchProviderEnv;
|
|
4
|
-
exports.createProviderAbortSignal = createProviderAbortSignal;
|
|
5
|
-
function resolveSearchProviderEnv(env = process.env) {
|
|
6
|
-
return {
|
|
7
|
-
ARIA_SEARCH_PROVIDER: env.ARIA_SEARCH_PROVIDER,
|
|
8
|
-
BRAVE_API_KEY: env.BRAVE_API_KEY,
|
|
9
|
-
FIRECRAWL_API_KEY: env.FIRECRAWL_API_KEY,
|
|
10
|
-
EXA_API_KEY: env.EXA_API_KEY,
|
|
11
|
-
TAVILY_API_KEY: env.TAVILY_API_KEY,
|
|
12
|
-
JINA_API_KEY: env.JINA_API_KEY,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
function createProviderAbortSignal(timeoutMs, callerSignal) {
|
|
16
|
-
const controller = new AbortController();
|
|
17
|
-
const onCallerAbort = () => controller.abort();
|
|
18
|
-
if (callerSignal) {
|
|
19
|
-
if (callerSignal.aborted) {
|
|
20
|
-
controller.abort();
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
callerSignal.addEventListener("abort", onCallerAbort, { once: true });
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
27
|
-
return {
|
|
28
|
-
signal: controller.signal,
|
|
29
|
-
cleanup: () => {
|
|
30
|
-
clearTimeout(timeout);
|
|
31
|
-
if (callerSignal) {
|
|
32
|
-
callerSignal.removeEventListener("abort", onCallerAbort);
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=search-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-provider.js","sourceRoot":"","sources":["../../src/providers/search-provider.ts"],"names":[],"mappings":";;AA0BA,4DAWC;AAUD,8DA0BC;AA/CD,SAAgB,wBAAwB,CACtC,MAA8D,OAAO,CAAC,GAAG;IAEzE,OAAO;QACL,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;QAC9C,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,YAAY,EAAE,GAAG,CAAC,YAAY;KAC/B,CAAC;AACJ,CAAC;AAUD,SAAgB,yBAAyB,CACvC,SAAiB,EACjB,YAA0B;IAE1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAE/C,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAEhE,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TavilySearchProvider = void 0;
|
|
4
|
-
const search_provider_js_1 = require("./search-provider.js");
|
|
5
|
-
class TavilySearchProvider {
|
|
6
|
-
env;
|
|
7
|
-
name = "tavily";
|
|
8
|
-
requiresApiKey = true;
|
|
9
|
-
priority = 4;
|
|
10
|
-
constructor(env = process.env) {
|
|
11
|
-
this.env = env;
|
|
12
|
-
}
|
|
13
|
-
isAvailable() {
|
|
14
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).TAVILY_API_KEY;
|
|
15
|
-
return Boolean(apiKey && apiKey.trim().length > 0);
|
|
16
|
-
}
|
|
17
|
-
async search(query, options) {
|
|
18
|
-
const apiKey = (0, search_provider_js_1.resolveSearchProviderEnv)(this.env).TAVILY_API_KEY;
|
|
19
|
-
if (!apiKey) {
|
|
20
|
-
throw new Error("TAVILY_API_KEY environment variable is not set");
|
|
21
|
-
}
|
|
22
|
-
const limit = options?.limit ?? 5;
|
|
23
|
-
const body = {
|
|
24
|
-
api_key: apiKey,
|
|
25
|
-
query,
|
|
26
|
-
max_results: limit,
|
|
27
|
-
...(options?.topic && { topic: options.topic }),
|
|
28
|
-
...(options?.domains && { include_domains: options.domains }),
|
|
29
|
-
...(options?.excludeDomains && { exclude_domains: options.excludeDomains }),
|
|
30
|
-
};
|
|
31
|
-
const { signal, cleanup } = (0, search_provider_js_1.createProviderAbortSignal)(30_000, options?.signal);
|
|
32
|
-
try {
|
|
33
|
-
const response = await fetch("https://api.tavily.com/search", {
|
|
34
|
-
method: "POST",
|
|
35
|
-
headers: {
|
|
36
|
-
"Content-Type": "application/json",
|
|
37
|
-
},
|
|
38
|
-
body: JSON.stringify(body),
|
|
39
|
-
signal,
|
|
40
|
-
});
|
|
41
|
-
if (!response.ok) {
|
|
42
|
-
throw new Error(`Tavily Search API error: ${response.status} ${response.statusText}`);
|
|
43
|
-
}
|
|
44
|
-
const json = await response.json();
|
|
45
|
-
const results = (json.results || []);
|
|
46
|
-
return results.map((r) => ({
|
|
47
|
-
title: r.title,
|
|
48
|
-
url: r.url,
|
|
49
|
-
content: r.content,
|
|
50
|
-
score: r.score,
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
finally {
|
|
54
|
-
cleanup();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.TavilySearchProvider = TavilySearchProvider;
|
|
59
|
-
//# sourceMappingURL=tavily.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tavily.js","sourceRoot":"","sources":["../../src/providers/tavily.ts"],"names":[],"mappings":";;;AAMA,6DAA2F;AAE3F,MAAa,oBAAoB;IAMZ;IALV,IAAI,GAAG,QAAQ,CAAC;IAChB,cAAc,GAAG,IAAI,CAAC;IACtB,QAAQ,GAAG,CAAC,CAAC;IAEtB,YACmB,MAA8D,OAAO,CAAC,GAAG;QAAzE,QAAG,GAAH,GAAG,CAAsE;IACzF,CAAC;IAEJ,WAAW;QACT,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QACjE,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;QACjD,MAAM,MAAM,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;QAElC,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,MAAM;YACf,KAAK;YACL,WAAW,EAAE,KAAK;YAClB,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/C,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;SAC5E,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,8CAAyB,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,+BAA+B,EAAE;gBAC5D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1B,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAKjC,CAAC;YAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC,CAAC;QACN,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAjED,oDAiEC"}
|