@roj-ai/sdk 0.1.20 → 0.1.21
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/core/agents/agent.d.ts.map +1 -1
- package/dist/core/agents/agent.js +13 -3
- package/dist/core/agents/agent.js.map +1 -1
- package/dist/core/context/state.d.ts +8 -0
- package/dist/core/context/state.d.ts.map +1 -1
- package/dist/core/context/state.js +10 -0
- package/dist/core/context/state.js.map +1 -1
- package/dist/core/events/base-event-store.d.ts.map +1 -1
- package/dist/core/events/base-event-store.js +2 -0
- package/dist/core/events/base-event-store.js.map +1 -1
- package/dist/core/events/metadata-utils.d.ts.map +1 -1
- package/dist/core/events/metadata-utils.js +2 -0
- package/dist/core/events/metadata-utils.js.map +1 -1
- package/dist/core/llm/anthropic.test.js +27 -0
- package/dist/core/llm/anthropic.test.js.map +1 -1
- package/dist/core/llm/cache-breakpoints.d.ts +19 -5
- package/dist/core/llm/cache-breakpoints.d.ts.map +1 -1
- package/dist/core/llm/cache-breakpoints.js +40 -23
- package/dist/core/llm/cache-breakpoints.js.map +1 -1
- package/dist/core/llm/cache-breakpoints.test.d.ts +2 -0
- package/dist/core/llm/cache-breakpoints.test.d.ts.map +1 -0
- package/dist/core/llm/cache-breakpoints.test.js +45 -0
- package/dist/core/llm/cache-breakpoints.test.js.map +1 -0
- package/dist/core/llm/state.d.ts +22 -0
- package/dist/core/llm/state.d.ts.map +1 -1
- package/dist/core/llm/state.js +23 -11
- package/dist/core/llm/state.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/agents/plugin.d.ts.map +1 -1
- package/dist/plugins/agents/plugin.js +7 -1
- package/dist/plugins/agents/plugin.js.map +1 -1
- package/dist/plugins/context-compact/context-compact.integration.test.js +54 -0
- package/dist/plugins/context-compact/context-compact.integration.test.js.map +1 -1
- package/dist/plugins/context-compact/context-compactor.d.ts +2 -0
- package/dist/plugins/context-compact/context-compactor.d.ts.map +1 -1
- package/dist/plugins/context-compact/context-compactor.js +29 -0
- package/dist/plugins/context-compact/context-compactor.js.map +1 -1
- package/dist/plugins/context-compact/context-compactor.test.js +6 -0
- package/dist/plugins/context-compact/context-compactor.test.js.map +1 -1
- package/dist/plugins/limits-guard/config.d.ts +30 -0
- package/dist/plugins/limits-guard/config.d.ts.map +1 -1
- package/dist/plugins/limits-guard/index.d.ts +3 -3
- package/dist/plugins/limits-guard/index.d.ts.map +1 -1
- package/dist/plugins/limits-guard/index.js +1 -1
- package/dist/plugins/limits-guard/index.js.map +1 -1
- package/dist/plugins/limits-guard/limit-guard.d.ts +27 -1
- package/dist/plugins/limits-guard/limit-guard.d.ts.map +1 -1
- package/dist/plugins/limits-guard/limit-guard.js +67 -0
- package/dist/plugins/limits-guard/limit-guard.js.map +1 -1
- package/dist/plugins/limits-guard/limit-guard.test.js +65 -1
- package/dist/plugins/limits-guard/limit-guard.test.js.map +1 -1
- package/dist/plugins/limits-guard/limits-guard.integration.test.js +295 -1
- package/dist/plugins/limits-guard/limits-guard.integration.test.js.map +1 -1
- package/dist/plugins/limits-guard/plugin.d.ts +23 -2
- package/dist/plugins/limits-guard/plugin.d.ts.map +1 -1
- package/dist/plugins/limits-guard/plugin.js +107 -2
- package/dist/plugins/limits-guard/plugin.js.map +1 -1
- package/dist/plugins/mailbox/plugin.d.ts.map +1 -1
- package/dist/plugins/mailbox/plugin.js +18 -0
- package/dist/plugins/mailbox/plugin.js.map +1 -1
- package/dist/plugins/session-stats/plugin.d.ts.map +1 -1
- package/dist/plugins/session-stats/plugin.js +5 -1
- package/dist/plugins/session-stats/plugin.js.map +1 -1
- package/package.json +2 -2
- package/src/core/agents/agent.ts +18 -2
- package/src/core/context/state.ts +10 -0
- package/src/core/events/base-event-store.ts +2 -0
- package/src/core/events/metadata-utils.ts +2 -0
- package/src/core/llm/anthropic.test.ts +34 -0
- package/src/core/llm/cache-breakpoints.test.ts +55 -0
- package/src/core/llm/cache-breakpoints.ts +39 -21
- package/src/core/llm/state.ts +25 -11
- package/src/index.ts +3 -3
- package/src/plugins/agents/plugin.ts +7 -1
- package/src/plugins/context-compact/context-compact.integration.test.ts +62 -0
- package/src/plugins/context-compact/context-compactor.test.ts +6 -0
- package/src/plugins/context-compact/context-compactor.ts +31 -0
- package/src/plugins/limits-guard/config.ts +35 -0
- package/src/plugins/limits-guard/index.ts +3 -3
- package/src/plugins/limits-guard/limit-guard.test.ts +80 -1
- package/src/plugins/limits-guard/limit-guard.ts +98 -1
- package/src/plugins/limits-guard/limits-guard.integration.test.ts +331 -1
- package/src/plugins/limits-guard/plugin.ts +153 -3
- package/src/plugins/mailbox/plugin.ts +18 -0
- package/src/plugins/session-stats/plugin.ts +5 -1
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
import { agentEvents } from '../../core/agents/state.js';
|
|
2
|
+
import { contextEvents } from '../../core/context/state.js';
|
|
2
3
|
import { llmEvents } from '../../core/llm/state.js';
|
|
3
4
|
import { definePlugin } from '../../core/plugins/plugin-builder.js';
|
|
4
5
|
import { selectPluginState } from '../../core/sessions/reducer.js';
|
|
5
6
|
import { toolEvents } from '../../core/tools/state.js';
|
|
6
7
|
import { responseFingerprint, toolCallFingerprint } from '../../lib/utils/hash.js';
|
|
7
8
|
import { mailboxEvents } from '../../plugins/mailbox/state.js';
|
|
8
|
-
import { checkLimits, countConsecutiveTailDuplicates, resolveAgentLimits } from './limit-guard.js';
|
|
9
|
+
import { checkBudget, checkLimits, countConsecutiveTailDuplicates, resolveAgentLimits, resolveSessionLimits, } from './limit-guard.js';
|
|
9
10
|
export const createAgentCounters = () => ({
|
|
10
11
|
inferenceCount: 0,
|
|
11
12
|
toolCallCount: 0,
|
|
12
13
|
spawnedAgentCount: 0,
|
|
13
14
|
messagesSentCount: 0,
|
|
15
|
+
compactionCount: 0,
|
|
16
|
+
costSpent: 0,
|
|
17
|
+
tokensUsed: 0,
|
|
14
18
|
consecutiveToolFailures: {},
|
|
15
19
|
recentToolCallHashes: [],
|
|
16
20
|
recentResponseHashes: [],
|
|
17
21
|
});
|
|
22
|
+
/** Sum cost + tokens across all agents in the session (for the session-wide budget). */
|
|
23
|
+
export function sumSessionSpend(limits) {
|
|
24
|
+
let costSpent = 0;
|
|
25
|
+
let tokensUsed = 0;
|
|
26
|
+
for (const counters of limits.values()) {
|
|
27
|
+
costSpent += counters.costSpent;
|
|
28
|
+
tokensUsed += counters.tokensUsed;
|
|
29
|
+
}
|
|
30
|
+
return { costSpent, tokensUsed };
|
|
31
|
+
}
|
|
18
32
|
/**
|
|
19
33
|
* Extract agent counters from session state (for external consumers).
|
|
20
34
|
*/
|
|
@@ -36,6 +50,16 @@ export const limitsEvents = createEventsFactory({
|
|
|
36
50
|
hardLimit: z.number(),
|
|
37
51
|
message: z.string(),
|
|
38
52
|
}),
|
|
53
|
+
budget_exceeded: z.object({
|
|
54
|
+
agentId: agentIdSchema,
|
|
55
|
+
/** Whether the per-agent or the session-wide budget was hit. */
|
|
56
|
+
scope: z.enum(['agent', 'session']),
|
|
57
|
+
/** Which limit tripped: maxCost / maxTokens / maxSessionCost / maxSessionTokens. */
|
|
58
|
+
limitName: z.string(),
|
|
59
|
+
spent: z.number(),
|
|
60
|
+
limit: z.number(),
|
|
61
|
+
message: z.string(),
|
|
62
|
+
}),
|
|
39
63
|
},
|
|
40
64
|
});
|
|
41
65
|
// ============================================================================
|
|
@@ -54,7 +78,8 @@ function resolveToolName(sessionState, agentId, toolCallId) {
|
|
|
54
78
|
?? 'unknown';
|
|
55
79
|
}
|
|
56
80
|
export const limitsGuardPlugin = definePlugin('limits-guard')
|
|
57
|
-
.events([agentEvents, llmEvents, toolEvents, mailboxEvents])
|
|
81
|
+
.events([agentEvents, llmEvents, toolEvents, mailboxEvents, contextEvents, limitsEvents])
|
|
82
|
+
.pluginConfig()
|
|
58
83
|
.state({
|
|
59
84
|
key: 'agentLimits',
|
|
60
85
|
initial: () => new Map(),
|
|
@@ -109,10 +134,38 @@ export const limitsGuardPlugin = definePlugin('limits-guard')
|
|
|
109
134
|
newLimits.set(event.agentId, {
|
|
110
135
|
...counters,
|
|
111
136
|
inferenceCount: counters.inferenceCount + 1,
|
|
137
|
+
costSpent: counters.costSpent + (event.metrics.cost ?? 0),
|
|
138
|
+
tokensUsed: counters.tokensUsed + (event.metrics.totalTokens ?? 0),
|
|
112
139
|
recentResponseHashes: newRecentResponseHashes,
|
|
113
140
|
});
|
|
114
141
|
return newLimits;
|
|
115
142
|
}
|
|
143
|
+
case 'auxiliary_inference_completed': {
|
|
144
|
+
// Side-channel calls (e.g. context compaction) are billed but don't
|
|
145
|
+
// touch conversation state, so they count toward cost/token budgets
|
|
146
|
+
// but NOT toward inferenceCount or the anti-looping response hashes.
|
|
147
|
+
const counters = limits.get(event.agentId);
|
|
148
|
+
if (!counters)
|
|
149
|
+
return limits;
|
|
150
|
+
const newLimits = new Map(limits);
|
|
151
|
+
newLimits.set(event.agentId, {
|
|
152
|
+
...counters,
|
|
153
|
+
costSpent: counters.costSpent + (event.metrics.cost ?? 0),
|
|
154
|
+
tokensUsed: counters.tokensUsed + (event.metrics.totalTokens ?? 0),
|
|
155
|
+
});
|
|
156
|
+
return newLimits;
|
|
157
|
+
}
|
|
158
|
+
case 'context_compacted': {
|
|
159
|
+
const counters = limits.get(event.agentId);
|
|
160
|
+
if (!counters)
|
|
161
|
+
return limits;
|
|
162
|
+
const newLimits = new Map(limits);
|
|
163
|
+
newLimits.set(event.agentId, {
|
|
164
|
+
...counters,
|
|
165
|
+
compactionCount: counters.compactionCount + 1,
|
|
166
|
+
});
|
|
167
|
+
return newLimits;
|
|
168
|
+
}
|
|
116
169
|
case 'tool_started': {
|
|
117
170
|
const counters = limits.get(event.agentId);
|
|
118
171
|
if (!counters)
|
|
@@ -161,6 +214,11 @@ export const limitsGuardPlugin = definePlugin('limits-guard')
|
|
|
161
214
|
const counters = limits.get(event.agentId);
|
|
162
215
|
if (!counters)
|
|
163
216
|
return limits;
|
|
217
|
+
// Reset the anti-looping counters so the agent can make progress
|
|
218
|
+
// again. Budget spend (costSpent/tokensUsed) is deliberately NOT
|
|
219
|
+
// reset — otherwise a per-agent or session cost cap could be bypassed
|
|
220
|
+
// by repeatedly pausing and resuming. To grant more budget, raise the
|
|
221
|
+
// configured limit instead.
|
|
164
222
|
const newLimits = new Map(limits);
|
|
165
223
|
newLimits.set(event.agentId, {
|
|
166
224
|
...counters,
|
|
@@ -168,6 +226,7 @@ export const limitsGuardPlugin = definePlugin('limits-guard')
|
|
|
168
226
|
toolCallCount: 0,
|
|
169
227
|
spawnedAgentCount: 0,
|
|
170
228
|
messagesSentCount: 0,
|
|
229
|
+
compactionCount: 0,
|
|
171
230
|
consecutiveToolFailures: {},
|
|
172
231
|
recentToolCallHashes: [],
|
|
173
232
|
recentResponseHashes: [],
|
|
@@ -180,6 +239,42 @@ export const limitsGuardPlugin = definePlugin('limits-guard')
|
|
|
180
239
|
},
|
|
181
240
|
})
|
|
182
241
|
.agentConfig()
|
|
242
|
+
.hook('beforeInference', async (ctx) => {
|
|
243
|
+
// Budgets are enforced here (before the call) so an exhausted agent is
|
|
244
|
+
// paused before spending more — cost/tokens of a call aren't known until
|
|
245
|
+
// after it returns, so we stop the *next* call once the threshold is hit.
|
|
246
|
+
const counters = ctx.pluginState.get(ctx.agentId);
|
|
247
|
+
if (!counters)
|
|
248
|
+
return null;
|
|
249
|
+
const agentLimits = resolveAgentLimits(ctx.pluginAgentConfig?.limits);
|
|
250
|
+
const agentCheck = checkBudget(counters, agentLimits.maxCost, agentLimits.maxTokens, agentLimits.softLimitRatio, { cost: 'maxCost', tokens: 'maxTokens' });
|
|
251
|
+
if (agentCheck.status === 'hard_limit') {
|
|
252
|
+
await ctx.emitEvent(limitsEvents.create('budget_exceeded', {
|
|
253
|
+
agentId: ctx.agentId,
|
|
254
|
+
scope: 'agent',
|
|
255
|
+
limitName: agentCheck.limitName,
|
|
256
|
+
spent: agentCheck.currentValue,
|
|
257
|
+
limit: agentCheck.hardLimit,
|
|
258
|
+
message: agentCheck.reason,
|
|
259
|
+
}));
|
|
260
|
+
return { action: 'pause', reason: `Agent budget exceeded — ${agentCheck.reason}` };
|
|
261
|
+
}
|
|
262
|
+
const sessionLimits = resolveSessionLimits(ctx.pluginConfig);
|
|
263
|
+
const sessionSpend = sumSessionSpend(ctx.pluginState);
|
|
264
|
+
const sessionCheck = checkBudget(sessionSpend, sessionLimits.maxSessionCost, sessionLimits.maxSessionTokens, sessionLimits.softLimitRatio, { cost: 'maxSessionCost', tokens: 'maxSessionTokens' });
|
|
265
|
+
if (sessionCheck.status === 'hard_limit') {
|
|
266
|
+
await ctx.emitEvent(limitsEvents.create('budget_exceeded', {
|
|
267
|
+
agentId: ctx.agentId,
|
|
268
|
+
scope: 'session',
|
|
269
|
+
limitName: sessionCheck.limitName,
|
|
270
|
+
spent: sessionCheck.currentValue,
|
|
271
|
+
limit: sessionCheck.hardLimit,
|
|
272
|
+
message: sessionCheck.reason,
|
|
273
|
+
}));
|
|
274
|
+
return { action: 'pause', reason: `Session budget exceeded — ${sessionCheck.reason}` };
|
|
275
|
+
}
|
|
276
|
+
return null;
|
|
277
|
+
})
|
|
183
278
|
.hook('afterInference', async (ctx) => {
|
|
184
279
|
const resolvedLimits = resolveAgentLimits(ctx.pluginAgentConfig?.limits);
|
|
185
280
|
const counters = ctx.pluginState.get(ctx.agentId);
|
|
@@ -234,6 +329,16 @@ export const limitsGuardPlugin = definePlugin('limits-guard')
|
|
|
234
329
|
parts.push(`⚠️ Approaching ${limitCheck.limitName} limit: ${limitCheck.currentValue}/${limitCheck.hardLimit}. `
|
|
235
330
|
+ `Wrap up your current task or you will be stopped.`);
|
|
236
331
|
}
|
|
332
|
+
// Budget soft warnings — per-agent spend, then the session-wide budget.
|
|
333
|
+
const agentBudget = checkBudget(counters, resolvedLimits.maxCost, resolvedLimits.maxTokens, resolvedLimits.softLimitRatio, { cost: 'maxCost', tokens: 'maxTokens' });
|
|
334
|
+
if (agentBudget.status === 'soft_warning') {
|
|
335
|
+
parts.push(`⚠️ ${agentBudget.message}. You will be paused when the budget is reached — wrap up.`);
|
|
336
|
+
}
|
|
337
|
+
const sessionLimits = resolveSessionLimits(ctx.pluginConfig);
|
|
338
|
+
const sessionBudget = checkBudget(sumSessionSpend(ctx.pluginState), sessionLimits.maxSessionCost, sessionLimits.maxSessionTokens, sessionLimits.softLimitRatio, { cost: 'maxSessionCost', tokens: 'maxSessionTokens' });
|
|
339
|
+
if (sessionBudget.status === 'soft_warning') {
|
|
340
|
+
parts.push(`⚠️ Session-wide ${sessionBudget.message}.`);
|
|
341
|
+
}
|
|
237
342
|
return parts.length > 0 ? parts.join('\n\n') : null;
|
|
238
343
|
})
|
|
239
344
|
.build();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/limits-guard/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/limits-guard/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/mailbox/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,CAAC,MAAM,QAAQ,CAAC;AAyBvB;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/mailbox/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,CAAC,MAAM,QAAQ,CAAC;AAyBvB;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;GAqQjB,CAAC"}
|
|
@@ -167,6 +167,24 @@ export const mailboxPlugin = definePlugin("mailbox")
|
|
|
167
167
|
content: `Agent encountered an error: ${ctx.error}`,
|
|
168
168
|
});
|
|
169
169
|
return null;
|
|
170
|
+
})
|
|
171
|
+
.hook("onPause", async (ctx) => {
|
|
172
|
+
// Notify the parent immediately when a child pauses (budget/limit exhaustion,
|
|
173
|
+
// manual pause, …) so it can react: resume after addressing the cause,
|
|
174
|
+
// reassign the work, or stop. Lives here (not in the agents plugin) because
|
|
175
|
+
// the agents plugin is disabled on leaf agents that can't spawn — but those
|
|
176
|
+
// are exactly the agents that pause and need to report upward. mailbox is
|
|
177
|
+
// enabled on every agent, and self.send wakes the parent. Root agents
|
|
178
|
+
// (no parent) have no one to notify.
|
|
179
|
+
const parentId = ctx.agentState.parentId;
|
|
180
|
+
if (!parentId || !ctx.sessionState.agents.has(parentId))
|
|
181
|
+
return null;
|
|
182
|
+
await ctx.self.send({
|
|
183
|
+
fromAgentId: ctx.agentId,
|
|
184
|
+
toAgentId: parentId,
|
|
185
|
+
content: `<child-paused agent="${ctx.agentId}">${ctx.reason ?? "no reason given"}</child-paused>`,
|
|
186
|
+
});
|
|
187
|
+
return null;
|
|
170
188
|
})
|
|
171
189
|
.systemPrompt((ctx) => {
|
|
172
190
|
const role = getAgentRole(ctx.agentState, ctx.sessionState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/mailbox/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/mailbox/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/session-stats/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAO5D,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACzC;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,iBAAiB,CAEhF;AAMD,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/session-stats/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAO5D,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACzC;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,iBAAiB,CAEhF;AAMD,eAAO,MAAM,kBAAkB,kGA4DtB,CAAA"}
|
|
@@ -43,7 +43,11 @@ export const sessionStatsPlugin = definePlugin('session-stats')
|
|
|
43
43
|
switch (event.type) {
|
|
44
44
|
case 'agent_spawned':
|
|
45
45
|
return withTimestamp({ agentCount: stats.agentCount + 1 });
|
|
46
|
-
|
|
46
|
+
// inference_completed = main agent turns; auxiliary_inference_completed =
|
|
47
|
+
// side-channel calls (e.g. context compaction). Both are billed LLM
|
|
48
|
+
// calls, so both feed the same usage/cost accounting.
|
|
49
|
+
case 'inference_completed':
|
|
50
|
+
case 'auxiliary_inference_completed': {
|
|
47
51
|
const provider = event.metrics.provider;
|
|
48
52
|
const byProvider = provider
|
|
49
53
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/session-stats/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AA8BlD,MAAM,kBAAkB,GAAG,GAAsB,EAAE,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,EAAE;CACd,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,cAAc,CAAA;AAEvC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAA0B;IAC5D,OAAO,iBAAiB,CAAoB,YAAY,EAAE,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAA;AACpG,CAAC;AAED,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC,eAAe,CAAC;KAC7D,MAAM,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;KAC5C,KAAK,CAAC;IACN,GAAG,EAAE,gBAAgB;IACrB,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAA;QAC3B,MAAM,aAAa,GAAG,CAAC,OAAmC,EAAqB,EAAE,CAAC,CAAC;YAClF,GAAG,KAAK;YACR,GAAG,OAAO;YACV,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,GAAG;YACvC,WAAW,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,eAAe;gBACnB,OAAO,aAAa,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAA;YAE3D,KAAK,qBAAqB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/session-stats/plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roj-ai/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"type-check": "tsc --noEmit"
|
|
136
136
|
},
|
|
137
137
|
"dependencies": {
|
|
138
|
-
"@roj-ai/transport": "^0.1.
|
|
138
|
+
"@roj-ai/transport": "^0.1.21",
|
|
139
139
|
"@hono/zod-validator": "0.7.6",
|
|
140
140
|
"hono": "4.12.5",
|
|
141
141
|
"ignore": "7.0.5",
|
package/src/core/agents/agent.ts
CHANGED
|
@@ -420,7 +420,7 @@ export class Agent {
|
|
|
420
420
|
...pendingToolResultMessages,
|
|
421
421
|
]
|
|
422
422
|
const messages = [...baseMessages, ...extraMessages]
|
|
423
|
-
const cachedMessages = applyCacheBreakpoint(messages, extraMessages.length, this.config.cacheTtl)
|
|
423
|
+
const cachedMessages = applyCacheBreakpoint(messages, extraMessages.length, this.config.cacheTtl, agentState.preamble.length)
|
|
424
424
|
|
|
425
425
|
const request: InferenceRequest = {
|
|
426
426
|
model: this.config.model,
|
|
@@ -429,13 +429,28 @@ export class Agent {
|
|
|
429
429
|
tools: this.tools.size > 0 ? [...this.tools.values()] : undefined,
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
-
|
|
432
|
+
const result = await this.llmProvider.inference(request, {
|
|
433
433
|
sessionId: this.store.sessionId,
|
|
434
434
|
agentId: this.id,
|
|
435
435
|
signal: this.abortController.signal,
|
|
436
436
|
fileStore: this.fileStore,
|
|
437
437
|
providers: this.llmProviders,
|
|
438
438
|
})
|
|
439
|
+
|
|
440
|
+
// Auxiliary calls don't go through emitInferenceCompleted (that event mutates
|
|
441
|
+
// conversation state), so without this their tokens/cost would be billed but
|
|
442
|
+
// never show up in session stats or metadata. Emit a stats-only event instead.
|
|
443
|
+
if (result.ok) {
|
|
444
|
+
await this.store.emit(withSessionId(
|
|
445
|
+
this.store.sessionId,
|
|
446
|
+
llmEvents.create('auxiliary_inference_completed', {
|
|
447
|
+
agentId: this.id,
|
|
448
|
+
metrics: result.value.metrics,
|
|
449
|
+
}),
|
|
450
|
+
))
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return result
|
|
439
454
|
}
|
|
440
455
|
|
|
441
456
|
// ============================================================================
|
|
@@ -549,6 +564,7 @@ export class Agent {
|
|
|
549
564
|
messages,
|
|
550
565
|
ephemeralParts.length > 0 ? 1 : 0,
|
|
551
566
|
this.config.cacheTtl,
|
|
567
|
+
agentState.preamble.length,
|
|
552
568
|
)
|
|
553
569
|
|
|
554
570
|
// 5. LLM inference (with retry)
|
|
@@ -23,6 +23,16 @@ export const contextEvents = createEventsFactory({
|
|
|
23
23
|
context_compacted: z4.object({
|
|
24
24
|
agentId: agentIdSchema,
|
|
25
25
|
compactedContent: z4.string(),
|
|
26
|
+
/**
|
|
27
|
+
* Display-only snapshot of the messages that were summarized away (the
|
|
28
|
+
* "input" of the compaction). Not used for conversation reconstruction —
|
|
29
|
+
* that's driven by {@link newConversationHistory}. Optional for backward
|
|
30
|
+
* compatibility with events emitted before this field existed.
|
|
31
|
+
*/
|
|
32
|
+
originalMessages: z4.array(z4.object({
|
|
33
|
+
role: z4.enum(['user', 'assistant', 'system']),
|
|
34
|
+
content: z4.string(),
|
|
35
|
+
})).optional(),
|
|
26
36
|
newConversationHistory: z4.array(z4.object({
|
|
27
37
|
role: z4.enum(['user', 'assistant', 'system']),
|
|
28
38
|
content: z4.string(),
|
|
@@ -198,7 +198,9 @@ export abstract class BaseEventStore implements EventStore {
|
|
|
198
198
|
metrics.totalEvents += 1
|
|
199
199
|
break
|
|
200
200
|
|
|
201
|
+
// Both normal turns and side-channel calls (e.g. compaction) are billed.
|
|
201
202
|
case 'inference_completed':
|
|
203
|
+
case 'auxiliary_inference_completed':
|
|
202
204
|
if (event.metrics) {
|
|
203
205
|
metrics.totalTokens += event.metrics.totalTokens ?? 0
|
|
204
206
|
metrics.inputTokens = (metrics.inputTokens ?? 0) + (event.metrics.promptTokens ?? 0)
|
|
@@ -36,7 +36,9 @@ export function computeMetricsFromEvents(events: DomainEvent[]): SessionMetadata
|
|
|
36
36
|
metrics.totalAgents++
|
|
37
37
|
break
|
|
38
38
|
|
|
39
|
+
// Both normal turns and side-channel calls (e.g. compaction) are billed.
|
|
39
40
|
case 'inference_completed':
|
|
41
|
+
case 'auxiliary_inference_completed':
|
|
40
42
|
if (event.metrics) {
|
|
41
43
|
metrics.totalLLMCalls++
|
|
42
44
|
metrics.totalTokens += event.metrics.totalTokens ?? 0
|
|
@@ -400,6 +400,40 @@ describe('AnthropicProvider buildHttpRequest cache placement', () => {
|
|
|
400
400
|
expect(last.content[1].cache_control).toBeUndefined()
|
|
401
401
|
})
|
|
402
402
|
|
|
403
|
+
test('stable prefix + tail: TWO cache_control blocks survive into the HTTP body', async () => {
|
|
404
|
+
// Mirrors the agent flow: an immutable preamble followed by a churning
|
|
405
|
+
// conversation tail. applyCacheBreakpoint with cachedPrefixCount marks
|
|
406
|
+
// BOTH the last preamble message and the tail — both must reach the wire.
|
|
407
|
+
// Roles alternate so mergeConsecutiveMessages doesn't fold them together.
|
|
408
|
+
const messages = applyCacheBreakpoint(
|
|
409
|
+
[
|
|
410
|
+
{ role: 'user', content: 'preamble part A' },
|
|
411
|
+
{ role: 'assistant', content: 'preamble part B' }, // last preamble msg → prefix breakpoint
|
|
412
|
+
{ role: 'user', content: 'conversation turn' },
|
|
413
|
+
{ role: 'assistant', content: 'tail reply' }, // tail breakpoint
|
|
414
|
+
],
|
|
415
|
+
0, // no uncached suffix → tailIdx = 3
|
|
416
|
+
undefined,
|
|
417
|
+
2, // cachedPrefixCount → prefixIdx = 1
|
|
418
|
+
)
|
|
419
|
+
|
|
420
|
+
const http = await createProvider().buildHttpRequest(buildRequest(messages))
|
|
421
|
+
const msgs = getBodyMessages(http.body)
|
|
422
|
+
|
|
423
|
+
expect(msgs.length).toBe(4)
|
|
424
|
+
// Prefix breakpoint on the last preamble message
|
|
425
|
+
const prefix = msgs[1]
|
|
426
|
+
expect(prefix.role).toBe('assistant')
|
|
427
|
+
expect(prefix.content[prefix.content.length - 1].cache_control).toEqual({ type: 'ephemeral' })
|
|
428
|
+
// Tail breakpoint on the final message
|
|
429
|
+
const tail = msgs[3]
|
|
430
|
+
expect(tail.role).toBe('assistant')
|
|
431
|
+
expect(tail.content[tail.content.length - 1].cache_control).toEqual({ type: 'ephemeral' })
|
|
432
|
+
// Messages between the two breakpoints stay uncached
|
|
433
|
+
expect(msgs[0].content[msgs[0].content.length - 1].cache_control).toBeUndefined()
|
|
434
|
+
expect(msgs[2].content[msgs[2].content.length - 1].cache_control).toBeUndefined()
|
|
435
|
+
})
|
|
436
|
+
|
|
403
437
|
test('no flag on any message: only system prompt has cache_control', async () => {
|
|
404
438
|
const http = await createProvider().buildHttpRequest(buildRequest([
|
|
405
439
|
{ role: 'user', content: 'What is 2+2?' },
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
|
+
import type { LLMMessage } from '~/core/agents/state.js'
|
|
3
|
+
import { applyCacheBreakpoint } from './cache-breakpoints.js'
|
|
4
|
+
|
|
5
|
+
const userMessages = (count: number): LLMMessage[] =>
|
|
6
|
+
Array.from({ length: count }, (_, i) => ({ role: 'user', content: `m${i}` }))
|
|
7
|
+
|
|
8
|
+
const cachedIndices = (messages: LLMMessage[]): number[] =>
|
|
9
|
+
messages.flatMap((m, i) => ('cacheControl' in m && m.cacheControl ? [i] : []))
|
|
10
|
+
|
|
11
|
+
describe('applyCacheBreakpoint', () => {
|
|
12
|
+
test('cachedPrefixCount = 0 → single tail breakpoint only (unchanged behaviour)', () => {
|
|
13
|
+
const messages = userMessages(5)
|
|
14
|
+
const result = applyCacheBreakpoint(messages, 1)
|
|
15
|
+
// tail = length - 1 - suffix = 5 - 1 - 1 = 3
|
|
16
|
+
expect(cachedIndices(result)).toEqual([3])
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('cachedPrefixCount > 0 → two breakpoints: prefix end and tail', () => {
|
|
20
|
+
const messages = userMessages(10)
|
|
21
|
+
const result = applyCacheBreakpoint(messages, 1, undefined, 3)
|
|
22
|
+
// prefix = 3 - 1 = 2, tail = 10 - 1 - 1 = 8
|
|
23
|
+
expect(cachedIndices(result)).toEqual([2, 8])
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
test('prefixIdx === tailIdx → only one breakpoint, no duplicate', () => {
|
|
27
|
+
// preamble is the whole list, no suffix: tail = 3 - 1 - 0 = 2, prefix = 3 - 1 = 2
|
|
28
|
+
const messages = userMessages(3)
|
|
29
|
+
const result = applyCacheBreakpoint(messages, 0, undefined, 3)
|
|
30
|
+
expect(cachedIndices(result)).toEqual([2])
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
test('cachedPrefixCount larger than messages.length → out-of-range prefix ignored, tail still applied', () => {
|
|
34
|
+
const messages = userMessages(4)
|
|
35
|
+
const result = applyCacheBreakpoint(messages, 0, undefined, 99)
|
|
36
|
+
// prefix = 98 (out of range, ignored), tail = 4 - 1 - 0 = 3
|
|
37
|
+
expect(cachedIndices(result)).toEqual([3])
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
test('ttl is propagated onto the marked messages', () => {
|
|
41
|
+
const messages = userMessages(6)
|
|
42
|
+
const result = applyCacheBreakpoint(messages, 0, '1h', 2)
|
|
43
|
+
// prefix = 1, tail = 5
|
|
44
|
+
for (const idx of [1, 5]) {
|
|
45
|
+
const m = result[idx]
|
|
46
|
+
expect('cacheControl' in m && m.cacheControl).toEqual({ type: 'ephemeral', ttl: '1h' })
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
test('does not mutate the input array', () => {
|
|
51
|
+
const messages = userMessages(5)
|
|
52
|
+
applyCacheBreakpoint(messages, 0, undefined, 2)
|
|
53
|
+
expect(cachedIndices(messages)).toEqual([])
|
|
54
|
+
})
|
|
55
|
+
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LLMMessage, LLMMessageCacheControl } from '~/core/agents/state.js'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Mark the prompt cache
|
|
4
|
+
* Mark the prompt cache breakpoints on a message list.
|
|
5
5
|
*
|
|
6
6
|
* Flag-based: the target message gets a `cacheControl` marker. Providers that
|
|
7
7
|
* support ephemeral prompt caching (anthropic, openrouter) react to the flag
|
|
@@ -10,9 +10,23 @@ import type { LLMMessage, LLMMessageCacheControl } from '~/core/agents/state.js'
|
|
|
10
10
|
* (text / tool_use / tool_result / image). This matches the API semantics
|
|
11
11
|
* "cache the prefix up to and including this block".
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* Up to two breakpoints are set:
|
|
14
|
+
*
|
|
15
|
+
* 1. **Tail breakpoint** at `messages.length - 1 - uncachedSuffixCount`. The
|
|
16
|
+
* suffix is the tail of messages that must remain fresh (e.g. ephemeral
|
|
17
|
+
* session context rebuilt each inference).
|
|
18
|
+
*
|
|
19
|
+
* 2. **Stable prefix breakpoint** at `cachedPrefixCount - 1` (the last preamble
|
|
20
|
+
* message), set only when `cachedPrefixCount > 0`. The preamble is byte-
|
|
21
|
+
* identical on every call, but the prefix before the tail breakpoint churns
|
|
22
|
+
* turn-to-turn for compacting agents (regenerated summary, sliding recent
|
|
23
|
+
* window), so the tail breakpoint never produces a stable cache entry for
|
|
24
|
+
* the large immutable preamble. Pinning a second breakpoint at the end of
|
|
25
|
+
* the preamble lets Anthropic cache that prefix once and read it at 0.1× on
|
|
26
|
+
* every inference AND compaction call. Anthropic allows up to 4 breakpoints
|
|
27
|
+
* and matches the longest cached prefix, so the two coexist.
|
|
28
|
+
*
|
|
29
|
+
* If the prefix and tail indices coincide, only one breakpoint is set.
|
|
16
30
|
*
|
|
17
31
|
* `ttl` opts into Anthropic's 1-hour cache tier (write cost 2× input, read
|
|
18
32
|
* still 0.1×). Useful for long-lived agents where the default 5-minute TTL
|
|
@@ -22,26 +36,30 @@ export function applyCacheBreakpoint(
|
|
|
22
36
|
messages: LLMMessage[],
|
|
23
37
|
uncachedSuffixCount: number,
|
|
24
38
|
ttl?: '5m' | '1h',
|
|
39
|
+
cachedPrefixCount = 0,
|
|
25
40
|
): LLMMessage[] {
|
|
26
|
-
const idx = messages.length - 1 - uncachedSuffixCount
|
|
27
|
-
if (idx < 0) return messages
|
|
28
|
-
|
|
29
41
|
const cacheControl: LLMMessageCacheControl = ttl ? { type: 'ephemeral', ttl } : { type: 'ephemeral' }
|
|
30
|
-
const target = messages[idx]
|
|
31
42
|
const result = [...messages]
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
result[idx] = { ...target, cacheControl }
|
|
44
|
-
break
|
|
43
|
+
|
|
44
|
+
const mark = (idx: number) => {
|
|
45
|
+
if (idx < 0 || idx >= result.length) return
|
|
46
|
+
const target = result[idx]
|
|
47
|
+
switch (target.role) {
|
|
48
|
+
case 'user':
|
|
49
|
+
case 'assistant':
|
|
50
|
+
case 'system':
|
|
51
|
+
case 'tool':
|
|
52
|
+
result[idx] = { ...target, cacheControl }
|
|
53
|
+
}
|
|
45
54
|
}
|
|
55
|
+
|
|
56
|
+
const tailIdx = messages.length - 1 - uncachedSuffixCount
|
|
57
|
+
// Stable prefix breakpoint at the last preamble message. Pins a cache entry
|
|
58
|
+
// that survives turn-to-turn churn in the conversation tail (regenerated
|
|
59
|
+
// summary, sliding recent window), so the immutable preamble is read at 0.1×
|
|
60
|
+
// on every inference AND compaction call instead of being re-billed each turn.
|
|
61
|
+
const prefixIdx = cachedPrefixCount - 1
|
|
62
|
+
if (prefixIdx !== tailIdx) mark(prefixIdx)
|
|
63
|
+
mark(tailIdx)
|
|
46
64
|
return result
|
|
47
65
|
}
|