@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.
Files changed (158) hide show
  1. package/README.md +28 -28
  2. package/dist/bin/cli.js +107 -1
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/src/acp-server.d.ts +5 -5
  5. package/dist/src/acp-server.js +3 -3
  6. package/dist/src/acp-server.js.map +1 -1
  7. package/dist/src/autoloop/dispatcher.d.ts +22 -0
  8. package/dist/src/autoloop/dispatcher.js +71 -13
  9. package/dist/src/autoloop/dispatcher.js.map +1 -1
  10. package/dist/src/autoloop/messages.d.ts +10 -0
  11. package/dist/src/autoloop/messages.js.map +1 -1
  12. package/dist/src/autoloop/runner.js +6 -0
  13. package/dist/src/autoloop/runner.js.map +1 -1
  14. package/dist/src/constants.d.ts +0 -6
  15. package/dist/src/constants.js +0 -6
  16. package/dist/src/constants.js.map +1 -1
  17. package/dist/src/council.d.ts +15 -0
  18. package/dist/src/council.js +48 -35
  19. package/dist/src/council.js.map +1 -1
  20. package/dist/src/dashboard/index.html +191 -6
  21. package/dist/src/embedded-server.js +132 -9
  22. package/dist/src/embedded-server.js.map +1 -1
  23. package/dist/src/fanout.d.ts +30 -1
  24. package/dist/src/fanout.js +32 -3
  25. package/dist/src/fanout.js.map +1 -1
  26. package/dist/src/index.d.ts +1 -0
  27. package/dist/src/index.js +360 -4
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/kernel/agent-step.d.ts +59 -0
  30. package/dist/src/kernel/agent-step.js +100 -0
  31. package/dist/src/kernel/agent-step.js.map +1 -0
  32. package/dist/src/kernel/conditions.d.ts +11 -0
  33. package/dist/src/kernel/conditions.js +24 -0
  34. package/dist/src/kernel/conditions.js.map +1 -0
  35. package/dist/src/kernel/engine.d.ts +319 -0
  36. package/dist/src/kernel/engine.js +1047 -0
  37. package/dist/src/kernel/engine.js.map +1 -0
  38. package/dist/src/kernel/exec.d.ts +43 -0
  39. package/dist/src/kernel/exec.js +112 -0
  40. package/dist/src/kernel/exec.js.map +1 -0
  41. package/dist/src/kernel/file-lock.d.ts +50 -0
  42. package/dist/src/kernel/file-lock.js +135 -0
  43. package/dist/src/kernel/file-lock.js.map +1 -0
  44. package/dist/src/kernel/nodes/agent.d.ts +4 -0
  45. package/dist/src/kernel/nodes/agent.js +35 -0
  46. package/dist/src/kernel/nodes/agent.js.map +1 -0
  47. package/dist/src/kernel/nodes/autoloop.d.ts +78 -0
  48. package/dist/src/kernel/nodes/autoloop.js +75 -0
  49. package/dist/src/kernel/nodes/autoloop.js.map +1 -0
  50. package/dist/src/kernel/nodes/council.d.ts +12 -0
  51. package/dist/src/kernel/nodes/council.js +88 -0
  52. package/dist/src/kernel/nodes/council.js.map +1 -0
  53. package/dist/src/kernel/nodes/fanout.d.ts +11 -0
  54. package/dist/src/kernel/nodes/fanout.js +63 -0
  55. package/dist/src/kernel/nodes/fanout.js.map +1 -0
  56. package/dist/src/kernel/nodes/human-gate.d.ts +4 -0
  57. package/dist/src/kernel/nodes/human-gate.js +7 -0
  58. package/dist/src/kernel/nodes/human-gate.js.map +1 -0
  59. package/dist/src/kernel/nodes/index.d.ts +12 -0
  60. package/dist/src/kernel/nodes/index.js +21 -0
  61. package/dist/src/kernel/nodes/index.js.map +1 -0
  62. package/dist/src/kernel/nodes/router.d.ts +4 -0
  63. package/dist/src/kernel/nodes/router.js +12 -0
  64. package/dist/src/kernel/nodes/router.js.map +1 -0
  65. package/dist/src/kernel/nodes/subflow.d.ts +13 -0
  66. package/dist/src/kernel/nodes/subflow.js +38 -0
  67. package/dist/src/kernel/nodes/subflow.js.map +1 -0
  68. package/dist/src/kernel/nodes/ultraapp.d.ts +60 -0
  69. package/dist/src/kernel/nodes/ultraapp.js +62 -0
  70. package/dist/src/kernel/nodes/ultraapp.js.map +1 -0
  71. package/dist/src/kernel/nodes/verifier.d.ts +14 -0
  72. package/dist/src/kernel/nodes/verifier.js +84 -0
  73. package/dist/src/kernel/nodes/verifier.js.map +1 -0
  74. package/dist/src/kernel/projections.d.ts +42 -0
  75. package/dist/src/kernel/projections.js +133 -0
  76. package/dist/src/kernel/projections.js.map +1 -0
  77. package/dist/src/kernel/repo.d.ts +13 -0
  78. package/dist/src/kernel/repo.js +64 -0
  79. package/dist/src/kernel/repo.js.map +1 -0
  80. package/dist/src/kernel/secrets.d.ts +25 -0
  81. package/dist/src/kernel/secrets.js +48 -0
  82. package/dist/src/kernel/secrets.js.map +1 -0
  83. package/dist/src/kernel/store.d.ts +225 -0
  84. package/dist/src/kernel/store.js +838 -0
  85. package/dist/src/kernel/store.js.map +1 -0
  86. package/dist/src/kernel/templates/index.d.ts +140 -0
  87. package/dist/src/kernel/templates/index.js +266 -0
  88. package/dist/src/kernel/templates/index.js.map +1 -0
  89. package/dist/src/kernel/types.d.ts +326 -0
  90. package/dist/src/kernel/types.js +19 -0
  91. package/dist/src/kernel/types.js.map +1 -0
  92. package/dist/src/models.d.ts +1 -1
  93. package/dist/src/models.js +31 -3
  94. package/dist/src/models.js.map +1 -1
  95. package/dist/src/persistent-cursor-session.js +6 -1
  96. package/dist/src/persistent-cursor-session.js.map +1 -1
  97. package/dist/src/persistent-grok-session.d.ts +40 -0
  98. package/dist/src/persistent-grok-session.js +197 -0
  99. package/dist/src/persistent-grok-session.js.map +1 -0
  100. package/dist/src/run-ledger.d.ts +57 -3
  101. package/dist/src/run-ledger.js +45 -2
  102. package/dist/src/run-ledger.js.map +1 -1
  103. package/dist/src/session-manager.d.ts +176 -129
  104. package/dist/src/session-manager.js +657 -603
  105. package/dist/src/session-manager.js.map +1 -1
  106. package/dist/src/types.d.ts +37 -4
  107. package/dist/src/types.js +15 -1
  108. package/dist/src/types.js.map +1 -1
  109. package/dist/src/ultraapp/build.d.ts +117 -3
  110. package/dist/src/ultraapp/build.js +319 -3
  111. package/dist/src/ultraapp/build.js.map +1 -1
  112. package/dist/src/ultraapp/contract.d.ts +52 -0
  113. package/dist/src/ultraapp/contract.js +83 -0
  114. package/dist/src/ultraapp/contract.js.map +1 -0
  115. package/dist/src/ultraapp/conventions.js +9 -2
  116. package/dist/src/ultraapp/conventions.js.map +1 -1
  117. package/dist/src/ultraapp/fix-on-failure.d.ts +21 -2
  118. package/dist/src/ultraapp/fix-on-failure.js +46 -62
  119. package/dist/src/ultraapp/fix-on-failure.js.map +1 -1
  120. package/dist/src/ultraapp/manager.d.ts +107 -2
  121. package/dist/src/ultraapp/manager.js +305 -86
  122. package/dist/src/ultraapp/manager.js.map +1 -1
  123. package/dist/src/verify/baseline.d.ts +73 -0
  124. package/dist/src/verify/baseline.js +186 -0
  125. package/dist/src/verify/baseline.js.map +1 -0
  126. package/dist/src/verify/contract.d.ts +116 -0
  127. package/dist/src/verify/contract.js +142 -0
  128. package/dist/src/verify/contract.js.map +1 -0
  129. package/dist/src/verify/evidence.d.ts +61 -0
  130. package/dist/src/verify/evidence.js +133 -0
  131. package/dist/src/verify/evidence.js.map +1 -0
  132. package/dist/src/verify/runner.d.ts +63 -0
  133. package/dist/src/verify/runner.js +317 -0
  134. package/dist/src/verify/runner.js.map +1 -0
  135. package/openclaw.plugin.json +8 -0
  136. package/package.json +2 -2
  137. package/skills/SKILL.md +121 -80
  138. package/skills/references/acp.md +18 -18
  139. package/skills/references/autoloop.md +148 -72
  140. package/skills/references/claude-cli-tracking.md +4 -4
  141. package/skills/references/cli.md +103 -60
  142. package/skills/references/council.md +109 -37
  143. package/skills/references/dashboard.md +34 -6
  144. package/skills/references/getting-started.md +14 -14
  145. package/skills/references/inbox.md +4 -4
  146. package/skills/references/mcp.md +39 -34
  147. package/skills/references/multi-engine.md +109 -51
  148. package/skills/references/observability.md +88 -27
  149. package/skills/references/openai-compat.md +40 -40
  150. package/skills/references/sessions.md +44 -26
  151. package/skills/references/tools.md +402 -309
  152. package/skills/references/ultra.md +45 -45
  153. package/skills/references/ultraapp.md +126 -50
  154. package/skills/references/verification.md +187 -0
  155. package/skills/references/workflow.md +362 -0
  156. package/dist/src/ultraapp/fix-on-failure-session.d.ts +0 -23
  157. package/dist/src/ultraapp/fix-on-failure-session.js +0 -51
  158. 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', // alias or full name
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 | Description |
31
- |--------|-------------|
32
- | `engine` | `'claude'` (default), `'codex'`, `'codex-app'`, `'agy'`, `'cursor'`, `'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 |
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', // 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
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'); // fast model for simple tasks
104
- await manager.switchModel('my-task', 'opus'); // back to powerful model
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, // add to existing list
114
+ merge: true, // add to existing list
115
115
  });
116
116
 
117
117
  await manager.updateTools('my-task', {
118
- removeTools: ['Bash'], // revoke Bash access
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`, `cursor`, `opencode`); those sessions log a warning the first
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 *and* a zero exit (it can report success and then die
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 | 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) |
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 | Type | Description |
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.