@enderfga/claw-orchestrator 7.13.0 → 7.15.0
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 +163 -137
- package/configs/autoloop-reviewer-prompt.md +1 -1
- package/configs/engines/README.md +45 -5
- package/configs/engines/dsh.json +17 -0
- package/configs/engines/kimi-code.json +17 -0
- package/dist/bin/acp-server.js +7 -12
- package/dist/bin/acp-server.js.map +1 -1
- package/dist/bin/cli.js +127 -67
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/mcp-server.js +2 -54
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/src/acp-server.d.ts +17 -9
- package/dist/src/acp-server.js +151 -30
- package/dist/src/acp-server.js.map +1 -1
- package/dist/src/autoloop/agent-tools.d.ts +2 -0
- package/dist/src/autoloop/agent-tools.js +7 -0
- package/dist/src/autoloop/agent-tools.js.map +1 -1
- package/dist/src/autoloop/dispatcher.d.ts +6 -0
- package/dist/src/autoloop/dispatcher.js +23 -1
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/autoloop/planner-tools.js +2 -0
- package/dist/src/autoloop/planner-tools.js.map +1 -1
- package/dist/src/council.d.ts +8 -0
- package/dist/src/council.js +45 -12
- package/dist/src/council.js.map +1 -1
- package/dist/src/dashboard/index.html +28 -14
- package/dist/src/embedded-server.js +34 -10
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/engine-presets.d.ts +7 -3
- package/dist/src/engine-presets.js +39 -6
- package/dist/src/engine-presets.js.map +1 -1
- package/dist/src/engine-spawn.js +3 -1
- package/dist/src/engine-spawn.js.map +1 -1
- package/dist/src/fanout.d.ts +13 -3
- package/dist/src/fanout.js +10 -0
- package/dist/src/fanout.js.map +1 -1
- package/dist/src/inbox-manager.d.ts +9 -0
- package/dist/src/inbox-manager.js +8 -2
- package/dist/src/inbox-manager.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +136 -52
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/conditions.d.ts +1 -1
- package/dist/src/kernel/conditions.js +1 -1
- package/dist/src/kernel/engine.d.ts +28 -8
- package/dist/src/kernel/engine.js +93 -19
- package/dist/src/kernel/engine.js.map +1 -1
- package/dist/src/kernel/nodes/agent.js +2 -0
- package/dist/src/kernel/nodes/agent.js.map +1 -1
- package/dist/src/kernel/nodes/council.js +9 -4
- package/dist/src/kernel/nodes/council.js.map +1 -1
- package/dist/src/kernel/nodes/fanout.js +5 -0
- package/dist/src/kernel/nodes/fanout.js.map +1 -1
- package/dist/src/kernel/nodes/goal.d.ts +8 -1
- package/dist/src/kernel/nodes/goal.js +40 -19
- package/dist/src/kernel/nodes/goal.js.map +1 -1
- package/dist/src/kernel/nodes/subflow.js +9 -1
- package/dist/src/kernel/nodes/subflow.js.map +1 -1
- package/dist/src/kernel/nodes/ultraapp.d.ts +1 -0
- package/dist/src/kernel/nodes/ultraapp.js +1 -0
- package/dist/src/kernel/nodes/ultraapp.js.map +1 -1
- package/dist/src/kernel/nodes/verifier.js +5 -1
- package/dist/src/kernel/nodes/verifier.js.map +1 -1
- package/dist/src/kernel/projections.d.ts +1 -0
- package/dist/src/kernel/projections.js +7 -1
- package/dist/src/kernel/projections.js.map +1 -1
- package/dist/src/kernel/templates/index.d.ts +6 -3
- package/dist/src/kernel/templates/index.js +8 -3
- package/dist/src/kernel/templates/index.js.map +1 -1
- package/dist/src/kernel/types.d.ts +30 -10
- package/dist/src/kernel/types.js.map +1 -1
- package/dist/src/logger.d.ts +6 -0
- package/dist/src/logger.js +14 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/mcp-annotations.d.ts +13 -0
- package/dist/src/mcp-annotations.js +100 -0
- package/dist/src/mcp-annotations.js.map +1 -0
- package/dist/src/models.d.ts +7 -0
- package/dist/src/models.js +9 -0
- package/dist/src/models.js.map +1 -1
- package/dist/src/openai-compat.d.ts +11 -5
- package/dist/src/openai-compat.js +55 -54
- package/dist/src/openai-compat.js.map +1 -1
- package/dist/src/persistent-acp-session.d.ts +83 -0
- package/dist/src/persistent-acp-session.js +433 -0
- package/dist/src/persistent-acp-session.js.map +1 -0
- package/dist/src/persistent-codex-app-session.d.ts +2 -0
- package/dist/src/persistent-codex-app-session.js +18 -9
- package/dist/src/persistent-codex-app-session.js.map +1 -1
- package/dist/src/persistent-codex-session.d.ts +14 -3
- package/dist/src/persistent-codex-session.js +22 -19
- package/dist/src/persistent-codex-session.js.map +1 -1
- package/dist/src/persistent-custom-session.d.ts +9 -0
- package/dist/src/persistent-custom-session.js +41 -21
- package/dist/src/persistent-custom-session.js.map +1 -1
- package/dist/src/persistent-grok-session.js +1 -1
- package/dist/src/persistent-grok-session.js.map +1 -1
- package/dist/src/run-ledger.d.ts +3 -3
- package/dist/src/session-manager.d.ts +34 -1
- package/dist/src/session-manager.js +169 -30
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.d.ts +63 -12
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/ultraapp/build.d.ts +5 -11
- package/dist/src/ultraapp/build.js +5 -11
- package/dist/src/ultraapp/build.js.map +1 -1
- package/dist/src/ultraapp/council-adapter.d.ts +5 -2
- package/dist/src/ultraapp/council-adapter.js +6 -6
- package/dist/src/ultraapp/council-adapter.js.map +1 -1
- package/dist/src/ultraapp/files.d.ts +7 -0
- package/dist/src/ultraapp/files.js +7 -1
- package/dist/src/ultraapp/files.js.map +1 -1
- package/dist/src/ultraapp/manager.d.ts +23 -3
- package/dist/src/ultraapp/manager.js +170 -72
- package/dist/src/ultraapp/manager.js.map +1 -1
- package/dist/src/ultraapp/narrator.js +1 -1
- package/dist/src/ultraapp/narrator.js.map +1 -1
- package/dist/src/ultraapp/versions.d.ts +27 -5
- package/dist/src/ultraapp/versions.js +58 -13
- package/dist/src/ultraapp/versions.js.map +1 -1
- package/openclaw.plugin.json +4 -13
- package/package.json +13 -6
- package/skills/SKILL.md +52 -24
- package/skills/references/acp.md +140 -57
- package/skills/references/autoloop.md +141 -35
- package/skills/references/claude-cli-tracking.md +9 -6
- package/skills/references/cli.md +129 -91
- package/skills/references/council.md +44 -22
- package/skills/references/dashboard.md +37 -21
- package/skills/references/getting-started.md +49 -15
- package/skills/references/inbox.md +13 -8
- package/skills/references/mcp.md +25 -17
- package/skills/references/multi-engine.md +180 -144
- package/skills/references/observability.md +90 -58
- package/skills/references/openai-compat.md +172 -82
- package/skills/references/sessions.md +101 -65
- package/skills/references/tools.md +209 -157
- package/skills/references/ultra.md +7 -7
- package/skills/references/ultraapp.md +101 -56
- package/skills/references/verification.md +112 -56
- package/skills/references/workflow.md +227 -93
- package/assets/banner.jpg +0 -0
|
@@ -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.310** (as of 2026-10-26, plugin v7.15.0)
|
|
6
6
|
|
|
7
7
|
## Sync history
|
|
8
8
|
|
|
9
9
|
| Plugin Version | Claude CLI Version | Date | Notable integrations |
|
|
10
10
|
| ------------------- | ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| v7.15.0 | 2.1.310 | 2026-10-26 | Engine versions as tracked in v7.14.0 (agy 1.4.7 is installed but not yet run live; the pin stays 1.4.6). Integrated: `codex-app` passes reasoning effort — `turn/start` `effort` and `model_reasoning_effort` in the thread `config` on `thread/start` / `thread/resume` (Codex 0.164.0). |
|
|
12
|
+
| v7.14.0 | 2.1.310 | 2026-10-25 | CC 2.1.307→2.1.310, agy 1.4.4→1.4.6, grok 1.0.67→1.0.70, OpenCode 1.19.3→1.19.4; Codex 0.164.0 unchanged. No flag the wrappers pass changed; one live turn per engine ok. Integrated: the `acp` engine (an ACP client over `@agentclientprotocol/sdk` 1.3.0), run against Kimi Code 2.3.1 (`kimi acp`, model from `KIMI_MODEL_*`), dsh 0.2.1-rc.2 (`dsh --profile acp`, `--patch` honoured) and OpenCode 1.19.4 (`opencode acp`, recall across a resumed session). Kimi Code and dsh report no usage over ACP. |
|
|
11
13
|
| v7.13.0 | 2.1.307 | 2026-10-24 | Codex 0.163.0→0.164.0; the other engines as tracked in v7.12.1. Integrated: Codex 0.164 app-server goal RPCs (`thread/goal/set` / `get` / `clear`, six goal states, `tokenBudget`, `thread/goal/updated`), structured `error` notifications (`codexErrorInfo`, `willRetry`), `turn/steer` during goal turns, and `approvalPolicy` on `thread/start` / `thread/resume`; the `goal` workflow node is built on them. Measured: a goal objective is capped at 4,000 characters, and a thread can be resumed only after its first turn. |
|
|
12
14
|
| v7.12.1 | 2.1.307 | 2026-10-22 | CC 2.1.302→2.1.307, agy 1.4.0→1.4.4, grok 1.0.62→1.0.67; Codex 0.163.0 and OpenCode 1.19.3 unchanged. No flag the wrappers pass changed. grok 1.0.67 makes `grok-4.7` its default and only model: registered (same prices and 500K window as `grok-4.6`), the `grok` alias moved to it, and a session with no `model` is labelled with the model grok reports. grok read-only re-measured on 1.0.67 (direct and shell writes blocked; the subagent probe hit the free-tier limit). OpenCode 2 still beta-only, still refused. |
|
|
13
15
|
| v7.12.0 | 2.1.302 | 2026-10-17 | CC 2.1.296→2.1.302, Codex 0.162.1→0.163.0, agy 1.3.2→1.4.0, grok 1.0.50→1.0.62, OpenCode 1.19.0→1.19.3. No flag the wrappers pass changed. grok read-only re-measured on 1.0.62 (direct, shell and subagent writes blocked; the failed-sandbox warning unchanged). OpenCode 2 still beta-only, still refused. Codex 0.163.0 turns Daybreak (security programme, not a model) on for eligible accounts; billing follows the model codex reports. |
|
|
@@ -48,8 +50,9 @@ This document tracks which Claude Code CLI version Claw Orchestrator is currentl
|
|
|
48
50
|
When syncing to a new Claude Code CLI version:
|
|
49
51
|
|
|
50
52
|
1. Run `claude --version` to confirm target version
|
|
51
|
-
2.
|
|
52
|
-
3.
|
|
53
|
-
4.
|
|
54
|
-
5.
|
|
55
|
-
6. Update the
|
|
53
|
+
2. Run `npx tsx scripts/sweep.ts` (or `--no-live` for versions and flags only) to see installed, pinned and upstream versions of every core engine, the flags each wrapper passes against the binary's `--help`, and one live turn per engine
|
|
54
|
+
3. Check Claude Code changelog / release notes for new flags, events, env vars since the last tracked version
|
|
55
|
+
4. Decide which features are valuable for programmatic/agent use (vs human-interactive only)
|
|
56
|
+
5. Implement worthwhile features (add to `SessionConfig` → wire into `persistent-session.ts` → expose in tool schema → document)
|
|
57
|
+
6. Update this file: the "Currently tracked" line and a new row with the version + notable integrations
|
|
58
|
+
7. Update the tested versions: the engine table in `AGENTS.md` (the pins the sweep reads), the engine compatibility table in `README.md`, and the "Tested with" line of each engine in [multi-engine.md](./multi-engine.md)
|
package/skills/references/cli.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# CLI Reference
|
|
2
2
|
|
|
3
|
-
The CLI is an HTTP client that talks to the Claw Orchestrator embedded server.
|
|
3
|
+
The CLI is an HTTP client that talks to the Claw Orchestrator embedded server. Under OpenClaw, the plugin starts the server on its first tool call (unless `CLAWO_NO_EMBEDDED_SERVER=1`). In standalone mode, run `clawo serve` first. `clawo acp` and `clawo engines` run locally and do not need the server.
|
|
4
|
+
|
|
5
|
+
## Connecting to the server
|
|
6
|
+
|
|
7
|
+
- **Address**: commands reach the server at `CLAWO_API_URL` (default `http://127.0.0.1:18796`).
|
|
8
|
+
- **Token**: every request carries the server's token, when the CLI finds one, as `Authorization: Bearer <token>`. The CLI reads it from `CLAWO_AUTH_TOKEN`, then `OPENCLAW_SERVER_TOKEN`, then `~/.openclaw/server-token`, which the server writes when it starts. See [Getting Started](./getting-started.md) for how the server chooses the token.
|
|
9
|
+
- **Errors**: when the server reports an error or cannot be reached, a command prints `Failed: <error>` to stderr and exits 1. With `--json`, `session-send` and `session-status` print the JSON result instead and still exit 1.
|
|
4
10
|
|
|
5
11
|
## Server
|
|
6
12
|
|
|
@@ -8,7 +14,9 @@ The CLI is an HTTP client that talks to the Claw Orchestrator embedded server. I
|
|
|
8
14
|
clawo serve [-p, --port <port>] [-H, --host <host>] [--ultraapp-runtime host|docker]
|
|
9
15
|
```
|
|
10
16
|
|
|
11
|
-
Start standalone embedded server (default port 18796, bound to `127.0.0.1
|
|
17
|
+
Start the standalone embedded server (default port 18796, bound to `127.0.0.1`, or `OPENCLAW_SERVER_HOST` when set; pass `-H 0.0.0.0` for remote access). `--ultraapp-runtime` selects how ultraapp builds run: `host` (default, spawns Node directly) or `docker`. The server also starts the ultraapp reverse-proxy router on port 19000 (or the next free port); if the router cannot start, ultraapp deploys are skipped and the server runs without it. If the server's port is already in use, `clawo serve` prints an error and exits 1.
|
|
18
|
+
|
|
19
|
+
Under `clawo serve` the session manager allows 32 concurrent sessions and unloads a session after 60 idle minutes (the plugin defaults are 5 and 120). Override with `OPENCLAW_SERVE_MAX_SESSIONS` and `OPENCLAW_SERVE_TTL_MINUTES`.
|
|
12
20
|
|
|
13
21
|
### Rate Limiting
|
|
14
22
|
|
|
@@ -16,14 +24,15 @@ The embedded server limits each IP address to 300 requests per minute (sliding w
|
|
|
16
24
|
|
|
17
25
|
### OpenAI-Compatible API
|
|
18
26
|
|
|
19
|
-
The server exposes an OpenAI-compatible chat completions endpoint, enabling any webchat frontend to use it as a backend.
|
|
27
|
+
The server exposes an OpenAI-compatible chat completions endpoint, enabling any webchat frontend to use it as a backend. The full rules — session keying, `X-Session-Reset`, tool calls and environment variables — are in [openai-compat.md](./openai-compat.md).
|
|
20
28
|
|
|
21
29
|
**Endpoints:**
|
|
22
30
|
|
|
23
|
-
| Endpoint | Method | Description
|
|
24
|
-
| ---------------------- | ------ |
|
|
25
|
-
| `/v1/chat/completions` | POST | Chat completions (streaming + non-streaming)
|
|
26
|
-
| `/v1/models` | GET | List available models
|
|
31
|
+
| Endpoint | Method | Description |
|
|
32
|
+
| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------ |
|
|
33
|
+
| `/v1/chat/completions` | POST | Chat completions (streaming + non-streaming) |
|
|
34
|
+
| `/v1/models` | GET | List available models |
|
|
35
|
+
| `/v1/sessions` | GET | List the live OpenAI-compatible sessions, each with turns, tokens, cached tokens, context use and cost |
|
|
27
36
|
|
|
28
37
|
**Request format** (same as OpenAI):
|
|
29
38
|
|
|
@@ -42,17 +51,17 @@ The server exposes an OpenAI-compatible chat completions endpoint, enabling any
|
|
|
42
51
|
3. A hash of the model, system prompt and tool definitions (`sys-<hash>`)
|
|
43
52
|
4. `default`, when all of those are empty
|
|
44
53
|
|
|
45
|
-
|
|
54
|
+
An `X-Session-Reset: 1` (or `true`) header answers the request from a fresh session: the session under that key is stopped first, and the fresh one is stopped once the reply is sent.
|
|
55
|
+
|
|
56
|
+
**Model routing:** The `model` field picks the engine. A model id or alias in the model registry routes to the engine it is registered under (`opus` → Claude, `gemini-3.8-flash` / `agy-pro` → Antigravity), and an `agy/` prefix always selects Antigravity (`agy`). Other names route by prefix:
|
|
46
57
|
|
|
47
|
-
- `
|
|
48
|
-
- `gpt-*`, `o3*`, `o4*`, `codex*` → Codex engine
|
|
58
|
+
- `gpt*`, `o3*`, `o4*`, `codex*` → Codex engine
|
|
49
59
|
- `grok*` → Grok engine
|
|
50
|
-
-
|
|
51
|
-
- `
|
|
52
|
-
- other `gemini*` → the legacy `gemini` engine (Gemini CLI is sunset; prefer `agy`)
|
|
60
|
+
- any other name containing `gemini` → the legacy `gemini` engine (Gemini CLI is sunset; prefer `agy/<model>` or a registered Antigravity model)
|
|
61
|
+
- `composer*`, `cursor*`, `auto` → the legacy `cursor` engine
|
|
53
62
|
- anything else → Claude engine
|
|
54
63
|
|
|
55
|
-
**CORS:** `/v1/` paths allow cross-origin requests by default. Set `OPENCLAW_CORS_ORIGINS=*` to allow all origins on all paths.
|
|
64
|
+
**CORS:** `/v1/` paths allow cross-origin requests by default, and `localhost` origins are allowed on every path. Set `OPENCLAW_CORS_ORIGINS=*` to allow all origins on all paths.
|
|
56
65
|
|
|
57
66
|
**Auto-compact:** When a session's context utilization exceeds 80%, the endpoint automatically compacts the session before sending the next message.
|
|
58
67
|
|
|
@@ -72,50 +81,58 @@ Run as an Agent Client Protocol agent over stdio (same as the `clawo-acp` binary
|
|
|
72
81
|
clawo session-start [name] [options]
|
|
73
82
|
```
|
|
74
83
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
| `-
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
| `--
|
|
83
|
-
| `--
|
|
84
|
-
| `--
|
|
85
|
-
| `--
|
|
86
|
-
| `--
|
|
87
|
-
| `--
|
|
88
|
-
| `--
|
|
89
|
-
| `--
|
|
90
|
-
| `--
|
|
91
|
-
|
|
|
92
|
-
| `--
|
|
93
|
-
|
|
|
94
|
-
| `--
|
|
95
|
-
| `--
|
|
96
|
-
| `--
|
|
97
|
-
| `--
|
|
98
|
-
| `--
|
|
99
|
-
| `--
|
|
100
|
-
| `--
|
|
101
|
-
| `--
|
|
102
|
-
| `--
|
|
103
|
-
| `--
|
|
104
|
-
|
|
105
|
-
|
|
84
|
+
`name` defaults to `session-<timestamp>`. Starting a name that is already live returns that session unchanged; a name in the resume registry resumes its conversation (see [sessions.md](./sessions.md#session-persistence)).
|
|
85
|
+
|
|
86
|
+
| Flag | Description |
|
|
87
|
+
| ------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
88
|
+
| `-d, --cwd <dir>` | Working directory |
|
|
89
|
+
| `-e, --engine <engine>` | Engine: `claude` (default), `codex`, `codex-app`, `agy`, `grok`, `opencode`, `acp`, or `custom` |
|
|
90
|
+
| `-m, --model <model>` | Model name or alias |
|
|
91
|
+
| `--permission-mode <mode>` | `acceptEdits` (default), `plan`, `auto`, `bypassPermissions`, `manual`, `dontAsk` |
|
|
92
|
+
| `--effort <level>` | `low`, `medium`, `high`, `xhigh`, `max`, `ultra`, `auto` (default); each engine clamps it to its own ladder |
|
|
93
|
+
| `--allowed-tools <tools>` | Comma-separated tools to auto-approve |
|
|
94
|
+
| `--disallowed-tools <tools>` | Comma-separated tools to deny |
|
|
95
|
+
| `--max-turns <n>` | Max agent loop turns |
|
|
96
|
+
| `--max-budget <usd>` | Spend cap in USD, checked before every send on every engine |
|
|
97
|
+
| `--system-prompt <text>` | Replace system prompt |
|
|
98
|
+
| `--append-system-prompt <text>` | Append to system prompt |
|
|
99
|
+
| `--agents <json>` | Custom sub-agents JSON |
|
|
100
|
+
| `--agent <name>` | Default agent |
|
|
101
|
+
| `--bare` | Claude Code minimal mode: skips hooks, LSP, auto-memory and CLAUDE.md discovery |
|
|
102
|
+
| `-w, --worktree [name]` | Git worktree |
|
|
103
|
+
| `--fallback-model <model>` | Fallback model |
|
|
104
|
+
| `--json-schema <schema>` | JSON Schema for structured output |
|
|
105
|
+
| `--mcp-config <paths>` | MCP config files (comma-separated) |
|
|
106
|
+
| `--settings <pathOrJson>` | Settings.json path or inline JSON |
|
|
107
|
+
| `--skip-persistence` | Keep the session out of the resume registry; Claude Code and Codex also skip writing their own transcript |
|
|
108
|
+
| `--betas <headers>` | Beta headers (comma-separated) |
|
|
109
|
+
| `--enable-agent-teams` | Enable agent teams |
|
|
110
|
+
| `--enable-auto-mode` | Enable auto permission mode |
|
|
111
|
+
| `--resume-session-id <id>` | Resume an earlier conversation by the engine's own id (Claude session id, Codex thread id, …) |
|
|
112
|
+
| `--base-url <url>` | Custom API endpoint (for proxy) |
|
|
113
|
+
| `--add-dir <dirs>` | Comma-separated additional working directories |
|
|
114
|
+
| `--custom-engine <preset>` | With `-e custom`: the id of a bundled engine preset (see [`clawo engines`](#clawo-engines)) |
|
|
115
|
+
| `--acp-agent <preset>` | With `-e acp`: the id of a bundled ACP agent preset, e.g. `kimi-code`, `dsh` |
|
|
116
|
+
|
|
117
|
+
Most of these flags map to Claude Code options; [multi-engine.md](./multi-engine.md) lists which ones each other engine honours. The remaining `session_start` options (`sandboxMode`, `autoCompactPercent`, `ultracode`, hook events, permission-prompt tool, debug output, `fromPr`, MCP channels, prompt-cache settings and others) are tool parameters only and have no CLI flag. See [Tools Reference](./tools.md#session_start).
|
|
106
118
|
|
|
107
119
|
### session-send
|
|
108
120
|
|
|
109
121
|
```bash
|
|
110
122
|
clawo session-send <name> <message> [options]
|
|
123
|
+
clawo session-send <name> --message-file <file> [options]
|
|
111
124
|
```
|
|
112
125
|
|
|
113
|
-
| Flag
|
|
114
|
-
|
|
|
115
|
-
| `--
|
|
116
|
-
| `--
|
|
117
|
-
|
|
|
118
|
-
| `-
|
|
126
|
+
| Flag | Description |
|
|
127
|
+
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
128
|
+
| `--message-file <file>` | Read the message from a file (long text, or text starting with `-`) |
|
|
129
|
+
| `--effort <level>` | Override effort for this message |
|
|
130
|
+
| `--plan` | Ask for a plan only: Claude Code and persistent custom engines get a plan-only instruction in front of the message; other engines ignore it |
|
|
131
|
+
| `-s, --stream` | Accepted, but has no effect: the server returns the reply when the turn ends, with no streamed chunks |
|
|
132
|
+
| `-t, --timeout <ms>` | Turn timeout (default 300000) |
|
|
133
|
+
| `--json` | Print the whole result as one line, including `ok`, `output`, `sessionId`, `error`, and `permissionDenials` / `images` when the turn had any |
|
|
134
|
+
|
|
135
|
+
`--plan` does not change the permission mode. For a session that cannot write, start it with `--permission-mode plan` (Claude Code, Grok) or the `sandboxMode: 'read-only'` tool parameter.
|
|
119
136
|
|
|
120
137
|
### session-stop
|
|
121
138
|
|
|
@@ -123,30 +140,40 @@ clawo session-send <name> <message> [options]
|
|
|
123
140
|
clawo session-stop <name>
|
|
124
141
|
```
|
|
125
142
|
|
|
143
|
+
Stops the session and removes it from the resume registry, so a later `session-start` with the same name begins a new conversation.
|
|
144
|
+
|
|
126
145
|
### session-list
|
|
127
146
|
|
|
128
147
|
```bash
|
|
129
148
|
clawo session-list
|
|
130
149
|
```
|
|
131
150
|
|
|
151
|
+
Lists the server's live sessions as `name — model (cwd)`. Sessions held only in the resume registry are not listed.
|
|
152
|
+
|
|
132
153
|
### session-status
|
|
133
154
|
|
|
134
155
|
```bash
|
|
135
|
-
clawo session-status <name>
|
|
156
|
+
clawo session-status <name> [--json]
|
|
136
157
|
```
|
|
137
158
|
|
|
159
|
+
Prints turns, tool calls, cost, tokens and uptime. `--json` prints the whole status as one line: `name`, `cwd`, `model`, `created`, `claudeSessionId` (the engine's resume id), `costUsd` (and `budgetUsd` / `budgetExhausted` when a spend cap is set), and `stats` with turns, `turnsSucceeded`, tool calls, tokens, `contextPercent`, uptime and the engine's own conversation id.
|
|
160
|
+
|
|
138
161
|
### session-grep
|
|
139
162
|
|
|
140
163
|
```bash
|
|
141
164
|
clawo session-grep <name> <pattern> [-n, --limit <n>]
|
|
142
165
|
```
|
|
143
166
|
|
|
167
|
+
Case-insensitive regular-expression search over the session's recent event history (`--limit` default 50). Prints the time and event type of each match.
|
|
168
|
+
|
|
144
169
|
### session-compact
|
|
145
170
|
|
|
146
171
|
```bash
|
|
147
172
|
clawo session-compact <name> [--summary <text>]
|
|
148
173
|
```
|
|
149
174
|
|
|
175
|
+
Compacts the conversation; `--summary` is passed to the engine's compaction (`/compact <summary>` on Claude Code). Engines without compaction do nothing — see [sessions.md](./sessions.md#context-management).
|
|
176
|
+
|
|
150
177
|
## Run Ledger
|
|
151
178
|
|
|
152
179
|
```bash
|
|
@@ -156,33 +183,28 @@ clawo runs [-s, --since <window>] [-n, --limit <n>] [--session <name>] [--engine
|
|
|
156
183
|
Show the durable per-turn record kept at `~/.claw-orchestrator/runs/`. Unlike
|
|
157
184
|
`session-status`, this survives restarts and covers sessions this process never
|
|
158
185
|
owned. `--since` takes `30m` / `24h` / `7d` / `2w` or an ISO timestamp (default
|
|
159
|
-
`24h`); `--parent` filters to one council /
|
|
160
|
-
`--verified` / `--refuted` keep only turns whose
|
|
161
|
-
failed. Costs marked with a trailing `~` came from
|
|
162
|
-
`VERIFIED` column reads `yes`, `NO`, or `—` ("no
|
|
163
|
-
nothing checked it").
|
|
186
|
+
`24h`); `--limit` caps the rows (default 50); `--parent` filters to one council /
|
|
187
|
+
fanout / autoloop / workflow run; `--verified` / `--refuted` keep only turns whose
|
|
188
|
+
acceptance contract passed / failed. Costs marked with a trailing `~` came from
|
|
189
|
+
estimated token counts. The `VERIFIED` column reads `yes`, `NO`, or `—` ("no
|
|
190
|
+
contract was declared, so nothing checked it"). `--json` prints `{ rows, summary }`.
|
|
191
|
+
See [observability.md](observability.md).
|
|
164
192
|
|
|
165
|
-
##
|
|
193
|
+
## Agents, Skills and Rules
|
|
166
194
|
|
|
167
195
|
```bash
|
|
168
196
|
clawo agents-list [-d, --cwd <dir>]
|
|
169
|
-
clawo agents-create <name> [--description <desc>] [--prompt <prompt>]
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Skills Management
|
|
197
|
+
clawo agents-create <name> [-d, --cwd <dir>] [--description <desc>] [--prompt <prompt>]
|
|
173
198
|
|
|
174
|
-
```bash
|
|
175
199
|
clawo skills-list [-d, --cwd <dir>]
|
|
176
|
-
clawo skills-create <name> [--description <desc>] [--prompt <prompt>] [--trigger <t>]
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## Rules Management
|
|
200
|
+
clawo skills-create <name> [-d, --cwd <dir>] [--description <desc>] [--prompt <prompt>] [--trigger <t>]
|
|
180
201
|
|
|
181
|
-
```bash
|
|
182
202
|
clawo rules-list [-d, --cwd <dir>]
|
|
183
|
-
clawo rules-create <name> [--description <desc>] [--content <text>] [--paths <glob>] [--condition <expr>]
|
|
203
|
+
clawo rules-create <name> [-d, --cwd <dir>] [--description <desc>] [--content <text>] [--paths <glob>] [--condition <expr>]
|
|
184
204
|
```
|
|
185
205
|
|
|
206
|
+
These manage Claude Code's `.claude/agents/`, `.claude/skills/` and `.claude/rules/` directories. With `-d`, the create commands write under `<dir>/.claude/`; without it, under the user-level `~/.claude/`. The list commands show the entries under `<dir>/.claude/` first, then the user-level entries whose name the project does not define. A rule's `--paths` and `--condition` become its `paths:` and `if:` frontmatter.
|
|
207
|
+
|
|
186
208
|
## Agent Teams
|
|
187
209
|
|
|
188
210
|
```bash
|
|
@@ -190,11 +212,7 @@ clawo session-team-list <name>
|
|
|
190
212
|
clawo session-team-send <name> <teammate> <message>
|
|
191
213
|
```
|
|
192
214
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
Tools without a CLI command are reachable through the OpenClaw plugin, the MCP
|
|
196
|
-
server (`clawo-mcp`, see [mcp.md](./mcp.md)), or the `SessionManager` API. See
|
|
197
|
-
[Tools Reference](./tools.md) for full parameter documentation.
|
|
215
|
+
`session-team-list` lists the server's other live sessions as virtual teammates, with each one's engine, state and turn count. `session-team-send` delivers a message to one of them through the session inbox — at once if it is idle, queued otherwise. See [inbox.md](./inbox.md).
|
|
198
216
|
|
|
199
217
|
## `clawo solve`
|
|
200
218
|
|
|
@@ -209,16 +227,16 @@ clawo solve "<task>" [--engine <engine[:model]>] [--check "<command>"]... [--con
|
|
|
209
227
|
|
|
210
228
|
| Option | Default | Notes |
|
|
211
229
|
| --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
212
|
-
| `-e, --engine` | `claude` | The implementer, `engine` or `engine:model` (`codex:gpt-6.1-sol`)
|
|
230
|
+
| `-e, --engine` | `claude` | The implementer, `engine` or `engine:model` (`codex:gpt-6.1-sol`), or `acp:<preset>` for an ACP agent (`acp:kimi-code`) |
|
|
213
231
|
| `-c, --check` | — | A command check, repeatable. Split on whitespace and run as argv, never through a shell; anything that needs quoting belongs in `--contract` |
|
|
214
232
|
| `--contract` | — | A contract JSON file ([verification.md](./verification.md)); `--check` entries are appended to it |
|
|
215
|
-
| `--scouts` | the implementer | Comma-separated triage agents, `engine[:model]` each
|
|
233
|
+
| `--scouts` | the implementer | Comma-separated triage agents, `engine[:model]` each (`acp:<preset>` for an ACP agent) |
|
|
216
234
|
| `--reviewers` | — | Comma-separated reviewers of the finished change |
|
|
217
235
|
| `--max-repairs` | `3` | Attempts the router allows while the checks are red; `0` keeps only the first attempt |
|
|
218
236
|
| `--human-gate` | off | Park before anything is written until `clawo workflow approve` |
|
|
219
237
|
| `--cwd` | current directory | Project directory |
|
|
220
238
|
| `-w, --wait` | off | Follow the run, printing each node transition, then the verdict |
|
|
221
|
-
| `--json` | off | Print `{ runId }`, or with `--wait` the final run record
|
|
239
|
+
| `--json` | off | Print `{ runId, state }`, or with `--wait` the final run record |
|
|
222
240
|
|
|
223
241
|
With `--wait` the exit code is the verdict: `0` when the run completed (verified,
|
|
224
242
|
or unverified because no check was given), `1` when it was refuted, failed or
|
|
@@ -233,10 +251,15 @@ clawo fanout "<task>" [--engines <list>] [--synthesize] [--check "<command>"]...
|
|
|
233
251
|
[--contract <file>] [--cwd <dir>] [--wait] [--json]
|
|
234
252
|
```
|
|
235
253
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
254
|
+
| Option | Default | Notes |
|
|
255
|
+
| ------------------ | ----------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
256
|
+
| `-e, --engines` | `claude,codex` | Comma-separated agents, `engine[:model]` each, or `acp:<preset>` for an ACP agent; an engine may repeat |
|
|
257
|
+
| `-s, --synthesize` | off | Merge the answers in a final pass. It runs only when at least two agents answered |
|
|
258
|
+
| `-c, --check` | — | A command check, repeatable, run after the fan-out, as for `solve` |
|
|
259
|
+
| `--contract` | — | A contract JSON file; `--check` entries are appended to it |
|
|
260
|
+
| `--cwd` | current directory | Project directory |
|
|
261
|
+
| `-w, --wait` | off | Follow the run to the end, then print every answer under a `## <agent>` heading — or the synthesis, if one ran |
|
|
262
|
+
| `--json` | off | Print `{ runId, state }`, or with `--wait` the final run record |
|
|
240
263
|
|
|
241
264
|
## `clawo goal`
|
|
242
265
|
|
|
@@ -255,15 +278,19 @@ clawo goal "<objective>" | --objective-file <file>
|
|
|
255
278
|
| ------------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
256
279
|
| `--objective-file` | — | Read the objective from a file instead of the argument. Codex accepts at most 4,000 characters |
|
|
257
280
|
| `-c, --check` | — | A command check, repeatable, run after the goal. Split on whitespace; quote-needing commands go in `--contract` |
|
|
258
|
-
| `--
|
|
281
|
+
| `--contract` | — | A contract JSON file; `--check` entries are appended to it |
|
|
282
|
+
| `--check-timeout` | 10 | Minutes for each `--check` (at least 1). The verifier's node timeout is sized from the checks |
|
|
259
283
|
| `--launcher` | — | Run codex under this command, one argv element per flag: `--launcher ./sandbox.sh --launcher task --launcher "0 1"` |
|
|
260
284
|
| `-m, --model` | codex's own | Codex model |
|
|
285
|
+
| `--effort` | codex's own | Codex reasoning effort |
|
|
261
286
|
| `--sandbox` | `workspace-write` | Codex's own sandbox mode. With an outer sandbox as the boundary, `danger-full-access` |
|
|
262
287
|
| `--thread` | — | Start on this existing codex thread: its goal is replaced, its history kept |
|
|
263
288
|
| `--token-budget` | — | The goal stops as `budgetLimited` past this |
|
|
264
289
|
| `--goal-timeout` | none | Wall-clock minutes for one goal pass |
|
|
265
290
|
| `--max-repairs` | `1` | Times a red verdict sends the goal back to the same thread |
|
|
291
|
+
| `--cwd` | current directory | Project directory |
|
|
266
292
|
| `-w, --wait` | off | Follow the run; exit `0` only if it completes |
|
|
293
|
+
| `--json` | off | Print `{ runId, state }`, or with `--wait` the final run record |
|
|
267
294
|
|
|
268
295
|
`clawo workflow show <runId>` prints the goal's status, tokens, time, resume
|
|
269
296
|
attempts and thread id while it runs; `clawo workflow steer <runId> "<text>"`
|
|
@@ -280,9 +307,12 @@ clawo workflow steer <runId> "<text>" # a correction for the next agent node, o
|
|
|
280
307
|
clawo workflow approve <runId> [reject]
|
|
281
308
|
```
|
|
282
309
|
|
|
283
|
-
`list` prints one row per run with its outcome as `verified` /
|
|
284
|
-
`unchecked`. `unchecked` means no acceptance contract was declared — it
|
|
285
|
-
failure.
|
|
310
|
+
`list` prints one row per run (default limit 25) with its outcome as `verified` /
|
|
311
|
+
`REFUTED` / `unchecked`. `unchecked` means no acceptance contract was declared — it
|
|
312
|
+
is not a failure.
|
|
313
|
+
|
|
314
|
+
`approve` answers the gate a run is parked on: it approves unless the last
|
|
315
|
+
argument is `reject`, `false` or `no`.
|
|
286
316
|
|
|
287
317
|
Runs survive restarts, so `list` sees runs started by other processes and by
|
|
288
318
|
earlier sessions.
|
|
@@ -293,14 +323,15 @@ earlier sessions.
|
|
|
293
323
|
clawo verify <runId> [--evidence <id>] [--json]
|
|
294
324
|
```
|
|
295
325
|
|
|
296
|
-
Prints the evidence bundle
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
files
|
|
326
|
+
Prints the evidence bundle (the run's latest unless `--evidence` names one):
|
|
327
|
+
per-check pass/fail with the failing command and the lines of its output that say
|
|
328
|
+
why (an assertion message, an error line — the last few lines when nothing stands
|
|
329
|
+
out), the base and head commits, and the files the run changed (created files
|
|
330
|
+
included).
|
|
300
331
|
|
|
301
332
|
## `clawo engines`
|
|
302
333
|
|
|
303
|
-
Lists the community engine presets bundled with the installed package, with each
|
|
334
|
+
Lists the community engine presets bundled with the installed package (custom engines and ACP agents), with each
|
|
304
335
|
one's provenance — who attested it, against which engine version, on what date.
|
|
305
336
|
Read locally rather than over HTTP, since it is a property of the package and has
|
|
306
337
|
to work with no server running.
|
|
@@ -309,9 +340,16 @@ to work with no server running.
|
|
|
309
340
|
clawo engines
|
|
310
341
|
clawo engines --json
|
|
311
342
|
clawo session-start my-session -e custom --custom-engine <id>
|
|
343
|
+
clawo session-start my-session -e acp --acp-agent <id> # an ACP agent preset
|
|
312
344
|
```
|
|
313
345
|
|
|
314
|
-
A preset id is the only form of custom engine the CLI can pass: it reaches the
|
|
346
|
+
A preset id is the only form of custom engine or ACP agent the CLI can pass: it reaches the
|
|
315
347
|
session through the HTTP surface, which refuses inline configs because those name
|
|
316
348
|
a binary and its arguments. See [multi-engine.md](./multi-engine.md) for the tiers
|
|
317
349
|
and what a community preset does and does not claim.
|
|
350
|
+
|
|
351
|
+
## Tools Without a CLI Command
|
|
352
|
+
|
|
353
|
+
Tools without a CLI command are reachable through the OpenClaw plugin, the MCP
|
|
354
|
+
server (`clawo-mcp`, see [mcp.md](./mcp.md)), or the `SessionManager` API. See
|
|
355
|
+
[Tools Reference](./tools.md) for full parameter documentation.
|
|
@@ -48,13 +48,23 @@ project/
|
|
|
48
48
|
|
|
49
49
|
Agents cannot interfere with each other's files. All integration happens via `git merge` to `main`.
|
|
50
50
|
|
|
51
|
+
If `projectDir` does not exist it is created; if it is not a git repository the council runs `git init`, and if
|
|
52
|
+
the repository has no commit yet it commits whatever the directory holds. Commits need a git identity: when the
|
|
53
|
+
repository has none at any level, the council sets a local `Council <council@openclaw>` in `.git/config`; an
|
|
54
|
+
identity you configured is left untouched. Agent names become branch names, so they must match
|
|
55
|
+
`^[a-zA-Z0-9_-]+$`. A council refuses to start with a `projectDir` inside the orchestrator's own package
|
|
56
|
+
directory.
|
|
57
|
+
|
|
51
58
|
### Consensus Voting
|
|
52
59
|
|
|
53
60
|
Every agent must include `[CONSENSUS: YES]` or `[CONSENSUS: NO]` at the end of each round's response. The council continues until:
|
|
54
61
|
|
|
55
|
-
- **All agents vote YES** — consensus reached
|
|
56
|
-
- **Max rounds reached** —
|
|
57
|
-
- **Aborted** — user intervention
|
|
62
|
+
- **All agents vote YES** — consensus reached; status becomes `awaiting_user` (ready for review / accept / reject)
|
|
63
|
+
- **Max rounds reached** — status `max_rounds`
|
|
64
|
+
- **Aborted** — user intervention; status `error`
|
|
65
|
+
|
|
66
|
+
An agent that fails or errors in a round counts as a NO for that round. A loosely formatted vote (for example
|
|
67
|
+
`CONSENSUS=YES`) is still read, and a missing vote counts as NO.
|
|
58
68
|
|
|
59
69
|
## Quick Start
|
|
60
70
|
|
|
@@ -99,9 +109,12 @@ console.log(`Council started: ${session.id}`);
|
|
|
99
109
|
const status = manager.councilStatus(session.id);
|
|
100
110
|
```
|
|
101
111
|
|
|
112
|
+
`councilStart`, `fanoutStart`, `ultraplanStart` and `ultrareviewStart` are async (each creates a durable run before
|
|
113
|
+
returning); direct TypeScript callers need `await`.
|
|
114
|
+
|
|
102
115
|
### Mixed Engines
|
|
103
116
|
|
|
104
|
-
Agents can use different engines and models
|
|
117
|
+
Agents can use different engines and models. Each agent also accepts `effort` and, on Claude, `ultracode`:
|
|
105
118
|
|
|
106
119
|
```json
|
|
107
120
|
{
|
|
@@ -115,15 +128,15 @@ Agents can use different engines and models:
|
|
|
115
128
|
|
|
116
129
|
## Council Tools
|
|
117
130
|
|
|
118
|
-
| Tool | Description
|
|
119
|
-
| ---------------- |
|
|
120
|
-
| `council_start` | Start a council. Runs in background, returns session ID immediately.
|
|
121
|
-
| `council_status` |
|
|
122
|
-
| `council_abort` | Stop all agent sessions and
|
|
123
|
-
| `council_inject` | Inject a user message into all agents' prompts in the next round.
|
|
124
|
-
| `council_review` | Review completed council output: changed files, branches, plan status, agent summaries.
|
|
125
|
-
| `council_accept` | Accept work and clean up: remove worktrees, branches, plan.md, reviews/.
|
|
126
|
-
| `council_reject` | Reject work: rewrite plan.md with feedback for the council to retry.
|
|
131
|
+
| Tool | Description |
|
|
132
|
+
| ---------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
133
|
+
| `council_start` | Start a council. Runs in background, returns session ID immediately. |
|
|
134
|
+
| `council_status` | Status (`running`, `awaiting_user`, `max_rounds`, `error`, `accepted`, `rejected`) and each response with its vote. |
|
|
135
|
+
| `council_abort` | Stop all agent sessions, terminate a council running in this process, and remove the worktrees it created. |
|
|
136
|
+
| `council_inject` | Inject a user message into all agents' prompts in the next round. A second inject before that round replaces the first. |
|
|
137
|
+
| `council_review` | Review completed council output: changed files, branches, plan status, agent summaries. |
|
|
138
|
+
| `council_accept` | Accept work and clean up: remove worktrees, branches, plan.md, reviews/. |
|
|
139
|
+
| `council_reject` | Reject work: rewrite plan.md with feedback for the council to retry. |
|
|
127
140
|
|
|
128
141
|
## Post-Processing Lifecycle
|
|
129
142
|
|
|
@@ -143,6 +156,7 @@ Returns a structured report:
|
|
|
143
156
|
- **planContent**: full plan.md text (check for unchecked tasks)
|
|
144
157
|
- **reviews**: review files in `reviews/` directory
|
|
145
158
|
- **agentSummaries**: final-round output preview from each agent
|
|
159
|
+
- **reviewerGuidance**: the checklist from `configs/council-reviewer-prompt.md`, for whoever reviews the output
|
|
146
160
|
|
|
147
161
|
### 2. Accept
|
|
148
162
|
|
|
@@ -150,14 +164,14 @@ Returns a structured report:
|
|
|
150
164
|
{ "tool": "council_accept", "args": { "id": "<council-id>" } }
|
|
151
165
|
```
|
|
152
166
|
|
|
153
|
-
|
|
167
|
+
Checks out `main` (or `master`), then cleans up all council scaffolding:
|
|
154
168
|
|
|
155
169
|
- Removes the worktrees under `{projectDir}/.worktrees/`, and that directory —
|
|
156
170
|
selection is by containment, so a worktree of yours that merely has `council`
|
|
157
171
|
somewhere in its path is never touched
|
|
158
172
|
- Deletes all `council/*` branches
|
|
159
173
|
- Removes `plan.md` and `reviews/` directory
|
|
160
|
-
- Sets council status to `accepted`
|
|
174
|
+
- Sets council status to `accepted`, recorded on the run so `council_status` reports it
|
|
161
175
|
|
|
162
176
|
### 3. Reject
|
|
163
177
|
|
|
@@ -165,7 +179,7 @@ Cleans up all council scaffolding:
|
|
|
165
179
|
{ "tool": "council_reject", "args": { "id": "<council-id>", "feedback": "..." } }
|
|
166
180
|
```
|
|
167
181
|
|
|
168
|
-
Rewrites `plan.md` with rejection feedback and commits it. All worktrees and branches are preserved so the council can be restarted to address the feedback.
|
|
182
|
+
Rewrites `plan.md` with rejection feedback and commits it, and sets council status to `rejected`, recorded on the run. All worktrees and branches are preserved so the council can be restarted to address the feedback: a new `council_start` on the same `projectDir` with the same agent names reuses those worktrees (resetting each to its branch head, which discards uncommitted changes in them).
|
|
169
183
|
|
|
170
184
|
## Configuration
|
|
171
185
|
|
|
@@ -176,6 +190,8 @@ Rewrites `plan.md` with rejection feedback and commits it. All worktrees and bra
|
|
|
176
190
|
| `maxTurnsPerAgent` | 50 | Max tool turns per agent per round |
|
|
177
191
|
| `maxBudgetUsd` | — | API spend limit per agent |
|
|
178
192
|
|
|
193
|
+
These are the `council_start` defaults. The `council` workflow template (`workflow_start`) runs up to 8 rounds.
|
|
194
|
+
|
|
179
195
|
### defaultPermissionMode
|
|
180
196
|
|
|
181
197
|
Optional. Sets the default permission mode for council agents when individual agents don't specify one. Defaults to `bypassPermissions`.
|
|
@@ -238,18 +254,24 @@ workflow_start({
|
|
|
238
254
|
|
|
239
255
|
Without a contract the run completes `unverified` — nothing checked it.
|
|
240
256
|
|
|
241
|
-
`councilStart`, `fanoutStart`, `ultraplanStart` and `ultrareviewStart` are
|
|
242
|
-
async (each creates a durable run before returning); direct TypeScript callers
|
|
243
|
-
need `await`.
|
|
244
|
-
|
|
245
257
|
## Durable runs
|
|
246
258
|
|
|
247
259
|
A council is a durable kernel run. `GET /council/list` (and the dashboard)
|
|
248
260
|
returns real records from disk, across processes.
|
|
249
261
|
|
|
262
|
+
| Route | Purpose |
|
|
263
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
264
|
+
| `GET /council/list` | Every council run, newest first. |
|
|
265
|
+
| `POST /council/new` | Body `{ task, projectDir, maxRounds? }`. Starts the dashboard preset: three Claude agents, 15 rounds by default. |
|
|
266
|
+
| `GET /council/<id>/state` | The council session (status, config, responses). |
|
|
267
|
+
| `GET /council/<id>/events` | SSE: a `snapshot`, then a `council-event` for each session, round and agent event (output chunks included). Only for a council running in this process; 404 otherwise. |
|
|
268
|
+
|
|
250
269
|
`council_review` / `council_accept` / `council_reject` work after a restart:
|
|
251
|
-
they act on the git state the council left behind, not on live agents
|
|
252
|
-
|
|
270
|
+
they act on the git state the council left behind, not on live agents, and the
|
|
271
|
+
accept / reject decision is written to the run record.
|
|
272
|
+
`council_inject` and `council_abort` need the live run and say so plainly when
|
|
273
|
+
there is none: `council_abort` then returns `ok: false` with the run's state and
|
|
274
|
+
leaves the run and its worktrees as they are.
|
|
253
275
|
|
|
254
276
|
## Changed-file reporting
|
|
255
277
|
|