/+ skeleton |* [agent=* help=*] ?: ?=(%& help) ~| %default-agent-helpfully-crashing skeleton |_ =bowl:gall ++ on-init `agent :: ++ on-save !>(~) :: ++ on-load |= old-state=vase `agent :: ++ on-poke |= =cage ~| "unexpected poke to {} with mark {}" !! :: ++ on-watch |= =path ~| "unexpected subscription to {} on path {}" !! :: ++ on-leave |= path `agent :: ++ on-peek |= =path ~| "unexpected scry into {} on path {}" !! :: ++ on-agent |= [=wire =sign:agent:gall] ^- (quip card:agent:gall _agent) ?- -.sign %poke-ack ?~ p.sign `agent %- (slog leaf+"poke failed from {} on wire {}" u.p.sign) `agent :: %watch-ack ?~ p.sign `agent =/ =tank leaf+"subscribe failed from {} on wire {}" %- (slog tank u.p.sign) `agent :: %kick `agent %fact ~| "unexpected subscription update to {} on wire {}" ~| "with mark {}" !! == :: ++ on-arvo |= [=wire =sign-arvo] ~| "unexpected system response {<-.sign-arvo>} to {} on wire {}" !! :: ++ on-fail |= [=term =tang] %- (slog leaf+"error in {}" >term< tang) `agent --