@markusylisiurunen/tau 0.2.7 → 0.2.9

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 (81) hide show
  1. package/README.md +39 -34
  2. package/dist/core/commands/registry.js +2 -0
  3. package/dist/core/commands/registry.js.map +1 -1
  4. package/dist/core/config/content_loader.js +75 -12
  5. package/dist/core/config/content_loader.js.map +1 -1
  6. package/dist/core/events/index.js.map +1 -1
  7. package/dist/core/events/types.js.map +1 -1
  8. package/dist/core/index.js +4 -2
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/core/personas.js +9 -3
  11. package/dist/core/personas.js.map +1 -1
  12. package/dist/core/session/core_session.js +6 -0
  13. package/dist/core/session/core_session.js.map +1 -1
  14. package/dist/core/session/runner.js +53 -189
  15. package/dist/core/session/runner.js.map +1 -1
  16. package/dist/core/session/session_engine.js +26 -1
  17. package/dist/core/session/session_engine.js.map +1 -1
  18. package/dist/core/subagents/control_plane.js +256 -0
  19. package/dist/core/subagents/control_plane.js.map +1 -0
  20. package/dist/core/subagents/explore.js +6 -4
  21. package/dist/core/subagents/explore.js.map +1 -1
  22. package/dist/core/subagents/subagent_engine.js +31 -19
  23. package/dist/core/subagents/subagent_engine.js.map +1 -1
  24. package/dist/core/subagents/web.js +7 -4
  25. package/dist/core/subagents/web.js.map +1 -1
  26. package/dist/core/tools/catalog.js +24 -6
  27. package/dist/core/tools/catalog.js.map +1 -1
  28. package/dist/core/tools/communicate.js +45 -0
  29. package/dist/core/tools/communicate.js.map +1 -0
  30. package/dist/core/tools/edit.js +1 -1
  31. package/dist/core/tools/edit.js.map +1 -1
  32. package/dist/core/tools/execution_backend.js +2 -2
  33. package/dist/core/tools/execution_backend.js.map +1 -1
  34. package/dist/core/tools/registry.js.map +1 -1
  35. package/dist/core/tools/spawn_agent.js +173 -0
  36. package/dist/core/tools/spawn_agent.js.map +1 -0
  37. package/dist/core/tools/subagent_ui.js +39 -0
  38. package/dist/core/tools/subagent_ui.js.map +1 -0
  39. package/dist/core/tools/terminate_agent.js +141 -0
  40. package/dist/core/tools/terminate_agent.js.map +1 -0
  41. package/dist/core/tools/wait_for_agent.js +178 -0
  42. package/dist/core/tools/wait_for_agent.js.map +1 -0
  43. package/dist/core/utils/auto_retry.js +27 -2
  44. package/dist/core/utils/auto_retry.js.map +1 -1
  45. package/dist/core/utils/{fork.js → compact.js} +2 -2
  46. package/dist/core/utils/compact.js.map +1 -0
  47. package/dist/core/utils/format.js +17 -0
  48. package/dist/core/utils/format.js.map +1 -1
  49. package/dist/core/utils/project_files.js +31 -5
  50. package/dist/core/utils/project_files.js.map +1 -1
  51. package/dist/core/utils/subagent_utils.js +4 -0
  52. package/dist/core/utils/subagent_utils.js.map +1 -1
  53. package/dist/core/version.js +1 -1
  54. package/dist/tui/chat_controller.js +65 -16
  55. package/dist/tui/chat_controller.js.map +1 -1
  56. package/dist/tui/chat_view.js +29 -5
  57. package/dist/tui/chat_view.js.map +1 -1
  58. package/dist/tui/tool_ui_router.js +89 -77
  59. package/dist/tui/tool_ui_router.js.map +1 -1
  60. package/dist/tui/ui/chat_message_model.js +0 -2
  61. package/dist/tui/ui/chat_message_model.js.map +1 -1
  62. package/dist/tui/ui/custom_editor.js +42 -6
  63. package/dist/tui/ui/custom_editor.js.map +1 -1
  64. package/dist/tui/ui/subagent_editor_pane.js +67 -0
  65. package/dist/tui/ui/subagent_editor_pane.js.map +1 -0
  66. package/dist/tui/ui/subagent_panel.js +249 -0
  67. package/dist/tui/ui/subagent_panel.js.map +1 -0
  68. package/dist/tui/ui/theme/theme.js +1 -0
  69. package/dist/tui/ui/theme/theme.js.map +1 -1
  70. package/dist/tui/ui/tool_ui_registry.js +226 -41
  71. package/dist/tui/ui/tool_ui_registry.js.map +1 -1
  72. package/package.json +1 -1
  73. package/dist/core/tools/fork.js +0 -239
  74. package/dist/core/tools/fork.js.map +0 -1
  75. package/dist/core/tools/task.js +0 -151
  76. package/dist/core/tools/task.js.map +0 -1
  77. package/dist/core/tools/task_schema.js +0 -29
  78. package/dist/core/tools/task_schema.js.map +0 -1
  79. package/dist/core/utils/fork.js.map +0 -1
  80. package/dist/tui/ui/task_execution.js +0 -256
  81. package/dist/tui/ui/task_execution.js.map +0 -1
