@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.
Files changed (143) hide show
  1. package/README.md +163 -137
  2. package/configs/autoloop-reviewer-prompt.md +1 -1
  3. package/configs/engines/README.md +45 -5
  4. package/configs/engines/dsh.json +17 -0
  5. package/configs/engines/kimi-code.json +17 -0
  6. package/dist/bin/acp-server.js +7 -12
  7. package/dist/bin/acp-server.js.map +1 -1
  8. package/dist/bin/cli.js +127 -67
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/bin/mcp-server.js +2 -54
  11. package/dist/bin/mcp-server.js.map +1 -1
  12. package/dist/src/acp-server.d.ts +17 -9
  13. package/dist/src/acp-server.js +151 -30
  14. package/dist/src/acp-server.js.map +1 -1
  15. package/dist/src/autoloop/agent-tools.d.ts +2 -0
  16. package/dist/src/autoloop/agent-tools.js +7 -0
  17. package/dist/src/autoloop/agent-tools.js.map +1 -1
  18. package/dist/src/autoloop/dispatcher.d.ts +6 -0
  19. package/dist/src/autoloop/dispatcher.js +23 -1
  20. package/dist/src/autoloop/dispatcher.js.map +1 -1
  21. package/dist/src/autoloop/planner-tools.js +2 -0
  22. package/dist/src/autoloop/planner-tools.js.map +1 -1
  23. package/dist/src/council.d.ts +8 -0
  24. package/dist/src/council.js +45 -12
  25. package/dist/src/council.js.map +1 -1
  26. package/dist/src/dashboard/index.html +28 -14
  27. package/dist/src/embedded-server.js +34 -10
  28. package/dist/src/embedded-server.js.map +1 -1
  29. package/dist/src/engine-presets.d.ts +7 -3
  30. package/dist/src/engine-presets.js +39 -6
  31. package/dist/src/engine-presets.js.map +1 -1
  32. package/dist/src/engine-spawn.js +3 -1
  33. package/dist/src/engine-spawn.js.map +1 -1
  34. package/dist/src/fanout.d.ts +13 -3
  35. package/dist/src/fanout.js +10 -0
  36. package/dist/src/fanout.js.map +1 -1
  37. package/dist/src/inbox-manager.d.ts +9 -0
  38. package/dist/src/inbox-manager.js +8 -2
  39. package/dist/src/inbox-manager.js.map +1 -1
  40. package/dist/src/index.d.ts +2 -0
  41. package/dist/src/index.js +136 -52
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/kernel/conditions.d.ts +1 -1
  44. package/dist/src/kernel/conditions.js +1 -1
  45. package/dist/src/kernel/engine.d.ts +28 -8
  46. package/dist/src/kernel/engine.js +93 -19
  47. package/dist/src/kernel/engine.js.map +1 -1
  48. package/dist/src/kernel/nodes/agent.js +2 -0
  49. package/dist/src/kernel/nodes/agent.js.map +1 -1
  50. package/dist/src/kernel/nodes/council.js +9 -4
  51. package/dist/src/kernel/nodes/council.js.map +1 -1
  52. package/dist/src/kernel/nodes/fanout.js +5 -0
  53. package/dist/src/kernel/nodes/fanout.js.map +1 -1
  54. package/dist/src/kernel/nodes/goal.d.ts +8 -1
  55. package/dist/src/kernel/nodes/goal.js +40 -19
  56. package/dist/src/kernel/nodes/goal.js.map +1 -1
  57. package/dist/src/kernel/nodes/subflow.js +9 -1
  58. package/dist/src/kernel/nodes/subflow.js.map +1 -1
  59. package/dist/src/kernel/nodes/ultraapp.d.ts +1 -0
  60. package/dist/src/kernel/nodes/ultraapp.js +1 -0
  61. package/dist/src/kernel/nodes/ultraapp.js.map +1 -1
  62. package/dist/src/kernel/nodes/verifier.js +5 -1
  63. package/dist/src/kernel/nodes/verifier.js.map +1 -1
  64. package/dist/src/kernel/projections.d.ts +1 -0
  65. package/dist/src/kernel/projections.js +7 -1
  66. package/dist/src/kernel/projections.js.map +1 -1
  67. package/dist/src/kernel/templates/index.d.ts +6 -3
  68. package/dist/src/kernel/templates/index.js +8 -3
  69. package/dist/src/kernel/templates/index.js.map +1 -1
  70. package/dist/src/kernel/types.d.ts +30 -10
  71. package/dist/src/kernel/types.js.map +1 -1
  72. package/dist/src/logger.d.ts +6 -0
  73. package/dist/src/logger.js +14 -0
  74. package/dist/src/logger.js.map +1 -1
  75. package/dist/src/mcp-annotations.d.ts +13 -0
  76. package/dist/src/mcp-annotations.js +100 -0
  77. package/dist/src/mcp-annotations.js.map +1 -0
  78. package/dist/src/models.d.ts +7 -0
  79. package/dist/src/models.js +9 -0
  80. package/dist/src/models.js.map +1 -1
  81. package/dist/src/openai-compat.d.ts +11 -5
  82. package/dist/src/openai-compat.js +55 -54
  83. package/dist/src/openai-compat.js.map +1 -1
  84. package/dist/src/persistent-acp-session.d.ts +83 -0
  85. package/dist/src/persistent-acp-session.js +433 -0
  86. package/dist/src/persistent-acp-session.js.map +1 -0
  87. package/dist/src/persistent-codex-app-session.d.ts +2 -0
  88. package/dist/src/persistent-codex-app-session.js +18 -9
  89. package/dist/src/persistent-codex-app-session.js.map +1 -1
  90. package/dist/src/persistent-codex-session.d.ts +14 -3
  91. package/dist/src/persistent-codex-session.js +22 -19
  92. package/dist/src/persistent-codex-session.js.map +1 -1
  93. package/dist/src/persistent-custom-session.d.ts +9 -0
  94. package/dist/src/persistent-custom-session.js +41 -21
  95. package/dist/src/persistent-custom-session.js.map +1 -1
  96. package/dist/src/persistent-grok-session.js +1 -1
  97. package/dist/src/persistent-grok-session.js.map +1 -1
  98. package/dist/src/run-ledger.d.ts +3 -3
  99. package/dist/src/session-manager.d.ts +34 -1
  100. package/dist/src/session-manager.js +169 -30
  101. package/dist/src/session-manager.js.map +1 -1
  102. package/dist/src/types.d.ts +63 -12
  103. package/dist/src/types.js +2 -0
  104. package/dist/src/types.js.map +1 -1
  105. package/dist/src/ultraapp/build.d.ts +5 -11
  106. package/dist/src/ultraapp/build.js +5 -11
  107. package/dist/src/ultraapp/build.js.map +1 -1
  108. package/dist/src/ultraapp/council-adapter.d.ts +5 -2
  109. package/dist/src/ultraapp/council-adapter.js +6 -6
  110. package/dist/src/ultraapp/council-adapter.js.map +1 -1
  111. package/dist/src/ultraapp/files.d.ts +7 -0
  112. package/dist/src/ultraapp/files.js +7 -1
  113. package/dist/src/ultraapp/files.js.map +1 -1
  114. package/dist/src/ultraapp/manager.d.ts +23 -3
  115. package/dist/src/ultraapp/manager.js +170 -72
  116. package/dist/src/ultraapp/manager.js.map +1 -1
  117. package/dist/src/ultraapp/narrator.js +1 -1
  118. package/dist/src/ultraapp/narrator.js.map +1 -1
  119. package/dist/src/ultraapp/versions.d.ts +27 -5
  120. package/dist/src/ultraapp/versions.js +58 -13
  121. package/dist/src/ultraapp/versions.js.map +1 -1
  122. package/openclaw.plugin.json +4 -13
  123. package/package.json +13 -6
  124. package/skills/SKILL.md +52 -24
  125. package/skills/references/acp.md +140 -57
  126. package/skills/references/autoloop.md +141 -35
  127. package/skills/references/claude-cli-tracking.md +9 -6
  128. package/skills/references/cli.md +129 -91
  129. package/skills/references/council.md +44 -22
  130. package/skills/references/dashboard.md +37 -21
  131. package/skills/references/getting-started.md +49 -15
  132. package/skills/references/inbox.md +13 -8
  133. package/skills/references/mcp.md +25 -17
  134. package/skills/references/multi-engine.md +180 -144
  135. package/skills/references/observability.md +90 -58
  136. package/skills/references/openai-compat.md +172 -82
  137. package/skills/references/sessions.md +101 -65
  138. package/skills/references/tools.md +209 -157
  139. package/skills/references/ultra.md +7 -7
  140. package/skills/references/ultraapp.md +101 -56
  141. package/skills/references/verification.md +112 -56
  142. package/skills/references/workflow.md +227 -93
  143. package/assets/banner.jpg +0 -0
