@markusylisiurunen/tau 0.3.94 → 0.3.96

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 (142) hide show
  1. package/dist/code_mode/command.js +3 -1
  2. package/dist/code_mode/command.js.map +1 -1
  3. package/dist/code_mode/output.d.ts +3 -0
  4. package/dist/code_mode/output.js +8 -2
  5. package/dist/code_mode/output.js.map +1 -1
  6. package/dist/code_mode/runtime.d.ts +7 -1
  7. package/dist/code_mode/runtime.js +18 -14
  8. package/dist/code_mode/runtime.js.map +1 -1
  9. package/dist/core/code_mode/agents.js +434 -0
  10. package/dist/core/code_mode/agents.js.map +1 -0
  11. package/dist/core/code_mode/bash.js +14 -17
  12. package/dist/core/code_mode/bash.js.map +1 -1
  13. package/dist/core/code_mode/history.js +1 -0
  14. package/dist/core/code_mode/history.js.map +1 -1
  15. package/dist/core/code_mode/models.js +31 -4
  16. package/dist/core/code_mode/models.js.map +1 -1
  17. package/dist/core/code_mode/sdk.js +6 -0
  18. package/dist/core/code_mode/sdk.js.map +1 -1
  19. package/dist/core/config/content_loader.js +3 -13
  20. package/dist/core/config/content_loader.js.map +1 -1
  21. package/dist/core/debug.js +2 -2
  22. package/dist/core/debug.js.map +1 -1
  23. package/dist/core/history/history_manager.js +7 -4
  24. package/dist/core/history/history_manager.js.map +1 -1
  25. package/dist/core/index.js +0 -4
  26. package/dist/core/index.js.map +1 -1
  27. package/dist/core/mcp/manager.js +7 -0
  28. package/dist/core/mcp/manager.js.map +1 -1
  29. package/dist/core/models/openrouter.js +25 -1
  30. package/dist/core/models/openrouter.js.map +1 -1
  31. package/dist/core/personas.js +3 -11
  32. package/dist/core/personas.js.map +1 -1
  33. package/dist/core/runtime/chat_runtime.js +11 -10
  34. package/dist/core/runtime/chat_runtime.js.map +1 -1
  35. package/dist/core/runtime/session_prompt_composer.js +9 -8
  36. package/dist/core/runtime/session_prompt_composer.js.map +1 -1
  37. package/dist/core/static/code_mode/history/documentation.md +2 -1
  38. package/dist/core/static/code_mode/sandbox_runner.mjs +4 -0
  39. package/dist/core/static/index.js +18 -5
  40. package/dist/core/static/index.js.map +1 -1
  41. package/dist/core/static/prompts/subagent-prefix.md +17 -0
  42. package/dist/core/static/tau_docs/client-tools.md +4 -0
  43. package/dist/core/static/tau_docs/code-mode.md +77 -0
  44. package/dist/core/static/tau_docs/config-reference.md +4 -2
  45. package/dist/core/static/tau_docs/history.md +5 -3
  46. package/dist/core/static/tau_docs/index.md +2 -1
  47. package/dist/core/static/tau_docs/manifest.json +1 -0
  48. package/dist/core/static/tau_docs/node-sdk.md +2 -0
  49. package/dist/core/static/tau_docs/openrouter.md +2 -0
  50. package/dist/core/static/tau_docs/pdf-unpacking.md +1 -1
  51. package/dist/core/static/tau_docs/personas.md +4 -5
  52. package/dist/core/static/tau_docs/prompts-and-project-context.md +1 -1
  53. package/dist/core/static/tau_docs/security.md +1 -1
  54. package/dist/core/static/tau_docs/sessions.md +1 -1
  55. package/dist/core/static/tau_docs/subagents.md +106 -27
  56. package/dist/core/static/tau_docs/tools.md +28 -64
  57. package/dist/core/static/tau_docs/troubleshooting.md +2 -2
  58. package/dist/core/static/tau_docs/tui.md +2 -0
  59. package/dist/core/subagents/agent_supervisor.js +185 -339
  60. package/dist/core/subagents/agent_supervisor.js.map +1 -1
  61. package/dist/core/subagents/claude_code_protocol.js +4 -0
  62. package/dist/core/subagents/claude_code_protocol.js.map +1 -1
  63. package/dist/core/subagents/claude_code_runner.js +134 -11
  64. package/dist/core/subagents/claude_code_runner.js.map +1 -1
  65. package/dist/core/subagents/claude_code_runner.mjs +80 -77
  66. package/dist/core/subagents/claude_code_runtime.js +250 -9
  67. package/dist/core/subagents/claude_code_runtime.js.map +1 -1
  68. package/dist/core/subagents/errors.js +18 -0
  69. package/dist/core/subagents/errors.js.map +1 -0
  70. package/dist/core/subagents/events.js +25 -0
  71. package/dist/core/subagents/events.js.map +1 -0
  72. package/dist/core/subagents/format.js +2 -98
  73. package/dist/core/subagents/format.js.map +1 -1
  74. package/dist/core/subagents/native_subagent_runtime.js +270 -0
  75. package/dist/core/subagents/native_subagent_runtime.js.map +1 -0
  76. package/dist/core/subagents/prompt.js +3 -5
  77. package/dist/core/subagents/prompt.js.map +1 -1
  78. package/dist/core/subagents/registry.js +5 -3
  79. package/dist/core/subagents/registry.js.map +1 -1
  80. package/dist/core/subagents/runtime.js +13 -0
  81. package/dist/core/subagents/runtime.js.map +1 -0
  82. package/dist/core/subagents/trace.js +149 -0
  83. package/dist/core/subagents/trace.js.map +1 -0
  84. package/dist/core/tools/agent_jobs.js +51 -0
  85. package/dist/core/tools/agent_jobs.js.map +1 -0
  86. package/dist/core/tools/background_jobs.js +205 -0
  87. package/dist/core/tools/background_jobs.js.map +1 -0
  88. package/dist/core/tools/bash.js +11 -45
  89. package/dist/core/tools/bash.js.map +1 -1
  90. package/dist/core/tools/bash_jobs.js +44 -238
  91. package/dist/core/tools/bash_jobs.js.map +1 -1
  92. package/dist/core/tools/catalog.js +37 -72
  93. package/dist/core/tools/catalog.js.map +1 -1
  94. package/dist/core/tools/code.js +177 -54
  95. package/dist/core/tools/code.js.map +1 -1
  96. package/dist/core/tools/code_jobs.js +128 -0
  97. package/dist/core/tools/code_jobs.js.map +1 -0
  98. package/dist/core/tools/code_mode.js +88 -101
  99. package/dist/core/tools/code_mode.js.map +1 -1
  100. package/dist/core/tools/code_mode_worker.js +13 -7
  101. package/dist/core/tools/code_mode_worker.js.map +1 -1
  102. package/dist/core/tools/job_output.js +53 -0
  103. package/dist/core/tools/job_output.js.map +1 -0
  104. package/dist/core/tools/output_file.js +38 -0
  105. package/dist/core/tools/output_file.js.map +1 -0
  106. package/dist/core/tools/presentation.js +19 -9
  107. package/dist/core/tools/presentation.js.map +1 -1
  108. package/dist/core/tools/tool_names.js +8 -6
  109. package/dist/core/tools/tool_names.js.map +1 -1
  110. package/dist/core/tools/wait_for_agents.js +47 -38
  111. package/dist/core/tools/wait_for_agents.js.map +1 -1
  112. package/dist/core/version.js +1 -1
  113. package/dist/diff_tool/app/dist/assets/{core-33fyIuI3.js → core-NkxL1yZC.js} +1 -1
  114. package/dist/diff_tool/app/dist/assets/{highlights-BZwSBtSw.js → highlights-Coi8xHW0.js} +1 -1
  115. package/dist/diff_tool/app/dist/assets/index-Jt-l2Q96.js +205 -0
  116. package/dist/diff_tool/app/dist/assets/langs-qJAo26KT.js +1 -0
  117. package/dist/diff_tool/app/dist/assets/{shiki-CC72VX9t.js → shiki-B8l9Ufae.js} +2 -2
  118. package/dist/diff_tool/app/dist/assets/{stream-tokenizer-C6SDg59j.js → stream-tokenizer-h1lwRQEk.js} +1 -1
  119. package/dist/diff_tool/app/dist/assets/{themes-2vjCbM1J.js → themes-D3P9yN9_.js} +2 -2
  120. package/dist/diff_tool/app/dist/index.html +1 -1
  121. package/dist/host/hosted_ephemeral_agent_session.js +13 -3
  122. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  123. package/dist/host/local_session_host.js +5 -5
  124. package/dist/host/local_session_host.js.map +1 -1
  125. package/dist/sdk/code_mode.js +2 -2
  126. package/dist/sdk/code_mode.js.map +1 -1
  127. package/dist/store/session_snapshot_migrations.js +27 -1
  128. package/dist/store/session_snapshot_migrations.js.map +1 -1
  129. package/dist/tui/ui/subagent_panel.js +4 -1
  130. package/dist/tui/ui/subagent_panel.js.map +1 -1
  131. package/package.json +5 -5
  132. package/dist/core/static/prompts/subagent-wrapper.md +0 -20
  133. package/dist/core/tools/interrupt_agent.js +0 -142
  134. package/dist/core/tools/interrupt_agent.js.map +0 -1
  135. package/dist/core/tools/list_agents.js +0 -85
  136. package/dist/core/tools/list_agents.js.map +0 -1
  137. package/dist/core/tools/send_input_to_agent.js +0 -177
  138. package/dist/core/tools/send_input_to_agent.js.map +0 -1
  139. package/dist/core/tools/spawn_agent.js +0 -275
  140. package/dist/core/tools/spawn_agent.js.map +0 -1
  141. package/dist/diff_tool/app/dist/assets/index-Bv8JVYFD.js +0 -202
  142. package/dist/diff_tool/app/dist/assets/langs-DnGrwrZ-.js +0 -1