@@ -0,0 +1,256 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { formatToolUiEventForProgress } from "../utils/subagent_utils.js";
3
+ import { runSubagent } from "./subagent_engine.js";
4
+ const MAX_ACTIVE_SUBAGENTS = 3;
5
+ const MAX_PROGRESS_EVENTS = 200;
6
+ async function raceWithAbort(promise, signal) {
7
+ if (!signal) {
8
+ return await promise;
9
+ }
10
+ if (signal.aborted) {
11
+ throw new Error("aborted");
12
+ }
13
+ return await new Promise((resolve, reject) => {
14
+ const onAbort = () => {
15
+ signal.removeEventListener("abort", onAbort);
16
+ reject(new Error("aborted"));
17
+ };
18
+ signal.addEventListener("abort", onAbort);
19
+ promise.then((value) => {
20
+ signal.removeEventListener("abort", onAbort);
21
+ resolve(value);
22
+ }, (error) => {
23
+ signal.removeEventListener("abort", onAbort);
24
+ reject(error);
25
+ });
26
+ });
27
+ }
28
+ export class SubagentControlPlane {
29
+ records = new Map();
30
+ onEvent;
31
+ constructor(options) {
32
+ this.onEvent = options.onEvent;
33
+ }
34
+ reset() {
35
+ for (const record of this.records.values()) {
36
+ if (record.status === "running") {
37
+ record.abortRequested = true;
38
+ record.controller.abort();
39
+ }
40
+ }
41
+ this.records.clear();
42
+ }
43
+ getActiveCount() {
44
+ let count = 0;
45
+ for (const record of this.records.values()) {
46
+ if (record.status === "running") {
47
+ count += 1;
48
+ }
49
+ }
50
+ return count;
51
+ }
52
+ spawn(options) {
53
+ if (this.getActiveCount() >= MAX_ACTIVE_SUBAGENTS) {
54
+ return {
55
+ ok: false,
56
+ reason: `subagent limit reached (max ${MAX_ACTIVE_SUBAGENTS} active). ` +
57
+ "wait for existing agents to finish.",
58
+ };
59
+ }
60
+ const { definition, personaConfig, prompt, title, config, authPath, backend } = options;
61
+ const id = randomUUID();
62
+ const controller = new AbortController();
63
+ const startedAt = Date.now();
64
+ const record = {
65
+ id,
66
+ name: definition.name,
67
+ title,
68
+ status: "running",
69
+ costTotal: 0,
70
+ turns: 0,
71
+ toolCalls: 0,
72
+ startedAt,
73
+ abortRequested: false,
74
+ progress: [],
75
+ outputs: [],
76
+ controller,
77
+ completion: Promise.resolve(undefined),
78
+ };
79
+ this.records.set(id, record);
80
+ this.emit({ type: "subagent_spawned", state: this.toSnapshot(record) });
81
+ const subagentContext = {
82
+ id,
83
+ name: definition.name,
84
+ title,
85
+ controlPlane: this,
86
+ };
87
+ record.completion = runSubagent({
88
+ definition,
89
+ personaConfig,
90
+ prompt,
91
+ config,
92
+ authPath,
93
+ backend,
94
+ signal: controller.signal,
95
+ sessionId: id,
96
+ subagentContext,
97
+ onProgress: (event) => this.recordProgress(id, event),
98
+ onToolUiEvent: (event) => this.recordToolUiEvent(id, event),
99
+ })
100
+ .then((result) => {
101
+ record.status = "success";
102
+ record.costTotal = result.costTotal;
103
+ record.turns = result.turns;
104
+ record.toolCalls = result.toolCalls;
105
+ record.finalText = result.finalText;
106
+ record.finishedAt = Date.now();
107
+ if (this.records.get(id) === record) {
108
+ this.emit({ type: "subagent_finished", state: this.toSnapshot(record) });
109
+ }
110
+ return record;
111
+ })
112
+ .catch((error) => {
113
+ const message = error instanceof Error ? error.message : String(error);
114
+ const wasAborted = record.controller.signal.aborted || record.abortRequested;
115
+ record.status = wasAborted ? "aborted" : "error";
116
+ record.error = wasAborted ? undefined : message;
117
+ record.finishedAt = Date.now();
118
+ if (this.records.get(id) === record) {
119
+ this.emit({ type: "subagent_finished", state: this.toSnapshot(record) });
120
+ }
121
+ return record;
122
+ });
123
+ return { ok: true, id };
124
+ }
125
+ recordCommunicate(id, text) {
126
+ const record = this.records.get(id);
127
+ if (!record)
128
+ return;
129
+ const trimmed = text.trim();
130
+ if (!trimmed)
131
+ return;
132
+ const payload = text.trimEnd();
133
+ record.outputs.push(payload);
134
+ this.emit({ type: "subagent_communicate", id, text: payload });
135
+ }
136
+ async waitFor(ids, signal) {
137
+ const missing = ids.filter((id) => !this.records.has(id));
138
+ if (missing.length > 0) {
139
+ throw new Error(`unknown subagent id(s): ${missing.join(", ")}`);
140
+ }
141
+ const completions = ids.map((id) => this.waitForRecord(id));
142
+ const all = Promise.all(completions);
143
+ const resolved = await raceWithAbort(all, signal);
144
+ return resolved.map((record) => this.toResult(record));
145
+ }
146
+ async terminate(id, signal) {
147
+ const record = this.records.get(id);
148
+ if (!record)
149
+ return undefined;
150
+ if (record.status === "running") {
151
+ if (!record.abortRequested) {
152
+ record.abortRequested = true;
153
+ this.emit({ type: "subagent_abort_requested", id });
154
+ }
155
+ record.controller.abort();
156
+ }
157
+ const completion = this.waitForRecord(id);
158
+ const resolved = await raceWithAbort(completion, signal);
159
+ return this.toResult(resolved);
160
+ }
161
+ getSnapshot(id) {
162
+ const record = this.records.get(id);
163
+ return record ? this.toSnapshot(record) : undefined;
164
+ }
165
+ async waitForRecord(id) {
166
+ const record = this.records.get(id);
167
+ if (!record) {
168
+ throw new Error(`unknown subagent id: ${id}`);
169
+ }
170
+ if (record.status !== "running") {
171
+ return record;
172
+ }
173
+ return await record.completion;
174
+ }
175
+ recordProgress(id, event) {
176
+ const record = this.records.get(id);
177
+ if (!record)
178
+ return;
179
+ record.costTotal = event.costTotal;
180
+ record.turns = event.turns;
181
+ record.toolCalls = event.toolCalls;
182
+ const text = event.text.trim();
183
+ if (text) {
184
+ record.progress.push({ kind: "progress", text });
185
+ if (record.progress.length > MAX_PROGRESS_EVENTS) {
186
+ record.progress.shift();
187
+ }
188
+ }
189
+ this.emit({
190
+ type: "subagent_progress",
191
+ id,
192
+ text,
193
+ costTotal: record.costTotal,
194
+ turns: record.turns,
195
+ toolCalls: record.toolCalls,
196
+ });
197
+ }
198
+ recordToolUiEvent(id, event) {
199
+ const record = this.records.get(id);
200
+ if (!record)
201
+ return;
202
+ record.costTotal = event.costTotal;
203
+ record.turns = event.turns;
204
+ record.toolCalls = event.toolCalls;
205
+ const text = formatToolUiEventForProgress(event.uiEvent) ?? "";
206
+ if (text) {
207
+ record.progress.push({ kind: "progress", text });
208
+ if (record.progress.length > MAX_PROGRESS_EVENTS) {
209
+ record.progress.shift();
210
+ }
211
+ }
212
+ this.emit({
213
+ type: "subagent_progress",
214
+ id,
215
+ text,
216
+ costTotal: record.costTotal,
217
+ turns: record.turns,
218
+ toolCalls: record.toolCalls,
219
+ });
220
+ }
221
+ toSnapshot(record) {
222
+ return {
223
+ id: record.id,
224
+ name: record.name,
225
+ title: record.title,
226
+ status: record.status,
227
+ costTotal: record.costTotal,
228
+ turns: record.turns,
229
+ toolCalls: record.toolCalls,
230
+ startedAt: record.startedAt,
231
+ finishedAt: record.finishedAt,
232
+ abortRequested: record.abortRequested || undefined,
233
+ error: record.error,
234
+ };
235
+ }
236
+ toResult(record) {
237
+ return {
238
+ id: record.id,
239
+ name: record.name,
240
+ title: record.title,
241
+ status: record.status,
242
+ costTotal: record.costTotal,
243
+ turns: record.turns,
244
+ toolCalls: record.toolCalls,
245
+ outputs: [...record.outputs],
246
+ finalText: record.finalText,
247
+ error: record.error,
248
+ startedAt: record.startedAt,
249
+ finishedAt: record.finishedAt,
250
+ };
251
+ }
252
+ emit(event) {
253
+ this.onEvent(event);
254
+ }
255
+ }
256
+ //# sourceMappingURL=control_plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control_plane.js","sourceRoot":"","sources":["../../../src/core/subagents/control_plane.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,10 @@ Your job: use the bash tool to inspect files, search for symbols, trace dependen
5
5
 