package/README.md CHANGED
@@ -1,15 +1,27 @@
1
+ <p align="center"><img src="./assets/teaser.webp" alt="Claw Orchestrator: one run through six steps — declare the checks, dispatch to any engine, run, verify, record, verdict — with a failed check sent back to the agent, on a family of coding agents" width="100%"></p>
2
+
3
+ <h1 align="center">Claw Orchestrator: A Unified Runtime for Coding Agent CLIs</h1>
4
+
1
5
  <p align="center">
2
- <img src="./assets/banner.jpg" alt="Claw Orchestrator" width="100%">
6
+ 📦 <a href="https://www.npmjs.com/package/@enderfga/claw-orchestrator">npm</a> •
7
+ 📖 <a href="./skills/references/getting-started.md">Documentation</a> •
8
+ 🎬 <a href="./examples/promo-video/">Demo film</a> •
9
+ 📝 <a href="./CHANGELOG.md">Changelog</a> •
10
+ 📚 <a href="#citation">Citation</a>
3
11
  </p>
4
12
 
5
- # Claw Orchestrator
6
-
7
- **Run Claude Code, Codex, Antigravity, Grok Build and OpenCode behind one runtime, and a run only counts as done when checks it didn't write pass.**
13
+ <p align="center">
14
+ <a href="https://www.npmjs.com/package/@enderfga/claw-orchestrator"><img src="https://img.shields.io/npm/v/@enderfga/claw-orchestrator.svg" alt="npm version"></a>
15
+ <a href="https://www.npmjs.com/package/@enderfga/claw-orchestrator"><img src="https://img.shields.io/npm/dm/@enderfga/claw-orchestrator.svg" alt="npm downloads"></a>
16
+ <a href="https://github.com/Enderfga/claw-orchestrator/actions/workflows/ci.yml"><img src="https://github.com/Enderfga/claw-orchestrator/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
17
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
18
+ </p>
8
19
 
