@lloyal-labs/rig 1.3.0 → 1.5.0
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/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +3 -2
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +4 -6
- package/dist/node.js.map +1 -1
- package/dist/reranker.d.ts +1 -0
- package/dist/reranker.d.ts.map +1 -1
- package/dist/reranker.js +5 -0
- package/dist/reranker.js.map +1 -1
- package/dist/sources/corpus.d.ts +24 -36
- package/dist/sources/corpus.d.ts.map +1 -1
- package/dist/sources/corpus.js +18 -42
- package/dist/sources/corpus.js.map +1 -1
- package/dist/sources/index.d.ts +1 -1
- package/dist/sources/index.js +1 -1
- package/dist/sources/types.d.ts +6 -18
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/sources/web.d.ts +25 -32
- package/dist/sources/web.d.ts.map +1 -1
- package/dist/sources/web.js +34 -59
- package/dist/sources/web.js.map +1 -1
- package/dist/tools/fetch-page.d.ts.map +1 -1
- package/dist/tools/fetch-page.js +41 -23
- package/dist/tools/fetch-page.js.map +1 -1
- package/dist/tools/index.d.ts +2 -8
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +5 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/web-search.d.ts +2 -2
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +36 -2
- package/dist/tools/web-search.js.map +1 -1
- package/package.json +2 -2
- package/dist/sources/corpus-research.md +0 -14
- package/dist/sources/extract.md +0 -5
- package/dist/sources/search-extract.md +0 -6
- package/dist/sources/web-research.md +0 -12
- package/dist/tools/research.d.ts +0 -57
- package/dist/tools/research.d.ts.map +0 -1
- package/dist/tools/research.js +0 -95
- package/dist/tools/research.js.map +0 -1
- package/dist/tools/web-research.d.ts +0 -60
- package/dist/tools/web-research.d.ts.map +0 -1
- package/dist/tools/web-research.js +0 -101
- package/dist/tools/web-research.js.map +0 -1
package/dist/sources/web.js
CHANGED
|
@@ -1,47 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WebSource = exports.chunkFetchedPages = void 0;
|
|
4
|
-
const fs = require("node:fs");
|
|
5
|
-
const path = require("node:path");
|
|
6
4
|
const lloyal_agents_1 = require("@lloyal-labs/lloyal-agents");
|
|
7
5
|
const web_search_1 = require("../tools/web-search");
|
|
8
6
|
const fetch_page_1 = require("../tools/fetch-page");
|
|
9
|
-
const web_research_1 = require("../tools/web-research");
|
|
10
7
|
const chunking_1 = require("./chunking");
|
|
11
8
|
// Re-export for backwards compatibility
|
|
12
9
|
var chunking_2 = require("./chunking");
|
|
13
10
|
Object.defineProperty(exports, "chunkFetchedPages", { enumerable: true, get: function () { return chunking_2.chunkFetchedPages; } });
|
|
14
|
-
// ──
|
|
15
|
-
function readTask(name) {
|
|
16
|
-
const raw = fs
|
|
17
|
-
.readFileSync(path.resolve(__dirname, `${name}.md`), "utf8")
|
|
18
|
-
.trim();
|
|
19
|
-
const sep = raw.indexOf("\n---\n");
|
|
20
|
-
if (sep === -1)
|
|
21
|
-
return { system: raw, user: "" };
|
|
22
|
-
return { system: raw.slice(0, sep).trim(), user: raw.slice(sep + 5).trim() };
|
|
23
|
-
}
|
|
24
|
-
// ── BufferingFetchPage ───────────────────────────────────────────
|
|
11
|
+
// ── BufferingFetchPage ───────────────────────────────────────
|
|
25
12
|
/**
|
|
26
13
|
* Thin wrapper over {@link FetchPageTool} that buffers fetched content
|
|
27
|
-
* for post-
|
|
28
|
-
*
|
|
29
|
-
* No scratchpad extraction. No content transformation. Just buffers
|
|
30
|
-
* the raw text alongside returning the reranked result to the agent.
|
|
14
|
+
* for post-use reranking via {@link WebSource.getChunks}.
|
|
31
15
|
*
|
|
32
16
|
* @category Rig
|
|
33
17
|
*/
|
|
34
18
|
class BufferingFetchPage extends fetch_page_1.FetchPageTool {
|
|
35
19
|
_buffer;
|
|
20
|
+
_urlCache = new Map();
|
|
36
21
|
constructor(buffer, opts) {
|
|
37
22
|
super(opts);
|
|
38
23
|
this._buffer = buffer;
|
|
39
24
|
}
|
|
40
|
-
|
|
41
|
-
|
|
25
|
+
clearCache() {
|
|
26
|
+
this._urlCache.clear();
|
|
27
|
+
}
|
|
28
|
+
*execute(args, context) {
|
|
29
|
+
const cached = this._urlCache.get(args.url);
|
|
30
|
+
if (cached)
|
|
31
|
+
return cached;
|
|
32
|
+
const result = yield* super.execute(args, context);
|
|
33
|
+
this._urlCache.set(args.url, result);
|
|
42
34
|
const r = result;
|
|
43
|
-
|
|
44
|
-
r.content !== "[Could not extract article content]"
|
|
35
|
+
const hasContent = typeof r?.content === "string"
|
|
36
|
+
&& r.content !== "[Could not extract article content]";
|
|
37
|
+
if (hasContent) {
|
|
45
38
|
this._buffer.push({
|
|
46
39
|
url: r.url || args.url,
|
|
47
40
|
title: r.title || "",
|
|
@@ -51,44 +44,47 @@ class BufferingFetchPage extends fetch_page_1.FetchPageTool {
|
|
|
51
44
|
return result;
|
|
52
45
|
}
|
|
53
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Web-backed data source
|
|
49
|
+
*
|
|
50
|
+
* Provides two tools: {@link WebSearchTool} (search the web) and
|
|
51
|
+
* {@link FetchPageTool} (fetch and extract page content with optional
|
|
52
|
+
* reranking). Fetched content is buffered for post-use reranking via
|
|
53
|
+
* {@link getChunks}.
|
|
54
|
+
*
|
|
55
|
+
* No orchestration, no prompts, no node:fs. Works on Node and React
|
|
56
|
+
* Native identically. Use {@link spawnAgents} from your harness to
|
|
57
|
+
* orchestrate agents with these tools.
|
|
58
|
+
*
|
|
59
|
+
* @category Rig
|
|
60
|
+
*/
|
|
54
61
|
class WebSource extends lloyal_agents_1.Source {
|
|
55
62
|
_buffer = [];
|
|
56
63
|
_fetchPage;
|
|
57
64
|
_webSearch;
|
|
58
|
-
_researchPrompt;
|
|
59
|
-
_researchTool = null;
|
|
60
|
-
_researchOpts;
|
|
61
65
|
/** @inheritDoc */
|
|
62
66
|
name = "web";
|
|
63
67
|
/**
|
|
64
68
|
* @param provider - Search backend (e.g. {@link TavilyProvider}) for web_search calls
|
|
65
|
-
* @param opts - Configuration for search
|
|
69
|
+
* @param opts - Configuration for search and fetch tools
|
|
66
70
|
*/
|
|
67
71
|
constructor(provider, opts) {
|
|
68
72
|
super();
|
|
69
|
-
this._researchPrompt = readTask("web-research");
|
|
70
73
|
this._fetchPage = new BufferingFetchPage(this._buffer, opts?.fetch);
|
|
71
74
|
this._webSearch = new web_search_1.WebSearchTool(provider, opts?.topN);
|
|
72
|
-
this._researchOpts = opts?.research;
|
|
73
|
-
}
|
|
74
|
-
/** @inheritDoc */
|
|
75
|
-
get researchTool() {
|
|
76
|
-
if (!this._researchTool)
|
|
77
|
-
throw new Error("WebSource: bind() must be called first");
|
|
78
|
-
return this._researchTool;
|
|
79
75
|
}
|
|
80
76
|
/** @inheritDoc */
|
|
81
|
-
get
|
|
77
|
+
get tools() {
|
|
82
78
|
return [this._webSearch, this._fetchPage];
|
|
83
79
|
}
|
|
84
80
|
/**
|
|
85
|
-
* Wire reranker to FetchPageTool
|
|
86
|
-
*
|
|
81
|
+
* Wire reranker to FetchPageTool for chunk scoring.
|
|
87
82
|
* @inheritDoc
|
|
88
83
|
*/
|
|
89
84
|
*bind(ctx) {
|
|
90
85
|
this._buffer.length = 0;
|
|
91
|
-
|
|
86
|
+
this._fetchPage.clearCache();
|
|
87
|
+
this._reranker = ctx.reranker;
|
|
92
88
|
this._fetchPage.setReranker(ctx.reranker);
|
|
93
89
|
const tw = yield* lloyal_agents_1.Trace.expect();
|
|
94
90
|
tw.write({
|
|
@@ -98,27 +94,6 @@ class WebSource extends lloyal_agents_1.Source {
|
|
|
98
94
|
type: "source:bind",
|
|
99
95
|
sourceName: this.name,
|
|
100
96
|
});
|
|
101
|
-
if (!this._researchTool) {
|
|
102
|
-
const ro = this._researchOpts;
|
|
103
|
-
const webResearch = new web_research_1.WebResearchTool({
|
|
104
|
-
name: ro?.name ?? "web_research",
|
|
105
|
-
description: ro?.description ??
|
|
106
|
-
"Spawn parallel web research agents that search the web, fetch pages, and report findings.",
|
|
107
|
-
systemPrompt: this._researchPrompt.system,
|
|
108
|
-
reporterPrompt: ctx.reporterPrompt,
|
|
109
|
-
maxTurns: ctx.maxTurns,
|
|
110
|
-
trace: ctx.trace,
|
|
111
|
-
pressure: ro?.pressure,
|
|
112
|
-
});
|
|
113
|
-
const toolkit = (0, lloyal_agents_1.createToolkit)([
|
|
114
|
-
this._webSearch,
|
|
115
|
-
this._fetchPage,
|
|
116
|
-
ctx.reportTool,
|
|
117
|
-
webResearch,
|
|
118
|
-
]);
|
|
119
|
-
webResearch.setToolkit(toolkit);
|
|
120
|
-
this._researchTool = webResearch;
|
|
121
|
-
}
|
|
122
97
|
}
|
|
123
98
|
/** @inheritDoc */
|
|
124
99
|
getChunks() {
|
package/dist/sources/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/sources/web.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/sources/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AAqCrD;;;;;;;;;;;;;;;;;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,0NAA0N;IAC9O,QAAQ,CAAC,UAAU,EAAE,UAAU,CAO7B;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;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAQ/F,kEAAkE;IAClE,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIpC,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;CA4J3F"}
|
package/dist/tools/fetch-page.js
CHANGED
|
@@ -4,6 +4,32 @@ exports.FetchPageTool = void 0;
|
|
|
4
4
|
const effection_1 = require("effection");
|
|
5
5
|
const lloyal_agents_1 = require("@lloyal-labs/lloyal-agents");
|
|
6
6
|
const chunking_1 = require("../sources/chunking");
|
|
7
|
+
/** Select top-K scored chunks within a token budget. */
|
|
8
|
+
function selectTopChunks(scored, chunks, topK, tokenBudget) {
|
|
9
|
+
const selected = [];
|
|
10
|
+
let tokenTotal = 0;
|
|
11
|
+
for (const sc of scored.slice(0, topK)) {
|
|
12
|
+
const chunk = chunks.find(c => c.resource === sc.file && c.startLine === sc.startLine);
|
|
13
|
+
if (!chunk?.text)
|
|
14
|
+
continue;
|
|
15
|
+
const chunkTokens = chunk.tokens.length || Math.ceil(chunk.text.length / 4);
|
|
16
|
+
if (tokenTotal + chunkTokens > tokenBudget) {
|
|
17
|
+
// First chunk exceeds budget — truncate on paragraph boundary
|
|
18
|
+
if (selected.length === 0) {
|
|
19
|
+
const charLimit = tokenBudget * 4;
|
|
20
|
+
let truncated = chunk.text.slice(0, charLimit);
|
|
21
|
+
const lastBreak = Math.max(truncated.lastIndexOf('\n\n'), truncated.lastIndexOf('. '));
|
|
22
|
+
if (lastBreak > charLimit * 0.4)
|
|
23
|
+
truncated = truncated.slice(0, lastBreak + 1);
|
|
24
|
+
selected.push({ text: truncated + '\n\n[truncated]', heading: sc.heading, score: sc.score });
|
|
25
|
+
}
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
selected.push({ text: chunk.text, heading: sc.heading, score: sc.score });
|
|
29
|
+
tokenTotal += chunkTokens;
|
|
30
|
+
}
|
|
31
|
+
return selected;
|
|
32
|
+
}
|
|
7
33
|
/**
|
|
8
34
|
* Fetch a web page and extract readable article content.
|
|
9
35
|
*
|
|
@@ -135,6 +161,7 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
135
161
|
}
|
|
136
162
|
if (chunks.length > 0) {
|
|
137
163
|
yield* (0, effection_1.call)(() => reranker.tokenizeChunks(chunks));
|
|
164
|
+
// Score chunks against agent's local query
|
|
138
165
|
let scored = [];
|
|
139
166
|
yield* (0, effection_1.call)(async () => {
|
|
140
167
|
for await (const batch of reranker.score(args.query, chunks)) {
|
|
@@ -143,30 +170,13 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
143
170
|
scored = batch.results;
|
|
144
171
|
}
|
|
145
172
|
});
|
|
173
|
+
// Fetch page: agent-local scoring only. No entailment check —
|
|
174
|
+
// the agent already chose to read this page. Content should be
|
|
175
|
+
// scored against what the agent asked for. Filtering against the
|
|
176
|
+
// original query removes bridging content that produces hypothesis
|
|
177
|
+
// greps. The alsoOnPage field provides discovery signals instead.
|
|
146
178
|
// Select top-K within token budget (tokens populated by tokenizeChunks)
|
|
147
|
-
const
|
|
148
|
-
const topChunks = [];
|
|
149
|
-
let tokenTotal = 0;
|
|
150
|
-
for (const sc of scored.slice(0, topK)) {
|
|
151
|
-
const chunk = chunks.find(c => c.resource === sc.file && c.startLine === sc.startLine);
|
|
152
|
-
if (!chunk?.text)
|
|
153
|
-
continue;
|
|
154
|
-
const chunkTokens = chunk.tokens.length || Math.ceil(chunk.text.length / 4);
|
|
155
|
-
if (tokenTotal + chunkTokens > TOKEN_BUDGET) {
|
|
156
|
-
if (topChunks.length === 0) {
|
|
157
|
-
// First chunk exceeds budget — truncate to budget on paragraph boundary
|
|
158
|
-
const charLimit = TOKEN_BUDGET * 4; // ~4 chars per token estimate
|
|
159
|
-
let truncated = chunk.text.slice(0, charLimit);
|
|
160
|
-
const lastBreak = Math.max(truncated.lastIndexOf('\n\n'), truncated.lastIndexOf('. '));
|
|
161
|
-
if (lastBreak > charLimit * 0.4)
|
|
162
|
-
truncated = truncated.slice(0, lastBreak + 1);
|
|
163
|
-
topChunks.push({ text: truncated + '\n\n[truncated]', heading: sc.heading, score: sc.score });
|
|
164
|
-
}
|
|
165
|
-
break;
|
|
166
|
-
}
|
|
167
|
-
topChunks.push({ text: chunk.text, heading: sc.heading, score: sc.score });
|
|
168
|
-
tokenTotal += chunkTokens;
|
|
169
|
-
}
|
|
179
|
+
const topChunks = selectTopChunks(scored, chunks, topK, tokenBudget);
|
|
170
180
|
if (tw) {
|
|
171
181
|
tw.write({
|
|
172
182
|
traceId: tw.nextId(),
|
|
@@ -187,11 +197,19 @@ class FetchPageTool extends lloyal_agents_1.Tool {
|
|
|
187
197
|
});
|
|
188
198
|
}
|
|
189
199
|
if (topChunks.length > 0) {
|
|
200
|
+
// Discovery signal: headings of chunks that didn't make the cut.
|
|
201
|
+
// Lightweight (~50 tokens) but gives the agent topics to explore.
|
|
202
|
+
const selectedHeadings = new Set(topChunks.map(c => c.heading));
|
|
203
|
+
const alsoOnPage = scored
|
|
204
|
+
.filter((sc) => !selectedHeadings.has(sc.heading))
|
|
205
|
+
.map((sc) => sc.heading)
|
|
206
|
+
.filter((h, i, arr) => arr.indexOf(h) === i);
|
|
190
207
|
return {
|
|
191
208
|
url,
|
|
192
209
|
title: fetched.title,
|
|
193
210
|
content: topChunks.map(c => c.text).join('\n\n---\n\n'),
|
|
194
211
|
chunks: topChunks.length,
|
|
212
|
+
...(alsoOnPage.length > 0 ? { alsoOnPage } : {}),
|
|
195
213
|
};
|
|
196
214
|
}
|
|
197
215
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEjC,8DAAyD;AAEzD,kDAAgD;
|
|
1
|
+
{"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -2,13 +2,10 @@ import type { Toolkit } from '@lloyal-labs/lloyal-agents';
|
|
|
2
2
|
import type { Resource, Chunk } from '../resources/types';
|
|
3
3
|
import type { Reranker } from './types';
|
|
4
4
|
import { ReportTool } from './report';
|
|
5
|
-
export { ResearchTool } from './research';
|
|
6
|
-
export type { ResearchToolOpts } from './research';
|
|
7
5
|
export { WebSearchTool, TavilyProvider } from './web-search';
|
|
8
6
|
export { FetchPageTool } from './fetch-page';
|
|
7
|
+
export { ReportTool } from './report';
|
|
9
8
|
export type { SearchProvider, SearchResult, Reranker, ScoredChunk, ScoredResult } from './types';
|
|
10
|
-
export { WebResearchTool } from './web-research';
|
|
11
|
-
export type { WebResearchToolOpts } from './web-research';
|
|
12
9
|
export { PlanTool } from './plan';
|
|
13
10
|
export type { PlanResult, PlanQuestion, PlanToolOpts } from './plan';
|
|
14
11
|
/**
|
|
@@ -20,15 +17,12 @@ export type { PlanResult, PlanQuestion, PlanToolOpts } from './plan';
|
|
|
20
17
|
*/
|
|
21
18
|
export declare const reportTool: ReportTool;
|
|
22
19
|
/**
|
|
23
|
-
* Build the standard corpus
|
|
20
|
+
* Build the standard corpus toolkit.
|
|
24
21
|
*
|
|
25
22
|
* Returns a {@link Toolkit} containing {@link SearchTool},
|
|
26
23
|
* {@link ReadFileTool}, {@link GrepTool}, and {@link ReportTool}
|
|
27
24
|
* wired to the provided resources, chunks, and reranker.
|
|
28
25
|
*
|
|
29
|
-
* @param opts - Resources, chunks, and reranker to bind into the tools.
|
|
30
|
-
* @returns A ready-to-use toolkit for corpus research agents.
|
|
31
|
-
*
|
|
32
26
|
* @category Rig
|
|
33
27
|
*/
|
|
34
28
|
export declare function createTools(opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,OAAO,CAOV"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reportTool = exports.PlanTool = exports.
|
|
3
|
+
exports.reportTool = exports.PlanTool = exports.ReportTool = exports.FetchPageTool = exports.TavilyProvider = exports.WebSearchTool = void 0;
|
|
4
4
|
exports.createTools = createTools;
|
|
5
5
|
const lloyal_agents_1 = require("@lloyal-labs/lloyal-agents");
|
|
6
6
|
const search_1 = require("./search");
|
|
7
7
|
const read_file_1 = require("./read-file");
|
|
8
8
|
const grep_1 = require("./grep");
|
|
9
9
|
const report_1 = require("./report");
|
|
10
|
-
var research_1 = require("./research");
|
|
11
|
-
Object.defineProperty(exports, "ResearchTool", { enumerable: true, get: function () { return research_1.ResearchTool; } });
|
|
12
10
|
var web_search_1 = require("./web-search");
|
|
13
11
|
Object.defineProperty(exports, "WebSearchTool", { enumerable: true, get: function () { return web_search_1.WebSearchTool; } });
|
|
14
12
|
Object.defineProperty(exports, "TavilyProvider", { enumerable: true, get: function () { return web_search_1.TavilyProvider; } });
|
|
15
13
|
var fetch_page_1 = require("./fetch-page");
|
|
16
14
|
Object.defineProperty(exports, "FetchPageTool", { enumerable: true, get: function () { return fetch_page_1.FetchPageTool; } });
|
|
17
|
-
var
|
|
18
|
-
Object.defineProperty(exports, "
|
|
15
|
+
var report_2 = require("./report");
|
|
16
|
+
Object.defineProperty(exports, "ReportTool", { enumerable: true, get: function () { return report_2.ReportTool; } });
|
|
19
17
|
var plan_1 = require("./plan");
|
|
20
18
|
Object.defineProperty(exports, "PlanTool", { enumerable: true, get: function () { return plan_1.PlanTool; } });
|
|
21
19
|
/**
|
|
@@ -27,15 +25,12 @@ Object.defineProperty(exports, "PlanTool", { enumerable: true, get: function ()
|
|
|
27
25
|
*/
|
|
28
26
|
exports.reportTool = new report_1.ReportTool();
|
|
29
27
|
/**
|
|
30
|
-
* Build the standard corpus
|
|
28
|
+
* Build the standard corpus toolkit.
|
|
31
29
|
*
|
|
32
30
|
* Returns a {@link Toolkit} containing {@link SearchTool},
|
|
33
31
|
* {@link ReadFileTool}, {@link GrepTool}, and {@link ReportTool}
|
|
34
32
|
* wired to the provided resources, chunks, and reranker.
|
|
35
33
|
*
|
|
36
|
-
* @param opts - Resources, chunks, and reranker to bind into the tools.
|
|
37
|
-
* @returns A ready-to-use toolkit for corpus research agents.
|
|
38
|
-
*
|
|
39
34
|
* @category Rig
|
|
40
35
|
*/
|
|
41
36
|
function createTools(opts) {
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;AAkCA,kCAWC;AA7CD,8DAA2D;AAI3D,qCAAsC;AACtC,2CAA2C;AAC3C,iCAAkC;AAClC,qCAAsC;AAEtC,2CAA6D;AAApD,2GAAA,aAAa,OAAA;AAAE,4GAAA,cAAc,OAAA;AACtC,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AAEnB,+BAAkC;AAAzB,gGAAA,QAAQ,OAAA;AAGjB;;;;;;GAMG;AACU,QAAA,UAAU,GAAG,IAAI,mBAAU,EAAE,CAAC;AAE3C;;;;;;;;GAQG;AACH,SAAgB,WAAW,CAAC,IAI3B;IACC,OAAO,IAAA,6BAAa,EAAC;QACnB,IAAI,mBAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,wBAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,eAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5B,kBAAU;KACX,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/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,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,qGAAqG;IACzH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAI7B;IAEF,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAW;gBAEhB,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ;IAM9C,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/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,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;IACrD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,qGAAqG;IACzH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAI7B;IAEF,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAW;gBAEhB,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ;IAM9C,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;CAsC7E"}
|
package/dist/tools/search.js
CHANGED
|
@@ -45,7 +45,7 @@ class SearchTool extends lloyal_agents_1.Tool {
|
|
|
45
45
|
traceId: tw.nextId(), parentTraceId: null, ts: t0,
|
|
46
46
|
type: 'rerank:start', query, chunkCount: chunks.length,
|
|
47
47
|
});
|
|
48
|
-
|
|
48
|
+
let results = yield* (0, effection_1.call)(async () => {
|
|
49
49
|
let last = [];
|
|
50
50
|
for await (const { results, filled, total } of reranker.score(query, chunks)) {
|
|
51
51
|
if (context?.onProgress)
|
|
@@ -54,6 +54,10 @@ class SearchTool extends lloyal_agents_1.Tool {
|
|
|
54
54
|
}
|
|
55
55
|
return last;
|
|
56
56
|
});
|
|
57
|
+
// Corpus search: agent-local scoring only. No entailment check —
|
|
58
|
+
// agents need to discover bridging content (adjacent sections that
|
|
59
|
+
// connect the agent's investigation to the answer). Scoring against
|
|
60
|
+
// the original query would demote exactly that content.
|
|
57
61
|
tw.write({
|
|
58
62
|
traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
|
|
59
63
|
type: 'rerank:end',
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEjC,8DAAyD;AAKzD;;;;;;;;;;;;;;GAcG;AACH,MAAa,UAAW,SAAQ,oBAAuB;IAC5C,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,iGAAiG,CAAC;IAChH,UAAU,GAAe;QAChC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;QACtE,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB,CAAC;IAEM,OAAO,CAAU;IACjB,SAAS,CAAW;IAE5B,YAAY,MAAe,EAAE,QAAkB;QAC7C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,CAAC,OAAO,CAAC,IAAuB,EAAE,OAAqB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,EAAE,CAAC,KAAK,CAAC;YACP,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;YACjD,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM;SACvD,CAAC,CAAC;QAEH,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEjC,8DAAyD;AAKzD;;;;;;;;;;;;;;GAcG;AACH,MAAa,UAAW,SAAQ,oBAAuB;IAC5C,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,iGAAiG,CAAC;IAChH,UAAU,GAAe;QAChC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;QACtE,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB,CAAC;IAEM,OAAO,CAAU;IACjB,SAAS,CAAW;IAE5B,YAAY,MAAe,EAAE,QAAkB;QAC7C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,CAAC,OAAO,CAAC,IAAuB,EAAE,OAAqB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,EAAE,CAAC,KAAK,CAAC;YACP,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;YACjD,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM;SACvD,CAAC,CAAC;QAEH,IAAI,OAAO,GAAkB,KAAK,CAAC,CAAC,IAAA,gBAAI,EAAC,KAAK,IAAI,EAAE;YAClD,IAAI,IAAI,GAAkB,EAAE,CAAC;YAC7B,IAAI,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC7E,IAAI,OAAO,EAAE,UAAU;oBAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/D,IAAI,GAAG,OAAO,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,iEAAiE;QACjE,mEAAmE;QACnE,oEAAoE;QACpE,wDAAwD;QAExD,EAAE,CAAC,KAAK,CAAC;YACP,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE;YAChE,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAChG,oBAAoB,EAAE,OAAO,CAAC,MAAM;YACpC,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAxDD,gCAwDC"}
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export interface ScoredResult {
|
|
|
49
49
|
export interface Reranker {
|
|
50
50
|
/** Score chunks against a query, streaming progressive results */
|
|
51
51
|
score(query: string, chunks: Chunk[]): AsyncIterable<ScoredResult>;
|
|
52
|
+
/** Score raw text strings against a query in one batch. Returns scores (0–1) in input order. */
|
|
53
|
+
scoreBatch(query: string, texts: string[]): Promise<number[]>;
|
|
52
54
|
/** Pre-tokenize chunks for subsequent scoring calls */
|
|
53
55
|
tokenizeChunks(chunks: Chunk[]): Promise<void>;
|
|
54
56
|
/** Release reranker resources */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACnE,uDAAuD;IACvD,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,iCAAiC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB;AAID;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACnE,8GAA8G;IAC9G,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACnE,gGAAgG;IAChG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,uDAAuD;IACvD,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,iCAAiC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB;AAID;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACnE,8GAA8G;IAC9G,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Operation } from 'effection';
|
|
2
2
|
import { Tool } from '@lloyal-labs/lloyal-agents';
|
|
3
|
-
import type { JsonSchema } from '@lloyal-labs/lloyal-agents';
|
|
3
|
+
import type { JsonSchema, ToolContext } from '@lloyal-labs/lloyal-agents';
|
|
4
4
|
import type { SearchProvider, SearchResult } from './types';
|
|
5
5
|
export type { SearchProvider, SearchResult };
|
|
6
6
|
/**
|
|
@@ -41,6 +41,6 @@ export declare class WebSearchTool extends Tool<{
|
|
|
41
41
|
constructor(provider: SearchProvider, topN?: number);
|
|
42
42
|
execute(args: {
|
|
43
43
|
query: string;
|
|
44
|
-
}): Operation<unknown>;
|
|
44
|
+
}, context?: ToolContext): Operation<unknown>;
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=web-search.d.ts.map
|
|
@@ -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,
|
|
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;CAqBzE;AAID;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;IACxD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,gIAAgI;IACpJ,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;CAiD7E"}
|
package/dist/tools/web-search.js
CHANGED
|
@@ -71,18 +71,52 @@ class WebSearchTool extends lloyal_agents_1.Tool {
|
|
|
71
71
|
this._provider = provider;
|
|
72
72
|
this._topN = topN;
|
|
73
73
|
}
|
|
74
|
-
*execute(args) {
|
|
74
|
+
*execute(args, context) {
|
|
75
75
|
const query = args.query?.trim();
|
|
76
76
|
if (!query)
|
|
77
77
|
return { error: 'query must not be empty' };
|
|
78
78
|
const provider = this._provider;
|
|
79
79
|
const topN = this._topN;
|
|
80
|
+
let results;
|
|
80
81
|
try {
|
|
81
|
-
|
|
82
|
+
results = yield* (0, effection_1.call)(() => provider.search(query, topN));
|
|
82
83
|
}
|
|
83
84
|
catch (err) {
|
|
84
85
|
return { error: `Search failed: ${err.message}` };
|
|
85
86
|
}
|
|
87
|
+
// Rerank by entailment against original query when scorer is available
|
|
88
|
+
const scorer = context?.scorer;
|
|
89
|
+
if (scorer && results.length > 1) {
|
|
90
|
+
const snippets = results.map((r) => `${r.title}. ${r.snippet}`);
|
|
91
|
+
const scores = yield* (0, effection_1.call)(() => scorer.scoreEntailmentBatch(snippets));
|
|
92
|
+
let tw;
|
|
93
|
+
try {
|
|
94
|
+
tw = yield* lloyal_agents_1.Trace.expect();
|
|
95
|
+
}
|
|
96
|
+
catch { /* no trace */ }
|
|
97
|
+
if (tw) {
|
|
98
|
+
tw.write({
|
|
99
|
+
traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
|
|
100
|
+
type: 'entailment:search',
|
|
101
|
+
tool: 'web_search',
|
|
102
|
+
query,
|
|
103
|
+
before: results.map((r, i) => ({ title: r.title, url: r.url, score: scores[i] })),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
results = results
|
|
107
|
+
.map((r, i) => ({ result: r, score: scores[i] }))
|
|
108
|
+
.sort((a, b) => b.score - a.score)
|
|
109
|
+
.map((entry) => entry.result);
|
|
110
|
+
if (tw) {
|
|
111
|
+
tw.write({
|
|
112
|
+
traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
|
|
113
|
+
type: 'entailment:search:reordered',
|
|
114
|
+
tool: 'web_search',
|
|
115
|
+
after: results.map((r) => ({ title: r.title, url: r.url })),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return results;
|
|
86
120
|
}
|
|
87
121
|
}
|
|
88
122
|
exports.WebSearchTool = WebSearchTool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAEjC,
|
|
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.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Retrieval-Interleaved Generation for lloyal-agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"license": "Apache-2.0",
|
|
38
38
|
"type": "commonjs",
|
|
39
39
|
"scripts": {
|
|
40
|
-
"build": "tsc -b
|
|
40
|
+
"build": "tsc -b"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@lloyal-labs/lloyal-agents": "*",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
You are a research assistant analyzing a knowledge base. Your tools:
|
|
2
|
-
- **grep**: regex pattern matching — use for precise, exhaustive retrieval
|
|
3
|
-
- **search**: semantic relevance ranking — use to discover related content
|
|
4
|
-
- **read_file**: read specific line ranges — use to verify and get context
|
|
5
|
-
- **research**: spawn parallel sub-agents that each run their own grep/search/read_file cycle — call with `{"questions": ["q1", "q2", ...]}`
|
|
6
|
-
- **report**: submit your final findings with evidence
|
|
7
|
-
|
|
8
|
-
Process — follow every step in order:
|
|
9
|
-
1. Grep with short, simple patterns first. Use single keywords or two-word phrases — never combine multiple clauses with `.*`. Run multiple greps if needed.
|
|
10
|
-
2. Use search to discover content that grep may miss (different phrasing, synonyms).
|
|
11
|
-
3. Read every matching line with read_file to verify in context. Do not rely on grep/search summaries alone.
|
|
12
|
-
4. Grep again with a different pattern targeting what you have NOT yet found. This is a completeness check, not confirmation of existing results.
|
|
13
|
-
5. Call research with sub-questions only if your findings point to specific topics you haven't fully investigated.
|
|
14
|
-
6. Report with line numbers and direct quotes as evidence. State what you found and what you checked.
|
package/dist/sources/extract.md
DELETED