zelari-code 1.20.0 → 1.22.0

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 (37) hide show
  1. package/dist/cli/app.js +2 -1
  2. package/dist/cli/app.js.map +1 -1
  3. package/dist/cli/budget/historySummary.js +127 -0
  4. package/dist/cli/budget/historySummary.js.map +1 -0
  5. package/dist/cli/budget/llmCompact.js +114 -0
  6. package/dist/cli/budget/llmCompact.js.map +1 -0
  7. package/dist/cli/budget/tokenBudget.js +111 -24
  8. package/dist/cli/budget/tokenBudget.js.map +1 -1
  9. package/dist/cli/components/StatusBar.js +4 -1
  10. package/dist/cli/components/StatusBar.js.map +1 -1
  11. package/dist/cli/hooks/conversationContext.js +7 -0
  12. package/dist/cli/hooks/conversationContext.js.map +1 -1
  13. package/dist/cli/hooks/historyCompaction.js +77 -14
  14. package/dist/cli/hooks/historyCompaction.js.map +1 -1
  15. package/dist/cli/hooks/permissionPicker.js +76 -0
  16. package/dist/cli/hooks/permissionPicker.js.map +1 -0
  17. package/dist/cli/hooks/useChatTurn.js +32 -5
  18. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  19. package/dist/cli/main.bundled.js +1483 -579
  20. package/dist/cli/main.bundled.js.map +4 -4
  21. package/dist/cli/plugins/registry.js +0 -13
  22. package/dist/cli/plugins/registry.js.map +1 -1
  23. package/dist/cli/runHeadless.js +30 -1
  24. package/dist/cli/runHeadless.js.map +1 -1
  25. package/dist/cli/safety/toolPermissions.js +123 -0
  26. package/dist/cli/safety/toolPermissions.js.map +1 -0
  27. package/dist/cli/sessionTodos.js +67 -0
  28. package/dist/cli/sessionTodos.js.map +1 -0
  29. package/dist/cli/toolRegistry.js +134 -43
  30. package/dist/cli/toolRegistry.js.map +1 -1
  31. package/dist/cli/tools/skillTool.js +78 -0
  32. package/dist/cli/tools/skillTool.js.map +1 -0
  33. package/dist/cli/tools/taskTool.js +81 -47
  34. package/dist/cli/tools/taskTool.js.map +1 -1
  35. package/dist/cli/tools/todoTools.js +68 -0
  36. package/dist/cli/tools/todoTools.js.map +1 -0
  37. package/package.json +2 -2
@@ -26,6 +26,8 @@ import { AuditLogger } from './safety/auditLogger.js';
26
26
  import { runDiagnosticsForFile, formatDiagnostics } from './diagnostics/engine.js';
27
27
  import { createTaskTool } from './tools/taskTool.js';
28
28
  import { createAskUserTool } from './tools/askUser.js';
29
+ import { createSkillTool } from './tools/skillTool.js';
30
+ import { createTodoReadTool, createTodoWriteTool } from './tools/todoTools.js';
29
31
  import { createLspTools } from './lsp/tools.js';
30
32
  import { getSharedLspManager } from './lsp/manager.js';
31
33
  import { createAstTools } from './ast/tools.js';
@@ -34,6 +36,8 @@ import { createBrowserTool } from './browser/tools.js';
34
36
  import { createSshTools } from './ssh/tools.js';
35
37
  import { createWorldModelTools } from './workspace/worldModel.js';
36
38
  import { providerFromEnv, openaiCompatibleProvider } from './provider/openai-compatible.js';
39
+ import { defaultPermissionPolicy, resolveToolPermission, } from './safety/toolPermissions.js';
40
+ import { typedErr } from '@zelari/core/harness/tools/toolTypes';
37
41
  import { cliToolToEnhanced, registerCustomTool } from '@zelari/core/skills';