9
- [![npm version](https://img.shields.io/npm/v/@enderfga/claw-orchestrator.svg)](https://www.npmjs.com/package/@enderfga/claw-orchestrator)
10
- [![npm downloads](https://img.shields.io/npm/dm/@enderfga/claw-orchestrator.svg)](https://www.npmjs.com/package/@enderfga/claw-orchestrator)
11
- [![CI](https://github.com/Enderfga/claw-orchestrator/actions/workflows/ci.yml/badge.svg)](https://github.com/Enderfga/claw-orchestrator/actions/workflows/ci.yml)
12
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
20
+ **Claw Orchestrator** runs Claude Code, Codex, Antigravity, Grok Build, OpenCode and any
21
+ [Agent Client Protocol](https://agentclientprotocol.com) agent (Kimi Code, dsh) as persistent sessions behind one API.
22
+ A run counts as done only when checks the agent did not write pass: you declare the checks, the runtime runs them
23
+ and reads the exit codes, and the evidence stays on disk. Runs are checkpointed workflows that survive a crash, and
24
+ every turn on every engine is recorded with its model, tokens and cost.
13
25
 
14
26
  <p align="center">
15
27
  <img src="./assets/hero.gif" alt="An agent reports that all tests pass; the runtime's own check refutes it. Five engines, three runs each, tallied by verdict." width="800">
@@ -17,74 +29,91 @@
17
29
 
18
30
  <p align="center"><sub>
19
31
  One bug, one acceptance contract, five engines, three runs each, first attempt only. The runtime ran the checks itself:
20
- 9 verified, 4 refuted, 2 errored (Grok Build hit its free-tier usage limit). One task, not a benchmark. Real runs, recorded locally —
21
- <a href="./examples/promo-video/">how the film was made, and how to re-run it</a>.
32
+ 9 verified, 4 refuted, 2 errored (Grok Build hit its free-tier usage limit). One task, not a benchmark.
33
+ <a href="./examples/promo-video/">How the film was made, and how to re-run it</a>.
22
34
  </sub></p>
23
35
 
24
36
  <details>
25
- <summary><b>▶ The 40-second film, with sound</b></summary>
37
+ <summary><b>The 40-second film, with sound</b></summary>
26
38
 
27
39
  https://github.com/user-attachments/assets/5bf9bea8-e5ac-4632-a292-a80a45831dff
28
40
 
29
41
  </details>
30
42
 
31
- Coding agents grade their own work: "All tests pass ✓". Claw Orchestrator runs them as persistent sessions behind one API and keeps the verdict out of their hands. You declare the checks, the runtime executes them and reads the exit codes, and the evidence stays on disk.
43
+ ## News
44
+
45
+ - **[2026-10]** [ResearchBoost-Agent](https://github.com/AI4AI-for-Anything/ResearchBoost-Agent), an autonomous agent
46
+ that profiles, optimizes and validates AI training code, now runs its goal mode on Claw Orchestrator.
47
+ - **[2026-10]** v7.14.0: any Agent Client Protocol agent runs as a session (`engine: 'acp'`), with presets for
48
+ Kimi Code and dsh.
49
+ - **[2026-10]** v7.13.0: `clawo goal` keeps a Codex `/goal` running for hours on one thread, reattaches it after a
50
+ crash, and judges the result with your checks.
51
+ - **[2026-09]** [Declare, Compile, Look](https://openreview.net/forum?id=Romd50Ce0w), built on Claw Orchestrator,
52
+ was presented as a talk at the ECCV 2026 Workshop on Multimodal Digital Agents.
53
+ - **[2026-08]** v6.0.0: the durable run kernel and the verification plane. A run survives its own process dying, and
54
+ a run with an acceptance contract is judged by the runtime, not by the agent.
55
+
56
+ ## Highlights
57
+
58
+ - ✅ **Verdicts the agent cannot write**: acceptance contracts (commands, HTTP probes, screenshots, diff policy, file
59
+ assertions) run by the runtime. A run ends `verified`, `refuted` or `unverified`, and editing the tests its contract
60
+ runs refutes it ([guide](./skills/references/verification.md)).
61
+ - 🔀 **Many vendors, one API**: Claude Code, Codex, Antigravity, Grok Build, OpenCode, any ACP agent and custom CLIs.
62
+ `clawo fanout` asks several at once; `session_handoff` moves a live conversation to another engine in the same
63
+ workspace ([guide](./skills/references/multi-engine.md)).
64
+ - 💾 **Survives a crash**: every state transition is checkpointed; resume, retry, timeout, cancel and steer come from
65
+ the kernel ([guide](./skills/references/workflow.md)).
66
+ - 🎯 **Long goals**: `clawo goal` runs a Codex `/goal` unattended on one thread, resumes it after usage limits within a
67
+ bound, optionally inside your own sandbox ([guide](./skills/references/workflow.md#goal)).
68
+ - 💰 **Known cost**: one per-turn ledger across engines (`clawo runs`) and a `maxBudgetUsd` cap the runtime enforces on
69
+ every engine ([guide](./skills/references/observability.md)).
70
+ - 🔌 **Fits your tools**: a CLI, an MCP server, an ACP agent for editors, an OpenAI-compatible endpoint, a TypeScript
71
+ SDK and an OpenClaw plugin ([ways to run](#ways-to-run)).
72
+
73
+ claude-squad, Conductor and Vibe Kanban are interfaces for running agents side by side in worktrees; Claude Code
74
+ subagents and Codex's parallel attempts stay within one vendor. Claw Orchestrator is a headless runtime underneath:
75
+ several vendors behind one API, durable workflows, and a verification step the agents cannot edit. They can be used
76
+ together.
77
+
78
+ ## Quick Start
79
+
80
+ Requires Node 22+ and at least one engine CLI installed and logged in (`claude`, `codex`, `agy`, `grok` or `opencode`).
32
81
 
33
82
  ```bash
34
83
  npm install -g @enderfga/claw-orchestrator
35
84
  clawo serve & # local runtime + dashboard on 127.0.0.1:18796
85
+ ```
36
86
 
87
+ ```bash
37
88
  clawo solve "The test fails. Fix price.js." --engine codex \
38
89
  --check "npm test" --check "node ../holdout/price.spec.mjs" --wait
39
90
  clawo verify <runId> # each check, why it failed, the files that changed
40
91
  clawo runs --since 1h # every turn on every engine: model, tokens, cost, verdict
41
92
  ```
42
93
 
43
- ## What you get
44
-
45
- | You want to… | Claw Orchestrator gives you |
46
- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
47
- | Stop trusting "All tests pass ✓" | Acceptance contracts — commands, HTTP probes, screenshots, diff policy, file assertions — that the runtime runs itself. A run with a contract ends `verified`, `refuted` or `unverified`, never "the agent said so". Editing the tests a contract runs refutes the run. → [verification](./skills/references/verification.md) |
48
- | Use more than one vendor | Persistent sessions for Claude Code, Codex, Antigravity, Grok Build, OpenCode and custom CLIs behind one interface. `clawo fanout` asks several of them the same question at once. → [multi-engine](./skills/references/multi-engine.md) |
49
- | Switch engines mid-task | `session_handoff` replays a live conversation onto another engine in the same workspace. → [sessions](./skills/references/sessions.md) |
50
- | Know what it cost | A durable per-turn ledger across engines (`clawo runs`) and a `maxBudgetUsd` cap the runtime enforces on every engine. → [observability](./skills/references/observability.md) |
51
- | Runs that survive a crash | Durable workflows: every transition is checkpointed; resume, retry, timeout, cancel and steer come from the kernel. → [workflow](./skills/references/workflow.md) |
52
- | Leave Codex on a goal for hours | `clawo goal` runs a Codex `/goal` on one thread until it finishes, reattaches it after a crash, resumes it after usage limits within a bound, optionally inside your own sandbox, then judges it with your checks. → [workflow](./skills/references/workflow.md#goal) |
53
- | Call it from your own tools | An MCP server (`clawo-mcp`), an ACP agent (`clawo acp`) for Zed, JetBrains and other ACP editors, an OpenAI-compatible endpoint, a TypeScript SDK, and the CLI. → [integrations](#integrations) |
54
-
55
- **How it relates to other tools.** claude-squad, Conductor and Vibe Kanban are interfaces for running agents side by side in worktrees; Claude Code subagents and Codex's parallel attempts stay within one vendor. Claw Orchestrator is a headless runtime: several vendors behind one API, durable workflows, and a verification step the agents cannot edit. They can be used together.
56
-
57
- ---
58
-
59
- ## Quick Start
60
-
61
- Requires Node 22+ and at least one engine CLI installed and logged in (`claude`, `codex`, `agy`, `grok` or `opencode`).
62
-
63
94
  ```bash
64
- npm install -g @enderfga/claw-orchestrator
65
- clawo serve # dashboard at http://127.0.0.1:18796/dash
66
- ```
67
-
68
- The server writes an access token to `~/.openclaw/server-token`; the CLI reads it from there. Open `http://127.0.0.1:18796/login?token=<token>&redirect=/dash` once to sign in the browser.
69
-
70
- **From a terminal:**
71
-
72
- ```bash
73
- clawo solve "Fix the failing tests" --engine claude --check "npm test" --wait
74
95
  clawo fanout "How would you speed up this test suite?" --engines claude,codex,grok --synthesize --wait
75
96
  clawo goal --objective-file GOAL.md --check "npm run bench:check" --check-timeout 120 --wait
76
- clawo workflow list
77
97
  ```
78
98
 
79
- **From Claude Code, or any MCP host:**
99
+ The server writes an access token to `~/.openclaw/server-token` and the CLI reads it from there. To sign in the
100
+ browser once, open `http://127.0.0.1:18796/login?token=<token>&redirect=/dash`.
80
101
 
81
- ```bash
82
- claude mcp add clawo -- clawo-mcp
83
- ```
102
+ - 🧪 **Acceptance contracts and evidence bundles** ([guide](./skills/references/verification.md))
103
+ - 🔁 **Workflows, resume and the goal node** ([guide](./skills/references/workflow.md))
104
+ - 🖥️ **Every CLI command** ([guide](./skills/references/cli.md))
105
+ - 🧰 **All 78 tools** ([guide](./skills/references/tools.md))
84
106
 
85
- Then ask for `workflow_start` with template `solve`, a task, and a contract such as `{"checks":[{"type":"command","cmd":"npm","args":["test"]}]}`.
107
+ ## Ways to run
86
108
 
87
- **From TypeScript:**
109
+ | | For | Start here |
110
+ | ------------------------------ | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
111
+ | **CLI and dashboard** | Terminals and scripts | `clawo serve`, then [`cli.md`](./skills/references/cli.md) |
112
+ | **MCP server** | Claude Code, Claude Desktop, Cursor, Cline, Continue, Zed, Windsurf, Goose, Hermes Agent | `claude mcp add clawo -- clawo-mcp`, then [`mcp.md`](./skills/references/mcp.md) |
113
+ | **ACP agent** | Zed, JetBrains, Neovim, Emacs, the VS Code ACP extension, dsh | `clawo acp`, then [`acp.md`](./skills/references/acp.md) |
114
+ | **OpenAI-compatible endpoint** | Any OpenAI SDK client or webchat, without changing call sites | `POST /v1/chat/completions` ([`openai-compat.md`](./skills/references/openai-compat.md)) |
115
+ | **TypeScript SDK** | Embedding the runtime in your own service | `import { SessionManager } from '@enderfga/claw-orchestrator'` (below) |
116
+ | **OpenClaw plugin** | Every OpenClaw agent gets all 78 tools | `curl -fsSL https://raw.githubusercontent.com/Enderfga/claw-orchestrator/main/install.sh \| bash` |
88
117
 
89
118
  ```ts
90
119
  import { SessionManager } from '@enderfga/claw-orchestrator';
@@ -94,109 +123,106 @@ await manager.startSession({ name: 'fix-tests', engine: 'claude', cwd: '/project
94
123
  const result = await manager.sendMessage('fix-tests', 'Fix the failing tests');
95
124
  ```
96
125
 
97
- ---
126
+ From an MCP host, ask for `workflow_start` with template `solve`, a task, and a contract such as
127
+ `{"checks":[{"type":"command","cmd":"npm","args":["test"]}]}`. In an ACP editor, the model selector is grouped by
128
+ engine, so one dropdown switches between Claude, Codex, Antigravity and Grok models mid-session.
98
129
 
99
- ## All features
100
-
101
- | Capability | What it does | Reference |
102
- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
103
- | **Persistent Sessions** | Long-lived coding agents kept alive across requests, with full context, tool, model, and worktree control. | [`sessions.md`](./skills/references/sessions.md) |
104
- | **Multi-Engine Runtime** | One interface over Claude Code, Codex, Antigravity (agy), Grok Build, OpenCode, and arbitrary custom CLIs. | [`multi-engine.md`](./skills/references/multi-engine.md) |
105
- | **Session Handoff** | Move a live conversation to another engine or model — a stuck Claude session into Codex, an expensive model into a cheaper one. The new session picks up where the old one stopped, in the same workspace; the old one keeps running. | [`sessions.md`](./skills/references/sessions.md) |
106
- | **Multi-Agent Council** | Parallel agents in isolated git worktrees, voting on consensus until they agree. | [`council.md`](./skills/references/council.md) |
107
- | **Fan-out** | Run one task across N engine/model agents in parallel and collect their answers, with an optional synthesis pass — the cross-engine best-of-N / diverse-perspective primitive (no rounds or worktrees). | [`tools.md`](./skills/references/tools.md) |
108
- | **ultracode** | `session_start({ ultracode: true })` lets Claude orchestrate a dynamic JS workflow and fan out to subagents per task (Claude engine). | [`tools.md`](./skills/references/tools.md) |
109
- | **Autoloop** | Three-agent autonomous workspace iteration with independent engine/model selection for Planner, Coder, and Reviewer. Chat with the Planner; it spawns Coder + Reviewer into a self-iterating subloop and pushes you on regression, target-hit, or decision points. | [`autoloop.md`](./skills/references/autoloop.md) |
110
- | **Ultraapp** | A three-agent Opus council turns a short structured interview into a deployed web app — Tailwind UI, BYOK, file-queue runtime, smoke test, all live at `localhost:19000/forge/<slug>/`. | [`ultraapp.md`](./skills/references/ultraapp.md) |
111
- | **Embedded Dashboard** | Three-tab UI for Autoloop, Council, and Forge with sidebar lifecycle controls, per-run live event streaming, and cookie-based auth via a `/login` redirect. | [`dashboard.md`](./skills/references/dashboard.md) |
112
- | **OpenAI-Compatible Proxy** | `POST /v1/chat/completions` accepts OpenAI-format requests and routes them to persistent sessions on the engine the model name selects, streaming replies back in OpenAI shape. Point any OpenAI-SDK client or webchat at the orchestrator without changing call sites. | [`openai-compat.md`](./skills/references/openai-compat.md) |
113
- | **Durable Run Kernel** | Declarative workflows over `agent` / `fanout` / `council` / `verifier` / `human_gate` / `router` / `subflow` / `autoloop` / `ultraapp_*` nodes. Every state transition is checkpointed, so a run survives a process restart and resumes at the node boundary. Retry, per-node timeout, cancel, steer, and bounded loops come from the kernel. | [`workflow.md`](./skills/references/workflow.md) |
114
- | **Verification Plane** | Acceptance contracts the runtime executes itself — commands, HTTP probes, screenshots, diff policy, file assertions — producing an evidence bundle on disk. A run carrying a contract cannot reach `completed` unless it passes, and one without a contract completes as `unverified` rather than claiming success. The tests a contract runs are held to what the run started with, so a run cannot pass by editing them. | [`verification.md`](./skills/references/verification.md) |
115
- | **Run Ledger & Spend Caps** | Every turn on every engine is appended to a durable JSONL ledger — engine, model, tokens, cost, duration, and the council/fanout/autoloop it belonged to — queryable with `clawo runs` after a restart. Rows carry both the engine's self-report (`ok`) and the runtime's own measurement (`verified`), kept apart. `maxBudgetUsd` is enforced by the runtime, so a cap holds on Codex, Grok, agy and OpenCode too, not just Claude Code. | [`observability.md`](./skills/references/observability.md) |
116
-
117
- The full 78-tool surface is enumerated in [`tools.md`](./skills/references/tools.md).
118
-
119
- ---
130
+ ## Engine compatibility
120
131
 
121
- ## Integrations
132
+ | Engine | CLI | Tested version |
133
+ | ----------- | ---------- | ------------------------------- |
134
+ | Claude Code | `claude` | 2.1.310 |
135
+ | Codex | `codex` | 0.164.0 |
136
+ | Antigravity | `agy` | 1.4.6 |
137
+ | Grok Build | `grok` | 1.0.70 |
138
+ | OpenCode | `opencode` | 1.19.4 |
139
+ | ACP agent | any | Kimi Code 2.3.1, dsh 0.2.1-rc.2 |
140
+ | Custom CLI | any | — |
122
141
 
123
- ### Standalone CLI
124
-
125
- ```bash
126
- clawo serve # dashboard + HTTP server on :18796
127
- clawo session-start fix-tests --engine claude --cwd . # start a session
128
- clawo session-send fix-tests "Fix the failing tests" # send into it
129
- ```
142
+ An agent that serves the Agent Client Protocol on stdio runs as
143
+ [`engine: 'acp'`](./skills/references/multi-engine.md#acp-agents-engine-acp); any other coding CLI that runs as a
144
+ subprocess can be wired up as a [custom engine](./skills/references/multi-engine.md#custom-engine-engine-custom).
130
145
 
131
- Every command is documented in [`cli.md`](./skills/references/cli.md).
146
+ <details>
147
+ <summary><b>How the table stays current</b></summary>
132
148
 
133
- ### OpenClaw Plugin
149
+ The versions above are what the weekly sweep last ran. `scripts/sweep.ts` measures each core engine's installed,
150
+ pinned and upstream version, diffs the flags the wrapper passes against the binary's `--help`, runs one live turn
151
+ **through the real wrapper class**, smokes the ACP and MCP entry points, and checks `src/models.ts` against the
152
+ OpenAI, Anthropic and xAI published price tables. It contains no model call, so the check that reports a wrapper as broken does not
153
+ share the wrapper's failure modes.
134
154
 
135
- ```bash
136
- curl -fsSL https://raw.githubusercontent.com/Enderfga/claw-orchestrator/main/install.sh | bash
137
- ```
155
+ `scripts/sweep-workflow.json` wraps the same script as a durable run on this project's own kernel: verifier → router
156
+ → an agent that drafts the alignment on a `sweep/<date>` branch → a human gate. A person reviews and merges; the
157
+ orchestrator does not edit its own code unattended.
138
158
 
139
- Installs via npm, registers the plugin in `~/.openclaw/openclaw.json`, restarts the gateway. All 78 tools become available to every OpenClaw agent.
159
+ </details>
140
160
 
141
- ### Model Context Protocol Server
161
+ ## All features
142
162
 
143
- ```bash
144
- npm install -g @enderfga/claw-orchestrator # clawo-mcp is now on PATH
163
+ | Capability | What it does | Reference |
164
+ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
165
+ | **Persistent sessions** | Long-lived agents kept alive across requests, with context, tool, model and worktree control. | [`sessions.md`](./skills/references/sessions.md) |
166
+ | **Multi-engine runtime** | One interface over the engines above, any ACP agent, and custom CLIs. | [`multi-engine.md`](./skills/references/multi-engine.md) |
167
+ | **Session handoff** | Moves a live conversation to another engine or model in the same workspace; the old session keeps running. | [`sessions.md`](./skills/references/sessions.md) |
168
+ | **Verification plane** | Acceptance contracts the runtime runs itself, with an evidence bundle on disk; a run without a contract ends `unverified`. | [`verification.md`](./skills/references/verification.md) |
169
+ | **Durable run kernel** | Declarative workflows over `agent`, `goal`, `fanout`, `council`, `verifier`, `human_gate`, `router` and more, checkpointed. | [`workflow.md`](./skills/references/workflow.md) |
170
+ | **Fan-out** | One task across N engine/model agents in parallel, with an optional synthesis pass. | [`tools.md`](./skills/references/tools.md) |
171
+ | **Council** | Parallel agents in isolated git worktrees, voting until they reach consensus. | [`council.md`](./skills/references/council.md) |
172
+ | **Autoloop** | A Planner, Coder and Reviewer iterating on a workspace, each with its own engine and model; you chat with the Planner. | [`autoloop.md`](./skills/references/autoloop.md) |
173
+ | **Ultraapp** | A short structured interview turned into a deployed web app at `localhost:19000/forge/<slug>/`. | [`ultraapp.md`](./skills/references/ultraapp.md) |
174
+ | **ultracode** | `session_start({ ultracode: true })` lets Claude orchestrate a dynamic workflow of subagents. | [`tools.md`](./skills/references/tools.md) |
175
+ | **Run ledger, spend caps** | Every turn on every engine in one JSONL ledger (`clawo runs`), and a `maxBudgetUsd` cap enforced on every engine. | [`observability.md`](./skills/references/observability.md) |
176
+ | **OpenAI-compatible proxy** | `POST /v1/chat/completions` routed to persistent sessions on the engine the model name selects, streamed back in OpenAI shape. | [`openai-compat.md`](./skills/references/openai-compat.md) |
177
+ | **Dashboard** | Autoloop, Council and Forge tabs with lifecycle controls and live event streams, and a Runs tab of durable workflow runs. | [`dashboard.md`](./skills/references/dashboard.md) |
178
+
179
+ ## Built on Claw Orchestrator
180
+
181
+ - [ResearchBoost-Agent](https://github.com/AI4AI-for-Anything/ResearchBoost-Agent): an autonomous agent that profiles,
182
+ optimizes and validates AI training code; its long goal-mode runs use `clawo goal`
183
+ ([blog](https://ydove0324.github.io/hx_resume/blog/researchboost/)).
184
+ - [Declare, Compile, Look](https://openreview.net/forum?id=Romd50Ce0w): coordinate-free layout generation with
185
+ vision-in-the-loop repair, ECCV 2026 Workshop on Multimodal Digital Agents (talk).
186
+
187
+ Using Claw Orchestrator in a project or paper? Open a pull request to add it here.
188
+
189
+ ## Citation
190
+
191
+ If Claw Orchestrator helps your research, please cite it:
192
+
193
+ ```bibtex
194
+ @misc{fang2026claworchestrator,
195
+ title = {Claw Orchestrator: A Unified Runtime for Coding Agent CLIs},
196
+ author = {Fang, Guian},
197
+ year = {2026},
198
+ howpublished = {\url{https://github.com/Enderfga/claw-orchestrator}}
199
+ }
145
200
  ```
146
201
 
147
- Register `clawo-mcp` with any MCP-compatible host: Hermes Agent, Claude Desktop, Cursor, Cline, Continue, Zed, Windsurf, Goose, and others. Per-host stdio-config snippets and the `CLAWO_MCP_TOOLS` allowlist for tight tool budgets are in [`mcp.md`](./skills/references/mcp.md).
148
-
149
- ### Agent Client Protocol Agent
150
-
151
- ```bash
152
- clawo acp # or the dedicated binary: clawo-acp
202
+ Research built on Claw Orchestrator:
203
+
204
+ ```bibtex
205
+ @misc{researchboost2026infra,
206
+ author = {{ResearchBoost Team}},
207
+ title = {{ResearchBoost}: {RSI} starts with Infra},
208
+ year = {2026},
209
+ url = {https://ydove0324.github.io/hx_resume/blog/researchboost/}
210
+ }
211
+
212
+ @inproceedings{fang2026declare,
213
+ title = {Declare, Compile, Look: Coordinate-Free Layout Generation with Vision-in-the-Loop Repair},
214
+ author = {Fang, Guian and Liu, Mengsha and Shou, Mike Zheng},
215
+ booktitle = {ECCV 2026 Multimodal Digital Agents Workshop},
216
+ year = {2026},
217
+ url = {https://openreview.net/forum?id=Romd50Ce0w}
218
+ }
153
219
  ```
154
220
 
155
- MCP gives tools _to_ an agent; ACP makes you _be_ the agent. `clawo acp` speaks
156
- [Agent Client Protocol](https://agentclientprotocol.com) over stdio, so Zed, JetBrains,
157
- Neovim, Emacs, the VS Code ACP extension — or `dsh` via its `subagent-acp` provider —
158
- can drive Claw Orchestrator as their coding agent.
159
-
160
- The model selector is grouped by engine, so one dropdown holds Claude, Codex and Grok
161
- models at once and switching it switches engine mid-session; `/council`, `/ultraplan`
162
- and `/ultrareview` run multi-agent orchestrations from the chat box. Setup, the `dsh` YAML
163
- block, and the cancellation and permission limitations are in
164
- [`acp.md`](./skills/references/acp.md).
165
-
166
- ---
167
-
168
- ## Engine Compatibility
169
-
170
- | Engine | CLI | Tested Version |
171
- | ----------- | ---------- | -------------- |
172
- | Claude Code | `claude` | 2.1.307 |
173
- | Codex | `codex` | 0.164.0 |
174
- | Antigravity | `agy` | 1.4.4 |
175
- | Grok Build | `grok` | 1.0.67 |
176
- | OpenCode | `opencode` | 1.19.3 |
177
- | Custom CLI | any | — |
178
-
179
- Any coding CLI that runs as a subprocess can be wired up as a custom engine — see [`multi-engine.md`](./skills/references/multi-engine.md#custom-engine-engine-custom).
180
-
181
- ---
182
-
183
- ## How the engine table stays current
184
-
185
- The versions above are not typed in — they are what the weekly sweep last ran. `scripts/sweep.ts`
186
- measures each core engine's installed, pinned and upstream version, diffs the flags the wrapper
187
- passes against the binary's `--help`, runs one live turn **through the real wrapper class**, smokes
188
- the ACP and MCP entry points, and checks `src/models.ts` against both vendors' published price
189
- tables. It contains no model call, so the check that reports a wrapper as broken does not share the
190
- wrapper's failure modes.
191
-
192
- `scripts/sweep-workflow.json` wraps the same script as a durable run on this project's own kernel:
193
- verifier → router → an agent that drafts the alignment on a `sweep/<date>` branch → a human gate.
194
- A person reviews and merges; the orchestrator does not edit its own code unattended.
195
-
196
221
  ## Contributing
197
222
 
198
- See [`CONTRIBUTING.md`](./CONTRIBUTING.md). Run `npm run build && npm run lint && npm run format:check && npm run test` before submitting.
223
+ See [`CONTRIBUTING.md`](./CONTRIBUTING.md). Run `npm run build && npm run lint && npm run format:check && npm run test`
224
+ before submitting.
199
225
 
200
226
  ## License
201
227
 
202
- MIT — see [`LICENSE`](./LICENSE).
228
+ MIT, see [`LICENSE`](./LICENSE).
@@ -56,7 +56,7 @@ Autoloop control:
56
56
  | Tool | Args | When |
57
57
  |---|---|---|
58
58
  | `review_complete` | `decision` ('advance' / 'hold' / 'rollback'), `metric` (number or null), `audit_notes` (string), `flags?` (string[]) | Always emit exactly one of these per turn (Rule 4). |
59
- | `reviewer_log` | `message` (string) | Append to `<ledger>/reviewer_log.jsonl`. Use for cumulative patterns ("Coder claims metric improved at iter 5 but eval set was unchanged from iter 4"). |
59
+ | `reviewer_log` | `message` (string) | Appended to `reviewer_log.jsonl` in your sandbox cwd, which is kept across iters. Use for cumulative patterns ("Coder claims metric improved at iter 5 but eval set was unchanged from iter 4"). |
60
60
 
61
61
  ---
62
62
 
@@ -1,8 +1,21 @@
1
1
  # Community engine presets
2
2
 
3
- Each `*.json` here describes one third-party coding CLI as a `CustomEngineConfig`,
4
- so a caller can reach it with `engine: "custom", customEngine: "<id>"` instead of
5
- retyping the configuration. The filename must match the preset's `id`.
3
+ Each `*.json` here describes one third-party coding CLI, so a caller can name it by
4
+ id instead of retyping its configuration. A preset carries exactly one of two blocks:
5
+
6
+ - `engine` — a `CustomEngineConfig`, started with `engine: "custom", customEngine: "<id>"`
7
+ (`clawo session-start <name> -e custom --custom-engine <id>`);
8
+ - `acp` — an agent that serves the Agent Client Protocol on stdio, started with
9
+ `engine: "acp", acpAgent: "<id>"` (`clawo session-start <name> -e acp --acp-agent <id>`).
10
+
11
+ The `id` is lower-case kebab-case, 3–40 characters, and the filename must match it.
12
+ `clawo engines` lists what is bundled:
13
+
14
+ | Preset | Block | Runs |
15
+ | ----------- | -------- | -------------------- |
16
+ | `zcode` | `engine` | `zcode-claw-adapter` |
17
+ | `kimi-code` | `acp` | `kimi acp` |
18
+ | `dsh` | `acp` | `dsh --profile acp` |
6
19
 
7
20
  These are **community** entries. This project validates their schema and ships
8
21
  them; it does not claim they work. What stands behind a preset is its
@@ -15,8 +28,9 @@ not hold; see
15
28
  A preset never contains protocol translation. If the CLI speaks its own wire
16
29
  format rather than something `CustomEngineConfig` can already describe, the
17
30
  adapter belongs in your own package as a binary, and the preset points `bin` at
18
- it. The `@enderfga/dsh-clawo` package, an adapter for DeepSeek's `dsh` CLI, is
19
- an example.
31
+ it. The `zcode` preset is an example: its `bin` is `zcode-claw-adapter`, an
32
+ adapter published from its maintainer's own repository. An agent that serves ACP
33
+ needs no adapter.
20
34
 
21
35
  Contribution steps, the smoke script, and the full field reference are in
22
36
  [CONTRIBUTING.md](https://github.com/Enderfga/claw-orchestrator/blob/main/CONTRIBUTING.md#contributing-an-engine).
@@ -45,5 +59,31 @@ Contribution steps, the smoke script, and the full field reference are in
45
59
  }
46
60
  ```
47
61
 
62
+ `id`, `tier` (always `"community"`) and `description` are required, and so are
63
+ `provenance.maintainer`, `verifiedAgainst` and an ISO `verifiedOn` date;
64
+ `sourceUrl` and `smokeUrl` are optional in the schema, and `smokeUrl` is expected
65
+ in review. `engine.name`, `engine.bin` and `engine.args` (which may be empty) are
66
+ required.
67
+
48
68
  `engine.bin` must be a command name, not an absolute path — one machine's layout
49
69
  is not a preset. Use `binEnv` so people who installed it elsewhere can point at it.
70
+
71
+ ## ACP agents
72
+
73
+ An `acp` block takes the place of `engine` and needs no protocol mapping, since
74
+ every ACP agent speaks the same protocol: it names the command and its arguments.
75
+
76
+ ```json
77
+ {
78
+ "id": "kimi-code",
79
+ "tier": "community",
80
+ "description": "…",
81
+ "provenance": { "maintainer": "…", "verifiedAgainst": "2.3.1", "verifiedOn": "2026-10-24" },
82
+ "acp": { "name": "kimi-code", "command": "kimi", "commandEnv": "KIMI_BIN", "args": ["acp"] }
83
+ }
84
+ ```
85
+
86
+ `acp.name` and `acp.command` are required; `commandEnv`, `args`, `env`,
87
+ `contextWindow` and `pricing` (per million tokens, used only when the agent
88
+ reports no cost) are optional. `acp.command` follows the same rule as
89
+ `engine.bin`: a command name, with `commandEnv` for an install elsewhere.
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": "dsh",
3
+ "tier": "community",
4
+ "description": "DeepSeek Harness (`dsh`), served over the Agent Client Protocol (`dsh --profile acp`). Start with engine 'acp'.",
5
+ "provenance": {
6
+ "maintainer": "Enderfga",
7
+ "verifiedAgainst": "0.2.1-rc.2",
8
+ "verifiedOn": "2026-10-24",
9
+ "sourceUrl": "https://www.npmjs.com/package/@deepseek-ai/dsh"
10
+ },
11
+ "acp": {
12
+ "name": "dsh",
13
+ "command": "dsh",
14
+ "commandEnv": "DSH_BIN",
15
+ "args": ["--profile", "acp"]
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": "kimi-code",
3
+ "tier": "community",
4
+ "description": "Moonshot AI's Kimi Code CLI, served over the Agent Client Protocol (`kimi acp`). Start with engine 'acp'.",
5
+ "provenance": {
6
+ "maintainer": "Enderfga",
7
+ "verifiedAgainst": "2.3.1",
8
+ "verifiedOn": "2026-10-24",
9
+ "sourceUrl": "https://www.kimi.com/code/docs/en/kimi-code-cli/reference/kimi-acp"
10
+ },
11
+ "acp": {
12
+ "name": "kimi-code",
13
+ "command": "kimi",
14
+ "commandEnv": "KIMI_BIN",
15
+ "args": ["acp"]
16
+ }
17
+ }
@@ -23,30 +23,25 @@
23
23
  */
24
24
  import { Readable, Writable } from 'node:stream';
25
25
  import * as acp from '@agentclientprotocol/sdk';
26
+ import { createStderrLogger } from '../src/logger.js';
26
27
  // Suppress the embedded HTTP server before anything can construct it — it is
27
28
  // dead weight here and its start() writes to stdout.
28
29
  process.env.CLAWO_NO_EMBEDDED_SERVER ??= '1';
29
30
  const { SessionManager } = await import('../src/session-manager.js');
30
- const { createAcpAgent } = await import('../src/acp-server.js');
31
- /** Only the three modes the ACP config selector offers are accepted from the env. */
32
- const PERMISSION_MODES = new Set(['plan', 'acceptEdits', 'bypassPermissions']);
31
+ const { createAcpAgent, ACP_PERMISSION_MODES } = await import('../src/acp-server.js');
32
+ /** Every level to stderr, filtered by OPENCLAW_LOG_LEVEL. See the header: stdout belongs to the protocol. */
33
+ const log = createStderrLogger('clawo-acp');
34
+ /** Only the modes the ACP config selector offers are accepted from the env. */
33
35
  function envPermissionMode() {
34
36
  const raw = (process.env.CLAWO_ACP_PERMISSION || '').trim();
35
37
  if (!raw)
36
38
  return undefined;
37
- if (!PERMISSION_MODES.has(raw)) {
38
- console.error(`[clawo-acp] ignoring CLAWO_ACP_PERMISSION='${raw}' — expected one of ${[...PERMISSION_MODES]}`);
39
+ if (!ACP_PERMISSION_MODES.includes(raw)) {
40
+ log.warn(`ignoring CLAWO_ACP_PERMISSION='${raw}' — expected one of ${ACP_PERMISSION_MODES.join(',')}`);
39
41
  return undefined;
40
42
  }
41
43
  return raw;
42
44
  }
43
- /** Every level to stderr. See the header: stdout belongs to the protocol. */
44
- const log = {
45
- debug: (msg, ...args) => console.error('[clawo-acp]', msg, ...args),
46
- info: (msg, ...args) => console.error('[clawo-acp]', msg, ...args),
47
- warn: (msg, ...args) => console.error('[clawo-acp]', msg, ...args),
48
- error: (msg, ...args) => console.error('[clawo-acp]', msg, ...args),
49
- };
50
45
  const manager = new SessionManager({
51
46
  maxConcurrentSessions: parseInt(process.env.OPENCLAW_SERVE_MAX_SESSIONS || '', 10) || 32,
52
47
  sessionTtlMinutes: parseInt(process.env.OPENCLAW_SERVE_TTL_MINUTES || '', 10) || 60,
@@ -1 +1 @@
1
- {"version":3,"file":"acp-server.js","sourceRoot":"","sources":["../../bin/acp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acp-server.js","sourceRoot":"","sources":["../../bin/acp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,6EAA6E;AAC7E,qDAAqD;AACrD,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC;AAE7C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACrE,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEtF,6GAA6G;AAC7G,MAAM,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAE5C,+EAA+E;AAC/E,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAoB,CAAC;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,kCAAkC,GAAG,uBAAuB,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,cAAc,CAChC;IACE,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;IACxF,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;CACpF,EACD,GAAG,CACJ,CAAC;AAEF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE;IACpC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS;IACtD,qBAAqB,EAAE,iBAAiB,EAAE;IAC1C,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAC1B,IAAI,YAAY;QAAE,OAAO;IACzB,YAAY,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAA+B,CAAC,CAC9G,CAAC;AAEF,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,UAAU,CAAC,MAAM,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,EACrB,CAAC,GAAY,EAAE,EAAE;IACf,GAAG,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1D,KAAK,QAAQ,EAAE,CAAC;AAClB,CAAC,CACF,CAAC;AAEF,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC"}