feat(gateway): callback di risveglio sessione OpenClaw a fine task #4

Merged
claudia merged 1 commit from feat/gateway-task-callback-wake into main 2026-07-15 08:46:54 +00:00
Owner

Callback event-driven: task.start.callback_session -> il gateway risveglia la sessione OpenClaw viva al frame terminale del runner (chat.result/error), UNA volta, anche con orchestratrice caduta (caso gw.py task-bg).

Trasporto via GW_WAKE_MODE: none (default, no-op), cli (openclaw system event), http (POST hook loopback). Default off = deploy sicuro; il last-mile (env + eventuale openclaw.json) e fuori dal codice.

Test: 58 passati (10 nuovi in test_callback_wake.py). Vedi docs/PROTOCOL.md, gateway/README.md, .env.example.

🤖 Generated with Claude Code

Callback event-driven: `task.start.callback_session` -> il gateway risveglia la sessione OpenClaw viva al frame terminale del runner (`chat.result`/`error`), UNA volta, anche con orchestratrice caduta (caso `gw.py task-bg`). **Trasporto** via `GW_WAKE_MODE`: `none` (default, no-op), `cli` (`openclaw system event`), `http` (POST hook loopback). Default off = deploy sicuro; il last-mile (env + eventuale openclaw.json) e fuori dal codice. Test: 58 passati (10 nuovi in `test_callback_wake.py`). Vedi `docs/PROTOCOL.md`, `gateway/README.md`, `.env.example`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Aggiunge una callback event-driven: l'orchestratrice propaga in `task.start`
una `callback_session` (sessionKey OpenClaw); il gateway la conserva sulla
sessione e, al frame terminale del runner (`chat.result`/`error`), risveglia
UNA volta quella sessione. Risolve il caso `gw.py task-bg`, dove il processo
gw.py e' staccato dalla chat viva e nessuno la risveglia a fine job (issue
upstream openclaw#52305: il wake di default finiva sulla main session).

- config: GW_WAKE_MODE (none|cli|http, default none = no-op/deploy sicuro) +
  GW_WAKE_OPENCLAW_BIN/STATE_DIR, GW_WAKE_EVENT_MODE, GW_WAKE_HTTP_URL/TOKEN,
  GW_WAKE_TIMEOUT_SECONDS.
- waker.py: fire-and-forget non bloccante; cli = `openclaw system event
  --session-key`, http = POST hook loopback; argv esplicita (no shell) per
  evitare problemi di quoting sul testo.
- hub/server: callback_session su Session; wake prima della logica orfano/relay
  cosi' parte anche con orchestratrice caduta; azzerato dopo il primo wake.
- test: 10 nuovi (build_wake_text, parsing env, plumbing, fire-once, orfano).
- docs: PROTOCOL.md, README, .env.example, unit deploy.

Il trasporto/last-mile (env + eventuale openclaw.json hooks) e' fuori dal codice
e resta disabilitato finche' non configurato.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
claudia deleted branch feat/gateway-task-callback-wake 2026-07-15 08:46:54 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Soltea-org/soltea-agent-gateway!4
No description provided.