38
42
  /**
39
43
  * Create a fresh ToolRegistry pre-populated with the 5 built-in tools,
@@ -72,46 +76,74 @@ export function createBuiltinToolRegistry(options = {}) {
72
76
  const safeFetchUrl = wrapWithAudit(fetchUrlTool, audit, sessionId);
73
77
  const safeWebSearch = wrapWithAudit(webSearchTool, audit, sessionId);
74
78
  const registry = new ToolRegistry();
75
- // Read-only mode (used for sub-agents): only tools that observe the
76
- // workspace no write/edit/apply_diff/bash, and no `task` tool, so a
77
- // sub-agent can neither mutate the repo nor recurse into more sub-agents.
78
- // v1.8.0 planMode: same mutator strip (plan phase explores/designs only).
79
- const readOnly = options.readOnly === true || options.planMode === true;
79
+ const profile = options.profile ?? 'full';
80
+ // Read-only / plan / explore: observe only.
81
+ // verify: observe + bash.
82
+ // general: mutators but no nested task (handled below).
83
+ const readOnly = options.readOnly === true ||
84
+ options.planMode === true ||
85
+ profile === 'explore';
86
+ const verifyMode = profile === 'verify';
87
+ const allowMutators = !readOnly && !verifyMode;
88
+ const allowBash = allowMutators || verifyMode;
89
+ const permPolicy = options.permissionPolicy ?? defaultPermissionPolicy();
90
+ const withPerm = (t) => wrapWithPermissions(t, permPolicy, options.onPermissionAsk);
80
91
  // Observe tools — always registered.
81
- registry.register(safeReadFile);
82
- registry.register(safeGrepContent);
83
- registry.register(safeListFiles);
84
- registry.register(safeShowDiff);
85
- registry.register(safeFetchUrl);
86
- registry.register(safeWebSearch);
87
- // Mutating tools — full registry only (not plan phase / sub-agent).
88
- if (!readOnly) {
89
- registry.register(safeWriteFile);
90
- registry.register(safeEditFile);
91
- registry.register(safeBash);
92
- registry.register(safeApplyDiff);
92
+ registry.register(withPerm(safeReadFile));
93
+ registry.register(withPerm(safeGrepContent));
94
+ registry.register(withPerm(safeListFiles));
95
+ registry.register(withPerm(safeShowDiff));
96
+ registry.register(withPerm(safeFetchUrl));
97
+ registry.register(withPerm(safeWebSearch));
98
+ // Mutating tools — full/general only.
99
+ if (allowMutators) {
100
+ registry.register(withPerm(safeWriteFile));
101
+ registry.register(withPerm(safeEditFile));
102
+ registry.register(withPerm(safeApplyDiff));
103
+ }
104
+ if (allowBash) {
105
+ registry.register(withPerm(safeBash));
93
106
  }
94
- // Interactive clarification — available in plan + build (not sub-agent readOnly).
95
- // Blocks the tool-loop until the user answers (same-run continue).
96
- const askUserTool = options.readOnly === true ? null : createAskUserTool(options.onAskUser);
107
+ // Interactive clarification — available in plan + build (not pure explore RO).
108
+ const askUserTool = options.readOnly === true || profile === 'explore' || profile === 'verify'
109
+ ? null
110
+ : createAskUserTool(options.onAskUser);
97
111
  if (askUserTool) {
98
- registry.register(askUserTool);
112
+ registry.register(withPerm(askUserTool));
113
+ }
114
+ // Lazy skill loader — parent (plan/build) and general subagent; not explore/verify.
115
+ const enableSkill = options.enableSkill !== false &&
116
+ options.readOnly !== true &&
117
+ profile !== 'explore' &&
118
+ profile !== 'verify';
119
+ const skillTool = enableSkill ? withPerm(createSkillTool({ cwd: root })) : null;
120
+ if (skillTool) {
121
+ registry.register(skillTool);
99
122
  }
100
- const summary = readOnly
101
- ? [safeReadFile, safeGrepContent, safeListFiles, safeShowDiff, safeFetchUrl, safeWebSearch]
102
- : [
103
- safeReadFile,
104
- safeWriteFile,
105
- safeEditFile,
106
- safeBash,
107
- safeGrepContent,
108
- safeListFiles,
109
- safeShowDiff,
110
- safeApplyDiff,
111
- safeFetchUrl,
112
- safeWebSearch,
113
- ...(askUserTool ? [askUserTool] : []),
114
- ];
123
+ // Session todos — parent agent only (not explore/verify; general skips like OpenCode).
124
+ const enableTodos = options.enableTodos !== false &&
125
+ options.readOnly !== true &&
126
+ profile === 'full';
127
+ const todoWrite = enableTodos ? withPerm(createTodoWriteTool()) : null;
128
+ const todoRead = enableTodos ? withPerm(createTodoReadTool()) : null;
129
+ if (todoWrite)
130
+ registry.register(todoWrite);
131
+ if (todoRead)
132
+ registry.register(todoRead);
133
+ const summary = [
134
+ safeReadFile,
135
+ safeGrepContent,
136
+ safeListFiles,
137
+ safeShowDiff,
138
+ safeFetchUrl,
139
+ safeWebSearch,
140
+ ...(allowMutators ? [safeWriteFile, safeEditFile, safeApplyDiff] : []),
141
+ ...(allowBash ? [safeBash] : []),
142
+ ...(askUserTool ? [askUserTool] : []),
143
+ ...(skillTool ? [skillTool] : []),
144
+ ...(todoWrite ? [todoWrite] : []),
145
+ ...(todoRead ? [todoRead] : []),
146
+ ];
115
147
  const tools = summary.map((t) => ({
116
148
  name: t.name,
117
149
  description: t.description,
@@ -174,21 +206,30 @@ export function createBuiltinToolRegistry(options = {}) {
174
206
  });
175
207
  }
176
208
  }
177
- // The `task` sub-agent tool — only in the full (non-read-only) registry.
178
- // Each invocation spins up a fresh READ-ONLY sub-registry via this same
179
- // factory (readOnly:true), so sub-agents are isolated and non-recursive.
180
- if (!readOnly && options.enableTask !== false) {
209
+ // The `task` sub-agent tool — parent full registry only (not plan/explore/verify/general).
210
+ // Sub-agents get a profile-specific registry and never nest another `task`.
211
+ const enableTask = options.enableTask !== false &&
212
+ !readOnly &&
213
+ !verifyMode &&
214
+ profile === 'full' &&
215
+ !options.planMode;
216
+ if (enableTask) {
181
217
  const taskTool = createTaskTool({
182
- createSubAgentContext: async () => {
218
+ createSubAgentContext: async ({ agent }) => {
183
219
  const cfg = await providerFromEnv();
184
220
  if (!cfg)
185
221
  return null;
222
+ const subProfile = taskAgentToProfile(agent);
186
223
  const { registry: subRegistry } = createBuiltinToolRegistry({
187
224
  root,
188
225
  audit,
189
226
  sessionId,
190
- readOnly: true,
227
+ profile: subProfile,
228
+ enableTask: false,
229
+ enableSkill: agent === 'general',
191
230
  diagnostics: false,
231
+ lspProvider: null,
232
+ permissionPolicy: defaultPermissionPolicy({ auto: true }),
192
233
  });
193
234
  return {
194
235
  providerStream: openaiCompatibleProvider(cfg),
@@ -200,10 +241,11 @@ export function createBuiltinToolRegistry(options = {}) {
200
241
  description: t.function.description,
201
242
  parameters: t.function.parameters,
202
243
  })),
244
+ agent,
203
245
  };
204
246
  },
205
247
  });
206
- registry.register(taskTool);
248
+ registry.register(withPerm(taskTool));
207
249
  tools.push({
208
250
  name: taskTool.name,
209
251
  description: taskTool.description,
@@ -310,6 +352,55 @@ export function registerCliToolsIntoCouncilCatalog(registry) {
310
352
  }
311
353
  }
312
354
  }
355
+ function taskAgentToProfile(agent) {
356
+ if (agent === 'general')
357
+ return 'general';
358
+ if (agent === 'verify')
359
+ return 'verify';
360
+ return 'explore';
361
+ }
362
+ /**
363
+ * Gate tool execution with allow/ask/deny policy (OpenCode-style permissions).
364
+ */
365
+ function wrapWithPermissions(original, policy, onAsk) {
366
+ const required = (original.permissions ?? []);
367
+ // Pure read tools under allow policy — no wrap overhead.
368
+ const decisionProbe = resolveToolPermission(original.name, required, policy);
369
+ if (decisionProbe.action === 'allow' && !required.includes('write') && !required.includes('execute')) {
370
+ // Still wrap write/execute categories; for read-only allow skip? Keep wrap
371
+ // always for consistency when policy might deny network later.
372
+ }
373
+ return {
374
+ ...original,
375
+ execute: async (input, ctx) => {
376
+ const decision = resolveToolPermission(original.name, required, policy);
377
+ if (decision.action === 'deny') {
378
+ return typedErr(`[permission] ${decision.reason}`);
379
+ }
380
+ if (decision.action === 'ask') {
381
+ if (!onAsk) {
382
+ return typedErr(`[permission] ${decision.reason} No interactive approval available ` +
383
+ `(set ZELARI_AUTO=1 to auto-allow, or configure onPermissionAsk).`);
384
+ }
385
+ try {
386
+ const ok = await onAsk({
387
+ toolName: original.name,
388
+ reason: decision.reason,
389
+ categories: decision.categories,
390
+ args: input,
391
+ });
392
+ if (!ok) {
393
+ return typedErr(`[permission] User denied "${original.name}" (${decision.categories.join(', ')}).`);
394
+ }
395
+ }
396
+ catch (err) {
397
+ return typedErr(`[permission] Approval UI failed: ${err instanceof Error ? err.message : String(err)}`);
398
+ }
399
+ }
400
+ return original.execute(input, ctx);
401
+ },
402
+ };
403
+ }
313
404
  function wrapWithSandbox(original, pathArgs, root, audit, sessionId) {
314
405
  return {
315
406
  ...original,
@@ -1 +1 @@
1
- {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/cli/toolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/cli/toolRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * skill — lazy-load a coding skill body into the conversation (OpenCode-style).
3
+ *
4
+ * The system prompt lists only skill names + short descriptions; the model
5
+ * calls this tool when it needs the full instructions. Avoids bloating every
6
+ * turn with all skill bodies.
7
+ *
8
+ * @since v1.21.0
9
+ */
10
+ import { z } from 'zod';
11
+ import { getCodingSkillById, listCodingSkills, } from '@zelari/core/skills';
12
+ import { typedOk, typedErr, } from '@zelari/core/harness/tools/toolTypes';
13
+ import { loadSkillMdSkills } from '../skillsMd.js';
14
+ const SkillArgsSchema = z.object({
15
+ name: z
16
+ .string()
17
+ .min(1)
18
+ .describe('Skill id/name to load (from the available skills list).'),
19
+ });
20
+ /** Build the catalog text for system prompts / tool description. */
21
+ export function formatAvailableSkillsCatalog(cwd = process.cwd()) {
22
+ // Ensure project SKILL.md skills are registered once per process path.
23
+ try {
24
+ loadSkillMdSkills(cwd);
25
+ }
26
+ catch {
27
+ /* ignore load failures — catalog still has builtins */
28
+ }
29
+ const skills = listCodingSkills();
30
+ if (skills.length === 0) {
31
+ return 'No skills registered.';
32
+ }
33
+ const lines = skills.slice(0, 80).map((s) => {
34
+ const desc = (s.description || s.id).replace(/\s+/g, ' ').trim().slice(0, 160);
35
+ return `- ${s.id}: ${desc}`;
36
+ });
37
+ return lines.join('\n');
38
+ }
39
+ export function createSkillTool(opts) {
40
+ const cwd = opts?.cwd ?? process.cwd();
41
+ const catalog = formatAvailableSkillsCatalog(cwd);
42
+ return {
43
+ name: 'skill',
44
+ description: 'Load the full instructions for a named coding skill into this turn. ' +
45
+ 'Call when a skill matches the current task. Available skills:\n' +
46
+ catalog,
47
+ permissions: ['read'],
48
+ timeoutMs: 10_000,
49
+ inputSchema: SkillArgsSchema,
50
+ execute: async (args) => {
51
+ try {
52
+ loadSkillMdSkills(cwd);
53
+ }
54
+ catch {
55
+ /* continue with already-registered */
56
+ }
57
+ const id = args.name.trim();
58
+ const skill = getCodingSkillById(id) ??
59
+ listCodingSkills().find((s) => s.id.toLowerCase() === id.toLowerCase() || s.name?.toLowerCase() === id.toLowerCase());
60
+ if (!skill) {
61
+ const known = listCodingSkills()
62
+ .map((s) => s.id)
63
+ .slice(0, 40)
64
+ .join(', ');
65
+ return typedErr(`Unknown skill "${id}". Known: ${known || '(none)'}. Use /skill or pick from the list.`);
66
+ }
67
+ const body = skill.systemPromptFragment?.trim() ||
68
+ skill.description ||
69
+ `(skill ${skill.id} has no body)`;
70
+ const header = `# Skill: ${skill.id}\n${skill.description ? `> ${skill.description}\n\n` : ''}`;
71
+ return typedOk({
72
+ name: skill.id,
73
+ content: header + body,
74
+ });
75
+ },
76
+ };
77
+ }
78
+ //# sourceMappingURL=skillTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillTool.js","sourceRoot":"","sources":["../../../src/cli/tools/skillTool.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,65 @@
1
1
  /**
2
2
  * taskTool — delegate a bounded sub-task to an isolated sub-agent.
3
3
  *
4
- * The `task` tool lets the main agent spin up a fresh, read-only sub-agent
5
- * that runs a focused exploration/analysis task in ITS OWN context and
6
- * returns only a short conclusion. This keeps the main conversation lean on
7
- * large repos: instead of the parent burning thousands of tokens reading 20
8
- * files to answer "where is X handled?", it delegates, and only the answer
9
- * comes back.
10
- *
11
4
  * Isolation & safety:
12
- * - The sub-agent gets a READ-ONLY tool registry (read_file, list_files,
13
- * grep_content, show_diff, fetch_url, web_search) no write/edit/bash —
14
- * and, crucially, no `task` tool of its own, so sub-agents cannot recurse.
15
- * - Its messages are a fresh [system, user] pair; the parent transcript is
16
- * never shared, and only the final assistant message returns to the parent.
17
- * - The underlying AgentHarness self-bounds at 12 tool-loop turns, so a
18
- * sub-agent can't run away; the tool also carries a long timeout.
5
+ * - explore / verify: READ-ONLY (or read+bash for verify)
6
+ * - general: full tools except nested `task` (no recursion)
7
+ * - Parent gets only a short conclusion, not the full sub-transcript
19
8
  *
20
- * The provider/registry factory and the harness constructor are injected
21
- * (`TaskToolDeps`) so the whole flow is unit-testable without a real provider.
9
+ * @since v0.7.x · typed agents v1.21.0
22
10
  */
23
11
  import { z } from 'zod';
24
12
  import { typedOk, typedErr, } from '@zelari/core/harness/tools/toolTypes';
25
- export const SUBAGENT_SYSTEM_PROMPT = [
26
- 'You are a focused sub-agent spawned to answer ONE bounded question or',
27
- 'complete ONE small research task for a parent coding agent.',
28
- '',
29
- 'You have READ-ONLY tools (read files, list files, search, fetch URLs).',
30
- 'You cannot edit files or run shell commands — do not attempt to.',
31
- '',
32
- 'Work efficiently: gather only what you need, then STOP and reply with a',
33
- 'concise, self-contained conclusion the parent can act on. Include concrete',
34
- 'references (file paths, line numbers, symbol names) but do not paste large',
35
- 'file dumps. Do not ask the parent follow-up questions — deliver your best',
36
- 'answer with what you can find.',
13
+ const EXPLORE_PROMPT = [
14
+ 'You are a focused EXPLORE sub-agent for a parent coding agent.',
15
+ 'READ-ONLY tools only (read, list, grep, fetch). No edits, no shell.',
16
+ 'Gather only what you need, then STOP with a concise conclusion:',
17
+ 'file paths, symbols, line refs, and how things connect. No large dumps.',
18
+ 'Do not ask follow-up questions.',
19
+ ].join('\n');
20
+ const GENERAL_PROMPT = [
21
+ 'You are a GENERAL sub-agent that can read AND modify the codebase for one',
22
+ 'bounded unit of work. Prefer small, correct edits. Run checks when needed.',
23
+ 'Return a short report: what changed, files touched, remaining risks.',
24
+ 'Do not spawn further sub-agents. Do not expand scope beyond the prompt.',
37
25
  ].join('\n');
26
+ const VERIFY_PROMPT = [
27
+ 'You are a VERIFY sub-agent. Confirm whether work is correct on disk.',
28
+ 'You may read files and run test/build commands via bash. Prefer',
29
+ 'targeted checks over full suite when possible.',
30
+ 'Report: pass/fail, commands run, key output, and gaps.',
31
+ ].join('\n');
32
+ export function systemPromptForAgent(agent) {
33
+ if (agent === 'general')
34
+ return GENERAL_PROMPT;
35
+ if (agent === 'verify')
36
+ return VERIFY_PROMPT;
37
+ return EXPLORE_PROMPT;
38
+ }
39
+ export function maxToolCallsForThoroughness(thoroughness, agent) {
40
+ if (agent === 'general') {
41
+ if (thoroughness === 'quick')
42
+ return 8;
43
+ if (thoroughness === 'deep')
44
+ return 20;
45
+ return 12;
46
+ }
47
+ if (agent === 'verify') {
48
+ if (thoroughness === 'quick')
49
+ return 6;
50
+ if (thoroughness === 'deep')
51
+ return 14;
52
+ return 10;
53
+ }
54
+ // explore
55
+ if (thoroughness === 'quick')
56
+ return 4;
57
+ if (thoroughness === 'deep')
58
+ return 12;
59
+ return 6;
60
+ }
61
+ /** @deprecated use systemPromptForAgent('explore') — kept for tests */
62
+ export const SUBAGENT_SYSTEM_PROMPT = EXPLORE_PROMPT;
38
63
  const TaskArgsSchema = z.object({
39
64
  description: z
40
65
  .string()
@@ -45,6 +70,15 @@ const TaskArgsSchema = z.object({
45
70
  .min(1)
46
71
  .describe('The full, self-contained instruction for the sub-agent. It has no access ' +
47
72
  'to this conversation, so include all context it needs.'),
73
+ agent: z
74
+ .enum(['explore', 'general', 'verify'])
75
+ .optional()
76
+ .describe('Sub-agent type: explore (read-only research, default), general (can edit), ' +
77
+ 'verify (read + bash tests). Prefer explore for search; general for isolated edits.'),
78
+ thoroughness: z
79
+ .enum(['quick', 'medium', 'deep'])
80
+ .optional()
81
+ .describe('How deep the sub-agent should go (tool budget). Default medium.'),
48
82
  });
49
83
  /**
50
84
  * Run a sub-agent to completion and return the text of its final assistant
@@ -63,20 +97,17 @@ async function runSubAgent(harness) {
63
97
  current += ev.delta;
64
98
  break;
65
99
  case 'message_end':
66
- // Keep the most recent non-empty message as the running conclusion.
67
100
  if (current.trim())
68
101
  lastCompleted = current;
69
102
  current = '';
70
103
  break;
71
104
  case 'error':
72
- // Cancellations arrive as error events; record the message.
73
105
  error = ev.message;
74
106
  break;
75
107
  default:
76
108
  break;
77
109
  }
78
110
  }
79
- // A run that ended mid-stream (no message_end) still has buffered text.
80
111
  const result = (lastCompleted || current).trim();
81
112
  return { result, ...(error ? { error } : {}) };
82
113
  }
@@ -84,22 +115,21 @@ async function runSubAgent(harness) {
84
115
  export function createTaskTool(deps) {
85
116
  return {
86
117
  name: 'task',
87
- description: 'Delegate a focused, READ-ONLY research/exploration sub-task to an isolated ' +
88
- 'sub-agent that has its own fresh context and returns only a concise conclusion. ' +
89
- 'Use it to keep your own context lean — e.g. "find where feature X is implemented ' +
90
- 'and summarize how it works" on large codebases. The sub-agent cannot edit files ' +
91
- 'or run shell commands. Provide a fully self-contained `prompt` (it cannot see this ' +
92
- 'conversation).',
93
- // The sub-agent reads the workspace and may hit the network (fetch/search),
94
- // but never writes or runs shell commands.
95
- permissions: ['read', 'network'],
96
- // Sub-agents run a full (bounded) agent loop — allow generous wall time.
118
+ description: 'Delegate a focused sub-task to an isolated sub-agent with its own context; ' +
119
+ 'returns only a concise conclusion (keeps parent context lean).\n' +
120
+ '- agent=explore (default): read-only research/search\n' +
121
+ '- agent=general: can edit files for one bounded unit of work\n' +
122
+ '- agent=verify: read + bash to run tests/checks\n' +
123
+ 'Provide a fully self-contained `prompt` (sub-agent cannot see this conversation).',
124
+ permissions: ['read', 'network', 'write', 'execute'],
97
125
  timeoutMs: 300_000,
98
126
  inputSchema: TaskArgsSchema,
99
127
  execute: async (args, ctx) => {
128
+ const agent = args.agent ?? 'explore';
129
+ const thoroughness = args.thoroughness ?? 'medium';
100
130
  let sub;
101
131
  try {
102
- sub = await deps.createSubAgentContext();
132
+ sub = await deps.createSubAgentContext({ agent, thoroughness });
103
133
  }
104
134
  catch (err) {
105
135
  return typedErr(`task: could not initialize sub-agent — ${err instanceof Error ? err.message : String(err)}`);
@@ -107,19 +137,20 @@ export function createTaskTool(deps) {
107
137
  if (!sub) {
108
138
  return typedErr('task: no provider configured for the sub-agent (set an API key / run /login).');
109
139
  }
140
+ const maxToolCalls = maxToolCallsForThoroughness(thoroughness, agent);
110
141
  const config = {
111
142
  model: sub.model,
112
143
  provider: sub.provider,
113
144
  messages: [
114
- { role: 'system', content: SUBAGENT_SYSTEM_PROMPT },
145
+ { role: 'system', content: systemPromptForAgent(agent) },
115
146
  { role: 'user', content: args.prompt },
116
147
  ],
117
148
  tools: sub.tools,
118
149
  toolRegistry: sub.registry,
119
150
  providerStream: sub.providerStream,
120
151
  cwd: ctx.cwd,
121
- // Guard against a single turn ballooning context on "explore" tasks.
122
- maxToolCallsPerTurn: 5,
152
+ maxToolCallsPerTurn: maxToolCalls,
153
+ maxToolLoopIterations: Math.max(12, maxToolCalls + 4),
123
154
  };
124
155
  let harness;
125
156
  try {
@@ -136,9 +167,12 @@ export function createTaskTool(deps) {
136
167
  }
137
168
  const { result, error } = await runSubAgent(harness);
138
169
  if (!result) {
139
- return typedErr(`task: sub-agent produced no output${error ? ` (${error})` : ''}.`);
170
+ return typedErr(`task: sub-agent (${agent}) produced no output${error ? ` (${error})` : ''}.`);
140
171
  }
141
- return typedOk({ result });
172
+ return typedOk({
173
+ result: `[sub-agent:${agent}/${thoroughness}]\n${result}`,
174
+ agent,
175
+ });
142
176
  },
143
177
  };
144
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taskTool.js","sourceRoot":"","sources":["../../../src/cli/tools/taskTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taskTool.js","sourceRoot":"","sources":["../../../src/cli/tools/taskTool.ts"],"names":[],"mappings":"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"}