@enderfga/claw-orchestrator 7.17.1 → 7.18.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enderfga/claw-orchestrator",
3
- "version": "7.17.1",
3
+ "version": "7.18.0",
4
4
  "description": "Claw Orchestrator — run Claude Code, Codex, Antigravity, Grok Build, OpenCode, any ACP agent and custom coding CLIs as one unified runtime. Drop into Hermes Agent, Claude Desktop, Cursor, Cline, Continue, Zed, Windsurf, Goose or any Model Context Protocol (MCP) host, serve editors as an ACP agent, install as an OpenClaw plugin, or run standalone. Persistent sessions, durable resumable workflows, acceptance checks the runtime runs itself, fan-out, multi-agent council, Codex /goal runs, autoloop, ultraplan, ultrareview, and a per-turn cost ledger with spend caps.",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -500,6 +500,15 @@ What happens behind the scenes:
500
500
  2. Starts a local proxy server on `127.0.0.1` (random port, auto-managed) the first time a Claude session names a non-Claude model, provided a gateway URL was found
501
501
  3. Claude Code CLI sends Anthropic-format requests → proxy converts to OpenAI → gateway → any model
502
502
 
503
+ ### Your own Anthropic-compatible gateway
504
+
505
+ A gateway that speaks the Anthropic API and serves other models under their own names (an internal model
506
+ gateway, for instance) needs none of this. Set `CLAWO_CLAUDE_GATEWAY=1` in the environment clawo runs in,
507
+ with the gateway in `ANTHROPIC_BASE_URL` (and its token in `ANTHROPIC_AUTH_TOKEN`) or in a session's
508
+ `baseUrl`. A `claude` session then passes any model name to the CLI as given (`--model gw-model-1`), starts no
509
+ proxy, and does not rewrite the base URL. Because it is read from the environment, it applies to every
510
+ `claude` session the process starts, including those of workflow, fan-out and council nodes.
511
+
503
512
  ### Manual Config (optional)
504
513
 
505
514
  Override with environment variables if needed:
@@ -284,7 +284,7 @@ Built-in format translation lets Claude Code CLI talk to non-Anthropic models:
284
284
  - **Gemini** thought signature caching (round-trip thinking)
285
285
  - Auto-detect provider from model name patterns
286
286
 
287
- A `claude` session started with a non-Claude model and no `baseUrl` starts the proxy on a local port and points the session at it. Configuration is in the proxy section of [Multi-Engine](./multi-engine.md); see [`src/proxy/`](https://github.com/Enderfga/claw-orchestrator/tree/main/src/proxy) for implementation details.
287
+ A `claude` session started with a non-Claude model and no `baseUrl` starts the proxy on a local port and points the session at it, unless `CLAWO_CLAUDE_GATEWAY=1` says the caller's own gateway serves that model (see [Multi-Engine](./multi-engine.md)). Configuration is in the proxy section of [Multi-Engine](./multi-engine.md); see [`src/proxy/`](https://github.com/Enderfga/claw-orchestrator/tree/main/src/proxy) for implementation details.
288
288
 
289
289
  ## Circuit Breaker
290
290
 
@@ -411,10 +411,11 @@ what an unattended run needs around that loop.
411
411
  the finished goal and sets a new objective on the same thread, carrying the
412
412
  failing checks (as diagnostic data, like an agent node's repair brief) with the
413
413
  original objective. The agent keeps its context. On Codex the checks come first,
414
- as the definition of done. On Claude they come after the objective as context,
415
- and the condition the goal is judged on stays the objective (see below). The
416
- original objective is always kept whole; when the rest does not fit in 4,000
417
- characters the checks are cut (the full output stays in the run's evidence). A
414
+ as the definition of done. On Claude they are sent as a message of their own
415
+ just before the goal, which is set to the original objective word for word (see
416
+ below). On Codex the original objective is always kept whole; when the rest does
417
+ not fit in 4,000 characters the checks are cut (the full output stays in the
418
+ run's evidence). A
418
419
  first goal that was never set left nothing on its thread, so its revisit starts
419
420
  a new one.
420
421
  - **A fresh thread is told why.** Any goal objective set while the run carries a
@@ -459,9 +460,11 @@ stream-json mode:
459
460
  asking to stop, and continuing only repeats that). The template's verifier
460
461
  still judges the tree. Write the objective as a condition the agent can show
461
462
  it met from inside the session; one that depends on something after the
462
- agent stops can never be met. That is why a repair objective on Claude does
463
- not call the runtime's checks the definition of done: they run after the agent
464
- stops, so the judge could never see them pass.
463
+ agent stops can never be met. Everything after `/goal` is that condition, so a
464
+ repair never adds to it: steers and the failing checks are sent first as an
465
+ ordinary message (the agent replies with one word), and `/goal` carries the
466
+ objective alone. The checks run after the agent stops, where the judge could
467
+ never see them pass.
465
468
  - The session id is the thread id. A new session is started with
466
469
  `--session-id` so it is known before the goal is set, and the session is kept
467
470
  out of the registry with `skipPersistence` (not `noSessionPersistence`, which