aura-code 0.6.3 → 0.10.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.
- package/README.md +47 -164
- package/dist/agent/affect.d.ts +13 -0
- package/dist/agent/affect.js +34 -0
- package/dist/agent/affect.js.map +1 -0
- package/dist/agent/compactor.d.ts +27 -4
- package/dist/agent/compactor.js +185 -54
- package/dist/agent/compactor.js.map +1 -1
- package/dist/agent/confess.d.ts +35 -0
- package/dist/agent/confess.js +296 -0
- package/dist/agent/confess.js.map +1 -0
- package/dist/agent/context.d.ts +0 -4
- package/dist/agent/context.js +0 -38
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/domain-expertise.d.ts +22 -0
- package/dist/agent/domain-expertise.js +110 -0
- package/dist/agent/domain-expertise.js.map +1 -0
- package/dist/agent/executive-queue.d.ts +26 -0
- package/dist/agent/executive-queue.js +50 -0
- package/dist/agent/executive-queue.js.map +1 -0
- package/dist/agent/generational-flush.d.ts +28 -0
- package/dist/agent/generational-flush.js +48 -0
- package/dist/agent/generational-flush.js.map +1 -0
- package/dist/agent/loop-profile.d.ts +50 -0
- package/dist/agent/loop-profile.js +88 -0
- package/dist/agent/loop-profile.js.map +1 -0
- package/dist/agent/loop.d.ts +14 -5
- package/dist/agent/loop.js +167 -39
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-consolidate.d.ts +14 -0
- package/dist/agent/memory-consolidate.js +141 -0
- package/dist/agent/memory-consolidate.js.map +1 -0
- package/dist/agent/mixture.d.ts +33 -0
- package/dist/agent/mixture.js +138 -0
- package/dist/agent/mixture.js.map +1 -0
- package/dist/agent/spawner.js +2 -2
- package/dist/agent/spawner.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +50 -22
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/unified-memory.d.ts +15 -0
- package/dist/agent/unified-memory.js +164 -0
- package/dist/agent/unified-memory.js.map +1 -0
- package/dist/checkpoints/engine.d.ts +44 -0
- package/dist/checkpoints/engine.js +324 -0
- package/dist/checkpoints/engine.js.map +1 -0
- package/dist/cli/command-palette.d.ts +26 -0
- package/dist/cli/command-palette.js +133 -0
- package/dist/cli/command-palette.js.map +1 -0
- package/dist/cli/context-health.d.ts +51 -0
- package/dist/cli/context-health.js +187 -0
- package/dist/cli/context-health.js.map +1 -0
- package/dist/cli/diamond.d.ts +67 -0
- package/dist/cli/diamond.js +222 -12
- package/dist/cli/diamond.js.map +1 -1
- package/dist/cli/dic.d.ts +2 -0
- package/dist/cli/dic.js +106 -0
- package/dist/cli/dic.js.map +1 -0
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +114 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/display.d.ts +18 -4
- package/dist/cli/display.js +74 -151
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/help-data.d.ts +7 -0
- package/dist/cli/help-data.js +80 -0
- package/dist/cli/help-data.js.map +1 -0
- package/dist/cli/index.js +1002 -852
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/markdown.d.ts +5 -0
- package/dist/cli/markdown.js +128 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/model-select.d.ts +39 -0
- package/dist/cli/model-select.js +65 -0
- package/dist/cli/model-select.js.map +1 -0
- package/dist/cli/tui.d.ts +34 -0
- package/dist/cli/tui.js +1176 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -17
- package/dist/config/defaults.js +25 -46
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/project-config.d.ts +2 -6
- package/dist/config/project-config.js +2 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/doctor/checks.d.ts +18 -0
- package/dist/doctor/checks.js +524 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/index.d.ts +4 -0
- package/dist/doctor/index.js +229 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/repair.d.ts +19 -0
- package/dist/doctor/repair.js +126 -0
- package/dist/doctor/repair.js.map +1 -0
- package/dist/doctor/types.d.ts +38 -0
- package/dist/doctor/types.js +10 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/dream/dream.d.ts +79 -59
- package/dist/dream/dream.js +324 -144
- package/dist/dream/dream.js.map +1 -1
- package/dist/dream/episode.d.ts +17 -0
- package/dist/dream/episode.js +116 -0
- package/dist/dream/episode.js.map +1 -0
- package/dist/kanban/engine.d.ts +26 -0
- package/dist/kanban/engine.js +208 -0
- package/dist/kanban/engine.js.map +1 -0
- package/dist/kanban/types.d.ts +19 -0
- package/dist/kanban/types.js +9 -1
- package/dist/kanban/types.js.map +1 -1
- package/dist/machina/render-html.js +4 -2
- package/dist/machina/render-html.js.map +1 -1
- package/dist/machina/render-terminal.js +11 -4
- package/dist/machina/render-terminal.js.map +1 -1
- package/dist/machina/repair.d.ts +23 -0
- package/dist/machina/repair.js +98 -0
- package/dist/machina/repair.js.map +1 -0
- package/dist/machina/spec.js +12 -12
- package/dist/machina/spec.js.map +1 -1
- package/dist/machina/verify.d.ts +13 -1
- package/dist/machina/verify.js +12 -2
- package/dist/machina/verify.js.map +1 -1
- package/dist/mining/extract.d.ts +34 -0
- package/dist/mining/extract.js +229 -0
- package/dist/mining/extract.js.map +1 -0
- package/dist/mining/refine.d.ts +28 -0
- package/dist/mining/refine.js +256 -0
- package/dist/mining/refine.js.map +1 -0
- package/dist/perception/extractor.js +5 -3
- package/dist/perception/extractor.js.map +1 -1
- package/dist/perception/graph-store.d.ts +0 -11
- package/dist/perception/graph-store.js +0 -33
- package/dist/perception/graph-store.js.map +1 -1
- package/dist/perception/index.d.ts +1 -1
- package/dist/perception/index.js +1 -2
- package/dist/perception/index.js.map +1 -1
- package/dist/plugins/commands.d.ts +38 -0
- package/dist/plugins/commands.js +134 -0
- package/dist/plugins/commands.js.map +1 -0
- package/dist/plugins/frontmatter.d.ts +14 -0
- package/dist/plugins/frontmatter.js +78 -0
- package/dist/plugins/frontmatter.js.map +1 -0
- package/dist/plugins/hooks.d.ts +12 -0
- package/dist/plugins/hooks.js +148 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/loader.d.ts +7 -0
- package/dist/plugins/loader.js +255 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/market.d.ts +23 -0
- package/dist/plugins/market.js +281 -0
- package/dist/plugins/market.js.map +1 -0
- package/dist/plugins/types.d.ts +90 -0
- package/dist/plugins/types.js +20 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
- package/dist/providers/anthropic-oauth-draft.js +414 -0
- package/dist/providers/anthropic-oauth-draft.js.map +1 -0
- package/dist/providers/anthropic.d.ts +4 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +43 -19
- package/dist/providers/factory.js +183 -129
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +9 -22
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/live-models.d.ts +23 -0
- package/dist/providers/live-models.js +145 -0
- package/dist/providers/live-models.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +1 -12
- package/dist/providers/openai-compatible.js +71 -108
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/resilient-factory.js +1 -1
- package/dist/providers/resilient-factory.js.map +1 -1
- package/dist/repl/queue.d.ts +22 -0
- package/dist/repl/queue.js +165 -0
- package/dist/repl/queue.js.map +1 -0
- package/dist/repl/side-channel.d.ts +23 -0
- package/dist/repl/side-channel.js +63 -0
- package/dist/repl/side-channel.js.map +1 -0
- package/dist/research/council.d.ts +2 -0
- package/dist/research/council.js +29 -4
- package/dist/research/council.js.map +1 -1
- package/dist/ruby/alternator.d.ts +11 -30
- package/dist/ruby/alternator.js +59 -38
- package/dist/ruby/alternator.js.map +1 -1
- package/dist/ruby/episode-capture.d.ts +0 -10
- package/dist/ruby/episode-capture.js +0 -33
- package/dist/ruby/episode-capture.js.map +1 -1
- package/dist/ruby/types.js +1 -1
- package/dist/ruby/types.js.map +1 -1
- package/dist/safety/path-jail.d.ts +17 -0
- package/dist/safety/path-jail.js +100 -0
- package/dist/safety/path-jail.js.map +1 -0
- package/dist/safety/permissions.d.ts +12 -21
- package/dist/safety/permissions.js +81 -216
- package/dist/safety/permissions.js.map +1 -1
- package/dist/safety/ssrf.d.ts +29 -0
- package/dist/safety/ssrf.js +185 -0
- package/dist/safety/ssrf.js.map +1 -0
- package/dist/server/index.js +64 -10
- package/dist/server/index.js.map +1 -1
- package/dist/setup/first-run.d.ts +0 -24
- package/dist/setup/first-run.js +10 -344
- package/dist/setup/first-run.js.map +1 -1
- package/dist/setup/key-store.d.ts +12 -0
- package/dist/setup/key-store.js +108 -0
- package/dist/setup/key-store.js.map +1 -0
- package/dist/setup/provider-registry.js +31 -18
- package/dist/setup/provider-registry.js.map +1 -1
- package/dist/setup/provider-test.d.ts +7 -0
- package/dist/setup/provider-test.js +73 -10
- package/dist/setup/provider-test.js.map +1 -1
- package/dist/setup/provider-wizard.d.ts +4 -1
- package/dist/setup/provider-wizard.js +92 -26
- package/dist/setup/provider-wizard.js.map +1 -1
- package/dist/setup/xiaomi.d.ts +1 -1
- package/dist/setup/xiaomi.js +3 -3
- package/dist/setup/xiaomi.js.map +1 -1
- package/dist/tools/browser.js +14 -10
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/clipboard.js +7 -1
- package/dist/tools/clipboard.js.map +1 -1
- package/dist/tools/dictate.d.ts +60 -0
- package/dist/tools/dictate.js +983 -0
- package/dist/tools/dictate.js.map +1 -0
- package/dist/tools/dictate_patched.js +1057 -0
- package/dist/tools/edit-file.js +10 -2
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/http-request.js +14 -4
- package/dist/tools/http-request.js.map +1 -1
- package/dist/tools/image-read.js +34 -2
- package/dist/tools/image-read.js.map +1 -1
- package/dist/tools/index.d.ts +16 -1
- package/dist/tools/index.js +59 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.js +12 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/read-file.js +10 -14
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/telegram-audio-policy.d.ts +30 -0
- package/dist/tools/telegram-audio-policy.js +49 -0
- package/dist/tools/telegram-audio-policy.js.map +1 -0
- package/dist/tools/telegram-bot.js +1136 -537
- package/dist/tools/telegram-bot.js.map +1 -1
- package/dist/tools/telegram-voice.d.ts +18 -5
- package/dist/tools/telegram-voice.js +54 -12
- package/dist/tools/telegram-voice.js.map +1 -1
- package/dist/tools/telegram.d.ts +3 -3
- package/dist/tools/telegram.js +5 -84
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/tools.d.ts +2 -14
- package/dist/tools/tools.js +79 -144
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/web-fetch.js +39 -7
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts +0 -20
- package/dist/tools/web-search.js +40 -137
- package/dist/tools/web-search.js.map +1 -1
- package/dist/util/errors.js +1 -15
- package/dist/util/errors.js.map +1 -1
- package/dist/util/json-repair.d.ts +11 -0
- package/dist/util/json-repair.js +31 -0
- package/dist/util/json-repair.js.map +1 -0
- package/dist/util/rate-limiter.js +2 -8
- package/dist/util/rate-limiter.js.map +1 -1
- package/dist/viz/index.js +793 -792
- package/dist/viz/index.js.map +1 -1
- package/package.json +12 -32
package/dist/tools/web-search.js
CHANGED
|
@@ -2,176 +2,79 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WEB_SEARCH_DEFINITION = void 0;
|
|
4
4
|
exports.webSearch = webSearch;
|
|
5
|
-
const sanitize_js_1 = require("../util/sanitize.js");
|
|
6
5
|
exports.WEB_SEARCH_DEFINITION = {
|
|
7
6
|
name: 'web_search',
|
|
8
|
-
description: 'Search the web. Returns
|
|
9
|
-
'
|
|
10
|
-
'Use for research, fact-checking, finding documentation.',
|
|
7
|
+
description: 'Search the web using DuckDuckGo. Returns titles, URLs, and snippets. ' +
|
|
8
|
+
'No API key required. Use for research, fact-checking, finding documentation.',
|
|
11
9
|
parameters: {
|
|
12
10
|
type: 'object',
|
|
13
11
|
properties: {
|
|
14
12
|
query: { type: 'string', description: 'The search query' },
|
|
15
13
|
max_results: { type: 'number', description: 'Max results to return (default: 10)' },
|
|
16
|
-
region: { type: 'string', description: 'Search region
|
|
14
|
+
region: { type: 'string', description: 'Search region (default: wt-wt for global)' },
|
|
17
15
|
},
|
|
18
16
|
required: ['query'],
|
|
19
17
|
},
|
|
20
18
|
};
|
|
21
|
-
|
|
22
|
-
function formatResults(query, results, source) {
|
|
23
|
-
if (results.length === 0) {
|
|
24
|
-
return `No results found for "${query}" (via ${source})`;
|
|
25
|
-
}
|
|
26
|
-
const lines = [`Search results for "${query}" (via ${source})`, ''];
|
|
27
|
-
results.forEach((r, i) => {
|
|
28
|
-
lines.push(`${i + 1}. ${r.title}`);
|
|
29
|
-
lines.push(` ${r.url}`);
|
|
30
|
-
if (r.snippet)
|
|
31
|
-
lines.push(` ${r.snippet}`);
|
|
32
|
-
lines.push('');
|
|
33
|
-
});
|
|
34
|
-
return lines.join('\n');
|
|
35
|
-
}
|
|
36
|
-
// ── Provider 1: Tavily ─────────────────────────────────────────────────────
|
|
37
|
-
async function searchTavily(query, maxResults) {
|
|
38
|
-
const key = process.env.TAVILY_API_KEY;
|
|
39
|
-
if (!key || !key.trim())
|
|
40
|
-
return null;
|
|
41
|
-
const response = await fetch('https://api.tavily.com/search', {
|
|
42
|
-
method: 'POST',
|
|
43
|
-
headers: {
|
|
44
|
-
'Content-Type': 'application/json',
|
|
45
|
-
'Authorization': `Bearer ${key.trim()}`,
|
|
46
|
-
},
|
|
47
|
-
body: JSON.stringify({
|
|
48
|
-
query,
|
|
49
|
-
max_results: maxResults,
|
|
50
|
-
search_depth: 'basic',
|
|
51
|
-
include_answer: false,
|
|
52
|
-
include_raw_content: false,
|
|
53
|
-
}),
|
|
54
|
-
signal: AbortSignal.timeout(15_000),
|
|
55
|
-
});
|
|
56
|
-
if (!response.ok) {
|
|
57
|
-
throw new Error(`Tavily HTTP ${response.status}: ${(await response.text()).slice(0, 200)}`);
|
|
58
|
-
}
|
|
59
|
-
const data = await response.json();
|
|
60
|
-
return (data.results ?? [])
|
|
61
|
-
.filter(r => r.url)
|
|
62
|
-
.map(r => ({
|
|
63
|
-
title: (r.title ?? r.url ?? '').trim(),
|
|
64
|
-
url: r.url,
|
|
65
|
-
snippet: (r.content ?? '').trim(),
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
// ── Provider 2: Serper (Google passthrough) ────────────────────────────────
|
|
69
|
-
async function searchSerper(query, maxResults) {
|
|
70
|
-
const key = process.env.SERPER_API_KEY;
|
|
71
|
-
if (!key || !key.trim())
|
|
72
|
-
return null;
|
|
73
|
-
const response = await fetch('https://google.serper.dev/search', {
|
|
74
|
-
method: 'POST',
|
|
75
|
-
headers: {
|
|
76
|
-
'Content-Type': 'application/json',
|
|
77
|
-
'X-API-KEY': key.trim(),
|
|
78
|
-
},
|
|
79
|
-
body: JSON.stringify({ q: query, num: maxResults }),
|
|
80
|
-
signal: AbortSignal.timeout(15_000),
|
|
81
|
-
});
|
|
82
|
-
if (!response.ok) {
|
|
83
|
-
throw new Error(`Serper HTTP ${response.status}: ${(await response.text()).slice(0, 200)}`);
|
|
84
|
-
}
|
|
85
|
-
const data = await response.json();
|
|
86
|
-
return (data.organic ?? [])
|
|
87
|
-
.filter(r => r.link)
|
|
88
|
-
.slice(0, maxResults)
|
|
89
|
-
.map(r => ({
|
|
90
|
-
title: (r.title ?? r.link ?? '').trim(),
|
|
91
|
-
url: r.link,
|
|
92
|
-
snippet: (r.snippet ?? '').trim(),
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
// ── Provider 3: DuckDuckGo HTML scrape (no key) ────────────────────────────
|
|
96
|
-
function extractDuckDuckGo(html) {
|
|
19
|
+
function extractResults(html) {
|
|
97
20
|
const results = [];
|
|
21
|
+
// Match DuckDuckGo result blocks
|
|
98
22
|
const resultRegex = /<a[^>]+class="result__a"[^>]*href="([^"]*)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/gi;
|
|
99
23
|
let match;
|
|
100
24
|
while ((match = resultRegex.exec(html)) !== null) {
|
|
101
25
|
let url = match[1];
|
|
26
|
+
// DuckDuckGo wraps URLs in a redirect — extract the real URL
|
|
102
27
|
const uddg = url.match(/uddg=([^&]+)/);
|
|
103
28
|
if (uddg)
|
|
104
29
|
url = decodeURIComponent(uddg[1]);
|
|
105
|
-
const title =
|
|
106
|
-
const snippet =
|
|
107
|
-
if (title && url)
|
|
30
|
+
const title = match[2].replace(/<[^>]+>/g, '').trim();
|
|
31
|
+
const snippet = match[3].replace(/<[^>]+>/g, '').trim();
|
|
32
|
+
if (title && url) {
|
|
108
33
|
results.push({ title, url, snippet });
|
|
34
|
+
}
|
|
109
35
|
}
|
|
110
36
|
return results;
|
|
111
37
|
}
|
|
112
|
-
async function searchDuckDuckGo(query, maxResults, region) {
|
|
113
|
-
const params = new URLSearchParams({ q: query, kl: region, t: 'h_' });
|
|
114
|
-
const url = `https://html.duckduckgo.com/html/?${params}`;
|
|
115
|
-
const response = await fetch(url, {
|
|
116
|
-
headers: {
|
|
117
|
-
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
118
|
-
'Accept': 'text/html',
|
|
119
|
-
},
|
|
120
|
-
signal: AbortSignal.timeout(10_000),
|
|
121
|
-
});
|
|
122
|
-
if (!response.ok) {
|
|
123
|
-
throw new Error(`DuckDuckGo HTTP ${response.status}`);
|
|
124
|
-
}
|
|
125
|
-
const html = await response.text();
|
|
126
|
-
return extractDuckDuckGo(html).slice(0, maxResults);
|
|
127
|
-
}
|
|
128
|
-
// ── Public entry: try each provider in order ───────────────────────────────
|
|
129
38
|
async function webSearch(input) {
|
|
130
39
|
const maxResults = input.max_results ?? 10;
|
|
131
40
|
const region = input.region ?? 'wt-wt';
|
|
132
41
|
const query = input.query;
|
|
133
|
-
if (!query
|
|
42
|
+
if (!query.trim())
|
|
134
43
|
return 'Error: query is required';
|
|
135
|
-
const
|
|
136
|
-
|
|
44
|
+
const params = new URLSearchParams({
|
|
45
|
+
q: query,
|
|
46
|
+
kl: region,
|
|
47
|
+
t: 'h_',
|
|
48
|
+
});
|
|
49
|
+
const url = `https://html.duckduckgo.com/html/?${params}`;
|
|
137
50
|
try {
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
51
|
+
const response = await fetch(url, {
|
|
52
|
+
headers: {
|
|
53
|
+
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
54
|
+
'Accept': 'text/html',
|
|
55
|
+
},
|
|
56
|
+
signal: AbortSignal.timeout(10_000),
|
|
57
|
+
});
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
return `Error: DuckDuckGo returned HTTP ${response.status}`;
|
|
143
60
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
// 2. Serper
|
|
149
|
-
try {
|
|
150
|
-
const results = await searchSerper(query, maxResults);
|
|
151
|
-
if (results !== null) {
|
|
152
|
-
if (results.length > 0)
|
|
153
|
-
return formatResults(query, results, 'Serper');
|
|
154
|
-
attempts.push('Serper: 0 results');
|
|
61
|
+
const html = await response.text();
|
|
62
|
+
const results = extractResults(html).slice(0, maxResults);
|
|
63
|
+
if (results.length === 0) {
|
|
64
|
+
return `No results found for: "${query}"`;
|
|
155
65
|
}
|
|
66
|
+
const lines = [`Search results for: "${query}"`, ''];
|
|
67
|
+
results.forEach((r, i) => {
|
|
68
|
+
lines.push(`${i + 1}. ${r.title}`);
|
|
69
|
+
lines.push(` ${r.url}`);
|
|
70
|
+
if (r.snippet)
|
|
71
|
+
lines.push(` ${r.snippet}`);
|
|
72
|
+
lines.push('');
|
|
73
|
+
});
|
|
74
|
+
return lines.join('\n');
|
|
156
75
|
}
|
|
157
76
|
catch (e) {
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
// 3. DuckDuckGo scrape (no key needed; always attempted last)
|
|
161
|
-
try {
|
|
162
|
-
const results = await searchDuckDuckGo(query, maxResults, region);
|
|
163
|
-
if (results.length > 0)
|
|
164
|
-
return formatResults(query, results, 'DuckDuckGo');
|
|
165
|
-
attempts.push('DuckDuckGo: 0 results (scraper may need updating)');
|
|
166
|
-
}
|
|
167
|
-
catch (e) {
|
|
168
|
-
attempts.push(`DuckDuckGo: ${e instanceof Error ? e.message : String(e)}`);
|
|
77
|
+
return `Error searching: ${e?.message ?? String(e)}`;
|
|
169
78
|
}
|
|
170
|
-
// All providers exhausted — return a LOUD error, not a silent "no results".
|
|
171
|
-
// Agents see this and stop retrying the same query; they'll switch to
|
|
172
|
-
// web_fetch on a known URL instead.
|
|
173
|
-
return (`Error: web search unavailable for "${query}". ` +
|
|
174
|
-
`All providers exhausted: ${attempts.join(' | ')}. ` +
|
|
175
|
-
`Consider trying web_fetch on a known URL, or set TAVILY_API_KEY / SERPER_API_KEY.`);
|
|
176
79
|
}
|
|
177
80
|
//# sourceMappingURL=web-search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
|
package/dist/util/errors.js
CHANGED
|
@@ -56,23 +56,9 @@ function normaliseError(e, provider) {
|
|
|
56
56
|
if (e instanceof ApiError)
|
|
57
57
|
return e;
|
|
58
58
|
// Anthropic / OpenAI / Google SDKs all throw errors with a `status` and sometimes `headers`.
|
|
59
|
-
// The OpenAI SDK also populates `error` with the parsed response body — always read it so
|
|
60
|
-
// provider-specific error messages (e.g. DeepSeek 400 details) are not silently discarded.
|
|
61
59
|
const err = e;
|
|
62
60
|
const status = err.status ?? err.statusCode ?? 0;
|
|
63
|
-
|
|
64
|
-
if (err.error != null) {
|
|
65
|
-
try {
|
|
66
|
-
message += ` — ${JSON.stringify(err.error)}`;
|
|
67
|
-
}
|
|
68
|
-
catch { /* ignore */ }
|
|
69
|
-
}
|
|
70
|
-
else if (err.response?.data != null) {
|
|
71
|
-
try {
|
|
72
|
-
message += ` — ${JSON.stringify(err.response.data)}`;
|
|
73
|
-
}
|
|
74
|
-
catch { /* ignore */ }
|
|
75
|
-
}
|
|
61
|
+
const message = err.message ?? String(e);
|
|
76
62
|
const retryAfterMs = parseRetryAfter(err.headers) ?? parseGoogleRetryAfter(err.errorDetails);
|
|
77
63
|
// Network/timeout: status 0
|
|
78
64
|
const isNetwork = status === 0 || err.code === 'ETIMEDOUT' || err.code === 'ECONNRESET' || err.code === 'ENOTFOUND' || err.name === 'AbortError';
|
package/dist/util/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":";;;AAuCA,4CAOC;AAMD,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/util/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse tool-call argument JSON from a provider stream, tolerating the kind
|
|
3
|
+
* of malformed output reasoning models (GLM-5.2, etc.) produce when they
|
|
4
|
+
* inline large multi-line strings (HTML/code) directly as JSON arguments —
|
|
5
|
+
* unescaped quotes, literal newlines, stray backticks.
|
|
6
|
+
*
|
|
7
|
+
* Falls back to jsonrepair before giving up to { _raw }, so most truncated/
|
|
8
|
+
* malformed tool calls execute correctly instead of erroring out and forcing
|
|
9
|
+
* the model to retry via shell heredocs.
|
|
10
|
+
*/
|
|
11
|
+
export declare function safeParseToolArgs(raw: string): Record<string, unknown>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safeParseToolArgs = safeParseToolArgs;
|
|
4
|
+
const jsonrepair_1 = require("jsonrepair");
|
|
5
|
+
/**
|
|
6
|
+
* Parse tool-call argument JSON from a provider stream, tolerating the kind
|
|
7
|
+
* of malformed output reasoning models (GLM-5.2, etc.) produce when they
|
|
8
|
+
* inline large multi-line strings (HTML/code) directly as JSON arguments —
|
|
9
|
+
* unescaped quotes, literal newlines, stray backticks.
|
|
10
|
+
*
|
|
11
|
+
* Falls back to jsonrepair before giving up to { _raw }, so most truncated/
|
|
12
|
+
* malformed tool calls execute correctly instead of erroring out and forcing
|
|
13
|
+
* the model to retry via shell heredocs.
|
|
14
|
+
*/
|
|
15
|
+
function safeParseToolArgs(raw) {
|
|
16
|
+
if (!raw || raw.trim() === '')
|
|
17
|
+
return {};
|
|
18
|
+
try {
|
|
19
|
+
return JSON.parse(raw);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
try {
|
|
23
|
+
const repaired = (0, jsonrepair_1.jsonrepair)(raw);
|
|
24
|
+
return JSON.parse(repaired);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return { _raw: raw };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=json-repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-repair.js","sourceRoot":"","sources":["../../src/util/json-repair.ts"],"names":[],"mappings":";;AAYA,8CAYC;AAxBD,2CAAwC;AAExC;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,uBAAU,EAAC,GAAG,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -25,23 +25,17 @@ class RateLimiter {
|
|
|
25
25
|
if (n > this.capacity) {
|
|
26
26
|
throw new Error(`Cannot acquire ${n} tokens — bucket capacity is ${this.capacity}`);
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
// the instant-success path free of any wall-clock read, so it returns a
|
|
30
|
-
// literal 0 deterministically instead of `Date.now() - start`, which can
|
|
31
|
-
// tick from 0 to 1ms under scheduler load even with no real wait — the
|
|
32
|
-
// exact flake seen in CI (and intermittently in local runs under load).
|
|
33
|
-
let start;
|
|
28
|
+
const start = Date.now();
|
|
34
29
|
while (true) {
|
|
35
30
|
this.refill();
|
|
36
31
|
if (this.tokens >= n) {
|
|
37
32
|
this.tokens -= n;
|
|
38
|
-
return
|
|
33
|
+
return Date.now() - start;
|
|
39
34
|
}
|
|
40
35
|
// Tokens needed minus what we have, divided by refill rate = wait time
|
|
41
36
|
const deficit = n - this.tokens;
|
|
42
37
|
const waitMs = Math.ceil(deficit / this.refillPerMs) + 5;
|
|
43
38
|
this.onWait?.({ needed: n, waitMs });
|
|
44
|
-
start ??= Date.now();
|
|
45
39
|
await this.sleep(waitMs);
|
|
46
40
|
}
|
|
47
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/util/rate-limiter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/util/rate-limiter.ts"],"names":[],"mappings":"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"}
|