@lloyal-labs/rig 1.5.6 → 1.5.8
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/tools/fetch-page.d.ts +4 -4
- package/dist/tools/fetch-page.d.ts.map +1 -1
- package/dist/tools/fetch-page.js +81 -43
- package/dist/tools/fetch-page.js.map +1 -1
- package/dist/tools/web-search.d.ts +4 -4
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +33 -23
- package/dist/tools/web-search.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Operation } from
|
|
2
|
-
import { Tool } from
|
|
3
|
-
import type { JsonSchema, ToolContext } from
|
|
4
|
-
import type { Reranker } from
|
|
1
|
+
import type { Operation } from "effection";
|
|
2
|
+
import { Tool } from "@lloyal-labs/lloyal-agents";
|
|
3
|
+
import type { JsonSchema, ToolContext } from "@lloyal-labs/lloyal-agents";
|
|
4
|
+
import type { Reranker } from "./types";
|
|
5
5
|
/**
|
|
6
6
|
* Fetch a web page and extract readable article content.
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-page.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAS,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-page.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAS,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AA+CrD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAc,SAAQ,IAAI,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IACtE,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,0NACqM;IACzN,QAAQ,CAAC,UAAU,EAAE,UAAU,CAW7B;IAEF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,CAAC,EAAE;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAQD,kEAAkE;IAClE,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIpC,OAAO,CACN,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EACrC,OAAO,CAAC,EAAE,WAAW,GACpB,SAAS,CAAC,OAAO,CAAC;CA6OtB"}
|
package/dist/tools/fetch-page.js
CHANGED
|
@@ -9,7 +9,7 @@ function selectTopChunks(scored, chunks, topK, tokenBudget) {
|
|
|
9
9
|
const selected = [];
|
|
10
10
|
let tokenTotal = 0;
|
|
11
11
|
for (const sc of scored.slice(0, topK)) {
|
|
12
|
-
const chunk = chunks.find(c => c.resource === sc.file && c.startLine === sc.startLine);
|
|
12
|
+
const chunk = chunks.find((c) => c.resource === sc.file && c.startLine === sc.startLine);
|
|
13
13
|
if (!chunk?.text)
|
|
14
14
|
continue;
|
|
15
15
|
const chunkTokens = chunk.tokens.length || Math.ceil(chunk.text.length / 4);
|
|
@@ -18,10 +18,14 @@ function selectTopChunks(scored, chunks, topK, tokenBudget) {
|
|
|
18
18
|
if (selected.length === 0) {
|
|
19
19
|
const charLimit = tokenBudget * 4;
|
|
20
20
|
let truncated = chunk.text.slice(0, charLimit);
|
|
21
|
-
const lastBreak = Math.max(truncated.lastIndexOf(
|
|
21
|
+
const lastBreak = Math.max(truncated.lastIndexOf("\n\n"), truncated.lastIndexOf(". "));
|
|
22
22
|
if (lastBreak > charLimit * 0.4)
|
|
23
23
|
truncated = truncated.slice(0, lastBreak + 1);
|
|
24
|
-
selected.push({
|
|
24
|
+
selected.push({
|
|
25
|
+
text: truncated + "\n\n[truncated]",
|
|
26
|
+
heading: sc.heading,
|
|
27
|
+
score: sc.score,
|
|
28
|
+
});
|
|
25
29
|
}
|
|
26
30
|
break;
|
|
27
31
|
}
|
|
@@ -49,15 +53,18 @@ function selectTopChunks(scored, chunks, topK, tokenBudget) {
|
|
|
49
53
|
* @category Rig
|
|
50
54
|
*/
|
|
51
55
|
class FetchPageTool extends lloyal_agents_1.Tool {
|
|
52
|
-
name =
|
|
53
|
-
description =
|
|
56
|
+
name = "fetch_page";
|
|
57
|
+
description = "Fetch a web page and extract its article content. Returns readable text with title and excerpt. Use to read search results or follow links discovered in pages. Pass a query to get only the most relevant sections.";
|
|
54
58
|
parameters = {
|
|
55
|
-
type:
|
|
59
|
+
type: "object",
|
|
56
60
|
properties: {
|
|
57
|
-
url: { type:
|
|
58
|
-
query: {
|
|
61
|
+
url: { type: "string", description: "URL to fetch" },
|
|
62
|
+
query: {
|
|
63
|
+
type: "string",
|
|
64
|
+
description: "What to look for in this page (optional — improves relevance of returned content)",
|
|
65
|
+
},
|
|
59
66
|
},
|
|
60
|
-
required: [
|
|
67
|
+
required: ["url"],
|
|
61
68
|
};
|
|
62
69
|
_maxChars;
|
|
63
70
|
_reranker = null;
|
|
@@ -78,11 +85,16 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
78
85
|
*execute(args, context) {
|
|
79
86
|
const url = args.url?.trim();
|
|
80
87
|
if (!url)
|
|
81
|
-
return { error:
|
|
88
|
+
return { error: "url must not be empty" };
|
|
82
89
|
// Early reject PDF URLs
|
|
83
90
|
const lowerUrl = url.toLowerCase();
|
|
84
|
-
if (lowerUrl.endsWith(
|
|
85
|
-
|
|
91
|
+
if (lowerUrl.endsWith(".pdf") ||
|
|
92
|
+
lowerUrl.includes(".pdf?") ||
|
|
93
|
+
lowerUrl.includes(".pdf#")) {
|
|
94
|
+
return {
|
|
95
|
+
error: "PDF documents cannot be extracted. Try searching for an HTML version of this content.",
|
|
96
|
+
url,
|
|
97
|
+
};
|
|
86
98
|
}
|
|
87
99
|
const maxChars = this._maxChars;
|
|
88
100
|
const reranker = this._reranker;
|
|
@@ -96,48 +108,61 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
96
108
|
let res;
|
|
97
109
|
try {
|
|
98
110
|
res = await fetch(url, {
|
|
99
|
-
headers: {
|
|
111
|
+
headers: {
|
|
112
|
+
"User-Agent": "Mozilla/5.0 (compatible; lloyal-agents/1.0)",
|
|
113
|
+
},
|
|
100
114
|
signal: controller.signal,
|
|
101
115
|
});
|
|
102
116
|
}
|
|
103
117
|
catch (err) {
|
|
104
|
-
return {
|
|
118
|
+
return {
|
|
119
|
+
error: `Fetch failed: ${err.message}`,
|
|
120
|
+
url,
|
|
121
|
+
};
|
|
105
122
|
}
|
|
106
123
|
finally {
|
|
107
124
|
clearTimeout(timer);
|
|
108
125
|
}
|
|
109
126
|
if (!res.ok)
|
|
110
127
|
return { error: `HTTP ${res.status} ${res.statusText}`, url };
|
|
111
|
-
const contentType = res.headers.get(
|
|
112
|
-
if (contentType.includes(
|
|
113
|
-
return {
|
|
128
|
+
const contentType = res.headers.get("content-type") || "";
|
|
129
|
+
if (contentType.includes("application/pdf")) {
|
|
130
|
+
return {
|
|
131
|
+
error: "PDF documents cannot be extracted. Try searching for an HTML version of this content.",
|
|
132
|
+
url,
|
|
133
|
+
};
|
|
114
134
|
}
|
|
115
135
|
const html = await res.text();
|
|
116
|
-
const { parseHTML } = await Promise.resolve().then(() => require(
|
|
136
|
+
const { parseHTML } = await Promise.resolve().then(() => require("linkedom"));
|
|
117
137
|
const { document } = parseHTML(html);
|
|
118
138
|
if (!document || !document.documentElement) {
|
|
119
|
-
return { url, content:
|
|
139
|
+
return { url, content: "[Could not parse HTML]" };
|
|
120
140
|
}
|
|
121
|
-
const { Readability } = await Promise.resolve().then(() => require(
|
|
141
|
+
const { Readability } = await Promise.resolve().then(() => require("@mozilla/readability"));
|
|
122
142
|
const article = new Readability(document).parse();
|
|
123
143
|
if (!article)
|
|
124
|
-
return { url, content:
|
|
144
|
+
return { url, content: "[Could not extract article content]" };
|
|
125
145
|
return {
|
|
126
146
|
url,
|
|
127
|
-
title: article.title ??
|
|
128
|
-
content: article.textContent ??
|
|
129
|
-
articleHtml: article.content ??
|
|
130
|
-
excerpt: article.excerpt ??
|
|
147
|
+
title: article.title ?? "",
|
|
148
|
+
content: article.textContent ?? "",
|
|
149
|
+
articleHtml: article.content ?? "",
|
|
150
|
+
excerpt: article.excerpt ?? "",
|
|
131
151
|
};
|
|
132
152
|
});
|
|
133
153
|
// Early return on error or no article
|
|
134
|
-
if (
|
|
154
|
+
if ("error" in fetched)
|
|
135
155
|
return fetched;
|
|
136
156
|
if (!fetched.articleHtml) {
|
|
137
157
|
let content = fetched.content;
|
|
138
158
|
if (content.length > maxChars)
|
|
139
|
-
content = content.slice(0, maxChars) +
|
|
140
|
-
return {
|
|
159
|
+
content = content.slice(0, maxChars) + "\n\n[truncated]";
|
|
160
|
+
return {
|
|
161
|
+
url: fetched.url,
|
|
162
|
+
title: fetched.title,
|
|
163
|
+
content,
|
|
164
|
+
excerpt: fetched.excerpt,
|
|
165
|
+
};
|
|
141
166
|
}
|
|
142
167
|
// Step 2: Reranker path — chunk HTML structurally, score, return top-K
|
|
143
168
|
if (reranker && args.query) {
|
|
@@ -147,19 +172,25 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
147
172
|
try {
|
|
148
173
|
tw = yield* lloyal_agents_1.Trace.expect();
|
|
149
174
|
}
|
|
150
|
-
catch {
|
|
175
|
+
catch {
|
|
176
|
+
/* no trace context */
|
|
177
|
+
}
|
|
151
178
|
const rerankT0 = performance.now();
|
|
152
179
|
if (tw) {
|
|
153
180
|
tw.write({
|
|
154
181
|
traceId: tw.nextId(),
|
|
155
182
|
parentTraceId: null,
|
|
156
183
|
ts: rerankT0,
|
|
157
|
-
type:
|
|
184
|
+
type: "rerank:start",
|
|
158
185
|
query: args.query,
|
|
159
186
|
chunkCount: chunks.length,
|
|
160
|
-
tool:
|
|
187
|
+
tool: "fetch_page",
|
|
161
188
|
url,
|
|
162
|
-
chunks: chunks.map(c => ({
|
|
189
|
+
chunks: chunks.map((c) => ({
|
|
190
|
+
heading: c.heading,
|
|
191
|
+
textLength: c.text.length,
|
|
192
|
+
startLine: c.startLine,
|
|
193
|
+
})),
|
|
163
194
|
});
|
|
164
195
|
}
|
|
165
196
|
if (chunks.length > 0) {
|
|
@@ -181,18 +212,25 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
181
212
|
// Exploit mode (!explore): dual scoring via scoreRelevanceBatch.
|
|
182
213
|
if (!context?.explore && context?.scorer && scored.length > 0) {
|
|
183
214
|
const chunkTexts = scored.map((sc) => {
|
|
184
|
-
const chunk = chunks.find(c => c.resource === sc.file && c.startLine === sc.startLine);
|
|
185
|
-
return chunk?.text ??
|
|
215
|
+
const chunk = chunks.find((c) => c.resource === sc.file && c.startLine === sc.startLine);
|
|
216
|
+
return chunk?.text ?? "";
|
|
186
217
|
});
|
|
187
218
|
const combinedScores = yield* (0, effection_1.call)(() => context.scorer.scoreRelevanceBatch(chunkTexts, args.query));
|
|
188
219
|
const reordered = scored
|
|
189
|
-
.map((sc, i) => ({
|
|
220
|
+
.map((sc, i) => ({
|
|
221
|
+
...sc,
|
|
222
|
+
score: combinedScores[i],
|
|
223
|
+
_toolQueryScore: sc.score,
|
|
224
|
+
}))
|
|
190
225
|
.sort((a, b) => b.score - a.score);
|
|
191
226
|
scored = reordered;
|
|
192
227
|
if (tw) {
|
|
193
228
|
tw.write({
|
|
194
|
-
traceId: tw.nextId(),
|
|
195
|
-
|
|
229
|
+
traceId: tw.nextId(),
|
|
230
|
+
parentTraceId: null,
|
|
231
|
+
ts: performance.now(),
|
|
232
|
+
type: "entailment:content:exploit",
|
|
233
|
+
tool: "fetch_page",
|
|
196
234
|
pressure: {
|
|
197
235
|
percentAvailable: context.pressurePercentAvailable ?? -1,
|
|
198
236
|
remaining: -1,
|
|
@@ -213,8 +251,8 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
213
251
|
traceId: tw.nextId(),
|
|
214
252
|
parentTraceId: null,
|
|
215
253
|
ts: performance.now(),
|
|
216
|
-
type:
|
|
217
|
-
topResults: topChunks.map(c => ({
|
|
254
|
+
type: "rerank:end",
|
|
255
|
+
topResults: topChunks.map((c) => ({
|
|
218
256
|
file: url,
|
|
219
257
|
heading: c.heading,
|
|
220
258
|
score: c.score,
|
|
@@ -223,14 +261,14 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
223
261
|
selectedPassageCount: topChunks.length,
|
|
224
262
|
totalChars: topChunks.reduce((sum, c) => sum + c.text.length, 0),
|
|
225
263
|
durationMs: performance.now() - rerankT0,
|
|
226
|
-
tool:
|
|
264
|
+
tool: "fetch_page",
|
|
227
265
|
url,
|
|
228
266
|
});
|
|
229
267
|
}
|
|
230
268
|
if (topChunks.length > 0) {
|
|
231
269
|
// Discovery signal: headings of chunks that didn't make the cut.
|
|
232
270
|
// Lightweight (~50 tokens) but gives the agent topics to explore.
|
|
233
|
-
const selectedHeadings = new Set(topChunks.map(c => c.heading));
|
|
271
|
+
const selectedHeadings = new Set(topChunks.map((c) => c.heading));
|
|
234
272
|
const alsoOnPage = scored
|
|
235
273
|
.filter((sc) => !selectedHeadings.has(sc.heading))
|
|
236
274
|
.map((sc) => sc.heading)
|
|
@@ -238,7 +276,7 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
238
276
|
return {
|
|
239
277
|
url,
|
|
240
278
|
title: fetched.title,
|
|
241
|
-
content: topChunks.map(c => c.text).join(
|
|
279
|
+
content: topChunks.map((c) => c.text).join("\n\n---\n\n"),
|
|
242
280
|
chunks: topChunks.length,
|
|
243
281
|
...(alsoOnPage.length > 0 ? { alsoOnPage } : {}),
|
|
244
282
|
};
|
|
@@ -248,7 +286,7 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
248
286
|
// Fallback: return full content, truncated
|
|
249
287
|
let content = fetched.content;
|
|
250
288
|
if (content.length > maxChars) {
|
|
251
|
-
content = content.slice(0, maxChars) +
|
|
289
|
+
content = content.slice(0, maxChars) + "\n\n[truncated]";
|
|
252
290
|
}
|
|
253
291
|
return { url, title: fetched.title, content, excerpt: fetched.excerpt };
|
|
254
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEjC,8DAAyD;AAEzD,kDAAgD;AAIhD,wDAAwD;AACxD,SAAS,eAAe,CACtB,MAAqB,EACrB,MAAe,EACf,IAAY,EACZ,WAAmB;IAEnB,MAAM,QAAQ,GAA4D,EAAE,CAAC;IAC7E,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Operation } from
|
|
2
|
-
import { Tool } from
|
|
3
|
-
import type { JsonSchema, ToolContext } from
|
|
4
|
-
import type { SearchProvider, SearchResult } from
|
|
1
|
+
import type { Operation } from "effection";
|
|
2
|
+
import { Tool } from "@lloyal-labs/lloyal-agents";
|
|
3
|
+
import type { JsonSchema, ToolContext } from "@lloyal-labs/lloyal-agents";
|
|
4
|
+
import type { SearchProvider, SearchResult } from "./types";
|
|
5
5
|
export type { SearchProvider, SearchResult };
|
|
6
6
|
/**
|
|
7
7
|
* {@link SearchProvider} implementation backed by the Tavily search API.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAS,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AAI7C;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,0BAA0B,SAAS;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE;IAK3D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAS,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AAI7C;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,cAAc;IACnD,QAAQ,CAAC,0BAA0B,SAAS;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE;IAK3D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAwBzE;AAID;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;IACxD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,gIAC2G;IAC/H,QAAQ,CAAC,UAAU,EAAE,UAAU,CAI7B;IAEF,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,KAAK,CAAS;gBAEV,QAAQ,EAAE,cAAc,EAAE,IAAI,SAAI;IAM7C,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;CA+D7E"}
|
package/dist/tools/web-search.js
CHANGED
|
@@ -18,29 +18,29 @@ class TavilyProvider {
|
|
|
18
18
|
_apiKey;
|
|
19
19
|
_snippetMaxLength;
|
|
20
20
|
constructor(apiKey, opts) {
|
|
21
|
-
this._apiKey = apiKey || process.env.TAVILY_API_KEY ||
|
|
21
|
+
this._apiKey = apiKey || process.env.TAVILY_API_KEY || "";
|
|
22
22
|
this._snippetMaxLength = opts?.snippetMaxLength ?? 500;
|
|
23
23
|
}
|
|
24
24
|
async search(query, maxResults) {
|
|
25
25
|
if (!this._apiKey)
|
|
26
|
-
throw new Error(
|
|
27
|
-
const res = await fetch(
|
|
28
|
-
method:
|
|
26
|
+
throw new Error("TAVILY_API_KEY not set");
|
|
27
|
+
const res = await fetch("https://api.tavily.com/search", {
|
|
28
|
+
method: "POST",
|
|
29
29
|
headers: {
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
"Content-Type": "application/json",
|
|
31
|
+
Authorization: `Bearer ${this._apiKey}`,
|
|
32
32
|
},
|
|
33
33
|
body: JSON.stringify({ query, max_results: maxResults }),
|
|
34
34
|
});
|
|
35
35
|
if (!res.ok)
|
|
36
36
|
throw new Error(`Tavily ${res.status}: ${await res.text()}`);
|
|
37
|
-
const data = await res.json();
|
|
37
|
+
const data = (await res.json());
|
|
38
38
|
const max = this._snippetMaxLength;
|
|
39
|
-
return data.results.map(r => ({
|
|
39
|
+
return data.results.map((r) => ({
|
|
40
40
|
title: r.title,
|
|
41
41
|
url: r.url,
|
|
42
42
|
snippet: r.content.length > max
|
|
43
|
-
? r.content.slice(0, max) +
|
|
43
|
+
? r.content.slice(0, max) + " [\u2026]"
|
|
44
44
|
: r.content,
|
|
45
45
|
}));
|
|
46
46
|
}
|
|
@@ -57,12 +57,12 @@ exports.TavilyProvider = TavilyProvider;
|
|
|
57
57
|
* @category Rig
|
|
58
58
|
*/
|
|
59
59
|
class WebSearchTool extends lloyal_agents_1.Tool {
|
|
60
|
-
name =
|
|
61
|
-
description =
|
|
60
|
+
name = "web_search";
|
|
61
|
+
description = "Search the web. Returns results with titles, snippets, and URLs. Use fetch_page to read full content of promising results.";
|
|
62
62
|
parameters = {
|
|
63
|
-
type:
|
|
64
|
-
properties: { query: { type:
|
|
65
|
-
required: [
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: { query: { type: "string", description: "Search query" } },
|
|
65
|
+
required: ["query"],
|
|
66
66
|
};
|
|
67
67
|
_provider;
|
|
68
68
|
_topN;
|
|
@@ -74,7 +74,7 @@ class WebSearchTool extends lloyal_agents_1.Tool {
|
|
|
74
74
|
*execute(args, context) {
|
|
75
75
|
const query = args.query?.trim();
|
|
76
76
|
if (!query)
|
|
77
|
-
return { error:
|
|
77
|
+
return { error: "query must not be empty" };
|
|
78
78
|
const provider = this._provider;
|
|
79
79
|
const topN = this._topN;
|
|
80
80
|
let results;
|
|
@@ -93,14 +93,22 @@ class WebSearchTool extends lloyal_agents_1.Tool {
|
|
|
93
93
|
try {
|
|
94
94
|
tw = yield* lloyal_agents_1.Trace.expect();
|
|
95
95
|
}
|
|
96
|
-
catch {
|
|
96
|
+
catch {
|
|
97
|
+
/* no trace */
|
|
98
|
+
}
|
|
97
99
|
if (tw) {
|
|
98
100
|
tw.write({
|
|
99
|
-
traceId: tw.nextId(),
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
traceId: tw.nextId(),
|
|
102
|
+
parentTraceId: null,
|
|
103
|
+
ts: performance.now(),
|
|
104
|
+
type: "entailment:search",
|
|
105
|
+
tool: "web_search",
|
|
102
106
|
query,
|
|
103
|
-
before: results.map((r, i) => ({
|
|
107
|
+
before: results.map((r, i) => ({
|
|
108
|
+
title: r.title,
|
|
109
|
+
url: r.url,
|
|
110
|
+
score: scores[i],
|
|
111
|
+
})),
|
|
104
112
|
});
|
|
105
113
|
}
|
|
106
114
|
results = results
|
|
@@ -109,9 +117,11 @@ class WebSearchTool extends lloyal_agents_1.Tool {
|
|
|
109
117
|
.map((entry) => entry.result);
|
|
110
118
|
if (tw) {
|
|
111
119
|
tw.write({
|
|
112
|
-
traceId: tw.nextId(),
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
traceId: tw.nextId(),
|
|
121
|
+
parentTraceId: null,
|
|
122
|
+
ts: performance.now(),
|
|
123
|
+
type: "entailment:search:reordered",
|
|
124
|
+
tool: "web_search",
|
|
115
125
|
after: results.map((r) => ({ title: r.title, url: r.url })),
|
|
116
126
|
});
|
|
117
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEjC,8DAAyD;AAMzD,2DAA2D;AAE3D;;;;;;;;GAQG;AACH,MAAa,cAAc;IAChB,0BAA0B,GAAG,KAAK,CAAC;IACpC,OAAO,CAAS;IAChB,iBAAiB,CAAS;IAElC,YAAY,MAAe,EAAE,IAAoC;QAC/D,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,iBAAiB,GAAG,IAAI,EAAE,gBAAgB,IAAI,GAAG,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAkB;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+BAA+B,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,
|
|
1
|
+
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lloyal-labs/rig",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.8",
|
|
4
4
|
"description": "Retrieval-Interleaved Generation for lloyal-agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"build": "tsc -b"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@lloyal-labs/lloyal-agents": "^1.5.
|
|
44
|
-
"@lloyal-labs/sdk": "^1.5.
|
|
43
|
+
"@lloyal-labs/lloyal-agents": "^1.5.8",
|
|
44
|
+
"@lloyal-labs/sdk": "^1.5.8",
|
|
45
45
|
"@mozilla/readability": "^0.6.0",
|
|
46
46
|
"effection": "^4.0.2",
|
|
47
47
|
"linkedom": "^0.18.12"
|