diff --git a/pkg/arvo/lib/verb.hoon b/pkg/arvo/lib/verb.hoon index 8a3aa1a42..ead541ef9 100644 --- a/pkg/arvo/lib/verb.hoon +++ b/pkg/arvo/lib/verb.hoon @@ -1,5 +1,7 @@ :: Print what your agent is doing. :: +/- verb +:: |= [loud=? =agent:gall] =| bowl-print=_| ^- agent:gall @@ -12,7 +14,7 @@ ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-init") =^ cards agent on-init:ag - [cards this] + [[(emit-event %on-init ~) cards] this] :: ++ on-save ^- vase @@ -24,7 +26,7 @@ ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-load") =^ cards agent (on-load:ag old-state) - [cards this] + [[(emit-event %on-load ~) cards] this] :: ++ on-poke |= [=mark =vase] @@ -36,21 +38,26 @@ %bowl `this(bowl-print !bowl-print) == =^ cards agent (on-poke:ag mark vase) - [cards this] + [[(emit-event %on-poke mark) cards] this] :: ++ on-watch |= =path ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-watch on path {}") - =^ cards agent (on-watch:ag path) - [cards this] + =^ cards agent + ?: ?=([%verb %events ~] path) + [~ agent] + (on-watch:ag path) + [[(emit-event %on-watch path) cards] this] :: ++ on-leave |= =path ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-leave on path {}") + ?: ?=([%verb %event ~] path) + [~ this] =^ cards agent (on-leave:ag path) - [cards this] + [[(emit-event %on-leave path) cards] this] :: ++ on-peek |= =path @@ -63,21 +70,21 @@ ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-agent on wire {}, {<-.sign>}") =^ cards agent (on-agent:ag wire sign) - [cards this] + [[(emit-event %on-agent wire -.sign) cards] this] :: ++ on-arvo |= [=wire =sign-arvo] ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-arvo on wire {}, {<[- +<]:sign-arvo>}") =^ cards agent (on-arvo:ag wire sign-arvo) - [cards this] + [[(emit-event %on-arvo wire [- +<]:sign-arvo) cards] this] :: ++ on-fail |= [=term =tang] ^- (quip card:agent:gall agent:gall) %- (print bowl "{}: on-fail with term {}") =^ cards agent (on-fail:ag term tang) - [cards this] + [[(emit-event %on-fail term) cards] this] -- :: ++ print @@ -89,4 +96,9 @@ ?. loud same %- (slog leaf+tape ~) same +:: +++ emit-event + |= =event:verb + ^- card:agent:gall + [%give %fact ~[/verb/events] %verb-event !>(event)] -- diff --git a/pkg/arvo/mar/verb/event.hoon b/pkg/arvo/mar/verb/event.hoon new file mode 100644 index 000000000..f596d8e6d --- /dev/null +++ b/pkg/arvo/mar/verb/event.hoon @@ -0,0 +1,26 @@ +/- verb +=, dejs:format +|_ =event:verb +++ grab + |% + ++ noun event:verb + -- +:: +++ grow + |% + ++ noun event + ++ json + =, enjs:format + %+ frond -.event + ?- -.event + %on-init ~ + %on-load ~ + %on-poke s+mark.event + %on-watch (path path.event) + %on-leave (path path.event) + %on-agent (pairs 'wire'^(path wire.event) 'sign'^s+sign.event ~) + %on-arvo (pairs 'wire'^(path wire.event) 'vane'^s+vane.event 'sign'^s+sign.event ~) + %on-fail s+term.event + == + -- +-- diff --git a/pkg/arvo/sur/verb.hoon b/pkg/arvo/sur/verb.hoon new file mode 100644 index 000000000..f7d19f658 --- /dev/null +++ b/pkg/arvo/sur/verb.hoon @@ -0,0 +1,12 @@ +|% ++$ event + $% [%on-init ~] + [%on-load ~] + [%on-poke =mark] + [%on-watch =path] + [%on-leave =path] + [%on-agent =wire sign=term] + [%on-arvo =wire vane=term sign=term] + [%on-fail =term] + == +-- \ No newline at end of file