Harness spec 2.0.0: background work is a job — commands and subagents alike, seen and steered

One registry per process, every job owned by a session: bash's background commands (and a command
still running at its timeout, which now goes to the background instead of being killed) and
subagents started with task background: true. job_list, job_output, job_stop (the former
bash_list, bash_output, bash_kill) and the new job_send and report; a finished job wakes the owning
session in every front end with its marked note. The TUI counts jobs, lists them (/jobs), opens a
command's output, enters a subagent and messages it, moves a command to the background (ctrl+b)
and asks before quitting with jobs running. The link gains the jobs capability. Subagents get a
session row of their own, the spec's preamble and agent texts, and their errors reach the report.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
HomerandClaude Fable 5.1 committed 2026-10-20 16:17:00 +00:00
1 parent aaa3e3a44f
commit 2183040db8
75 files changed
+3614 -437

No files matched your search

+8 -4
View File
@@ -1,5 +1,6 @@
import { applyPatchTool } from "./apply_patch.ts"
import { bashKillTool, bashListTool, bashOutputTool, bashTool } from "./bash.ts"
import { bashTool } from "./bash.ts"
import { jobListTool, jobOutputTool, jobSendTool, jobStopTool, reportTool } from "./job_tools.ts"
import { editTool } from "./edit.ts"
import { multieditTool } from "./multiedit.ts"
import { askUserTool } from "./ask_user.ts"
@@ -30,9 +31,10 @@ export const BUILTIN_TOOLS: Tool[] = [
grepTool,
listTool,
bashTool,
bashOutputTool,
bashListTool,
bashKillTool,
jobOutputTool,
jobListTool,
jobStopTool,
jobSendTool,
webSearchTool,
webFetchTool,
taskTool,
@@ -54,6 +56,8 @@ export const BUILTIN_TOOLS: Tool[] = [
skillManageTool,
settingsTool,
viewImageTool,
// Offered to subagents only (the spec's `offered: subagent`; app.ts SUBAGENT_ONLY).
reportTool,
] as Tool[]
export function toolMap(tools: Tool[] = BUILTIN_TOOLS): Map<string, Tool> {