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
@@ -870,7 +870,7 @@
|
||||
"type": "string"
|
||||
},
|
||||
"effort": {
|
||||
"description": "The effort a session starts with, when the model takes it; otherwise the model's own default.",
|
||||
"description": "The effort level a session starts with, when the model offers it: an effort, off (thinking switched off, on a model with the switch) or default; otherwise the model's own start level.",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
@@ -886,9 +886,42 @@
|
||||
{
|
||||
"type": "string",
|
||||
"const": "off"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
},
|
||||
"agents": {
|
||||
"description": "Teams (harness team.md): how many agents a session's team may have. Offered only where subagents are on and the model serves two requests at once. /agents changes it for the session.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"min": {
|
||||
"description": "The fewest agents a team works with, the lead included (default 1). 2 or more: the lead works through a team from the start.",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 9007199254740991
|
||||
},
|
||||
"max": {
|
||||
"description": "The most agents a team may have, the lead included (default 4). 1: one agent, no team and no helper.",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 9007199254740991
|
||||
},
|
||||
"cap": {
|
||||
"description": "Global config only. The highest max a session may set (default 32).",
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 9007199254740991
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"subagents": {
|
||||
"description": "false: no subagents — no task tool and no team.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"settings_tool": {
|
||||
"description": "Global config only. The agent's settings tool: ask (default) — each change is approved like any tool call; allow — changes go through without asking (a less strict mode still asks); off — no settings tool.",
|
||||
"type": "string",
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
"maximum": 1
|
||||
},
|
||||
"efforts": {
|
||||
"description": "The model's own effort vocabulary, in offering order.",
|
||||
"description": "The model's own effort vocabulary, in offering order. [] — it takes none (its one level is `default`).",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
@@ -141,8 +141,12 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"thinking_switch": {
|
||||
"description": "The server turns thinking off for a request with chat_template_kwargs.enable_thinking false: only then is the level `off` offered.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"effort": {
|
||||
"description": "Default effort; `off` sends none.",
|
||||
"description": "The level a conversation starts with, when the model offers it: an effort, `off` (thinking switched off, with thinking_switch) or `default` (nothing sent, for a model that takes no efforts).",
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
@@ -158,6 +162,10 @@
|
||||
{
|
||||
"type": "string",
|
||||
"const": "off"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -202,9 +210,15 @@
|
||||
"maxLength": 300
|
||||
},
|
||||
"single_session": {
|
||||
"description": "The server serves one request at a time: a subagent on this same model would take its only slot and push the session's cached prompt out, so it is refused.",
|
||||
"description": "The server serves one request at a time: a subagent on this same model would take its only slot and push the session's cached prompt out, so it is refused. The same as parallel: 1.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"parallel": {
|
||||
"description": "How many requests the model's server serves at once (capacity.parallel); wins over single_session. Absent with no single_session: no limit (a hosted API). A team is offered only on a model that serves at least 2.",
|
||||
"type": "integer",
|
||||
"exclusiveMinimum": 0,
|
||||
"maximum": 9007199254740991
|
||||
},
|
||||
"group": {
|
||||
"description": "Models sharing one GPU server that holds one model at a time (llama-swap), as the LLeMbas server says (capacity.group): a subagent on another model of the same group would unload this one, so it is refused.",
|
||||
"type": "string"
|
||||
|
||||
Reference in new issue
Block a user