:: :::: /hook/core/talk/app :: /? 314 /- *radio :: :::: :: !: [sed=!>(.) .] => |% ++ house $: live=(unit span) :: looking at parties=(map span party) :: all parties shown=(set serial) :: messages shown targets=(unit (set station)) :: talking to mode=presence :: interactive mode == :: ++ party :: local party $: count=@ud :: number shown shape=(unit config) :: configuration present=(map ship status) :: presence == :: ++ work :: user action $% [%all p=mess] :: say [%back p=?(%da %dr %ud) q=@] :: backlog [%def p=mess] :: default [%how ~] :: help [%join p=station] :: subscribe /=main to [%host p=span] :: create /=foo [%priv p=(list station) q=mess] :: private [%who ~] :: who == :: ++ iron :: terminal output $% [%prompt p=cord q=prom r=cord] :: prompt [%tang p=(list tank)] :: prettyprintable [%txt p=cord] :: simple text == ++ mess $% [%own p=@t] [%exp p=@t q=(unit tank)] [%say p=@t] == ++ gift $% [%mean ares] [%nice ~] [%rush iron] [%rust iron] == ++ hapt ,[p=ship q=path] ++ move ,[p=bone q=(mold note gift)] ++ note $? $: %g $% [%mess p=hapt q=ship r=cage] [%nuke p=hapt q=ship] [%show p=hapt q=ship r=path] == == $: %t :: $% [%wait p=@da] :: == == == :: ++ sign $? $: %g $% [%mean p=ares] [%nice ~] $: %rush $= p $% [%txt p=cord] [%type p=?] == == $: %rust $= p $% [%txt p=cord] [%radio-report p=report] == == == == $: %t :: $% [%wake ~] :: timer wakeup == == == -- !: :::: :: =| [our=@p lat=@da] |% ++ talk =< %+ cook |=(a=work a) ;~ pose (cold [%how ~] wut) (cold [%who ~] tis) (stag %back dat) (stag %priv target) (stag %all ;~(pfix pam mess)) (comd %join stati) (comd %host urs:ab) (stag %def mess) == |% ++ posh |* [a=_rule b=_rule] ;~(pose (stag %& a) (stag %| b)) :: ++ peach :: either ++each branch |* a=_[rule rule] |= tub=nail ^- (like (each ,_(wonk (-.a)) ,_(wonk (+.a)))) %. tub ;~(pose (stag %& -.a) (stag %| +.a)) :: ++ comd :: ! command |* [a=@tas b=_rule] %- full ;~((glue (plus ace)) ;~(pfix zap (cold a (jest a))) b) :: :: ++ dat %+ sear |= p=coin ?. ?=([%$ ?(%da %dr %ud) @] p) ~ (some +.p) ;~(pfix bas bas (star ace) nuck:so) :: ++ expn %- sear :_ text |= a=@t ^- (unit ,[p=@t q=(unit tank)]) =+ hun=(rush a wide:(vang | [&1:% &2:% (scot %da lat) |3:%])) ?~ hun ~ ?~(a ~ [~ a ~ (sell (slap sed u.hun))]) :: ++ mess ^- $+(nail (like ^mess)) ;~ pose (stag %own ;~(pfix pat text)) (stag %exp ;~(pfix hax expn)) (stag %own (full (easy ''))) (stag %say text) == :: ++ target ^- $+(nail (like ,[p=(list station) q=^mess])) ;~ plug (most ;~(plug com ace) stati) ;~(pfix ace mess) == :: ++ text (boss 256 (star prn)) ++ stati %+ peach ;~ pose ;~(pfix tis (stag our urs:ab)) ;~ pfix sig ;~ plug fed:ag ;~(pose ;~(pfix fas urs:ab) (easy %main)) == == == ;~(pfix fas (stag %twitter ;~(pfix ;~(plug (just 'twitter') fas) urs:ab))) -- -- !: :::: :: |_ [hid=hide house] :: ++ destination ^- audience =- =+ ped=(~(tap in ted) ~) %- ~(gas by *audience) (turn ped |=(a=station [a %pending])) ^= ted ^- (set station) ?^ targets u.targets ?~ live ~ =+ pur=(~(get by parties) u.live) ?~ pur ~ ?~ shape.u.pur ~ sources.u.shape.u.pur :: ++ presentation ^- (map station presence) (~(run by destination) |=(a=* mode)) :: ++ visible ^- (map ship status) ?~ live ~ =+ pur=(~(get by parties) u.live) ?~ pur ~ present.u.pur :: ++ pour-shell |= [ost=bone txt=cord] ^- [(list move) _+>] ?: =(0 txt) [~ +>.$] =+ rey=(rush txt talk(lat lat.hid, our our.hid)) ?~ rey [(send /out %give %rush %tang [%leaf "invalid input"] ~) +>.$] :: ~& [%rey rey] |- ^- [(list move) _+>.^$] ?- -.u.rey %priv $(targets `(sa p.u.rey), u.rey [%def q.u.rey]) %all $(targets ~, u.rey [%def p.u.rey]) %who :_ +>.^$ %^ send /out %give :+ %rush %tang :_ ~ :+ %rose [", " "" ""] %+ turn (~(tap by visible) ~) |= [a=ship b=status] [%leaf (scow %p a)] :: %def :: ?> ?=(?([%own %exp %say] -.p.u.rey) ?~ live ~& %not-live !! =- [[(send-radio ost [%publish - ~]) ~] +>.^$] =+ aud=destination ?~ aud ~& %no-audience !! ^- thought [(shaf %foo eny.hid) aud [lat.hid p.u.rey]] :: %host [[(send-radio ost [%design p.u.rey ~ `config`[~ [%| ~]]]) ~] +>.^$] :: %join ?~ live ~& %not-live !! =+ par=(~(got by parties) u.live) ?~ shape.par ~& %not-configured !! =. sources.u.shape.par (~(put in sources.u.shape.par) p.u.rey) [[(send-radio ost [%design u.live `u.shape.par]) ~] +>.^$] :: %how :_ +>.^$ %^ send /out %give :+ %rust %tang %- flop %- turn :_ |=(a=@t [%leaf (trip a)]) %- lore %- (hard ,@t) .^(/cx/(scot %p our.hid)/main/(scot %da lat.hid)/pub/src/doc/chat/help/txt) :: %back ?~ live ~& %not-live !! =+ ^= sin ?- p.u.rey %ud [%ud q.u.rey] %da [%da q.u.rey] %dr [%da (sub lat.hid q.u.rey)] == :_ +>.^$ :_ ~ :* ost %pass /fm/backlog %g %show [our.hid /radio] our.hid /fm/[u.live]/(scot sin)/(scot %da lat.hid) == == :: ++ pour-attach :: attach to party |= [man=span moz=(list move)] ^- (list move) :: ~& [%pour-attach man] :* :* 0 %pass /fm/[man] %g %show [our.hid /radio] our.hid /fm/[man] == (welp (send /out %give %rush %prompt prompt %text '') moz) == :: ++ pour-detach :: detach from party |= [man=span moz=(list move)] ^- (list move) :: ~& [%pour-detach man] :_ moz :* 0 %pass /fm/[man] %g %nuke [our.hid /radio] our.hid == :: ++ pour-live |= moz=(list move) ^+ [moz +>] ?~ live ?: (~(has by parties) %main) => .(live `%main) :: ~& %main-live [(pour-attach %main moz) +>.$] ?~ parties [moz +>] => .(live `p.n.parties) :: ~& [%pour-live p.n.parties] [(pour-attach p.n.parties moz) +>.$] ?: (~(has by parties) u.live) [moz +>] :: ~& %pour-detach $(live ~, moz (pour-detach u.live moz)) :: ++ pour-house |= [ost=bone wha=(set span)] ^- [(list move) _+>] =+ lug=`(list span)`(~(tap in wha) ~) =+ yap=`(list (pair span party))`(~(tap by parties) ~) =+ nup=(skip lug |=(a=span (~(has by parties) a))) =+ pig=(skip yap |=([a=span *] (~(has in wha) a))) =. parties |- ^+ parties ?~ pig parties $(pig t.pig, parties (~(del by parties) p.i.pig)) =. parties |- ^+ parties ?~ nup parties $(nup t.nup, parties (~(put by parties) i.nup *party)) %- pour-live ^- (list move) %+ welp ^- (list move) %- zing %+ turn nup |= man=span ^- (list move) :: ~& [%new-party man] :~ :* 0 %pass /am/[man] %g %show [our.hid /radio] our.hid /am/[man] == :* 0 %pass /xm/[man] %g %show [our.hid /radio] our.hid /xm/[man] == == ^- (list move) %- zing %+ turn pig |= [man=span *] ^- (list move) :: ~& [%old-party man] :~ :* 0 %pass /am/[man] %g %nuke [our.hid /radio] our.hid == :* 0 %pass /xm/[man] %g %nuke [our.hid /radio] our.hid == == :: ++ pour-grams |= [ost=bone man=span raq=(pair ,@ud (list telegram))] ^- [(list move) _+>] :_ +>.$ %- zing ^- (list (list move)) %+ turn `(list telegram)`q.raq |= gam=telegram %^ send /out %give :- %rush =* sta r.q.gam ?- -.q.sta %say [%txt (rap 3 (scot %p p.gam) ': ' p.q.sta ~)] %own [%txt (rap 3 (scot %p p.gam) ' ' p.q.sta ~)] %inv !! %exp :- %tang :_ ~ :~ %rose [" " "" ""] [%leaf "{