@enderfga/claw-orchestrator 5.0.0 → 6.0.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 +28 -28
- package/dist/bin/cli.js +107 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/acp-server.d.ts +5 -5
- package/dist/src/acp-server.js +3 -3
- package/dist/src/acp-server.js.map +1 -1
- package/dist/src/autoloop/dispatcher.d.ts +22 -0
- package/dist/src/autoloop/dispatcher.js +71 -13
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/autoloop/messages.d.ts +10 -0
- package/dist/src/autoloop/messages.js.map +1 -1
- package/dist/src/autoloop/runner.js +6 -0
- package/dist/src/autoloop/runner.js.map +1 -1
- package/dist/src/constants.d.ts +0 -6
- package/dist/src/constants.js +0 -6
- package/dist/src/constants.js.map +1 -1
- package/dist/src/council.d.ts +15 -0
- package/dist/src/council.js +48 -35
- package/dist/src/council.js.map +1 -1
- package/dist/src/dashboard/index.html +191 -6
- package/dist/src/embedded-server.js +132 -9
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/fanout.d.ts +30 -1
- package/dist/src/fanout.js +32 -3
- package/dist/src/fanout.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +360 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/agent-step.d.ts +59 -0
- package/dist/src/kernel/agent-step.js +100 -0
- package/dist/src/kernel/agent-step.js.map +1 -0
- package/dist/src/kernel/conditions.d.ts +11 -0
- package/dist/src/kernel/conditions.js +24 -0
- package/dist/src/kernel/conditions.js.map +1 -0
- package/dist/src/kernel/engine.d.ts +319 -0
- package/dist/src/kernel/engine.js +1047 -0
- package/dist/src/kernel/engine.js.map +1 -0
- package/dist/src/kernel/exec.d.ts +43 -0
- package/dist/src/kernel/exec.js +112 -0
- package/dist/src/kernel/exec.js.map +1 -0
- package/dist/src/kernel/file-lock.d.ts +50 -0
- package/dist/src/kernel/file-lock.js +135 -0
- package/dist/src/kernel/file-lock.js.map +1 -0
- package/dist/src/kernel/nodes/agent.d.ts +4 -0
- package/dist/src/kernel/nodes/agent.js +35 -0
- package/dist/src/kernel/nodes/agent.js.map +1 -0
- package/dist/src/kernel/nodes/autoloop.d.ts +78 -0
- package/dist/src/kernel/nodes/autoloop.js +75 -0
- package/dist/src/kernel/nodes/autoloop.js.map +1 -0
- package/dist/src/kernel/nodes/council.d.ts +12 -0
- package/dist/src/kernel/nodes/council.js +88 -0
- package/dist/src/kernel/nodes/council.js.map +1 -0
- package/dist/src/kernel/nodes/fanout.d.ts +11 -0
- package/dist/src/kernel/nodes/fanout.js +63 -0
- package/dist/src/kernel/nodes/fanout.js.map +1 -0
- package/dist/src/kernel/nodes/human-gate.d.ts +4 -0
- package/dist/src/kernel/nodes/human-gate.js +7 -0
- package/dist/src/kernel/nodes/human-gate.js.map +1 -0
- package/dist/src/kernel/nodes/index.d.ts +12 -0
- package/dist/src/kernel/nodes/index.js +21 -0
- package/dist/src/kernel/nodes/index.js.map +1 -0
- package/dist/src/kernel/nodes/router.d.ts +4 -0
- package/dist/src/kernel/nodes/router.js +12 -0
- package/dist/src/kernel/nodes/router.js.map +1 -0
- package/dist/src/kernel/nodes/subflow.d.ts +13 -0
- package/dist/src/kernel/nodes/subflow.js +38 -0
- package/dist/src/kernel/nodes/subflow.js.map +1 -0
- package/dist/src/kernel/nodes/ultraapp.d.ts +60 -0
- package/dist/src/kernel/nodes/ultraapp.js +62 -0
- package/dist/src/kernel/nodes/ultraapp.js.map +1 -0
- package/dist/src/kernel/nodes/verifier.d.ts +14 -0
- package/dist/src/kernel/nodes/verifier.js +84 -0
- package/dist/src/kernel/nodes/verifier.js.map +1 -0
- package/dist/src/kernel/projections.d.ts +42 -0
- package/dist/src/kernel/projections.js +133 -0
- package/dist/src/kernel/projections.js.map +1 -0
- package/dist/src/kernel/repo.d.ts +13 -0
- package/dist/src/kernel/repo.js +64 -0
- package/dist/src/kernel/repo.js.map +1 -0
- package/dist/src/kernel/secrets.d.ts +25 -0
- package/dist/src/kernel/secrets.js +48 -0
- package/dist/src/kernel/secrets.js.map +1 -0
- package/dist/src/kernel/store.d.ts +225 -0
- package/dist/src/kernel/store.js +838 -0
- package/dist/src/kernel/store.js.map +1 -0
- package/dist/src/kernel/templates/index.d.ts +140 -0
- package/dist/src/kernel/templates/index.js +266 -0
- package/dist/src/kernel/templates/index.js.map +1 -0
- package/dist/src/kernel/types.d.ts +326 -0
- package/dist/src/kernel/types.js +19 -0
- package/dist/src/kernel/types.js.map +1 -0
- package/dist/src/models.d.ts +1 -1
- package/dist/src/models.js +31 -3
- package/dist/src/models.js.map +1 -1
- package/dist/src/persistent-cursor-session.js +6 -1
- package/dist/src/persistent-cursor-session.js.map +1 -1
- package/dist/src/persistent-grok-session.d.ts +40 -0
- package/dist/src/persistent-grok-session.js +197 -0
- package/dist/src/persistent-grok-session.js.map +1 -0
- package/dist/src/run-ledger.d.ts +57 -3
- package/dist/src/run-ledger.js +45 -2
- package/dist/src/run-ledger.js.map +1 -1
- package/dist/src/session-manager.d.ts +176 -129
- package/dist/src/session-manager.js +657 -603
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.d.ts +37 -4
- package/dist/src/types.js +15 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/ultraapp/build.d.ts +117 -3
- package/dist/src/ultraapp/build.js +319 -3
- package/dist/src/ultraapp/build.js.map +1 -1
- package/dist/src/ultraapp/contract.d.ts +52 -0
- package/dist/src/ultraapp/contract.js +83 -0
- package/dist/src/ultraapp/contract.js.map +1 -0
- package/dist/src/ultraapp/conventions.js +9 -2
- package/dist/src/ultraapp/conventions.js.map +1 -1
- package/dist/src/ultraapp/fix-on-failure.d.ts +21 -2
- package/dist/src/ultraapp/fix-on-failure.js +46 -62
- package/dist/src/ultraapp/fix-on-failure.js.map +1 -1
- package/dist/src/ultraapp/manager.d.ts +107 -2
- package/dist/src/ultraapp/manager.js +305 -86
- package/dist/src/ultraapp/manager.js.map +1 -1
- package/dist/src/verify/baseline.d.ts +73 -0
- package/dist/src/verify/baseline.js +186 -0
- package/dist/src/verify/baseline.js.map +1 -0
- package/dist/src/verify/contract.d.ts +116 -0
- package/dist/src/verify/contract.js +142 -0
- package/dist/src/verify/contract.js.map +1 -0
- package/dist/src/verify/evidence.d.ts +61 -0
- package/dist/src/verify/evidence.js +133 -0
- package/dist/src/verify/evidence.js.map +1 -0
- package/dist/src/verify/runner.d.ts +63 -0
- package/dist/src/verify/runner.js +317 -0
- package/dist/src/verify/runner.js.map +1 -0
- package/openclaw.plugin.json +8 -0
- package/package.json +2 -2
- package/skills/SKILL.md +121 -80
- package/skills/references/acp.md +18 -18
- package/skills/references/autoloop.md +148 -72
- package/skills/references/claude-cli-tracking.md +4 -4
- package/skills/references/cli.md +103 -60
- package/skills/references/council.md +109 -37
- package/skills/references/dashboard.md +34 -6
- package/skills/references/getting-started.md +14 -14
- package/skills/references/inbox.md +4 -4
- package/skills/references/mcp.md +39 -34
- package/skills/references/multi-engine.md +109 -51
- package/skills/references/observability.md +88 -27
- package/skills/references/openai-compat.md +40 -40
- package/skills/references/sessions.md +44 -26
- package/skills/references/tools.md +402 -309
- package/skills/references/ultra.md +45 -45
- package/skills/references/ultraapp.md +126 -50
- package/skills/references/verification.md +187 -0
- package/skills/references/workflow.md +362 -0
- package/dist/src/ultraapp/fix-on-failure-session.d.ts +0 -23
- package/dist/src/ultraapp/fix-on-failure-session.js +0 -51
- package/dist/src/ultraapp/fix-on-failure-session.js.map +0 -1
|
@@ -16,7 +16,7 @@ start() → send() → send() → ... → stop()
|
|
|
16
16
|
const info = await manager.startSession({
|
|
17
17
|
name: 'my-task',
|
|
18
18
|
cwd: '/path/to/project',
|
|
19
|
-
model: 'opus',
|
|
19
|
+
model: 'opus', // alias or full name
|
|
20
20
|
permissionMode: 'acceptEdits',
|
|
21
21
|
effort: 'high',
|
|
22
22
|
allowedTools: ['Bash', 'Read', 'Edit', 'Write'],
|
|
@@ -27,24 +27,24 @@ const info = await manager.startSession({
|
|
|
27
27
|
|
|
28
28
|
Key options:
|
|
29
29
|
|
|
30
|
-
| Option
|
|
31
|
-
|
|
32
|
-
| `engine`
|
|
33
|
-
| `model`
|
|
34
|
-
| `permissionMode`
|
|
35
|
-
| `effort`
|
|
36
|
-
| `bare`
|
|
37
|
-
| `worktree`
|
|
38
|
-
| `appendSystemPrompt` | Append custom instructions to the system prompt
|
|
30
|
+
| Option | Description |
|
|
31
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `engine` | `'claude'` (default), `'codex'`, `'codex-app'`, `'agy'`, `'grok'`, `'opencode'`, or `'custom'` — see [Multi-Engine](./multi-engine.md) |
|
|
33
|
+
| `model` | Model alias (`fable`, `opus`, `sonnet`, `haiku`, `agy-pro`) or full name |
|
|
34
|
+
| `permissionMode` | `acceptEdits`, `bypassPermissions`, `plan`, `auto`, `manual`, `dontAsk` (`default` = legacy alias for `manual`) |
|
|
35
|
+
| `effort` | `low`, `medium`, `high`, `max`, `auto` |
|
|
36
|
+
| `bare` | Skip hooks, LSP, auto-memory, CLAUDE.md |
|
|
37
|
+
| `worktree` | Run in isolated git worktree |
|
|
38
|
+
| `appendSystemPrompt` | Append custom instructions to the system prompt |
|
|
39
39
|
|
|
40
40
|
### Sending Messages
|
|
41
41
|
|
|
42
42
|
```typescript
|
|
43
43
|
const result = await manager.sendMessage('my-task', 'Fix the auth bug', {
|
|
44
|
-
effort: 'high',
|
|
45
|
-
plan: true,
|
|
46
|
-
timeout: 600_000,
|
|
47
|
-
onChunk: (text) => process.stdout.write(text),
|
|
44
|
+
effort: 'high', // override effort for this message
|
|
45
|
+
plan: true, // enter plan mode
|
|
46
|
+
timeout: 600_000, // 10 min timeout
|
|
47
|
+
onChunk: (text) => process.stdout.write(text), // streaming
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
console.log(result.output);
|
|
@@ -100,8 +100,8 @@ Mid-turn and thread control via Codex 0.137 v2 RPCs, surfaced as tools: `codex_i
|
|
|
100
100
|
Switch models mid-conversation. The session restarts with `--resume` to preserve history:
|
|
101
101
|
|
|
102
102
|
```typescript
|
|
103
|
-
await manager.switchModel('my-task', 'haiku');
|
|
104
|
-
await manager.switchModel('my-task', 'opus');
|
|
103
|
+
await manager.switchModel('my-task', 'haiku'); // fast model for simple tasks
|
|
104
|
+
await manager.switchModel('my-task', 'opus'); // back to powerful model
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
### Tool Management
|
|
@@ -111,11 +111,11 @@ Add/remove tool permissions at runtime:
|
|
|
111
111
|
```typescript
|
|
112
112
|
await manager.updateTools('my-task', {
|
|
113
113
|
allowedTools: ['Bash', 'Read'],
|
|
114
|
-
merge: true,
|
|
114
|
+
merge: true, // add to existing list
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
await manager.updateTools('my-task', {
|
|
118
|
-
removeTools: ['Bash'],
|
|
118
|
+
removeTools: ['Bash'], // revoke Bash access
|
|
119
119
|
});
|
|
120
120
|
```
|
|
121
121
|
|
|
@@ -135,7 +135,7 @@ prompt over the window the engine actually enforces — so it rises and falls wi
|
|
|
135
135
|
the conversation. `stats.tokensIn` is the different question of how many input
|
|
136
136
|
tokens the session has been billed for in total, which only ever grows.
|
|
137
137
|
`compactSession()` is a no-op on engines whose CLI has no compaction command
|
|
138
|
-
(`codex`, `agy`, `
|
|
138
|
+
(`codex`, `agy`, `grok`, `opencode`); those sessions log a warning the first
|
|
139
139
|
time it is called.
|
|
140
140
|
|
|
141
141
|
`stats.turns` and `stats.turnsSucceeded` are the same kind of distinction.
|
|
@@ -152,7 +152,7 @@ against `turns`.
|
|
|
152
152
|
|
|
153
153
|
Which outcome counts as a success is the engine's own verdict, not the exit
|
|
154
154
|
code's: `codex` fails a turn that emits `turn.failed` while exiting 0, `agy`
|
|
155
|
-
requires a `SUCCESS` status
|
|
155
|
+
requires a `SUCCESS` status _and_ a zero exit (it can report success and then die
|
|
156
156
|
in cleanup), `gemini` succeeds on exit 53 because its turn limit resolves,
|
|
157
157
|
`codex-app` requires `status: 'completed'` so a turn cancelled through
|
|
158
158
|
`interrupt()` does not count, and `opencode` refuses a turn on purpose when
|
|
@@ -207,15 +207,15 @@ Session stats are returned by `getStats()` and surfaced through `coding_session_
|
|
|
207
207
|
|
|
208
208
|
Fields added in plugin v2.13.0 (Claude CLI 2.1.111):
|
|
209
209
|
|
|
210
|
-
| Field
|
|
211
|
-
|
|
212
|
-
| `retries`
|
|
213
|
-
| `lastRetryError` | string \| undefined | Error message from the most recent retry (if any)
|
|
210
|
+
| Field | Type | Description |
|
|
211
|
+
| ---------------- | ------------------- | -------------------------------------------------- |
|
|
212
|
+
| `retries` | number | Total API retries that occurred during the session |
|
|
213
|
+
| `lastRetryError` | string \| undefined | Error message from the most recent retry (if any) |
|
|
214
214
|
|
|
215
215
|
Fields added in plugin v2.14.0 (Claude CLI 2.1.121):
|
|
216
216
|
|
|
217
|
-
| Field
|
|
218
|
-
|
|
217
|
+
| Field | Type | Description |
|
|
218
|
+
| -------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
219
219
|
| `pluginErrors` | `Array<{plugin, reason}>` \| undefined | Plugins that failed to load due to unmet dependencies, captured from the `system/init` event. `undefined` when no plugin errors occurred. |
|
|
220
220
|
|
|
221
221
|
### `system/api_retry` events
|
|
@@ -238,3 +238,21 @@ All session engine classes expose an optional `pid` readonly property, providing
|
|
|
238
238
|
const session = manager.getSession('my-session');
|
|
239
239
|
console.log(session.pid); // e.g., 12345 or undefined
|
|
240
240
|
```
|
|
241
|
+
|
|
242
|
+
## Verifying what a session did (6.0.0)
|
|
243
|
+
|
|
244
|
+
A plain session leaves no verdict — it ran, and nothing checked the result. To
|
|
245
|
+
check it, hand `verify_run` a contract and the directory:
|
|
246
|
+
|
|
247
|
+
```jsonc
|
|
248
|
+
verify_run({
|
|
249
|
+
cwd: "/repo",
|
|
250
|
+
contract: { checks: [{ type: "command", cmd: "npm", args: ["test"] }] }
|
|
251
|
+
})
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
For work that should be checked as part of running it, use a workflow instead —
|
|
255
|
+
see [`workflow.md`](./workflow.md).
|
|
256
|
+
|
|
257
|
+
`SendOptions` also gained `nodeKind` and `taskKind`, both stamped onto the run
|
|
258
|
+
ledger row. `taskKind` is caller-declared and never inferred from the prompt.
|