Harness spec 3.2.0 in the CLI: effort levels, reasoning round-trip, no absolute paths
ci / check (push) Waiting to run
ci / check (push) Waiting to run
Levels (models/schema.json levels): provider/effort.ts levelsOf/levelFields/ readLevel — `off` only with thinking_switch and sends enable_thinking false and no effort, `default` for a model that takes no efforts and sends nothing, a level not offered is read as the start level. The engine's effort is a level; /effort shows nothing for one level, a Thinking switch for [off, X], a list otherwise; the status bar follows. /v1/models' thinking_switch, efforts [] and capacity.parallel are read (lembas/webui.ts); session/capacity.ts counts parallel slots. Reasoning (context.md §8): an assistant message of the current turn carries reasoning_content (provider/common.ts turnReasoning, openai-chat.ts); step-boundary deliveries, nudges and the wrap-up are marked turn: false and do not start a turn. Paths (context.md §11): the <env> block names the project and, started below the root, that directory relative to it (assemble.ts envLines); instruction files and @ attachments are named from the root or as ~/…; file tools and bash resolve relative paths against the project root. The team rules (team/team.ts) and conformance runners for levels, reasoning, paths and team; the team runtime follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
36 files changed
+1168
-153
No files matched your search
@@ -118,6 +118,17 @@ export const LOOP: {
|
||||
running_max: { default: number }
|
||||
subagent_steps: { default: number }
|
||||
}
|
||||
/** Teams (spec 3.2.0, harness/team.md): the size setting, names, marks, texts. */
|
||||
team: {
|
||||
agents: { min: number; max: number; cap: number }
|
||||
names: { pattern: string; lead: string; reserved: string[] }
|
||||
marks: { message: string; report: string }
|
||||
unavailable: { one_agent: string; one_request: string }
|
||||
work: { write: string[]; execute: string[]; kept: string[] }
|
||||
read_max: number
|
||||
texts: Record<"added" | "added_waiting" | "sent" | "stopped" | "manager" | "full" | "bad_name" | "all_name" | "taken" | "no_goal" | "unknown" | "self" | "nobody" | "not_yours" | "nobody_to_stop" | "no_report" | "ended", string>
|
||||
read: { tree: string; agent: string; lead_role: string; states: Record<"working" | "waiting" | "finished" | "idle", string>; active: string; room: string; message: string; report: string; none: string; more: string }
|
||||
}
|
||||
/** Context hygiene (spec 3.0.0, harness/context.md): the result ids, the texts of a read's
|
||||
* header, a stub, the elided line, recall; the output cap; what is deduplicated; the table
|
||||
* compaction adds. */
|
||||
@@ -138,6 +149,8 @@ export const LOOP: {
|
||||
dedupe: { by_hash: string[]; by_result: string[] }
|
||||
compaction: { heading: string; line: string; rows: number }
|
||||
reasoning: string
|
||||
/** The environment block's lines about where an agent session works (spec 3.2.0, §11). */
|
||||
env: { project: string; started: string }
|
||||
/** A note on the next user message (spec 3.1.0, context.md §10): its tags and its lines, in
|
||||
* the order they are said. */
|
||||
note: { open: string; close: string; date: string; mode: string; plan: string; memory: string; instructions: string; personality: string; mcp: string; empty: string
|
||||
@@ -147,6 +160,11 @@ export const LOOP: {
|
||||
plan_ended: string
|
||||
/** For a chat, which does not resend earlier tool results; the CLI's model has them. */
|
||||
plan_own: string
|
||||
/** Spec 3.2.0 (team.md §10): the size setting, said to the lead. */
|
||||
team: string
|
||||
team_lead: string
|
||||
team_one: string
|
||||
team_stopped: string
|
||||
}
|
||||
/** How long a session waits for its configured MCP servers before its first request. */
|
||||
mcp_wait_ms: number
|
||||
|
||||
Reference in new issue
Block a user