@openharness/core 0.4.0 → 0.4.1

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 (99) hide show
  1. package/dist/__tests__/agent-registry.test.d.ts +2 -0
  2. package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
  3. package/dist/__tests__/agent-registry.test.js +429 -0
  4. package/dist/__tests__/agent-registry.test.js.map +1 -0
  5. package/dist/__tests__/conversation.test.d.ts +2 -0
  6. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  7. package/dist/__tests__/conversation.test.js +127 -0
  8. package/dist/__tests__/conversation.test.js.map +1 -0
  9. package/dist/__tests__/messages.test.js +15 -2
  10. package/dist/__tests__/messages.test.js.map +1 -1
  11. package/dist/__tests__/middleware/compaction.test.d.ts +2 -0
  12. package/dist/__tests__/middleware/compaction.test.d.ts.map +1 -0
  13. package/dist/__tests__/middleware/compaction.test.js +163 -0
  14. package/dist/__tests__/middleware/compaction.test.js.map +1 -0
  15. package/dist/__tests__/middleware/hooks.test.d.ts +2 -0
  16. package/dist/__tests__/middleware/hooks.test.d.ts.map +1 -0
  17. package/dist/__tests__/middleware/hooks.test.js +97 -0
  18. package/dist/__tests__/middleware/hooks.test.js.map +1 -0
  19. package/dist/__tests__/middleware/persistence.test.d.ts +2 -0
  20. package/dist/__tests__/middleware/persistence.test.d.ts.map +1 -0
  21. package/dist/__tests__/middleware/persistence.test.js +70 -0
  22. package/dist/__tests__/middleware/persistence.test.js.map +1 -0
  23. package/dist/__tests__/middleware/retry.test.d.ts +2 -0
  24. package/dist/__tests__/middleware/retry.test.d.ts.map +1 -0
  25. package/dist/__tests__/middleware/retry.test.js +151 -0
  26. package/dist/__tests__/middleware/retry.test.js.map +1 -0
  27. package/dist/__tests__/middleware/turn-tracking.test.d.ts +2 -0
  28. package/dist/__tests__/middleware/turn-tracking.test.d.ts.map +1 -0
  29. package/dist/__tests__/middleware/turn-tracking.test.js +70 -0
  30. package/dist/__tests__/middleware/turn-tracking.test.js.map +1 -0
  31. package/dist/__tests__/runner.test.d.ts +2 -0
  32. package/dist/__tests__/runner.test.d.ts.map +1 -0
  33. package/dist/__tests__/runner.test.js +111 -0
  34. package/dist/__tests__/runner.test.js.map +1 -0
  35. package/dist/__tests__/stream.test.d.ts +2 -0
  36. package/dist/__tests__/stream.test.d.ts.map +1 -0
  37. package/dist/__tests__/stream.test.js +100 -0
  38. package/dist/__tests__/stream.test.js.map +1 -0
  39. package/dist/__tests__/ui-stream.test.js +105 -0
  40. package/dist/__tests__/ui-stream.test.js.map +1 -1
  41. package/dist/agent-registry.d.ts +90 -0
  42. package/dist/agent-registry.d.ts.map +1 -0
  43. package/dist/agent-registry.js +217 -0
  44. package/dist/agent-registry.js.map +1 -0
  45. package/dist/agent.d.ts +13 -0
  46. package/dist/agent.d.ts.map +1 -1
  47. package/dist/agent.js +186 -41
  48. package/dist/agent.js.map +1 -1
  49. package/dist/conversation.d.ts +46 -0
  50. package/dist/conversation.d.ts.map +1 -0
  51. package/dist/conversation.js +66 -0
  52. package/dist/conversation.js.map +1 -0
  53. package/dist/index.d.ts +9 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +14 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/middleware/compaction.d.ts +20 -0
  58. package/dist/middleware/compaction.d.ts.map +1 -0
  59. package/dist/middleware/compaction.js +73 -0
  60. package/dist/middleware/compaction.js.map +1 -0
  61. package/dist/middleware/hooks.d.ts +10 -0
  62. package/dist/middleware/hooks.d.ts.map +1 -0
  63. package/dist/middleware/hooks.js +36 -0
  64. package/dist/middleware/hooks.js.map +1 -0
  65. package/dist/middleware/index.d.ts +6 -0
  66. package/dist/middleware/index.d.ts.map +1 -0
  67. package/dist/middleware/index.js +6 -0
  68. package/dist/middleware/index.js.map +1 -0
  69. package/dist/middleware/persistence.d.ts +12 -0
  70. package/dist/middleware/persistence.d.ts.map +1 -0
  71. package/dist/middleware/persistence.js +15 -0
  72. package/dist/middleware/persistence.js.map +1 -0
  73. package/dist/middleware/retry.d.ts +8 -0
  74. package/dist/middleware/retry.d.ts.map +1 -0
  75. package/dist/middleware/retry.js +70 -0
  76. package/dist/middleware/retry.js.map +1 -0
  77. package/dist/middleware/turn-tracking.d.ts +7 -0
  78. package/dist/middleware/turn-tracking.d.ts.map +1 -0
  79. package/dist/middleware/turn-tracking.js +25 -0
  80. package/dist/middleware/turn-tracking.js.map +1 -0
  81. package/dist/runner.d.ts +23 -0
  82. package/dist/runner.d.ts.map +1 -0
  83. package/dist/runner.js +18 -0
  84. package/dist/runner.js.map +1 -0
  85. package/dist/session.d.ts.map +1 -1
  86. package/dist/session.js +7 -40
  87. package/dist/session.js.map +1 -1
  88. package/dist/stream.d.ts +12 -0
  89. package/dist/stream.d.ts.map +1 -0
  90. package/dist/stream.js +38 -0
  91. package/dist/stream.js.map +1 -0
  92. package/dist/ui-stream.d.ts.map +1 -1
  93. package/dist/ui-stream.js +13 -1
  94. package/dist/ui-stream.js.map +1 -1
  95. package/dist/utils.d.ts +8 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +40 -0
  98. package/dist/utils.js.map +1 -0
  99. package/package.json +1 -1