6
6
  ### Rules
7
7
 
8
- - You may ONLY use the bash tool. No other tools.
8
+ - You may ONLY use the bash and communicate tools. No other tools.
9
9
  - Every bash call MUST use safetyLevel="read" and therefore be a read-only operation.
10
10
  - Do not run commands that modify files, install packages, or otherwise change system state.
11
+ - Use the communicate tool to send findings back to the main agent. The main agent only receives communicate output, so always call it with your final answer before finishing.
11
12
  - This is a non-interactive session. You cannot ask for clarification or additional input. You must complete the task immediately with the information available.
12
13
 
13
14
  ### Tool use
@@ -22,7 +23,8 @@ Your job: use the bash tool to inspect files, search for symbols, trace dependen
22
23
 
23
24
  ### Output
24
25
 
25
- Return only the answer to the request. Be direct and concise. No meta commentary about your process.
26
+ Send the final answer via communicate. After communicating, reply with a brief confirmation like "done".
27
+ Be direct and concise. No meta commentary about your process.
26
28
  If you hit blockers or made assumptions, note them briefly at the end.
27
29
  `.trim();
28
30
  export const EXPLORE_DEFINITION = {
@@ -35,8 +37,8 @@ export const EXPLORE_DEFINITION = {
35
37
  "e.g. simple searches with ripgrep, file reads, or straightforward lookups don't warrant the overhead.",
36
38
  ].join(" "),
37
39
  systemPrompt: EXPLORE_SYSTEM_PROMPT,
38
- allowedTools: ["bash"],
40
+ allowedTools: ["bash", "communicate"],
39
41
  riskLevel: "read-only",
40
- maxSubturns: 64,
42
+ maxSubturns: 128,
41
43
  };
42
44
  //# sourceMappingURL=explore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../../src/core/subagents/explore.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B7B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,kBAAkB,GAA8B;IAC3D,IAAI,EAAE,SAAS;IACf,WAAW,EAAE;QACX,4EAA4E;QAC5E,8GAA8G;QAC9G,gGAAgG;QAChG,0DAA0D;QAC1D,uGAAuG;KACxG,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,EAAE;CAChB,CAAC"}
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../../src/core/subagents/explore.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B7B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,kBAAkB,GAA8B;IAC3D,IAAI,EAAE,SAAS;IACf,WAAW,EAAE;QACX,4EAA4E;QAC5E,8GAA8G;QAC9G,gGAAgG;QAChG,0DAA0D;QAC1D,uGAAuG;KACxG,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,YAAY,EAAE,qBAAqB;IACnC,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;IACrC,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,GAAG;CACjB,CAAC"}
@@ -21,8 +21,8 @@ function buildToolRegistryForAllowedTools(allowedTools, config, backend) {
21
21
  function isToolCall(block) {
22
22
  return block.type === "toolCall";
23
23
  }
24
- export async function runSubagentToCompletion(options) {
25
- const { definition, personaConfig, prompt, config, signal, onProgress } = options;
24
+ export async function runSubagent(options) {
25
+ const { definition, personaConfig, prompt, config, signal, onProgress, onToolUiEvent, subagentContext, } = options;
26
26
  const authPath = options.authPath ?? getAuthPath();
27
27
  const authStorage = new AuthStorage(authPath);
28
28
  const credentialResolver = createCredentialResolver({
@@ -33,7 +33,8 @@ export async function runSubagentToCompletion(options) {
33
33
  throw new Error("sub-agent aborted");
34
34
  }
35
35
  const backend = options.backend ?? createLocalToolExecutionBackend();
36
- const toolRegistry = buildToolRegistryForAllowedTools(definition.allowedTools, config, backend);
36
+ const allowedTools = personaConfig.tools ?? definition.allowedTools;
37
+ const toolRegistry = buildToolRegistryForAllowedTools(allowedTools, config, backend);
37
38
  const messages = [
38
39
  {
39
40
  role: "user",
@@ -45,9 +46,12 @@ export async function runSubagentToCompletion(options) {
45
46
  let turns = 0;
46
47
  let toolCalls = 0;
47
48
  const maxSubturns = definition.maxSubturns ?? 64;
48
- const emit = (text) => {
49
+ const emitProgress = (text) => {
49
50
  onProgress?.({ text, costTotal, turns, toolCalls });
50
51
  };
52
+ const emitToolUi = (uiEvent) => {
53
+ onToolUiEvent?.({ uiEvent, costTotal, turns, toolCalls });
54
+ };
51
55
  const issues = [];
52
56
  const recordIssue = (text) => {
53
57
  const normalized = normalizeOneLine(text);
@@ -56,9 +60,9 @@ export async function runSubagentToCompletion(options) {
56
60
  issues.push(normalized);
57
61
  };
58
62
  const formatIssueSummary = () => issues.length > 0 ? ` (recent issues: ${issues.slice(-3).join("; ")})` : "";
59
- const sessionId = `tau-subagent-${definition.name}-${randomUUID()}`;
63
+ const sessionId = options.sessionId ?? `tau-subagent-${definition.name}-${randomUUID()}`;
60
64
  for (let subturn = 1; subturn <= maxSubturns && !signal.aborted; subturn++) {
61
- emit("assistant: thinking");
65
+ emitProgress("assistant: thinking");
62
66
  const context = {
63
67
  systemPrompt: definition.systemPrompt,
64
68
  messages,
@@ -101,13 +105,16 @@ export async function runSubagentToCompletion(options) {
101
105
  emitPartials: false,
102
106
  retry: {
103
107
  shouldRetryAfterError: ({ error, model }) => shouldAutoRetry({ model, error }),
108
+ maxRetries: 1,
109
+ delayMs: 3000,
110
+ notice: { text: "auto-retrying after transient error", severity: "warn" },
104
111
  },
105
112
  });
106
113
  let finalMessage;
107
114
  try {
108
115
  finalMessage = await consumeRunner(runner, (event) => {
109
116
  if (event.type === "notice") {
110
- emit(event.text);
117
+ emitProgress(event.text);
111
118
  }
112
119
  });
113
120
  }
@@ -134,15 +141,15 @@ export async function runSubagentToCompletion(options) {
134
141
  // Emit any assistant text output
135
142
  const agentText = extractAssistantTextForProgress(finalMessage);
136
143
  if (agentText) {
137
- emit(agentText);
144
+ emitProgress(agentText);
138
145
  }
139
146
  const finish = () => {
140
147
  const finalText = extractAssistantText(finalMessage).trim();
141
148
  if (!finalText) {
142
149
  throw new Error(`sub-agent produced an empty response (stopReason: ${finalMessage.stopReason ?? "unknown"})${formatIssueSummary()}`);
143
150
  }
144
- emit("done");
145
- return { finalText, costTotal };
151
+ emitProgress("done");
152
+ return { finalText, costTotal, turns, toolCalls };
146
153
  };
147
154
  if (finalMessage.stopReason !== "toolUse") {
148
155
  return finish();
@@ -150,7 +157,7 @@ export async function runSubagentToCompletion(options) {
150
157
  if (messageToolCalls.length === 0) {
151
158
  return finish();
152
159
  }
153
- const riskLevel = definition.riskLevel;
160
+ const riskLevel = (personaConfig.riskLevel ?? definition.riskLevel);
154
161
  const handleUi = (uiEvent) => {
155
162
  if (!uiEvent)
156
163
  return;
@@ -161,12 +168,16 @@ export async function runSubagentToCompletion(options) {
161
168
  costTotal += uiEvent.costUsd;
162
169
  }
163
170
  const text = formatToolUiEventForProgress(uiEvent);
164
- if (text) {
165
- if (/\b(blocked|failed):/.test(text)) {
166
- recordIssue(text);
167
- }
168
- emit(text);
171
+ if (text && /\b(blocked|failed):/.test(text)) {
172
+ recordIssue(text);
169
173
  }
174
+ emitToolUi(uiEvent);
175
+ };
176
+ const dispatchContext = {
177
+ config,
178
+ toolRegistry,
179
+ authPath,
180
+ subagentContext,
170
181
  };
171
182
  const toolRunner = runToolCalls({
172
183
  toolCalls: messageToolCalls,
@@ -174,6 +185,7 @@ export async function runSubagentToCompletion(options) {
174
185
  enabledTools: toolRegistry.getEnabledToolSchemas(),
175
186
  riskLevel,
176
187
  signal,
188
+ dispatchContext,
177
189
  toolErrorMessages: {
178
190
  notEnabled: (toolCall) => `tool '${toolCall.name}' is not available to this sub-agent.`,
179
191
  unsupported: (toolCall) => `tool '${toolCall.name}' is not available to this sub-agent.`,
@@ -200,10 +212,10 @@ export async function runSubagentToCompletion(options) {
200
212
  if (event.type === "notice") {
201
213
  if (event.severity === "error") {
202
214
  recordIssue(event.text);
203
- emit(`tool blocked: ${event.text}`);
215
+ emitProgress(`tool blocked: ${event.text}`);
204
216
  }
205
217
  else {
206
- emit(event.text);
218
+ emitProgress(event.text);
207
219
  }
208
220
  }
209
221
  }
@@ -211,7 +223,7 @@ export async function runSubagentToCompletion(options) {
211
223
  if (signal.aborted) {
212
224
  throw new Error("sub-agent aborted");
213
225
  }
214
- emit(`done (stopped after ${maxSubturns} subturns)`);
226
+ emitProgress(`done (stopped after ${maxSubturns} subturns)`);
215
227
  const lastAssistant = [...messages].reverse().find((m) => m.role === "assistant");
216
228
  const lastAssistantText = lastAssistant ? extractAssistantText(lastAssistant).trim() : "";
217
229
  const lastAssistantLine = lastAssistantText
@@ -1 +1 @@
1
- {"version":3,"file":"subagent_engine.js","sourceRoot":"","sources":["../../../src/core/subagents/subagent_engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent_engine.js","sourceRoot":"","sources":["../../../src/core/subagents/subagent_engine.ts"],"names":[],"mappings":"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"}
@@ -5,15 +5,17 @@ Your job: find and extract relevant information from technical documentation, bu
5
5
 
6
6
  ### Rules
7
7
 
8
- - You may ONLY use: web_search, web_fetch, and bash.
8
+ - You may ONLY use: web_search, web_fetch, bash, and communicate.
9
9
  - Every bash call MUST use safetyLevel="read" and therefore be a read-only operation.
10
10
  - Do not run commands that modify files, install packages, or otherwise change system state.
11
+ - Use the communicate tool to send findings back to the main agent. The main agent only receives communicate output, so always call it with your final answer before finishing.
11
12
  - This is a non-interactive session. You cannot ask for clarification or additional input. You must complete the task immediately with the information available.
12
13
 
13
14
  ### Tools
14
15
 
15
16
  - **web_search**: Search the web for relevant sources. Returns a list of URLs with snippets.
16
17
  - **web_fetch**: Fetch a URL's content, pre-processed to plain text (HTML tags, scripts, ads stripped).
18
+ - **communicate**: Send your findings back to the main agent. The main agent only receives communicate output.
17
19
  - **curl via bash**: Fetch raw data directly. Prefer this for structured formats (JSON, XML, Markdown) or when web_fetch falls short. Keep in mind that curl may return LOTS of data; use bash commands to filter or limit output as needed.
18
20
  - **bash**: Run read-only shell commands to process data, extract information, or transform formats. May be combined with curl to handle complex fetches.
19
21
 
@@ -36,7 +38,8 @@ Fetch these via curl when you spot them. Keep in mind that some sites may requir
36
38
 
37
39
  ### Output
38
40
 
39
- Return only the answer to the request. Summarize rather than quote at length. Be direct and concise. No meta commentary about your exploration process. Cite sources as URLs. If you hit blockers, made assumptions, or found conflicts, note them briefly at the end.
41
+ Send the final answer via communicate. After communicating, reply with a brief confirmation like "done".
42
+ Summarize rather than quote at length. Be direct and concise. No meta commentary about your exploration process. Cite sources as URLs. If you hit blockers, made assumptions, or found conflicts, note them briefly at the end.
40
43
  `.trim();
