@enderfga/claw-orchestrator 7.5.3 → 7.5.4

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.
Files changed (49) hide show
  1. package/README.md +21 -22
  2. package/configs/engines/README.md +7 -6
  3. package/dist/bin/cli.js +1 -1
  4. package/dist/bin/cli.js.map +1 -1
  5. package/dist/src/acp-server.d.ts +1 -1
  6. package/dist/src/acp-server.js +7 -5
  7. package/dist/src/acp-server.js.map +1 -1
  8. package/dist/src/autoloop/notify.d.ts +5 -7
  9. package/dist/src/autoloop/notify.js +21 -20
  10. package/dist/src/autoloop/notify.js.map +1 -1
  11. package/dist/src/embedded-server.js +7 -4
  12. package/dist/src/embedded-server.js.map +1 -1
  13. package/dist/src/fanout.d.ts +6 -0
  14. package/dist/src/fanout.js +1 -0
  15. package/dist/src/fanout.js.map +1 -1
  16. package/dist/src/index.js +19 -11
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/kernel/nodes/fanout.js +1 -0
  19. package/dist/src/kernel/nodes/fanout.js.map +1 -1
  20. package/dist/src/kernel/types.d.ts +2 -0
  21. package/dist/src/kernel/types.js.map +1 -1
  22. package/dist/src/openai-compat.d.ts +2 -2
  23. package/dist/src/openai-compat.js +5 -2
  24. package/dist/src/openai-compat.js.map +1 -1
  25. package/dist/src/session-manager.js +14 -5
  26. package/dist/src/session-manager.js.map +1 -1
  27. package/dist/src/types.d.ts +2 -0
  28. package/openclaw.plugin.json +1 -1
  29. package/package.json +2 -2
  30. package/skills/SKILL.md +31 -32
  31. package/skills/references/acp.md +19 -36
  32. package/skills/references/autoloop.md +158 -180
  33. package/skills/references/claude-cli-tracking.md +27 -27
  34. package/skills/references/cli.md +62 -79
  35. package/skills/references/council.md +40 -63
  36. package/skills/references/dashboard.md +42 -55
  37. package/skills/references/getting-started.md +20 -14
  38. package/skills/references/inbox.md +6 -4
  39. package/skills/references/mcp.md +29 -24
  40. package/skills/references/multi-engine.md +105 -153
  41. package/skills/references/observability.md +42 -32
  42. package/skills/references/openai-compat.md +169 -303
  43. package/skills/references/sessions.md +20 -29
  44. package/skills/references/tools.md +62 -76
  45. package/skills/references/ultra.md +17 -16
  46. package/skills/references/ultraapp.md +59 -64
  47. package/skills/references/verification.md +29 -52
  48. package/skills/references/workflow.md +37 -104
  49. package/skills/ultraapp/SKILL.md +9 -10