@@ -1,177 +0,0 @@
1
- import { Type } from "typebox";
2
- import { z } from "zod";
3
- import { formatSendInputToAgentResult } from "../subagents/format.js";
4
- import { parseToolArgs } from "../utils/zod.js";
5
- import { buildToolRunPresentation } from "./presentation.js";
6
- import { createTextToolOutcome, executeTool, } from "./registry.js";
7
- import { buildSubagentPresentation } from "./subagent_ui.js";
8
- import { TOOL_NAME_SEND_INPUT_TO_AGENT } from "./tool_names.js";
9
- const SEND_INPUT_TO_AGENT_DESCRIPTION = [
10
- "Send a follow-up prompt to an existing subagent.",
11
- "The subagent must be idle before you can send another input.",
12
- "Starting a new run replaces the previously retained response.",
13
- ].join(" ");
14
- const SEND_INPUT_TO_AGENT_ID_DESCRIPTION = "Single-line subagent id to send input to.";
15
- const SEND_INPUT_TO_AGENT_PROMPT_DESCRIPTION = [
16
- "The prompt to send to the subagent.",
17
- "Include all necessary context and instructions for the next run.",
18
- ].join(" ");
19
- export const SEND_INPUT_TO_AGENT_TOOL = {
20
- name: TOOL_NAME_SEND_INPUT_TO_AGENT,
21
- description: SEND_INPUT_TO_AGENT_DESCRIPTION,
22
- parameters: Type.Object({
23
- id: Type.String({
24
- description: SEND_INPUT_TO_AGENT_ID_DESCRIPTION,
25
- pattern: "^[^\\r\\n]+$",
26
- }),
27
- prompt: Type.String({ description: SEND_INPUT_TO_AGENT_PROMPT_DESCRIPTION }),
28
- }, { additionalProperties: false }),
29
- };
30
- const sendInputArgsSchema = z
31
- .object({
32
- id: z
33
- .string()
34
- .trim()
35
- .min(1, "must not be empty.")
36
- .refine((id) => !/[\r\n]/.test(id), "must be a single line."),
37
- prompt: z.string().trim().min(1, "must not be empty."),
38
- })
39
- .strict();
40
- function resolveSnapshotTarget(snapshot) {
41
- return { title: snapshot.title };
42
- }
43
- function getSendInputSubject(raw, supervisor) {
44
- const parsedArgs = parseToolArgs(sendInputArgsSchema, raw);
45
- if (!parsedArgs.ok) {
46
- return "(invalid arguments)";
47
- }
48
- const { id } = parsedArgs.data;
49
- try {
50
- return supervisor.getSnapshot(id)?.title ?? id;
51
- }
52
- catch {
53
- return id;
54
- }
55
- }
56
- export function createSendInputToAgentToolDefinition(supervisor) {
57
- return {
58
- schema: SEND_INPUT_TO_AGENT_TOOL,
59
- describe: (toolCall) => {
60
- const subject = getSendInputSubject(toolCall.arguments, supervisor);
61
- return {
62
- presentation: buildToolRunPresentation({
63
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
64
- subject,
65
- }),
66
- };
67
- },
68
- async execute(toolCall, context) {
69
- const { signal } = context;
70
- let id = "";
71
- let prompt = "";
72
- const subject = getSendInputSubject(toolCall.arguments, supervisor);
73
- const blocked = (reason, details, semanticOutcome = "blocked") => {
74
- const outcome = createTextToolOutcome(reason, semanticOutcome);
75
- const uiEvent = {
76
- type: "tool_call_blocked",
77
- toolCallId: toolCall.id,
78
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
79
- presentation: buildToolRunPresentation({
80
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
81
- subject: details?.title ?? subject,
82
- details: [{ text: reason }],
83
- }),
84
- reason,
85
- };
86
- return {
87
- content: outcome.content,
88
- outcome: outcome.outcome,
89
- uiEvent,
90
- };
91
- };
92
- const parsedArgs = parseToolArgs(sendInputArgsSchema, toolCall.arguments);
93
- if (!parsedArgs.ok) {
94
- return executeTool(context, () => blocked(`Invalid arguments: ${parsedArgs.error}`));
95
- }
96
- ({ id, prompt } = parsedArgs.data);
97
- let snapshot;
98
- try {
99
- snapshot = supervisor.getSnapshot(id);
100
- }
101
- catch (error) {
102
- const errorMessage = error instanceof Error ? error.message : String(error);
103
- return executeTool(context, () => blocked(`Could not inspect subagent: ${errorMessage}`, { title: id }, "failed"));
104
- }
105
- if (!snapshot) {
106
- return executeTool(context, () => blocked(`Unknown subagent ID '${id}'.`, { title: id }));
107
- }
108
- const target = resolveSnapshotTarget(snapshot);
109
- return executeTool(context, async () => {
110
- if (signal?.aborted) {
111
- const reason = "Sending input to the subagent was cancelled.";
112
- const outcome = createTextToolOutcome(reason, "cancelled");
113
- const presentation = buildToolRunPresentation({
114
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
115
- subject: target.title,
116
- });
117
- const uiEvent = {
118
- type: "tool_call_finished",
119
- toolCallId: toolCall.id,
120
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
121
- presentation,
122
- status: "error",
123
- };
124
- return { content: outcome.content, outcome: outcome.outcome, uiEvent };
125
- }
126
- let sendResult;
127
- try {
128
- sendResult = supervisor.sendInput({ id, prompt });
129
- }
130
- catch (error) {
131
- const errorMessage = error instanceof Error ? error.message : String(error);
132
- return blocked(`Could not send input to subagent: ${errorMessage}`, { title: target.title }, "failed");
133
- }
134
- if (!sendResult.ok) {
135
- const outcome = createTextToolOutcome(sendResult.reason, "blocked");
136
- const uiEvent = {
137
- type: "tool_call_blocked",
138
- toolCallId: toolCall.id,
139
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
140
- presentation: buildToolRunPresentation({
141
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
142
- subject: target.title,
143
- details: [{ text: sendResult.reason }],
144
- }),
145
- reason: sendResult.reason,
146
- };
147
- return { content: outcome.content, outcome: outcome.outcome, uiEvent };
148
- }
149
- const resultText = formatSendInputToAgentResult(sendResult.state, sendResult.capacity);
150
- const outcome = createTextToolOutcome(resultText, "succeeded");
151
- const presentation = buildSubagentPresentation({
152
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
153
- subject: sendResult.state.title,
154
- output: prompt,
155
- detailTruncation: false,
156
- });
157
- const uiEvent = {
158
- type: "tool_call_finished",
159
- toolCallId: toolCall.id,
160
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
161
- presentation,
162
- status: "success",
163
- };
164
- return { content: outcome.content, outcome: outcome.outcome, uiEvent };
165
- }, {
166
- type: "tool_call_started",
167
- toolCallId: toolCall.id,
168
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
169
- presentation: buildToolRunPresentation({
170
- toolName: TOOL_NAME_SEND_INPUT_TO_AGENT,
171
- subject: target.title,
172
- }),
173
- });
174
- },
175
- };
176
- }
177
- //# sourceMappingURL=send_input_to_agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"send_input_to_agent.js","sourceRoot":"","sources":["../../../src/core/tools/send_input_to_agent.ts"],"names":[],"mappings":"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"}
@@ -1,275 +0,0 @@
1
- import { resolve } from "node:path";
2
- import { Type } from "typebox";
3
- import { z } from "zod";
4
- import { formatSpawnAgentResult } from "../subagents/format.js";
5
- import { parseSubagentLaunchModel } from "../subagents/launch_model.js";
6
- import { resolveSubagentEffectiveSettings } from "../subagents/registry.js";
7
- import { formatCwd } from "../utils/format.js";
8
- import { parseToolArgs } from "../utils/zod.js";
9
- import { buildToolRunPresentation } from "./presentation.js";
10
- import { createTextToolOutcome, executeTool, } from "./registry.js";
11
- import { buildSubagentPresentation } from "./subagent_ui.js";
12
- import { TOOL_NAME_SPAWN_AGENT } from "./tool_names.js";
13
- const SPAWN_AGENT_DESCRIPTION = [
14
- "Spawn a subagent to run in the background and return its id.",
15
- "Use wait_for_agents to read its latest response once it finishes.",
16
- "Follow your system instructions for delegation policy.",
17
- ].join(" ");
18
- const SPAWN_AGENT_TITLE_DESCRIPTION = [
19
- "A short single-line human-friendly UI title shown while the subagent runs.",
20
- "Do not use title case; all lower-case is preferred except for proper nouns.",
21
- ].join(" ");
22
- const SPAWN_AGENT_PROMPT_DESCRIPTION = [
23
- "The prompt to send to the subagent.",
24
- "This is the only input the subagent will receive; it must be self-contained and specific.",
25
- "Include all necessary context and instructions in the prompt for the subagent to complete " +
26
- "the request successfully.",
27
- ].join(" ");
28
- const SPAWN_AGENT_MODEL_DESCRIPTION = [
29
- "Optional launch override in format <provider>/<model>:<effort>.",
30
- "By default, omit this field unless the user explicitly asks to use a specific model.",
31
- "When provided, the value must match one of the configured subagent launch models.",
32
- ].join(" ");
33
- const SPAWN_AGENT_WORKING_DIRECTORY_DESCRIPTION = [
34
- "Optional single-line working directory for the subagent.",
35
- "When set, subagent runs as if it was started in this directory.",
36
- ].join(" ");
37
- export const SPAWN_AGENT_TOOL = {
38
- name: TOOL_NAME_SPAWN_AGENT,
39
- description: SPAWN_AGENT_DESCRIPTION,
40
- parameters: Type.Object({
41
- title: Type.String({
42
- description: SPAWN_AGENT_TITLE_DESCRIPTION,
43
- pattern: "^[^\\r\\n]+$",
44
- }),
45
- prompt: Type.String({ description: SPAWN_AGENT_PROMPT_DESCRIPTION }),
46
- model: Type.Optional(Type.String({ description: SPAWN_AGENT_MODEL_DESCRIPTION })),
47
- workingDirectory: Type.Optional(Type.String({
48
- description: SPAWN_AGENT_WORKING_DIRECTORY_DESCRIPTION,
49
- pattern: "^[^\\r\\n]+$",
50
- })),
51
- }, { additionalProperties: false }),
52
- };
53
- const spawnArgsSchema = z
54
- .object({
55
- title: z
56
- .string()
57
- .trim()
58
- .min(1, "must not be empty.")
59
- .refine((title) => !/[\r\n]/.test(title), "must be a single line."),
60
- prompt: z.string().trim().min(1, "must not be empty."),
61
- model: z.string().trim().min(1, "must not be empty.").optional(),
62
- workingDirectory: z
63
- .string()
64
- .trim()
65
- .min(1, "must not be empty.")
66
- .refine((path) => !/[\r\n]/.test(path), "must be a single line.")
67
- .optional(),
68
- })
69
- .strict();
70
- function formatAllowedLaunchModels(launchModels) {
71
- if (launchModels.length === 0) {
72
- return "(None configured)";
73
- }
74
- return launchModels.map((entry) => `'${entry}'`).join(", ");
75
- }
76
- function getSpawnAgentSubject(raw) {
77
- const parsedArgs = parseToolArgs(spawnArgsSchema, raw);
78
- return parsedArgs.ok ? parsedArgs.data.title : "(invalid arguments)";
79
- }
80
- function getSpawnAgentWorkingDirectory(raw, baseCwd) {
81
- const parsedArgs = parseToolArgs(spawnArgsSchema, raw);
82
- const workingDirectory = parsedArgs.ok ? parsedArgs.data.workingDirectory : undefined;
83
- return workingDirectory ? resolve(baseCwd, workingDirectory) : baseCwd;
84
- }
85
- export function createSpawnAgentToolDefinition(options) {
86
- const { backend, supervisor } = options;
87
- return {
88
- schema: SPAWN_AGENT_TOOL,
89
- describe: (toolCall) => {
90
- const subject = getSpawnAgentSubject(toolCall.arguments);
91
- const workingDirectory = getSpawnAgentWorkingDirectory(toolCall.arguments, options.cwd);
92
- return {
93
- presentation: buildToolRunPresentation({
94
- toolName: TOOL_NAME_SPAWN_AGENT,
95
- subject,
96
- metadata: [formatCwd(workingDirectory)],
97
- }),
98
- };
99
- },
100
- async execute(toolCall, context) {
101
- const { signal } = context;
102
- let title = "";
103
- const subject = getSpawnAgentSubject(toolCall.arguments);
104
- const presentationWorkingDirectory = formatCwd(getSpawnAgentWorkingDirectory(toolCall.arguments, options.cwd));
105
- const blocked = (reason, details, semanticOutcome = "blocked") => {
106
- const outcome = createTextToolOutcome(reason, semanticOutcome);
107
- const uiEvent = {
108
- type: "tool_call_blocked",
109
- toolCallId: toolCall.id,
110
- toolName: TOOL_NAME_SPAWN_AGENT,
111
- presentation: buildToolRunPresentation({
112
- toolName: TOOL_NAME_SPAWN_AGENT,
113
- subject: details?.title ?? subject,
114
- details: [{ text: reason }],
115
- metadata: [presentationWorkingDirectory],
116
- }),
117
- reason,
118
- };
119
- return {
120
- content: outcome.content,
121
- outcome: outcome.outcome,
122
- uiEvent,
123
- };
124
- };
125
- const parsedArgs = parseToolArgs(spawnArgsSchema, toolCall.arguments);
126
- if (!parsedArgs.ok) {
127
- return executeTool(context, () => blocked(`Invalid arguments: ${parsedArgs.error}`));
128
- }
129
- const { prompt, model, workingDirectory } = parsedArgs.data;
130
- title = parsedArgs.data.title;
131
- const { persona, cwd: baseCwd, subagentSystemPrompt } = options;
132
- let launchModelOverride;
133
- if (model) {
134
- const parsedLaunchModel = parseSubagentLaunchModel(model, {
135
- resolveModel: options.modelResolver,
136
- });
137
- if (parsedLaunchModel.error || !parsedLaunchModel.launchModel) {
138
- return executeTool(context, () => blocked(`Invalid model parameter: ${parsedLaunchModel.error}.`, {
139
- title,
140
- }));
141
- }
142
- const launchModels = persona.subagentLaunchModels;
143
- if (launchModels.length === 0) {
144
- return executeTool(context, () => blocked(`Subagents do not allow launch model overrides. Allowed values: ${formatAllowedLaunchModels(launchModels)}.`, {
145
- title,
146
- }));
147
- }
148
- if (!launchModels.includes(parsedLaunchModel.launchModel.normalized)) {
149
- return executeTool(context, blocked(`Model '${parsedLaunchModel.launchModel.normalized}' is not allowed for subagents. Allowed values: ${formatAllowedLaunchModels(launchModels)}.`, {
150
- title,
151
- }));
152
- }
153
- launchModelOverride = parsedLaunchModel.launchModel;
154
- }
155
- const effectiveSettings = resolveSubagentEffectiveSettings({
156
- persona,
157
- launchModel: launchModelOverride,
158
- });
159
- const cwd = workingDirectory ? resolve(baseCwd, workingDirectory) : baseCwd;
160
- let runtimeConfig;
161
- if (effectiveSettings.kind === "claude-code") {
162
- runtimeConfig = { ...effectiveSettings, workingDirectory: cwd };
163
- }
164
- else {
165
- let effectiveSubagentPrompt = subagentSystemPrompt;
166
- if (workingDirectory && cwd !== resolve(baseCwd)) {
167
- if (!options.resolveSubagentPrompt) {
168
- return executeTool(context, () => blocked("Working-directory context resolution is unavailable.", { title }));
169
- }
170
- try {
171
- effectiveSubagentPrompt = await options.resolveSubagentPrompt({ cwd, persona });
172
- }
173
- catch (error) {
174
- const errorMessage = error instanceof Error ? error.message : String(error);
175
- return executeTool(context, () => blocked(`Could not build the subagent prompt for workingDirectory '${cwd}': ${errorMessage}`, { title }, "failed"));
176
- }
177
- }
178
- const systemPrompt = effectiveSubagentPrompt;
179
- if (!systemPrompt) {
180
- return executeTool(context, () => blocked(`The subagent system prompt is unavailable.`, {
181
- title,
182
- }));
183
- }
184
- runtimeConfig = { ...effectiveSettings, systemPrompt, workingDirectory: cwd };
185
- }
186
- const reasoning = runtimeConfig.kind === "native"
187
- ? (runtimeConfig.settings.reasoning ?? "none")
188
- : runtimeConfig.effort;
189
- const modelLabel = `${runtimeConfig.model.provider}/${runtimeConfig.model.id}:${reasoning}`;
190
- const statusWorkingDirectory = formatCwd(runtimeConfig.workingDirectory);
191
- const statusPrefixParts = [modelLabel, statusWorkingDirectory];
192
- return executeTool(context, async () => {
193
- if (signal?.aborted) {
194
- const reason = "Subagent creation was cancelled.";
195
- const outcome = createTextToolOutcome(reason, "cancelled");
196
- const presentation = buildToolRunPresentation({
197
- toolName: TOOL_NAME_SPAWN_AGENT,
198
- subject,
199
- metadata: statusPrefixParts,
200
- });
201
- const uiEvent = {
202
- type: "tool_call_finished",
203
- toolCallId: toolCall.id,
204
- toolName: TOOL_NAME_SPAWN_AGENT,
205
- presentation,
206
- status: "error",
207
- };
208
- return { content: outcome.content, outcome: outcome.outcome, uiEvent };
209
- }
210
- let spawnResult;
211
- try {
212
- spawnResult = supervisor.spawn({
213
- runtimeConfig,
214
- prompt,
215
- title,
216
- originHistoryEntryId: context.assistantMessageId,
217
- config: options.config,
218
- backend,
219
- bashJobs: options.bashJobs,
220
- history: options.history,
221
- mcp: options.mcp,
222
- personaId: persona.id,
223
- });
224
- }
225
- catch (error) {
226
- const errorMessage = error instanceof Error ? error.message : String(error);
227
- return blocked(`Could not create subagent: ${errorMessage}`, { title }, "failed");
228
- }
229
- if (!spawnResult.ok) {
230
- const outcome = createTextToolOutcome(spawnResult.reason, "blocked");
231
- const uiEvent = {
232
- type: "tool_call_blocked",
233
- toolCallId: toolCall.id,
234
- toolName: TOOL_NAME_SPAWN_AGENT,
235
- presentation: buildToolRunPresentation({
236
- toolName: TOOL_NAME_SPAWN_AGENT,
237
- subject: subject,
238
- details: [{ text: spawnResult.reason }],
239
- metadata: [statusWorkingDirectory],
240
- }),
241
- reason: spawnResult.reason,
242
- };
243
- return { content: outcome.content, outcome: outcome.outcome, uiEvent };
244
- }
245
- const resultText = formatSpawnAgentResult(spawnResult.state, spawnResult.capacity);
246
- const outcome = createTextToolOutcome(resultText, "succeeded");
247
- const presentation = buildSubagentPresentation({
248
- toolName: TOOL_NAME_SPAWN_AGENT,
249
- subject: subject,
250
- output: prompt,
251
- detailTruncation: false,
252
- metadata: [...statusPrefixParts, spawnResult.state.id],
253
- });
254
- const uiEvent = {
255
- type: "tool_call_finished",
256
- toolCallId: toolCall.id,
257
- toolName: TOOL_NAME_SPAWN_AGENT,
258
- presentation,
259
- status: "success",
260
- };
261
- return { content: outcome.content, outcome: outcome.outcome, uiEvent };
262
- }, {
263
- type: "tool_call_started",
264
- toolCallId: toolCall.id,
265
- toolName: TOOL_NAME_SPAWN_AGENT,
266
- presentation: buildToolRunPresentation({
267
- toolName: TOOL_NAME_SPAWN_AGENT,
268
- subject: subject,
269
- metadata: [statusWorkingDirectory],
270
- }),
271
- });
272
- },
273
- };
274
- }
275
- //# sourceMappingURL=spawn_agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn_agent.js","sourceRoot":"","sources":["../../../src/core/tools/spawn_agent.ts"],"names":[],"mappings":"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"}