41
44
  export const WEB_DEFINITION = {
42
45
  name: "web",
@@ -46,8 +49,8 @@ export const WEB_DEFINITION = {
46
49
  "Examples: 'search the web for X', 'using web, what's new in React 19?', 'is this a known issue in package Y according to GitHub issues?'.",
47
50
  ].join(" "),
48
51
  systemPrompt: WEB_SYSTEM_PROMPT,
49
- allowedTools: ["web_search", "web_fetch", "bash"],
52
+ allowedTools: ["web_search", "web_fetch", "bash", "communicate"],
50
53
  riskLevel: "read-only",
51
- maxSubturns: 64,
54
+ maxSubturns: 128,
52
55
  };
53
56
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/core/subagents/web.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCzB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,IAAI,EAAE,KAAK;IACX,WAAW,EAAE;QACX,wGAAwG;QACxG,kGAAkG;QAClG,2IAA2I;KAC5I,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC;IACjD,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,EAAE;CAChB,CAAC"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/core/subagents/web.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CzB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,CAAC,MAAM,cAAc,GAA8B;IACvD,IAAI,EAAE,KAAK;IACX,WAAW,EAAE;QACX,wGAAwG;QACxG,kGAAkG;QAClG,2IAA2I;KAC5I,CAAC,IAAI,CAAC,GAAG,CAAC;IACX,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC;IAChE,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,GAAG;CACjB,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { createBashToolDefinition } from "./bash.js";
2
+ import { createCommunicateToolDefinition } from "./communicate.js";
2
3
  import { createEditToolDefinition } from "./edit.js";