@@ -0,0 +1,217 @@
1
+ const ALL_AWAIT_MODES = ["all", "any", "race", "allSettled"];
2
+ export function normalizeBackgroundConfig(input) {
3
+ if (!input)
4
+ return undefined;
5
+ if (input === true) {
6
+ return {
7
+ maxConcurrent: Infinity,
8
+ timeout: undefined,
9
+ autoCancel: true,
10
+ tools: { status: true, cancel: true, await: ALL_AWAIT_MODES },
11
+ };
12
+ }
13
+ const awaitOpt = input.tools?.await;
14
+ const awaitModes = awaitOpt === false
15
+ ? false
16
+ : awaitOpt === true || awaitOpt === undefined
17
+ ? ALL_AWAIT_MODES
18
+ : awaitOpt;
19
+ return {
20
+ maxConcurrent: input.maxConcurrent ?? Infinity,
21
+ timeout: input.timeout,
22
+ autoCancel: input.autoCancel ?? true,
23
+ tools: {
24
+ status: input.tools?.status ?? true,
25
+ cancel: input.tools?.cancel ?? true,
26
+ await: awaitModes,
27
+ },
28
+ };
29
+ }
30
+ // ── AgentRegistry ───────────────────────────────────────────────────
31
+ export class AgentRegistry {
32
+ config;
33
+ agents = new Map();
34
+ idCounter = 0;
35
+ constructor(config) {
36
+ this.config = config;
37
+ }
38
+ get runningCount() {
39
+ let count = 0;
40
+ for (const entry of this.agents.values()) {
41
+ if (entry.status === "running")
42
+ count++;
43
+ }
44
+ return count;
45
+ }
46
+ /**
47
+ * Spawn a child agent in the background. Returns an ID to track it.
48
+ */
49
+ spawn(name, child, prompt, opts) {
50
+ if (this.config.maxConcurrent !== Infinity &&
51
+ this.runningCount >= this.config.maxConcurrent) {
52
+ throw new Error(`Maximum concurrent background agents (${this.config.maxConcurrent}) reached`);
53
+ }
54
+ const id = `bg-${++this.idCounter}`;
55
+ const controller = new AbortController();
56
+ // Link to parent abort signal
57
+ if (opts.signal) {
58
+ opts.signal.addEventListener("abort", () => controller.abort(), { once: true });
59
+ }
60
+ const entry = {
61
+ promise: undefined,
62
+ controller,
63
+ status: "running",
64
+ };
65
+ // Auto-timeout
66
+ if (this.config.timeout) {
67
+ entry.timeoutId = setTimeout(() => {
68
+ if (entry.status === "running") {
69
+ controller.abort();
70
+ entry.status = "cancelled";
71
+ entry.error = `Timed out after ${this.config.timeout}ms`;
72
+ }
73
+ }, this.config.timeout);
74
+ }
75
+ entry.promise = (async () => {
76
+ try {
77
+ let lastText = "";
78
+ for await (const event of child.run([], prompt, { signal: controller.signal })) {
79
+ opts.onEvent?.([name], event);
80
+ if (event.type === "text.done") {
81
+ lastText = event.text;
82
+ }
83
+ }
84
+ entry.status = "done";
85
+ entry.result = lastText || "(no output)";
86
+ return entry.result;
87
+ }
88
+ catch (e) {
89
+ if (controller.signal.aborted && entry.status !== "cancelled") {
90
+ entry.status = "cancelled";
91
+ }
92
+ else if (entry.status === "running") {
93
+ entry.status = "failed";
94
+ }
95
+ entry.error = e instanceof Error ? e.message : String(e);
96
+ throw e;
97
+ }
98
+ finally {
99
+ if (entry.timeoutId)
100
+ clearTimeout(entry.timeoutId);
101
+ await child.close();
102
+ }
103
+ })();
104
+ // Prevent unhandled rejection warnings — errors are tracked in entry.status/error
105
+ entry.promise.catch(() => { });
106
+ this.agents.set(id, entry);
107
+ return id;
108
+ }
109
+ /**
110
+ * Non-blocking status check.
111
+ */
112
+ getStatus(id) {
113
+ const entry = this.agents.get(id);
114
+ if (!entry)
115
+ return undefined;
116
+ return { status: entry.status, result: entry.result, error: entry.error };
117
+ }
118
+ /**
119
+ * Cancel a running background agent.
120
+ */
121
+ cancel(id) {
122
+ const entry = this.agents.get(id);
123
+ if (!entry || entry.status !== "running")
124
+ return false;
125
+ entry.controller.abort();
126
+ entry.status = "cancelled";
127
+ if (entry.timeoutId)
128
+ clearTimeout(entry.timeoutId);
129
+ return true;
130
+ }
131
+ /**
132
+ * Promise.all — wait for all to succeed. Rejects on first failure.
133
+ */
134
+ async awaitAll(ids) {
135
+ const results = new Map();
136
+ await Promise.all(ids.map(async (id) => {
137
+ const entry = this.agents.get(id);
138
+ if (!entry)
139
+ throw new Error(`Agent "${id}" not found`);
140
+ try {
141
+ const result = await entry.promise;
142
+ results.set(id, result);
143
+ }
144
+ catch {
145
+ throw new Error(`Agent "${id}" failed: ${entry.error ?? "unknown error"}`);
146
+ }
147
+ }));
148
+ return results;
149
+ }
150
+ /**
151
+ * Promise.allSettled — wait for all, return results and errors.
152
+ */
153
+ async awaitAllSettled(ids) {
154
+ const results = new Map();
155
+ await Promise.allSettled(ids.map(async (id) => {
156
+ const entry = this.agents.get(id);
157
+ if (!entry) {
158
+ results.set(id, { status: "failed", error: `Agent "${id}" not found` });
159
+ return;
160
+ }
161
+ try {
162
+ const result = await entry.promise;
163
+ results.set(id, { status: "done", result });
164
+ }
165
+ catch {
166
+ results.set(id, {
167
+ status: entry.status === "cancelled" ? "cancelled" : "failed",
168
+ error: entry.error,
169
+ });
170
+ }
171
+ }));
172
+ return results;
173
+ }
174
+ /**
175
+ * Promise.any — first success wins. Rejects only if all fail.
176
+ */
177
+ async awaitAny(ids) {
178
+ return Promise.any(ids.map(async (id) => {
179
+ const entry = this.agents.get(id);
180
+ if (!entry)
181
+ throw new Error(`Agent "${id}" not found`);
182
+ const result = await entry.promise;
183
+ return { id, result };
184
+ }));
185
+ }
186
+ /**
187
+ * Promise.race — first to settle (success or failure) wins.
188
+ */
189
+ async awaitRace(ids) {
190
+ return Promise.race(ids.map(async (id) => {
191
+ const entry = this.agents.get(id);
192
+ if (!entry)
193
+ return { id, error: `Agent "${id}" not found` };
194
+ try {
195
+ const result = await entry.promise;
196
+ return { id, result };
197
+ }
198
+ catch {
199
+ return { id, error: entry.error ?? "unknown error" };
200
+ }
201
+ }));
202
+ }
203
+ /**
204
+ * Cancel all running background agents.
205
+ */
206
+ cancelAll() {
207
+ for (const entry of this.agents.values()) {
208
+ if (entry.status === "running") {
209
+ entry.controller.abort();
210
+ entry.status = "cancelled";
211
+ if (entry.timeoutId)
212
+ clearTimeout(entry.timeoutId);
213
+ }
214
+ }
215
+ }
216
+ }
217
+ //# sourceMappingURL=agent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../src/agent-registry.ts"],"names":[],"mappings":"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"}
package/dist/agent.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type LanguageModel, type ToolSet, type ModelMessage } from "ai";
2
2
  import { type MCPServerConfig } from "./mcp.js";
