Phase 7 of v2.0. BooCoder gains a terminal-driven UX and subagent isolation primitive. CLI (src/cli.ts): standalone entry point for terminal use. - boocode run "task" [--agent x] [--model y] — create + stream output - boocode ls [--state x] — formatted task table - boocode attach <id> — WS stream of running task - boocode send <id> "msg" — follow-up message to task session Connects to BOOCODER_URL (default http://100.114.205.53:9502). Human inbox (routes/inbox.ts): GET /api/inbox (failed/blocked tasks), POST /api/inbox/:id/retry (reset to pending for re-dispatch). Cost tracking: dispatcher aggregates tokens_used from all messages in the task's session after completion, stores in tasks.cost_tokens. GET /api/stats/costs?group_by=project|agent|day for aggregation. Boomerang subagent isolation (3 new tools): - new_task: creates child task with parent_task_id linkage, runs in fresh isolated session. Orchestrator sees only output_summary. - list_tasks: query child tasks of current parent - check_task_status: read task state + output_summary The orchestrator pattern: an agent with tools: [new_task, list_tasks, check_task_status] can ONLY dispatch — can't read files or MCP. This is the Roo Code Boomerang Tasks capability-restriction principle. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
import type { ToolDef } from './types.js';
|
|
import { editFileTool } from './edit_file.js';
|
|
import { createFileTool } from './create_file.js';
|
|
import { deleteFileTool } from './delete_file.js';
|
|
import { applyPendingTool } from './apply_pending.js';
|
|
import { rewindTool } from './rewind.js';
|
|
import { newTaskTool } from './new_task.js';
|
|
import { listTasksTool } from './list_tasks.js';
|
|
import { checkTaskStatusTool } from './check_task_status.js';
|
|
|
|
export type { ToolDef, ToolContext, ToolJsonSchema } from './types.js';
|
|
|
|
// All BooCoder write tools. The inference loop (Phase 2B) will combine these
|
|
// with BooChat's read-only tools to form the full tool set available to agents.
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export const WRITE_TOOLS: readonly ToolDef<any>[] = [
|
|
applyPendingTool,
|
|
createFileTool,
|
|
deleteFileTool,
|
|
editFileTool,
|
|
rewindTool,
|
|
// Boomerang subtask tools — orchestrator agents call these to spawn/monitor child tasks.
|
|
// An "Orchestrator" agent profile would whitelist [new_task, list_tasks, check_task_status].
|
|
newTaskTool,
|
|
listTasksTool,
|
|
checkTaskStatusTool,
|
|
];
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export const WRITE_TOOLS_BY_NAME: ReadonlyMap<string, ToolDef<any>> = new Map(
|
|
WRITE_TOOLS.map((t) => [t.name, t]),
|
|
);
|
|
|
|
export { editFileTool, createFileTool, deleteFileTool, applyPendingTool, rewindTool, newTaskTool, listTasksTool, checkTaskStatusTool };
|