@roj-ai/sdk 0.1.19 → 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.
Files changed (93) hide show
  1. package/dist/core/agents/agent.d.ts.map +1 -1
  2. package/dist/core/agents/agent.js +13 -3
  3. package/dist/core/agents/agent.js.map +1 -1
  4. package/dist/core/context/state.d.ts +8 -0
  5. package/dist/core/context/state.d.ts.map +1 -1
  6. package/dist/core/context/state.js +10 -0
  7. package/dist/core/context/state.js.map +1 -1
  8. package/dist/core/events/base-event-store.d.ts.map +1 -1
  9. package/dist/core/events/base-event-store.js +2 -0
  10. package/dist/core/events/base-event-store.js.map +1 -1
  11. package/dist/core/events/metadata-utils.d.ts.map +1 -1
  12. package/dist/core/events/metadata-utils.js +2 -0
  13. package/dist/core/events/metadata-utils.js.map +1 -1
  14. package/dist/core/llm/anthropic.test.js +27 -0
  15. package/dist/core/llm/anthropic.test.js.map +1 -1
  16. package/dist/core/llm/cache-breakpoints.d.ts +19 -5
  17. package/dist/core/llm/cache-breakpoints.d.ts.map +1 -1
  18. package/dist/core/llm/cache-breakpoints.js +40 -23
  19. package/dist/core/llm/cache-breakpoints.js.map +1 -1
  20. package/dist/core/llm/cache-breakpoints.test.d.ts +2 -0
  21. package/dist/core/llm/cache-breakpoints.test.d.ts.map +1 -0
  22. package/dist/core/llm/cache-breakpoints.test.js +45 -0
  23. package/dist/core/llm/cache-breakpoints.test.js.map +1 -0
  24. package/dist/core/llm/state.d.ts +22 -0
  25. package/dist/core/llm/state.d.ts.map +1 -1
  26. package/dist/core/llm/state.js +23 -11
  27. package/dist/core/llm/state.js.map +1 -1
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/lib/mime.d.ts +1 -1
  33. package/dist/lib/mime.d.ts.map +1 -1
  34. package/dist/lib/mime.js +7 -4
  35. package/dist/lib/mime.js.map +1 -1
  36. package/dist/plugins/agents/plugin.d.ts.map +1 -1
  37. package/dist/plugins/agents/plugin.js +7 -1
  38. package/dist/plugins/agents/plugin.js.map +1 -1
  39. package/dist/plugins/context-compact/context-compact.integration.test.js +54 -0
  40. package/dist/plugins/context-compact/context-compact.integration.test.js.map +1 -1
  41. package/dist/plugins/context-compact/context-compactor.d.ts +2 -0
  42. package/dist/plugins/context-compact/context-compactor.d.ts.map +1 -1
  43. package/dist/plugins/context-compact/context-compactor.js +29 -0
  44. package/dist/plugins/context-compact/context-compactor.js.map +1 -1
  45. package/dist/plugins/context-compact/context-compactor.test.js +6 -0
  46. package/dist/plugins/context-compact/context-compactor.test.js.map +1 -1
  47. package/dist/plugins/limits-guard/config.d.ts +30 -0
  48. package/dist/plugins/limits-guard/config.d.ts.map +1 -1
  49. package/dist/plugins/limits-guard/index.d.ts +3 -3
  50. package/dist/plugins/limits-guard/index.d.ts.map +1 -1
  51. package/dist/plugins/limits-guard/index.js +1 -1
  52. package/dist/plugins/limits-guard/index.js.map +1 -1
  53. package/dist/plugins/limits-guard/limit-guard.d.ts +27 -1
  54. package/dist/plugins/limits-guard/limit-guard.d.ts.map +1 -1
  55. package/dist/plugins/limits-guard/limit-guard.js +67 -0
  56. package/dist/plugins/limits-guard/limit-guard.js.map +1 -1
  57. package/dist/plugins/limits-guard/limit-guard.test.js +65 -1
  58. package/dist/plugins/limits-guard/limit-guard.test.js.map +1 -1
  59. package/dist/plugins/limits-guard/limits-guard.integration.test.js +295 -1
  60. package/dist/plugins/limits-guard/limits-guard.integration.test.js.map +1 -1
  61. package/dist/plugins/limits-guard/plugin.d.ts +23 -2
  62. package/dist/plugins/limits-guard/plugin.d.ts.map +1 -1
  63. package/dist/plugins/limits-guard/plugin.js +107 -2
  64. package/dist/plugins/limits-guard/plugin.js.map +1 -1
  65. package/dist/plugins/mailbox/plugin.d.ts.map +1 -1
  66. package/dist/plugins/mailbox/plugin.js +18 -0
  67. package/dist/plugins/mailbox/plugin.js.map +1 -1
  68. package/dist/plugins/session-stats/plugin.d.ts.map +1 -1
  69. package/dist/plugins/session-stats/plugin.js +5 -1
  70. package/dist/plugins/session-stats/plugin.js.map +1 -1
  71. package/package.json +2 -2
  72. package/src/core/agents/agent.ts +18 -2
  73. package/src/core/context/state.ts +10 -0
  74. package/src/core/events/base-event-store.ts +2 -0
  75. package/src/core/events/metadata-utils.ts +2 -0
  76. package/src/core/llm/anthropic.test.ts +34 -0
  77. package/src/core/llm/cache-breakpoints.test.ts +55 -0
  78. package/src/core/llm/cache-breakpoints.ts +39 -21
  79. package/src/core/llm/state.ts +25 -11
  80. package/src/index.ts +3 -3
  81. package/src/lib/mime.ts +7 -4
  82. package/src/plugins/agents/plugin.ts +7 -1
  83. package/src/plugins/context-compact/context-compact.integration.test.ts +62 -0
  84. package/src/plugins/context-compact/context-compactor.test.ts +6 -0
  85. package/src/plugins/context-compact/context-compactor.ts +31 -0
  86. package/src/plugins/limits-guard/config.ts +35 -0
  87. package/src/plugins/limits-guard/index.ts +3 -3
  88. package/src/plugins/limits-guard/limit-guard.test.ts +80 -1
  89. package/src/plugins/limits-guard/limit-guard.ts +98 -1
  90. package/src/plugins/limits-guard/limits-guard.integration.test.ts +331 -1
  91. package/src/plugins/limits-guard/plugin.ts +153 -3
  92. package/src/plugins/mailbox/plugin.ts +18 -0
  93. 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":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,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;AAClD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAEN,WAAW,EACX,WAAW,EACX,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,GACpB,MAAM,kBAAkB,CAAA;AAyBzB,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAkB,EAAE,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC;IAChB,iBAAiB,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAC;IACpB,eAAe,EAAE,CAAC;IAClB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,uBAAuB,EAAE,EAAE;IAC3B,oBAAoB,EAAE,EAAE;IACxB,oBAAoB,EAAE,EAAE;CACxB,CAAC,CAAA;AAEF,wFAAwF;AACxF,MAAM,UAAU,eAAe,CAAC,MAAmC;IAClE,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAA;QAC/B,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAA;IAClC,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAA0B,EAAE,OAAgB;IAC/E,OAAO,iBAAiB,CAA8B,YAAY,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,mBAAmB,EAAE,CAAA;AAC1H,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAC;IAC/C,MAAM,EAAE;QACP,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;YACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;QACF,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,aAAa;YACtB,gEAAgE;YAChE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACnC,oFAAoF;YACpF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;KACF;CACD,CAAC,CAAA;AAKF,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,eAAe,CACvB,YAA2I,EAC3I,OAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,OAAO,KAAK,CAAC,iBAAiB,EAAE,QAAQ;WACpC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,IAAI;WAC/D,SAAS,CAAA;AACd,CAAC;AAUD,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC,cAAc,CAAC;KAC3D,MAAM,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;KACxF,YAAY,EAAuB;KACnC,KAAK,CAAC;IACN,GAAG,EAAE,aAAa;IAClB,OAAO,EAAE,GAAgC,EAAE,CAAC,IAAI,GAAG,EAAE;IACrD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;QACvC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,eAAe,CAAC,CAAC,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;gBAEnD,uCAAuC;gBACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACpB,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;oBACpD,IAAI,cAAc,EAAE,CAAC;wBACpB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;4BAC7B,GAAG,cAAc;4BACjB,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,GAAG,CAAC;yBACvD,CAAC,CAAA;oBACH,CAAC;gBACF,CAAC;gBAED,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACxB,6DAA6D;gBAC7D,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;oBAC5F,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;oBACpB,CAAC,CAAC,IAAI,CAAA;gBACP,IAAI,CAAC,aAAa;oBAAE,OAAO,MAAM,CAAA;gBAEjC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,aAAwB,CAAC,CAAA;gBAC3D,IAAI,CAAC,cAAc;oBAAE,OAAO,MAAM,CAAA;gBAElC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,aAAwB,EAAE;oBACvC,GAAG,cAAc;oBACjB,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,GAAG,CAAC;iBACvD,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;gBACxD,IAAI,uBAAuB,GAAG,QAAQ,CAAC,oBAAoB,CAAA;gBAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;oBACnB,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;oBACtE,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;wBACxD,uBAAuB,GAAG,CAAC,GAAG,uBAAuB,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;oBACxE,CAAC;gBACF,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,cAAc,EAAE,QAAQ,CAAC,cAAc,GAAG,CAAC;oBAC3C,SAAS,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;oBACzD,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;oBAClE,oBAAoB,EAAE,uBAAuB;iBAC7C,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,+BAA+B,CAAC,CAAC,CAAC;gBACtC,oEAAoE;gBACpE,oEAAoE;gBACpE,qEAAqE;gBACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,SAAS,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;oBACzD,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;iBAClE,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,eAAe,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC;iBAC7C,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;gBACpE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,aAAa,EAAE,QAAQ,CAAC,aAAa,GAAG,CAAC;oBACzC,oBAAoB,EAAE,CAAC,GAAG,QAAQ,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;iBAChF,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,qFAAqF;gBACrF,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;gBAC/E,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE,GAAG,QAAQ,CAAC,uBAAuB,CAAA;gBAE3E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,uBAAuB,EAAE,YAAY;iBACrC,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,qFAAqF;gBACrF,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;gBAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;gBAE/D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,uBAAuB,EAAE;wBACxB,GAAG,QAAQ,CAAC,uBAAuB;wBACnC,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE;qBAC7E;iBACD,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,OAAO,MAAM,CAAA;gBAE5B,iEAAiE;gBACjE,iEAAiE;gBACjE,sEAAsE;gBACtE,sEAAsE;gBACtE,4BAA4B;gBAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5B,GAAG,QAAQ;oBACX,cAAc,EAAE,CAAC;oBACjB,aAAa,EAAE,CAAC;oBAChB,iBAAiB,EAAE,CAAC;oBACpB,iBAAiB,EAAE,CAAC;oBACpB,eAAe,EAAE,CAAC;oBAClB,uBAAuB,EAAE,EAAE;oBAC3B,oBAAoB,EAAE,EAAE;oBACxB,oBAAoB,EAAE,EAAE;iBACxB,CAAC,CAAA;gBACF,OAAO,SAAS,CAAA;YACjB,CAAC;YAED;gBACC,OAAO,MAAM,CAAA;QACf,CAAC;IACF,CAAC;CACD,CAAC;KACD,WAAW,EAAqB;KAChC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACtC,uEAAuE;IACvE,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IACrE,MAAM,UAAU,GAAG,WAAW,CAC7B,QAAQ,EACR,WAAW,CAAC,OAAO,EACnB,WAAW,CAAC,SAAS,EACrB,WAAW,CAAC,cAAc,EAC1B,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CACxC,CAAA;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC1D,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,KAAK,EAAE,UAAU,CAAC,YAAY;YAC9B,KAAK,EAAE,UAAU,CAAC,SAAS;YAC3B,OAAO,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC,CAAA;QACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,2BAA2B,UAAU,CAAC,MAAM,EAAE,EAAE,CAAA;IACnF,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACrD,MAAM,YAAY,GAAG,WAAW,CAC/B,YAAY,EACZ,aAAa,CAAC,cAAc,EAC5B,aAAa,CAAC,gBAAgB,EAC9B,aAAa,CAAC,cAAc,EAC5B,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,CACtD,CAAA;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1C,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC1D,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,YAAY,CAAC,YAAY;YAChC,KAAK,EAAE,YAAY,CAAC,SAAS;YAC7B,OAAO,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC,CAAC,CAAA;QACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,6BAA6B,YAAY,CAAC,MAAM,EAAE,EAAE,CAAA;IACvF,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAC;KACD,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACrC,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IACxE,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,oEAAoE;IACpE,iEAAiE;IACjE,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IACtD,MAAM,SAAS,GAAkB;QAChC,GAAG,QAAQ;QACX,cAAc,EAAE,QAAQ,CAAC,cAAc,GAAG,CAAC;QAC3C,oBAAoB,EAAE,YAAY;YACjC,CAAC,CAAC,QAAQ,CAAC,oBAAoB;YAC/B,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAA;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAEzD,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;IACxE,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,gFAAgF;IAChF,iFAAiF;IACjF,uDAAuD;IACvD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClF,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG;gBAC7C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,eAAe;gBACjD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAA;YAClB,KAAK,CAAC,IAAI,CACT,YAAY,QAAQ,gBAAgB,KAAK,CAAC,KAAK,gCAAgC,cAAc,CAAC,0BAA0B,KAAK;kBAC1H,eAAe,SAAS,IAAI;kBAC5B,gHAAgH,CACnH,CAAA;QACF,CAAC;IACF,CAAC;IAED,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,aAAa,GAAG,8BAA8B,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IACnF,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACT,6DAA6D,aAAa,kBAAkB;cACzF,gBAAgB,cAAc,CAAC,oBAAoB,KAAK;cACxD,qGAAqG,CACxG,CAAA;IACF,CAAC;IAED,sEAAsE;IACtE,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;IACxD,IAAI,UAAU,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CACT,kBAAkB,UAAU,CAAC,SAAS,WAAW,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,SAAS,IAAI;cACjG,mDAAmD,CACtD,CAAA;IACF,CAAC;IAED,wEAAwE;IACxE,MAAM,WAAW,GAAG,WAAW,CAC9B,QAAQ,EACR,cAAc,CAAC,OAAO,EACtB,cAAc,CAAC,SAAS,EACxB,cAAc,CAAC,cAAc,EAC7B,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CACxC,CAAA;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,OAAO,4DAA4D,CAAC,CAAA;IAClG,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC5D,MAAM,aAAa,GAAG,WAAW,CAChC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,EAChC,aAAa,CAAC,cAAc,EAC5B,aAAa,CAAC,gBAAgB,EAC9B,aAAa,CAAC,cAAc,EAC5B,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,EAAE,CACtD,CAAA;IACD,IAAI,aAAa,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,mBAAmB,aAAa,CAAC,OAAO,GAAG,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACpD,CAAC,CAAC;KACD,KAAK,EAAE,CAAA"}
@@ -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;;;;;;;;;;;GAmPjB,CAAC"}
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,kGAwDtB,CAAA"}
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
- case 'inference_completed': {
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":"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"}
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.19",
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.19",
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",
@@ -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
- return this.llmProvider.inference(request, {
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 breakpoint on a message list.
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
- * Target index is `messages.length - 1 - uncachedSuffixCount`. The suffix is
14
- * the tail of messages that must remain fresh (e.g. ephemeral session context
15
- * rebuilt each inference).
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
- switch (target.role) {
33
- case 'user':
34
- result[idx] = { ...target, cacheControl }
35
- break
36
- case 'assistant':
37
- result[idx] = { ...target, cacheControl }
38
- break
39
- case 'system':
40
- result[idx] = { ...target, cacheControl }
41
- break
42
- case 'tool':
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
  }