@openharness/core 0.4.0 → 0.4.2

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 (100) hide show
  1. package/README.md +116 -0
  2. package/dist/__tests__/agent-registry.test.d.ts +2 -0
  3. package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
  4. package/dist/__tests__/agent-registry.test.js +429 -0
  5. package/dist/__tests__/agent-registry.test.js.map +1 -0
  6. package/dist/__tests__/conversation.test.d.ts +2 -0
  7. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  8. package/dist/__tests__/conversation.test.js +127 -0
  9. package/dist/__tests__/conversation.test.js.map +1 -0
  10. package/dist/__tests__/messages.test.js +15 -2
  11. package/dist/__tests__/messages.test.js.map +1 -1
  12. package/dist/__tests__/middleware/compaction.test.d.ts +2 -0
  13. package/dist/__tests__/middleware/compaction.test.d.ts.map +1 -0
  14. package/dist/__tests__/middleware/compaction.test.js +163 -0
  15. package/dist/__tests__/middleware/compaction.test.js.map +1 -0
  16. package/dist/__tests__/middleware/hooks.test.d.ts +2 -0
  17. package/dist/__tests__/middleware/hooks.test.d.ts.map +1 -0
  18. package/dist/__tests__/middleware/hooks.test.js +97 -0
  19. package/dist/__tests__/middleware/hooks.test.js.map +1 -0
  20. package/dist/__tests__/middleware/persistence.test.d.ts +2 -0
  21. package/dist/__tests__/middleware/persistence.test.d.ts.map +1 -0
  22. package/dist/__tests__/middleware/persistence.test.js +70 -0
  23. package/dist/__tests__/middleware/persistence.test.js.map +1 -0
  24. package/dist/__tests__/middleware/retry.test.d.ts +2 -0
  25. package/dist/__tests__/middleware/retry.test.d.ts.map +1 -0
  26. package/dist/__tests__/middleware/retry.test.js +151 -0
  27. package/dist/__tests__/middleware/retry.test.js.map +1 -0
  28. package/dist/__tests__/middleware/turn-tracking.test.d.ts +2 -0
  29. package/dist/__tests__/middleware/turn-tracking.test.d.ts.map +1 -0
  30. package/dist/__tests__/middleware/turn-tracking.test.js +70 -0
  31. package/dist/__tests__/middleware/turn-tracking.test.js.map +1 -0
  32. package/dist/__tests__/runner.test.d.ts +2 -0
  33. package/dist/__tests__/runner.test.d.ts.map +1 -0
  34. package/dist/__tests__/runner.test.js +111 -0
  35. package/dist/__tests__/runner.test.js.map +1 -0
  36. package/dist/__tests__/stream.test.d.ts +2 -0
  37. package/dist/__tests__/stream.test.d.ts.map +1 -0
  38. package/dist/__tests__/stream.test.js +100 -0
  39. package/dist/__tests__/stream.test.js.map +1 -0
  40. package/dist/__tests__/ui-stream.test.js +105 -0
  41. package/dist/__tests__/ui-stream.test.js.map +1 -1
  42. package/dist/agent-registry.d.ts +90 -0
  43. package/dist/agent-registry.d.ts.map +1 -0
  44. package/dist/agent-registry.js +217 -0
  45. package/dist/agent-registry.js.map +1 -0
  46. package/dist/agent.d.ts +13 -0
  47. package/dist/agent.d.ts.map +1 -1
  48. package/dist/agent.js +186 -41
  49. package/dist/agent.js.map +1 -1
  50. package/dist/conversation.d.ts +46 -0
  51. package/dist/conversation.d.ts.map +1 -0
  52. package/dist/conversation.js +66 -0
  53. package/dist/conversation.js.map +1 -0
  54. package/dist/index.d.ts +9 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +14 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/middleware/compaction.d.ts +20 -0
  59. package/dist/middleware/compaction.d.ts.map +1 -0
  60. package/dist/middleware/compaction.js +73 -0
  61. package/dist/middleware/compaction.js.map +1 -0
  62. package/dist/middleware/hooks.d.ts +10 -0
  63. package/dist/middleware/hooks.d.ts.map +1 -0
  64. package/dist/middleware/hooks.js +36 -0
  65. package/dist/middleware/hooks.js.map +1 -0
  66. package/dist/middleware/index.d.ts +6 -0
  67. package/dist/middleware/index.d.ts.map +1 -0
  68. package/dist/middleware/index.js +6 -0
  69. package/dist/middleware/index.js.map +1 -0
  70. package/dist/middleware/persistence.d.ts +12 -0
  71. package/dist/middleware/persistence.d.ts.map +1 -0
  72. package/dist/middleware/persistence.js +15 -0
  73. package/dist/middleware/persistence.js.map +1 -0
  74. package/dist/middleware/retry.d.ts +8 -0
  75. package/dist/middleware/retry.d.ts.map +1 -0
  76. package/dist/middleware/retry.js +70 -0
  77. package/dist/middleware/retry.js.map +1 -0
  78. package/dist/middleware/turn-tracking.d.ts +7 -0
  79. package/dist/middleware/turn-tracking.d.ts.map +1 -0
  80. package/dist/middleware/turn-tracking.js +25 -0
  81. package/dist/middleware/turn-tracking.js.map +1 -0
  82. package/dist/runner.d.ts +23 -0
  83. package/dist/runner.d.ts.map +1 -0
  84. package/dist/runner.js +18 -0
  85. package/dist/runner.js.map +1 -0
  86. package/dist/session.d.ts.map +1 -1
  87. package/dist/session.js +7 -40
  88. package/dist/session.js.map +1 -1
  89. package/dist/stream.d.ts +12 -0
  90. package/dist/stream.d.ts.map +1 -0
  91. package/dist/stream.js +38 -0
  92. package/dist/stream.js.map +1 -0
  93. package/dist/ui-stream.d.ts.map +1 -1
  94. package/dist/ui-stream.js +13 -1
  95. package/dist/ui-stream.js.map +1 -1
  96. package/dist/utils.d.ts +8 -0
  97. package/dist/utils.d.ts.map +1 -0
  98. package/dist/utils.js +40 -0
  99. package/dist/utils.js.map +1 -0
  100. package/package.json +13 -2