3
- import { createForkToolDefinition } from "./fork.js";
4
4
  import { ToolRegistry } from "./registry.js";
5
- import { createTaskToolDefinition } from "./task.js";
5
+ import { createSpawnAgentToolDefinition } from "./spawn_agent.js";
6
+ import { createTerminateAgentToolDefinition } from "./terminate_agent.js";
7
+ import { createWaitForAgentToolDefinition } from "./wait_for_agent.js";
6
8
  import { createWebFetchToolDefinition } from "./web_fetch.js";
7
9
  import { createWebSearchToolDefinition } from "./web_search.js";
8
10
  import { createWriteToolDefinition } from "./write.js";
@@ -12,24 +14,40 @@ export const ToolCatalog = {
12
14
  createBashToolDefinition(backend),
13
15
  createWriteToolDefinition(backend),
14
16
  createEditToolDefinition(backend),
15
- createTaskToolDefinition(backend),
16
- createForkToolDefinition(),
17
+ createSpawnAgentToolDefinition(backend),
18
+ createWaitForAgentToolDefinition(),
19
+ createTerminateAgentToolDefinition(),
17
20
  ]);
18
21
  },
19
22
  createSubagentRegistry(allowedTools, config, backend) {
20
- const definitions = [];
21
- for (const tool of allowedTools) {
23
+ const definitions = [createCommunicateToolDefinition()];
24
+ const seen = new Set();
25
+ const addTool = (tool) => {
26
+ if (seen.has(tool))
27
+ return;
28
+ seen.add(tool);
22
29
  switch (tool) {
23
30
  case "bash":
24
31
  definitions.push(createBashToolDefinition(backend));
25
32
  break;
33
+ case "write":
34
+ definitions.push(createWriteToolDefinition(backend));
35
+ break;
36
+ case "edit":
37
+ definitions.push(createEditToolDefinition(backend));
38
+ break;
26
39
  case "web_search":
27
40
  definitions.push(createWebSearchToolDefinition(config));
28
41
  break;
29
42
  case "web_fetch":
30
43
  definitions.push(createWebFetchToolDefinition(config));
31
44
  break;
45
+ case "communicate":
46
+ break;
32
47
  }
48
+ };
49
+ for (const tool of allowedTools) {
50
+ addTool(tool);
33
51
  }
34
52
  return new ToolRegistry(definitions);
35
53
  },
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/tools/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc,CAAC,OAA6B;QAC1C,OAAO,IAAI,YAAY,CAAC;YACtB,wBAAwB,CAAC,OAAO,CAAC;YACjC,yBAAyB,CAAC,OAAO,CAAC;YAClC,wBAAwB,CAAC,OAAO,CAAC;YACjC,wBAAwB,CAAC,OAAO,CAAC;YACjC,wBAAwB,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB,CACpB,YAAuC,EACvC,MAAc,EACd,OAA6B;QAE7B,MAAM,WAAW,GAAqB,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,MAAM;oBACT,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,YAAY;oBACf,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxD,MAAM;gBACR,KAAK,WAAW;oBACd,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACvD,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/core/tools/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc,CAAC,OAA6B;QAC1C,OAAO,IAAI,YAAY,CAAC;YACtB,wBAAwB,CAAC,OAAO,CAAC;YACjC,yBAAyB,CAAC,OAAO,CAAC;YAClC,wBAAwB,CAAC,OAAO,CAAC;YACjC,8BAA8B,CAAC,OAAO,CAAC;YACvC,gCAAgC,EAAE;YAClC,kCAAkC,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB,CACpB,YAAgC,EAChC,MAAc,EACd,OAA6B;QAE7B,MAAM,WAAW,GAAqB,CAAC,+BAA+B,EAAE,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,MAAM,OAAO,GAAG,CAAC,IAAsB,EAAQ,EAAE;YAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC3B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEf,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,MAAM;oBACT,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,OAAO;oBACV,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,MAAM;oBACT,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,YAAY;oBACf,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxD,MAAM;gBACR,KAAK,WAAW;oBACd,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,aAAa;oBAChB,MAAM;YACV,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;CACF,CAAC"}