mirror of
https://github.com/tloncorp/landscape.git
synced 2024-11-24 09:42:26 +03:00
garden: remaining diff from urbit/urbit
This commit is contained in:
parent
032de423fb
commit
e98001be31
@ -1,10 +1,10 @@
|
||||
:~ title+'System'
|
||||
info+'An app launcher for Urbit.'
|
||||
color+0xee.5432
|
||||
glob-http+['https://bootstrap.urbit.org/glob-0v5.e2g06.s8l10.s89r5.bmb8j.o6l70.glob' 0v5.e2g06.s8l10.s89r5.bmb8j.o6l70]
|
||||
glob-http+['https://bootstrap.urbit.org/glob-0vm65f9.defur.eqhgj.62ls6.9v9lf.glob' 0vm65f9.defur.eqhgj.62ls6.9v9lf]
|
||||
::glob-ames+~zod^0v0
|
||||
base+'grid'
|
||||
version+[1 2 0]
|
||||
version+[1 1 6]
|
||||
website+'https://tlon.io'
|
||||
license+'MIT'
|
||||
==
|
||||
|
@ -66,7 +66,7 @@
|
||||
::
|
||||
++ rest
|
||||
|= p=@da
|
||||
(arvo %b %wait p)
|
||||
(arvo %b %rest p)
|
||||
::
|
||||
++ warp
|
||||
|= [wer=ship =riff:clay]
|
||||
@ -85,6 +85,9 @@
|
||||
?:(?=(%sing genre) [genre mood] [genre mood])
|
||||
(warp-our q.byk.bowl `rave)
|
||||
::
|
||||
++ tire
|
||||
(arvo %c %tire `~)
|
||||
::
|
||||
++ connect
|
||||
|= [=binding:eyre app=term]
|
||||
(arvo %e %connect binding app)
|
||||
|
@ -11,7 +11,7 @@
|
||||
|%
|
||||
++ prefixes
|
||||
^- (map network tape)
|
||||
(my [[%main "bc"] [%testnet "tb"] ~])
|
||||
(my [[%main "bc"] [%testnet "tb"] [%regtest "bcrt"] ~])
|
||||
++ charset "qpzry9x8gf2tvdw0s3jn54khce6mua7l"
|
||||
+$ raw-decoded [hrp=tape data=(list @) checksum=(list @)]
|
||||
:: below is a port of: https://github.com/bitcoinjs/bech32/blob/master/index.js
|
||||
|
@ -56,6 +56,8 @@
|
||||
1^0x0
|
||||
%testnet
|
||||
1^0x1
|
||||
%regtest
|
||||
1^0x1
|
||||
==
|
||||
:- (cat:byt ~[1^typ pubkey.h])
|
||||
%- cat:byt
|
||||
|
@ -1,188 +1 @@
|
||||
|%
|
||||
+$ card card:agent:gall
|
||||
+$ input
|
||||
$% [%poke =cage]
|
||||
[%sign =wire =sign-arvo]
|
||||
[%agent =wire =sign:agent:gall]
|
||||
[%watch =path]
|
||||
==
|
||||
+$ strand-input [=bowl in=(unit input)]
|
||||
+$ tid @tatid
|
||||
+$ bowl
|
||||
$: our=ship
|
||||
src=ship
|
||||
tid=tid
|
||||
mom=(unit tid)
|
||||
wex=boat:gall
|
||||
sup=bitt:gall
|
||||
eny=@uvJ
|
||||
now=@da
|
||||
byk=beak
|
||||
==
|
||||
::
|
||||
:: cards: cards to send immediately. These will go out even if a
|
||||
:: later stage of the computation fails, so they shouldn't have
|
||||
:: any semantic effect on the rest of the system.
|
||||
:: Alternately, they may record an entry in contracts with
|
||||
:: enough information to undo the effect if the computation
|
||||
:: fails.
|
||||
:: wait: don't move on, stay here. The next sign should come back
|
||||
:: to this same callback.
|
||||
:: skip: didn't expect this input; drop it down to be handled
|
||||
:: elsewhere
|
||||
:: cont: continue computation with new callback.
|
||||
:: fail: abort computation; don't send effects
|
||||
:: done: finish computation; send effects
|
||||
::
|
||||
++ strand-output-raw
|
||||
|* a=mold
|
||||
$~ [~ %done *a]
|
||||
$: cards=(list card)
|
||||
$= next
|
||||
$% [%wait ~]
|
||||
[%skip ~]
|
||||
[%cont self=(strand-form-raw a)]
|
||||
[%fail err=(pair term tang)]
|
||||
[%done value=a]
|
||||
==
|
||||
==
|
||||
::
|
||||
++ strand-form-raw
|
||||
|* a=mold
|
||||
$-(strand-input (strand-output-raw a))
|
||||
::
|
||||
:: Abort strand computation with error message
|
||||
::
|
||||
++ strand-fail
|
||||
|= err=(pair term tang)
|
||||
|= strand-input
|
||||
[~ %fail err]
|
||||
::
|
||||
:: Asynchronous transcaction monad.
|
||||
::
|
||||
:: Combo of four monads:
|
||||
:: - Reader on input
|
||||
:: - Writer on card
|
||||
:: - Continuation
|
||||
:: - Exception
|
||||
::
|
||||
++ strand
|
||||
|* a=mold
|
||||
|%
|
||||
++ output (strand-output-raw a)
|
||||
::
|
||||
:: Type of an strand computation.
|
||||
::
|
||||
++ form (strand-form-raw a)
|
||||
::
|
||||
:: Monadic pure. Identity computation for bind.
|
||||
::
|
||||
++ pure
|
||||
|= arg=a
|
||||
^- form
|
||||
|= strand-input
|
||||
[~ %done arg]
|
||||
::
|
||||
:: Monadic bind. Combines two computations, associatively.
|
||||
::
|
||||
++ bind
|
||||
|* b=mold
|
||||
|= [m-b=(strand-form-raw b) fun=$-(b form)]
|
||||
^- form
|
||||
|= input=strand-input
|
||||
=/ b-res=(strand-output-raw b)
|
||||
(m-b input)
|
||||
^- output
|
||||
:- cards.b-res
|
||||
?- -.next.b-res
|
||||
%wait [%wait ~]
|
||||
%skip [%skip ~]
|
||||
%cont [%cont ..$(m-b self.next.b-res)]
|
||||
%fail [%fail err.next.b-res]
|
||||
%done [%cont (fun value.next.b-res)]
|
||||
==
|
||||
::
|
||||
:: The strand monad must be evaluted in a particular way to maintain
|
||||
:: its monadic character. +take:eval implements this.
|
||||
::
|
||||
++ eval
|
||||
|%
|
||||
:: Indelible state of a strand
|
||||
::
|
||||
+$ eval-form
|
||||
$: =form
|
||||
==
|
||||
::
|
||||
:: Convert initial form to eval-form
|
||||
::
|
||||
++ from-form
|
||||
|= =form
|
||||
^- eval-form
|
||||
form
|
||||
::
|
||||
:: The cases of results of +take
|
||||
::
|
||||
+$ eval-result
|
||||
$% [%next ~]
|
||||
[%fail err=(pair term tang)]
|
||||
[%done value=a]
|
||||
==
|
||||
::
|
||||
++ validate-mark
|
||||
|= [in=* =mark =bowl]
|
||||
^- cage
|
||||
=+ .^ =dais:clay %cb
|
||||
/(scot %p our.bowl)/[q.byk.bowl]/(scot %da now.bowl)/[mark]
|
||||
==
|
||||
=/ res (mule |.((vale.dais in)))
|
||||
?: ?=(%| -.res)
|
||||
~|(%spider-mark-fail (mean leaf+"spider: ames vale fail {<mark>}" p.res))
|
||||
[mark p.res]
|
||||
::
|
||||
:: Take a new sign and run the strand against it
|
||||
::
|
||||
++ take
|
||||
:: cards: accumulate throughout recursion the cards to be
|
||||
:: produced now
|
||||
=| cards=(list card)
|
||||
|= [=eval-form =strand-input]
|
||||
^- [[(list card) =eval-result] _eval-form]
|
||||
=* take-loop $
|
||||
=. in.strand-input
|
||||
?~ in.strand-input ~
|
||||
=/ in u.in.strand-input
|
||||
?. ?=(%agent -.in) `in
|
||||
?. ?=(%fact -.sign.in) `in
|
||||
::
|
||||
:- ~
|
||||
:+ %agent wire.in
|
||||
[%fact (validate-mark q.q.cage.sign.in p.cage.sign.in bowl.strand-input)]
|
||||
:: run the strand callback
|
||||
::
|
||||
=/ =output (form.eval-form strand-input)
|
||||
:: add cards to cards
|
||||
::
|
||||
=. cards
|
||||
%+ welp
|
||||
cards
|
||||
:: XX add tag to wires?
|
||||
cards.output
|
||||
:: case-wise handle next steps
|
||||
::
|
||||
?- -.next.output
|
||||
%wait [[cards %next ~] eval-form]
|
||||
%skip [[cards %next ~] eval-form]
|
||||
%fail [[cards %fail err.next.output] eval-form]
|
||||
%done [[cards %done value.next.output] eval-form]
|
||||
%cont
|
||||
:: recurse to run continuation with initialization input
|
||||
::
|
||||
%_ take-loop
|
||||
form.eval-form self.next.output
|
||||
strand-input [bowl.strand-input ~]
|
||||
==
|
||||
==
|
||||
--
|
||||
--
|
||||
--
|
||||
::
|
||||
rand
|
||||
|
@ -433,7 +433,6 @@
|
||||
%- pure:m
|
||||
?~ full-file.client-response ''
|
||||
q.data.u.full-file.client-response
|
||||
|
||||
::
|
||||
++ fetch-cord
|
||||
|= url=tape
|
||||
|
@ -38,7 +38,39 @@
|
||||
=/ b (mule a)
|
||||
?- -.b
|
||||
%| ~
|
||||
%& [leaf+"expected failure - succeeded" ~]
|
||||
%& ['expected failure - succeeded' ~]
|
||||
==
|
||||
:: +expect-runs: kicks a trap, expecting success; returns trace on failure
|
||||
::
|
||||
++ expect-success
|
||||
|= a=(trap)
|
||||
^- tang
|
||||
=/ b (mule a)
|
||||
?- -.b
|
||||
%& ~
|
||||
%| ['expected success - failed' p.b]
|
||||
==
|
||||
:: $a-test-chain: a sequence of tests to be run
|
||||
::
|
||||
:: NB: arms shouldn't start with `test-` so that `-test % ~` runs
|
||||
::
|
||||
+$ a-test-chain
|
||||
$_
|
||||
|?
|
||||
?: =(0 0)
|
||||
[%& p=*tang]
|
||||
[%| p=[tang=*tang next=^?(..$)]]
|
||||
:: +run-chain: run a sequence of tests, stopping at first failure
|
||||
::
|
||||
++ run-chain
|
||||
|= seq=a-test-chain
|
||||
^- tang
|
||||
=/ res $:seq
|
||||
?- -.res
|
||||
%& p.res
|
||||
%| ?. =(~ tang.p.res)
|
||||
tang.p.res
|
||||
$(seq next.p.res)
|
||||
==
|
||||
:: +category: prepends a name to an error result; passes successes unchanged
|
||||
::
|
||||
|
@ -1,18 +1,28 @@
|
||||
=/ weft ,[lal=@tas num=@ud] :: TODO remove after merge
|
||||
|_ kel=weft
|
||||
|_ kal=waft:clay
|
||||
++ grow
|
||||
|%
|
||||
++ mime `^mime`[/text/x-kelvin (as-octs:mimes:html hoon)]
|
||||
++ noun kel
|
||||
++ hoon (crip "{<[lal num]:kel>}\0a")
|
||||
++ noun kal
|
||||
++ hoon
|
||||
%+ rap 3
|
||||
%+ turn
|
||||
%+ sort
|
||||
~(tap in (waft-to-wefts:clay kal))
|
||||
|= [a=weft b=weft]
|
||||
?: =(lal.a lal.b)
|
||||
(gte num.a num.b)
|
||||
(gte lal.a lal.b)
|
||||
|= =weft
|
||||
(rap 3 '[%' (scot %tas lal.weft) ' ' (scot %ud num.weft) ']\0a' ~)
|
||||
::
|
||||
++ txt (to-wain:format hoon)
|
||||
--
|
||||
++ grab
|
||||
|%
|
||||
++ noun weft
|
||||
++ noun waft:clay
|
||||
++ mime
|
||||
|= [=mite len=@ud tex=@]
|
||||
!<(weft (slap !>(~) (ream tex)))
|
||||
(cord-to-waft:clay tex)
|
||||
--
|
||||
++ grad %noun
|
||||
--
|
||||
|
@ -4,7 +4,7 @@
|
||||
:: chyg: whether account is (non-)change. 0 or 1
|
||||
:: bytc: "btc-byts" with dat cast to @ux
|
||||
|%
|
||||
+$ network ?(%main %testnet)
|
||||
+$ network ?(%main %testnet %regtest)
|
||||
+$ hexb [wid=@ dat=@ux] :: hex byts
|
||||
+$ bits [wid=@ dat=@ub]
|
||||
+$ xpub @ta
|
||||
|
@ -1,147 +1,125 @@
|
||||
=, clay
|
||||
=* dude dude:gall
|
||||
|%
|
||||
:: $snap: kiln snapshot
|
||||
::
|
||||
+$ snap (map desk arak)
|
||||
:: $diff: subscription update
|
||||
::
|
||||
+$ diff
|
||||
$% [%block =desk =arak =weft blockers=(set desk)]
|
||||
[%reset =desk =arak]
|
||||
[%commit =desk =arak]
|
||||
[%merge-sunk =desk =arak =tang]
|
||||
[%merge-fail =desk =arak =tang]
|
||||
[%suspend =desk =arak]
|
||||
[%revive =desk =arak]
|
||||
+$ pike
|
||||
$: sync=(unit [=ship =desk])
|
||||
hash=@uv
|
||||
=zest
|
||||
wic=(set weft)
|
||||
==
|
||||
:: $arak: foreign vat tracker
|
||||
::
|
||||
:: .rail: upstream tracking state, if any
|
||||
:: .rein: configuration for agents
|
||||
+$ pikes (map desk pike)
|
||||
::
|
||||
+$ arak
|
||||
$: rail=(unit rail)
|
||||
=rein
|
||||
==
|
||||
:: $rail: upstream tracking state
|
||||
::
|
||||
:: .publisher: Ship that originally published desk, if available
|
||||
:: .paused: is tracking paused? or live
|
||||
:: .ship: upstream ship (could be .our)
|
||||
:: .desk: name of upstream desk
|
||||
:: .aeon: next aeon to pull from upstream
|
||||
:: .next: list of pending commits with future kelvins
|
||||
::
|
||||
+$ rail
|
||||
$: publisher=(unit ship)
|
||||
paused=?
|
||||
=ship
|
||||
=desk
|
||||
=aeon
|
||||
next=(list rung)
|
||||
==
|
||||
:: $rung: reference to upstream commit
|
||||
::
|
||||
+$ rung [=aeon =weft]
|
||||
:: $rein: diff from desk manifest
|
||||
::
|
||||
:: .liv: suspended? if suspended, no agents should run
|
||||
:: .add: agents not in manifest that should be running
|
||||
:: .sub: agents in manifest that should not be running
|
||||
+$ sync-state [nun=@ta kid=(unit desk) let=@ud]
|
||||
+$ sink (unit [her=@p sud=desk kid=(unit desk) let=@ud])
|
||||
:: +report-prep: get data required for reports
|
||||
::
|
||||
+$ rein
|
||||
$: liv=_&
|
||||
add=(set dude)
|
||||
sub=(set dude)
|
||||
++ report-prep
|
||||
|= [our=@p now=@da]
|
||||
=/ ego (scot %p our)
|
||||
=/ wen (scot %da now)
|
||||
:* .^(rock:tire %cx /(scot %p our)//(scot %da now)/tire)
|
||||
.^(=cone %cx /(scot %p our)//(scot %da now)/domes)
|
||||
.^((map desk [ship desk]) %gx /[ego]/hood/[wen]/kiln/sources/noun)
|
||||
.^ (map [desk ship desk] sync-state) %gx
|
||||
/[ego]/hood/[wen]/kiln/syncs/noun
|
||||
==
|
||||
==
|
||||
::
|
||||
+$ vat [=desk hash=@uv =cass =arak]
|
||||
:: +report-vats: report on all desk installations
|
||||
::
|
||||
++ report-vats
|
||||
|= [our=@p now=@da]
|
||||
^- tang
|
||||
=+ .^ raz=(list vat)
|
||||
%gx /(scot %p our)/hood/(scot %da now)/kiln/vats/noun
|
||||
==
|
||||
:- (report-kids our now)
|
||||
(turn raz |=(v=vat (report-vat our now v)))
|
||||
=/ desks .^((set desk) %cd /(scot %p our)/base/(scot %da now))
|
||||
=/ prep (report-prep our now)
|
||||
%+ turn ~(tap in desks)
|
||||
|=(syd=desk (report-vat prep our now syd))
|
||||
:: +report-vat: report on a single desk installation
|
||||
::
|
||||
++ report-vat
|
||||
|= [our=ship now=@da vat]
|
||||
|= $: $: tyr=rock:tire =cone sor=(map desk [ship desk])
|
||||
zyn=(map [desk ship desk] sync-state)
|
||||
==
|
||||
our=ship now=@da syd=desk
|
||||
==
|
||||
^- tank
|
||||
=/ ego (scot %p our)
|
||||
=/ wen (scot %da now)
|
||||
=+ .^(=cass %cw /[ego]/[syd]/[wen])
|
||||
?: =(ud.cass 0)
|
||||
leaf+"desk does not yet exist: {<desk>}"
|
||||
leaf+"desk does not yet exist: {<syd>}"
|
||||
?: =(%kids syd)
|
||||
=+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
|
||||
leaf+"%kids %cz hash: {<hash>}"
|
||||
=/ kel-path
|
||||
/(scot %p our)/[desk]/(scot %da now)/sys/kelvin
|
||||
/[ego]/[syd]/[wen]/sys/kelvin
|
||||
?. .^(? %cu kel-path)
|
||||
leaf+"bad desk: {<desk>}"
|
||||
=+ .^(=weft %cx kel-path)
|
||||
:+ %rose ["" "{<desk>}" "::"]
|
||||
leaf+"bad desk: {<syd>}"
|
||||
=+ .^(=waft %cx kel-path)
|
||||
:+ %rose ["" "{<syd>}" "::"]
|
||||
^- tang
|
||||
=/ meb (mergebase-hashes our desk now arak)
|
||||
=/ poz
|
||||
?~ rail.arak "local"
|
||||
?:(paused.u.rail.arak "paused" "tracking")
|
||||
=/ sat ?:(liv.rein.arak "running" "suspended")
|
||||
=/ pen
|
||||
?~ rail.arak "~"
|
||||
<(turn next.u.rail.arak |=([@ lal=@tas num=@] [lal num]))>
|
||||
:~ leaf/"/sys/kelvin: {<[lal num]:weft>}"
|
||||
=/ hash .^(@uv %cz /[ego]/[syd]/[wen])
|
||||
=/ =sink
|
||||
?~ s=(~(get by sor) syd)
|
||||
~
|
||||
?~ z=(~(get by zyn) syd u.s)
|
||||
~
|
||||
`[-.u.s +.u.s +.u.z]
|
||||
=/ meb=(list @uv)
|
||||
?~ sink [hash]~
|
||||
(mergebase-hashes our syd now her.u.sink sud.u.sink)
|
||||
=/ dek (~(got by tyr) syd)
|
||||
=/ =foam (~(got by cone) our syd)
|
||||
=/ [on=(list [@tas ?]) of=(list [@tas ?])]
|
||||
(skid ~(tap by ren.foam) |=([* ?] +<+))
|
||||
=/ sat
|
||||
?- zest.dek
|
||||
%live "running"
|
||||
%dead "suspended"
|
||||
%held "suspended until next update"
|
||||
==
|
||||
=/ kul=tape
|
||||
%+ roll
|
||||
%+ sort
|
||||
~(tap in (waft-to-wefts:clay waft))
|
||||
|= [a=weft b=weft]
|
||||
?: =(lal.a lal.b)
|
||||
(lte num.a num.b)
|
||||
(lte lal.a lal.b)
|
||||
|= [=weft =tape]
|
||||
(welp " {<[lal num]:weft>}" tape)
|
||||
:~ leaf/"/sys/kelvin: {kul}"
|
||||
leaf/"base hash: {?.(=(1 (lent meb)) <meb> <(head meb)>)}"
|
||||
leaf/"%cz hash: {<hash>}"
|
||||
::
|
||||
leaf/"app status: {sat}"
|
||||
leaf/"force on: {?:(=(~ add.rein.arak) "~" <add.rein.arak>)}"
|
||||
leaf/"force off: {?:(=(~ sub.rein.arak) "~" <sub.rein.arak>)}"
|
||||
leaf/"force on: {?:(=(~ on) "~" <on>)}"
|
||||
leaf/"force off: {?:(=(~ of) "~" <of>)}"
|
||||
::
|
||||
leaf/"publishing ship: {?~(rail.arak <~> <publisher.u.rail.arak>)}"
|
||||
leaf/"updates: {poz}"
|
||||
leaf/"source ship: {?~(rail.arak <~> <ship.u.rail.arak>)}"
|
||||
leaf/"source desk: {?~(rail.arak <~> <desk.u.rail.arak>)}"
|
||||
leaf/"source aeon: {?~(rail.arak <~> <aeon.u.rail.arak>)}"
|
||||
leaf/"pending updates: {pen}"
|
||||
leaf/"publishing ship: {?~(sink <~> <(get-publisher our syd now)>)}"
|
||||
leaf/"updates: {?~(sink "local" "remote")}"
|
||||
leaf/"source ship: {?~(sink <~> <her.u.sink>)}"
|
||||
leaf/"source desk: {?~(sink <~> <sud.u.sink>)}"
|
||||
leaf/"source aeon: {?~(sink <~> <let.u.sink>)}"
|
||||
leaf/"kids desk: {?~(sink <~> ?~(kid.u.sink <~> <u.kid.u.sink>))}"
|
||||
leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
|
||||
==
|
||||
:: +report-kids: non-vat cz hash report for kids desk
|
||||
::
|
||||
++ report-kids
|
||||
|= [our=ship now=@da]
|
||||
^- tank
|
||||
=/ dek %kids
|
||||
=/ syd %kids
|
||||
=/ ego (scot %p our)
|
||||
=/ wen (scot %da now)
|
||||
?. (~(has in .^((set desk) %cd /[ego]//[wen])) dek)
|
||||
?. (~(has in .^((set desk) %cd /[ego]//[wen])) syd)
|
||||
leaf/"no %kids desk"
|
||||
=+ .^(hash=@uv %cz /[ego]/[dek]/[wen])
|
||||
=+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
|
||||
leaf/"%kids %cz hash: {<hash>}"
|
||||
:: +read-kelvin-foreign: read /sys/kelvin from a foreign desk
|
||||
::
|
||||
++ read-kelvin-foreign
|
||||
|= [=ship =desk =aeon]
|
||||
^- weft
|
||||
~| read-foreign-kelvin/+<
|
||||
=/ her (scot %p ship)
|
||||
=/ syd (scot %tas desk)
|
||||
=/ yon (scot %ud aeon)
|
||||
::
|
||||
=/ dom .^(dome cv/~[her syd yon])
|
||||
=/ tak (scot %uv (~(got by hit.dom) let.dom))
|
||||
=/ yak .^(yaki cs/~[her syd yon %yaki tak])
|
||||
=/ lob (scot %uv (~(got by q.yak) /sys/kelvin))
|
||||
=/ peg .^(page cs/~[her syd yon %blob lob])
|
||||
;;(weft q.peg)
|
||||
:: +read-kelvin-local: read /sys/kelvin from a local desk
|
||||
::
|
||||
++ read-kelvin-local
|
||||
|= [our=ship =desk now=@da]
|
||||
^- (unit weft)
|
||||
~| read-kelvin-local+desk
|
||||
=/ pax (en-beam [our desk da+now] /sys/kelvin)
|
||||
?. .^(? cu/pax)
|
||||
~
|
||||
[~ .^(weft cx/pax)]
|
||||
:: +read-bill-foreign: read /desk/bill from a foreign desk
|
||||
::
|
||||
++ read-bill-foreign
|
||||
@ -169,21 +147,6 @@
|
||||
?. .^(? cu/pax)
|
||||
*(list dude)
|
||||
.^((list dude) cx/pax)
|
||||
:: +adjust-dudes: which agents should be started and stopped
|
||||
::
|
||||
:: Will ask Gall to start agents that it's already running
|
||||
:: but that should be ok, and might be safer in case other
|
||||
:: unprocessed moves would have turned them off.
|
||||
::
|
||||
++ adjust-dudes
|
||||
|= $: local=[our=ship =desk now=@da]
|
||||
=rein
|
||||
==
|
||||
^- [jolt=(list dude) idle=(list dude)]
|
||||
=/ all=(list dude) (read-bill local)
|
||||
=/ want (get-apps-want local all rein)
|
||||
=/ have (get-apps-live local)
|
||||
[want (skip have ~(has in (sy want)))]
|
||||
::
|
||||
++ get-remote-diff
|
||||
|= [our=ship here=desk now=@da her=ship there=desk when=aeon]
|
||||
@ -210,38 +173,18 @@
|
||||
^- (list [=dude live=?])
|
||||
%~ tap in
|
||||
.^((set [=dude live=?]) ge+/(scot %p our)/[desk]/(scot %da now))
|
||||
:: +get-apps-want: find which apps should be running on a desk
|
||||
::
|
||||
++ get-apps-want
|
||||
|= [local=[our=ship =desk now=@da] duz=(list dude) =rein]
|
||||
^- (list dude)
|
||||
?. liv.rein ~
|
||||
?. |(=(`zuse+zuse (read-kelvin-local local)) =(%base desk.local)) ~
|
||||
=. duz (skip duz ~(has in sub.rein))
|
||||
=. duz (weld duz (skip ~(tap in add.rein) ~(has in (sy duz))))
|
||||
duz
|
||||
::
|
||||
++ mergebase-hashes
|
||||
|= [our=@p =desk now=@da =arak]
|
||||
?~ rail.arak
|
||||
~
|
||||
=/ her (scot %p ship.u.rail.arak)
|
||||
|= [our=@p syd=desk now=@da her=ship sud=desk]
|
||||
=/ her (scot %p her)
|
||||
=/ ego (scot %p our)
|
||||
=/ wen (scot %da now)
|
||||
%+ turn .^((list tako) %cs ~[ego desk wen %base her desk.u.rail.arak])
|
||||
|=(=tako .^(@uv %cs ~[ego desk wen %hash (scot %uv tako)]))
|
||||
%+ turn .^((list tako) %cs ~[ego syd wen %base her sud])
|
||||
|=(=tako .^(@uv %cs ~[ego syd wen %hash (scot %uv tako)]))
|
||||
::
|
||||
++ enjs
|
||||
=, enjs:format
|
||||
|%
|
||||
++ vats
|
||||
|= v=(list ^vat)
|
||||
^- json
|
||||
%- pairs
|
||||
%+ turn v
|
||||
|= va=^vat
|
||||
[desk.va (vat va)]
|
||||
::
|
||||
++ tim
|
||||
|= t=@
|
||||
^- json
|
||||
@ -254,15 +197,6 @@
|
||||
da+(tim da.c)
|
||||
==
|
||||
::
|
||||
++ vat
|
||||
|= v=^vat
|
||||
%- pairs
|
||||
:~ desk+s+desk.v
|
||||
hash+s+(scot %uv hash.v)
|
||||
cass+(cass cass.v)
|
||||
arak+(arak arak.v)
|
||||
==
|
||||
::
|
||||
++ weft
|
||||
|= w=^weft
|
||||
%- pairs
|
||||
@ -276,30 +210,5 @@
|
||||
:~ aeon+(numb aeon.r)
|
||||
weft+(weft weft.r)
|
||||
==
|
||||
::
|
||||
++ rein
|
||||
|= r=^rein
|
||||
%- pairs
|
||||
:~ add+a+(turn ~(tap in add.r) (lead %s))
|
||||
sub+a+(turn ~(tap in sub.r) (lead %s))
|
||||
==
|
||||
::
|
||||
++ arak
|
||||
|= a=^arak
|
||||
%- pairs
|
||||
:~ rail+?~(rail.a ~ (rail u.rail.a))
|
||||
rein+(rein rein.a)
|
||||
==
|
||||
::
|
||||
++ rail
|
||||
|= r=^rail
|
||||
%- pairs
|
||||
:~ ship+s+(scot %p ship.r)
|
||||
publisher+?~(publisher.r ~ s+(scot %p u.publisher.r))
|
||||
desk+s+desk.r
|
||||
paused+b+paused.r
|
||||
aeon+(numb aeon.r)
|
||||
next+a+(turn next.r rung)
|
||||
==
|
||||
--
|
||||
--
|
||||
|
@ -1,7 +1,7 @@
|
||||
/+ libstrand=strand
|
||||
=, strand=strand:libstrand
|
||||
|%
|
||||
+$ thread $-(vase _*form:(strand ,vase))
|
||||
+$ thread $-(vase shed:khan)
|
||||
+$ input [=tid =cage]
|
||||
+$ tid tid:strand
|
||||
+$ bowl bowl:strand
|
||||
@ -18,4 +18,10 @@
|
||||
file=term
|
||||
=vase
|
||||
==
|
||||
+$ inline-args
|
||||
$: parent=(unit tid)
|
||||
use=(unit tid)
|
||||
=beak
|
||||
=shed:khan
|
||||
==
|
||||
--
|
||||
|
Loading…
Reference in New Issue
Block a user