@lloyal-labs/lloyal-agents 1.7.0 → 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 +81 -97
- package/dist/Agent.d.ts +26 -0
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +22 -0
- package/dist/Agent.js.map +1 -1
- package/dist/AgentPolicy.d.ts +27 -10
- package/dist/AgentPolicy.d.ts.map +1 -1
- package/dist/AgentPolicy.js +78 -16
- package/dist/AgentPolicy.js.map +1 -1
- package/dist/agent-pool.d.ts +14 -2
- package/dist/agent-pool.d.ts.map +1 -1
- package/dist/agent-pool.js +415 -148
- package/dist/agent-pool.js.map +1 -1
- package/dist/context.d.ts +18 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +18 -1
- package/dist/context.js.map +1 -1
- package/dist/create-agent-pool.d.ts +33 -15
- package/dist/create-agent-pool.d.ts.map +1 -1
- package/dist/create-agent-pool.js +34 -10
- package/dist/create-agent-pool.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/orchestrators.d.ts +161 -0
- package/dist/orchestrators.d.ts.map +1 -0
- package/dist/orchestrators.js +173 -0
- package/dist/orchestrators.js.map +1 -0
- package/dist/replay.d.ts +96 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +108 -0
- package/dist/replay.js.map +1 -0
- package/dist/shared-root.d.ts +56 -18
- package/dist/shared-root.d.ts.map +1 -1
- package/dist/shared-root.js +79 -52
- package/dist/shared-root.js.map +1 -1
- package/dist/trace-types.d.ts +22 -2
- package/dist/trace-types.d.ts.map +1 -1
- package/dist/types.d.ts +33 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/use-agent.d.ts.map +1 -1
- package/dist/use-agent.js +13 -17
- package/dist/use-agent.js.map +1 -1
- package/package.json +5 -5
package/dist/AgentPolicy.js
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultAgentPolicy = exports.defaultToolGuards = void 0;
|
|
4
4
|
const agent_pool_1 = require("./agent-pool");
|
|
5
|
+
const prompt_1 = require("./prompt");
|
|
6
|
+
// Recovery-phase KV accounting constants. These size the hardLimit reserve
|
|
7
|
+
// allocation for recoverInline: the prefill cost of the recovery prompt +
|
|
8
|
+
// room for llama.cpp's batch workspace. Used to compute the budget
|
|
9
|
+
// communicated to the model in its recovery prompt.
|
|
10
|
+
const RECOVERY_PREFILL_OVERHEAD = 150;
|
|
11
|
+
const BATCH_BUFFER = 512;
|
|
12
|
+
/**
|
|
13
|
+
* Convert a token budget to a conservative word count for the model-facing
|
|
14
|
+
* prompt. Tokens are tokenizer-specific; words are universal and better
|
|
15
|
+
* reflected in training data. Applies a 0.7 words/token ratio (vs the
|
|
16
|
+
* typical ~0.75) to under-advertise the budget, rounds down to the nearest
|
|
17
|
+
* 10, and floors at 10 so the model always has a non-zero target.
|
|
18
|
+
*/
|
|
19
|
+
function tokenBudgetAsWords(budgetTokens) {
|
|
20
|
+
return Math.max(10, Math.floor(budgetTokens * 0.7 / 10) * 10);
|
|
21
|
+
}
|
|
5
22
|
/** Default guards for deduplication and recursion discipline */
|
|
6
23
|
function parseHistoryArgs(argsStr) {
|
|
7
24
|
try {
|
|
@@ -55,7 +72,19 @@ class DefaultAgentPolicy {
|
|
|
55
72
|
this._terminalTool = opts?.terminalTool ?? null;
|
|
56
73
|
this._startTime = performance.now();
|
|
57
74
|
}
|
|
58
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Elapsed wall time for *this agent* (since its first idle→active transition),
|
|
77
|
+
* falling back to the policy's own construction time when the agent hasn't
|
|
78
|
+
* started yet (defensive — shouldn't normally happen).
|
|
79
|
+
*
|
|
80
|
+
* Per-agent timing means orchestrators that spawn agents sequentially (e.g.
|
|
81
|
+
* `chain`) get the correct "how long has this task been running?" semantics
|
|
82
|
+
* without the time budget leaking across iterations.
|
|
83
|
+
*/
|
|
84
|
+
_elapsed(agent) {
|
|
85
|
+
const started = agent?.startedAt ?? this._startTime;
|
|
86
|
+
return performance.now() - started;
|
|
87
|
+
}
|
|
59
88
|
/** KV pressure thresholds for ContextPressure construction.
|
|
60
89
|
* Pool reads this once at setup. */
|
|
61
90
|
get pressureThresholds() {
|
|
@@ -72,11 +101,19 @@ class DefaultAgentPolicy {
|
|
|
72
101
|
return this._handleNoToolCall(agent, parsed);
|
|
73
102
|
if (this._isTerminalTool(tc, config))
|
|
74
103
|
return this._handleTerminalTool(tc, agent, config, pressure);
|
|
75
|
-
|
|
76
|
-
|
|
104
|
+
// Guards before budget: when an agent is over budget AND emitting
|
|
105
|
+
// a tool call the guards already want to reject (duplicate query,
|
|
106
|
+
// duplicate fetch, delegation-before-research), the guard's specific
|
|
107
|
+
// message is more actionable than a generic "report now within N
|
|
108
|
+
// words" turn-limit nudge. Previously, `_isOverBudget` preempted the
|
|
109
|
+
// guard — stuck agents (same query repeated past maxTurns) saw only
|
|
110
|
+
// turn-limit nudges instead of the dedup message that named the
|
|
111
|
+
// actual problem (see trace-1776819196054 agent 65539).
|
|
77
112
|
const guardRejection = this._checkGuards(tc, agent);
|
|
78
113
|
if (guardRejection)
|
|
79
114
|
return guardRejection;
|
|
115
|
+
if (this._isOverBudget(agent, tc, pressure, config))
|
|
116
|
+
return this._handleOverBudget(agent, tc, pressure, config);
|
|
80
117
|
// Normal tool call
|
|
81
118
|
return { type: 'tool_call', tc };
|
|
82
119
|
}
|
|
@@ -106,7 +143,7 @@ class DefaultAgentPolicy {
|
|
|
106
143
|
}
|
|
107
144
|
_isUnderPressure(agent, pressure, config) {
|
|
108
145
|
const timeSoft = this._budget?.time?.softLimit;
|
|
109
|
-
const timeNudge = timeSoft != null && this._elapsed() >= timeSoft;
|
|
146
|
+
const timeNudge = timeSoft != null && this._elapsed(agent) >= timeSoft;
|
|
110
147
|
return agent.turns >= config.maxTurns || pressure.headroom < 0 || timeNudge;
|
|
111
148
|
}
|
|
112
149
|
_isOverBudget(agent, tc, pressure, config) {
|
|
@@ -115,15 +152,21 @@ class DefaultAgentPolicy {
|
|
|
115
152
|
}
|
|
116
153
|
_handleOverBudget(agent, tc, pressure, config) {
|
|
117
154
|
const timeSoft = this._budget?.time?.softLimit;
|
|
118
|
-
const timeNudge = timeSoft != null && this._elapsed() >= timeSoft;
|
|
155
|
+
const timeNudge = timeSoft != null && this._elapsed(agent) >= timeSoft;
|
|
119
156
|
if (config.terminalTool && agent.toolCallCount > 0 && !pressure.critical) {
|
|
120
157
|
if (!this._nudgedThisTick) {
|
|
121
158
|
this._nudgedThisTick = true;
|
|
159
|
+
// Budget the model can emit before `pressure.critical` kills it.
|
|
160
|
+
// Overshoot → kill → recoverInline extracts from the hardLimit reserve.
|
|
161
|
+
// Expressed in words (not tokens) because tokenizers vary across
|
|
162
|
+
// models but words are universal. Under-advertised + rounded down
|
|
163
|
+
// so the model has slack on the ceiling.
|
|
164
|
+
const words = tokenBudgetAsWords(pressure.remaining - pressure.hardLimit);
|
|
122
165
|
const msg = timeNudge
|
|
123
|
-
?
|
|
166
|
+
? `Time limit reached — report your findings now within ${words} words.`
|
|
124
167
|
: agent.turns >= config.maxTurns
|
|
125
|
-
?
|
|
126
|
-
:
|
|
168
|
+
? `Turn limit reached — report your findings now within ${words} words.`
|
|
169
|
+
: `KV memory pressure — report your findings now within ${words} words.`;
|
|
127
170
|
return { type: 'nudge', message: msg };
|
|
128
171
|
}
|
|
129
172
|
return { type: 'tool_call', tc };
|
|
@@ -146,10 +189,11 @@ class DefaultAgentPolicy {
|
|
|
146
189
|
}
|
|
147
190
|
return null;
|
|
148
191
|
}
|
|
149
|
-
onSettleReject(agent, _resultTokens,
|
|
192
|
+
onSettleReject(agent, _resultTokens, pressure, config) {
|
|
150
193
|
// Nudge if possible — stateless, no escalation tracking
|
|
151
194
|
if (config.terminalTool && agent.toolCallCount > 0) {
|
|
152
|
-
|
|
195
|
+
const words = tokenBudgetAsWords(pressure.remaining - pressure.hardLimit);
|
|
196
|
+
return { type: 'nudge', message: `Tool result too large for remaining KV. Report your findings now within ${words} words.` };
|
|
153
197
|
}
|
|
154
198
|
// No terminal tool: kill
|
|
155
199
|
return { type: 'idle', reason: 'pressure_settle_reject' };
|
|
@@ -160,11 +204,15 @@ class DefaultAgentPolicy {
|
|
|
160
204
|
*/
|
|
161
205
|
setExploitMode(force) { this._forceExploit = force; }
|
|
162
206
|
shouldExit(agent, pressure) {
|
|
163
|
-
|
|
207
|
+
// Terminal-tool protection applies in the graceful zone only — once
|
|
208
|
+
// `pressure.critical` fires, the agent must yield so the pool can
|
|
209
|
+
// kill+recover before native OOM. Holding this protection through
|
|
210
|
+
// critical territory was the DOJ runaway cause (trace-1776782401659).
|
|
211
|
+
if (this._terminalTool && agent.currentTool === this._terminalTool && !pressure.critical)
|
|
164
212
|
return false;
|
|
165
213
|
if (!pressure.critical) {
|
|
166
214
|
const timeHard = this._budget?.time?.hardLimit;
|
|
167
|
-
if (timeHard != null && this._elapsed() >= timeHard)
|
|
215
|
+
if (timeHard != null && this._elapsed(agent) >= timeHard)
|
|
168
216
|
return true;
|
|
169
217
|
return false;
|
|
170
218
|
}
|
|
@@ -173,14 +221,14 @@ class DefaultAgentPolicy {
|
|
|
173
221
|
this._killedThisTick = true;
|
|
174
222
|
return true;
|
|
175
223
|
}
|
|
176
|
-
shouldExplore(
|
|
224
|
+
shouldExplore(agent, pressure) {
|
|
177
225
|
if (this._forceExploit)
|
|
178
226
|
return false;
|
|
179
227
|
const contextOk = pressure.percentAvailable / 100 > this._exploreContext;
|
|
180
228
|
const timeSoftLimit = this._budget?.time?.softLimit;
|
|
181
229
|
const timeOk = timeSoftLimit == null
|
|
182
230
|
? true
|
|
183
|
-
: this._elapsed() / timeSoftLimit < this._exploreTime;
|
|
231
|
+
: this._elapsed(agent) / timeSoftLimit < this._exploreTime;
|
|
184
232
|
return contextOk && timeOk;
|
|
185
233
|
}
|
|
186
234
|
/**
|
|
@@ -195,7 +243,7 @@ class DefaultAgentPolicy {
|
|
|
195
243
|
this._killedThisTick = false;
|
|
196
244
|
this._nudgedThisTick = false;
|
|
197
245
|
}
|
|
198
|
-
onRecovery(agent) {
|
|
246
|
+
onRecovery(agent, pressure) {
|
|
199
247
|
if (!this._recovery)
|
|
200
248
|
return { type: 'skip' };
|
|
201
249
|
const minTokens = this._recovery.minTokens ?? 100;
|
|
@@ -203,7 +251,21 @@ class DefaultAgentPolicy {
|
|
|
203
251
|
if (agent.tokenCount < minTokens || agent.toolCallCount < minToolCalls) {
|
|
204
252
|
return { type: 'skip' };
|
|
205
253
|
}
|
|
206
|
-
|
|
254
|
+
// Budget recovery's generation can consume: hardLimit reserve minus the
|
|
255
|
+
// prefill overhead and llama.cpp's batch workspace. Expressed as words
|
|
256
|
+
// (not tokens) and under-advertised so the model has slack — tokenizers
|
|
257
|
+
// vary across models but words are universal. Rendered into the prompt
|
|
258
|
+
// as `it.budget` so authors can reference it via `<%= it.budget %>`.
|
|
259
|
+
const budgetTokens = Math.max(50, pressure.remaining - RECOVERY_PREFILL_OVERHEAD - BATCH_BUFFER);
|
|
260
|
+
const budget = tokenBudgetAsWords(budgetTokens);
|
|
261
|
+
const tctx = { budget };
|
|
262
|
+
return {
|
|
263
|
+
type: 'extract',
|
|
264
|
+
prompt: {
|
|
265
|
+
system: (0, prompt_1.renderTemplate)(this._recovery.prompt.system, tctx),
|
|
266
|
+
user: (0, prompt_1.renderTemplate)(this._recovery.prompt.user, tctx),
|
|
267
|
+
},
|
|
268
|
+
};
|
|
207
269
|
}
|
|
208
270
|
}
|
|
209
271
|
exports.DefaultAgentPolicy = DefaultAgentPolicy;
|
package/dist/AgentPolicy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPolicy.js","sourceRoot":"","sources":["../src/AgentPolicy.ts"],"names":[],"mappings":";;;AACA,6CAA+C;
|
|
1
|
+
{"version":3,"file":"AgentPolicy.js","sourceRoot":"","sources":["../src/AgentPolicy.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-pool.d.ts
CHANGED
|
@@ -44,8 +44,20 @@ import type { PressureThresholds, AgentPoolOptions, AgentPoolResult, AgentEvent
|
|
|
44
44
|
export declare class ContextPressure {
|
|
45
45
|
/** Default softLimit: 1024 tokens reserved for downstream work */
|
|
46
46
|
static readonly DEFAULT_SOFT_LIMIT = 1024;
|
|
47
|
-
/**
|
|
48
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Default hardLimit: 512 tokens — matches llama.cpp's default `n_batch`.
|
|
49
|
+
* The pool validates at startup that `hardLimit >= nBatch`; the default
|
|
50
|
+
* is sized to satisfy the invariant for the default llama.cpp context.
|
|
51
|
+
* Recovery fits within the `hardLimit` reserve.
|
|
52
|
+
*/
|
|
53
|
+
static readonly DEFAULT_HARD_LIMIT = 512;
|
|
54
|
+
/**
|
|
55
|
+
* Assumed `nBatch` when the native binding doesn't expose it.
|
|
56
|
+
* Pool startup validates `pressureThresholds.hardLimit >= this`.
|
|
57
|
+
* TODO: once `SessionContext.nBatch` is exposed (lloyal.node
|
|
58
|
+
* follow-up), read from ctx.nBatch instead.
|
|
59
|
+
*/
|
|
60
|
+
static readonly ASSUMED_N_BATCH = 512;
|
|
49
61
|
/** Total KV cache capacity (max positions). 0 when no context limit. */
|
|
50
62
|
readonly nCtx: number;
|
|
51
63
|
/** KV cells currently in use (monotonic within a pool run). */
|
package/dist/agent-pool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-pool.d.ts","sourceRoot":"","sources":["../src/agent-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAA+G,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-pool.d.ts","sourceRoot":"","sources":["../src/agent-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAA+G,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYpK,OAAO,KAAK,EACV,kBAAkB,EAElB,gBAAgB,EAChB,eAAe,EACf,UAAU,EAEX,MAAM,SAAS,CAAC;AAsBjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,eAAe;IAC1B,kEAAkE;IAClE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,QAAQ;IAC1C;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,OAAO;IACzC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,OAAO;IAEtC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,kBAAkB;IAS1D;;;;OAIG;IACH,IAAI,QAAQ,IAAI,MAAM,CAA4C;IAElE,qEAAqE;IACrE,IAAI,QAAQ,IAAI,OAAO,CAA4C;IAEnE,iEAAiE;IACjE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAEnC;;;;;OAKG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAI7B;CACF;AAoRD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CA2uBzG"}
|