feat(triage): per-channel serial queue + HF on_call gate + observer skip #3
Reference in New Issue
Block a user
Delete Branch "feat/triage-on-call-gate-and-queue"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Three changes to plugin inbound for the new triage flow + one fallback fix discovered during sim test:
Per-channel serial queue — replaces fire-and-forget
void this.dispatch(...). Map<channelId, Promise> chain so consecutive messages on the same channel are processed strictly in order, no concurrent model turns.HF on_call gate (triage + wake=true only) — before dispatching, GET
/calendar/agent/status?agent_id=.... If status != on_call, message goes into per-agent gated queue. Status cached 5s. On next triage arrival with status now=on_call, drain gated FIFO then dispatch.Triage observer skip — triage wake=false (admin observer) MUST NOT enter the agent's session history. Skipped entirely. Non-triage channels keep legacy record-as-history.
claw_identifier fallback — reads
plugins.entries.harbor-forge.config.identifierfrom openclaw config whenHF_CLAW_IDENTIFIERenv isn't set (the HF plugin uses this same value;os.hostname()was the wrong fallback because sim container hostnameserver.t2≠ HF agent rowsim-t2).Sim-verified all 8 cases (A-H).
Pairs with Fabric.Backend.Guild PR and HarborForge.Backend PR.
🤖 Generated with Claude Code