package/dist/agent.js CHANGED
@@ -4,6 +4,7 @@ import { loadInstructions } from "./instructions.js";
4
4
  import { connectMCPServers, closeMCPClients, } from "./mcp.js";
5
5
  import { discoverSkills } from "./skills.js";
6
6
  import { createSkillTool } from "./tools/skill.js";
7
+ import { AgentRegistry, normalizeBackgroundConfig, } from "./agent-registry.js";
7
8
  // ── Agent ────────────────────────────────────────────────────────────
8
9
  export class Agent {
9
10
  name;
@@ -19,6 +20,10 @@ export class Agent {
19
20
  onSubagentEvent;
20
21
  /** Original subagent templates (stored so nested children can inherit them). */
21
22
  subagents;
23
+ /** Background config (stored so nested children can inherit it). */
24
+ subagentBackground;
25
+ /** Registry for background subagents. Only present when `subagentBackground` is configured. */
26
+ agentRegistry;
22
27
  /** Static tools provided at construction time. */
23
28
  tools;
24
29
  /** MCP server configs — connected lazily on first run. */
@@ -41,13 +46,28 @@ export class Agent {
41
46
  this.approve = options.approve;
42
47
  this.onSubagentEvent = options.onSubagentEvent;
43
48
  this.subagents = options.subagents;
49
+ this.subagentBackground = options.subagentBackground;
44
50
  this.mcpServerConfigs = options.mcpServers;
45
51
  this.skillsConfig = options.skills;
46
52
  // Merge the task tool into the toolset when subagents are provided and depth > 0
47
53
  if (options.subagents?.length && this.maxSubagentDepth > 0) {
54
+ const bgConfig = options.subagentBackground
55
+ ? normalizeBackgroundConfig(options.subagentBackground)
56
+ : undefined;
57
+ const registry = bgConfig ? new AgentRegistry(bgConfig) : undefined;
58
+ this.agentRegistry = registry;
48
59
  this.tools = {
49
60
  ...(options.tools ?? {}),
50
- task: createTaskTool(options.subagents, this.maxSubagentDepth, this.onSubagentEvent),
61
+ task: createTaskTool(options.subagents, this.maxSubagentDepth, this.onSubagentEvent, registry),
62
+ ...(registry && bgConfig.tools.status
63
+ ? { agent_status: createStatusTool(registry) }
64
+ : {}),
65
+ ...(registry && bgConfig.tools.cancel
66
+ ? { agent_cancel: createCancelTool(registry) }
67
+ : {}),
68
+ ...(registry && bgConfig.tools.await
69
+ ? { agent_await: createAwaitTool(registry, bgConfig.tools.await) }
70
+ : {}),
51
71
  };
52
72
  }
53
73
  else {
@@ -58,6 +78,9 @@ export class Agent {
58
78
  * Close all MCP server connections. Call this when the agent is no longer needed.
59
79
  */
60
80
  async close() {
81
+ if (this.agentRegistry) {
82
+ this.agentRegistry.cancelAll();
83
+ }
61
84
  if (this.mcpConnection) {
62
85
  await closeMCPClients(this.mcpConnection.clients);
63
86
  this.mcpConnection = null;
@@ -210,51 +233,74 @@ export class Agent {
210
233
  }
211
234
  }
212
235
  }
213
- // ── Subagent task tool ───────────────────────────────────────────────
214
- function createTaskTool(subagents, remainingDepth, onSubagentEvent) {
236
+ // ── Subagent tools ──────────────────────────────────────────────────
237
+ function createChildFromTemplate(template, remainingDepth, onSubagentEvent) {
238
+ const nextDepth = remainingDepth - 1;
239
+ const childOnSubagentEvent = onSubagentEvent
240
+ ? (childPath, event) => onSubagentEvent([template.name, ...childPath], event)
241
+ : undefined;
242
+ return new Agent({
243
+ name: template.name,
244
+ description: template.description,
245
+ model: template.model,
246
+ systemPrompt: template.systemPrompt,
247
+ tools: template.tools,
248
+ maxSteps: template.maxSteps,
249
+ temperature: template.temperature,
250
+ maxTokens: template.maxTokens,
251
+ instructions: template.instructions,
252
+ // No approve — subagents run autonomously
253
+ // Pass subagents + background config through when there is remaining depth
254
+ ...(nextDepth > 0 && template.subagents?.length
255
+ ? {
256
+ subagents: template.subagents,
257
+ maxSubagentDepth: nextDepth,
258
+ onSubagentEvent: childOnSubagentEvent,
259
+ subagentBackground: template.subagentBackground,
260
+ }
261
+ : {}),
262
+ });
263
+ }
264
+ function createTaskTool(subagents, remainingDepth, onSubagentEvent, registry) {
215
265
  const names = subagents.map((a) => a.name);
216
266
  const byName = new Map(subagents.map((a) => [a.name, a]));
217
267
  const listing = subagents.map((a) => `- ${a.name}: ${a.description ?? a.name}`).join("\n");
268
+ const descriptionLines = [
269
+ "Spawn a subagent to handle a task autonomously.",
270
+ "The subagent runs with its own tools, completes the work, and returns the result.",
271
+ "Launch multiple agents concurrently when possible by calling this tool multiple times in one response.",
272
+ ];
273
+ if (registry) {
274
+ descriptionLines.push("", "Set background=true to spawn the agent in the background and return immediately with an agent ID.", "Use agent_status, agent_await, or agent_cancel to manage background agents.");
275
+ }
276
+ descriptionLines.push("", "Available agents:", listing);
277
+ const baseSchema = z.object({
278
+ agent: z.enum(names).describe("Which agent to use"),
279
+ prompt: z.string().describe("Detailed task description for the subagent"),
280
+ });
281
+ const bgSchema = baseSchema.extend({
282
+ background: z
283
+ .boolean()
284
+ .optional()
285
+ .describe("If true, spawn in background and return immediately with an agent ID"),
286
+ });
287
+ const inputSchema = registry ? bgSchema : baseSchema;
218
288
  return tool({
219
- description: [
220
- "Spawn a subagent to handle a task autonomously.",
221
- "The subagent runs with its own tools, completes the work, and returns the result.",
222
- "Launch multiple agents concurrently when possible by calling this tool multiple times in one response.",
223
- "",
224
- "Available agents:",
225
- listing,
226
- ].join("\n"),
227
- inputSchema: z.object({
228
- agent: z.enum(names).describe("Which agent to use"),
229
- prompt: z.string().describe("Detailed task description for the subagent"),
230
- }),
231
- execute: async ({ agent: agentName, prompt }, { abortSignal }) => {
289
+ description: descriptionLines.join("\n"),
290
+ inputSchema,
291
+ execute: async (rawInput, { abortSignal }) => {
292
+ const { agent: agentName, prompt, background } = rawInput;
232
293
  const template = byName.get(agentName);
233
- // Bubble nested events up with the current agent prepended to the path
234
- const childOnSubagentEvent = onSubagentEvent
235
- ? (childPath, event) => onSubagentEvent([agentName, ...childPath], event)
236
- : undefined;
237
- const nextDepth = remainingDepth - 1;
238
- // Fresh agent instance for each task — no shared state
239
- const child = new Agent({
240
- name: template.name,
241
- model: template.model,
242
- systemPrompt: template.systemPrompt,
243
- tools: template.tools,
244
- maxSteps: template.maxSteps,
245
- temperature: template.temperature,
246
- maxTokens: template.maxTokens,
247
- instructions: template.instructions,
248
- // No approve — subagents run autonomously
249
- // Pass subagents through when there is remaining depth
250
- ...(nextDepth > 0 && template.subagents?.length
251
- ? {
252
- subagents: template.subagents,
253
- maxSubagentDepth: nextDepth,
254
- onSubagentEvent: childOnSubagentEvent,
255
- }
256
- : {}),
257
- });
294
+ const child = createChildFromTemplate(template, remainingDepth, onSubagentEvent);
295
+ // Background mode: spawn and return immediately
296
+ if (background && registry) {
297
+ const id = registry.spawn(agentName, child, prompt, {
298
+ signal: abortSignal,
299
+ onEvent: onSubagentEvent,
300
+ });
301
+ return `<background_spawn agent_id="${id}">\nAgent "${agentName}" spawned in background with id "${id}".\nUse agent_status, agent_await, or agent_cancel to manage it.\n</background_spawn>`;
302
+ }
303
+ // Foreground mode: run to completion
258
304
  let lastText = "";
259
305
  for await (const event of child.run([], prompt, { signal: abortSignal })) {
260
306
  onSubagentEvent?.([agentName], event);
@@ -262,10 +308,109 @@ function createTaskTool(subagents, remainingDepth, onSubagentEvent) {
262
308
  lastText = event.text;
263
309
  }
264
310
  }
311
+ await child.close();
265
312
  return `<task_result>\n${lastText || "(no output)"}\n</task_result>`;
266
313
  },
267
314
  });
268
315
  }
316
+ function createStatusTool(registry) {
317
+ return tool({
318
+ description: "Check the status of a background agent without blocking.",
319
+ inputSchema: z.object({
320
+ id: z.string().describe("The agent ID returned by a background task spawn"),
321
+ }),
322
+ execute: async ({ id }) => {
323
+ const status = registry.getStatus(id);
324
+ if (!status)
325
+ return `Agent "${id}" not found.`;
326
+ if (status.status === "done") {
327
+ return `<agent_status id="${id}" status="done">\n${status.result}\n</agent_status>`;
328
+ }
329
+ if (status.status === "failed") {
330
+ return `<agent_status id="${id}" status="failed" error="${status.error ?? "unknown"}" />`;
331
+ }
332
+ if (status.status === "cancelled") {
333
+ return `<agent_status id="${id}" status="cancelled" />`;
334
+ }
335
+ return `<agent_status id="${id}" status="running" />`;
336
+ },
337
+ });
338
+ }
339
+ function createCancelTool(registry) {
340
+ return tool({
341
+ description: "Cancel a running background agent.",
342
+ inputSchema: z.object({
343
+ id: z.string().describe("The agent ID to cancel"),
344
+ }),
345
+ execute: async ({ id }) => {
346
+ const cancelled = registry.cancel(id);
347
+ return cancelled
348
+ ? `Agent "${id}" cancelled.`
349
+ : `Agent "${id}" is not running (may have already completed or been cancelled).`;
350
+ },
351
+ });
352
+ }
353
+ function createAwaitTool(registry, modes) {
354
+ const modeDescriptions = {
355
+ all: '"all": Wait for all agents to succeed. Fails fast if any agent fails.',
356
+ allSettled: '"allSettled": Wait for all agents to finish. Returns both results and errors.',
357
+ any: '"any": Wait for the first agent to succeed. Only fails if all agents fail.',
358
+ race: '"race": Wait for the first agent to settle (succeed or fail).',
359
+ };
360
+ return tool({
361
+ description: [
362
+ "Wait for one or more background agents to complete.",
363
+ "",
364
+ "Modes:",
365
+ ...modes.map((m) => `- ${modeDescriptions[m]}`),
366
+ ].join("\n"),
367
+ inputSchema: z.object({
368
+ ids: z.array(z.string()).min(1).describe("Agent IDs to wait for"),
369
+ mode: z.enum(modes).describe("How to wait for agents"),
370
+ }),
371
+ execute: async ({ ids, mode }) => {
372
+ switch (mode) {
373
+ case "all": {
374
+ try {
375
+ const results = await registry.awaitAll(ids);
376
+ const entries = [...results.entries()].map(([id, result]) => `<agent id="${id}">\n${result}\n</agent>`);
377
+ return `<await_result mode="all">\n${entries.join("\n")}\n</await_result>`;
378
+ }
379
+ catch (e) {
380
+ const msg = e instanceof Error ? e.message : String(e);
381
+ return `<await_result mode="all" error="${msg}" />`;
382
+ }
383
+ }
384
+ case "allSettled": {
385
+ const results = await registry.awaitAllSettled(ids);
386
+ const entries = [...results.entries()].map(([id, r]) => {
387
+ if (r.status === "done") {
388
+ return `<agent id="${id}" status="done">\n${r.result}\n</agent>`;
389
+ }
390
+ return `<agent id="${id}" status="${r.status}" error="${r.error ?? "unknown"}" />`;
391
+ });
392
+ return `<await_result mode="allSettled">\n${entries.join("\n")}\n</await_result>`;
393
+ }
394
+ case "any": {
395
+ try {
396
+ const { id, result } = await registry.awaitAny(ids);
397
+ return `<await_result mode="any" winner="${id}">\n${result}\n</await_result>`;
398
+ }
399
+ catch {
400
+ return `<await_result mode="any" error="All agents failed." />`;
401
+ }
402
+ }
403
+ case "race": {
404
+ const settled = await registry.awaitRace(ids);
405
+ if (settled.error) {
406
+ return `<await_result mode="race" settled="${settled.id}" status="failed" error="${settled.error}" />`;
407
+ }
408
+ return `<await_result mode="race" settled="${settled.id}">\n${settled.result}\n</await_result>`;
409
+ }
410
+ }
411
+ },
412
+ });
413
+ }
269
414
  // ── Helpers ──────────────────────────────────────────────────────────
270
415
  function toTokenUsage(usage) {
271
416
  return {
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type ModelMessage } from "ai";
2
+ import type { Runner } from "./runner.js";
3
+ import type { SessionEvent, SessionStore } from "./session.js";
4
+ export interface ConversationOptions {
5
+ runner: Runner;
6
+ sessionId?: string;
7
+ store?: SessionStore;
8
+ }
9
+ /**
10
+ * Thin stateful wrapper over a composed Runner.
11
+ * Manages `messages` — updates from `done` events.
12
+ * No compaction/retry/hooks/turn logic — those are middleware concerns.
13
+ */
14
+ export declare class Conversation {
15
+ messages: ModelMessage[];
16
+ readonly sessionId: string;
17
+ private runner;
18
+ private store?;
19
+ constructor(options: ConversationOptions);
20
+ /**
21
+ * Send a message through the composed runner pipeline.
22
+ * Updates `this.messages` from `done` events automatically.
23
+ */
24
+ send(input: string | ModelMessage[], options?: {
25
+ signal?: AbortSignal;
26
+ }): AsyncGenerator<SessionEvent>;
27
+ /** Load messages from store. */
28
+ load(): Promise<boolean>;
29
+ /** Save messages to store. */
30
+ save(): Promise<void>;
31
+ /**
32
+ * Convert a send call into an AI SDK 5 UIMessage stream.
33
+ * Reuses the existing sessionEventsToUIStream function.
34
+ */
35
+ toUIMessageStream(input: string | ModelMessage[], options?: {
36
+ signal?: AbortSignal;
37
+ }): ReadableStream;
38
+ /**
39
+ * Convert a send call into an HTTP Response with SSE encoding.
40
+ * Ready to return from any HTTP handler (Next.js, Express, etc.).
41
+ */
42
+ toResponse(input: string | ModelMessage[], init?: ResponseInit & {
43
+ signal?: AbortSignal;
44
+ }): Response;
45
+ }
46
+ //# sourceMappingURL=conversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAC,CAAe;gBAEjB,OAAO,EAAE,mBAAmB;IAMxC;;;OAGG;IACI,IAAI,CACT,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,EAC9B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,cAAc,CAAC,YAAY,CAAC;IAS/B,gCAAgC;IAC1B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAU9B,8BAA8B;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;;OAGG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,EAC9B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,cAAc;IAIjB;;;OAGG;IACH,UAAU,CACR,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,EAC9B,IAAI,CAAC,EAAE,YAAY,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC7C,QAAQ;CAOZ"}
@@ -0,0 +1,66 @@
1
+ import { createUIMessageStreamResponse } from "ai";
2
+ import { sessionEventsToUIStream } from "./ui-stream.js";
3
+ /**
4
+ * Thin stateful wrapper over a composed Runner.
5
+ * Manages `messages` — updates from `done` events.
6
+ * No compaction/retry/hooks/turn logic — those are middleware concerns.
7
+ */
8
+ export class Conversation {
9
+ messages = [];
10
+ sessionId;
11
+ runner;
12
+ store;
13
+ constructor(options) {
14
+ this.runner = options.runner;
15
+ this.sessionId = options.sessionId ?? crypto.randomUUID();
16
+ this.store = options.store;
17
+ }
18
+ /**
19
+ * Send a message through the composed runner pipeline.
20
+ * Updates `this.messages` from `done` events automatically.
21
+ */
22
+ async *send(input, options) {
23
+ for await (const event of this.runner(this.messages, input, options)) {
24
+ if (event.type === "done") {
25
+ this.messages = event.messages;
26
+ }
27
+ yield event;
28
+ }
29
+ }
30
+ /** Load messages from store. */
31
+ async load() {
32
+ if (!this.store)
33
+ return false;
34
+ const loaded = await this.store.load(this.sessionId);
35
+ if (loaded) {
36
+ this.messages = loaded;
37
+ return true;
38
+ }
39
+ return false;
40
+ }
41
+ /** Save messages to store. */
42
+ async save() {
43
+ if (!this.store)
44
+ return;
45
+ await this.store.save(this.sessionId, this.messages);
46
+ }
47
+ /**
48
+ * Convert a send call into an AI SDK 5 UIMessage stream.
49
+ * Reuses the existing sessionEventsToUIStream function.
50
+ */
51
+ toUIMessageStream(input, options) {
52
+ return sessionEventsToUIStream(this.send(input, options), options);
53
+ }
54
+ /**
55
+ * Convert a send call into an HTTP Response with SSE encoding.
56
+ * Ready to return from any HTTP handler (Next.js, Express, etc.).
57
+ */
58
+ toResponse(input, init) {
59
+ const { signal, ...responseInit } = init ?? {};
60
+ return createUIMessageStreamResponse({
61
+ stream: this.toUIMessageStream(input, { signal }),
62
+ ...responseInit,
63
+ });
64
+ }
65
+ }
66
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAqB,MAAM,IAAI,CAAC;AAGtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAQzD;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACvB,QAAQ,GAAmB,EAAE,CAAC;IACrB,SAAS,CAAS;IAEnB,MAAM,CAAS;IACf,KAAK,CAAgB;IAE7B,YAAY,OAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,IAAI,CACT,KAA8B,EAC9B,OAAkC;QAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAiC,EAAE,CAAC;YACrG,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YACjC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,iBAAiB,CACf,KAA8B,EAC9B,OAAkC;QAElC,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,UAAU,CACR,KAA8B,EAC9B,IAA8C;QAE9C,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/C,OAAO,6BAA6B,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC;YACjD,GAAG,YAAY;SAChB,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { Agent, ToolDeniedError, type AgentEvent, type TokenUsage, type ToolCallInfo, type ApproveFn, type SubagentEventFn, } from "./agent.js";
2
+ export { AgentRegistry, type SubagentBackground, type AwaitMode, type AgentStatus, type SettledResult, type BackgroundAgentConfig, } from "./agent-registry.js";
2
3
  export { connectMCPServers, closeMCPClients, type MCPServerConfig, type MCPConnection, type StdioMCPServer, type HttpMCPServer, type SseMCPServer, } from "./mcp.js";
3
4
  export { Session, DefaultCompactionStrategy, type SessionEvent, type SessionLifecycleEvent, type SessionOptions, type CompactionStrategy, type CompactionContext, type CompactionResult, type RetryConfig, type SessionHooks, type TurnInfo, type SessionStore, type CompactionCheckInfo, } from "./session.js";
4
5
  export { discoverSkills, scanSkillFiles, type SkillInfo, type SkillsConfig, } from "./skills.js";
@@ -8,4 +9,12 @@ export { type OHDataTypes, type OHMetadata, type OHUIMessage, } from "./types/ui
8
9
  export { type OHDataPart, type OHSubagentPart, type OHCompactionPart, type OHRetryPart, type OHSessionLifecyclePart, isOHDataPart, isSubagentEvent, isCompactionEvent, isRetryEvent, isSessionLifecycleEvent, formatSSE, formatTextDelta, formatReasoningDelta, formatDataPart, formatToolStart, formatToolResult, formatToolError, formatStepStart, formatStepFinish, formatFinishMessage, formatDone, } from "./types/stream-parts.js";
9
10
  export { extractUserInput } from "./messages.js";
10
11
  export { sessionEventsToUIStream } from "./ui-stream.js";
12
+ export { type Runner, type Middleware, pipe, apply, toRunner } from "./runner.js";
13
+ export { tap, filter, map, takeUntil } from "./stream.js";
14
+ export { withRetry } from "./middleware/retry.js";
15
+ export { withCompaction, type CompactionConfig } from "./middleware/compaction.js";
16
+ export { withTurnTracking } from "./middleware/turn-tracking.js";
17
+ export { withPersistence, type PersistenceConfig } from "./middleware/persistence.js";
18
+ export { withHooks } from "./middleware/hooks.js";
19
+ export { Conversation, type ConversationOptions } from "./conversation.js";
11
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EACL,eAAe,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,OAAO,EACP,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIvE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAG3B,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EAGvB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EACL,eAAe,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,OAAO,EACP,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIvE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAG3B,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EAGvB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAIzD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIlF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  // ── Agent ────────────────────────────────────────────────────────────
2
2
  export { Agent, ToolDeniedError, } from "./agent.js";
3
+ // ── Agent Registry (background subagents) ───────────────────────────
4
+ export { AgentRegistry, } from "./agent-registry.js";
3
5
  // ── MCP ─────────────────────────────────────────────────────────────
4
6
  export { connectMCPServers, closeMCPClients, } from "./mcp.js";
5
7
  // ── Session ─────────────────────────────────────────────────────────
@@ -19,4 +21,16 @@ formatSSE, formatTextDelta, formatReasoningDelta, formatDataPart, formatToolStar
19
21
  export { extractUserInput } from "./messages.js";
20
22
  // ── UI Stream ───────────────────────────────────────────────────────
21
23
  export { sessionEventsToUIStream } from "./ui-stream.js";
24
+ // ── Runner & Middleware ─────────────────────────────────────────────
25
+ export { pipe, apply, toRunner } from "./runner.js";
26
+ // ── Stream Combinators ──────────────────────────────────────────────
27
+ export { tap, filter, map, takeUntil } from "./stream.js";
28
+ // ── Middleware ──────────────────────────────────────────────────────
29
+ export { withRetry } from "./middleware/retry.js";
30
+ export { withCompaction } from "./middleware/compaction.js";
31
+ export { withTurnTracking } from "./middleware/turn-tracking.js";
32
+ export { withPersistence } from "./middleware/persistence.js";
33
+ export { withHooks } from "./middleware/hooks.js";
34
+ // ── Conversation ───────────────────────────────────────────────────
35
+ export { Conversation } from "./conversation.js";
22
36
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,EACL,KAAK,EACL,eAAe,GAMhB,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AAEvE,OAAO,EACL,iBAAiB,EACjB,eAAe,GAMhB,MAAM,UAAU,CAAC;AAElB,uEAAuE;AAEvE,OAAO,EACL,OAAO,EACP,yBAAyB,GAY1B,MAAM,cAAc,CAAC;AAEtB,uEAAuE;AAEvE,OAAO,EACL,cAAc,EACd,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,uEAAuE;AAEvE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAUvE,uEAAuE;AAEvE,OAAO;AAQL,cAAc;AACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,uBAAuB;AAEvB,iBAAiB;AACjB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC,wEAAwE;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,uEAAuE;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,EACL,KAAK,EACL,eAAe,GAMhB,MAAM,YAAY,CAAC;AAEpB,uEAAuE;AAEvE,OAAO,EACL,aAAa,GAMd,MAAM,qBAAqB,CAAC;AAE7B,uEAAuE;AAEvE,OAAO,EACL,iBAAiB,EACjB,eAAe,GAMhB,MAAM,UAAU,CAAC;AAElB,uEAAuE;AAEvE,OAAO,EACL,OAAO,EACP,yBAAyB,GAY1B,MAAM,cAAc,CAAC;AAEtB,uEAAuE;AAEvE,OAAO,EACL,cAAc,EACd,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,uEAAuE;AAEvE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAUvE,uEAAuE;AAEvE,OAAO;AAQL,cAAc;AACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,uBAAuB;AAEvB,iBAAiB;AACjB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC,wEAAwE;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,uEAAuE;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,uEAAuE;AAEvE,OAAO,EAAgC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAElF,uEAAuE;AAEvE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,uEAAuE;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAyB,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,sEAAsE;AAEtE,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { LanguageModel } from "ai";
2
+ import type { Middleware } from "../runner.js";
3
+ import type { CompactionStrategy, CompactionCheckInfo } from "../session.js";
4
+ export interface CompactionConfig {
5
+ contextWindow: number;
6
+ model: LanguageModel;
7
+ systemPrompt?: string;
8
+ reservedTokens?: number;
9
+ shouldCompact?: (info: CompactionCheckInfo) => boolean;
10
+ strategy?: CompactionStrategy;
11
+ }
12
+ /**
13
+ * Auto-compacts message history when the context window is approaching its limit.
14
+ * Tracks `lastInputTokens` from `step.done` events across calls.
15
+ * Before calling the inner runner: checks if compaction is needed, runs the
16
+ * strategy, yields compaction lifecycle events, and passes the compacted
17
+ * history to the inner runner.
18
+ */
19
+ export declare function withCompaction(config: CompactionConfig): Middleware;
20
+ //# sourceMappingURL=compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/middleware/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,IAAI,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EACV,kBAAkB,EAElB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC;IACvD,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA6EnE"}
@@ -0,0 +1,73 @@
1
+ import { DefaultCompactionStrategy } from "../session.js";
2
+ import { defaultEstimateTokens } from "../utils.js";
3
+ /**
4
+ * Auto-compacts message history when the context window is approaching its limit.
5
+ * Tracks `lastInputTokens` from `step.done` events across calls.
6
+ * Before calling the inner runner: checks if compaction is needed, runs the
7
+ * strategy, yields compaction lifecycle events, and passes the compacted
8
+ * history to the inner runner.
9
+ */
10
+ export function withCompaction(config) {
11
+ const reservedTokens = config.reservedTokens ?? 20_000;
12
+ const strategy = config.strategy ?? new DefaultCompactionStrategy();
13
+ let lastInputTokens = 0;
14
+ return (runner) => async function* (history, input, options) {
15
+ let effectiveHistory = history;
16
+ // Check if compaction is needed
17
+ const info = {
18
+ lastInputTokens,
19
+ contextWindow: config.contextWindow,
20
+ reservedTokens,
21
+ messages: history,
22
+ turnNumber: 0,
23
+ };
24
+ const needsCompaction = config.shouldCompact
25
+ ? config.shouldCompact(info)
26
+ : lastInputTokens >= config.contextWindow - reservedTokens;
27
+ if (needsCompaction && history.length > 0) {
28
+ const tokensBefore = defaultEstimateTokens(history);
29
+ yield {
30
+ type: "compaction.start",
31
+ reason: "overflow",
32
+ tokensBefore,
33
+ };
34
+ const context = {
35
+ messages: history,
36
+ model: config.model,
37
+ systemPrompt: config.systemPrompt,
38
+ totalTokens: tokensBefore,
39
+ targetTokens: config.contextWindow - reservedTokens,
40
+ signal: options?.signal,
41
+ };
42
+ const result = await strategy.compact(context);
43
+ if (result.tokensPruned > 0) {
44
+ yield {
45
+ type: "compaction.pruned",
46
+ tokensRemoved: result.tokensPruned,
47
+ messagesRemoved: result.messagesRemoved,
48
+ };
49
+ }
50
+ if (result.summary) {
51
+ yield {
52
+ type: "compaction.summary",
53
+ summary: result.summary,
54
+ };
55
+ }
56
+ effectiveHistory = result.messages;
57
+ const tokensAfter = defaultEstimateTokens(effectiveHistory);
58
+ yield {
59
+ type: "compaction.done",
60
+ tokensBefore,
61
+ tokensAfter,
62
+ };
63
+ }
64
+ // Run inner runner with (possibly compacted) history
65
+ for await (const event of runner(effectiveHistory, input, options)) {
66
+ if (event.type === "step.done") {
67
+ lastInputTokens = event.usage.inputTokens ?? 0;
68
+ }
69
+ yield event;
70
+ }
71
+ };
72
+ }
73
+ //# sourceMappingURL=compaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/middleware/compaction.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAWpD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAwB;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,yBAAyB,EAAE,CAAC;IACpE,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,OAAO,CAAC,MAAM,EAAE,EAAE,CAChB,KAAK,SAAS,CAAC,EACb,OAAuB,EACvB,KAA8B,EAC9B,OAAkC;QAElC,IAAI,gBAAgB,GAAG,OAAO,CAAC;QAE/B,gCAAgC;QAChC,MAAM,IAAI,GAAwB;YAChC,eAAe;YACf,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc;YACd,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,CAAC;SACd,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa;YAC1C,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;YAC5B,CAAC,CAAC,eAAe,IAAI,MAAM,CAAC,aAAa,GAAG,cAAc,CAAC;QAE7D,IAAI,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM;gBACJ,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,UAAU;gBAClB,YAAY;aACN,CAAC;YAET,MAAM,OAAO,GAAsB;gBACjC,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,MAAM,CAAC,aAAa,GAAG,cAAc;gBACnD,MAAM,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/C,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM;oBACJ,IAAI,EAAE,mBAAmB;oBACzB,aAAa,EAAE,MAAM,CAAC,YAAY;oBAClC,eAAe,EAAE,MAAM,CAAC,eAAe;iBACjC,CAAC;YACX,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM;oBACJ,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACjB,CAAC;YACX,CAAC;YAED,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;YACnC,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YAC5D,MAAM;gBACJ,IAAI,EAAE,iBAAiB;gBACvB,YAAY;gBACZ,WAAW;aACL,CAAC;QACX,CAAC;QAED,qDAAqD;QACrD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACnE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/B,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACN,CAAC"}