package/skills/SKILL.md CHANGED
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: claw-orchestrator
3
- description: Manage persistent coding sessions across Claude Code, Codex, Antigravity (agy), Grok Build, and OpenCode engines. Use when orchestrating multi-engine coding agents, starting/sending/stopping sessions, running multi-agent council collaborations, cross-session messaging, ultraplan deep planning, ultrareview parallel code review, autoloop autonomous workspace iteration, ultraapp building deployable web apps from a structured Q&A interview, switching models/tools at runtime, exposing the orchestrator's 78 tools as an MCP server to Hermes Agent / Claude Desktop / Cursor / Cline / Continue / Zed / Windsurf / Goose, or running as an Agent Client Protocol (ACP) agent that Zed / JetBrains / Neovim / Emacs / VS Code / dsh can drive directly. Triggers on "start a session", "send to session", "run council", "ultraplan", "ultrareview", "autoloop", "ultraapp", "Forge tab", "build a web app", "one-click app", "AppSpec", "autonomous iteration", "iterate until goal", "deep paper review", "auto research", "switch model", "hand off", "handoff", "switch engine", "continue on codex", "continue on claude", "move this session to another engine", "multi-agent", "coding session", "session inbox", "grok", "grok build", "opencode", "mcp server", "clawo-mcp", "hermes mcp", "model context protocol", "ultracode", "dynamic workflow", "fanout", "fan-out", "best-of-N", "steer turn", "interrupt turn", "fork thread", "rollback turns", "acp", "agent client protocol", "clawo acp", "zed agent", "jetbrains agent", "external agent", "dsh subagent", "deepseek harness", "clawo runs", "run ledger", "how much did it cost", "token usage", "spend cap", "budget limit", "maxBudgetUsd", "workflow", "durable workflow", "resume a run", "verify", "verification", "acceptance contract", "evidence", "evidence bundle", "did the tests actually pass", "prove it works", "protected tests", "agent edited the tests", "human gate", "repair loop", "clawo workflow", "clawo verify".
3
+ description: Manage persistent coding sessions across Claude Code, Codex, Antigravity (agy), Grok Build, and OpenCode engines. Use when orchestrating multi-engine coding agents, starting/sending/stopping sessions, running multi-agent council collaborations, cross-session messaging, ultraplan deep planning, ultrareview parallel code review, autoloop autonomous workspace iteration, ultraapp building deployable web apps from a structured Q&A interview, switching models/tools at runtime, exposing the orchestrator's 78 tools as an MCP server to Hermes Agent / Claude Desktop / Cursor / Cline / Continue / Zed / Windsurf / Goose, or running as an Agent Client Protocol (ACP) agent that Zed / JetBrains / Neovim / Emacs / VS Code / dsh can drive directly. Triggers on "start a session", "send to session", "run council", "ultraplan", "ultrareview", "autoloop", "ultraapp", "Forge tab", "build a web app", "one-click app", "AppSpec", "autonomous iteration", "iterate until goal", "auto research", "switch model", "hand off a session", "session handoff", "switch engine", "continue on codex", "continue on claude", "move this session to another engine", "multi-agent coding", "coding session", "session inbox", "grok session", "grok build", "opencode", "mcp server", "clawo-mcp", "hermes mcp", "model context protocol", "ultracode", "dynamic workflow", "fanout", "fan-out", "best-of-N", "steer turn", "interrupt turn", "fork thread", "rollback turns", "acp", "agent client protocol", "clawo acp", "zed agent", "jetbrains agent", "external agent", "dsh subagent", "deepseek harness", "clawo runs", "run ledger", "session cost", "coding-agent token usage", "spend cap", "budget limit", "maxBudgetUsd", "durable workflow", "resume a run", "verify a coding run", "acceptance contract", "evidence bundle", "did the agent's tests actually pass", "protected tests", "agent edited the tests", "human gate", "repair loop", "clawo workflow", "clawo verify".
4
4
  metadata:
