@lloyal-labs/lloyal-agents 1.5.6 → 1.7.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/Agent.d.ts +34 -1
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +65 -1
- package/dist/Agent.js.map +1 -1
- package/dist/AgentPolicy.d.ts +51 -8
- package/dist/AgentPolicy.d.ts.map +1 -1
- package/dist/AgentPolicy.js +105 -63
- package/dist/AgentPolicy.js.map +1 -1
- package/dist/Tool.d.ts +5 -7
- package/dist/Tool.d.ts.map +1 -1
- package/dist/Tool.js +5 -7
- package/dist/Tool.js.map +1 -1
- package/dist/agent-pool.d.ts +9 -3
- package/dist/agent-pool.d.ts.map +1 -1
- package/dist/agent-pool.js +446 -407
- package/dist/agent-pool.js.map +1 -1
- package/dist/combinators.d.ts +29 -0
- package/dist/combinators.d.ts.map +1 -0
- package/dist/combinators.js +37 -0
- package/dist/combinators.js.map +1 -0
- package/dist/create-agent-pool.d.ts +78 -0
- package/dist/create-agent-pool.d.ts.map +1 -0
- package/dist/create-agent-pool.js +60 -0
- package/dist/create-agent-pool.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js.map +1 -1
- package/dist/trace-types.d.ts +4 -2
- package/dist/trace-types.d.ts.map +1 -1
- package/dist/trace-writer.d.ts +4 -1
- package/dist/trace-writer.d.ts.map +1 -1
- package/dist/trace-writer.js +6 -2
- package/dist/trace-writer.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/use-agent.d.ts +92 -0
- package/dist/use-agent.d.ts.map +1 -0
- package/dist/use-agent.js +131 -0
- package/dist/use-agent.js.map +1 -0
- package/package.json +2 -2
- package/dist/generate.d.ts +0 -77
- package/dist/generate.d.ts.map +0 -1
- package/dist/generate.js +0 -166
- package/dist/generate.js.map +0 -1
- package/dist/run-agents.d.ts +0 -39
- package/dist/run-agents.d.ts.map +0 -1
- package/dist/run-agents.js +0 -46
- package/dist/run-agents.js.map +0 -1
- package/dist/spawn-agents.d.ts +0 -104
- package/dist/spawn-agents.d.ts.map +0 -1
- package/dist/spawn-agents.js +0 -255
- package/dist/spawn-agents.js.map +0 -1
package/dist/Agent.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Branch } from '@lloyal-labs/sdk';
|
|
1
|
+
import type { Branch, SessionContext, ParseChatOutputResult } from '@lloyal-labs/sdk';
|
|
2
2
|
import type { GrammarTrigger } from '@lloyal-labs/sdk';
|
|
3
3
|
import type { TraceToken } from './types';
|
|
4
4
|
/**
|
|
@@ -91,6 +91,9 @@ export declare class Agent {
|
|
|
91
91
|
private _toolHistory;
|
|
92
92
|
private _nestedResults;
|
|
93
93
|
private _traceBuffer;
|
|
94
|
+
private _currentTool;
|
|
95
|
+
private _toolObserved;
|
|
96
|
+
private _parsed;
|
|
94
97
|
/** The agent that called the tool which spawned this agent's pool (null for top-level) */
|
|
95
98
|
readonly parent: Agent | null;
|
|
96
99
|
constructor(opts: {
|
|
@@ -117,10 +120,25 @@ export declare class Agent {
|
|
|
117
120
|
get toolCallCount(): number;
|
|
118
121
|
get turns(): number;
|
|
119
122
|
get traceBuffer(): TraceToken[];
|
|
123
|
+
get currentTool(): string | null;
|
|
124
|
+
get parsed(): ParseChatOutputResult | null;
|
|
120
125
|
/** Accumulate generated token text into the current turn */
|
|
121
126
|
accumulateToken(text: string): void;
|
|
122
127
|
/** Accumulate token with trace data */
|
|
123
128
|
accumulateTokenWithTrace(text: string, entropy: number, surprisal: number): void;
|
|
129
|
+
/**
|
|
130
|
+
* Partial-parse the in-progress rawOutput to detect which tool the agent
|
|
131
|
+
* is generating. Uses parseChatOutput with isPartial:true — format-agnostic
|
|
132
|
+
* across all model families llama.cpp supports. Latches on first detection:
|
|
133
|
+
* subsequent calls short-circuit without parsing.
|
|
134
|
+
*/
|
|
135
|
+
observe(ctx: SessionContext): void;
|
|
136
|
+
/**
|
|
137
|
+
* Strict parse at isStop — replaces the standalone parseChatOutput call in
|
|
138
|
+
* the pool's PRODUCE phase. Returns the full ParseChatOutputResult for
|
|
139
|
+
* downstream consumers (trace writer, policy.onProduced).
|
|
140
|
+
*/
|
|
141
|
+
finalize(ctx: SessionContext): ParseChatOutputResult;
|
|
124
142
|
/** Reset per-turn output after tool result is settled */
|
|
125
143
|
resetTurn(): void;
|
|
126
144
|
/** Increment turn counter */
|
|
@@ -158,6 +176,21 @@ export declare class Agent {
|
|
|
158
176
|
get uniqueCells(): number;
|
|
159
177
|
/** Whether the grammar allows free text output (not tool-call-only) */
|
|
160
178
|
get grammarAllowsFreeText(): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Async iterator — delegates to Branch, accumulates state
|
|
181
|
+
*
|
|
182
|
+
* Each yielded token is already committed to KV (Branch's commit-before-yield
|
|
183
|
+
* semantics). Agent accumulates rawOutput and tokenCount as tokens flow.
|
|
184
|
+
*
|
|
185
|
+
* Available for Layer 1 users who create Agents directly and want to
|
|
186
|
+
* stream with state accumulation. The pool's tick loop does NOT use this
|
|
187
|
+
* iterator — it calls `produceSync()`/`store.commit()` directly for
|
|
188
|
+
* batched multi-agent generation.
|
|
189
|
+
*/
|
|
190
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<{
|
|
191
|
+
token: number;
|
|
192
|
+
text: string;
|
|
193
|
+
}>;
|
|
161
194
|
/** Mark agent as disposed — called by pool when branch is pruned */
|
|
162
195
|
dispose(): void;
|
|
163
196
|
}
|
package/dist/Agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"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"}
|
package/dist/Agent.js
CHANGED
|
@@ -42,6 +42,9 @@ class Agent {
|
|
|
42
42
|
_toolHistory = [];
|
|
43
43
|
_nestedResults = [];
|
|
44
44
|
_traceBuffer = [];
|
|
45
|
+
_currentTool = null;
|
|
46
|
+
_toolObserved = false;
|
|
47
|
+
_parsed = null;
|
|
45
48
|
/** The agent that called the tool which spawned this agent's pool (null for top-level) */
|
|
46
49
|
parent = null;
|
|
47
50
|
// ── Constructor ─────────────────────────────────────────
|
|
@@ -80,6 +83,8 @@ class Agent {
|
|
|
80
83
|
get toolCallCount() { return this._toolCallCount; }
|
|
81
84
|
get turns() { return this._turns; }
|
|
82
85
|
get traceBuffer() { return this._traceBuffer; }
|
|
86
|
+
get currentTool() { return this._currentTool; }
|
|
87
|
+
get parsed() { return this._parsed; }
|
|
83
88
|
/** Accumulate generated token text into the current turn */
|
|
84
89
|
accumulateToken(text) {
|
|
85
90
|
this._rawOutput += text;
|
|
@@ -91,8 +96,49 @@ class Agent {
|
|
|
91
96
|
this._tokenCount++;
|
|
92
97
|
this._traceBuffer.push({ text, entropy, surprisal });
|
|
93
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Partial-parse the in-progress rawOutput to detect which tool the agent
|
|
101
|
+
* is generating. Uses parseChatOutput with isPartial:true — format-agnostic
|
|
102
|
+
* across all model families llama.cpp supports. Latches on first detection:
|
|
103
|
+
* subsequent calls short-circuit without parsing.
|
|
104
|
+
*/
|
|
105
|
+
observe(ctx) {
|
|
106
|
+
if (this._toolObserved)
|
|
107
|
+
return;
|
|
108
|
+
this._parsed = ctx.parseChatOutput(this._rawOutput, this.fmt.format, {
|
|
109
|
+
reasoningFormat: this.fmt.reasoningFormat,
|
|
110
|
+
generationPrompt: this.fmt.generationPrompt,
|
|
111
|
+
parser: this.fmt.parser,
|
|
112
|
+
isPartial: true,
|
|
113
|
+
});
|
|
114
|
+
if (this._parsed.toolCalls.length > 0) {
|
|
115
|
+
this._currentTool = this._parsed.toolCalls[0].name;
|
|
116
|
+
this._toolObserved = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Strict parse at isStop — replaces the standalone parseChatOutput call in
|
|
121
|
+
* the pool's PRODUCE phase. Returns the full ParseChatOutputResult for
|
|
122
|
+
* downstream consumers (trace writer, policy.onProduced).
|
|
123
|
+
*/
|
|
124
|
+
finalize(ctx) {
|
|
125
|
+
this._parsed = ctx.parseChatOutput(this._rawOutput, this.fmt.format, {
|
|
126
|
+
reasoningFormat: this.fmt.reasoningFormat,
|
|
127
|
+
generationPrompt: this.fmt.generationPrompt,
|
|
128
|
+
parser: this.fmt.parser,
|
|
129
|
+
});
|
|
130
|
+
if (!this._currentTool && this._parsed.toolCalls.length > 0) {
|
|
131
|
+
this._currentTool = this._parsed.toolCalls[0].name;
|
|
132
|
+
}
|
|
133
|
+
return this._parsed;
|
|
134
|
+
}
|
|
94
135
|
/** Reset per-turn output after tool result is settled */
|
|
95
|
-
resetTurn() {
|
|
136
|
+
resetTurn() {
|
|
137
|
+
this._rawOutput = '';
|
|
138
|
+
this._currentTool = null;
|
|
139
|
+
this._toolObserved = false;
|
|
140
|
+
this._parsed = null;
|
|
141
|
+
}
|
|
96
142
|
/** Increment turn counter */
|
|
97
143
|
incrementTurns() { this._turns++; }
|
|
98
144
|
/** Increment tool call counter */
|
|
@@ -149,6 +195,24 @@ class Agent {
|
|
|
149
195
|
get grammarAllowsFreeText() {
|
|
150
196
|
return !this.fmt.grammarLazy || !this.fmt.grammar;
|
|
151
197
|
}
|
|
198
|
+
// ── Async iteration ─────────────────────────────────────
|
|
199
|
+
/**
|
|
200
|
+
* Async iterator — delegates to Branch, accumulates state
|
|
201
|
+
*
|
|
202
|
+
* Each yielded token is already committed to KV (Branch's commit-before-yield
|
|
203
|
+
* semantics). Agent accumulates rawOutput and tokenCount as tokens flow.
|
|
204
|
+
*
|
|
205
|
+
* Available for Layer 1 users who create Agents directly and want to
|
|
206
|
+
* stream with state accumulation. The pool's tick loop does NOT use this
|
|
207
|
+
* iterator — it calls `produceSync()`/`store.commit()` directly for
|
|
208
|
+
* batched multi-agent generation.
|
|
209
|
+
*/
|
|
210
|
+
async *[Symbol.asyncIterator]() {
|
|
211
|
+
for await (const produced of this.branch) {
|
|
212
|
+
this.accumulateToken(produced.text);
|
|
213
|
+
yield produced;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
152
216
|
// ── Lifecycle ───────────────────────────────────────────
|
|
153
217
|
/** Mark agent as disposed — called by pool when branch is pruned */
|
|
154
218
|
dispose() {
|
package/dist/Agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":";;;AAuEA,+DAA+D;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,KAAK;IAChB,2DAA2D;IAE3D,+CAA+C;IACtC,EAAE,CAAS;IAEpB,uEAAuE;IAC9D,QAAQ,CAAS;IAE1B,sCAAsC;IAC7B,MAAM,CAAS;IAExB,4CAA4C;IACnC,GAAG,CAAe;IAE3B,2EAA2E;IAClE,IAAI,CAAS;IAEtB,2DAA2D;IAEnD,OAAO,GAAgB,MAAM,CAAC;IAC9B,UAAU,GAAG,EAAE,CAAC;IAChB,WAAW,GAAG,CAAC,CAAC;IAChB,cAAc,GAAG,CAAC,CAAC;IACnB,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAkB,IAAI,CAAC;IAC9B,aAAa,GAAwB,IAAI,CAAC;IAC1C,YAAY,GAAuB,EAAE,CAAC;IACtC,cAAc,GAAa,EAAE,CAAC;IAC9B,YAAY,GAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"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"}
|
package/dist/AgentPolicy.d.ts
CHANGED
|
@@ -16,7 +16,6 @@ export interface ToolGuard {
|
|
|
16
16
|
/** Error message sent back to the agent as a tool result */
|
|
17
17
|
message: string;
|
|
18
18
|
}
|
|
19
|
-
/** Default guards for deduplication and recursion discipline */
|
|
20
19
|
export declare const defaultToolGuards: ToolGuard[];
|
|
21
20
|
/**
|
|
22
21
|
* Why the agent entered idle status.
|
|
@@ -93,8 +92,10 @@ export interface AgentPolicy {
|
|
|
93
92
|
/**
|
|
94
93
|
* SETTLE phase: tool result won't fit in KV — what should happen?
|
|
95
94
|
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
95
|
+
* @deprecated SETTLE no longer kills agents. Oversized tool results are
|
|
96
|
+
* deferred until headroom recovers via the trailing stop in PRODUCE.
|
|
97
|
+
* This method is retained for backward compatibility with custom policies
|
|
98
|
+
* but is no longer called by the pool.
|
|
98
99
|
*/
|
|
99
100
|
onSettleReject(agent: Agent, resultTokens: number, pressure: ContextPressure, config: PolicyConfig): SettleAction;
|
|
100
101
|
/**
|
|
@@ -126,6 +127,12 @@ export interface AgentPolicy {
|
|
|
126
127
|
* ContextPressure.DEFAULT_SOFT_LIMIT / DEFAULT_HARD_LIMIT.
|
|
127
128
|
*/
|
|
128
129
|
readonly pressureThresholds?: PressureThresholds;
|
|
130
|
+
/**
|
|
131
|
+
* Reset per-tick state (e.g. trailing stop flags).
|
|
132
|
+
* Called by the pool at the start of each tick iteration.
|
|
133
|
+
* Optional — only needed if the policy tracks per-tick state.
|
|
134
|
+
*/
|
|
135
|
+
resetTick?(): void;
|
|
129
136
|
/**
|
|
130
137
|
* Post-loop: should we extract findings from this killed agent?
|
|
131
138
|
*
|
|
@@ -169,9 +176,23 @@ export interface DefaultAgentPolicyOpts {
|
|
|
169
176
|
guards?: ToolGuard[];
|
|
170
177
|
/** Append additional guards to the defaults. */
|
|
171
178
|
extraGuards?: ToolGuard[];
|
|
172
|
-
/**
|
|
173
|
-
*
|
|
174
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Explore/exploit thresholds — both axes checked independently.
|
|
181
|
+
* Either falling below its threshold flips the policy into exploit mode
|
|
182
|
+
* (rerank tool results against the original query via the entailment
|
|
183
|
+
* scorer). Explore mode preserves the agent's local-query ordering.
|
|
184
|
+
*/
|
|
185
|
+
shouldExplore?: {
|
|
186
|
+
/** Minimum fraction of KV capacity (0–1) that must remain free for
|
|
187
|
+
* explore mode. Checks `pressure.percentAvailable / 100`. Below this
|
|
188
|
+
* fraction, exploit mode kicks in. @default 0.4 */
|
|
189
|
+
context?: number;
|
|
190
|
+
/** Maximum fraction of the time soft limit (0–1) that can be consumed
|
|
191
|
+
* before exploit mode kicks in. When `elapsed / timeSoftLimit >= time`,
|
|
192
|
+
* `shouldExplore` returns false regardless of KV headroom. Only
|
|
193
|
+
* applies when `budget.time.softLimit` is set. @default 0.5 */
|
|
194
|
+
time?: number;
|
|
195
|
+
};
|
|
175
196
|
/** Scratchpad recovery for agents killed without reporting.
|
|
176
197
|
* Policy decides per-agent via {@link AgentPolicy.onRecovery}. */
|
|
177
198
|
recovery?: {
|
|
@@ -199,14 +220,20 @@ export interface DefaultAgentPolicyOpts {
|
|
|
199
220
|
hardLimit?: number;
|
|
200
221
|
};
|
|
201
222
|
};
|
|
223
|
+
/** Terminal tool name. When set, agents mid-generation of this tool are
|
|
224
|
+
* protected from shouldExit — the hard limit is deferred until the tool
|
|
225
|
+
* call completes naturally or KV pressure forces a kill. */
|
|
226
|
+
terminalTool?: string;
|
|
202
227
|
}
|
|
203
228
|
export declare class DefaultAgentPolicy implements AgentPolicy {
|
|
204
229
|
private _minToolCalls;
|
|
205
230
|
private _guards;
|
|
206
|
-
private
|
|
231
|
+
private _exploreContext;
|
|
232
|
+
private _exploreTime;
|
|
207
233
|
private _forceExploit;
|
|
208
234
|
private _recovery;
|
|
209
235
|
private _budget;
|
|
236
|
+
private _terminalTool;
|
|
210
237
|
private _startTime;
|
|
211
238
|
constructor(opts?: DefaultAgentPolicyOpts);
|
|
212
239
|
private _elapsed;
|
|
@@ -217,14 +244,30 @@ export declare class DefaultAgentPolicy implements AgentPolicy {
|
|
|
217
244
|
content: string | null;
|
|
218
245
|
toolCalls: ParsedToolCall[];
|
|
219
246
|
}, pressure: ContextPressure, config: PolicyConfig): ProduceAction;
|
|
247
|
+
private _handleNoToolCall;
|
|
248
|
+
private _isTerminalTool;
|
|
249
|
+
private _handleTerminalTool;
|
|
250
|
+
private _isUnderPressure;
|
|
251
|
+
private _isOverBudget;
|
|
252
|
+
private _handleOverBudget;
|
|
253
|
+
private _checkGuards;
|
|
220
254
|
onSettleReject(agent: Agent, _resultTokens: number, _pressure: ContextPressure, config: PolicyConfig): SettleAction;
|
|
221
255
|
/**
|
|
222
256
|
* UI-driven override. Harness calls this when the user wants agents
|
|
223
257
|
* to wrap up. Overrides pressure-based logic immediately.
|
|
224
258
|
*/
|
|
225
259
|
setExploitMode(force: boolean): void;
|
|
260
|
+
shouldExit(agent: Agent, pressure: ContextPressure): boolean;
|
|
226
261
|
shouldExplore(_agent: Agent, pressure: ContextPressure): boolean;
|
|
227
|
-
|
|
262
|
+
/**
|
|
263
|
+
* Trailing stop: at most one agent nudged or killed per tick.
|
|
264
|
+
* The sacrificed agent's findings are extracted and its KV freed,
|
|
265
|
+
* giving the remaining agents headroom to continue researching.
|
|
266
|
+
* Both flags reset per tick via resetTick(), called by the pool.
|
|
267
|
+
*/
|
|
268
|
+
private _killedThisTick;
|
|
269
|
+
private _nudgedThisTick;
|
|
270
|
+
resetTick(): void;
|
|
228
271
|
onRecovery(agent: Agent): RecoveryAction;
|
|
229
272
|
}
|
|
230
273
|
//# sourceMappingURL=AgentPolicy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPolicy.d.ts","sourceRoot":"","sources":["../src/AgentPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wGAAwG;IACxG,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACrG,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"AgentPolicy.d.ts","sourceRoot":"","sources":["../src/AgentPolicy.ts"],"names":[],"mappings":"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"}
|
package/dist/AgentPolicy.js
CHANGED
|
@@ -3,12 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DefaultAgentPolicy = exports.defaultToolGuards = void 0;
|
|
4
4
|
const agent_pool_1 = require("./agent-pool");
|
|
5
5
|
/** Default guards for deduplication and recursion discipline */
|
|
6
|
+
function parseHistoryArgs(argsStr) {
|
|
7
|
+
try {
|
|
8
|
+
return JSON.parse(argsStr);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
6
14
|
exports.defaultToolGuards = [
|
|
7
15
|
{
|
|
8
16
|
tools: ['fetch_page'],
|
|
9
17
|
reject: (args, history) => {
|
|
10
18
|
const url = args.url;
|
|
11
|
-
return !!url && history.some(h => h.name === 'fetch_page' && h.args === url);
|
|
19
|
+
return !!url && history.some(h => h.name === 'fetch_page' && parseHistoryArgs(h.args).url === url);
|
|
12
20
|
},
|
|
13
21
|
message: 'This URL was already fetched. Try a different source.',
|
|
14
22
|
},
|
|
@@ -16,41 +24,35 @@ exports.defaultToolGuards = [
|
|
|
16
24
|
tools: ['web_search'],
|
|
17
25
|
reject: (args, history) => {
|
|
18
26
|
const query = args.query?.toLowerCase();
|
|
19
|
-
return !!query && history.some(h =>
|
|
27
|
+
return !!query && history.some(h => {
|
|
28
|
+
const prev = parseHistoryArgs(h.args).query?.toLowerCase();
|
|
29
|
+
return h.name === 'web_search' && prev === query;
|
|
30
|
+
});
|
|
20
31
|
},
|
|
21
32
|
message: 'This query was already searched. Refine your search or report findings.',
|
|
22
33
|
},
|
|
23
|
-
{
|
|
24
|
-
tools: ['web_research', 'research'],
|
|
25
|
-
reject: (_args, _lineage, agent) => {
|
|
26
|
-
// Agent-local history: each agent must do its own research before delegating,
|
|
27
|
-
// regardless of what ancestors did. Lineage history would let children bypass
|
|
28
|
-
// this by inheriting parent's search+fetch — producing blind relay chains.
|
|
29
|
-
const local = agent.toolHistory;
|
|
30
|
-
const hasSearch = local.some(h => h.name === 'web_search' || h.name === 'search');
|
|
31
|
-
const hasFetch = local.some(h => h.name === 'fetch_page' || h.name === 'read_file');
|
|
32
|
-
return !hasSearch || !hasFetch;
|
|
33
|
-
},
|
|
34
|
-
message: 'Read your search results with fetch_page before spawning sub-agents.',
|
|
35
|
-
},
|
|
36
34
|
];
|
|
37
35
|
class DefaultAgentPolicy {
|
|
38
36
|
_minToolCalls;
|
|
39
37
|
_guards;
|
|
40
|
-
|
|
38
|
+
_exploreContext;
|
|
39
|
+
_exploreTime;
|
|
41
40
|
_forceExploit = false;
|
|
42
41
|
_recovery;
|
|
43
42
|
_budget;
|
|
43
|
+
_terminalTool;
|
|
44
44
|
_startTime;
|
|
45
45
|
constructor(opts) {
|
|
46
46
|
this._minToolCalls = opts?.minToolCallsBeforeReport ?? 2;
|
|
47
|
-
this.
|
|
47
|
+
this._exploreContext = opts?.shouldExplore?.context ?? 0.4;
|
|
48
|
+
this._exploreTime = opts?.shouldExplore?.time ?? 0.5;
|
|
48
49
|
this._guards = opts?.guards ?? [
|
|
49
50
|
...exports.defaultToolGuards,
|
|
50
51
|
...(opts?.extraGuards ?? []),
|
|
51
52
|
];
|
|
52
53
|
this._recovery = opts?.recovery ?? null;
|
|
53
54
|
this._budget = opts?.budget ?? null;
|
|
55
|
+
this._terminalTool = opts?.terminalTool ?? null;
|
|
54
56
|
this._startTime = performance.now();
|
|
55
57
|
}
|
|
56
58
|
_elapsed() { return performance.now() - this._startTime; }
|
|
@@ -66,51 +68,69 @@ class DefaultAgentPolicy {
|
|
|
66
68
|
}
|
|
67
69
|
onProduced(agent, parsed, pressure, config) {
|
|
68
70
|
const tc = parsed.toolCalls[0];
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return
|
|
71
|
+
if (!tc)
|
|
72
|
+
return this._handleNoToolCall(agent, parsed);
|
|
73
|
+
if (this._isTerminalTool(tc, config))
|
|
74
|
+
return this._handleTerminalTool(tc, agent, config, pressure);
|
|
75
|
+
if (this._isOverBudget(agent, tc, pressure, config))
|
|
76
|
+
return this._handleOverBudget(agent, tc, pressure, config);
|
|
77
|
+
const guardRejection = this._checkGuards(tc, agent);
|
|
78
|
+
if (guardRejection)
|
|
79
|
+
return guardRejection;
|
|
80
|
+
// Normal tool call
|
|
81
|
+
return { type: 'tool_call', tc };
|
|
82
|
+
}
|
|
83
|
+
// ── onProduced decision predicates ─────────────────────
|
|
84
|
+
_handleNoToolCall(agent, parsed) {
|
|
85
|
+
if (!agent.result && agent.toolCallCount > 0 && parsed.content) {
|
|
86
|
+
return { type: 'free_text_report', content: parsed.content };
|
|
75
87
|
}
|
|
76
|
-
|
|
88
|
+
return { type: 'idle', reason: 'free_text_stop' };
|
|
89
|
+
}
|
|
90
|
+
_isTerminalTool(tc, config) {
|
|
91
|
+
return !!(config.terminalTool && tc.name === config.terminalTool);
|
|
92
|
+
}
|
|
93
|
+
_handleTerminalTool(tc, agent, config, pressure) {
|
|
94
|
+
const underPressure = this._isUnderPressure(agent, pressure, config);
|
|
95
|
+
if (agent.toolCallCount < this._minToolCalls && config.hasNonTerminalTools && !underPressure) {
|
|
96
|
+
return { type: 'nudge', message: 'You must use tools before submitting results.' };
|
|
97
|
+
}
|
|
98
|
+
let result;
|
|
99
|
+
try {
|
|
100
|
+
result = JSON.parse(tc.arguments).result;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
result = tc.arguments;
|
|
104
|
+
}
|
|
105
|
+
return { type: 'report', result };
|
|
106
|
+
}
|
|
107
|
+
_isUnderPressure(agent, pressure, config) {
|
|
77
108
|
const timeSoft = this._budget?.time?.softLimit;
|
|
78
109
|
const timeNudge = timeSoft != null && this._elapsed() >= timeSoft;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
110
|
+
return agent.turns >= config.maxTurns || pressure.headroom < 0 || timeNudge;
|
|
111
|
+
}
|
|
112
|
+
_isOverBudget(agent, tc, pressure, config) {
|
|
113
|
+
const underPressure = this._isUnderPressure(agent, pressure, config);
|
|
114
|
+
return underPressure && (!config.terminalTool || tc.name !== config.terminalTool);
|
|
115
|
+
}
|
|
116
|
+
_handleOverBudget(agent, tc, pressure, config) {
|
|
117
|
+
const timeSoft = this._budget?.time?.softLimit;
|
|
118
|
+
const timeNudge = timeSoft != null && this._elapsed() >= timeSoft;
|
|
119
|
+
if (config.terminalTool && agent.toolCallCount > 0 && !pressure.critical) {
|
|
120
|
+
if (!this._nudgedThisTick) {
|
|
121
|
+
this._nudgedThisTick = true;
|
|
87
122
|
const msg = timeNudge
|
|
88
|
-
? 'Time limit
|
|
123
|
+
? 'Time limit reached — report your findings now.'
|
|
89
124
|
: agent.turns >= config.maxTurns
|
|
90
125
|
? 'Turn limit reached — report your findings now.'
|
|
91
126
|
: 'KV memory pressure — report your findings now.';
|
|
92
127
|
return { type: 'nudge', message: msg };
|
|
93
128
|
}
|
|
94
|
-
|
|
95
|
-
return { type: 'idle', reason: agent.turns >= config.maxTurns ? 'max_turns' : 'pressure_softcut' };
|
|
129
|
+
return { type: 'tool_call', tc };
|
|
96
130
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// over budget so the agent can report after receiving a nudge.
|
|
101
|
-
if (agent.toolCallCount < this._minToolCalls && config.hasNonTerminalTools && !underPressure) {
|
|
102
|
-
return { type: 'nudge', message: 'You must use tools before submitting results.' };
|
|
103
|
-
}
|
|
104
|
-
let result;
|
|
105
|
-
try {
|
|
106
|
-
result = JSON.parse(tc.arguments).result;
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
result = tc.arguments;
|
|
110
|
-
}
|
|
111
|
-
return { type: 'report', result };
|
|
112
|
-
}
|
|
113
|
-
// Check declarative guards against full lineage
|
|
131
|
+
return { type: 'idle', reason: agent.turns >= config.maxTurns ? 'max_turns' : 'pressure_softcut' };
|
|
132
|
+
}
|
|
133
|
+
_checkGuards(tc, agent) {
|
|
114
134
|
const lineageHistory = agent.walkAncestors(a => a.toolHistory);
|
|
115
135
|
let toolArgs;
|
|
116
136
|
try {
|
|
@@ -124,8 +144,7 @@ class DefaultAgentPolicy {
|
|
|
124
144
|
return { type: 'nudge', message: guard.message };
|
|
125
145
|
}
|
|
126
146
|
}
|
|
127
|
-
|
|
128
|
-
return { type: 'tool_call', tc };
|
|
147
|
+
return null;
|
|
129
148
|
}
|
|
130
149
|
onSettleReject(agent, _resultTokens, _pressure, config) {
|
|
131
150
|
// Nudge if possible — stateless, no escalation tracking
|
|
@@ -140,18 +159,41 @@ class DefaultAgentPolicy {
|
|
|
140
159
|
* to wrap up. Overrides pressure-based logic immediately.
|
|
141
160
|
*/
|
|
142
161
|
setExploitMode(force) { this._forceExploit = force; }
|
|
162
|
+
shouldExit(agent, pressure) {
|
|
163
|
+
if (this._terminalTool && agent.currentTool === this._terminalTool)
|
|
164
|
+
return false;
|
|
165
|
+
if (!pressure.critical) {
|
|
166
|
+
const timeHard = this._budget?.time?.hardLimit;
|
|
167
|
+
if (timeHard != null && this._elapsed() >= timeHard)
|
|
168
|
+
return true;
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
if (this._killedThisTick)
|
|
172
|
+
return false;
|
|
173
|
+
this._killedThisTick = true;
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
143
176
|
shouldExplore(_agent, pressure) {
|
|
144
177
|
if (this._forceExploit)
|
|
145
178
|
return false;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
179
|
+
const contextOk = pressure.percentAvailable / 100 > this._exploreContext;
|
|
180
|
+
const timeSoftLimit = this._budget?.time?.softLimit;
|
|
181
|
+
const timeOk = timeSoftLimit == null
|
|
182
|
+
? true
|
|
183
|
+
: this._elapsed() / timeSoftLimit < this._exploreTime;
|
|
184
|
+
return contextOk && timeOk;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Trailing stop: at most one agent nudged or killed per tick.
|
|
188
|
+
* The sacrificed agent's findings are extracted and its KV freed,
|
|
189
|
+
* giving the remaining agents headroom to continue researching.
|
|
190
|
+
* Both flags reset per tick via resetTick(), called by the pool.
|
|
191
|
+
*/
|
|
192
|
+
_killedThisTick = false;
|
|
193
|
+
_nudgedThisTick = false;
|
|
194
|
+
resetTick() {
|
|
195
|
+
this._killedThisTick = false;
|
|
196
|
+
this._nudgedThisTick = false;
|
|
155
197
|
}
|
|
156
198
|
onRecovery(agent) {
|
|
157
199
|
if (!this._recovery)
|
package/dist/AgentPolicy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPolicy.js","sourceRoot":"","sources":["../src/AgentPolicy.ts"],"names":[],"mappings":";;;AACA,6CAA+C;AAqB/C,gEAAgE;
|
|
1
|
+
{"version":3,"file":"AgentPolicy.js","sourceRoot":"","sources":["../src/AgentPolicy.ts"],"names":[],"mappings":"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"}
|
package/dist/Tool.d.ts
CHANGED
|
@@ -70,15 +70,13 @@ export declare abstract class Tool<TArgs = Record<string, unknown>> {
|
|
|
70
70
|
* the tool result, before the lazy grammar resets. This nudges the model
|
|
71
71
|
* to reason in prose about the result before generating the next tool call.
|
|
72
72
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
73
|
+
* Receives the tool result so the probe can be conditional — return null
|
|
74
|
+
* to skip.
|
|
75
75
|
*
|
|
76
|
-
* @
|
|
77
|
-
*
|
|
78
|
-
* get probe() { return 'Wait, '; }
|
|
79
|
-
* ```
|
|
76
|
+
* @param result - The tool result that was prefilled
|
|
77
|
+
* @returns Probe text to prefill, or null to skip
|
|
80
78
|
*/
|
|
81
|
-
|
|
79
|
+
probe(_result: unknown): string | null;
|
|
82
80
|
/**
|
|
83
81
|
* OpenAI-compatible function tool schema
|
|
84
82
|
*
|