/onex:agent_healthcheck — dispatch-only shim
Skill ID: onex:agent_healthcheck · Backing node: omnimarket/src/omnimarket/nodes/node_worker_stall_recovery/
Routing Contract
- Classification: Deterministic
- Dispatch: single invocation of
node_worker_stall_recovery - No inline stall detection: all heuristics (inactivity, context overflow, rate limits, Bash long-timeout) live in the handler, not this skill
- Routing failure handling: on dispatch failure, raise
SkillRoutingError— surface it directly, do not produce prose
Dispatch
This skill is a thin shim — all stall detection and recovery logic lives in
node_worker_stall_recovery (omnimarket).
INPUT_JSON='{"ticket_id":"<ticket_id>","agent_id":"<agent_id>","timeout_minutes":2,"context_threshold_pct":80,"max_redispatches":2,"dry_run":true}'
uv run onex run-node node_worker_stall_recovery --input "${INPUT_JSON}"
The node returns ModelStallRecoveryResult:
status:healthy | stalled | recovered | failed | escalatedstall_reason: non-empty string if stalledcheckpoint_path: path written on recoveryredispatch_count: number of redispatches performederror: error message ifstatus == failed
Checkpoint and relaunch semantics are governed by the recovery protocol implemented in the backing node. The backing node writes the recovery checkpoint, captures completed and remaining work, and relaunches or redispatches a fresh agent when recovery is required; this shim only forwards the invocation and returns the receipt.
Surface the JSON output directly. Do not implement detection inline.
Backing node: omnimarket/src/omnimarket/nodes/node_worker_stall_recovery/
Contract: node_worker_stall_recovery/contract.yaml