5
5
  {
6
6
  'openclaw':
7
7
  {
8
8
  'emoji': '🤖',
9
- 'requires': { 'anyBins': ['claude', 'codex', 'agy', 'agent'] },
9
+ 'requires': { 'anyBins': ['claude', 'codex', 'agy', 'grok', 'opencode'] },
10
10
  'install':
11
11
  [
12
12
  {
@@ -60,7 +60,7 @@ session_start({
60
60
  name: 'opencode-task',
61
61
  cwd: '/path/to/project',
62
62
  engine: 'opencode',
63
- model: 'anthropic/claude-sonnet-4',
63
+ model: 'anthropic/claude-sonnet-5',
64
64
  });
65
65
 
66
66
  // 2. Send messages
@@ -78,14 +78,14 @@ session_stop({ name: 'myproject' });
78
78
 
79
79
  | Parameter | Description |
80
80
  | ---------------- | --------------------------------------------------------------------------------------------------------------- |
81
- | `engine` | `claude` (default), `codex`, `agy`, `cursor`, `opencode` |
82
- | `model` | Model name or alias (`fable`, `opus`, `sonnet`, `haiku`, `gpt-5.5`, `agy-pro`, `composer-2`) |
81
+ | `engine` | `claude` (default), `codex`, `agy`, `grok`, `opencode`, `custom` |
82
+ | `model` | Model name or alias (`fable`, `opus` → claude-opus-5-5, `sonnet`, `haiku`, `gpt-5.5`, `agy-pro`) |
83
83
  | `permissionMode` | `acceptEdits`, `auto`, `plan`, `bypassPermissions`, `manual`, `dontAsk` (`default` = legacy alias for `manual`) |
84
84
  | `effort` | `low`, `medium`, `high`, `xhigh`, `max`, `ultra`, `auto` (each engine clamps to its own ceiling) |
85
85
  | `maxBudgetUsd` | Cost limit in USD |
86
86
  | `allowedTools` | List of allowed tool names |
87
87
 
88
- ### CLI 2.1.111 options
88
+ ### Claude-engine options
89
89
 
90
90
  | Parameter | Description |
91
91
  | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
@@ -98,17 +98,12 @@ session_stop({ name: 'myproject' });
98
98
  | `debug` / `debugFile` | Targeted debug output by category (e.g. `"api,mcp"`) and optional file path. |
99
99
  | `fromPr` | Resume a session linked to a GitHub PR number or URL. |
100
100
  | `channels` / `dangerouslyLoadDevelopmentChannels` | MCP channel subscriptions (research preview). |
101
+ | `forkSubagent` | Fork subagent for non-interactive sessions (sets `CLAUDE_CODE_FORK_SUBAGENT=1`). |
102
+ | `enableToolSearch` | Enable Vertex AI tool search (sets `ENABLE_TOOL_SEARCH=1`). |
103
+ | `otelLogUserPrompts` | OpenTelemetry: include user prompts in logs (sets `OTEL_LOG_USER_PROMPTS=1`). |
104
+ | `otelLogRawApiBodies` | OpenTelemetry: include raw API bodies in logs (sets `OTEL_LOG_RAW_API_BODIES=1`). Debug only. |
101
105
 
102
- ### CLI 2.1.121 options
103
-
104
- | Parameter | Description |
105
- | --------------------- | --------------------------------------------------------------------------------------------- |
106
- | `forkSubagent` | Fork subagent for non-interactive sessions (sets `CLAUDE_CODE_FORK_SUBAGENT=1`). |
107
- | `enableToolSearch` | Enable Vertex AI tool search (sets `ENABLE_TOOL_SEARCH=1`). |
108
- | `otelLogUserPrompts` | OpenTelemetry: include user prompts in logs (sets `OTEL_LOG_USER_PROMPTS=1`). |
109
- | `otelLogRawApiBodies` | OpenTelemetry: include raw API bodies in logs (sets `OTEL_LOG_RAW_API_BODIES=1`). Debug only. |
110
-
111
- `stats.pluginErrors` is now populated from the `system/init` event when CLI plugins fail to load due to unmet dependencies.
106
+ `stats.pluginErrors` lists CLI plugins that failed to load (from the `system/init` event).
112
107
 
113
108
  `TRACEPARENT` / `TRACESTATE` (W3C distributed tracing) are automatically forwarded from parent process env — set them before starting the session and they propagate to the child Claude CLI.
114
109
 
@@ -158,7 +153,7 @@ team_send({ name: 'myproject', teammate: 'teammate', message: 'Review this' });
158
153
  ## Ultraplan & Ultrareview
159
154
 
160
155
  - **Ultraplan**: Opus deep planning session (up to 30 min), produces detailed implementation plan
161
- - **Ultrareview**: Fleet of 5-20 bug-hunting agents reviewing in parallel (security, logic, perf, types, etc.)
156
+ - **Ultrareview**: 1-20 read-only reviewer agents (default 5) running in parallel, each from one angle (security, logic, perf, types, etc.), merged by a synthesis pass
162
157
 
163
158
  Both are async — start then poll status.
164
159
 
@@ -186,17 +181,20 @@ For the full control protocol, registry/resume behavior, and ledger layout, see
186
181
 
187
182
  ## Tools Overview
188
183
 
189
- | Category | Tools |
190
- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
191
- | Session Lifecycle | `session_start`, `session_send`, `session_handoff`, `session_stop`, `session_list`, `sessions_overview` |
192
- | Session Ops | `coding_session_status`, `session_grep`, `session_compact`, `session_update_tools`, `session_switch_model` |
193
- | Inbox | `session_send_to`, `session_inbox`, `session_deliver_inbox` |
194
- | Teams | `coding_agents_list`, `team_list`, `team_send` |
195
- | Codex | `codex_resume`, `codex_review`, `codex_goal_*`, `codex_interrupt`, `codex_steer`, `codex_fork`, `codex_rollback`, `codex_models`, `codex_thread_list` |
196
- | Claude CLI | `claude_goal_*`, `claude_agents_list`, `plugin_details` |
197
- | Fan-out | `fanout_start`, `fanout_status`, `fanout_abort` |
198
- | Council | `council_start`, `council_status`, `council_abort`, `council_inject`, `council_review`, `council_accept`, `council_reject` |
199
- | Ultra | `ultraplan_start`, `ultraplan_status`, `ultrareview_start`, `ultrareview_status` |
184
+ | Category | Tools |
185
+ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
186
+ | Session Lifecycle | `session_start`, `session_send`, `session_handoff`, `session_stop`, `session_list`, `sessions_overview` |
187
+ | Session Ops | `coding_session_status`, `session_grep`, `session_compact`, `session_update_tools`, `session_switch_model`, `project_purge` |
188
+ | Inbox | `session_send_to`, `session_inbox`, `session_deliver_inbox` |
189
+ | Teams | `coding_agents_list`, `team_list`, `team_send` |
190
+ | Codex | `codex_resume`, `codex_review`, `codex_goal_*`, `codex_interrupt`, `codex_steer`, `codex_fork`, `codex_rollback`, `codex_models`, `codex_thread_list` |
191
+ | Claude CLI | `claude_goal_*`, `claude_agents_list`, `plugin_details` |
192
+ | Fan-out | `fanout_start`, `fanout_status`, `fanout_abort` |
193
+ | Council | `council_start`, `council_status`, `council_abort`, `council_inject`, `council_review`, `council_accept`, `council_reject` |
194
+ | Ultra | `ultraplan_start`, `ultraplan_status`, `ultrareview_start`, `ultrareview_status` |
195
+ | Autoloop | `autoloop_start`, `autoloop_chat`, `autoloop_status`, `autoloop_list`, `autoloop_stop`, `autoloop_reset_agent` |
196
+ | Workflow & verify | `workflow_start`, `workflow_status`, `workflow_list`, `workflow_resume`, `workflow_cancel`, `workflow_steer`, `workflow_approve`, `verify_run` |
197
+ | Ultraapp | `ultraapp_new`, `ultraapp_answer`, `ultraapp_add_file`, `ultraapp_spec_edit`, `ultraapp_build_start`, `ultraapp_build_cancel`, `ultraapp_status`, `ultraapp_get`, `ultraapp_list`, `ultraapp_feedback`, `ultraapp_promote_version`, `ultraapp_start_container`, `ultraapp_stop_container`, `ultraapp_delete` |
200
198
 
201
199
  `ultracode` (Claude dynamic workflows) is a `session_start` option, not a separate tool: set
202
200
  `ultracode: true` to have Claude orchestrate a JS workflow and fan out to subagents per task.
@@ -208,15 +206,16 @@ For full parameter reference: see [references/tools.md](references/tools.md)
208
206
  `clawo acp` (or the `clawo-acp` binary) serves Agent Client Protocol over stdio, so any ACP
209
207
  client — Zed, JetBrains, Neovim, Emacs, the VS Code ACP extension, or `dsh` through its
210
208
  `subagent-acp` provider — drives the orchestrator as its coding agent. The model selector is
211
- grouped by engine, so one dropdown spans Claude, Codex and Cursor and switching it switches
212
- engine mid-session.
209
+ grouped by engine, so one dropdown spans Claude, Codex, Antigravity and Grok, and switching it
210
+ switches engine mid-session.
213
211
 
214
212
  For setup, the dsh YAML block, and the cancellation/permission limits: see [references/acp.md](references/acp.md)
215
213
 
216
214
  ## Durable workflows
217
215
 
218
216
  `workflow_start` runs a declarative graph of `agent` / `fanout` / `council` / `verifier` /
219
- `human_gate` / `router` / `subflow` nodes. Every state transition is checkpointed to
217
+ `human_gate` / `router` / `subflow` / `autoloop` / `ultraapp_synth` /
218
+ `ultraapp_deploy` nodes. Every state transition is checkpointed to
220
219
  `~/.claw-orchestrator/wf/<runId>/`, so a run survives a process restart and `workflow_resume`
221
220
  picks it up at the node boundary — nodes already succeeded are not re-run, and the one that
222
221
  was in flight is retried because a half-finished node left no result to trust.
@@ -254,7 +253,7 @@ survives restarts, so it answers "what did we run today and what did it cost" af
254
253
  sessions are gone.
255
254
 
256
255
  `maxBudgetUsd` on a session (or per council / fanout agent) is enforced by the runtime, so it
257
- holds on Codex, Cursor, agy, OpenCode and custom engines too — not just Claude Code. Once
256
+ holds on Codex, agy, Grok, OpenCode and custom engines too — not just Claude Code. Once
258
257
  cumulative spend reaches the cap, further sends are refused before the engine is spawned.
259
258
 
260
259
  Rows carry two different judgements and keep them apart: `ok` is the engine's terminal verdict
@@ -5,15 +5,19 @@ drives over JSON-RPC stdio. Zed, JetBrains IDEs, Neovim, Emacs and the VS Code A
5
5
  extension are clients; so is `dsh`, whose `@deepseek-ai/dsh-subagent-acp` provider
6
6
  spawns an arbitrary command as a subagent.
7
7
 
8
- Every other agent in the ACP ecosystem is a single agent. This one is a fleet: the
9
- model selector spans engines, and the session-mode picker is where orchestration
10
- shapes are chosen.
8
+ The model selector spans several engines, and session modes select the
9
+ orchestration shape: a single agent, a council, a planning pass, or a review.
11
10
 
12
11
  ```bash
13
12
  clawo acp # or the dedicated binary:
14
13
  clawo-acp
14
+ # without a global install:
15
+ npx -y @enderfga/claw-orchestrator acp
15
16
  ```
16
17
 
18
+ Requires Node ≥ 22 and at least one engine CLI (`claude`, `codex`, `agy`,
19
+ `grok`) installed and logged in.
20
+
17
21
  Both read the protocol from stdin and write it to stdout. **Stdout carries nothing
18
22
  but protocol frames** — all logging goes to stderr.
19
23
 
@@ -94,13 +98,16 @@ cancelling one abandons the poll rather than stopping the work.
94
98
 
95
99
  `session/new` also returns a `category: "model"` config option whose values are
96
100
  **grouped by engine**, built from the shared registry in `src/models.ts`. One
97
- dropdown holds Claude, Codex and Grok models at once. Changing it restarts the
98
- underlying session on the new engine; the ACP session id is unaffected.
101
+ dropdown holds four engine groups at once: Claude Code, Codex, Antigravity and
102
+ Grok Build. Changing it restarts the underlying session on the new engine; the
103
+ ACP session id is unaffected.
99
104
 
100
- Two engines are absent for different reasons:
105
+ Other engines are absent for different reasons:
101
106
 
102
107
  - **`gemini`** — the Gemini CLI is sunset and superseded by Antigravity. It still
103
108
  works for callers that name it directly; it is not offered in a new picker.
109
+ - **`cursor`** — a legacy engine, superseded by Grok Build in this lineup. Same
110
+ treatment: callers that name it still work.
104
111
  - **`opencode`** — its models are open-ended `provider/model` strings passed
105
112
  straight through, so there is nothing in the registry to enumerate. An opencode
106
113
  session is reachable by naming the model, just not by picking it from this list.
@@ -129,8 +136,7 @@ fresh engine thread.
129
136
  The session layer has **no mid-turn cancel** — `stopSession()` is the only lever and
130
137
  it destroys the session rather than pausing the turn. So the ACP turn returns
131
138
  promptly while the engine subprocess may take a moment longer to die, and any
132
- partial work in that turn is lost. This is a real limitation, not a detail of the
133
- current implementation.
139
+ partial work in that turn is lost.
134
140
 
135
141
  ## Use from `dsh`
136
142
 
@@ -152,11 +158,11 @@ ignores tool calls and other updates — and runs a fresh subprocess per run wit
152
158
  parent context. The adapter therefore keeps the text stream self-sufficient: an
153
159
  engine that never streams still gets its whole answer emitted as one final chunk.
154
160
 
155
- ## Verifying a change
161
+ ## Development notes
156
162
 
157
163
  Unit tests cover the translation helpers and the config-option shapes
158
- (`src/__tests__/acp-server.test.ts`). They cannot catch the failure this protocol
159
- actually dies of, so also drive the real binary:
164
+ (`src/__tests__/acp-server.test.ts`). They cannot catch a corrupted frame
165
+ stream, so also drive the real binary:
160
166
 
161
167
  ```bash
162
168
  npm run build
@@ -167,29 +173,6 @@ printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocol
167
173
  Then run a full session and assert **every stdout line parses as JSON**. A single
168
174
  stray `console.log` anywhere in the process corrupts the frame stream, and the
169
175
  client fails in a way that looks like a protocol bug. Two things prevent it, and
170
- doing only one is the trap: suppress the embedded HTTP server (whose `start()`
171
- prints), and hand `SessionManager` an explicit stderr logger — its default
176
+ both are required: suppress the embedded HTTP server (whose `start()` prints),
177
+ and hand `SessionManager` an explicit stderr logger — its default
172
178
  `createConsoleLogger` writes `info`/`debug` to stdout.
173
-
174
- Verified end to end against the real binary:
175
-
176
- - handshake, `session/new` (4 engine groups in the selector), a streamed `single`-mode
177
- turn that read a workspace file under `plan` permission and relayed the answer;
178
- - the mode slash commands: a bare `/ultraplan` switches and reports, `/single <task>`
179
- switches back and runs the task in one turn;
180
- - a cross-engine model switch (`claude-sonnet-4-6` → `gpt-5.5`) answered by Codex;
181
- - a full `council` run in a git repo — two engines, two rounds to consensus, emitting
182
- 2 `plan`, 4 `tool_call`, 4 `tool_call_update`, the synthesis as text, and the two
183
- gate commands;
184
- - `usage_update` carrying cross-engine cost;
185
- - graceful exit on stdin EOF.
186
-
187
- Every stdout line parsed as JSON throughout. `/council_accept` and `/council_reject`
188
- are covered by unit tests against a fake manager but have not been exercised against a
189
- live parked council.
190
-
191
- It was also driven from **VS Code with the ACP Client extension 0.2.0** — the agent
192
- appears in the agents list beside Copilot, Claude Code and Codex CLI, connects, renders
193
- the grouped model dropdown and the permission selector, and answered a prompt about a
194
- workspace file with its tool calls shown as collapsible entries. That run is what
195
- established that this client does not render modes.