@lloyal-labs/rig 1.5.8 → 2.0.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @lloyal-labs/rig
2
2
 
3
- Retrieval-Interleaved Generation for [lloyal-agents](../agents).
3
+ Retrieval-Interleaved Generation for the [lloyal HDK](https://github.com/lloyal-ai/hdk).
4
4
 
5
5
  ```bash
6
6
  npm i @lloyal-labs/rig @lloyal-labs/lloyal-agents @lloyal-labs/lloyal.node
@@ -10,7 +10,7 @@ npm i @lloyal-labs/rig @lloyal-labs/lloyal-agents @lloyal-labs/lloyal.node
10
10
 
11
11
  RAG retrieves first, then generates. A retrieval step runs upfront — query the vector DB, get top-k passages, inject them into the prompt, call the model once. The model sees static context. Retrieval and generation are separate phases.
12
12
 
13
- RIG interleaves retrieval and generation inside the decode loop. Agents generate reasoning, decide to search, process results, reason further, fetch a page, form hypotheses from the content, search again with refined queries. Retrieval decisions emerge from ongoing generation — each search query is informed by everything the agent has already discovered.
13
+ RIG interleaves retrieval and generation **inside the decode loop**. Agents generate reasoning, decide to search, process results, reason further, fetch a page, form hypotheses from the content, search again with refined queries. Retrieval decisions emerge from ongoing generation — each search query is informed by everything the agent has already discovered.
14
14
 
15
15
  The difference is observable in tool call inputs. A RAG system constructs search queries from the original user question. A RIG agent constructs queries from hypotheses formed during generation:
16
16
 
@@ -30,7 +30,7 @@ The last search — `"pool drain connection lifecycle interaction"` — is the s
30
30
 
31
31
  This behavior is not prompted or engineered. It emerges from the concurrency semantics of `lloyal-agents`.
32
32
 
33
- The four-phase tick loop creates a clean decision boundary between each tool call and the next generation step:
33
+ The five-phase tick loop creates a clean decision boundary between each tool call and the next generation step:
34
34
 
35
35
  1. Agent generates tokens, hits stop token, tool call extracted
36
36
  2. Tool executes to completion — agent is suspended
@@ -42,17 +42,15 @@ Step 5 is the critical moment. The model's next-token prediction operates on a c
42
42
 
43
43
  An agent that greps with a narrow pattern and gets 0 matches will broaden the pattern on its next grep — not because it's prompted to retry, but because the 0-match result is in context and the model naturally adjusts. An agent that reads a section and discovers an unexpected connection will construct a search query targeting that specific connection — the read result is in context, and the model forms a hypothesis from it.
44
44
 
45
- Under a concurrent dispatch model where tool results arrive mid-generation, the agent is already producing tokens when results land. The result gets incorporated, but there's no clean pause for hypothesis formation. The observable effect: sequential dispatch produces progressively more specific queries; concurrent dispatch produces variations on the original question.
46
-
47
- Depth scales with `maxTurns`. At 2 turns, agents do single-shot retrieval. At 6 turns, agents do 3-4 rounds of iterative refinement. At 20 turns, agents go deep — following citation chains, cross-referencing claims, building evidence maps. The quality difference is in the later tool call inputs.
45
+ Depth scales with `maxTurns`. At 2 turns, agents do single-shot retrieval. At 6 turns, agents do 3–4 rounds of iterative refinement. At 20 turns, agents go deep following citation chains, cross-referencing claims, building evidence maps. The quality difference is in the later tool call inputs.
48
46
 
49
47
  ## Sources
50
48
 
51
49
  `@lloyal-labs/rig` provides two `Source` implementations (extending the base class from `lloyal-agents`):
52
50
 
53
- **CorpusSource** — local files with grep, semantic search, read_file, and recursive research tools. Agents investigate a knowledge base by pattern matching, reading sections in context, and spawning sub-agents for deeper investigation.
51
+ **`CorpusSource`** — local files with grep, semantic search, read_file, and recursive delegation. Agents investigate a knowledge base by pattern matching, reading sections in context, and spawning sub-agents for deeper investigation.
54
52
 
55
- **WebSource** — web search via [Tavily](https://tavily.com), page fetching with attention-based content extraction, and recursive web_research tools. `BufferingFetchPage` wraps fetch results — full content goes to the agent for reasoning, while a parallel buffer stores content for post-research reranking. Content extraction uses `generate({ parent })` to attend over the fetched page and extract summary + links via grammar-constrained generation, then prunes the fork — zero net KV cost per extraction.
53
+ **`WebSource`** — web search via [Tavily](https://tavily.com), page fetching with attention-based content extraction, and recursive delegation. `BufferingFetchPage` wraps fetch results — full content goes to the agent for reasoning, while a parallel buffer stores content for post-research reranking. Content extraction uses an ephemeral fork to attend over the fetched page and extract summary + links via grammar-constrained generation, then prunes the fork — zero net KV cost per extraction.
56
54
 
57
55
  Sources are composable. A pipeline can use one source, both, or custom implementations:
58
56
 
@@ -61,20 +59,17 @@ import {
61
59
  CorpusSource,
62
60
  WebSource,
63
61
  TavilyProvider,
64
- loadResources,
65
- chunkResources,
66
62
  } from "@lloyal-labs/rig";
63
+ import { loadResources, chunkResources } from "@lloyal-labs/rig/node";
67
64
 
68
65
  const sources = [];
69
66
 
70
- // Local knowledge base
71
67
  if (corpusDir) {
72
68
  const resources = loadResources(corpusDir);
73
69
  const chunks = chunkResources(resources);
74
70
  sources.push(new CorpusSource(resources, chunks));
75
71
  }
76
72
 
77
- // Web search
78
73
  if (process.env.TAVILY_API_KEY) {
79
74
  sources.push(new WebSource(new TavilyProvider()));
80
75
  }
@@ -82,9 +77,20 @@ if (process.env.TAVILY_API_KEY) {
82
77
 
83
78
  When multiple sources are used, they run sequentially — each source gets the full KV budget. After source N completes, its inner branches are pruned and KV is freed for source N+1.
84
79
 
80
+ ### Cross-encoder reranker — four scoring roles
81
+
82
+ The reranker (a small cross-encoder GGUF — Qwen3-Reranker-0.6B is the recommended default) drives an `EntailmentScorer` with four distinct methods:
83
+
84
+ - **`scoreEntailmentBatch`** — texts vs. the original query. Boundary entailment for retrieved content.
85
+ - **`scoreRelevanceBatch`** — dual-score `min(toolQueryScore, originalQueryScore)`. Used in exploit mode when KV pressure tightens focus.
86
+ - **`scoreSimilarityBatch`** — texts vs. an arbitrary reference. Powers echo detection at delegation boundaries (the agent's own task as reference).
87
+ - **`shouldProceed`** — floor gate. Default `_entailmentFloor = 0.25`.
88
+
89
+ One model, four roles. The reranker is RIG infrastructure, not a fetch optimization.
90
+
85
91
  ### Bridge
86
92
 
87
- Between sources, a bridge exit gate structures discoveries from the completed source as durable context for the next source's investigation:
93
+ Between sources, a bridge structures discoveries from the completed source as durable context for the next source's investigation:
88
94
 
89
95
  ```
90
96
  Corpus research → Bridge → Web research → Synthesize
@@ -93,19 +99,11 @@ Corpus research → Bridge → Web research → Synthesize
93
99
  The bridge extracts three tiers of discovery:
94
100
 
95
101
  1. **What was established** — specific data points, study details, statistics, quotes. Evidence preserved verbatim.
96
- 2. **Where evidence is incomplete** — acknowledged limitations, absent study designs, uncertain mechanisms. These are well-researched claims with identified evidence gaps.
102
+ 2. **Where evidence is incomplete** — acknowledged limitations, absent study designs, uncertain mechanisms. Well-researched claims with identified evidence gaps.
97
103
  3. **What was not covered** — topics mentioned but not substantiated, or entirely absent.
98
104
 
99
105
  The distinction between (2) and (3) is critical. A topic with six sections of evidence but no experimental validation is not a gap — it is a well-researched claim with an identified evidence limitation. The bridge flags the limitation, not the topic. This prevents the next source from re-investigating what the previous source already covered, and directs it toward genuine gaps.
100
106
 
101
- Bridge discoveries condition the next source's questions:
102
-
103
- ```typescript
104
- activeQuestions = questions.map(
105
- (q) => `${q}\n\nPrior research discoveries:\n${discoveries}`,
106
- );
107
- ```
108
-
109
107
  ## Pipeline
110
108
 
111
109
  A typical RIG pipeline:
@@ -114,11 +112,11 @@ A typical RIG pipeline:
114
112
  Plan → Research → [Bridge →] Synthesize → Eval
115
113
  ```
116
114
 
117
- **Plan.** Grammar-constrained decomposition of the user query into sub-questions with intent classification (`research` vs `clarify`). If the query is focused enough to investigate directly, produces an empty array (passthrough). Uses `generate()` with a JSON schema grammar — the model outputs structured `{ questions: [{ text, intent }] }` in a single generation pass.
115
+ **Plan.** Grammar-constrained decomposition of the user query into sub-questions with intent classification (`research` vs `clarify`). If the query is focused enough to investigate directly, produces an empty array (passthrough). `PlanTool` uses `agent()` with a JSON schema grammar — the model outputs structured `{ questions: [{ text, intent }] }` in a single generation pass.
118
116
 
119
- **Research.** Each source's research tool spawns a pool of agents that investigate sub-questions. Agents interleave retrieval and generation — searching, reading, forming hypotheses, searching again. Within each source, all agents run concurrently on shared GPU compute via `useAgentPool`. Sources run sequentially, each getting the full KV budget.
117
+ **Research.** Each source's tools are passed to an `agentPool` that investigates sub-questions in parallel (or in chain mode, sequentially with spine extension). Agents interleave retrieval and generation — searching, reading, forming hypotheses, searching again. Within each source, all agents run concurrently on shared GPU compute. Sources run sequentially, each getting the full KV budget.
120
118
 
121
- Agents that get cut by context pressure (their tool results exceeded KV headroom) are recovered via scratchpad extraction — `generate({ parent: agent.branch })` with a grammar-constrained reporter prompt attends over the agent's accumulated KV and extracts findings. The agent paid the KV cost of reasoning; the extraction recovers the value.
119
+ Agents that get cut by context pressure (their tool results exceeded KV headroom) are recovered via scratchpad extraction — a grammar-constrained reporter prompt attends over the agent's accumulated KV and extracts findings. The agent paid the KV cost of reasoning; the extraction recovers the value.
122
120
 
123
121
  **Bridge.** Runs between sources when multiple sources are configured. A single agent with report-only tools structures discoveries from the completed source. The bridge output conditions the next source's sub-questions, directing investigation toward gaps rather than re-covering established ground.
124
122
 
@@ -126,6 +124,8 @@ Agents that get cut by context pressure (their tool results exceeded KV headroom
126
124
 
127
125
  **Eval.** Multi-branch semantic comparison via `diverge()`. Fork N branches from a shared frontier, generate independently with the same verify prompt, check convergence. Where branches agree, the model is confident. Where they diverge, the answer needs refinement.
128
126
 
127
+ Full architectural walkthrough: [RIG Pipeline reference](https://docs.lloyal.ai/reference/rig/pipeline).
128
+
129
129
  ## Tools
130
130
 
131
131
  ### Corpus tools
@@ -135,24 +135,44 @@ Agents that get cut by context pressure (their tool results exceeded KV headroom
135
135
  | `SearchTool` | Semantic search over corpus chunks via reranker scoring |
136
136
  | `GrepTool` | Exhaustive regex pattern matching across all files |
137
137
  | `ReadFileTool` | Read file content at specified line ranges, tracks per-agent read state |
138
- | `ResearchTool` | Spawn sub-agent pool for deeper investigation of sub-questions |
139
138
  | `ReportTool` | Terminal tool — agents call this to submit findings |
140
139
 
141
140
  ### Web tools
142
141
 
143
- | Tool | Description |
144
- | ----------------- | --------------------------------------------------------------- |
145
- | `WebSearchTool` | Web search via configurable provider (Tavily included) |
146
- | `FetchPageTool` | Fetch URL, extract article text via Readability |
147
- | `WebResearchTool` | Spawn sub-agent pool with web tools for recursive investigation |
142
+ | Tool | Description |
143
+ | --------------- | --------------------------------------------------------------- |
144
+ | `WebSearchTool` | Web search via configurable provider (`TavilyProvider` included) |
145
+ | `FetchPageTool` | Fetch URL, extract article text via Readability |
148
146
 
149
147
  ### Pipeline tools
150
148
 
151
- | Tool | Description |
152
- | --------------------------- | ------------------------------------------------------------------ |
153
- | `PlanTool` | Grammar-constrained query decomposition with intent classification |
154
- | `createTools(opts)` | Build corpus toolkit from resources, chunks, and reranker |
155
- | `createReranker(modelPath)` | Semantic reranker for chunk scoring and passage selection |
149
+ | Tool | Description |
150
+ | ---------------------- | ---------------------------------------------------------------------------- |
151
+ | `PlanTool` | Grammar-constrained query decomposition with intent classification |
152
+ | `DelegateTool` | Generic recursive-delegation tool agent calls it to spawn a sub-agent pool |
153
+ | `createTools(opts)` | Build corpus toolkit from resources, chunks, and reranker |
154
+ | `createReranker(path)` | (`/node` subpath) Semantic reranker for chunk scoring and passage selection |
155
+
156
+ ### `DelegateTool`
157
+
158
+ `DelegateTool` is the canonical recursive-delegation primitive. It takes a tool name, a sub-task extractor, a system prompt, and pool options — when the agent calls it, the tool spawns an inner `agentPool` with `parent: context.branch` (warm path) so sub-agents inherit the calling agent's full KV state at zero marginal cost.
159
+
160
+ ```typescript
161
+ import { DelegateTool, reportTool } from "@lloyal-labs/rig";
162
+
163
+ const delegate = new DelegateTool({
164
+ name: "web_research",
165
+ extractTasks: (a) => a.questions as string[],
166
+ systemPrompt: RESEARCH_PROMPT,
167
+ poolOpts: {
168
+ tools: [...sourceTools, reportTool],
169
+ terminalTool: "report",
170
+ scorer,
171
+ },
172
+ });
173
+ ```
174
+
175
+ The agent sees `web_research` (or whatever `name` you give it) as a callable tool. Calling it spawns parallel sub-agents that recurse into the corpus or web. The deeper an investigation goes, the richer the attention state at depth — and the cost of inheritance is zero.
156
176
 
157
177
  ## Custom Sources
158
178
 
@@ -162,17 +182,19 @@ Extend `Source` from `lloyal-agents` to create custom sources:
162
182
  import { Source } from "@lloyal-labs/lloyal-agents";
163
183
  import type { Tool } from "@lloyal-labs/lloyal-agents";
164
184
 
165
- class DatabaseSource extends Source<SourceContext, Row> {
185
+ class DatabaseSource extends Source<DatabaseContext, Row> {
166
186
  readonly name = "database";
167
187
 
168
- get researchTool(): Tool {
169
- return this._researchTool;
188
+ get tools(): Tool[] {
189
+ return this._tools;
170
190
  }
171
191
 
172
- *bind(ctx: SourceContext) {
173
- // Set up tools with access to ctx.parent (for generate({ parent })),
174
- // ctx.reranker, ctx.reporterPrompt, ctx.reportTool
175
- this._researchTool = new DatabaseResearchTool(/* ... */);
192
+ *bind(ctx: DatabaseContext) {
193
+ // Set up tools, reranker, scorer state
194
+ this._tools = [
195
+ new QueryTool(/* ... */),
196
+ new SchemaInspectTool(/* ... */),
197
+ ];
176
198
  }
177
199
 
178
200
  getChunks(): Row[] {
@@ -181,7 +203,13 @@ class DatabaseSource extends Source<SourceContext, Row> {
181
203
  }
182
204
  ```
183
205
 
184
- The `bind()` lifecycle receives a `SourceContext` with the parent branch (for forking), reranker, reporter prompt, and report tool. Your research tool calls `useAgentPool` or `runAgents` internally — same primitives the built-in sources use.
206
+ The `bind()` lifecycle receives a context with reranker and scorer plumbing. Your tools call `agentPool` or `useAgent` internally for recursive patterns — same primitives the built-in sources use.
207
+
208
+ See [custom sources](https://docs.lloyal.ai/reference/rig/custom-sources) for the full contract.
209
+
210
+ ## Documentation
211
+
212
+ Full positioning, source contract, reranker mechanics, and pipeline patterns at [docs.lloyal.ai](https://docs.lloyal.ai).
185
213
 
186
214
  ## License
187
215
 
package/dist/index.d.ts CHANGED
@@ -10,8 +10,8 @@
10
10
  * @packageDocumentation
11
11
  * @category Rig
12
12
  */
13
- export { createTools, reportTool, ReportTool, WebSearchTool, TavilyProvider, FetchPageTool, PlanTool, } from './tools';
14
- export type { PlanToolOpts, PlanResult, PlanQuestion, SearchProvider, SearchResult, Reranker, ScoredChunk, ScoredResult, } from './tools';
13
+ export { createTools, reportTool, ReportTool, WebSearchTool, TavilyProvider, FetchPageTool, DelegateTool, PlanTool, taskToContent, } from './tools';
14
+ export type { DelegateToolOpts, PlanToolOpts, PlanResult, PlanIntent, ResearchTask, SearchProvider, SearchResult, Reranker, ScoredChunk, ScoredResult, } from './tools';
15
15
  export { WebSource } from './sources/web';
16
16
  export type { WebSourceOpts } from './sources/web';
17
17
  export { CorpusSource } from './sources/corpus';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,WAAW,EAAE,UAAU,EAAE,UAAU,EACnC,aAAa,EAAE,cAAc,EAAE,aAAa,EAC5C,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,YAAY,EACZ,UAAU,EAAE,YAAY,EACxB,cAAc,EAAE,YAAY,EAC5B,QAAQ,EAAE,WAAW,EAAE,YAAY,GACpC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,WAAW,EAAE,UAAU,EAAE,UAAU,EACnC,aAAa,EAAE,cAAc,EAAE,aAAa,EAC5C,YAAY,EACZ,QAAQ,EAAE,aAAa,GACxB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EAAE,UAAU,EAAE,YAAY,EACpC,cAAc,EAAE,YAAY,EAC5B,QAAQ,EAAE,WAAW,EAAE,YAAY,GACpC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@
12
12
  * @category Rig
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.chunkHtml = exports.chunkFetchedPages = exports.CorpusSource = exports.WebSource = exports.PlanTool = exports.FetchPageTool = exports.TavilyProvider = exports.WebSearchTool = exports.ReportTool = exports.reportTool = exports.createTools = void 0;
15
+ exports.chunkHtml = exports.chunkFetchedPages = exports.CorpusSource = exports.WebSource = exports.taskToContent = exports.PlanTool = exports.DelegateTool = exports.FetchPageTool = exports.TavilyProvider = exports.WebSearchTool = exports.ReportTool = exports.reportTool = exports.createTools = void 0;
16
16
  // Tools (pure TS + Effection + linkedom — platform-agnostic)
17
17
  var tools_1 = require("./tools");
18
18
  Object.defineProperty(exports, "createTools", { enumerable: true, get: function () { return tools_1.createTools; } });
@@ -21,7 +21,9 @@ Object.defineProperty(exports, "ReportTool", { enumerable: true, get: function (
21
21
  Object.defineProperty(exports, "WebSearchTool", { enumerable: true, get: function () { return tools_1.WebSearchTool; } });
22
22
  Object.defineProperty(exports, "TavilyProvider", { enumerable: true, get: function () { return tools_1.TavilyProvider; } });
23
23
  Object.defineProperty(exports, "FetchPageTool", { enumerable: true, get: function () { return tools_1.FetchPageTool; } });
24
+ Object.defineProperty(exports, "DelegateTool", { enumerable: true, get: function () { return tools_1.DelegateTool; } });
24
25
  Object.defineProperty(exports, "PlanTool", { enumerable: true, get: function () { return tools_1.PlanTool; } });
26
+ Object.defineProperty(exports, "taskToContent", { enumerable: true, get: function () { return tools_1.taskToContent; } });
25
27
  // Sources (platform-agnostic — no node:fs)
26
28
  var web_1 = require("./sources/web");
27
29
  Object.defineProperty(exports, "WebSource", { enumerable: true, get: function () { return web_1.WebSource; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEH,6DAA6D;AAC7D,iCAIiB;AAHf,oGAAA,WAAW,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,mGAAA,UAAU,OAAA;AACnC,sGAAA,aAAa,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC5C,iGAAA,QAAQ,OAAA;AASV,2CAA2C;AAC3C,qCAA0C;AAAjC,gGAAA,SAAS,OAAA;AAElB,2CAAgD;AAAvC,sGAAA,YAAY,OAAA;AAIrB,qDAAqD;AACrD,+CAAkE;AAAzD,6GAAA,iBAAiB,OAAA;AAAE,qGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEH,6DAA6D;AAC7D,iCAKiB;AAJf,oGAAA,WAAW,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,mGAAA,UAAU,OAAA;AACnC,sGAAA,aAAa,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC5C,qGAAA,YAAY,OAAA;AACZ,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AAUzB,2CAA2C;AAC3C,qCAA0C;AAAjC,gGAAA,SAAS,OAAA;AAElB,2CAAgD;AAAvC,sGAAA,YAAY,OAAA;AAIrB,qDAAqD;AACrD,+CAAkE;AAAzD,6GAAA,iBAAiB,OAAA;AAAE,qGAAA,SAAS,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/sources/web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAS,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAgDjE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE;QACN,uEAAuE;QACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iDAAiD;QACjD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,0CAA0C;QAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,+DAA+D;QAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,EAAE,KAAK,CAAC;IAClE,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAgB;IAElC,kBAAkB;IAClB,QAAQ,CAAC,IAAI,SAAS;IAEtB;;;OAGG;gBACS,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa;IAM1D,kBAAkB;IAClB,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;;OAGG;IACF,IAAI,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAC,IAAI,CAAC;IAgBnD,kBAAkB;IAClB,SAAS,IAAI,KAAK,EAAE;CAGrB"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/sources/web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAS,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AA4DjE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE;QACN,uEAAuE;QACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iDAAiD;QACjD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,0CAA0C;QAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,+DAA+D;QAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,EAAE,KAAK,CAAC;IAClE,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAgB;IAElC,kBAAkB;IAClB,QAAQ,CAAC,IAAI,SAAS;IAEtB;;;OAGG;gBACS,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,aAAa;IAM1D,kBAAkB;IAClB,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;;OAGG;IACF,IAAI,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAC,IAAI,CAAC;IAgBnD,kBAAkB;IAClB,SAAS,IAAI,KAAK,EAAE;CAGrB"}
@@ -32,8 +32,8 @@ class BufferingFetchPage extends fetch_page_1.FetchPageTool {
32
32
  const result = yield* super.execute(args, context);
33
33
  this._urlCache.set(args.url, result);
34
34
  const r = result;
35
- const hasContent = typeof r?.content === "string"
36
- && r.content !== "[Could not extract article content]";
35
+ const hasContent = typeof r?.content === "string" &&
36
+ r.content !== "[Could not extract article content]";
37
37
  if (hasContent) {
38
38
  this._buffer.push({
39
39
  url: r.url || args.url,
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/sources/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/sources/web.ts"],"names":[],"mappings":";;;AACA,8DAA2D;AAK3D,oDAAoD;AACpD,oDAAoD;AACpD,yCAA+C;AAG/C,wCAAwC;AACxC,uCAAiE;AAAxD,6GAAA,iBAAiB,OAAA;AAE1B,gEAAgE;AAEhE;;;;;GAKG;AACH,MAAM,kBAAmB,SAAQ,0BAAa;IACpC,OAAO,CAAgB;IACvB,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE/C,YACE,MAAqB,EACrB,IAKC;QAED,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,CAAC,OAAO,CACN,IAAqC,EACrC,OAAqB;QAErB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAErC,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,MAAM,UAAU,GACd,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ;YAC9B,CAAC,CAAC,OAAO,KAAK,qCAAqC,CAAC;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,GAAG,EAAG,CAAC,CAAC,GAAc,IAAI,IAAI,CAAC,GAAG;gBAClC,KAAK,EAAG,CAAC,CAAC,KAAgB,IAAI,EAAE;gBAChC,IAAI,EAAE,CAAC,CAAC,OAAiB;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAyBD;;;;;;;;;;;;;GAaG;AACH,MAAa,SAAU,SAAQ,sBAAqC;IAC1D,OAAO,GAAkB,EAAE,CAAC;IAC5B,UAAU,CAAqB;IAC/B,UAAU,CAAgB;IAElC,kBAAkB;IACT,IAAI,GAAG,KAAK,CAAC;IAEtB;;;OAGG;IACH,YAAY,QAAwB,EAAE,IAAoB;QACxD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,0BAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK;QACP,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,CAAC,IAAI,CAAC,GAA2B;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAK,CAAC,MAAM,EAAE,CAAC;QACjC,EAAE,CAAC,KAAK,CAAC;YACP,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE;YACpB,aAAa,EAAE,IAAI;YACnB,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE;YACrB,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,IAAI,CAAC,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,SAAS;QACP,OAAO,IAAA,4BAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACF;AA/CD,8BA+CC"}
@@ -0,0 +1,49 @@
1
+ import type { Operation } from 'effection';
2
+ import { Tool } from '@lloyal-labs/lloyal-agents';
3
+ import type { JsonSchema, ToolContext, CreateAgentPoolOpts, AgentPolicy } from '@lloyal-labs/lloyal-agents';
4
+ /**
5
+ * Configuration for {@link DelegateTool}.
6
+ *
7
+ * @category Rig
8
+ */
9
+ export interface DelegateToolOpts {
10
+ /** Tool name agents see in their toolkit. @default "delegate" */
11
+ name?: string;
12
+ /** Tool description shown in the agent's tool schema. */
13
+ description?: string;
14
+ /** JSON schema for the tool's arguments. */
15
+ argsSchema?: JsonSchema;
16
+ /** Extract task strings from parsed tool arguments. */
17
+ extractTasks?: (args: Record<string, unknown>) => string[];
18
+ /** Pool options propagated to the inner agentPool call. Orchestrator is set
19
+ * by DelegateTool (one agent per extracted task, parallel). */
20
+ poolOpts: Omit<CreateAgentPoolOpts, 'orchestrate'>;
21
+ /** System prompt applied to each delegated sub-agent. */
22
+ systemPrompt: string;
23
+ /** Factory for per-invocation policy. Called fresh each time the tool fires so time budgets start from delegation, not from pool setup. */
24
+ createPolicy?: () => AgentPolicy;
25
+ }
26
+ /**
27
+ * Tool that calls agentPool() recursively.
28
+ *
29
+ * Agents can delegate sub-tasks to parallel sub-agents at arbitrary depth,
30
+ * bounded by KV pressure. Sub-agents fork from the calling agent's branch
31
+ * (Continuous Context) and inherit the full attention state.
32
+ *
33
+ * Includes entailment gating (filters drifted tasks) and echo detection
34
+ * (rejects paraphrases of the calling agent's own task).
35
+ *
36
+ * @category Rig
37
+ */
38
+ export declare class DelegateTool extends Tool<Record<string, unknown>> {
39
+ readonly name: string;
40
+ readonly description: string;
41
+ readonly parameters: JsonSchema;
42
+ private _poolOpts;
43
+ private _systemPrompt;
44
+ private _extractTasks;
45
+ private _createPolicy?;
46
+ constructor(opts: DelegateToolOpts);
47
+ execute(args: Record<string, unknown>, context?: ToolContext): Operation<unknown>;
48
+ }
49
+ //# sourceMappingURL=delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,IAAI,EAML,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,WAAW,EAEZ,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,uDAAuD;IACvD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAC3D;oEACgE;IAChE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IACnD,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,2IAA2I;IAC3I,YAAY,CAAC,EAAE,MAAM,WAAW,CAAC;CAClC;AAcD;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,aAAa,CAAC,CAAoB;gBAE9B,IAAI,EAAE,gBAAgB;IAWjC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;CAuInF"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DelegateTool = void 0;
4
+ const effection_1 = require("effection");
5
+ const lloyal_agents_1 = require("@lloyal-labs/lloyal-agents");
6
+ const DEFAULT_ARGS_SCHEMA = {
7
+ type: 'object',
8
+ properties: {
9
+ tasks: {
10
+ type: 'array',
11
+ items: { type: 'string' },
12
+ description: 'Sub-tasks to delegate to parallel agents',
13
+ },
14
+ },
15
+ required: ['tasks'],
16
+ };
17
+ /**
18
+ * Tool that calls agentPool() recursively.
19
+ *
20
+ * Agents can delegate sub-tasks to parallel sub-agents at arbitrary depth,
21
+ * bounded by KV pressure. Sub-agents fork from the calling agent's branch
22
+ * (Continuous Context) and inherit the full attention state.
23
+ *
24
+ * Includes entailment gating (filters drifted tasks) and echo detection
25
+ * (rejects paraphrases of the calling agent's own task).
26
+ *
27
+ * @category Rig
28
+ */
29
+ class DelegateTool extends lloyal_agents_1.Tool {
30
+ name;
31
+ description;
32
+ parameters;
33
+ _poolOpts;
34
+ _systemPrompt;
35
+ _extractTasks;
36
+ _createPolicy;
37
+ constructor(opts) {
38
+ super();
39
+ this.name = opts.name ?? 'delegate';
40
+ this.description = opts.description ?? 'Delegate sub-tasks to parallel agents. Each task gets its own agent.';
41
+ this.parameters = opts.argsSchema ?? DEFAULT_ARGS_SCHEMA;
42
+ this._extractTasks = opts.extractTasks ?? ((args) => args.tasks);
43
+ this._poolOpts = opts.poolOpts;
44
+ this._systemPrompt = opts.systemPrompt;
45
+ this._createPolicy = opts.createPolicy;
46
+ }
47
+ *execute(args, context) {
48
+ let tasks;
49
+ try {
50
+ tasks = this._extractTasks(args);
51
+ }
52
+ catch {
53
+ return { error: 'Failed to extract tasks from arguments.' };
54
+ }
55
+ if (!Array.isArray(tasks) || tasks.length === 0) {
56
+ return { error: 'Tasks must be a non-empty array of strings.' };
57
+ }
58
+ const tw = yield* lloyal_agents_1.Trace.expect();
59
+ // Entailment gate: filter drifted/echoed tasks before spawning
60
+ const scorer = context?.scorer;
61
+ let filtered;
62
+ if (scorer) {
63
+ const allTasks = [...tasks];
64
+ const scores = yield* (0, effection_1.call)(() => scorer.scoreEntailmentBatch(tasks));
65
+ const surviving = [];
66
+ const rejected = [];
67
+ for (let i = 0; i < tasks.length; i++) {
68
+ if (scorer.shouldProceed(scores[i])) {
69
+ surviving.push(tasks[i]);
70
+ }
71
+ else {
72
+ rejected.push({ task: tasks[i], score: scores[i] });
73
+ }
74
+ }
75
+ if (rejected.length > 0)
76
+ filtered = rejected;
77
+ let _diagAgent;
78
+ try {
79
+ _diagAgent = yield* lloyal_agents_1.CallingAgent.get();
80
+ }
81
+ catch { /* top-level */ }
82
+ tw.write({
83
+ traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
84
+ type: 'entailment:delegate',
85
+ tool: this.name,
86
+ callingAgentId: _diagAgent?.id,
87
+ callingAgentTaskLength: _diagAgent?.task?.length,
88
+ callingAgentTask: _diagAgent?.task?.slice(0, 200),
89
+ tasks: allTasks.map((text, i) => ({
90
+ text: text.slice(0, 200),
91
+ score: scores[i],
92
+ kept: scorer.shouldProceed(scores[i]),
93
+ })),
94
+ });
95
+ if (surviving.length === 0) {
96
+ return { filtered, error: 'All proposed tasks drifted from the original query.' };
97
+ }
98
+ tasks = surviving;
99
+ // Echo guard — only fires when the calling agent has a parent (depth 2+).
100
+ // At depth 1 (first delegation from a harness-spawned agent), there's no relay
101
+ // chain to detect — sub-questions are expected to be similar to the task they decompose.
102
+ const echoThreshold = this._poolOpts.echoThreshold ?? 0.8;
103
+ let callingAgent;
104
+ try {
105
+ callingAgent = yield* lloyal_agents_1.CallingAgent.get();
106
+ }
107
+ catch { /* top-level */ }
108
+ if (callingAgent?.task && callingAgent.parent) {
109
+ const echoScores = yield* (0, effection_1.call)(() => scorer.scoreSimilarityBatch(callingAgent.task, tasks));
110
+ const minEchoScore = Math.min(...echoScores);
111
+ const echoRejected = minEchoScore > echoThreshold;
112
+ tw.write({
113
+ traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
114
+ type: 'entailment:delegate:echo',
115
+ tool: this.name,
116
+ agentTask: callingAgent.task.slice(0, 200),
117
+ tasks: tasks.map((text, i) => ({ text: text.slice(0, 200), echoScore: echoScores[i] })),
118
+ threshold: echoThreshold,
119
+ rejected: echoRejected,
120
+ });
121
+ if (echoRejected) {
122
+ return {
123
+ filtered,
124
+ echoRejected: true,
125
+ error: 'Your sub-questions are too similar to your own task. You have already searched and read content on this topic. Call report() with what you found, including what you checked but could not find.',
126
+ };
127
+ }
128
+ if (this._poolOpts.checkAncestorEcho) {
129
+ const ancestorTasks = callingAgent.walkAncestors(a => a.task ? [a.task] : [])
130
+ .filter(t => t !== callingAgent.task);
131
+ for (const ancestorTask of ancestorTasks) {
132
+ const ancestorScores = yield* (0, effection_1.call)(() => scorer.scoreSimilarityBatch(ancestorTask, tasks));
133
+ if (Math.min(...ancestorScores) > echoThreshold) {
134
+ tw.write({
135
+ traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
136
+ type: 'entailment:delegate:echo',
137
+ tool: this.name,
138
+ agentTask: ancestorTask.slice(0, 200),
139
+ tasks: tasks.map((text, i) => ({ text: text.slice(0, 200), echoScore: ancestorScores[i] })),
140
+ threshold: echoThreshold,
141
+ rejected: true,
142
+ });
143
+ return {
144
+ filtered,
145
+ echoRejected: true,
146
+ error: 'Your sub-questions echo an ancestor task. Report what you found instead of re-delegating.',
147
+ };
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ const opts = this._poolOpts;
154
+ const scope = (0, lloyal_agents_1.traceScope)(tw, null, `delegate:${this.name}`, { taskCount: tasks.length, filtered: filtered?.length ?? 0 });
155
+ const pool = yield* (0, lloyal_agents_1.agentPool)({
156
+ ...opts,
157
+ ...(this._createPolicy ? { policy: this._createPolicy() } : {}),
158
+ orchestrate: (0, lloyal_agents_1.parallel)(tasks.map(t => ({ systemPrompt: this._systemPrompt, content: t }))),
159
+ parent: context?.branch,
160
+ pruneOnReport: opts.pruneOnReport ?? true,
161
+ scorer: context?.scorer,
162
+ });
163
+ const result = {
164
+ results: pool.agents.map((a) => a.result).filter(Boolean),
165
+ nestedResults: pool.agents.flatMap((a) => a.nestedResults ?? []),
166
+ agentCount: pool.agents.length,
167
+ totalTokens: pool.totalTokens,
168
+ totalToolCalls: pool.totalToolCalls,
169
+ ...(filtered ? { filtered } : {}),
170
+ };
171
+ scope.close();
172
+ return result;
173
+ }
174
+ }
175
+ exports.DelegateTool = DelegateTool;
176
+ //# sourceMappingURL=delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/tools/delegate.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export declare class FetchPageTool extends Tool<{
25
25
  query?: string;
26
26
  }> {
27
27
  readonly name = "fetch_page";
28
- readonly 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.";
28
+ readonly description = "Fetch a web page and extract its article content. Returns readable text with title and excerpt. Pass a query to get only the most relevant sections.";
29
29
  readonly parameters: JsonSchema;
30
30
  private _maxChars;
31
31
  private _reranker;
@@ -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;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"}
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,0JACqI;IACzJ,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;CAwPtB"}
@@ -54,7 +54,7 @@ function selectTopChunks(scored, chunks, topK, tokenBudget) {
54
54
  */
55
55
  class FetchPageTool extends lloyal_agents_1.Tool {
56
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.";
57
+ description = "Fetch a web page and extract its article content. Returns readable text with title and excerpt. Pass a query to get only the most relevant sections.";
58
58
  parameters = {
59
59
  type: "object",
60
60
  properties: {
@@ -86,6 +86,20 @@ class FetchPageTool extends lloyal_agents_1.Tool {
86
86
  const url = args.url?.trim();
87
87
  if (!url)
88
88
  return { error: "url must not be empty" };
89
+ // Cross-agent dedup: another worker in this pool already fetched this URL
90
+ if (context?.peerHistory?.some(h => {
91
+ if (h.name !== 'fetch_page')
92
+ return false;
93
+ try {
94
+ const prev = JSON.parse(h.args).url;
95
+ return prev === url;
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ })) {
101
+ return { error: 'Resource unavailable. Try a different URL.' };
102
+ }
89
103
  // Early reject PDF URLs
90
104
  const lowerUrl = url.toLowerCase();
91
105
  if (lowerUrl.endsWith(".pdf") ||
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../src/tools/fetch-page.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,11 @@ import { ReportTool } from './report';
5
5
  export { WebSearchTool, TavilyProvider } from './web-search';
6
6
  export { FetchPageTool } from './fetch-page';
7
7
  export { ReportTool } from './report';
8
+ export { DelegateTool } from './delegate';
9
+ export type { DelegateToolOpts } from './delegate';
8
10
  export type { SearchProvider, SearchResult, Reranker, ScoredChunk, ScoredResult } from './types';
9
- export { PlanTool } from './plan';
10
- export type { PlanResult, PlanQuestion, PlanToolOpts } from './plan';
11
+ export { PlanTool, taskToContent } from './plan';
12
+ export type { PlanResult, PlanIntent, PlanToolOpts, ResearchTask } from './plan';
11
13
  /**
12
14
  * Shared singleton {@link ReportTool} instance.
13
15
  *
@@ -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,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"}
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,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEjF;;;;;;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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reportTool = exports.PlanTool = exports.ReportTool = exports.FetchPageTool = exports.TavilyProvider = exports.WebSearchTool = void 0;
3
+ exports.reportTool = exports.taskToContent = exports.PlanTool = exports.DelegateTool = 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");
@@ -14,8 +14,11 @@ var fetch_page_1 = require("./fetch-page");
14
14
  Object.defineProperty(exports, "FetchPageTool", { enumerable: true, get: function () { return fetch_page_1.FetchPageTool; } });
15
15
  var report_2 = require("./report");
16
16
  Object.defineProperty(exports, "ReportTool", { enumerable: true, get: function () { return report_2.ReportTool; } });
17
+ var delegate_1 = require("./delegate");
18
+ Object.defineProperty(exports, "DelegateTool", { enumerable: true, get: function () { return delegate_1.DelegateTool; } });
17
19
  var plan_1 = require("./plan");
18
20
  Object.defineProperty(exports, "PlanTool", { enumerable: true, get: function () { return plan_1.PlanTool; } });
21
+ Object.defineProperty(exports, "taskToContent", { enumerable: true, get: function () { return plan_1.taskToContent; } });
19
22
  /**
20
23
  * Shared singleton {@link ReportTool} instance.
21
24
  *
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;AAoCA,kCAWC;AA/CD,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;AACnB,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AAGrB,+BAAiD;AAAxC,gGAAA,QAAQ,OAAA;AAAE,qGAAA,aAAa,OAAA;AAGhC;;;;;;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"}
@@ -8,54 +8,74 @@ import { Session } from '@lloyal-labs/sdk';
8
8
  * @category Rig
9
9
  */
10
10
  export interface PlanToolOpts {
11
- /** System and user prompt templates. User prompt supports `{{count}}` and `{{query}}` placeholders. */
11
+ /** System prompt + user template. User template is rendered via Eta with `{ query, count, context? }`. */
12
12
  prompt: {
13
13
  system: string;
14
14
  user: string;
15
15
  };
16
16
  /** Active session whose trunk is used as the parent branch for generation. */
17
17
  session: Session;
18
- /** Maximum number of sub-questions the planner may produce. */
18
+ /** Maximum number of tasks the planner may produce. */
19
19
  maxQuestions: number;
20
20
  /** Sampling temperature for plan generation. @default 0.3 */
21
21
  temperature?: number;
22
22
  }
23
23
  /**
24
- * A single sub-question produced by the planner with intent classification.
24
+ * A structured research task produced by the planner.
25
+ *
26
+ * Intent is a plan-level decision (see {@link PlanIntent}), not a per-task
27
+ * attribute — a task is always a research assignment when emitted.
25
28
  *
26
29
  * @category Rig
27
30
  */
28
- export interface PlanQuestion {
29
- /** The sub-question text. */
30
- text: string;
31
- /** Whether the question can be answered via research or needs user clarification. */
32
- intent: 'research' | 'clarify';
31
+ export interface ResearchTask {
32
+ /** What to find out — a specific, actionable research assignment. */
33
+ description: string;
33
34
  }
35
+ /**
36
+ * Convert a ResearchTask to agent content string.
37
+ *
38
+ * @category Rig
39
+ */
40
+ export declare function taskToContent(task: ResearchTask): string;
41
+ /**
42
+ * Plan-level disposition for the user's query.
43
+ *
44
+ * - **clarify** — query is genuinely ambiguous; planner emits `clarifyQuestions`,
45
+ * harness returns to REPL for user input.
46
+ * - **passthrough** — query is a follow-up answerable from session.trunk's prior
47
+ * Q&A turns; harness skips research pipeline, streams answer from trunk, commits turn.
48
+ * - **research** — query needs full decomposition; planner emits `tasks`, harness
49
+ * runs the chain → synth → verify pipeline.
50
+ *
51
+ * @category Rig
52
+ */
53
+ export type PlanIntent = 'clarify' | 'passthrough' | 'research';
34
54
  /**
35
55
  * Output returned by {@link PlanTool} execution.
36
56
  *
37
57
  * @category Rig
38
58
  */
39
59
  export interface PlanResult {
40
- /** Classified sub-questions (may be empty if the query needs no decomposition). */
41
- questions: PlanQuestion[];
60
+ /** Plan-level disposition: how should the harness route this query? */
61
+ intent: PlanIntent;
62
+ /** Research tasks (non-empty when intent === 'research'; empty otherwise). */
63
+ tasks: ResearchTask[];
64
+ /** Clarification questions for the user (non-empty when intent === 'clarify'; empty otherwise). */
65
+ clarifyQuestions: string[];
42
66
  /** Number of tokens generated during planning. */
43
67
  tokenCount: number;
44
68
  /** Wall-clock time for the planning pass in milliseconds. */
45
69
  timeMs: number;
46
70
  }
47
71
  /**
48
- * Grammar-constrained query decomposition and intent classification.
49
- *
50
- * Analyzes a research query and produces an array of {@link PlanQuestion}
51
- * sub-questions, each classified as `"research"` (answerable via search)
52
- * or `"clarify"` (needs user input). Uses a JSON grammar to guarantee
53
- * structured output. Returns an empty array if the query is focused
54
- * enough to research directly.
72
+ * Grammar-constrained query planner.
55
73
  *
56
- * The harness interprets the result: all-research triggers parallel
57
- * dispatch, all-clarify returns to the user, mixed drops clarify
58
- * questions and dispatches only research ones.
74
+ * Analyzes the user's query (with prior conversation in KV via warm session fork)
75
+ * and produces a {@link PlanResult} that commits to one disposition: clarify /
76
+ * passthrough / research. Uses a JSON grammar to guarantee structured output;
77
+ * the planner must choose one of the three intents and populate the matching
78
+ * fields (tasks for research, clarifyQuestions for clarify, neither for passthrough).
59
79
  *
60
80
  * @category Rig
61
81
  */
@@ -64,7 +84,7 @@ export declare class PlanTool extends Tool<{
64
84
  context?: string;
65
85
  }> {
66
86
  readonly name = "plan";
67
- readonly description = "Analyze a research query. Return sub-questions classified as \"research\" (answerable via web search) or \"clarify\" (needs user input). Return empty array if the query is focused enough to research directly.";
87
+ readonly description = "Analyze a user query and decide how to handle it: ask for clarification, pass through for direct answer from conversation history, or decompose into research tasks.";
68
88
  readonly parameters: JsonSchema;
69
89
  private _prompt;
70
90
  private _session;
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAiB,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,QAAS,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IACrE,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,sNAAkN;IACtO,QAAQ,CAAC,UAAU,EAAE,UAAU,CAO7B;IAEF,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,EAAE,YAAY;IAQ7B,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,OAAO,CAAC;CA4DxE"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAyB,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,0GAA0G;IAC1G,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,MAAM,EAAE,UAAU,CAAC;IACnB,8EAA8E;IAC9E,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,mGAAmG;IACnG,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,QAAS,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IACrE,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,0KAA0K;IAC9L,QAAQ,CAAC,UAAU,EAAE,UAAU,CAO7B;IAEF,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,EAAE,YAAY;IAQ7B,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,OAAO,CAAC;CA4ExE"}
@@ -1,26 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PlanTool = void 0;
4
- const effection_1 = require("effection");
4
+ exports.taskToContent = taskToContent;
5
5
  const lloyal_agents_1 = require("@lloyal-labs/lloyal-agents");
6
6
  /**
7
- * Grammar-constrained query decomposition and intent classification.
7
+ * Convert a ResearchTask to agent content string.
8
8
  *
9
- * Analyzes a research query and produces an array of {@link PlanQuestion}
10
- * sub-questions, each classified as `"research"` (answerable via search)
11
- * or `"clarify"` (needs user input). Uses a JSON grammar to guarantee
12
- * structured output. Returns an empty array if the query is focused
13
- * enough to research directly.
9
+ * @category Rig
10
+ */
11
+ function taskToContent(task) {
12
+ return task.description;
13
+ }
14
+ /**
15
+ * Grammar-constrained query planner.
14
16
  *
15
- * The harness interprets the result: all-research triggers parallel
16
- * dispatch, all-clarify returns to the user, mixed drops clarify
17
- * questions and dispatches only research ones.
17
+ * Analyzes the user's query (with prior conversation in KV via warm session fork)
18
+ * and produces a {@link PlanResult} that commits to one disposition: clarify /
19
+ * passthrough / research. Uses a JSON grammar to guarantee structured output;
20
+ * the planner must choose one of the three intents and populate the matching
21
+ * fields (tasks for research, clarifyQuestions for clarify, neither for passthrough).
18
22
  *
19
23
  * @category Rig
20
24
  */
21
25
  class PlanTool extends lloyal_agents_1.Tool {
22
26
  name = 'plan';
23
- description = 'Analyze a research query. Return sub-questions classified as "research" (answerable via web search) or "clarify" (needs user input). Return empty array if the query is focused enough to research directly.';
27
+ description = 'Analyze a user query and decide how to handle it: ask for clarification, pass through for direct answer from conversation history, or decompose into research tasks.';
24
28
  parameters = {
25
29
  type: 'object',
26
30
  properties: {
@@ -41,58 +45,66 @@ class PlanTool extends lloyal_agents_1.Tool {
41
45
  this._maxQuestions = opts.maxQuestions;
42
46
  }
43
47
  *execute(args) {
44
- const ctx = yield* lloyal_agents_1.Ctx.expect();
45
48
  const t = performance.now();
46
49
  const schema = {
47
50
  type: 'object',
48
51
  properties: {
49
- questions: {
52
+ intent: { type: 'string', enum: ['clarify', 'passthrough', 'research'] },
53
+ tasks: {
50
54
  type: 'array',
51
55
  items: {
52
56
  type: 'object',
53
57
  properties: {
54
- text: { type: 'string' },
55
- intent: { type: 'string', enum: ['research', 'clarify'] },
58
+ description: { type: 'string' },
56
59
  },
57
- required: ['text', 'intent'],
60
+ required: ['description'],
58
61
  },
59
62
  maxItems: this._maxQuestions,
60
63
  },
64
+ clarifyQuestions: {
65
+ type: 'array',
66
+ items: { type: 'string' },
67
+ },
61
68
  },
62
- required: ['questions'],
69
+ required: ['intent'],
63
70
  };
64
- const grammar = yield* (0, effection_1.call)(() => ctx.jsonSchemaToGrammar(JSON.stringify(schema)));
65
- let userContent = this._prompt.user
66
- .replace('{{count}}', String(this._maxQuestions))
67
- .replace('{{query}}', args.query);
68
- if (args.context) {
69
- userContent += `\n\nUser clarification:\n${args.context}`;
70
- }
71
- const messages = [
72
- { role: 'system', content: this._prompt.system },
73
- { role: 'user', content: userContent },
74
- ];
75
- const { prompt } = yield* (0, effection_1.call)(() => ctx.formatChat(JSON.stringify(messages), { enableThinking: false }));
76
- const parent = this._session.trunk ?? undefined;
77
- const result = yield* (0, lloyal_agents_1.generate)({
78
- prompt,
79
- grammar,
71
+ const userContent = (0, lloyal_agents_1.renderTemplate)(this._prompt.user, {
72
+ query: args.query,
73
+ count: this._maxQuestions,
74
+ context: args.context || null,
75
+ });
76
+ const planAgent = yield* (0, lloyal_agents_1.agent)({
77
+ systemPrompt: this._prompt.system,
78
+ task: userContent,
79
+ schema,
80
80
  params: { temperature: this._temperature },
81
- parent,
81
+ session: this._session,
82
82
  });
83
- const { output, tokenCount } = result;
84
83
  const timeMs = performance.now() - t;
84
+ const tokenCount = planAgent.tokenCount;
85
85
  try {
86
- const parsed = JSON.parse(output);
87
- const raw = (parsed.questions || []);
88
- const questions = raw
86
+ const parsed = JSON.parse(planAgent.rawOutput);
87
+ const intent = parsed.intent === 'clarify' || parsed.intent === 'passthrough' || parsed.intent === 'research'
88
+ ? parsed.intent
89
+ : 'research';
90
+ const tasks = (parsed.tasks ?? [])
89
91
  .slice(0, this._maxQuestions)
90
- .filter(q => typeof q.text === 'string' && (q.intent === 'research' || q.intent === 'clarify'))
91
- .map(q => ({ text: q.text, intent: q.intent }));
92
- return { questions, tokenCount, timeMs };
92
+ .filter(t => typeof t.description === 'string')
93
+ .map(t => ({ description: t.description }));
94
+ const clarifyQuestions = (parsed.clarifyQuestions ?? []).filter(q => typeof q === 'string');
95
+ return { intent, tasks, clarifyQuestions, tokenCount, timeMs };
93
96
  }
94
97
  catch {
95
- return { questions: [], tokenCount, timeMs };
98
+ // Grammar should prevent this; fall through to passthrough on malformed output
99
+ // so the harness routes to a direct trunk-stream answer rather than running a
100
+ // research pipeline with no real plan.
101
+ return {
102
+ intent: 'passthrough',
103
+ tasks: [],
104
+ clarifyQuestions: [],
105
+ tokenCount,
106
+ timeMs,
107
+ };
96
108
  }
97
109
  }
98
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/tools/plan.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export declare class WebSearchTool extends Tool<{
34
34
  query: string;
35
35
  }> {
36
36
  readonly name = "web_search";
37
- readonly description = "Search the web. Returns results with titles, snippets, and URLs. Use fetch_page to read full content of promising results.";
37
+ readonly description = "Search the web. Returns results with titles, snippets, and URLs.";
38
38
  readonly parameters: JsonSchema;
39
39
  private _provider;
40
40
  private _topN;
@@ -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;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"}
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;CAyBzE;AAID;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;IACxD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,sEACiD;IACrE,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;CA6F7E"}
@@ -42,6 +42,7 @@ class TavilyProvider {
42
42
  snippet: r.content.length > max
43
43
  ? r.content.slice(0, max) + " [\u2026]"
44
44
  : r.content,
45
+ score: r.score,
45
46
  }));
46
47
  }
47
48
  }
@@ -58,7 +59,7 @@ exports.TavilyProvider = TavilyProvider;
58
59
  */
59
60
  class WebSearchTool extends lloyal_agents_1.Tool {
60
61
  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
+ description = "Search the web. Returns results with titles, snippets, and URLs.";
62
63
  parameters = {
63
64
  type: "object",
64
65
  properties: { query: { type: "string", description: "Search query" } },
@@ -75,6 +76,21 @@ class WebSearchTool extends lloyal_agents_1.Tool {
75
76
  const query = args.query?.trim();
76
77
  if (!query)
77
78
  return { error: "query must not be empty" };
79
+ // Cross-agent dedup: another worker in this pool already issued this query
80
+ const queryLower = query.toLowerCase();
81
+ if (context?.peerHistory?.some(h => {
82
+ if (h.name !== 'web_search')
83
+ return false;
84
+ try {
85
+ const prev = JSON.parse(h.args).query?.toLowerCase();
86
+ return prev === queryLower;
87
+ }
88
+ catch {
89
+ return false;
90
+ }
91
+ })) {
92
+ return { error: 'Resource unavailable. Try a different query.' };
93
+ }
78
94
  const provider = this._provider;
79
95
  const topN = this._topN;
80
96
  let results;
@@ -84,11 +100,23 @@ class WebSearchTool extends lloyal_agents_1.Tool {
84
100
  catch (err) {
85
101
  return { error: `Search failed: ${err.message}` };
86
102
  }
87
- // Rerank by entailment against original query when scorer is available
103
+ // Explore mode: preserve provider ordering the search engine's
104
+ // ranking reflects the agent's local query intent. Reranking in
105
+ // explore mode kills topically divergent results with high
106
+ // information gain (e.g. an HN discussion thread scored lower
107
+ // on entailment but linking to the entire landscape).
108
+ //
109
+ // Exploit mode: rerank by min(provider score, entailment score).
110
+ // Provider score is the search engine's local-query relevance.
111
+ // Entailment score is original-query relevance. Both must be
112
+ // high — same contract as fetch_page and corpus search.
88
113
  const scorer = context?.scorer;
89
- if (scorer && results.length > 1) {
114
+ if (!context?.explore && scorer && results.length > 1) {
90
115
  const snippets = results.map((r) => `${r.title}. ${r.snippet}`);
91
- const scores = yield* (0, effection_1.call)(() => scorer.scoreEntailmentBatch(snippets));
116
+ const entailment = yield* (0, effection_1.call)(() => scorer.scoreEntailmentBatch(snippets));
117
+ // Combine: min(provider score, entailment) when provider score
118
+ // is available; entailment-only as fallback for providers without scores
119
+ const combined = results.map((r, i) => r.score != null ? Math.min(r.score, entailment[i]) : entailment[i]);
92
120
  let tw;
93
121
  try {
94
122
  tw = yield* lloyal_agents_1.Trace.expect();
@@ -104,15 +132,18 @@ class WebSearchTool extends lloyal_agents_1.Tool {
104
132
  type: "entailment:search",
105
133
  tool: "web_search",
106
134
  query,
135
+ mode: "exploit",
107
136
  before: results.map((r, i) => ({
108
137
  title: r.title,
109
138
  url: r.url,
110
- score: scores[i],
139
+ providerScore: r.score ?? null,
140
+ entailment: entailment[i],
141
+ combined: combined[i],
111
142
  })),
112
143
  });
113
144
  }
114
145
  results = results
115
- .map((r, i) => ({ result: r, score: scores[i] }))
146
+ .map((r, i) => ({ result: r, score: combined[i] }))
116
147
  .sort((a, b) => b.score - a.score)
117
148
  .map((entry) => entry.result);
118
149
  if (tw) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
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.8",
3
+ "version": "2.0.0",
4
4
  "description": "Retrieval-Interleaved Generation for lloyal-agents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,12 +19,12 @@
19
19
  },
20
20
  "repository": {
21
21
  "type": "git",
22
- "url": "git+https://github.com/lloyal-ai/sdk.git",
22
+ "url": "git+https://github.com/lloyal-ai/hdk.git",
23
23
  "directory": "packages/rig"
24
24
  },
25
- "homepage": "https://github.com/lloyal-ai/sdk/tree/main/packages/rig#readme",
25
+ "homepage": "https://github.com/lloyal-ai/hdk/tree/main/packages/rig#readme",
26
26
  "bugs": {
27
- "url": "https://github.com/lloyal-ai/sdk/issues"
27
+ "url": "https://github.com/lloyal-ai/hdk/issues"
28
28
  },
29
29
  "keywords": [
30
30
  "llm",
@@ -40,14 +40,14 @@
40
40
  "build": "tsc -b"
41
41
  },
42
42
  "dependencies": {
43
- "@lloyal-labs/lloyal-agents": "^1.5.8",
44
- "@lloyal-labs/sdk": "^1.5.8",
43
+ "@lloyal-labs/lloyal-agents": "^2.0.0",
44
+ "@lloyal-labs/sdk": "^2.0.0",
45
45
  "@mozilla/readability": "^0.6.0",
46
46
  "effection": "^4.0.2",
47
47
  "linkedom": "^0.18.12"
48
48
  },
49
49
  "peerDependencies": {
50
- "@lloyal-labs/lloyal.node": "^2.0.2"
50
+ "@lloyal-labs/lloyal.node": "^2.1.0"
51
51
  },
52
52
  "files": [
53
53
  "dist/"