3
3
  import { type SkillsConfig } from "./skills.js";
4
+ import { type SubagentBackground } from "./agent-registry.js";
4
5
  export interface TokenUsage {
5
6
  inputTokens: number | undefined;
6
7
  outputTokens: number | undefined;
@@ -82,6 +83,10 @@ export declare class Agent {
82
83
  readonly onSubagentEvent?: SubagentEventFn;
83
84
  /** Original subagent templates (stored so nested children can inherit them). */
84
85
  readonly subagents?: Agent[];
86
+ /** Background config (stored so nested children can inherit it). */
87
+ readonly subagentBackground?: SubagentBackground;
88
+ /** Registry for background subagents. Only present when `subagentBackground` is configured. */
89
+ private agentRegistry?;
85
90
  /** Static tools provided at construction time. */
86
91
  readonly tools?: ToolSet;
87
92
  /** MCP server configs — connected lazily on first run. */
@@ -118,6 +123,14 @@ export declare class Agent {
118
123
  maxSubagentDepth?: number;
119
124
  /** Called for every event emitted by a subagent during a task tool call. */
120
125
  onSubagentEvent?: SubagentEventFn;
126
+ /**
127
+ * Enable background execution for subagents. When enabled, the `task` tool
128
+ * gains a `background` parameter and lifecycle tools (`agent_status`,
129
+ * `agent_cancel`, `agent_await`) are auto-registered.
130
+ *
131
+ * Pass `true` for defaults, or an object for fine-grained control.
132
+ */
133
+ subagentBackground?: SubagentBackground;
121
134
  /**
122
135
  * MCP servers to connect to. Tools from these servers are merged into
123
136
  * the agent's toolset. Connections are established lazily on first run.
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
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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"}