diff --git a/arvo/ames.hoon b/arvo/ames.hoon index 7a7311f9de..38905bfd4e 100644 --- a/arvo/ames.hoon +++ b/arvo/ames.hoon @@ -1668,6 +1668,7 @@ [hen [%slip %a %kick now]] [hen [%slip %e %init p.bon]] [hen [%slip %g %init p.bon]] + [hen [%slip %d %init p.bon]] :: must be after gall ~ == :: @@ -1688,6 +1689,15 @@ :: ~& [%rx p.bon q.bon] ?> ?=([@ *] q.q.bon) ?: ?=(%r i.q.q.bon) + ?: ?=([%ta *] t.q.q.bon) + =+ wil=((hard (unit will)) r.bon) + :_ fox + ?~ wil ~ + =+ ^= pax + :+ (scot %p p.p.bon) + (scot %p q.p.bon) + q.q.bon + [hen %pass pax %g %rote p.bon /began 0 %m %will u.wil]~ ?> ?=([@ @ *] t.q.q.bon) :_ fox =+ [cak=i.t.q.q.bon ven=i.t.t.q.q.bon] @@ -1713,7 +1723,8 @@ == :: %pi :: ping - $(bon [%wine p.bon " sent a ping at {(scow %da now)}"]) + `fox + :: $(bon [%wine p.bon " sent a ping at {(scow %da now)}"]) :: ?(%pr %pc) :: %pr, %pc :_ fox diff --git a/arvo/batz.hoon b/arvo/batz.hoon index e604f35126..b8ddeccecf 100644 --- a/arvo/batz.hoon +++ b/arvo/batz.hoon @@ -53,8 +53,8 @@ [%sith p=@p q=@uw r=?] :: [%want p=sock q=path r=*] :: == == :: - $: %b :: - $% [%hail ~] :: to %batz + $: %b :: to %batz + $% [%hail ~] :: [%line p=@t] :: == == :: $: %c :: to %clay diff --git a/arvo/clay.hoon b/arvo/clay.hoon index 28cb453452..3630a91123 100644 --- a/arvo/clay.hoon +++ b/arvo/clay.hoon @@ -1,6 +1,6 @@ !: :: clay (4c), revision control -:: +!: |= pit=vase => |% ++ cult (map duct rove) :: subscriptions @@ -11,12 +11,14 @@ [%writ p=riot] :: response == :: ++ kiss :: in request ->$ - $% [%info p=@p q=@tas r=nori] :: internal edit + $% [%font p=@p q=@tas r=@p s=@tas] :: set upstream + [%info p=@p q=@tas r=nori] :: internal edit [%ingo p=@p q=@tas r=nori] :: internal noun edit [%init p=@p] :: report install [%into p=@p q=@tas r=nori] :: external edit [%invo p=@p q=@tas r=nori] :: external noun edit [%merg p=@p q=@tas r=mizu] :: internal change + [%plug p=@p q=@tas r=@p s=@tas] :: unset upstream [%wart p=sock q=@tas r=path s=*] :: network request [%warp p=sock q=riff] :: file request == :: @@ -32,7 +34,9 @@ $% [%want p=sock q=path r=*] :: == == :: $: %c :: to %clay - $% [%warp p=sock q=riff] :: + $% [%font p=@p q=@tas r=@p s=@tas] :: + [%merg p=@p q=@tas r=mizu] :: + [%warp p=sock q=riff] :: == == :: $: %d :: $% [%flog p=[%crud p=@tas q=(list tank)]] :: to %dill @@ -59,6 +63,7 @@ $: fat=(map ship room) :: domestic hoy=(map ship rung) :: foreign ran=rang :: hashes + sor=(map ,[p=@p q=@tas r=@p s=@tas] duct) :: upstreams == :: ++ rave :: general request $% [& p=mood] :: single request @@ -121,8 +126,7 @@ [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d] :: %+ turn (flop tag) - |= [a=duct b=path c=note] - [a %pass b c] + |=([a=duct b=path c=note] [a %pass b c]) == :: ++ aver :: read @@ -381,6 +385,52 @@ ^- rove [%| p.p.rav q.p.rav r.p.rav ~] :: + ++ sync + |= [hen=duct her=@p sud=@tas rot=riot] + ^+ +>.$ + ?~ rot + ~& "autosync from {} on {} to {} on {} stopped" + +>.$ + ?: ?=(%y p.p.u.rot) + %= +>.$ + tag + :_ tag + :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/v + %c %warp [who her] sud + `[%& %v q.p.u.rot /] + == + == + ?> ?=(%v p.p.u.rot) + =+ der=((hard dome) r.u.rot) + =+ ^= lum + ^- (unit (unit mizu)) + %^ ~(construct-merge ze now dom ran) + ?:(=(0 let.dom) %init %mate) + who + :+ syd + `saba`[her sud [0 let.der] der] + now + =. tag + :_ tag + :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/y + %c %warp [who her] sud + `[%& %y [%ud +(let.der)] /] + == + ?~ lum + ~& "autosync from {} on {} to {} on {} failed" + ~& "please merge manually" + +>.$ + ?~ u.lum + ~& "autosync from {} on {} to {} on {} up to date" + +>.$ + %= +>.$ + tag + :_ tag + :* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/merg + %c %merg who syd u.u.lum + == + == + :: ++ wake :: update subscribers ^+ . =+ xiq=(~(tap by qyx) ~) @@ -502,19 +552,25 @@ ^- [p=(list move) q=_..^$] ?- -.q.hic %init - [~ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~ ~]))] + :_ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~ ~])) + =+ bos=(sein p.q.hic) + ~& [%bos bos p.q.hic] + ?: =(bos p.q.hic) ~ + ^- (list move) + %+ turn (limo ~[%main %arvo %try]) + |= syd=@tas + [hen %pass / %c %font p.q.hic syd bos syd] + :: + %font + ?: (~(has by sor.ruf) +.q.hic) `..^$ + :_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic hen)) + :~ :* hen %pass + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y + %c %warp [p.q.hic r.q.hic] s.q.hic + `[%& %y [%da now] /] + == + == :: - %merg :: direct state up - =^ mos ruf - =+ une=(un p.q.hic now ruf) - =+ ^= zat - (exem:(di:wake:une q.q.hic) hen now r.q.hic) - =+ zot=abet.zat - :- -.zot - =. une (pish:une q.q.hic +.zot ran.zat) - abet:une(hez.yar ?.(=(%into -.q.hic) hez.yar.une [~ hen])) - [mos ..^$] - :: ?(%info %into) ?: =(%$ q.q.hic) ?. ?=(%into -.q.hic) [~ ..^$] @@ -544,6 +600,31 @@ =. une (pish:une q.q.hic +.zot ran.zat) abet:une(hez.yar ?.(=(%invo -.q.hic) hez.yar.une [~ hen])) [mos ..^$] + :: + %merg :: direct state up + =^ mos ruf + =+ une=(un p.q.hic now ruf) + =+ ^= zat + (exem:(di:wake:une q.q.hic) hen now r.q.hic) + =+ zot=abet.zat + :- -.zot + =. une (pish:une q.q.hic +.zot ran.zat) + abet:une(hez.yar ?.(=(%into -.q.hic) hez.yar.une [~ hen])) + [mos ..^$] + :: + %plug + ?. (~(has by sor.ruf) +.q.hic) `..^$ + :_ ..^$(sor.ruf (~(del by sor.ruf) +.q.hic)) + =+ hyn=(~(got by sor.ruf) +.q.hic) + :~ :* hyn %pass + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y + %c %warp [p.q.hic r.q.hic] s.q.hic ~ + == + :* hyn %pass + /auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/v + %c %warp [p.q.hic r.q.hic] s.q.hic ~ + == + == :: %warp =^ mos ruf @@ -606,6 +687,17 @@ ++ take :: accept response |= [tea=wire hen=duct hin=(hypo sign)] ^- [p=(list move) q=_..^$] + ?: ?=([%auto @ @ @ @ ?(%y %v) ~] tea) + ?> ?=(%writ -.+.q.hin) + =+ our=(slav %p i.t.tea) + =* sud i.t.t.tea + =+ her=(slav %p i.t.t.t.tea) + =* syd i.t.t.t.t.tea + =+ une=(un our now ruf) + =+ wex=(di:une syd) + =+ wao=(sync:wex hen her sud p.q.hin) + =+ woo=abet:wao + [-.woo ..^$(ruf abet:(pish:une syd +.woo ran.wao))] ?- -.+.q.hin %crud [[[hen %slip %d %flog +.q.hin] ~] ..^$] diff --git a/arvo/dill.hoon b/arvo/dill.hoon index c6c0a2a952..732aa971f3 100644 --- a/arvo/dill.hoon +++ b/arvo/dill.hoon @@ -7,11 +7,11 @@ $% [%bbye ~] :: reset prompt [%blit p=(list blit)] :: terminal output [%init p=@p] :: report install - [%logo p=@] :: logout + [%logo ~] :: logout [%veer p=@ta q=path r=@t] :: install vane [%vega p=path] :: reboot by path - [%verb ~] :: by %batz - == + [%verb ~] :: + == :: ++ kiss :: in request ->$ $% [%belt p=belt] :: terminal input [%blew p=blew] :: terminal config @@ -21,6 +21,7 @@ [%hail ~] :: terminal refresh [%hook ~] :: this term hung up [%harm ~] :: all terms hung up + [%init p=ship] :: after gall ready [%noop ~] :: no operation [%talk p=tank] :: [%text p=tape] :: @@ -29,42 +30,92 @@ $% [%crud p=@tas q=(list tank)] :: [%text p=tape] :: == :: +++ mess :: message to terminal + $% [%term-ctrl p=(hypo ,%hail)] :: + [%term-in p=(hypo term-in)] :: + == :: ++ move ,[p=duct q=(mold note gift)] :: local move ++ note :: out request $-> - $% $: %b :: to %batz - $% [%hail ~] :: - [%harm ~] :: - [%hook ~] :: - [%kill p=~] :: - [%line p=@t] :: - [%ling ~] :: - [%make p=(unit ,@t) q=@ud r=@ s=?] :: + $% $: %a :: + $% [%make p=(unit ,@t) q=@ud r=@ s=?] :: [%sith p=@p q=@uw r=?] :: == == :: - $: %d :: to %dill + $: %c :: + $% [%warp p=sock q=riff] :: + == == :: + ::S $% $: %b :: to %batz + ::S $% [%hail ~] :: + ::S [%harm ~] :: + ::S [%hook ~] :: + ::S [%kill p=~] :: + ::S [%line p=@t] :: + ::S [%ling ~] :: + ::S [%make p=(unit ,@t) q=@ud r=@ s=?] :: + ::S [%sith p=@p q=@uw r=?] :: + ::S == == :: + $: %d :: $% [%crud p=@tas q=(list tank)] :: [%text p=tape] :: + == == :: + $: %g :: + $% [%mess p=[p=ship q=path] q=ship r=mess] :: + [%show p=[p=ship q=path] q=ship r=path] :: + == == :: + $: %t :: + $% [%wait p=@da] :: == == == :: +++ riff ,[p=desk q=(unit rave)] :: see %clay ++ sign :: in result $<- - $? $: %b :: by %batz - $% [%hail ~] :: - [%helo p=path q=prod] :: - [%logo p=@] :: - [%save p=path q=@] :: - [%sage p=path q=*] :: - [%talk p=tank] :: - [%tell p=(list ,@t)] :: - [%text p=tape] :: + $? + ::S $: %b :: by %batz + ::S $% [%hail ~] :: + ::S [%helo p=path q=prod] :: + ::S [%logo p=@] :: + ::S [%save p=path q=@] :: + ::S [%sage p=path q=*] :: + ::S [%talk p=tank] :: + ::S [%tell p=(list ,@t)] :: + ::S [%text p=tape] :: + ::S [%verb ~] :: + ::S [%veer p=@ta q=path r=@t] :: + ::S [%vega p=path] :: + ::S [%warn p=tape] :: + ::S == == :: + $: %c :: + $% [%writ p=riot] :: + == == :: + $: %g :: + $% [%mean p=ares] :: + [%nice ~] :: + $: %rush :: XX + $% [%term-line q=term-line] :: + [%hymn q=manx] :: + [%json q=json] :: + == == :: + $: %rust :: + $% [%term-line q=term-line] :: + [%hymn q=manx] :: + [%json q=json] :: + == == :: [%verb ~] :: + [%sage p=path q=*] :: [%veer p=@ta q=path r=@t] :: [%vega p=path] :: - [%warn p=tape] :: == == :: $: @tas :: by any $% [%crud p=@tas q=(list tank)] :: [%init p=@p] :: [%note p=@tD q=tank] :: == == == :: +++ term-in :: + $: pax=path :: + $= jof :: + $% [%line p=span] :: + [%res p=span] :: + [%cmd p=char] :: + == == :: +++ term-line ,[p=[p=cord q=prom] q=(list cord) r=(list tark)] +++ tark ?(tank [%stem p=tank q=tank]) :: :::::::: :: dill tiles ++ bein :: terminal control $: $: bul=@ud :: buffer length @@ -107,6 +158,16 @@ r=(list (list ,@c)) :: kills == :: ++ blur ,[p=@ud q=(unit bein) r=blot] :: columns, prompt +++ kyev :: + $: p=(set ?(%ctrl %shift %alt %meta)) :: + q=$|(cord [%act speck]) :: + == :: +++ speck :: + $? %ctrl %shift %alt %meta %entr %esc :: + %caps %uncap %pgup %pgdn %home %end :: + %baxp %del %ins %up %down %left :: + %right :: + == :: ++ yard :: terminal state $: p=? :: verbose q=blur :: display state @@ -115,10 +176,11 @@ -- => |% ++ dy - |= [hen=duct dug=(map duct yard)] + |= [hen=duct our=ship def=(unit duct) dug=(map duct yard)] =+ ^= yar ^- yard =+ yur=(~(get by dug) hen) ?^ yur u.yur + ?^ def (~(got by dug) u.def) [& [80 ~ *blot] ~] =| mos=(list move) |% @@ -267,53 +329,96 @@ ?~ q.+.sih +>.^$ (fume:$(q.+.sih t.q.+.sih) '!' `tank`i.q.+.sih) :: - %helo :: trigger prompt + ::S %helo :: trigger prompt + ::S %- edit + ::S =| bed=bein + ::S =+ ^= hyt ^- hist + ::S =+ hyt=(~(get by r.yar) p.+.sih) + ::S ?~(hyt *hist u.hyt) + ::S ?: &(?=(^ q.q.yar) =(p.+.sih hux.u.q.q.yar)) + ::S %= u.q.q.yar + ::S hyt [+(p.hyt) [%$ q.hyt]] + ::S pot q.q.+.sih + ::S pol (lent q.q.+.sih) + ::S buy p.q.+.sih + ::S == + ::S =+ zon=(tuba r.q.+.sih) + ::S =+ zow=(lent zon) + ::S %= bed + ::S bul zow + ::S bus zow + ::S but zon + ::S buy p.q.+.sih + ::S hux p.+.sih + ::S hiz 0 + ::S hyt [+(p.hyt) [%$ q.hyt]] + ::S pot q.q.+.sih + ::S pol (lent q.q.+.sih) + ::S == + ::S :: + ::S ?(%hail %make %sith) + ::S +>.$(mos :_(mos [hen %pass ~ %b +.sih])) + ::S :: + %mean ~& %dill-mean +>.$ + %nice +>.$ + %note ?.(p.yar +>.$ (fume p.+.sih q.+.sih)) :: debug message + ?(%rush %rust) :: XX reset prompt + ?> ?=(%term-line +>-.sih) + =. +>.$ + =- (furl (zing (turn (flop r.q.sih) -))) + |= a=tark + ^- wall + ?+ -.a (~(win re a) 0 p.q.yar) + %stem ~[~(ram re p.a) ~(ram re p.a)] + == %- edit =| bed=bein =+ ^= hyt ^- hist - =+ hyt=(~(get by r.yar) p.+.sih) + =+ hyt=(~(get by r.yar) /) ?~(hyt *hist u.hyt) - ?: &(?=(^ q.q.yar) =(p.+.sih hux.u.q.q.yar)) + ?: &(?=(^ q.q.yar) =(/ hux.u.q.q.yar)) %= u.q.q.yar hyt [+(p.hyt) [%$ q.hyt]] - pot q.q.+.sih - pol (lent q.q.+.sih) - buy p.q.+.sih + pot (trip p.p.q.sih) + pol (met 3 p.p.q.sih) + buy q.p.q.sih == - =+ zon=(tuba r.q.+.sih) - =+ zow=(lent zon) - %= bed - bul zow - bus zow - but zon - buy p.q.+.sih - hux p.+.sih + %_ bed + bul 0 + bus 0 + but ~ + buy q.p.q.sih + hux / hiz 0 hyt [+(p.hyt) [%$ q.hyt]] - pot q.q.+.sih - pol (lent q.q.+.sih) + pot (trip p.p.q.sih) + pol (met 3 p.p.q.sih) == :: - ?(%hail %make %sith) - +>.$(mos :_(mos [hen %pass ~ %b +.sih])) - :: - %note ?.(p.yar +>.$ (fume p.+.sih q.+.sih)) :: debug message %sage :: write a jamfile %= +>.$ mos :_(mos [hen [%give %blit [%sag p.+.sih q.+.sih] ~]]) == - :: - %save :: write a file - %= +>.$ - mos :_(mos [hen [%give %blit [%sav p.+.sih q.+.sih] ~]]) - == - :: - %tell (furl (turn p.+.sih |=(a=@t (trip a)))) :: wall of text - %talk (furl (~(win re p.+.sih) 0 p.q.yar)) :: program output - %text $(+.sih [%talk %leaf p.+.sih]) :: simple message - %warn (fume '~' [%leaf p.+.sih]) :: system message - ?(%init %logo %veer %vega %verb) :: drop-throughs + ::S :: + ::S %save :: write a file + ::S %= +>.$ + ::S mos :_(mos [hen [%give %blit [%sav p.+.sih q.+.sih] ~]]) + ::S == + ::S :: + ::S %tell (furl (turn p.+.sih |=(a=@t (trip a)))) :: wall of text + ::S %talk (furl (~(win re p.+.sih) 0 p.q.yar)) :: program output + ::S %text $(+.sih [%talk %leaf p.+.sih]) :: simple message + ::S %warn (fume '~' [%leaf p.+.sih]) :: system message + ::S ?(%init %logo %veer %vega %verb) :: drop-throughs + ::S +>(mos :_(mos [hen %give +.sih])) + ?(%init %veer %vega %verb) :: drop-throughs +>(mos :_(mos [hen %give +.sih])) + %writ :: file exists + %= +>.$ + mos + :_ mos + [hen %pass / %g %show [our /terminal] our /lines] + == == :: ++ lear :: handle request @@ -324,6 +429,7 @@ %noop +> %belt :: terminal input ?~ q.q.yar + ~& %dill-no-bein beep ?^ hyr.u.q.q.yar :: live search ?+ p.kyz $(hiz.u.q.q.yar 0, hyr.u.q.q.yar ~) @@ -389,7 +495,7 @@ %d ?: ?& =(0 bul.u.q.q.yar) =(0 bus.u.q.q.yar) == - +>.$(mos :_(mos [hen %pass ~ %b [%kill ~]])) + +>.$(mos :_(mos [hen %give %logo ~])) $(kyz [%belt %del ~]) %e (edit u.q.q.yar(bus bul.u.q.q.yar)) %f $(kyz [%belt %aro %r]) @@ -438,7 +544,8 @@ %r (edit u.q.q.yar(hyr [~ ~])) :: TODO :: %w +>.$(mos :_(mos [hen %pass ~ %b [%limn ~]])) - %x +>.$(mos :_(mos [hen %pass ~ %b [%ling ~]])) + %x +>.$(mos :_(mos (poke %term-in -:!>(*term-in) / %cmd %x))) + ::S %x +>.$(mos :_(mos [hen %pass ~ %b [%ling ~]])) %y ?: =(0 p.r.q.yar) beep $(kyz [%belt %txt (snag q.r.q.yar r.r.q.yar)]) @@ -507,9 +614,11 @@ [p.hyt.u.q.q.yar [jab ?~(q.hyt.u.q.q.yar ~ +.q.hyt.u.q.q.yar)]] :: mos - :* [hen %pass ~ %b [%hail ~]] + :* ::S [hen %pass ~ %b [%hail ~]] + (poke %term-ctrl -:!>(%hail) %hail) [hen %give [%bbye ~]] - [hen %pass ~ %b [%line jab]] + ::S [hen %pass ~ %b [%line jab]] + (poke %term-in -:!>(*term-in) / %line jab) [hen %give [%blit [[%mor ~] ~]]] mos == @@ -533,9 +642,9 @@ :: %blew +>.$(p.q.yar p.p.kyz) :: window size %boot - %= +>.$ - mos - :_(mos [hen %pass ~ (note %b p.kyz)]) + %= +>.$ + mos + :_(mos [hen %pass ~ (note %a p.kyz)]) == :: %crud :: error trace @@ -545,30 +654,51 @@ (fume:$(q.kyz t.q.kyz) '!' `tank`i.q.kyz) :: %hail :: refresh - +>.$(mos :_(mos [hen %pass ~ %b kyz])) + +>.$ + ::S +>.$(mos :_(mos [hen %pass ~ %b kyz])) :: %harm :: all terms hung up =+ nug=((map duct yard) [[hen (~(get by dug) hen)] ~ ~]) ^+ +>.$ %= +>.$ dug nug - mos :_(mos [hen %pass ~ %b kyz]) + ::S mos :_(mos [hen %pass ~ %b kyz]) == :: %hook :: this term hung up - +>.$(dug (~(del by dug) hen), mos :_(mos [hen %pass ~ %b kyz])) + ~& %dill-hook-not-implemented + +>.$ + ::S +>.$(dug (~(del by dug) hen), mos :_(mos [hen %pass ~ %b kyz])) + :: + %init + =. def `(fall def +.hen) + %= +>.$ + our p.kyz + mos + :_ mos + [(need def) %pass / %c %warp [p.kyz p.kyz] %main `[%& %y [%ud 1] /]] + == :: %talk (furl (~(win re p.kyz) 0 p.q.yar)) :: program output %text $(kyz [%talk %leaf p.kyz]) :: simple message == :: + ++ poke + |= msg=mess + ^- move + :^ hen %pass / + :^ %g %mess [our /terminal] + :- our msg + :: ++ yerk :: complete core - ^- [p=(list move) q=(map duct yard)] - :- (flop mos) + ^- [p=(list move) q=ship r=(unit duct) s=(map duct yard)] + :^ (flop mos) our def (~(put by dug) hen yar) -- -- =| $: %0 :: + our=ship :: + def=(unit duct) :: dug=(map duct yard) :: == :: |= [now=@da eny=@ ski=sled] :: current invocation @@ -592,8 +722,8 @@ :_ ..^$ %+ turn (~(tap by dug) *(list ,[p=duct q=yard])) |=([a=duct b=yard] [a %slip %d p.q.hic]) - =^ moz dug yerk:(lear:(dy hen dug) q.hic) - [moz ..^$] + =+ res=yerk:(lear:(dy hen our def dug) q.hic) + [-.res ..^$(our +<.res, dug +>+.res, def +>-.res)] :: ++ doze |= [now=@da hen=duct] @@ -601,19 +731,19 @@ ~ :: ++ load - |= old=[%0 dug=(map duct yard)] + |= old=[%0 our=ship def=(unit duct) dug=(map duct yard)] ^+ ..^$ - ..^$(dug dug.old) + ..^$(our our.old, def def.old, dug dug.old) :: ++ scry |= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] ^- (unit (unit (pair mark ,*))) [~ ~ [%tank >dug<]] :: -++ stay [%0 dug] +++ stay [%0 our def dug] ++ take :: process move |= [tea=wire hen=duct hin=(hypo sign)] ^- [p=(list move) q=_..^$] - =^ moz dug yerk:(leap:(dy hen dug) tea q.hin) - [moz ..^$] + =+ res=yerk:(leap:(dy hen our def dug) tea q.hin) + [-.res ..^$(our +<.res, dug +>+.res, def +>-.res)] -- diff --git a/arvo/eyre.hoon b/arvo/eyre.hoon index 1eabac3ef1..488092ee18 100644 --- a/arvo/eyre.hoon +++ b/arvo/eyre.hoon @@ -28,11 +28,6 @@ ++ note :: out request $-> $% $: %a :: to %ames $% [%want p=sock q=path r=*] :: - == == :: - $: %b :: to %batz - $% [%hail ~] :: - [%line p=@t] :: - [%ling ~] :: == == :: $: %c :: to %clay $% [%warp p=sock q=riff] :: diff --git a/arvo/ford.hoon b/arvo/ford.hoon index a75ba3b049..b5ebeb90ac 100644 --- a/arvo/ford.hoon +++ b/arvo/ford.hoon @@ -804,8 +804,7 @@ |= [cof=cafe vax=vase gen=twig] =+ puz=(mule |.((~(mint ut p.vax) [%noun gen]))) ?- -.puz - | ~& [%maim-fail p.puz] - (flaw cof p.puz) + | (flaw cof p.puz) & %+ (coup cof) (mock [q.vax q.p.puz] (mole ska)) |= val=* `vase`[p.p.puz val] diff --git a/arvo/gall.hoon b/arvo/gall.hoon index 650f1135f5..4d3593245d 100644 --- a/arvo/gall.hoon +++ b/arvo/gall.hoon @@ -131,10 +131,11 @@ $% [%dirt p=twig] :: == :: ++ sign :: in result $<- - $? [?(%b %c %d %e) @tas *] :: + $? [?(%c %d %e %t) @tas *] :: $: %a :: by %ames - $% [%woot p=ship q=coop] :: - [%went p=ship q=cape] :: XX only for apps + $% [%init p=@p] :: only for :begin + [%woot p=ship q=coop] :: + [%went p=ship q=cape] :: only for apps == == :: $: %g :: by %gall $% [%crud p=@tas q=(list tank)] :: @@ -144,6 +145,8 @@ [%nice ~] :: [%rush p=mark q=*] :: [%rust p=mark q=*] :: + [%sage p=path q=*] :: + [%verb ~] :: [%veer p=@ta q=path r=@t] :: [%vega p=path] :: == == :: @@ -342,7 +345,7 @@ :- %meta ^- vase :- :+ %cell [%cube sem %atom %tas] - [%cell [%atom %tas] p.q.cay] + [%cell [%cube p.cay %atom %tas] p.q.cay] [sem p.cay q.q.cay] :: ++ gaff :: take and go @@ -358,7 +361,7 @@ ?> ?=(?(%mess %show %nuke) -.kon) =+ you=`ship`?-(-.kon %mess p.kon, %nuke p.kon, %show p.kon) =+ mat=(~(got by pol.all) you) - =+ sad==+(sad=(~(get by sap.mat) our) ?^(sad u.sad *scad)) + =+ sad==+(sad=(~(get by sap.mat) our) ?^(sad u.sad [.(p 1)]:*scad)) =^ num sad =+ nym=(~(get by q.sad) hen) ?^ nym [u.nym sad] @@ -424,15 +427,16 @@ =+ rod=|=(ron=roon `note`[%a %wont [our you] [%q %gh imp] num ron]) ?+ -.pax !! %m ?: ?=(%a -.sih) ~ - :_ ~ :- hen ?+ -.sih ~& [%gall-gave-m -.sih] !! %f + :_ ~ :- hen ?- -.p.+.sih %| [%give %mean ~ %ford-fail p.p.+.sih] %& [%pass [%r pax] %g %mess [our imp] you `cage`q.p.p.+.sih] == :: %g + :_ ~ :- hen ?- -.+.sih %crud !! %dumb !! @@ -441,6 +445,8 @@ %nice [%give %nice ~] %rush !! %rust !! + %sage !! + %verb !! %veer !! %vega !! == @@ -457,6 +463,8 @@ %nice [%give %nice ~] %rush [%pass [%r pax] (rod %d p.+.sih q.+.sih)] %rust [%pass [%r pax] (rod %f p.+.sih q.+.sih)] + %sage !! + %verb !! %veer !! %vega !! == @@ -467,6 +475,7 @@ ++ gawd :: %r handle response |= [hen=duct saq=sack imp=path num=@ud ron=roon] ^- [p=(list move) q=_..^$] + ?: =(0 num) ~& %shouldnt-get-zero `..^$ =+ mat=(~(got by pol.all) p.saq) =+ sad=(~(got by sap.mat) q.saq) =+ neh=(~(got by r.sad) num) diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index 565bf03045..0835b79bbc 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -9882,7 +9882,6 @@ ?+ hap !! [@ %ames *] %a [@ %newt *] %a - [@ %batz *] %b [@ %sync *] %c [@ %term *] %d [@ %http *] %e diff --git a/main/app/began/core.hook b/main/app/began/core.hook new file mode 100644 index 0000000000..3333f9ac2c --- /dev/null +++ b/main/app/began/core.hook @@ -0,0 +1,43 @@ +/- begin-args +:: +|% +++ sign + $% $: %a + $% [%went p=ship q=cape] + [%init p=@p] + == == == +++ began-args ,[his=@p tic=@p eny=@t ges=gens] +-- +:: +!: +|_ [hid=hide %0 ust=bone his=@p mac=mace] +++ poke-began-args + |= [ost=bone you=ship began-args] + =+ bur=(shax :(mix (jam ges) eny)) + =+ loy=(bruw 2.048 bur) + :_ +>.$(ust ost, his his, mac [0 sec:ex:loy]~) + :~ :* ost %pass /ticketing %a %want [our.hid (sein his)] /q/ta + his tic ges pub:ex:loy + == + == +:: +++ poke-will + |= [ost=bone you=ship wil=will] + :_ +>.$ :_ ~ + [ust %pass / %a %cash his mac wil] +:: +++ pour + |= [ost=bone pax=path sih=*] + =+ sih=((soft sign) sih) :: seem to get blits + ?~ sih `+>.$ + :_ +>.$ + ?- +<.u.sih + %init ~ + %went [ost %give ?:(?=(%good q.u.sih) [%nice ~] [%mean ~ %went-dead ~])]~ + == +:: +++ peer + |= + * + `+> +-- diff --git a/main/app/begin/core.hook b/main/app/begin/core.hook new file mode 100644 index 0000000000..e2d017eb7b --- /dev/null +++ b/main/app/begin/core.hook @@ -0,0 +1,535 @@ +/- begin-args +:: +|% +++ sign + $% $: %g + $% [%nice ~] + [%mean p=ares] + [%rush %txt p=cord] + == == == +++ form ,[his=@p tic=@p eny=@t ges=gens] +++ state + $? %begin %his %tic %eny %lag + %name %form %psect %pname %year + %govt %sect %fname %mname %nname + %lname %done + == +-- +:: +!: +|_ [hid=hide sat=state form] +++ done + |= ost=bone + :_ +>.$ + :~ :* ost %pass /to-gan %g %mess [our.hid /began] our.hid + %began-args !>([his tic eny ges]) + == + == +:: +++ loon + %+ cook + |= all=(list ,@t) + |- ^- @t + ?~ all %$ + ?~ t.all i.all + (cat 3 i.all (cat 3 ' ' $(all t.all))) + (most ace (cook |=(a=(list ,@) (rap 3 a)) (plus prn))) +:: +++ next + |= txt=cord + ^- [[[cord prom] (list cord)] _+>.$] + ?- sat + %begin + :_ +>.$(sat %his) + :- ['Your ship: ~' %text] + %- lore %- crip + """ + Do you have a ship and a ticket? If not, please ask + urbit@urbit.org for one. + """ + %his + =+ her=(rash txt fed:ag) + => .(-.q.ges (clan her)) + =+ ^= cow + |- ^- @ud + ?- -.q.ges + %czar 256 + %king (mul 255 $(-.q.ges %czar)) + %duke (mul 65.535 $(-.q.ges %king)) + %earl (mul (dec (bex 32)) $(-.q.ges %duke)) + %pawn (sub (bex 128) $(-.q.ges %earl)) + == + =+ ^= ves ^- tape + ?- -.q.ges + %czar "carriers" + %king "cruisers" + %duke "destroyers" + %earl "yachts" + %pawn "submarines" + == + :_ ^+ +>.$ +>.$(his (rash txt fed:ag), sat %tic) + :- ['Your ticket: ~' %text] + %- lore %- crip + """ + + Launching {(scow %p her)}, one of {} Urbit {ves}... + + If I did not build for myself + for whom should I build? + + -- Bunting, _Chomei at Toyama_ + + Let's configure your identity. Warning - it's nontrivial to + change this data once you've sent it to the server. If you enter + something wrong, hit ^D to cancel, then run the program again. + + """ + :: + %tic + :_ +>.$(tic (rash txt fed:ag), sat %eny) + :- ['Entropy: ' %pass] + %- lore %- crip + """ + + Enter a passphrase or other unusual text. You (or your enemies) + can regenerate your ship from this entropy. + + """ + :: + %eny + :_ +>.$(eny (rash txt (boss 256 (more gon qit))), sat %lag) + :- ['Language: ' %text] + %- lore %- crip + """ + + What language would your ship rather speak? Enter it as a + two-letter (ISO 639-1) code, like "en" for English. Whatever + language you pick, it'll all be English now, but in future + we'll be more sensitive to your needs. + + """ + :: + %lag + =+ ^= par + %+ sear + |= [a=@ b=@] + ^- (unit ,@ta) + =+ c=(cat 3 a b) + =+(d=(glon c) ?~(d ~ [~ c])) + ;~(plug low low) + ?. ?=(%duke -.q.ges) + :_ +>.$(p.ges (rash txt par), sat %name) + [['Name: ' %text] ~] + :_ +>.$(p.ges (rash txt par), sat %form) + :- ['Form: ' %text] + %- lore %- crip + """ + + Please select one of the pre-chosen forms: + + %lady female-identified individual + %lord male-identified individual + %punk opaque handle + %anon totally anonymous + + """ + :: + %name + ?> ?=(?(%earl %king) -.q.ges) + =+ nam=(rash txt (boss 256 (more gon qit))) + =+ gos=?-(-.q.ges %earl [%earl nam], %king [%king nam]) + :_ +>.$(q.ges gos, sat %done) + [['' %text] ~] + :: + %form + =+ ^= par + ;~ pose + (jest %anon) + (jest %lady) + (jest %lord) + (jest %punk) + == + =+ fom=(rash txt par) + ?+ fom !! + %anon [[['' %text] ~] +>.$(q.ges [%duke %anon ~], sat %done)] + %punk + :_ +>.$(q.ges [%duke %punk *sect ''], sat %pname) + [['Handle: ' %text] ~] + ?(%lady %lord) + =+ wat=?-(fom %lady [%lady *whom], %lord [%lord *whom]) + :_ +>.$(q.ges `gcos`[%duke wat], sat %year) + :- ['Year you were born: ' %text] + %- lore %- crip + """ + + You've selected a personal identity. For a %lord or a %lady, + please use your real name only. If you'd prefer a fictitious + handle, you can hit ^D and start over as a %punk. Or you can + use %anon and go by your ship name alone. + + As a real person, we're going to ask you for a little bit of + personal information - not enough to compromise your privacy, + just enough to make everyone on Urbit feel like a neighbor. + + What we're going to ask you for is information that's (a) + public (would be obvious, or at least easy to guess, for + someone who met you in person); (b) durable (doesn't change + often); and (c) relevant (helps you connect with friends). + + For example, we'll ask for the year (not day) you were born, + because your age is easy to guess in person, doesn't change, + and has a big effect on how people perceive you. + + """ + == + :: + %pname + :_ +>.$(q.ges [%duke %punk *sect (rash txt loon)], sat %psect) + :- ['Banner: %' %text] + %- lore %- crip + """ + + One basic human instinct is the urge to form political tribes. + In a network that fights this need, these tribes form anyway and + they form badly. Urbit designs them into the infrastructure. + Inspired by the Qing Dynasty, you'll align yourself with one of + five colored "banners" - %red, %blue, %orange, %black or %white. + + Political discourse across tribal boundaries is almost always an + antisocial act - less communication, than symbolic violence. In + Urbit, messages marked political stay within your own banner; + your friends in other banners simply won't see them. Between + banners, politics doesn't erode apolitical relationships; inside + each banner, political discourse is harmonious and productive. + + Pick a banner by the adjective you feel best describes you: + + %red far left: radical, anarchist + %blue center-left: moderate, liberal + %orange center-right: conservative, libertarian + %black far right: traditionalist, reactionary + + Or if digital agitation isn't your cup of tea, choose %white, and + your Urbit experience will remain politics-free. + + """ + :: + %psect + ?> ?=(%duke -.q.ges) + ?> ?=(%punk -.p.q.ges) + =+ ^= par + ;~ pose + (jest %white) + (jest %blue) + (jest %red) + (jest %black) + (jest %orange) + == + :- [['' %text] ~] + %= +>.$ + q.ges [%duke %punk ((hard sect) (rash txt par)) q.p.q.ges] + sat %done + == + :: + %year + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ woh=`whom`[(rash txt dim:ag) *govt *sect *name] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %govt) + :- ['Location (e.g. us/94103):' %text] + %- lore %- crip + """ + + Where are you? This is totally optional, but we'd like to + know your vague general location. You can enter nothing at + all, just a country code, or country and postal code. + + """ + :: + %govt + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ ^= par + ;~ pose + ;~ plug (cook |=([a=@ b=@] (cat 3 a b)) ;~(plug low low)) + ;~ pfix fas + %+ cook + |=(a=tape (rap 3 ^-((list ,@) a))) + (star ;~(pose hig hep nud)) + == + (easy ~) + == + == + =+ woh=`whom`[p.p.p.q.ges (rash txt par) *sect *name] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %sect) + :- ['Banner: %' %text] + %- lore %- crip + """ + + One basic human instinct is the urge to form political tribes. + In a network that fights this need, these tribes form anyway and + they form badly. Urbit designs them into the infrastructure. + Inspired by the Qing Dynasty, you'll align yourself with one of + five colored "banners" - %red, %blue, %orange, %black or %white. + + Political discourse across tribal boundaries is almost always an + antisocial act - less communication, than symbolic violence. In + Urbit, messages marked political stay within your own banner; + your friends in other banners simply won't see them. Between + banners, politics doesn't erode apolitical relationships; inside + each banner, political discourse is harmonious and productive. + + Pick a banner by the adjective you feel best describes you: + + %red far left: radical, anarchist + %blue center-left: moderate, liberal + %orange center-right: conservative, libertarian + %black far right: traditionalist, reactionary + + Or if digital agitation isn't your cup of tea, choose %white, and + your Urbit experience will remain politics-free. + + """ + :: + %sect + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ ^= par + ;~ pose + (jest %white) + (jest %blue) + (jest %red) + (jest %black) + (jest %orange) + == + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges (sect (rash txt par)) *name] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %fname) + [['First name: ' %text] ~] + :: + %fname + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ nam=[(rash txt loon) *(unit ,@t) *(unit ,@t) *@t] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %mname) + [['Middle name (or blank): ' %text] ~] + :: + %mname + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ uni=(rash txt ;~(pose (stag ~ loon) (easy ~))) + =+ nam=[p.s.p.p.q.ges uni *(unit ,@t) *@t] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %nname) + [['Nickname/handle (or blank): ' %text] ~] + :: + %nname + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ uni=(rash txt ;~(pose (stag ~ loon) (easy ~))) + =+ nam=[p.s.p.p.q.ges q.s.p.p.q.ges uni *@t] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %lname) + [['Last name: ' %text] ~] + :: + %lname + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lord %lady) -.p.q.ges) + =+ nam=[p.s.p.p.q.ges q.s.p.p.q.ges r.s.p.p.q.ges (rash txt loon)] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam] + =+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + :_ +>.$(q.ges [%duke wat], sat %done) + [['' %text] ~] + :: + %done !! + == +:: +++ poke-begin-args + |= [ost=bone you=ship arg=(list)] + =^ sot +>.$ + ?~ arg [%begin +>.$] + =+ ((soft ,@p) i.arg) + ?~ - [%begin +>.$] + =. his u.- + ?~ t.arg [%his +>.$] + =+ ((soft ,@p) i.t.arg) + ?~ - [%his +>.$] + =. tic u.- + ?~ t.t.arg [%tic +>.$] + =+ ((soft ,@t) i.t.t.arg) + ?~ - [%tic +>.$] + =. eny u.- + ?~ t.t.t.arg [%eny +>.$] + =+ ((soft lang) i.t.t.t.arg) + ?~ - [%eny +>.$] + ?~ (glon u.-) [%eny +>.$] + =. p.ges u.- + =+ ran=(clan his) + =* sec t.t.t.t.arg + ?~ sec [%lag +>.$] + ?- ran + ?(%czar %pawn) %begin + ?(%king %earl) + =+ ((soft ,@t) i.sec) + ?~ - [%lag +>.$] + =. q.ges + ?- ran + %king [%king u.-] + %earl [%earl u.-] + == + [%done +>.$] + :: + %duke + =+ ((soft ?(%anon %lady %lord %punk)) i.sec) + ?~ - [%lag +>.$] + ?- u.- + %anon + =. q.ges [%duke %anon ~] + [%done +>.$] + :: + %punk + ?~ t.sec [%form +>.$] + =+ ((soft ,@t) i.t.sec) + ?~ - [%form +>.$] + =. q.ges [%duke %punk *sect u.-] + ?~ t.t.sec [%pname +>.$] + =+ ((soft sect) i.t.t.sec) + ?~ - [%pname +>.$] + ?> ?=(%duke -.q.ges) + ?> ?=(%punk -.p.q.ges) + =. q.ges [%duke %punk u.- q.p.q.ges] + [%done +>.$] + :: + ?(%lady %lord) + =. q.ges + ^- gcos + :- %duke + ?- u.- + %lady [%lady *whom] + %lord [%lord *whom] + == + ?~ t.sec [%form +>.$] + =+ ((soft ,@ud) i.t.sec) + ?~ - [%form +>.$] + =+ ^= wat + =+ woh=`whom`[u.- *govt *sect *name] + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + =. q.ges `gcos`[%duke wat] + ?~ t.t.sec [%year +>.$] + =+ ((soft govt) i.t.t.sec) + ?~ - [%year +>.$] + =+ ^= wat + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + =+ woh=`whom`[p.p.p.q.ges u.- *sect *name] + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + =. q.ges [%duke wat] + ?~ t.t.t.sec [%govt +>.$] + =+ ((soft sect) i.t.t.t.sec) + ?~ - [%govt +>.$] + =+ ^= wat + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges u.- *name] + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + =. q.ges [%duke wat] + =+ nam=((hard (list)) |8.arg) + ?~ nam [%sect +>.$] + =+ ((soft ,@t) i.nam) + ?~ - [%sect +>.$] + =+ ^= wat + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + =+ nym=`name`[u.- *(unit ,@t) *(unit ,@t) *@t] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym] + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + ~! nama=nam + =. q.ges `gcos`[%duke wat] + ~! namb=nam + ?~ t.nam [%fname +>.$] + =+ ((soft (unit ,@t)) i.t.nam) + ?~ - [%fname +>.$] + =+ ^= wat + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + =+ nym=[p.s.p.p.q.ges u.- *(unit ,@t) *@t] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym] + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + =. q.ges [%duke wat] + ?~ t.t.nam [%mname +>.$] + =+ ((soft (unit ,@t)) i.t.t.nam) + ?~ - [%mname +>.$] + =+ ^= wat + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + =+ nym=[p.s.p.p.q.ges q.s.p.p.q.ges u.- *@t] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym] + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + =. q.ges [%duke wat] + ?~ t.t.t.nam [%nname +>.$] + =+ ((soft ,@t) i.t.t.t.nam) + ?~ - [%nname +>.$] + =+ ^= wat + ?> ?=(%duke -.q.ges) + ?> ?=(?(%lady %lord) -.p.q.ges) + =+ nym=[p.s.p.p.q.ges q.s.p.p.q.ges r.s.p.p.q.ges u.-] + =+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym] + `what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh]) + =. q.ges [%duke wat] + [%done +>.$] + == + == + =^ res +>.$ + ^- [[pot=[cord prom] tak=(list cord)] _+>.$] + (next(sat sot) '') + :_ +>.$ + %+ welp + :~ [ost %pass /in %g %show [our.hid +.imp.hid] you /in/[-.imp.hid]] + [ost %give %nice ~] + == + %+ welp + (spam %rush %prompt pot.res) + %- zing + (turn (flop tak.res) |=(a=cord (spam %rush %txt a))) +:: +++ pour + |= [ost=bone pax=path sih=*] + =+ sih=((hard sign) sih) + ?: ?=([%in ~] pax) + ?. ?=(%rush +<.sih) `+>.$ + =^ res +>.$ + ^- [[pot=[cord prom] tak=(list cord)] _+>.$] + (next p.sih) + ?: ?=(%done sat) + (done ost) + :_ +>.$ + %+ welp (spam %rush %prompt pot.res) + %- zing + (turn (flop tak.res) |=(a=cord (spam %rush %txt a))) + :_ +>.$ + :- [ost %give +.sih] + %+ turn (~(tap by sup.hid)) + |= [ost=bone *] + :^ ost %give %rush + :- %tang :_ ~ + [%leaf ?:(?=(%nice +<.sih) "begin successful" "begin failed")] +:: +++ peer + |= + * + `+> +:: +++ spam + |* git=* + %+ turn + (~(tap in (~(get ju pus.hid) /out))) + |=(a=bone [a %give git]) +-- diff --git a/main/app/grep/core.hook b/main/app/grep/core.hook index 2132fd2dc1..ce47360382 100644 --- a/main/app/grep/core.hook +++ b/main/app/grep/core.hook @@ -29,6 +29,7 @@ %nice [ost %give %nice ~]~ %rush + %+ weld (spam %rush %prompt 'searching for {}...') %- spam ?- &3.sih %txt diff --git a/main/app/shell/core.hook b/main/app/shell/core.hook index 23bb28a560..bb7652b018 100644 --- a/main/app/shell/core.hook +++ b/main/app/shell/core.hook @@ -9,11 +9,22 @@ :::: structures :: |% :: +++ axle :: + $: pid=@u :: next process id + pax=_`path`/=try= :: working directory + act=(unit span) :: active child + pip=(map span span) :: pipe out->in + pop=(map span span) :: pipe in->out + pot=(map span ,[cord prom]) :: prompts + var=(map term vase) :: variables + == :: ++ gift :: $% [%rush p=gilt] :: [%mean p=ares] :: [%nice ~] :: [%meta p=vase] :: + [%sage p=path q=*] :: + [%verb ~] :: [%veer p=@ta q=path r=@t] :: [%vega p=path] :: == :: @@ -21,6 +32,7 @@ $% [%term-line p=term-line] :: [%txt p=cord] :: == :: +++ glas $|(%out [%in p=cord]) :: ++ hapt ,[p=ship q=path] :: ++ move ,[p=bone q=(mold note gift)] :: ++ note :: @@ -54,6 +66,8 @@ [%nice ~] :: [%rush p=mark q=*] :: [%rust p=mark q=*] :: + [%sage p=path q=*] :: + [%verb ~] :: [%veer p=@ta q=path r=@t] :: [%vega p=path] :: == == == :: @@ -87,7 +101,7 @@ ^- $+(nail (like coma)) =+ paf=pax =. pax ?.(&(?=([@ @ @ *] pax) =('0' &3.pax)) pax pax(&3 (scot da/lat))) - %+ ifix [(star ace) (star ace)] + %+ ifix [(star ace) gaw] ;~ pose (stag %run ;~(plug (star ;~(sfix (task(tol %0) bar) ace)) (task col))) (stag %end ;~(pfix col sem ;~(pose (stag %& dem) (stag %| sym)))) @@ -117,261 +131,332 @@ -- -- !: -:::: program +:::: per event :: -|_ $: hid=hide - pid=@u - pax=_`path`/=try= - act=(unit span) - pip=(map span span) - pop=(map span span) - var=(map term vase) - == -:: -++ peer :: handle subscription - |= [ost=bone you=ship pax=path] - ^- [(list move) _+>] - ?~ pax `+>.$ - ?+ i.pax `+>.$ - %in :: to app - ?~ t.pax `+>.$ - ?. (~(has by cub.hid) i.t.pax) `+>.$ - ?: (~(has by pop) i.t.pax) `+>.$ - :_ +>.$(act `i.t.pax) - (print ost you ~) - %out :: to terminal - ?> ?=(~ t.pax) - :_ +>.$ - [ost %give %rush %term-line `term-line`[prompt ~ ~]]~ - == -:: -++ cubs :: tasks with open /in - %- sort :_ |=([a=span b=span] (lth (slav %ud a) (slav %ud b))) - ^- (list span) - %+ murn (~(tap by sup.hid)) - |= [@ @ a=path] - ?. ?& ?=([%in cord ~] a) - (~(has by cub.hid) i.t.a) - !(~(has by pop) i.t.a) - == - ~ - (some i.t.a) -:: -++ next-act :: rotate active task - =+ opt=[i=`(unit span)`~ t=(turn cubs |=(a=span `(unit span)`[~ a]))] - |- - ?~ t.opt ~ - ?: =(act i.opt) - i.t.opt - $(opt t.opt) -:: -++ poke-kyev :: handle key event - |= [ost=bone you=ship key=kyev] - ^- [(list move) _+>] - ?: ?=([~ @] key) (poke-txt ost you q.key) :: simple keypress - ?> ?=([[%ctrl ~ ~] @t] key) - ?+ q.key - :_ +>.$ - :- [ost %give %nice ~] - (print ost you leaf/"no command \\{(trip q.key)}" ~) - %x =. act next-act - :_ +>.$ - :- [ost %give %nice ~] - (print ost you ~) - %l =+ =- tak=rose/[" " "[" "]"]^(turn cubs -) - |= a=span - leaf/(trip (rap 3 (~(got by cub.hid) a) '(' a ')' ~)) - [[[ost give/nice/~] (print ost you tak ~)] +>.$] - == -:: -++ poke-txt :: handle command - |= [ost=bone you=ship txt=cord] - ^- [(list move) _+>] - ?: =('\\' (end 3 1 txt)) :: escaped ctrl-key - (poke-kyev ost you [%ctrl ~ ~] (rsh 3 1 txt)) - ?^ act :: pipe to child - :_ +>.$ - :- [ost %give %nice ~] - (spam /in/[u.act] %rush %txt txt) +|% +++ ve + |= [hid=hide ost=bone axle] + =* vat +<+> + =| mow=(list move) + |% + ++ abet + ^- [(list move) axle] + [(flop mow) vat] :: - =- :_ con - %+ welp (stash:con ost you txt) - ?~ tak - mof - %+ welp - (print:con ost you tak ~) - [[ost %give %nice ~] mof] - ^- [con=_+>.$ tak=$|(~ tank) mof=(list move)] - =+ pas=((full ~(parse from pax lat.hid)) [1 1] (trip txt)) - ?~ q.pas - [+>.$ leaf/"}>" ~] - =+ com=(wonk pas) - ^- [con=_+>.$ tak=$|(~ tank) mof=(list move)] - ?- -.com - %path - =. pax p.com - [+>.$ leaf/"=% {(spud p.com)}" ~] + ++ blab + |= mof=(list move) + +>.$(mow (welp mof mow)) :: - ?(%ins %mut %del) - :- +>.$ - =+ paf=[.(&3 '=')]:?+(-.com p.com %del p.com) - =- :- palm/[" " ~ ~ ~]^~[leaf/msg (dank:ut paf)] - (turn (drop tor) |=(a=toro [ost %pass writ/paf %c %info our.hid a])) - ^- [msg=tape tor=(unit toro)] - |- - ?- -.com - %ins - ?^ (file p.com) ["! exists" ~] - ["written" `(foal p.com q:(exec (fall q.com [%bczp atom/%t])))] - %mut - ?~ (file p.com) $(com [%del p.com]) - ["changed" `(foal p.com q:(exec q.com))] - %del - ?~ (file p.com) ["! none" ~] - ["written" `(fray p.com)] + ++ chew-file + |= [paf=path msg=tape tor=(unit toro)] + ^- (list move) + %+ welp + (print palm/[" " ~ ~ ~]^~[leaf/msg (dank:ut paf)]) + %+ turn (drop tor) + |=(a=toro [ost %pass writ/paf %c %info our.hid a]) + :: + ++ cubs :: tasks with open /in + %- sort :_ |=([a=span b=span] (lth (slav %ud a) (slav %ud b))) + ^- (list span) + %+ murn (~(tap by sup.hid)) + |= [@ @ a=path] + ?. ?& ?=([%in cord ~] a) + (~(has by cub.hid) i.t.a) + !(~(has by pop) i.t.a) + == + ~ + (some i.t.a) + :: + ++ eat + |= [you=ship com=coma] + ?- -.com + %comt +>.$ + %del (eat-del +.com) + %end (eat-end +.com) + %hoon (eat-hoon +.com) + %ins (eat-ins +.com) + %mut (eat-mut +.com) + %path (eat-path +.com) + %run (eat-run you +.com) + %rvar (eat-rvar +.com) + %var (eat-var +.com) == :: - %run - =+ mof=(print ost you leaf/"+ :{(trip p.q.com)}" ~) + ++ eat-del + |= paf=path + ^+ +> + =. &3.paf '=' + %- blab + %+ chew-file paf + ?^ (file paf) ["! none" ~] + ["deleted" `(fray paf)] + :: + ++ eat-end :: XX clean up state + |= poc=(each ,@u cord) + ^+ +> + ?- -.poc + %& + =+ cil=(scot %ud p.poc) + =+ cin=(trip (~(got by cub.hid) cil)) + %+ blab + [ost %pass /child/[cil]/fork %g %cide cil] + (print leaf/"- :{cin}({(trip cil)})") + :: + %| + =+ ^- moz=(list move) + %+ murn (~(tap by cub.hid)) + |= [a=span b=term] + ?. =(b p.poc) ~ + %- some + [ost %pass /child/[a]/fork %g %cide a] + %- blab %+ welp moz + (print leaf/"-{<(lent moz)>} :{(trip p.poc)}") + == + :: + ++ eat-hoon + |= gen=twig + ^+ +> + (blab (print (sell (exec gen)))) + :: + ++ eat-ins + |= [paf=path gen=(unit twig)] + ^+ +> + =. &3.paf '=' + %- blab + %+ chew-file paf + ?^ (file paf) ["! exists" ~] + :- "written" + `(foal paf q:(exec (fall gen [%bczp atom/%t]))) + :: + ++ eat-mut + |= [paf=path gen=twig] + ^+ +> + =. &3.paf '=' + %- blab + %+ chew-file paf + ?^ (file paf) ["! none" ~] + ["changed" `(foal paf q:(exec gen))] + :: + ++ eat-path + |= paf=path + ^+ +> + =. pax paf + (blab (print leaf/"=% {(spud paf)}")) + :: + ++ eat-run + |= [you=ship mud=(list mand) mad=mand] + ^+ +> + :: =. +>.$ (blab (print leaf/"+ :{(trip p.mad)}")) =| inp=(unit span) - =< [+>.$ ~ mof] + =< +>.$ %+ reel - `(list mand)`(welp p.com q.com ~) + `(list mand)`(welp mud mad ~) =+ a=[app=*mand .] |. => a =+ cil=(scot %ud pid) - ::~& [%pipsqueak ] - %_ +> + %_ +> pid +(pid) pip ?~ inp pip (~(put by pip) cil u.inp) pop ?~ inp pop (~(put by pop) u.inp cil) inp `cil - mof + mow =+ yon=[our.hid cil imp.hid] =+ mez=[(cat 3 p.app '-args') (exec [%clsg q.app])] - =- (weld (flop -) mof) :: XX strange order + %- welp :_ mow ^- (list move) - :~ [ost %pass /child/[cil] %g %sire p.app cil] + :~ [ost %pass /child/[cil]/fork %g %sire p.app cil] [ost %pass /child/[cil]/out %g %show yon you /out] [ost %pass /child/[cil]/main %g %meta !>([%mess yon you mez])] == == :: - %end - ?: ?=(%& -.p.com) - =+ cil=(scot %ud p.p.com) - =+ cin=(trip (~(got by cub.hid) cil)) - :- +>.$ :- ~ - :_ (print ost you leaf/"- :{cin}({(trip cil)})" ~) - [ost %pass /child/[cil] %g %cide cil] - =* cil p.p.com - =- [+>.$ leaf/"-{<(lent moz)>} :{(trip cil)}" moz] - ^= moz - %+ murn (~(tap by cub.hid)) |= [a=span b=term] - ?. =(b cil) ~ - %- some - [ost %pass /child/[a] %g %cide a] + ++ eat-rvar + |= vor=term + ^+ +> + =+ mod=(~(has by var) vor) + =. var (~(del by var) vor) + (blab (print leaf/"{?:(mod "var gone" "no var")} {}")) :: - %var - =+ old=(~(get by var) p.com) - =+ new=(exec q.com) + ++ eat-var + |= [vor=term gen=twig] + ^+ +> + =+ old=(~(get by var) vor) + =+ new=(exec gen) =+ mod=?~(old "new var" ?:(=(new u.old) "same var" "changed")) - =. var (~(put by var) p.com new) - [+>.$ leaf/"{mod} {}" ~] + =. var (~(put by var) vor new) + (blab (print leaf/"{mod} {}")) :: - %rvar - =+ mod=(~(has by var) p.com) - =. var (~(del by var) p.com) - [+>.$ leaf/"{?:(mod "var gone" "no var")} {}" ~] + ++ exec + |= gen=twig + %- slap :_ gen + %+ roll (~(tap by var)) + =< .(q pit) + |= [[n=term v=vase] q=vase] + (slop [[%face n p.v] q.v] q) :: - %hoon - [+>.$ (sell (exec p.com)) ~] - + ++ next-act :: rotate active task + =+ opt=[i=`(unit span)`~ t=(turn cubs |=(a=span `(unit span)`[~ a]))] + |- + ?~ t.opt ~ + ?: =(act i.opt) + i.t.opt + $(opt t.opt) :: - %comt - [+>.$ ~ ~] - == + ++ peer + |= [you=ship gal=glas] + ^+ +> + ?@ gal + %_ +>.$ + mow :_(mow [ost %give %rush %term-line prompt ~ ~]) + == + ?. (~(has by cub.hid) p.gal) +>.$ + ?: (~(has by pop) p.gal) +>.$ + =. act `p.gal + (blab ping) + :: + ++ ping (print-vase !>(*(list tank))) + ++ poke-kyev + |= [you=ship key=kyev] + ^+ +> + ?: ?=([~ @] key) (poke-txt you q.key) :: simple keypress ? + ?> ?=([[%ctrl ~ ~] @t] key) + ?+ q.key + %+ blab + [ost %give %nice ~] + (print leaf/"no command \\{(trip q.key)}") + %x =. act next-act + (blab [ost %give %nice ~] ping) + %l =+ =- tak=rose/[" " "[" "]"]^(turn cubs -) + |= a=span + leaf/(trip (rap 3 (~(got by cub.hid) a) '(' a ')' ~)) + (blab [ost give/nice/~] (print tak)) + == + :: + ++ poke-txt :: handle command + |= [you=ship txt=cord] + ^+ +> + ?: =('\\' (end 3 1 txt)) :: escaped ctrl-key + (poke-kyev you [%ctrl ~ ~] (rsh 3 1 txt)) + ?^ act :: pipe to child + %+ blab + [ost %give %nice ~] + (spam /in/[u.act] %rush %txt txt) + =+ pas=((full ~(parse from pax lat.hid)) [1 1] (trip txt)) + ?~ q.pas + (blab (print leaf/"}>")) + =+ com=(wonk pas) + => .(+>.$ (eat you com)) + =. +>.$ (blab (stash txt)) + +>.$(mow :_(mow [ost %give %nice ~])) + :: + ++ print |=(a=tank (print-vase !>(`(list tank)`[a ~]))) + ++ print-vase + |= tan=vase :: [p=p:!>(*(list tank)) q=*] + ^- (list move) + %^ spam /out %meta + :(slop !>(%rush) !>(%term-line) !>(prompt) !>(~) tan) + :: + ++ prompt + ^- [cord prom] + ?^ act + =+ por=(~(get by pot) u.act) + ?^ por u.por + [(rap 3 (~(got by cub.hid) u.act) '(' u.act ') ' ~) %text] + :_ %text + ?. &(?=([@ @ @ *] pax) =('0' &3.pax)) + (rsh 3 1 (spat pax)) + (rap 3 &1.pax '/' &2.pax '=' ?~(|3.pax ~['> '] ~[(spat |3.pax) '> '])) + :: + ++ purr + |= [cil=span fom=?(%fork %out %main) typ=type sih=sign] + ^+ +> + ?< ?=(?(%sage %verb %veer %vega) +<.sih) + ?- fom + %fork + ?> ?=(%gone +<.sih) + %_ +>.$ + mow :_(mow [ost %give %nice ~]) + act ?:(=(act [~ cil]) ~ act) + == + :: + %main + ?> ?=(?(%nice %mean) +<.sih) + (blab [ost %give +.sih] ping) + :: + %out + ?. ?=(?(%rust %rush) +<.sih) +>.$ + ?: ?=(%prompt p.sih) + ?: (~(has by pip) cil) +>.$ + =. pot (~(put by pot) cil (,[cord prom] q.sih)) + (blab ping) + %- blab + ?: (~(has by pip) cil) + (spam /in/(~(got by pip) cil) %meta (slot 3 typ sih)) + %- print-vase + ?+ p.sih + !>([(sell (slot 15 [typ sih]))]~) + %tang (slot 15 [typ sih]) + %txt + ?^ q.sih !! :: move to vase space? + !>([leaf/(trip q.sih)]~) + == + == + :: + ++ spam + |= [pax=path gip=gift] + ^- (list move) + %+ turn + (~(tap in (~(get ju pus.hid) pax))) + |=(a=bone [a %give gip]) + :: + ++ stash + |= a=cord + %^ spam /out %meta + !>([%rush %term-line `term-line`[prompt [a]~ ~]]) + -- +-- +!: +:::: formal interface + :: +|_ [hid=hide vat=axle] +:: +++ peer :: handle subscription + |= [ost=bone you=ship pax=path] + ^- [(list move) _+>] + ?~ pax `+>.$ + ?. ?=(?(%in %out) i.pax) `+>.$ + =+ ^= gal + ?: ?=(%out i.pax) %out + [%in ?<(?=(~ t.pax) i.t.pax)] + =+ abet:(peer:(ve hid ost vat) you gal) + [-< +>.$(vat ->)] +:: +++ poke-kyev :: handle key event + |= [ost=bone you=ship key=kyev] + ^- [(list move) _+>] + =+ abet:(poke-kyev:(ve hid ost vat) you key) + [-< +>.$(vat ->)] +:: +++ poke-txt :: handle command + |= [ost=bone you=ship txt=cord] + ^- [(list move) _+>] + =+ abet:(poke-txt:(ve hid ost vat) you txt) + [-< +>.$(vat ->)] :: ++ purr |= [ost=bone pax=path typ=type sih=sign] ^- [(list move) _+>] - ::~& shel-purr/pax - :: ~& [%shell-pour -.sih (,@ta +<.sih)] - ::=+ sih=((hard sign) sih) + ?: ?=(%sage +<.sih) :: vomit + [[ost %give +.sih]~ +>.$] + ?: ?=(%verb +<.sih) :: vomit + [[ost %give +.sih]~ +>.$] ?: ?=(%veer +<.sih) :: vomit [[ost %give +.sih]~ +>.$] ?: ?=(%vega +<.sih) :: vomit [[ost %give +.sih]~ +>.$] ?~ pax ~& %no-path !! - ?+ &1.pax ~& %strange-path !! - %print - `+>.$ - :: - %child - ?~ |1.pax ~& %no-child !! - ?~ |2.pax - ?> ?=(%gone +<.sih) - :- [ost %give %nice ~]~ - +>.$(act ?:(=(act [~ &2.pax]) ~ act)) - :_ +>.$ - ?+ &3.pax ~& %strange-child-path !! - %main - ?> ?=(?(%nice %mean) +<.sih) - :- [ost %give +.sih] - ::~& act - (print ost our.hid ~) - %out - ?. ?=(?(%rust %rush) +<.sih) ~ - ?: (~(has by pip) &2.pax) - :: ~& [%yay &2.pax ] - :: ~& [%spamming-to /in/(~(got by pip) &2.pax) (~(get ju pus.hid) /in/(~(got by pip) &2.pax))] - (spam /in/(~(got by pip) &2.pax) %meta (slot 3 typ sih)) - :: ~& [%nay &2.pax ] - %^ print-vase ost our.hid - ?+ p.sih - !>([(sell (slot 15 [typ sih]))]~) - %tang - (slot 15 [typ sih]) - %txt - ?^ q.sih !! :: move to vase space? - !>([leaf/(trip q.sih)]~) - == - == == -:: -++ stash - |= [a=bone b=ship c=cord] - ::~& shel-stash/[prompt c] - %^ spam /out %meta - !>([%rush %term-line `term-line`[prompt [c]~ ~]]) -:: -++ print |=([a=bone b=ship c=(list tank)] (print-vase a b !>(c))) -++ print-vase - |= [ost=bone you=ship tan=vase] :: [p=p:!>(*(list tank)) q=*] - ^- (list move) - ::~& shel-print/prompt - %^ spam /out %meta - :(slop !>(%rush) !>(%term-line) !>(prompt) !>(~) tan) -:: -++ prompt - ^- @t - ?^ act - (rap 3 (~(got by cub.hid) u.act) '(' u.act ') ' ~) - ?. &(?=([@ @ @ *] pax) =('0' &3.pax)) - (rsh 3 1 (spat pax)) - (rap 3 &1.pax '/' &2.pax '=' ?~(|3.pax ~ [(spat |3.pax)]~)) -++ exec - |= gen=twig - %- slap :_ gen - %+ roll (~(tap by var)) - =< .(q pit) - |= [[n=term v=vase] q=vase] - (slop [[%face n p.v] q.v] q) -:: -++ spam - |= [pax=path gip=gift] - ^- (list move) - %+ turn - (~(tap in (~(get ju pus.hid) pax))) - |=(a=bone [a %give gip]) + ?> ?=([%child span ?(%fork %out %main) ~] pax) + =+ abet:(purr:(ve hid ost vat) i.t.pax i.t.t.pax typ sih) + [-< +>.$(vat ->)] -- diff --git a/main/app/solid/core.hook b/main/app/solid/core.hook index b244e9b4ff..380b136214 100644 --- a/main/app/solid/core.hook +++ b/main/app/solid/core.hook @@ -17,10 +17,10 @@ [%g %gall] [%f %ford] [%a %ames] - [%b %batz] [%c %clay] [%d %dill] [%e %eyre] + [%t %time] == |- ^+ all ?~ vay all @@ -31,19 +31,21 @@ =+ gat=.*(all .*(all [0 42])) =+ nex=+:.*([-.gat [sam +>.gat]] -.gat) $(vay t.vay, all nex) - :_ ~ :_ ~ - ~& %solid-jamming - =+ pac=(jam [ken all]) - ~& %solid-finished - =+ nax=/(scot %p our.hid)/try/(scot %da lat.hid)/urbit/pill - :* [ost %pass /cp %c %info our.hid (foal nax pac)] + :~ [ost %give %sage [%urbit %pill ~] [ken all]] [ost %give %nice ~] - %+ turn (~(tap by sup.hid)) - |= [ost=bone *] - :^ ost %give %rush - :- %tang :_ ~ - leaf/"done" == +:: ~& %solid-jamming +:: =+ pac=(jam [ken all]) +:: ~& %solid-finished +:: =+ nax=/(scot %p our.hid)/try/(scot %da lat.hid)/urbit/pill +:: :* [ost %pass /cp %c %info our.hid (foal nax pac)] +:: [ost %give %nice ~] +:: %+ turn (~(tap by sup.hid)) +:: |= [ost=bone *] +:: :^ ost %give %rush +:: :- %tang :_ ~ +:: leaf/"done" +:: == ++ peer |= * diff --git a/main/app/sync/core.hook b/main/app/sync/core.hook new file mode 100644 index 0000000000..8616e61c00 --- /dev/null +++ b/main/app/sync/core.hook @@ -0,0 +1,18 @@ +!: +|_ [hid=hide ~] +++ poke-sync-args + |= [ost=bone you=ship syd=@tas her=@p sud=@tas ~] + :_ +>.$ + :* [ost %pass /sync %c %font our.hid syd her sud] + [ost %give %nice ~] + %+ turn (~(tap by sup.hid)) + |= [ost=bone *] + :^ ost %give %rush + :- %tang :_ ~ + leaf/"synced" + == +++ peer + |= + * + `+> +-- diff --git a/main/app/terminal/core.hook b/main/app/terminal/core.hook index 6afa20229d..691ded4af4 100644 --- a/main/app/terminal/core.hook +++ b/main/app/terminal/core.hook @@ -3,7 +3,7 @@ :::: /hook/core/terminal/app :: /? 314 :: need urbit 314 -/- term-line, kyev +/- term-line, term-in, term-ctrl, kyev /= stat /:/%%/:/hymn/ :: :::: structures @@ -15,24 +15,30 @@ ++ gilt :: $% [%term-line p=term-line] :: [%hymn p=manx] :: - [%json p=json] :: == :: ++ gift :: $% [%rush gilt] :: [%rust gilt] :: [%mean p=ares] :: [%nice ~] :: + [%sage p=path q=*] :: + [%verb ~] :: [%veer p=@ta q=path r=@t] :: [%vega p=path] :: == :: +++ glas ?(%term %lines) :: ++ hapt ,[p=ship q=path] :: +++ mess :: + $% [%txt p=(hypo cord)] :: + [%kyev p=(hypo kyev)] :: + == :: ++ move ,[p=bone q=(mold note gift)] :: ++ note :: $% $: %g :: $% [%cide p=span] :: [%show p=hapt q=ship r=path] :: [%sire p=term q=span] :: - [%mess p=hapt q=ship r=[?(%txt %kyev) vase]] :: + [%mess p=hapt q=ship r=mess] :: == == == :: ++ sign :: $% $: %g :: @@ -41,14 +47,17 @@ [%nice ~] :: [%rust p=%term-line q=term-line] :: [%rush p=%term-line q=term-line] :: + [%sage p=path q=*] :: + [%verb ~] :: [%veer p=@ta q=path r=@t] :: [%vega p=path] :: == == == -- -:: +!: :::: helpers :: |% +++ aut %shell ++ encode |= [a=term b=path] ^- span (rap 3 a (turn b |=(c=span (cat 3 '_' c)))) @@ -62,159 +71,184 @@ ?~ t.a man(c (weld c.man b)) man(c (turn c.man ^$(a t.a))) +:: +++ start-shell + |= [our=ship imp=path ost=bone you=ship pax=path] + ^- (list move) + =+ auc=(encode aut pax) + :- [ost %pass [%fork pax] %g %sire [aut auc]] + [ost %pass [%resp pax] %g %show [our [auc imp]] you /out]~ -- !: -:::: program +:::: per shell + :: +|% +++ se + |= [hid=hide ost=bone you=ship hiz=(map path term-line) pax=path] + =+ tel=(fall (~(get by hiz) pax) *term-line) + =+ auc=(encode aut pax) + =^ mow tel + ?: (~(has by cub.hid) auc) + [~ tel] + :- (start-shell our.hid imp.hid ost you pax) + tel(r :_(r.tel leaf/"+ {(trip aut)}")) + |% + ++ abet + ^- [(list move) (map path term-line)] + [(flop mow) (~(put by hiz) pax tel)] + :: + ++ page + %. stat + %+ inject + ~[%html %head] + ;= ;script: urb.appl = "{(trip app.hid)}" + ;script: urb.term = \{pax: "{(spud pax)}"} + == + :: + ++ peer + |= gal=glas + %_ +>.$ + mow + :_ mow + ?- gal + %term [ost %give %rust %hymn page] :: hymn front end + %lines [ost %give %rust %term-line tel] :: term-line output + == + == + :: + ++ poke + |= jof=$%([%line p=span] [%res p=span] [%cmd p=char]) + ^+ +> + ?- -.jof + %res :: restart shell + =. +>.$ + ?. (~(has by cub.hid) auc) +>.$ + %_ +>.$ + mow :_(mow [ost %pass [%fork pax] %g %cide auc]) + r.tel :_(r.tel leaf/"- {(trip aut)}") + == + %_ +>.$ + r.tel :_(r.tel leaf/"+ {(trip auc)}") + mow + ;: welp + (spam tel) + [ost %give %nice ~]~ + (start-shell our.hid imp.hid ost you pax) + mow + == + == + :: + %line :: command entered + =. r.tel + :_ r.tel + stem/[leaf/(trip p.p.tel) leaf/(trip p.jof)] + ?: =('\\' (end 3 1 p.jof)) + $(jof [%cmd (rsh 3 1 p.jof)]) + (send %txt -:!>(*cord) p.jof) + :: + %cmd :: key command + ?+ p.jof + (send %kyev -:!>(*kyev) [[%ctrl ~ ~] p.jof]) + %r $(jof [%res 'shell']) + == + == + :: + ++ poke-ctrl + .(mow :_(mow [ost %give %rush %term-line [p q ~]:tel])) + :: + ++ pour + |= [dis=?(%fork %resp %txt %kyev) sih=sign] + ^+ +> + ?- dis + %fork ?>(?=(%gone +<.sih) +>.$) :: XX maybe mean? + %resp + ?+ +<.sih !! + %nice +>.$ + ?(%rust %rush) + =. p.q.sih ?^(q.q.sih p.tel p.q.sih) :: XX prompt hack + %_ +>.$ + mow (welp (spam q.sih) mow) + tel [p.q.sih (weld q.q.sih q.tel) (weld r.q.sih r.tel)] + == + == + :: + ?(%txt %kyev) + ?+ +<.sih !! + %nice +>.$(mow :_(mow [ost %give +.sih])) + %mean + =+ ^= new + =- (turn - |=(a=tank rose/[~ "! " ~]^[a]~)) + ^- (list tank) + ?~ p.sih ~ + (welp q.u.p.sih leaf/(trip p.u.p.sih) ~) + %_ +>.$ + r.tel (welp new r.tel) + mow + %- welp :_ mow + [[ost %give +.sih] (spam [p.tel q.tel new])] + == + == + == + :: + ++ send + |= mez=mess + %_ +>.$ + mow + %- welp :_ mow + ^- (list move) + %+ murn (~(tap by cub.hid)) + |= [p=span q=term] + ?. =(pax q:(decode p)) ~ + %- some ^- move + :^ ost %pass [-.mez pax] + [%g %mess [our.hid p imp.hid] you mez] + == + :: + ++ spam + |= tol=term-line + ^- (list move) + %+ murn + (~(tap by sup.hid)) + |= [ost=bone @ paf=path] + ?: =([%lines pax] paf) + (some ost %give %rush %term-line tol) + ~ + -- +-- +!: +:::: formal interface :: |_ [hid=hide axle] -++ page - |= pax=path - %. stat - %+ inject - ~[%html %head] - ;= ;script: urb.appl = "{(trip app.hid)}" - ;script: urb.term = \{pax: "{(spud pax)}"} - == -:: ++ peer |= [ost=bone you=ship pax=path] ^- [(list move) _+>] ?~ pax $(pax /term) - ?+ -.pax !! - %lines - :_ +>.$ - :_ ~ - (jell ost t.pax) - %term - =+ tel=(fall (~(get by hiz) t.pax) *term-line) - =^ mof r.tel - =+ aut=%shell - =+ auc=(encode aut t.pax) - ?: (~(has by cub.hid) auc) - [~ r.tel] - :_ :_(r.tel leaf/"+ {(trip aut)}") - :_ [ost %pass [%hi auc mar/[t.pax]] %g %sire [aut auc]]~ - :^ ost %pass [%hi auc in/[t.pax]] - :+ %g %show - [[our.hid [auc imp.hid]] you /out] - =. hiz (~(put by hiz) t.pax tel) - :_ +>.$ - [[ost %give %rust %hymn (page t.pax)] mof] - == + ?. ?=(glas i.pax) + [[ost %give %mean ~ %bad-path ~]~ +>.$] + =+ abet:(peer:(se hid ost you hiz t.pax) i.pax) + [-< +>.$(hiz ->)] :: -++ poke-json - |= [ost=bone you=ship jon=json] +++ poke-term-in + |= [ost=bone you=ship term-in] ^- [(list move) _+>] - ::~& tem-poke/jon - =+ ^- [pax=path jof=$%([%line p=span] [%res p=span] [%cmd p=char])] - %- need - %. jon => jo - %^ ot - pax/(su ;~(pfix fas (more fas sym))) - act/(of line/so res/so cmd/so ~) - ~ - |- - =+ tel=(fall (~(get by hiz) pax) *term-line) - ?- -.jof - %res - =+ joc=(encode p.jof pax) - =^ mof r.tel - ?. (~(has by cub.hid) joc) - [~ r.tel] - :_ :_(r.tel leaf/"- {(trip p.jof)}") - [ost %pass [%hi joc mar/pax] %g %cide joc]~ - ::~& poke-sire/[jof cub.hid] - =. r.tel :_(r.tel leaf/"+ {(trip joc)}") - =. hiz (~(put by hiz) pax tel) - :_ +>.^$ - %+ welp mof - :^ [ost %give %nice ~] - :^ ost %pass [%hi joc in/[pax]] - :^ %g %show [our.hid joc imp.hid] - :- you /out - [ost %pass [%hi joc mar/pax] %g %sire [p.jof joc]] - (spam pax) - :: - %line - =. r.tel :_(r.tel rose/["> " ~ ~]^~[leaf/(trip p.tel) leaf/(trip p.jof)]) - =. hiz (~(put by hiz) pax tel) - ?: =('\\' (end 3 1 p.jof)) - $(jof [%cmd (rsh 3 1 p.jof)]) - :_ +>.^$ - (send ost you pax %txt !>(p.jof)) - %cmd - ?+ p.jof :_(+>.^$ (send ost you pax %kyev !>(`kyev`[[%ctrl ~ ~] p.jof]))) - %r $(jof [%res 'shell']) - == - == -++ send - |= [ost=bone you=ship pax=path mez=[?(%txt %kyev) vase]] - %+ murn (~(tap by cub.hid)) - |= [p=span q=term] - ?. =(pax q:(decode p)) ~ - %- some ^- move - :^ ost %pass [-.mez p (scot %da lat.hid) pax] - [%g %mess [our.hid p imp.hid] you mez] + =+ abet:(poke:(se hid ost you hiz pax) jof) + [-< +>.$(hiz ->)] :: -++ jell - |= [a=bone b=path] - [a %give %rust %json (tel-to-jon (fall (~(get by hiz) b) *term-line))] -:: -++ spam - |= pax=path - ::~& tem-spam/(~(run by hiz) |=(term-line p)) - %+ murn - (~(tap by sup.hid)) - |= [ost=bone @ paf=path] - ?. =([%lines pax] paf) ~ - (some (jell ost pax)) +++ poke-term-ctrl + |= [ost=bone you=ship col=term-ctrl] + ^- [(list move) _+>] + =+ abet:poke-ctrl:(se hid ost you hiz /) + [-< +>.$(hiz ->)] :: ++ pour |= [ost=bone pax=path sih=*] ^- [(list move) _+>] =+ sih=((hard sign) sih) - ?: ?=(?(%veer %vega) &2.sih) :: vomit + ?: ?=(?(%sage %verb %veer %vega) &2.sih) :: vomit [[ost %give +.sih]~ +>.$] - ?: ?=(%gone &2.sih) - `+>.$ - =* paf |3.pax - ?: ?=([%hi @ %in *] pax) - ?+ &2.sih !! - %nice `+>.$ - ?(%rust %rush) - =+ tol=(fall (~(get by hiz) paf) *term-line) - =. tol ?^ q.q.sih :: XX prompt hack - [p.tol (weld q.q.sih q.tol) (weld r.q.sih r.tol)] - [p.q.sih (weld q.q.sih q.tol) (weld r.q.sih r.tol)] - =. hiz (~(put by hiz) paf tol) - [(spam paf) +>.$] - == - =+ tel=(fall (~(get by hiz) paf) *term-line) - =+ old=tel - =. r.tel - ?. ?=(%mean &2.sih) r.tel - %- welp :_ r.tel - =- (turn - |=(a=tank rose/[~ "! " ~]^[a]~)) - ^- (list tank) - ?~ p.sih ~ - (welp q.u.p.sih leaf/(trip p.u.p.sih) ~) - =. hiz (~(put by hiz) paf tel) - :_ +>.$ - :- [ost %give +.sih] - ::?: =(old tel) ~ - (spam paf) -:: -++ tel-to-jon - |= tel=term-line - %- jobe - :~ [%prompt %s p.tel] - [%history %a (turn q.tel |=(a=cord [%s a]))] - :+ %lines %a - %- zing ^- (list (list json)) - %+ turn (flop r.tel) |= a=tank - ?. ?=([%rose [[%'>' %' ' ~] ~ ~] [%leaf *] [%leaf *] ~] a) - (turn (wash 0^80 a) jape) - [(jobe prompt/(jape p.i.q.a) task/(jape p.i.t.q.a) ~)]~ - == + ?~ pax !! + ?. ?=(?(%fork %resp %txt %kyev) i.pax) !! + =+ abet:(pour:(se hid ost our.hid hiz t.pax) i.pax sih) + [-< +>.$(hiz ->)] -- diff --git a/main/app/terminal/hymn/script.js b/main/app/terminal/hymn/script.js index 8f50498dfb..817cb73f97 100644 --- a/main/app/terminal/hymn/script.js +++ b/main/app/terminal/hymn/script.js @@ -1,7 +1,7 @@ function jpok(a,b){ var dat = {pax:urb.term.pax, act:{}} dat.act[a] = b - urb.send({data:dat}, function(e,dat){ + urb.send({data:dat,mark:"term-in"}, function(e,dat){ if(a === 'line' && dat.data.err){ hist.unshift(prom.val()) prom.val(b) @@ -81,19 +81,19 @@ $(function() { if(urb.term.pax != "/") pax += urb.term.pax urb.subscribe({path: pax}, function(e, dat){ if(dat.data.ok) return; - hist = dat.data.history + hist = dat.data.history.concat(hist) hind = 0 - cont.innerHTML = '' + // cont.innerHTML = '' for(var i in dat.data.lines){ var lom = dat.data.lines[i] if(typeof lom == 'string') $(cont).append($('
').text(lom)) else { - $(cont).append($('').text(lom.prompt + '> '), + $(cont).append($('').text(lom.prompt), $('
').text(lom.task)) } } window.scrollTo(0,document.body.scrollHeight) - prem.textContent = dat.data.prompt + '> ' + prem.textContent = dat.data.prompt }) }); diff --git a/main/app/ticket/core.hook b/main/app/ticket/core.hook new file mode 100644 index 0000000000..6bb623da2a --- /dev/null +++ b/main/app/ticket/core.hook @@ -0,0 +1,33 @@ +!: +|_ [hid=hide ~] +++ poke-ticket-args + |= [ost=bone you=ship her=@p num=?(~ [p=@ud ~])] + :_ +>.$ + =+ n=?~(num 1 p.num) + =+ ^= sep ^- @ + =+ mir=(clan her) + ?+ mir ~|(%ticket-clan !!) + %king (bex 8) + %duke (bex 16) + %earl (bex 32) + == + :- [ost %give %nice ~] + |- + ?: ?=(0 n) ~ + =+ ^= tic + (,@p .^(%a (scot %p our.hid) %tick (scot %da lat.hid) (scot %p her) ~)) + %+ welp + (spam ost "{}: {}") + $(her (add sep her), n (dec n)) +++ spam + |= [ost=bone msg=tape] + %+ turn (~(tap by sup.hid)) + |= [ost=bone *] + :^ ost %give %rush + :- %tang :_ ~ + leaf/msg +++ peer + |= + * + `+> +-- diff --git a/main/app/unsync/core.hook b/main/app/unsync/core.hook new file mode 100644 index 0000000000..ad506023fa --- /dev/null +++ b/main/app/unsync/core.hook @@ -0,0 +1,18 @@ +!: +|_ [hid=hide ~] +++ poke-unsync-args + |= [ost=bone you=ship syd=@tas her=@p sud=@tas ~] + :_ +>.$ + :* [ost %pass /sync %c %plug our.hid syd her sud] + [ost %give %nice ~] + %+ turn (~(tap by sup.hid)) + |= [ost=bone *] + :^ ost %give %rush + :- %tang :_ ~ + leaf/"unsynced" + == +++ peer + |= + * + `+> +-- diff --git a/main/app/verb/core.hook b/main/app/verb/core.hook new file mode 100644 index 0000000000..4a3151dd68 --- /dev/null +++ b/main/app/verb/core.hook @@ -0,0 +1,13 @@ +!: +|_ [hid=hide ~] +++ poke-verb-args + |= [ost=bone you=ship ~] + :_ +>.$ + :~ [ost %give %verb ~] + [ost %give %nice ~] + == +++ peer + |= + * + `+> +-- diff --git a/main/bin/solid.hoon b/main/bin/solid.hoon index 2139f33f51..a52f8128fd 100644 --- a/main/bin/solid.hoon +++ b/main/bin/solid.hoon @@ -24,7 +24,6 @@ :~ [%$ %zuse] [%f %ford] [%a %ames] - [%b %batz] [%c %clay] [%d %dill] [%e %eyre] diff --git a/main/mar/begin-args/door.hook b/main/mar/begin-args/door.hook new file mode 100644 index 0000000000..cd6cabfaec --- /dev/null +++ b/main/mar/begin-args/door.hook @@ -0,0 +1,15 @@ +:: +:::: /hoon/core/zing/pro + :: +/? 314 +/- begin-args +|_ arg=begin-args +:: +++ grab :: convert from + |% + ++ noun :: convert from %noun + |= src=* + ^+ +>+ + +>+(arg (begin-args src)) + -- +-- diff --git a/main/mar/sync-args/door.hook b/main/mar/sync-args/door.hook new file mode 100644 index 0000000000..a6266cabcc --- /dev/null +++ b/main/mar/sync-args/door.hook @@ -0,0 +1,15 @@ +:: +:::: /hoon/core/zing/pro + :: +/? 314 +/- sync-args +|_ arg=sync-args +:: +++ grab :: convert from + |% + ++ noun :: convert from %noun + |= src=* + ^+ +>+ + +>+(arg (sync-args src)) + -- +-- diff --git a/main/mar/term-in/door.hook b/main/mar/term-in/door.hook new file mode 100644 index 0000000000..765db215ba --- /dev/null +++ b/main/mar/term-in/door.hook @@ -0,0 +1,21 @@ +:: +:::: /hook/door/term-in/mar + :: +/? 314 +/- term-in +!: +|_ term-in +:: +++ grab :: convert from + |% + ++ json + |= jon=^json + %- need + %. jon => jo + %^ ot + pax/(su ;~(pfix fas (more fas sym))) + act/(of line/so res/so cmd/so ~) + ~ + ++ noun term-in :: clam from %noun + -- +-- diff --git a/main/mar/term-line/door.hook b/main/mar/term-line/door.hook index 4547e1a6b0..76f3c5496b 100644 --- a/main/mar/term-line/door.hook +++ b/main/mar/term-line/door.hook @@ -9,4 +9,19 @@ |% ++ noun term-line :: clam from %noun -- +:: +++ grow + |% + ++ json + %- jobe + :~ [%prompt %s p.p.tel] + [%history %a (turn q.tel |=(a=cord [%s a]))] + :+ %lines %a + %- zing ^- (list (list ^json)) + %+ turn (flop r.tel) |= a=?(tank [%stem p=tank q=tank]) + ?. ?=(%stem -.a) + (turn (wash 0^80 a) jape) + [(jobe prompt/(jape ~(ram re p.a)) task/(jape ~(ram re q.a)) ~)]~ + == + -- -- diff --git a/main/mar/ticket-args/door.hook b/main/mar/ticket-args/door.hook new file mode 100644 index 0000000000..c21567edcd --- /dev/null +++ b/main/mar/ticket-args/door.hook @@ -0,0 +1,15 @@ +:: +:::: /hoon/core/zing/pro + :: +/? 314 +/- ticket-args +|_ arg=ticket-args +:: +++ grab :: convert from + |% + ++ noun :: convert from %noun + |= src=* + ^+ +>+ + +>+(arg (ticket-args src)) + -- +-- diff --git a/main/mar/unsync-args/door.hook b/main/mar/unsync-args/door.hook new file mode 100644 index 0000000000..15f8f73cec --- /dev/null +++ b/main/mar/unsync-args/door.hook @@ -0,0 +1,15 @@ +:: +:::: /hoon/core/zing/pro + :: +/? 314 +/- unsync-args +|_ arg=unsync-args +:: +++ grab :: convert from + |% + ++ noun :: convert from %noun + |= src=* + ^+ +>+ + +>+(arg (unsync-args src)) + -- +-- diff --git a/main/mar/verb-args/door.hook b/main/mar/verb-args/door.hook new file mode 100644 index 0000000000..9f5cf3972f --- /dev/null +++ b/main/mar/verb-args/door.hook @@ -0,0 +1,15 @@ +:: +:::: /hoon/core/zing/pro + :: +/? 314 +/- verb-args +|_ arg=verb-args +:: +++ grab :: convert from + |% + ++ noun :: convert from %noun + |= src=* + ^+ +>+ + +>+(arg (verb-args src)) + -- +-- diff --git a/main/mar/will/door.hook b/main/mar/will/door.hook new file mode 100644 index 0000000000..e6145a2993 --- /dev/null +++ b/main/mar/will/door.hook @@ -0,0 +1,11 @@ +:: +:::: /hook/door/will/mar + :: +/? 314 +|_ wyl=will +:: +++ grab :: convert from + |% + ++ noun will :: clam from %noun + -- +-- diff --git a/main/sur/bang-args/gate.hook b/main/sur/bang-args/gate.hook new file mode 100644 index 0000000000..58320dab63 --- /dev/null +++ b/main/sur/bang-args/gate.hook @@ -0,0 +1 @@ +,[mov=(mold) ~] diff --git a/main/sur/begin-args/gate.hook b/main/sur/begin-args/gate.hook new file mode 100644 index 0000000000..476e9abed0 --- /dev/null +++ b/main/sur/begin-args/gate.hook @@ -0,0 +1 @@ +(list) diff --git a/main/sur/sync-args/gate.hook b/main/sur/sync-args/gate.hook new file mode 100644 index 0000000000..7f395c2903 --- /dev/null +++ b/main/sur/sync-args/gate.hook @@ -0,0 +1 @@ +,[syd=@tas her=@p sud=@tas ~] diff --git a/main/sur/term-ctrl/gate.hook b/main/sur/term-ctrl/gate.hook new file mode 100644 index 0000000000..31b413aa2b --- /dev/null +++ b/main/sur/term-ctrl/gate.hook @@ -0,0 +1 @@ +,%hail diff --git a/main/sur/term-in/gate.hook b/main/sur/term-in/gate.hook new file mode 100644 index 0000000000..32b45d781a --- /dev/null +++ b/main/sur/term-in/gate.hook @@ -0,0 +1 @@ +,[pax=path jof=$%([%line p=span] [%res p=span] [%cmd p=char])] diff --git a/main/sur/term-line/gate.hook b/main/sur/term-line/gate.hook index c48af45cc7..3ba76521d3 100644 --- a/main/sur/term-line/gate.hook +++ b/main/sur/term-line/gate.hook @@ -1 +1 @@ -,[p=cord q=(list cord) r=(list tank)] +,[p=[p=cord q=prom] q=(list cord) r=(list ?(tank [%stem p=tank q=tank]))] diff --git a/main/sur/ticket-args/gate.hook b/main/sur/ticket-args/gate.hook new file mode 100644 index 0000000000..386810df9f --- /dev/null +++ b/main/sur/ticket-args/gate.hook @@ -0,0 +1 @@ +,[her=@p num=?(~ [p=@ud ~])] diff --git a/main/sur/unsync-args/gate.hook b/main/sur/unsync-args/gate.hook new file mode 100644 index 0000000000..7f395c2903 --- /dev/null +++ b/main/sur/unsync-args/gate.hook @@ -0,0 +1 @@ +,[syd=@tas her=@p sud=@tas ~] diff --git a/main/sur/verb-args/gate.hook b/main/sur/verb-args/gate.hook new file mode 100644 index 0000000000..28697c73ad --- /dev/null +++ b/main/sur/verb-args/gate.hook @@ -0,0 +1 @@ +,[~]