@enderfga/claw-orchestrator 7.5.6 → 7.6.1
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.
- package/README.md +5 -5
- package/dist/src/autoloop/dispatcher.d.ts +6 -1
- package/dist/src/autoloop/dispatcher.js +20 -3
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/base-oneshot-session.d.ts +5 -0
- package/dist/src/base-oneshot-session.js +9 -2
- package/dist/src/base-oneshot-session.js.map +1 -1
- package/dist/src/embedded-server.js +5 -0
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/fanout.d.ts +5 -5
- package/dist/src/fanout.js +9 -1
- package/dist/src/fanout.js.map +1 -1
- package/dist/src/index.js +21 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/nodes/fanout.js +3 -1
- package/dist/src/kernel/nodes/fanout.js.map +1 -1
- package/dist/src/kernel/types.d.ts +5 -11
- package/dist/src/kernel/types.js.map +1 -1
- package/dist/src/models.js +30 -12
- package/dist/src/models.js.map +1 -1
- package/dist/src/persistent-codex-app-session.d.ts +8 -0
- package/dist/src/persistent-codex-app-session.js +16 -4
- package/dist/src/persistent-codex-app-session.js.map +1 -1
- package/dist/src/persistent-codex-session.d.ts +7 -0
- package/dist/src/persistent-codex-session.js +29 -0
- package/dist/src/persistent-codex-session.js.map +1 -1
- package/dist/src/session-manager.d.ts +3 -0
- package/dist/src/session-manager.js +21 -1
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.d.ts +10 -6
- package/dist/src/types.js +6 -0
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
- package/skills/references/autoloop.md +22 -10
- package/skills/references/claude-cli-tracking.md +3 -1
- package/skills/references/getting-started.md +6 -6
- package/skills/references/multi-engine.md +5 -5
- package/skills/references/tools.md +48 -28
- package/skills/references/workflow.md +14 -2
|
@@ -35,6 +35,14 @@ uses its own default model rather than receiving the Claude `opus` / `sonnet`
|
|
|
35
35
|
defaults. Role instructions are included in-band for engines that do not expose a
|
|
36
36
|
native system-prompt flag.
|
|
37
37
|
|
|
38
|
+
Each role also accepts an optional fixed reasoning effort at run start:
|
|
39
|
+
`planner_effort`, `coder_effort`, and `reviewer_effort`. Accepted values are
|
|
40
|
+
`low`, `medium`, `high`, `xhigh`, `max`, `ultra`, and `auto`. Omission preserves
|
|
41
|
+
the session default. The values are persisted with the durable run and reused
|
|
42
|
+
after role reset or run resume. Adapter behavior is unchanged: supported engines
|
|
43
|
+
apply or clamp the value, while legacy engines without an effort mapping keep
|
|
44
|
+
their existing behavior.
|
|
45
|
+
|
|
38
46
|
Engines without native multi-turn conversation (one-shot custom engines) spawn a
|
|
39
47
|
fresh process per send with nothing to resume, so the dispatcher replays that
|
|
40
48
|
role's transcript in-band as a `<conversation_history>` block, oldest turns dropped
|
|
@@ -67,6 +75,8 @@ relaxed. A failed reply never reaches the control parser, so it cannot change
|
|
|
67
75
|
Coder and Reviewer engine/model choices can be overridden by the first successful
|
|
68
76
|
`spawn_subagents`; later attempts to change an already-started role are rejected
|
|
69
77
|
instead of silently diverging from the running session.
|
|
78
|
+
The Planner cannot override role effort: any engine/model choice it makes retains
|
|
79
|
+
the Coder or Reviewer's caller-selected effort.
|
|
70
80
|
|
|
71
81
|
Coder and Reviewer **never speak to you directly**. Anything they observe
|
|
72
82
|
flows through the Planner. The Planner decides what to surface and what to
|
|
@@ -163,14 +173,14 @@ autoloop_stop({ "run_id": "my-run", "reason": "done" })
|
|
|
163
173
|
|
|
164
174
|
## Plugin tools
|
|
165
175
|
|
|
166
|
-
| Tool | Args
|
|
167
|
-
| ---------------------- |
|
|
168
|
-
| `autoloop_start` | `run_id`, `workspace`, per-role `*_engine?`, `*_model?`, `*_custom_engine?`, `send_timeout_ms?`, `activity_lease_ms?`, `autoloop_hard_timeout_ms?` | Start a run; launches Planner and stores
|
|
169
|
-
| `autoloop_chat` | `run_id`, `text`
|
|
170
|
-
| `autoloop_status` | `run_id`
|
|
171
|
-
| `autoloop_list` | —
|
|
172
|
-
| `autoloop_stop` | `run_id`, `reason?`
|
|
173
|
-
| `autoloop_reset_agent` | `run_id`, `agent` ('planner' / 'coder' / 'reviewer'), `force?`, `eager_restart?`
|
|
176
|
+
| Tool | Args | What |
|
|
177
|
+
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
178
|
+
| `autoloop_start` | `run_id`, `workspace`, per-role `*_engine?`, `*_model?`, `*_effort?`, `*_custom_engine?`, `send_timeout_ms?`, `activity_lease_ms?`, `autoloop_hard_timeout_ms?` | Start a run; launches Planner and stores fixed role bindings and timeout controls. Each `custom` role requires its matching config. |
|
|
179
|
+
| `autoloop_chat` | `run_id`, `text` | Send a chat message to the Planner; returns the Planner's reply. |
|
|
180
|
+
| `autoloop_status` | `run_id` | Current state (status, iter, push count, subagents_spawned). |
|
|
181
|
+
| `autoloop_list` | — | All autoloop runs in the run store, live or not. |
|
|
182
|
+
| `autoloop_stop` | `run_id`, `reason?` | Terminate; stops Planner / Coder / Reviewer. |
|
|
183
|
+
| `autoloop_reset_agent` | `run_id`, `agent` ('planner' / 'coder' / 'reviewer'), `force?`, `eager_restart?` | Reset one subagent. Planner reset requires `force: true`. |
|
|
174
184
|
|
|
175
185
|
## Planner-emitted control tools
|
|
176
186
|
|
|
@@ -208,7 +218,7 @@ Custom engine configs are accepted only by `autoloop_start` (and, on resume, by
|
|
|
208
218
|
`SessionManager.autoloopResume()` or by reference in the HTTP resume body), never
|
|
209
219
|
through Planner output. This keeps config fields such as `env` and static CLI
|
|
210
220
|
arguments out of the Planner transcript and `decisions.jsonl`. The run record
|
|
211
|
-
stores only each role's engine and
|
|
221
|
+
stores only each role's engine, model, and effort, including the effective Coder/Reviewer
|
|
212
222
|
selection after a successful spawn. When resuming a run that uses `custom`,
|
|
213
223
|
supply the matching config again (over HTTP, as a `*CustomEngineRef`, see
|
|
214
224
|
[Backend HTTP / SSE](#backend-http--sse)); otherwise resume fails with a clear
|
|
@@ -278,7 +288,9 @@ Treat that warning as the signal to start a fresh session.
|
|
|
278
288
|
|
|
279
289
|
Subprocess deaths (Claude session lost), failed `git commit` in an iter, and
|
|
280
290
|
other phase-bound failures surface as `phase_error` messages instead of
|
|
281
|
-
silently masquerading as a "clarification request".
|
|
291
|
+
silently masquerading as a "clarification request". An empty or whitespace-only
|
|
292
|
+
Coder reply is also a phase error. Only a non-empty reply without
|
|
293
|
+
`iter_complete` is treated as a clarification request. The runner counts
|
|
282
294
|
consecutive `phase_error`s and:
|
|
283
295
|
|
|
284
296
|
1. Fires `on_phase_error` on each one (defaults to error / both channels).
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
This document tracks which Claude Code CLI version Claw Orchestrator is currently synced to, and which features have been integrated. Recent rows also record the other engines' versions checked in the same sync.
|
|
4
4
|
|
|
5
|
-
## Currently tracked: **Claude Code CLI 2.1.
|
|
5
|
+
## Currently tracked: **Claude Code CLI 2.1.286** (as of 2026-10-01, plugin v7.6.1)
|
|
6
6
|
|
|
7
7
|
## Sync history
|
|
8
8
|
|
|
9
9
|
| Plugin Version | Claude CLI Version | Date | Notable integrations |
|
|
10
10
|
| ------------------- | ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| v7.6.1 | 2.1.286 | 2026-10-01 | CC 2.1.284→2.1.286, Codex 0.159.0→0.159.3, agy 1.2.13→1.2.14, OpenCode 1.18.33→1.18.34; grok 1.0.44 unchanged. No flag surface changed. Integrated: `gpt-6.1-sol` registered ($2/$10, cache reads at 5% of input); a Codex session with no model is priced as the model Codex reports it ran rather than `gpt-5.5`. Read, no change needed: CC 2.1.285 starts `-p` sessions on third-party providers or with telemetry off in auto mode when no permission mode is set (this wrapper always passes `--permission-mode`); CC 2.1.286 resume fixes after parallel tool calls. Gemini 4 is not yet released: no API id, price or `agy models` entry. |
|
|
12
|
+
| v7.6.0 | 2.1.284 | 2026-09-29 | CC 2.1.283→2.1.284, Codex 0.157.1→0.159.0, agy 1.2.11→1.2.13, grok 1.0.41→1.0.44, OpenCode 1.18.32→1.18.33. No flag surface changed. Integrated: Claude Sonnet 5.5 registered and the `sonnet` alias moved to `claude-sonnet-5-5` (the CLI resolves `--model sonnet` to it); priced at $2/$10 per Mtok with $0.20 cache reads, the same as Sonnet 5. Read, no change needed: CC 2.1.284 makes Ultracode its own `/effort` toggle that no longer forces xhigh (the `ultracode` settings key this wrapper passes already composes with a separate effort) and starts interactive sessions in auto mode (headless sessions are unaffected); Codex 0.158–0.159 TUI, sandbox and approval changes; agy 1.2.12–1.2.13 rate-limit handling; OpenCode 1.18.33 Gemini effort defaults. |
|
|
11
13
|
| v7.5.6 | 2.1.283 | 2026-09-26 | CC 2.1.280→2.1.283, Codex 0.156.1→0.157.1, agy 1.2.8→1.2.11; grok 1.0.41 and OpenCode 1.18.32 unchanged. No flag surface changed. Integrated: since agy 1.2.9 a headless run waits for the agent's background tasks until `--print-timeout` and prints its reply only on exit, so agy's deadline now falls just inside the send timeout, and a run that reaches it mid-turn (`SUCCESS` with a partial reply, flagged only on stderr) fails as a timeout. Effort-qualified agy slugs are priced as their base model. Codex `appendSystemPrompt` delivery verified live on `codex exec` and `codex app-server`. Read, no change needed: agy 1.2.10 exits 3 on a partial response ending in an error (already a failed turn); agy 1.2.11 effort handling (the tier rules measured unchanged); CC 2.1.281 accepts `--system-prompt` together with its `-file` form; Codex 0.157 background-server startup applies to interactive sessions only. |
|
|
12
14
|
| v7.5.3 | 2.1.280 | 2026-09-23 | CC 2.1.278→2.1.280, Codex 0.155.1→0.156.1, agy 1.2.7→1.2.8, grok 1.0.34→1.0.41, OpenCode 1.18.31→1.18.32. Integrated: Claude Opus 5.5 registered and the `opus` alias moved to `claude-opus-5-5` (the CLI resolves `--model opus` to it); Opus 5.5 is priced at $4/$20 per Mtok with cache reads at 5% of input. GPT-6 Sol and Luna (Codex 0.156.1) registered from the vendors' published price tables. The weekly sweep's Codex upstream lookup now uses `gh release list` and prints the reason when a lookup fails. Codex was not exercised live this cycle. Read, no change needed: agy 1.2.8 (compaction and TUI); CC 2.1.280 fixes for symlinked writes, auto-mode retries, and subagent reports lost on compaction. |
|
|
13
15
|
| v7.5.1 | 2.1.278 | 2026-09-20 | CC 2.1.274→2.1.278, Codex 0.154.0→0.155.1, agy 1.2.5→1.2.7; grok 1.0.34 and OpenCode 1.18.31 unchanged. No flag surface changed. Integrated: since 2.1.277 a process started with `--resume` reports the resumed session's saved cost totals, so the first cost report of a resumed process is now taken as a baseline and that turn keeps its registry estimate, so the inherited total is not counted toward `maxBudgetUsd`. Read, no change needed: agy 1.2.6's unlimited `-p` default timeout (the wrapper passes `--print-timeout`); agy 1.2.6 exit code 3 with an `AGY_ERROR: {...}` line (already treated as a failed turn); agy 1.2.7 removed `find_by_name`, `grep_search` and `list_dir` from the default toolset; CC 2.1.277 fixed `claude -p` hanging after an internal error; CC 2.1.275 fixed `--forward-subagent-text` for `context: fork` skills; Codex 0.155.x is TUI work. |
|
|
@@ -32,7 +32,7 @@ Agents automatically get access to all session, council, and management tools.
|
|
|
32
32
|
```typescript
|
|
33
33
|
import { SessionManager } from '@enderfga/claw-orchestrator';
|
|
34
34
|
|
|
35
|
-
const manager = new SessionManager({ defaultModel: 'claude-sonnet-5' });
|
|
35
|
+
const manager = new SessionManager({ defaultModel: 'claude-sonnet-5-5' });
|
|
36
36
|
|
|
37
37
|
const session = await manager.startSession({
|
|
38
38
|
name: 'backend-fix',
|
|
@@ -87,11 +87,11 @@ The server exposes an OpenAI-compatible API at `/v1/chat/completions`. It serves
|
|
|
87
87
|
|
|
88
88
|
Quick config for any client:
|
|
89
89
|
|
|
90
|
-
| Setting | Value
|
|
91
|
-
| ------------ |
|
|
92
|
-
| API Base URL | `http://127.0.0.1:18796/v1`
|
|
93
|
-
| API Key | The server token (from `~/.openclaw/server-token`), or any string if auth is disabled
|
|
94
|
-
| Model | `claude-fable-5-1`, `claude-opus-5-5`, `claude-sonnet-5`, `gpt-5.5`, `agy-pro`, etc.
|
|
90
|
+
| Setting | Value |
|
|
91
|
+
| ------------ | -------------------------------------------------------------------------------------- |
|
|
92
|
+
| API Base URL | `http://127.0.0.1:18796/v1` |
|
|
93
|
+
| API Key | The server token (from `~/.openclaw/server-token`), or any string if auth is disabled |
|
|
94
|
+
| Model | `claude-fable-5-1`, `claude-opus-5-5`, `claude-sonnet-5-5`, `gpt-5.5`, `agy-pro`, etc. |
|
|
95
95
|
|
|
96
96
|
See [openai-compat.md](./openai-compat.md) for the full session-keying rules, `X-Session-Reset` semantics, the legacy-heuristic env var, and the `/v1/sessions` inspection endpoint.
|
|
97
97
|
|
|
@@ -28,7 +28,7 @@ SessionManager
|
|
|
28
28
|
|
|
29
29
|
### Claude Code (`engine: 'claude'`)
|
|
30
30
|
|
|
31
|
-
Default engine. Long-running subprocess with streaming JSON I/O. Tested with Claude Code CLI **2.1.
|
|
31
|
+
Default engine. Long-running subprocess with streaming JSON I/O. Tested with Claude Code CLI **2.1.286**.
|
|
32
32
|
|
|
33
33
|
- Persistent multi-turn conversations
|
|
34
34
|
- Real-time streaming (text, tool_use, tool_result, system events)
|
|
@@ -62,7 +62,7 @@ await manager.startSession({
|
|
|
62
62
|
|
|
63
63
|
### OpenAI Codex (`engine: 'codex'`)
|
|
64
64
|
|
|
65
|
-
Wraps the `codex exec` subcommand. Each `send()` spawns a new process. Tested with `codex` CLI **0.
|
|
65
|
+
Wraps the `codex exec` subcommand. Each `send()` spawns a new process. Tested with `codex` CLI **0.159.3**.
|
|
66
66
|
|
|
67
67
|
- Non-interactive execution via `codex exec --sandbox workspace-write --skip-git-repo-check --json`
|
|
68
68
|
- Real `usage` from the `turn.completed` JSON event (input, output, cached, reasoning tokens). **These are cumulative over the thread, not per turn**, so they replace the session totals rather than being added to them; subtracting consecutive values gives one turn's prompt
|
|
@@ -79,7 +79,7 @@ Wraps the `codex exec` subcommand. Each `send()` spawns a new process. Tested wi
|
|
|
79
79
|
- One-shot execution per message (no persistent subprocess between sends)
|
|
80
80
|
- Captures the real Codex thread ID and persists it, so later sends and process-level session resume use `codex exec resume <thread_id>`
|
|
81
81
|
- Working directory passed via `-C` on the first turn
|
|
82
|
-
-
|
|
82
|
+
- Model: with no `model`, codex runs its own default — the `model` in `~/.codex/config.toml` if set. Cost is then priced as the model codex reports it ran (the rollout's `turn_context`; `thread/start` on `codex-app`), and as `gpt-5.5` only when that cannot be read
|
|
83
83
|
- Requires `codex` CLI >= 0.119 (for `exec resume`): `npm install -g @openai/codex`
|
|
84
84
|
- **Does not support `/goal`** — for that, use `engine: 'codex-app'` below
|
|
85
85
|
|
|
@@ -126,7 +126,7 @@ await manager.startSession({
|
|
|
126
126
|
|
|
127
127
|
Wraps Google's **Antigravity CLI** (`agy`) — the successor to Gemini CLI (consumer
|
|
128
128
|
Gemini CLI tiers stopped serving 2026-06-18). Each `send()` spawns a new process
|
|
129
|
-
in print mode. Tested with `agy` **1.2.
|
|
129
|
+
in print mode. Tested with `agy` **1.2.14**.
|
|
130
130
|
|
|
131
131
|
- One-shot execution per message (no persistent subprocess)
|
|
132
132
|
- **Structured output and real usage** — `--output-format stream-json` emits an
|
|
@@ -211,7 +211,7 @@ await manager.startSession({
|
|
|
211
211
|
### Grok Build (`engine: 'grok'`)
|
|
212
212
|
|
|
213
213
|
Wraps xAI's **Grok Build** CLI. Each `send()` spawns `grok -p <msg> --output-format json`, which
|
|
214
|
-
prints a single JSON object and exits. Tested with `grok` **1.0.
|
|
214
|
+
prints a single JSON object and exits. Tested with `grok` **1.0.44**.
|
|
215
215
|
|
|
216
216
|
- **Cost comes from the engine, not from the price table.** The result object carries
|
|
217
217
|
`total_cost_usd`, and the wrapper writes it straight into the session's spend, so the run ledger
|
|
@@ -351,18 +351,29 @@ Run one task across N engine/model agents **in parallel** and collect their answ
|
|
|
351
351
|
|
|
352
352
|
### `fanout_start`
|
|
353
353
|
|
|
354
|
-
| Parameter | Type | Required | Description
|
|
355
|
-
| ------------------------------------ | ------- | -------- |
|
|
356
|
-
| `task` | string | yes | Shared
|
|
357
|
-
| `projectDir` | string | yes | Working directory all agents run in.
|
|
358
|
-
| `agents` | array | yes | Specs: `{ name, engine?, model?, prompt?, baseUrl?, permissionMode?, customEngine? }`. |
|
|
359
|
-
| `synthesize` | boolean | | Run a final synthesis pass over the successful results (needs ≥2).
|
|
360
|
-
| `synthesisModel` / `synthesisEngine` | string | | Model/engine for the synthesis pass (default engine `claude`).
|
|
361
|
-
| `agentTimeoutMs` | number | | Per-agent timeout (default 600000).
|
|
362
|
-
| `maxTurnsPerAgent` | number | | Max agent loop turns (default 30).
|
|
363
|
-
| `maxBudgetUsd` | number | | Per-agent spend cap.
|
|
354
|
+
| Parameter | Type | Required | Description |
|
|
355
|
+
| ------------------------------------ | ------- | -------- | --------------------------------------------------------------------------------------------------------- |
|
|
356
|
+
| `task` | string | yes | Shared task sent to every agent, optionally after its `persona`. |
|
|
357
|
+
| `projectDir` | string | yes | Working directory all agents run in. |
|
|
358
|
+
| `agents` | array | yes | Specs: `{ name, engine?, model?, effort?, prompt?, persona?, baseUrl?, permissionMode?, customEngine? }`. |
|
|
359
|
+
| `synthesize` | boolean | | Run a final synthesis pass over the successful results (needs ≥2). |
|
|
360
|
+
| `synthesisModel` / `synthesisEngine` | string | | Model/engine for the synthesis pass (default engine `claude`). |
|
|
361
|
+
| `agentTimeoutMs` | number | | Per-agent timeout (default 600000). |
|
|
362
|
+
| `maxTurnsPerAgent` | number | | Max agent loop turns (default 30). |
|
|
363
|
+
| `maxBudgetUsd` | number | | Per-agent spend cap. |
|
|
364
364
|
|
|
365
365
|
Runs in the background; returns `{ ok, id, status, ... }`. Poll with `fanout_status`.
|
|
366
|
+
Each agent's optional `effort` accepts `low`, `medium`, `high`, `xhigh`, `max`,
|
|
367
|
+
`ultra`, or `auto`. Omit it to keep the session default. The selected adapter
|
|
368
|
+
applies or clamps the value as documented for `session_start`; legacy adapters
|
|
369
|
+
that do not map effort retain their existing behavior.
|
|
370
|
+
|
|
371
|
+
Per-agent `persona` provides role instructions without replacing the shared
|
|
372
|
+
task. Fan-out sends `<persona>\n\n## Shared task\n\n<task>`. A non-empty
|
|
373
|
+
per-agent `prompt` keeps its original full-override semantics: it is sent by
|
|
374
|
+
itself, even when `persona` is also present. With neither field, the agent
|
|
375
|
+
receives `task` unchanged. These fields are persisted in the workflow spec, so
|
|
376
|
+
resume/recovery repeats the same message construction.
|
|
366
377
|
|
|
367
378
|
### `fanout_status`
|
|
368
379
|
|
|
@@ -567,22 +578,25 @@ Three-agent autonomous iteration loop (Planner / Coder / Reviewer) over a git wo
|
|
|
567
578
|
|
|
568
579
|
Start a chat-mode autoloop. Planner starts immediately; Coder + Reviewer start only after the Planner receives plan approval and emits `spawn_subagents`.
|
|
569
580
|
|
|
570
|
-
| Parameter | Type
|
|
571
|
-
| -------------------------- |
|
|
572
|
-
| `run_id` | string
|
|
573
|
-
| `workspace` | string
|
|
574
|
-
| `planner_engine` | EngineType
|
|
575
|
-
| `planner_model` | string
|
|
576
|
-
| `
|
|
577
|
-
| `
|
|
578
|
-
| `
|
|
579
|
-
| `
|
|
580
|
-
| `
|
|
581
|
-
| `
|
|
582
|
-
| `
|
|
583
|
-
| `
|
|
584
|
-
| `
|
|
585
|
-
| `
|
|
581
|
+
| Parameter | Type | Required | Description |
|
|
582
|
+
| -------------------------- | ----------- | -------- | ------------------------------------------------------------------------------------------------ |
|
|
583
|
+
| `run_id` | string | yes | Stable run identifier |
|
|
584
|
+
| `workspace` | string | yes | Git workspace path |
|
|
585
|
+
| `planner_engine` | EngineType | | Planner engine (default `claude`) |
|
|
586
|
+
| `planner_model` | string | | Planner model (Claude default `opus`; other engines use their own default when omitted) |
|
|
587
|
+
| `planner_effort` | EffortLevel | | Fixed Planner reasoning effort; omission keeps the session default |
|
|
588
|
+
| `planner_custom_engine` | object | | Trusted `CustomEngineConfig` when Planner engine is `custom`. **Local callers only** — see below |
|
|
589
|
+
| `coder_engine` | EngineType | | Default Coder engine (default `claude`) |
|
|
590
|
+
| `coder_model` | string | | Default Coder model (Claude default `sonnet`) |
|
|
591
|
+
| `coder_effort` | EffortLevel | | Fixed Coder reasoning effort; omission keeps the session default |
|
|
592
|
+
| `coder_custom_engine` | object | | Trusted config when Coder may use `custom`. **Local callers only** |
|
|
593
|
+
| `reviewer_engine` | EngineType | | Default Reviewer engine (default `claude`) |
|
|
594
|
+
| `reviewer_model` | string | | Default Reviewer model (Claude default `sonnet`) |
|
|
595
|
+
| `reviewer_effort` | EffortLevel | | Fixed Reviewer reasoning effort; omission keeps the session default |
|
|
596
|
+
| `reviewer_custom_engine` | object | | Trusted config when Reviewer may use `custom`. **Local callers only** |
|
|
597
|
+
| `send_timeout_ms` | number | | Per-agent send cap in ms (default 600000; inclusive 5000–7200000) |
|
|
598
|
+
| `activity_lease_ms` | number | | Inactivity lease in ms (default 1800000; inclusive 60000–7200000) |
|
|
599
|
+
| `autoloop_hard_timeout_ms` | number | | Absolute run cap in ms (default 86400000; inclusive 600000–259200000) |
|
|
586
600
|
|
|
587
601
|
> **Custom engines are local-only.** A `CustomEngineConfig` names an executable to
|
|
588
602
|
> spawn plus its argv and env, so it may only be supplied by a caller that already
|
|
@@ -604,6 +618,12 @@ Start a chat-mode autoloop. Planner starts immediately; Coder + Reviewer start o
|
|
|
604
618
|
|
|
605
619
|
Custom configs are not persisted or accepted from Planner output. See [`multi-engine.md`](./multi-engine.md) for their shape.
|
|
606
620
|
|
|
621
|
+
Role efforts accept `low`, `medium`, `high`, `xhigh`, `max`, `ultra`, or
|
|
622
|
+
`auto`. They are fixed at run start, stored in the durable run spec, reused on
|
|
623
|
+
reset and resume, and are not part of the Planner's `spawn_subagents` control.
|
|
624
|
+
Planner-selected Coder/Reviewer engine or model overrides therefore retain the
|
|
625
|
+
effort chosen by the caller.
|
|
626
|
+
|
|
607
627
|
The three timeout controls form a hierarchy. `send_timeout_ms` caps one
|
|
608
628
|
Planner, Coder, or Reviewer delivery. A genuine send timeout is not retried:
|
|
609
629
|
the run pauses in `awaiting_resume` with a stable pending dispatch identity.
|
|
@@ -803,8 +823,8 @@ survives a process restart and can be resumed.
|
|
|
803
823
|
| `spec` | object | `WorkflowSpec`: `{ name, nodes[], cwd?, contract?, maxNodeVisits? }` |
|
|
804
824
|
| `template` | `solve` \| `council` \| `fanout` | Build a built-in instead of supplying `spec` |
|
|
805
825
|
| `task` | string | Required with `template` |
|
|
806
|
-
| `agents` | array | `{ name, engine?, model?, persona? }`
|
|
807
|
-
| `reviewers` | array | `solve` only —
|
|
826
|
+
| `agents` | array | `{ name, engine?, model?, effort?, persona? }` |
|
|
827
|
+
| `reviewers` | array | `solve` only — same agent binding for final reviewers |
|
|
808
828
|
| `humanGate` | boolean | `solve` only — park for approval before anything is written |
|
|
809
829
|
| `maxRepairs` | number | `solve` only, default 3 |
|
|
810
830
|
| `cwd` | string | Working directory |
|
|
@@ -151,6 +151,18 @@ is unrecoverable and reads back as "not found".
|
|
|
151
151
|
Every node takes `retry: { max, backoffMs }`, `timeoutMs`, and
|
|
152
152
|
`onFailure: 'fail' | 'continue'`.
|
|
153
153
|
|
|
154
|
+
Direct agent bindings use the same optional `engine`, `model`, and `effort`
|
|
155
|
+
fields. Fan-out and council entries configure them per agent; `effort` accepts
|
|
156
|
+
`low`, `medium`, `high`, `xhigh`, `max`, `ultra`, or `auto`. Omission preserves
|
|
157
|
+
the session default.
|
|
158
|
+
|
|
159
|
+
Fan-out agents may also set `persona` for role instructions. When no non-empty
|
|
160
|
+
per-agent `prompt` exists, the executor sends the persona followed by a
|
|
161
|
+
`## Shared task` section containing the node's shared prompt. A non-empty
|
|
162
|
+
per-agent `prompt` remains a complete override and takes precedence over both
|
|
163
|
+
persona and the shared task. The spec stores `prompt` and `persona` separately,
|
|
164
|
+
so a resumed node reconstructs the same message.
|
|
165
|
+
|
|
154
166
|
On `fanout` and `council`, `timeoutMs` bounds the whole node and `agentTimeoutMs` one
|
|
155
167
|
agent's send. They differ because agents beyond the free session slots wait for one, so
|
|
156
168
|
the node can run several agents' worth of time. Without `agentTimeoutMs`, `timeoutMs`
|
|
@@ -201,8 +213,8 @@ with `visits_lt`.
|
|
|
201
213
|
"kind": "fanout",
|
|
202
214
|
"prompt": "Investigate. Change nothing.",
|
|
203
215
|
"agents": [
|
|
204
|
-
{ "name": "a", "engine": "claude" },
|
|
205
|
-
{ "name": "b", "engine": "codex" },
|
|
216
|
+
{ "name": "a", "engine": "claude", "effort": "high" },
|
|
217
|
+
{ "name": "b", "engine": "codex", "effort": "ultra" },
|
|
206
218
|
],
|
|
207
219
|
"synthesize": true,
|
|
208
220
|
},
|