on 351b0ff help sign in
base-desk/lib/dbug.hoon+3−9
since splitsnapshots
unifiedsplit
@@ -4,8 +4,7 @@
4::
4::
5|%
5|%
6+$ poke
6+$ poke
7− $% [%skip depth=@ud =poke]
8− [%bowl ~]
7+ $% [%bowl ~]
9 [%state grab=cord]
8 [%state grab=cord]
10 [%incoming =about]
9 [%incoming =about]
11 [%outgoing =about]
10 [%outgoing =about]
@@ -33,13 +32,8 @@
33 ?. ?=(%dbug mark)
32 ?. ?=(%dbug mark)
34 =^ cards agent (on-poke:ag mark vase)
33 =^ cards agent (on-poke:ag mark vase)
35 [cards this]
34 [cards this]
35+ =/ dbug
36− =/ dbug !<(poke vase)
36+ !<(poke vase)
37− =? dbug ?=([%skip %0 *] dbug) poke.dbug
38− ?: ?=(%skip -.dbug)
39− =^ cards agent
40− %+ on-poke:ag %dbug
41− !>(`poke`dbug(depth (dec depth.dbug)))
42− [cards this]
43 =; =tang
37 =; =tang
44 ((%*(. slog pri 1) tang) [~ this])
38 ((%*(. slog pri 1) tang) [~ this])
45 ?- -.dbug
39 ?- -.dbug
base-desk/lib/keygen.hoon+1−1
@@ -94,7 +94,7 @@
94 |= seed=@
94 |= seed=@
95 ^- edkeys
95 ^- edkeys
96 =+ =< [pub=pub:ex sec=sec:ex]
96 =+ =< [pub=pub:ex sec=sec:ex]
97− (pit:nu:cric:crypto 256 seed %b ~)
97+ (pit:nu:crub:crypto 256 seed)
98 :- ^= auth
98 :- ^= auth
99 :- (rsh 3 (end [3 33] pub))
99 :- (rsh 3 (end [3 33] pub))
100 (rsh 3 (end [3 33] sec))
100 (rsh 3 (end [3 33] sec))
base-desk/lib/language-server/complete.hoon+2−2
@@ -43,7 +43,7 @@
43 %+ turn ~(tap by q.r.q.ty)
43 %+ turn ~(tap by q.r.q.ty)
44 |= [term =tome]
44 |= [term =tome]
45 %+ turn
45 %+ turn
46− ~(tap by tome)
46+ ~(tap by q.tome)
47 |= [name=term =hoon]
47 |= [name=term =hoon]
48 ^- (pair term type)
48 ^- (pair term type)
49 ~| term=term
49 ~| term=term
@@ -227,7 +227,7 @@
227 =* outer-loop $
227 =* outer-loop $
228 ?~ tomes
228 ?~ tomes
229 ~
229 ~
230− =/ arms ~(tap by q.i.tomes)
230+ =/ arms ~(tap by q.q.i.tomes)
231 |- ^- (unit [term type])
231 |- ^- (unit [term type])
232 =* inner-loop $
232 =* inner-loop $
233 ?~ arms
233 ?~ arms
base-desk/lib/language-server/easy-print.hoon+3−3
@@ -421,11 +421,11 @@
421 ?:(?=([%plot *] q.yon) [q.hin p.q.yon] [q.hin q.yon ~])
421 ?:(?=([%plot *] q.yon) [q.hin p.q.yon] [q.hin q.yon ~])
422 ::
422 ::
423 [%core *]
423 [%core *]
424− ?: ?=([[%$ [[%$ @ *] ~ ~]] ~ ~] q.r.q.sut)
424+ ?: ?=([[%$ * [[%$ @ *] ~ ~]] ~ ~] q.r.q.sut)
425 =/ dad $(sut p.sut)
425 =/ dad $(sut p.sut)
426 :- p.dad
426 :- p.dad
427 ~! q.r.q.sut
427 ~! q.r.q.sut
428− [%gate q.n.q.n.q.r.q.sut sut(r.p.q %gold) q.dad]
428+ [%gate q.n.q.q.n.q.r.q.sut sut(r.p.q %gold) q.dad]
429 =+ yad=$(sut p.sut)
429 =+ yad=$(sut p.sut)
430 :- p.yad
430 :- p.yad
431 =+ ^= doy ^- [p=(list @ta) q=wine]
431 =+ ^= doy ^- [p=(list @ta) q=wine]
@@ -438,7 +438,7 @@
438 %^ cat 3
438 %^ cat 3
439 %~ rent co
439 %~ rent co
440 :+ %$ %ud
440 :+ %$ %ud
441− %- ~(rep by (~(run by q.r.q.sut) |=(tome ~(wyt by +<))))
441+ %- ~(rep by (~(run by q.r.q.sut) |=(tome ~(wyt by q.+<))))
442 |=([[@ a=@u] b=@u] (add a b))
442 |=([[@ a=@u] b=@u] (add a b))
443 %^ cat 3
443 %^ cat 3
444 ?-(r.p.q.sut %gold '.', %iron '|', %lead '?', %zinc '&')
444 ?-(r.p.q.sut %gold '.', %iron '|', %lead '?', %zinc '&')
base-desk/lib/language-server/rune-snippet.hoon+2−2
@@ -509,8 +509,8 @@
509 :- '!@'
509 :- '!@'
510 """
510 """
511 $\{1:wing}
511 $\{1:wing}
512− $\{2:if-not-exists}
512+ $\{2:if-exists}
513− $\{3:if-exists}
513+ $\{3:if-not-exists}
514 """
514 """
515 :- '!?'
515 :- '!?'
516 """
516 """
base-desk/lib/ph/io.hoon+4−226
@@ -1,5 +1,5 @@
1/- *aquarium, spider
1/- *aquarium, spider
2−/+ libstrand=strand, *strandio, util=ph-util, aqua-azimuth, vere
2+/+ libstrand=strand, *strandio, util=ph-util, aqua-azimuth
3=, strand=strand:libstrand
3=, strand=strand:libstrand
4|%
4|%
5++ send-events
5++ send-events
@@ -88,6 +88,7 @@
88 ^- form:m
88 ^- form:m
89 (pure:m ~)
89 (pure:m ~)
90::
90::
91+::
91++ init
92++ init
92 =/ m (strand ,~)
93 =/ m (strand ,~)
93 ^- form:m
94 ^- form:m
@@ -124,8 +125,6 @@
124 1
125 1
125 +(+.old-rut)
126 +(+.old-rut)
126 ;< ~ bind:m (send-azimuth-action %breach who)
127 ;< ~ bind:m (send-azimuth-action %breach who)
127− ;< ~ bind:m ?~ old-rut (sleep ~s20) :: XX don't wait if possible
128− (wait-for-sunk her who) :: wait only if previously talked
129 |- ^- form:m
128 |- ^- form:m
130 =* loop $
129 =* loop $
131 ;< ~ bind:m (sleep ~s10)
130 ;< ~ bind:m (sleep ~s10)
@@ -143,6 +142,7 @@
143 ?> ?=(%earl (clan:title moon))
142 ?> ?=(%earl (clan:title moon))
144 ?: fake (init-ship moon &)
143 ?: fake (init-ship moon &)
145 =/ m (strand ,~)
144 =/ m (strand ,~)
145+ ^- form:m
146 ;< ~ bind:m
146 ;< ~ bind:m
147 %+ dojo (^sein:title moon)
147 %+ dojo (^sein:title moon)
148 =/ =pass pub:ex:(get-keys:aqua-azimuth moon 1)
148 =/ =pass pub:ex:(get-keys:aqua-azimuth moon 1)
@@ -150,46 +150,13 @@
150 (init-ship moon |)
150 (init-ship moon |)
151::
151::
152++ init-ship
152++ init-ship
153− =| core=?(%mesa %ames) :: XX make %mesa the default core
154 |= [=ship fake=?]
153 |= [=ship fake=?]
155 =/ m (strand ,~)
154 =/ m (strand ,~)
156 ^- form:m
155 ^- form:m
157 ~& > "starting {<ship>}"
156 ~& > "starting {<ship>}"
158− ;< ~ bind:m (send-events (init:util ship fake ~ core))
157+ ;< ~ bind:m (send-events (init:util ship fake))
159 (check-ship-booted ship)
158 (check-ship-booted ship)
160::
159::
161−++ init-comet
162− =| core=?(%mesa %ames) :: XX make %mesa the default core
163− |= comet=ship
164− =/ m (strand ,~)
165− ^- form:m
166− :: hardcoded for:
167− :: ~londeg-tirlys-somlyd-poltus--pintyn-tarbyl-bicnux-marbud
168− ::
169− =/ =feed:jael
170− :* [%2 ~]
171− who=comet
172− ryf=0
173− :_ ~
174− :- lyf=1
175− key=0wfm.lBEWM.08gfy.AxYjy.8-tBQ.uq-aa.LZt9c.CVQqd.XBJIs.
176− CoG90.BNNGV.1ZmVi.ZbAhY.LuhwC.idNnU.lCVkt.Z4qug.7iY92
177− ==
178− ::
179− ?> ?=(^ (veri:dawn:vere comet feed *point:azimuth-types ~))
180− ~& > "mining comet under {<(^sein:title comet)>}"
181− ;< ~ bind:m (send-events (init:util comet fake=%.n `feed core))
182− (check-ship-booted comet)
183−::
184−:: Load network core protocol
185−::
186−++ load
187− |= [who=ship ore=?(%mesa %ames)]
188− =/ m (strand ,~)
189− ^- form:m
190− ;< ~ bind:m (send-events [%event who [/a/aqua/load %load ore]]~)
191− (pure:m ~)
192−::
193++ check-ship-booted
160++ check-ship-booted
194 |= =ship
161 |= =ship
195 =/ m (strand ,~)
162 =/ m (strand ,~)
@@ -226,129 +193,6 @@
226 (pure:m ~)
193 (pure:m ~)
227 loop
194 loop
228::
195::
229−++ wait-for-flub
230− |= [our=ship her=ship dap=term]
231− =/ m (strand ,~)
232− ^- form:m
233− ;< =bowl:spider bind:m get-bowl
234− |- ^- form:m
235− =* loop $
236− ;< [from=^ship =unix-effect] bind:m take-unix-effect
237− ;< now=@da bind:m get-time
238− ?. =(from our)
239− :: our sends the $boon with the halted flow number, at this point
240− :: gall has updated its state adding the app to gall's .halts map
241− :: XX search deeper in the .unix-effect?
242− ::
243− loop
244− =/ aqua-pax
245− :- %i
246− /(scot %p our)/gg/(scot %p our)//(scot %da now)/[%$]/noun
247− =+ ;; flubs=(unit (jug ship term))
248− (scry-aqua:util noun our.bowl now aqua-pax)
249− ?~ flubs loop
250− ?. (~(has ju u.flubs) her dap)
251− loop
252− (pure:m ~)
253−::
254−++ wait-for-spur
255− |= [our=ship her=ship dap=term]
256− =/ m (strand ,~)
257− ^- form:m
258− ;< =bowl:spider bind:m get-bowl
259− |- ^- form:m
260− =* loop $
261− ;< [from=ship =unix-effect] bind:m take-unix-effect
262− ;< now=@da bind:m get-time
263− ?. =(from our)
264− :: our ack to the %spur $boon is sent, at this point
265− :: gall has updated its state adding the app to gall's .flubs map
266− :: XX search deeper in the .unix-effect?
267− ::
268− loop
269− =/ aqua-pax
270− :- %i
271− /(scot %p our)/gg/(scot %p our)//(scot %da now)/[%$]/noun
272− =+ ;; flubs=(unit (jug ship term))
273− (scry-aqua:util noun our.bowl now aqua-pax)
274− ?~ flubs loop
275− ?: (~(has ju u.flubs) her dap)
276− loop
277− (pure:m ~)
278−::
279−++ wait-for-has-halt
280− |= [our=ship her=ship dap=term]
281− =/ m (strand ,~)
282− ^- form:m
283− ;< =bowl:spider bind:m get-bowl
284− |- ^- form:m
285− =* loop $
286− ;< [from=ship =unix-effect] bind:m take-unix-effect
287− ;< now=@da bind:m get-time
288− :: only %send or %push effects
289− ::
290− ?. ?=(?(%send %push) -.q.unix-effect)
291− loop
292− ~& >> from^unix-effect
293− ?. =(from our)
294− :: wait until our ack for the %flub $boon is sent, at this point
295− :: gall has updated its state adding the app to gall's .flubs map
296− :: XX search deeper in the .unix-effect?
297− ::
298− loop
299− =/ aqua-pax
300− :- %i
301− /(scot %p our)/gh/(scot %p our)//(scot %da now)/[%$]/noun
302− =+ ;; halts=(unit (jug app=term [ship =duct]))
303− (scry-aqua:util noun our.bowl now aqua-pax)
304− ?~ halts loop
305− ?. (~(has by u.halts) dap) :: XX check .her as well
306− loop
307− (pure:m ~)
308−::
309−++ wait-for-del-halt
310− |= [our=ship her=ship dap=term]
311− =/ m (strand ,~)
312− ^- form:m
313− ;< =bowl:spider bind:m get-bowl
314− |- ^- form:m
315− =* loop $
316− ;< [from=ship =unix-effect] bind:m take-unix-effect
317− ;< now=@da bind:m get-time
318− ?. =(from our)
319− :: when the %spur $boon has been sent, gall has updated its state deleting
320− :: the app from gall's .flubs map
321− :: XX search deeper in the .unix-effect?
322− ::
323− loop
324− =/ aqua-pax
325− :- %i
326− /(scot %p our)/gh/(scot %p our)//(scot %da now)/[%$]/noun
327− =+ ;; halts=(unit (jug app=term [ship =duct]))
328− (scry-aqua:util noun our.bowl now aqua-pax)
329− ?~ halts loop
330− ?: (~(has by u.halts) dap) :: XX check .her as well
331− loop
332− (pure:m ~)
333−::
334−++ wait-for-pac
335− |= [our=ship to=ship]
336− =/ m (strand ,~)
337− ^- form:m
338− ~& > "waiting for ack: {<[from=our to=to]>}"
339− |- ^- form:m
340− =* loop $
341− ;< [from=ship =unix-effect] bind:m take-unix-effect
342− ?. =(our from)
343− loop
344− :: only %send or %push effects
345− ::
346− ?. ?=(?(%send %push) -.q.unix-effect)
347− loop
348− :: XX check that this is an %ack?
349− :: XX check that this is for .to?
350− ::
351− (pure:m ~)
352:: Send "|hi" from one ship to another
196:: Send "|hi" from one ship to another
353::
197::
354++ send-hi
198++ send-hi
@@ -360,64 +204,6 @@
360::
204::
361:: Send "|hi" and wait for "not responding" message
205:: Send "|hi" and wait for "not responding" message
362::
206::
363−++ wait-for-sunk
364− |= [from=@p to=@p]
365− =/ m (strand ,~)
366− (wait-for-output from "{(scow %p to)} has sunk")
367−::
368−++ wait-for-fact
369− |= [=ship =mark =wire gate=$-([mark noun] ?)]
370− =/ m (strand ,noun)
371− ^- form:m
372− ~& > "waiting for fact: {<mark>}"
373− |- ^- form:m
374− =* loop $
375− ;< [her=^ship =unix-effect] bind:m take-unix-effect
376− ?. =(her ship)
377− loop
378− ?. ?& =(wire p.unix-effect)
379− ?=([%unto %raw-fact *] q.unix-effect)
380− =(mark mark.unto.q.unix-effect)
381− (gate mark noun.unto.q.unix-effect)
382− ==
383− loop
384− (pure:m noun.unto.q.unix-effect)
385−::
386−++ wait-for-cork
387− |= [our=ship her=ship flow=(each bone:ames side:ames)]
388− =/ m (strand ,~)
389− ^- form:m
390− ;< =bowl:spider bind:m get-bowl
391− |- ^- form:m
392− =* loop $
393− ;< [from=ship =unix-effect] bind:m take-unix-effect
394− ;< now=@da bind:m get-time
395− :: only %send or %push effects
396− ::
397− ?. ?=(?(%send %push) -.q.unix-effect)
398− loop
399− :: XX check that this is an %ack?
400− ::
401− ?. =(from our)
402− :: wait until the ack for the %cork $plea is sent, at this point
403− :: the publisher has already corked the flow
404− ::
405− loop
406− =/ aqua-pax
407− %+ weld /i/(scot %p our)/ax/(scot %p our)//(scot %da now)
408− ?: ?=(%& -.flow)
409− /corked/(scot %p her)/(scot %ud +.flow)/noun
410− =/ [=bone:ames =dire:ames] +.flow
411− /corked/(scot %p her)/[dire]/(scot %ud bone)/noun
412− =+ ;; corked=(unit ?) (scry-aqua:util noun our.bowl now aqua-pax)
413− ?~ corked loop
414− ?. u.corked :: XX check .her as well
415− loop
416− ~& >> flow-is-corked/flow
417− (pure:m ~)
418−::
419−:: Send "|hi" and wait for "not responding" message
420−::
421++ send-hi-not-responding
207++ send-hi-not-responding
422 |= [from=@p to=@p]
208 |= [from=@p to=@p]
423 ~& > 'sending hi not responding'
209 ~& > 'sending hi not responding'
@@ -470,14 +256,6 @@
470 ;< ~ bind:m (send-events (insert-files:util her desk [pax warped] ~))
256 ;< ~ bind:m (send-events (insert-files:util her desk [pax warped] ~))
471 (pure:m warped)
257 (pure:m warped)
472::
258::
473−++ copy-file
474− =/ m (strand ,~)
475− |= [her=ship pax=path file=@t]
476− ^- form:m
477− ;< ~ bind:m
478− (send-events (insert-files:util her %base [pax file] ~))
479− (sleep ~s1)
480−::
481:: Check /sur/aquarium/hoon on the given has the given contents.
259:: Check /sur/aquarium/hoon on the given has the given contents.
482::
260::
483++ check-file-touched
261++ check-file-touched
base-desk/lib/ph/util.hoon+8−21
@@ -16,11 +16,9 @@
16:: Start a ship (low-level; prefer +raw-ship)
16:: Start a ship (low-level; prefer +raw-ship)
17::
17::
18++ init
18++ init
19− |= [who=ship ake=? eed=(unit feed:jael) ore=?(%mesa %ames)]
19+ |= [who=ship fake=?]
20 ^- (list aqua-event)
20 ^- (list aqua-event)
21− :~ [%init-ship who ake eed]
21+ [%init-ship who fake]~
22− [%event who [/a/aqua/load %load ore]]
23− ==
24::
22::
25:: Send dojo command
23:: Send dojo command
26::
24::
@@ -64,26 +62,15 @@
64::TODO should be rename -dill-output
62::TODO should be rename -dill-output
65++ is-dojo-output
63++ is-dojo-output
66 |= [who=ship her=ship uf=unix-effect what=tape]
64 |= [who=ship her=ship uf=unix-effect what=tape]
67− |^
68 ?& =(who her)
65 ?& =(who her)
69 ?=(%blit -.q.uf)
66 ?=(%blit -.q.uf)
70− (lien p.q.uf handle-blit)
71− ==
72− ::
73− ++ handle-blit
74− |= =blit:dill
75− ^- ?
76− ?: ?=(%mor -.blit)
77− (lien p.blit handle-blit)
78− ?+ -.blit |
79− %put !=(~ (find what p.blit))
80 ::
67 ::
81− %klr
82− %+ lien p.blit
68+ %+ lien p.q.uf
83− |= [* q=(list @c)]
69+ |= =blit:dill
70+ ?. ?=(%put -.blit)
71+ |
84− !=(~ (find what q))
72+ !=(~ (find what p.blit))
85− ==
73+ ==
86− --
87::
74::
88:: Test is successful if +is-dojo-output
75:: Test is successful if +is-dojo-output
89::
76::
base-desk/lib/pill.hoon+19−263
@@ -2,7 +2,6 @@
2::
2::
3/- dice
3/- dice
4^?
4^?
5−=<
6|%
5|%
7::
6::
8+$ pill
7+$ pill
@@ -12,14 +11,6 @@
12 boot-ova=(list)
11 boot-ova=(list)
13 kernel-ova=(list unix-event)
12 kernel-ova=(list unix-event)
14 userspace-ova=(list unix-event)
13 userspace-ova=(list unix-event)
15− ==
16− $: %cash
17− $: nam=term
18− boot-ova=(list)
19− kernel-ova=(list unix-event)
20− userspace-ova=(list unix-event)
21− ==
22− cache=(list)
23 == ==
14 == ==
24::
15::
25+$ unix-event
16+$ unix-event
@@ -42,14 +33,14 @@
42 [/sys/arvo hoon/arvo]
33 [/sys/arvo hoon/arvo]
43 ==
34 ==
44:: +dirs: filter for userspace directories to include
35:: +dirs: filter for userspace directories to include
45−::
36+::
46++ dirs
37++ dirs
47 |= [bas=path exc=(list spur)]
38 |= [bas=path exc=(list spur)]
48 ^- (list spur)
39 ^- (list spur)
49 ?~ exc ~(tap in dir:.^(arch %cy bas))
40 ?~ exc ~(tap in dir:.^(arch %cy bas))
50 %+ skim
41 %+ skim
51 ~(tap in dir:.^(arch %cy bas))
42 ~(tap in dir:.^(arch %cy bas))
52− |=(=spur =(~ (find ~[spur] exc)))
43+ |=(=spur =(~ (find ~[spur] exc)))
53:: +file-ovum: userspace filesystem load
44:: +file-ovum: userspace filesystem load
54::
45::
55:: bas: full path to / directory
46:: bas: full path to / directory
@@ -108,26 +99,6 @@
108::
99::
109++ file-ovum2 |=(z=[path (list spur)] `unix-event`[//arvo what/(user-files z)])
100++ file-ovum2 |=(z=[path (list spur)] `unix-event`[//arvo what/(user-files z)])
110::
101::
111−++ get-wynn
112− |= [sys=path new-wynn=?]
113− ^- wynn
114− ?. new-wynn
115− :~ zuse+zuse
116− lull+lull
117− arvo+arvo
118− hoon+hoon-version
119− ==
120− ~> %bout.[0 %get-wynn]
121− =+ .^(zus=vase %ca (welp sys /zuse/hoon))
122− =+ .^(lul=vase %ca (welp sys /lull/hoon))
123− =+ .^(arv=vase %ca (welp sys /arvo/hoon))
124− =+ .^(hun=vase %ca (welp sys /hoon/hoon))
125− :~ [%zuse ;;(@ud q:(slap zus limb+%zuse))]
126− [%lull ;;(@ud q:(slap lul limb+%lull))]
127− [%arvo ;;(@ud q:(slap arv limb+%arvo))]
128− [%hoon ;;(@ud q:(slap hun limb+%hoon-version))]
129− ==
130−::
131++ prep-ovum
102++ prep-ovum
132 |= dez=(list path)
103 |= dez=(list path)
133 ^- unix-event
104 ^- unix-event
@@ -229,7 +200,7 @@
229 :- (boot-ovum:pill compiler-src arvo-src)
200 :- (boot-ovum:pill compiler-src arvo-src)
230 %+ turn
201 %+ turn
231 (snoc (turn dez tail) bas)
202 (snoc (turn dez tail) bas)
232− |= =path
203+ |= =path
233 (file-ovum2 [path exc])
204 (file-ovum2 [path exc])
234 .*(0 arvo-formula)
205 .*(0 arvo-formula)
235 |= [ovo=ovum ken=*]
206 |= [ovo=ovum ken=*]
@@ -263,26 +234,19 @@
263 :+ %pill %solid
234 :+ %pill %solid
264 :+ boot-ova ~
235 :+ boot-ova ~
265 =. dez (snoc dez [%base bas])
236 =. dez (snoc dez [%base bas])
266− ;: weld
237+ %+ weld
267− %+ turn dez
238+ %+ turn dez
268− |= [dek=desk bas=path]
239+ |= [dek=desk bas=path]
269 (file-ovum [dek bas exc])
240 (file-ovum [dek bas exc])
270− ::
271− ?. prime ~
241+ ?. prime ~
272− [(prep-ovum (turn dez tail))]~
242+ [(prep-ovum (turn dez tail))]~
273− ::
274− %+ turn dez
275− |= [dek=desk *]
276− ^- unix-event
277− [/c/essential/[dek] %esse dek %.y]
278− ==
279::
243::
280++ brass
244++ brass
281 :: sys: root path to boot system, `/~me/[desk]/now/sys`
245 :: sys: root path to boot system, `/~me/[desk]/now/sys`
282 :: dez: secondary desks and their root paths
246 :: dez: secondary desks and their root paths
283 :: exc: list of desk folders to exclude
247 :: exc: list of desk folders to exclude
284 ::
248 ::
285− |= [sys=path dez=(list [desk path]) cache=? prime=? new-wynn=? exc=(list spur)]
249+ |= [sys=path dez=(list [desk path]) prime=? exc=(list spur)]
286 ^- pill
250 ^- pill
287 =/ bas=path (scag 3 sys)
251 =/ bas=path (scag 3 sys)
288 :: compiler-source: hoon source file producing compiler, `sys/hoon`
252 :: compiler-source: hoon source file producing compiler, `sys/hoon`
@@ -314,54 +278,20 @@
314 compiler-source
278 compiler-source
315 arvo-source
279 arvo-source
316 ==
280 ==
281+ :: a pill is a 3-tuple of event-lists: [boot kernel userspace]
317 ::
282 ::
318− =/ kernel-ova=(list unix-event)
283+ :+ %pill %brass
284+ :+ boot-ova
319 :~ (boot-ovum compiler-source arvo-source)
285 :~ (boot-ovum compiler-source arvo-source)
320 (file-ovum2 [bas exc])
286 (file-ovum2 [bas exc])
321 ==
287 ==
322− ::
323− =/ userspace-ova
324− =. dez (snoc dez [%base bas])
288+ =. dez (snoc dez [%base bas])
325− ;: weld
289+ %+ weld
326− %+ turn dez
290+ %+ turn dez
327− |= [dek=desk bas=path]
291+ |= [dek=desk bas=path]
328− (file-ovum [dek bas exc])
292+ (file-ovum [dek bas exc])
329− ::
330− ?. prime ~
293+ ?. prime ~
331− [(prep-ovum (turn dez tail))]~
294+ [(prep-ovum (turn dez tail))]~
332− ::
333− %+ turn dez
334− |= [dek=desk *]
335− ^- unix-event
336− [/c/essential/[dek] %esse dek %.y]
337− ==
338− ::
339− =/ =wynn (get-wynn sys new-wynn)
340− ::
341− =/ cache=(list)
342− ?. cache ~
343− %~ tap by
344− =< +
345− %- mice
346− :_ [%2 [%0 3] %0 2]
347− ;: weld
348− boot-ova
349− ^- (list)
350− :~ [*@da //arvo %wack *@uvJ]
351− [*@da //arvo %whom *@p]
352− [*@da //arvo %wyrd [~.nonce /] wynn]
353− ==
354− `(list)`(turn kernel-ova (lead *@da))
355− `(list)`[*@da [/d/term/1 %boot & %fake *@p]]^~
356− `(list)`(turn userspace-ova (lead *@da))
357− `(list)`[*@da [/c/init-zest %zeal (turn dez |=([d=desk *] [d %live]))]]^~
358− ==
359− ::
360− ~> %slog.[0 leaf+"brass: cache entries: {<(lent cache)>}"]
361− ::
362− :- %cash
363− :_ cache
364− [%brass boot-ova kernel-ova userspace-ova]
365::
295::
366++ ivory
296++ ivory
367 |= sys=path
297 |= sys=path
@@ -444,177 +374,3 @@
444 ==
374 ==
445 --
375 --
446--
376--
447−::
448−~% %non ..part ~
449−:: +mice: %memo hint caching version of mink
450−::
451−|%
452−++ mice !.
453− ~/ %mice
454− |= [subject=* formula=*]
455− =| trace=(list [@ta *])
456− =| memo=(map)
457− =; [ton=tone mem=_memo]
458− ?. ?=(%0 -.ton)
459− [ton ~]
460− [ton mem]
461− |^ ^- [tone _memo]
462− ?+ formula [[%2 trace] memo]
463− [^ *]
464− =^ head memo $(formula -.formula)
465− ?. ?=(%0 -.head) [head memo]
466− =^ tail memo $(formula +.formula)
467− :_ memo
468− ?. ?=(%0 -.tail) tail
469− [%0 product.head product.tail]
470− ::
471− [%0 axis=@]
472− :_ memo
473− =/ part (frag axis.formula subject)
474− ?~ part [%2 trace]
475− [%0 u.part]
476− ::
477− [%1 constant=*]
478− [[%0 constant.formula] memo]
479− ::
480− [%2 subject=* formula=*]
481− =^ subject memo $(formula subject.formula)
482− ?. ?=(%0 -.subject) [subject memo]
483− =^ formula memo $(formula formula.formula)
484− ?. ?=(%0 -.formula) [formula memo]
485− %= $
486− subject product.subject
487− formula product.formula
488− ==
489− ::
490− [%3 argument=*]
491− =^ argument memo $(formula argument.formula)
492− :_ memo
493− ?. ?=(%0 -.argument) argument
494− [%0 .?(product.argument)]
495− ::
496− [%4 argument=*]
497− =^ argument memo $(formula argument.formula)
498− :_ memo
499− ?. ?=(%0 -.argument) argument
500− ?^ product.argument [%2 trace]
501− [%0 .+(product.argument)]
502− ::
503− [%5 a=* b=*]
504− =^ a memo $(formula a.formula)
505− ?. ?=(%0 -.a) [a memo]
506− =^ b memo $(formula b.formula)
507− :_ memo
508− ?. ?=(%0 -.b) b
509− [%0 =(product.a product.b)]
510− ::
511− [%6 test=* yes=* no=*]
512− =^ result memo $(formula test.formula)
513− ?. ?=(%0 -.result) [result memo]
514− ?+ product.result [[%2 trace] memo]
515− %& $(formula yes.formula)
516− %| $(formula no.formula)
517− ==
518− ::
519− [%7 subject=* next=*]
520− =^ subject memo $(formula subject.formula)
521− ?. ?=(%0 -.subject) [subject memo]
522− %= $
523− subject product.subject
524− formula next.formula
525− ==
526− ::
527− [%8 head=* next=*]
528− =^ head memo $(formula head.formula)
529− ?. ?=(%0 -.head) [head memo]
530− %= $
531− subject [product.head subject]
532− formula next.formula
533− ==
534− ::
535− [%9 axis=@ core=*]
536− =^ core memo
537− $(formula core.formula)
538− ?. ?=(%0 -.core) [core memo]
539− =/ arm (frag axis.formula product.core)
540− ?~ arm [[%2 trace] memo]
541− %= $
542− subject product.core
543− formula u.arm
544− ==
545− ::
546− [%10 [axis=@ value=*] target=*]
547− ?: =(0 axis.formula) [[%2 trace] memo]
548− =^ target memo $(formula target.formula)
549− ?. ?=(%0 -.target) [target memo]
550− =^ value memo $(formula value.formula)
551− :_ memo
552− ?. ?=(%0 -.value) value
553− =/ mutant=(unit *)
554− (edit axis.formula product.target product.value)
555− ?~ mutant [%2 trace]
556− [%0 u.mutant]
557− ::
558− [%11 tag=@ next=*]
559− =^ next memo $(formula next.formula)
560− :_ memo
561− ?. ?=(%0 -.next) next
562− :- %0
563− .* subject
564− [11 tag.formula 1 product.next]
565− ::
566− [%11 [tag=@ clue=*] next=*]
567− =^ clue memo $(formula clue.formula)
568− ?. ?=(%0 -.clue) [clue memo]
569− ?: ?=(%memo tag.formula)
570− ?^ hit=(~(get by memo) subject next.formula)
571− [[%0 u.hit] memo]
572− =^ ton memo $(formula next.formula)
573− ?. ?=(%0 -.ton)
574− [ton memo]
575− ?: ?=(?(@ [%clay %ford *]) product.clue)
576− [ton memo]
577− [ton (~(put by memo) [subject next.formula] product.ton)]
578− =^ next memo
579− =? trace
580− ?=(?(%hunk %hand %lose %mean %spot) tag.formula)
581− [[tag.formula product.clue] trace]
582− $(formula next.formula)
583− :_ memo
584− ?. ?=(%0 -.next) next
585− :- %0
586− .* subject
587− [11 [tag.formula 1 product.clue] 1 product.next]
588− ==
589− ::
590− ++ frag
591− |= [axis=@ noun=*]
592− ^- (unit)
593− ?: =(0 axis) ~
594− |- ^- (unit)
595− ?: =(1 axis) `noun
596− ?@ noun ~
597− =/ pick (cap axis)
598− %= $
599− axis (mas axis)
600− noun ?-(pick %2 -.noun, %3 +.noun)
601− ==
602− ::
603− ++ edit
604− |= [axis=@ target=* value=*]
605− ^- (unit)
606− ?: =(1 axis) `value
607− ?@ target ~
608− =/ pick (cap axis)
609− =/ mutant
610− %= $
611− axis (mas axis)
612− target ?-(pick %2 -.target, %3 +.target)
613− ==
614− ?~ mutant ~
615− ?- pick
616− %2 `[u.mutant +.target]
617− %3 `[-.target u.mutant]
618− ==
619− --
620−--
base-desk/lib/ring.hoon+36−36
@@ -18,10 +18,10 @@
18 ::
18 ::
19 ++ generate-public-linkage
19 ++ generate-public-linkage
20 |= link-scope=@
20 |= link-scope=@
21− ^- [data=@ h=@uxpoint]
21+ ^- [data=@ h=@udpoint]
22 ::
22 ::
23 =/ data=@ (mod link-scope l:ed:crypto)
23 =/ data=@ (mod link-scope l:ed:crypto)
24− =/ h=@uxpoint (scalarmult-base:ed:crypto data)
24+ =/ h=@udpoint (scalarmult-base:ed:crypto data)
25 [data h]
25 [data h]
26 :: +generate-linkage: linkage information from scope and private key
26 :: +generate-linkage: linkage information from scope and private key
27 ::
27 ::
@@ -30,13 +30,13 @@
30 :: y: y = [x] * h
30 :: y: y = [x] * h
31 ++ generate-linkage
31 ++ generate-linkage
32 |= [link-scope=(unit @) my-private-key=@]
32 |= [link-scope=(unit @) my-private-key=@]
33− ^- (unit [data=@ h=@uxpoint y=@uxpoint])
33+ ^- (unit [data=@ h=@udpoint y=@udpoint])
34 ::
34 ::
35 ?~ link-scope
35 ?~ link-scope
36 ~
36 ~
37 ::
37 ::
38− =+ [data=@ h=@uxpoint]=(generate-public-linkage u.link-scope)
38+ =+ [data=@ h=@udpoint]=(generate-public-linkage u.link-scope)
39− =/ y=@uxpoint (scalarmult:ed:crypto my-private-key h)
39+ =/ y=@udpoint (scalarmult:ed:crypto my-private-key h)
40 [~ data h y]
40 [~ data h y]
41 :: +generate-challenge: generate challenge from a given message
41 :: +generate-challenge: generate challenge from a given message
42 ::
42 ::
@@ -47,13 +47,13 @@
47 ++ generate-challenge
47 ++ generate-challenge
48 |= $: :: common to both linked and unlinked
48 |= $: :: common to both linked and unlinked
49 message=@
49 message=@
50− g=@uxpoint
50+ g=@udpoint
51 :: high level universal state
51 :: high level universal state
52 ::
52 ::
53− link-state=(unit [data=@ h=@uxpoint y=@uxpoint])
53+ link-state=(unit [data=@ h=@udpoint y=@udpoint])
54 :: point to include in challenge when link-state isn't ~
54 :: point to include in challenge when link-state isn't ~
55 ::
55 ::
56− h=(unit @uxpoint)
56+ h=(unit @udpoint)
57 ==
57 ==
58 ^- @
58 ^- @
59 :: concatenate and reduce our message down to a 512-bit hash
59 :: concatenate and reduce our message down to a 512-bit hash
@@ -74,9 +74,9 @@
74 :: +generate-challenges: generates the full list of challenges
74 :: +generate-challenges: generates the full list of challenges
75 ::
75 ::
76 ++ generate-challenges
76 ++ generate-challenges
77− |= $: link-state=(unit [data=@ h=@uxpoint y=@uxpoint])
77+ |= $: link-state=(unit [data=@ h=@udpoint y=@udpoint])
78 message=@
78 message=@
79− public-keys=(list @uxpoint)
79+ public-keys=(list @udpoint)
80 ss=(list @)
80 ss=(list @)
81 ::
81 ::
82 prev-k=@u
82 prev-k=@u
@@ -86,14 +86,14 @@
86 ==
86 ==
87 ^- (list @)
87 ^- (list @)
88 ::
88 ::
89− =/ gs=@uxpoint
89+ =/ gs=@udpoint
90 %- add-scalarmult-scalarmult-base:ed:crypto :*
90 %- add-scalarmult-scalarmult-base:ed:crypto :*
91 prev-ch
91 prev-ch
92 (snag prev-k public-keys)
92 (snag prev-k public-keys)
93 prev-s
93 prev-s
94 ==
94 ==
95 ::
95 ::
96− =/ hs=(unit @uxpoint)
96+ =/ hs=(unit @udpoint)
97 ?~ link-state
97 ?~ link-state
98 ~
98 ~
99 ::
99 ::
@@ -125,8 +125,8 @@
125 :: used to generate the (unit point) consumed by +generate-challenge.
125 :: used to generate the (unit point) consumed by +generate-challenge.
126 ::
126 ::
127 ++ scalarmult-h
127 ++ scalarmult-h
128− |= [u=@ linkage=(unit [data=@ h=@uxpoint y=@uxpoint])]
128+ |= [u=@ linkage=(unit [data=@ h=@udpoint y=@udpoint])]
129− ^- (unit @uxpoint)
129+ ^- (unit @udpoint)
130 ?~ linkage
130 ?~ linkage
131 ~
131 ~
132 [~ (scalarmult:ed:crypto u h.u.linkage)]
132 [~ (scalarmult:ed:crypto u h.u.linkage)]
@@ -143,9 +143,9 @@
143 |= $: message=@
143 |= $: message=@
144 link-scope=(unit @)
144 link-scope=(unit @)
145 ::
145 ::
146− anonymity-set=(set @uxpoint)
146+ anonymity-set=(set @udpoint)
147− my-public-key=@uxpoint
147+ my-public-key=@udpoint
148− my-private-key=@uxscalar
148+ my-private-key=@udscalar
149 ::
149 ::
150 eny=@uvJ
150 eny=@uvJ
151 ==
151 ==
@@ -157,7 +157,7 @@
157 (need (find [my-public-key ~] anonymity-list))
157 (need (find [my-public-key ~] anonymity-list))
158 :: Generate linkage information if given
158 :: Generate linkage information if given
159 ::
159 ::
160− =/ linkage=(unit [data=@ h=@uxpoint y=@uxpoint])
160+ =/ linkage=(unit [data=@ h=@udpoint y=@udpoint])
161 (generate-linkage link-scope my-private-key)
161 (generate-linkage link-scope my-private-key)
162 :: initialize our random number generator from entropy
162 :: initialize our random number generator from entropy
163 ::
163 ::
@@ -237,7 +237,7 @@
237 |= $: message=@
237 |= $: message=@
238 link-scope=(unit @)
238 link-scope=(unit @)
239 ::
239 ::
240− anonymity-set=(set @uxpoint)
240+ anonymity-set=(set @udpoint)
241 signature=raw-ring-signature
241 signature=raw-ring-signature
242 ==
242 ==
243 ^- ?
243 ^- ?
@@ -259,14 +259,14 @@
259 =/ s2-to-end=(list @) t.t.s.signature
259 =/ s2-to-end=(list @) t.t.s.signature
260 :: anonymity-list: set of public keys listified in ring order
260 :: anonymity-list: set of public keys listified in ring order
261 ::
261 ::
262− =/ anonymity-list=(list @uxpoint)
262+ =/ anonymity-list=(list @udpoint)
263 ~(tap in anonymity-set)
263 ~(tap in anonymity-set)
264 :: participants: length of :anonymity-list
264 :: participants: length of :anonymity-list
265 ::
265 ::
266 =/ participants=@u
266 =/ participants=@u
267 (lent anonymity-list)
267 (lent anonymity-list)
268 ::
268 ::
269− =/ z0p=@uxpoint
269+ =/ z0p=@udpoint
270 %- add-scalarmult-scalarmult-base:ed:crypto :*
270 %- add-scalarmult-scalarmult-base:ed:crypto :*
271 ch0.signature
271 ch0.signature
272 (head anonymity-list)
272 (head anonymity-list)
@@ -275,14 +275,14 @@
275 :: generate the linkage using public data, and the y point from the
275 :: generate the linkage using public data, and the y point from the
276 :: signature
276 :: signature
277 ::
277 ::
278− =/ linkage=(unit [data=@ h=@uxpoint y=@uxpoint])
278+ =/ linkage=(unit [data=@ h=@udpoint y=@udpoint])
279 ?~ link-scope
279 ?~ link-scope
280 ~
280 ~
281− =+ [data=@ h=@uxpoint]=(generate-public-linkage u.link-scope)
281+ =+ [data=@ h=@udpoint]=(generate-public-linkage u.link-scope)
282 :- ~
282 :- ~
283 [data h (need y.signature)]
283 [data h (need y.signature)]
284 ::
284 ::
285− =/ z0pp=(unit @uxpoint)
285+ =/ z0pp=(unit @udpoint)
286 ?~ linkage
286 ?~ linkage
287 ~
287 ~
288 :- ~
288 :- ~
@@ -319,7 +319,7 @@
319 :: +seed-to-private-key-scalar: keyfile form to scalar we can multiply with
319 :: +seed-to-private-key-scalar: keyfile form to scalar we can multiply with
320 ::
320 ::
321 ++ seed-to-private-key-scalar
321 ++ seed-to-private-key-scalar
322− |= sk=@I ^- @uxscalar
322+ |= sk=@I ^- @udscalar
323 ?: (gth (met 3 sk) 32) !!
323 ?: (gth (met 3 sk) 32) !!
324 =+ h=(shal (rsh [0 3] b:ed:crypto) sk)
324 =+ h=(shal (rsh [0 3] b:ed:crypto) sk)
325 %+ add
325 %+ add
@@ -347,7 +347,7 @@
347 ::
347 ::
348 ++ ship-life-to-pubid
348 ++ ship-life-to-pubid
349 |= [our=@p now=@da ship=@p =life]
349 |= [our=@p now=@da ship=@p =life]
350− ^- @uxpoint
350+ ^- @udpoint
351 ::
351 ::
352 =/ d=[=^life =pass *]
352 =/ d=[=^life =pass *]
353 =/ scry-path=path
353 =/ scry-path=path
@@ -364,14 +364,14 @@
364 ::
364 ::
365 =/ x=[crypt=@ auth=@] (get-public-key-from-pass pass.d)
365 =/ x=[crypt=@ auth=@] (get-public-key-from-pass pass.d)
366 ::
366 ::
367− `@uxpoint`auth.x
367+ `@udpoint`auth.x
368 ::
368 ::
369 ++ build-signing-participants
369 ++ build-signing-participants
370 |= [our=@p now=@da invited=(list @p)]
370 |= [our=@p now=@da invited=(list @p)]
371− ^- [(set [@p life]) (set @uxpoint)]
371+ ^- [(set [@p life]) (set @udpoint)]
372 ::
372 ::
373 =| participants=(set [@p life])
373 =| participants=(set [@p life])
374− =| keys=(set @uxpoint)
374+ =| keys=(set @udpoint)
375 ::
375 ::
376 |-
376 |-
377 ?~ invited
377 ?~ invited
@@ -383,7 +383,7 @@
383 ?~ lyfe
383 ?~ lyfe
384 $(invited t.invited)
384 $(invited t.invited)
385 ::
385 ::
386− =/ pubkey=@uxpoint (ship-life-to-pubid our now i.invited u.lyfe)
386+ =/ pubkey=@udpoint (ship-life-to-pubid our now i.invited u.lyfe)
387 ::
387 ::
388 =. participants (~(put in participants) [i.invited u.lyfe])
388 =. participants (~(put in participants) [i.invited u.lyfe])
389 =. keys (~(put in keys) pubkey)
389 =. keys (~(put in keys) pubkey)
@@ -393,15 +393,15 @@
393 ::
393 ::
394 ++ build-verifying-participants
394 ++ build-verifying-participants
395 |= [our=@p now=@da invited=(list [ship=@p =life])]
395 |= [our=@p now=@da invited=(list [ship=@p =life])]
396− ^- (set @uxpoint)
396+ ^- (set @udpoint)
397 ::
397 ::
398− =| keys=(set @uxpoint)
398+ =| keys=(set @udpoint)
399 ::
399 ::
400 |-
400 |-
401 ?~ invited
401 ?~ invited
402 keys
402 keys
403 ::
403 ::
404− =/ pubkey=@uxpoint
404+ =/ pubkey=@udpoint
405 (ship-life-to-pubid our now ship.i.invited life.i.invited)
405 (ship-life-to-pubid our now ship.i.invited life.i.invited)
406 =. keys
406 =. keys
407 (~(put in keys) pubkey)
407 (~(put in keys) pubkey)
@@ -432,7 +432,7 @@
432 =/ link-hash=(unit @) (bind link-scope |=(a=* (shaz (jam a))))
432 =/ link-hash=(unit @) (bind link-scope |=(a=* (shaz (jam a))))
433 :: get everyone's public keys
433 :: get everyone's public keys
434 ::
434 ::
435− =/ p=[participants=(set [ship=@p =life]) keys=(set @uxpoint)]
435+ =/ p=[participants=(set [ship=@p =life]) keys=(set @udpoint)]
436 (build-signing-participants:detail our now ~(tap in anonymity-set))
436 (build-signing-participants:detail our now ~(tap in anonymity-set))
437 :: get our ships' current life
437 :: get our ships' current life
438 ::
438 ::
@@ -448,7 +448,7 @@
448 +:(get-private-key-from-ring:detail secret-ring)
448 +:(get-private-key-from-ring:detail secret-ring)
449 :: get our ships' public key
449 :: get our ships' public key
450 ::
450 ::
451− =/ public-key=@uxpoint
451+ =/ public-key=@udpoint
452 (ship-life-to-pubid:detail our now our our-life)
452 (ship-life-to-pubid:detail our now our our-life)
453 ::
453 ::
454 :- participants.p
454 :- participants.p
@@ -467,7 +467,7 @@
467 |= [our=@p now=@da message=* =ring-signature]
467 |= [our=@p now=@da message=* =ring-signature]
468 ^- ?
468 ^- ?
469 ::
469 ::
470− =/ keys=(set @uxpoint)
470+ =/ keys=(set @udpoint)
471 %^ build-verifying-participants:detail our now
471 %^ build-verifying-participants:detail our now
472 ~(tap in participants.ring-signature)
472 ~(tap in participants.ring-signature)
473 ::
473 ::
base-desk/lib/shoe.hoon+19−28
@@ -13,8 +13,8 @@
13/- *sole
13/- *sole
14/+ sole, auto=language-server-complete
14/+ sole, auto=language-server-complete
15|%
15|%
16−+$ state-2
16++$ state-1
17− $: %2
17+ $: %1
18 soles=(map sole-id sole-share)
18 soles=(map sole-id sole-share)
19 ==
19 ==
20:: $card: standard gall cards plus shoe effects
20:: $card: standard gall cards plus shoe effects
@@ -147,7 +147,7 @@
147++ agent
147++ agent
148 |* command-type=mold
148 |* command-type=mold
149 |= =(shoe command-type)
149 |= =(shoe command-type)
150− =| state-2
150+ =| state-1
151 =* state -
151 =* state -
152 ^- agent:gall
152 ^- agent:gall
153 =>
153 =>
@@ -188,7 +188,7 @@
188 =^ cards shoe on-init:og
188 =^ cards shoe on-init:og
189 [(deal cards) this]
189 [(deal cards) this]
190 ::
190 ::
191− ++ on-save :(slop !>(%shoe-app) on-save:og !>(state))
191+ ++ on-save !>([%shoe-app on-save:og state])
192 ::
192 ::
193 ++ on-load
193 ++ on-load
194 |= old-state=vase
194 |= old-state=vase
@@ -201,32 +201,23 @@
201 ?. ?=([%shoe-app ^] q.old-state)
201 ?. ?=([%shoe-app ^] q.old-state)
202 =^ cards shoe (on-load:og old-state)
202 =^ cards shoe (on-load:og old-state)
203 [(deal cards) this]
203 [(deal cards) this]
204− |^ :: versions %0 and %1 stored the inner state double-vased.
205− :: fixing this coincided with the 408 type-of-type migration.
206− ::
207− ?: ?=([%shoe-app * ?(%0 %1) *] q.old-state)
208− =| old-outer=state-any
204+ |^ =| old-outer=state-any
209− =^ old-inner old-outer
205+ =^ old-inner old-outer
210− +:!<([%shoe-app vase:h136 state-any] old-state)
206+ +:!<([%shoe-app vase state-any] old-state)
207+ :: ~! q.old-state
208+ :: ?+ +>.q.old-state !!
209+ :: [%0 *] +:!<([%shoe-app vase state-0] old-state)
210+ :: [%1 *] +:!<([%shoe-app vase state-1] old-state)
211+ :: ==
211− =^ caz shoe (on-load:og (next-vase:h136 old-inner))
212+ =^ caz shoe (on-load:og old-inner)
212− =^ cuz old-outer
213+ =^ cuz old-outer
213− ?. ?=(%0 -.old-outer) [~ old-outer]
214+ ?. ?=(%0 -.old-outer) [~ old-outer]
214− (state-0-to-1 old-outer)
215+ (state-0-to-1 old-outer)
215− =? old-outer ?=(%1 -.old-outer) (state-1-to-2 old-outer)
216− ?> ?=(%2 -.old-outer)
216+ ?> ?=(%1 -.old-outer)
217− [(weld cuz (deal caz)) this(state old-outer)]
217+ [(weld cuz (deal caz)) this(state old-outer)]
218− ::
219− =+ !<(old=state-any (slot 7 old-state))
220− ?> ?=(%2 -.old)
221− =. state old
222− ::
223− =^ caz shoe (on-load:og (slot 6 old-state))
224− [(deal caz) this]
225 ::
218 ::
226− +$ state-any $%(state-2 state-1 state-0)
219+ +$ state-any $%(state-1 state-0)
227− +$ state-1 _%*(. *state-2 - %1)
228 +$ state-0 [%0 soles=(map @ta sole-share)]
220 +$ state-0 [%0 soles=(map @ta sole-share)]
229− ++ state-1-to-2 |=(old=state-1 old(- %2))
230 ++ state-0-to-1
221 ++ state-0-to-1
231 |= old=state-0
222 |= old=state-0
232 ^- (quip card:agent:gall state-1)
223 ^- (quip card:agent:gall state-1)
base-desk/lib/strandio.hoon+6−112
@@ -182,49 +182,16 @@
182 `[%done ~]
182 `[%done ~]
183 `[%fail %timer-error u.error.sign-arvo.u.in.tin]
183 `[%fail %timer-error u.error.sign-arvo.u.in.tin]
184 ==
184 ==
185−++ take-whey
186− |= =wire
187− =/ m (strand ,[spar:ames fragment-size=@ud num-fragments=@ud])
188− ^- form:m
189− |= tin=strand-input:strand
190− ?+ in.tin `[%skip ~]
191− ~ `[%wait ~]
192− ::
193− [~ %sign * %ames %sage sage=*]
194− ?. =(wire wire.u.in.tin)
195− `[%skip ~]
196− =/ =sage:mess:ames sage.sign-arvo.u.in.tin
197− :^ ~ %done spar=p.sage
198− ?~ q.sage
199− [boq=13 tot=0]
200− =< [boq tot]
201− ;;([%whey boq=@ud tot=@ud] q.sage)
202− ==
203::
185::
204−++ take-sage
186+++ take-tune
205 |= =wire
187 |= =wire
206− =/ m (strand ,sage:mess:ames)
188+ =/ m (strand ,[spar:ames (unit roar:ames)])
207 ^- form:m
189 ^- form:m
208 |= tin=strand-input:strand
190 |= tin=strand-input:strand
209 ?+ in.tin `[%skip ~]
191 ?+ in.tin `[%skip ~]
210 ~ `[%wait ~]
192 ~ `[%wait ~]
211 ::
193 ::
212− [~ %sign * %ames %sage sage=*]
194+ [~ %sign * %ames %tune ^ *]
213− ?. =(wire wire.u.in.tin)
214− `[%skip ~]
215− `[%done sage.sign-arvo.u.in.tin]
216− ==
217−:: XX deprecate in 409k
218−::
219−++ take-near
220− |= =wire
221− =/ m (strand ,[spar:ames (unit (unit page))])
222− ^- form:m
223− |= tin=strand-input:strand
224− ?+ in.tin `[%skip ~]
225− ~ `[%wait ~]
226− ::
227− [~ %sign * %ames %near ^ *]
228 ?. =(wire wire.u.in.tin)
195 ?. =(wire wire.u.in.tin)
229 `[%skip ~]
196 `[%skip ~]
230 `[%done +>.sign-arvo.u.in.tin]
197 `[%done +>.sign-arvo.u.in.tin]
@@ -364,77 +331,11 @@
364 ;< ~ bind:m (send-wait until)
331 ;< ~ bind:m (send-wait until)
365 (take-wake `until)
332 (take-wake `until)
366::
333::
367−++ mass
368− =/ m (strand ,(list quac:dill))
369− ^- form:m
370− =/ =card:agent:gall [%pass /mass %arvo %d %mass ~]
371− ;< ~ bind:m (send-raw-card card)
372− ;< quz=(list quac:dill) bind:m take-meme
373− (pure:m quz)
374−::
375−++ take-meme
376− =/ m (strand ,(list quac:dill))
377− ^- form:m
378− |= tin=strand-input:strand
379− ?+ in.tin `[%skip ~]
380− ~ `[%wait ~]
381− [~ %sign [%mass ~] %dill %meme *]
382− `[%done p.sign-arvo.u.in.tin]
383− ==
384−::
385++ keen
334++ keen
386− |= [=wire =spar:ames sec=(unit [@ @])]
387− =/ m (strand ,~)
388− ^- form:m
389− (send-raw-card %pass wire %arvo %a %keen sec spar)
390−::
391−++ chum
392− |= [=wire =spar:ames]
393− =/ m (strand ,~)
394− ^- form:m
395− (send-raw-card %pass wire %arvo %a %chum spar)
396−::
397−++ keen-shut
398− |= [=wire =spar:ames]
399− =/ m (strand ,~)
400− ^- form:m
401− (send-raw-card %pass wire %keen & spar)
402−::
403−++ yawn
404− |= [=wire =spar:ames]
405− =/ m (strand ,~)
406− ^- form:m
407− (send-raw-card %pass wire %arvo %a %yawn spar)
408−::
409−++ whey
410− |= [=wire boq=@ud =spar:ames]
411− =/ m (strand ,~)
412− ^- form:m
413− :: encrypted using %chum namespace
414− ::
415− ;< our=@p bind:m get-our
416− =. path.spar
417− [%a %x '1' %$ %whey (scot %ud boq) (scot %p our) path.spar]
418− (chum wire spar)
419−::
420−++ meta
421 |= [=wire =spar:ames]
335 |= [=wire =spar:ames]
422 =/ m (strand ,~)
336 =/ m (strand ,~)
423 ^- form:m
337 ^- form:m
424− ?+ path.spar !!
425− $% [%ames bone=@ %cork ~]
426− [%ames bone=@ %sent seq=@ ~]
427− [%flow bone=@ =dire:ames %cork ~]
428− [?(%ames %flow) bone=@ =dire:ames ?(%sent %loads %naxp %acked) seq=@ ~]
429− ==
430− :: encrypted using %chum namespace
431− ::
432− ;< our=@p bind:m get-our
433− %- send-raw-card
338+ (send-raw-card %pass wire %arvo %a %keen spar)
434− :* %pass wire %arvo %a %chum
435− spar(path [%a %x '1' %$ %meta (scot %p our) path.spar])
436− ==
437− ==
438::
339::
439++ sleep
340++ sleep
440 |= for=@dr
341 |= for=@dr
@@ -693,14 +594,6 @@
693 (strand-fail %list-tree >arg< ~)
594 (strand-fail %list-tree >arg< ~)
694 (pure:m !<((list path) q.r.u.riot))
595 (pure:m !<((list path) q.r.u.riot))
695::
596::
696−++ list-desk
697− |= [[=ship =desk =case] =spur]
698− =* arg +<
699− =/ m (strand arch)
700− ;< =riot:clay bind:m (warp ship desk ~ %sing %y case spur)
701− ?~ riot
702− (strand-fail %list-desk >arg< ~)
703− (pure:m !<(arch q.r.u.riot))
704:: Take Clay read result
597:: Take Clay read result
705::
598::
706++ take-writ
599++ take-writ
@@ -909,10 +802,11 @@
909 =/ poke-vase !>(`start-args:spider`[`tid.bowl `tid byk.bowl file args])
802 =/ poke-vase !>(`start-args:spider`[`tid.bowl `tid byk.bowl file args])
910 ;< ~ bind:m (watch-our /awaiting/[tid] %spider /thread-result/[tid])
803 ;< ~ bind:m (watch-our /awaiting/[tid] %spider /thread-result/[tid])
911 ;< ~ bind:m (poke-our %spider %spider-start poke-vase)
804 ;< ~ bind:m (poke-our %spider %spider-start poke-vase)
805+ ;< ~ bind:m (sleep ~s0) :: wait for thread to start
912 ;< =cage bind:m (take-fact /awaiting/[tid])
806 ;< =cage bind:m (take-fact /awaiting/[tid])
913 ;< ~ bind:m (take-kick /awaiting/[tid])
807 ;< ~ bind:m (take-kick /awaiting/[tid])
914 ?+ p.cage ~|([%strange-thread-result p.cage file tid] !!)
808 ?+ p.cage ~|([%strange-thread-result p.cage file tid] !!)
915 %thread-done (pure:m %& q.cage)
809 %thread-done (pure:m %& q.cage)
916− %thread-fail (pure:m %| !<([term tang] q.cage))
810+ %thread-fail (pure:m %| ;;([term tang] q.q.cage))
917 ==
811 ==
918--
812--
base-desk/lib/test.hoon+1−22
@@ -40,7 +40,7 @@
40 %| ~
40 %| ~
41 %& ['expected failure - succeeded' ~]
41 %& ['expected failure - succeeded' ~]
42 ==
42 ==
43−:: +expect-success: kicks a trap, expecting success; returns trace on failure
43+:: +expect-runs: kicks a trap, expecting success; returns trace on failure
44::
44::
45++ expect-success
45++ expect-success
46 |= a=(trap)
46 |= a=(trap)
@@ -50,27 +50,6 @@
50 %& ~
50 %& ~
51 %| ['expected success - failed' p.b]
51 %| ['expected success - failed' p.b]
52 ==
52 ==
53−::
54−:: +expect-fail-message: kicks a trap, expecting crash, compares the resulting error message
55−++ expect-fail-message
56− |= [msg=@t a=(trap)]
57− ^- tang
58− =/ b (mule a)
59− ?- -.b
60− %| |^
61− =/ =tang (flatten +.b)
62− ?: ?=(^ (find (trip msg) tang))
63− ~
64− ['expected error message - not found' ~]
65− ++ flatten
66− |= tang=(list tank)
67− =| res=tape
68− |- ^- tape
69− ?~ tang res
70− $(tang t.tang, res (weld ~(ram re i.tang) res))
71− --
72− %& ['expected failure - succeeded' ~]
73− ==
74:: $a-test-chain: a sequence of tests to be run
53:: $a-test-chain: a sequence of tests to be run
75::
54::
76:: NB: arms shouldn't start with `test-` so that `-test % ~` runs
55:: NB: arms shouldn't start with `test-` so that `-test % ~` runs
base-desk/lib/verb.hoon+11−88
@@ -1,6 +1,6 @@
1:: Print what your agent is doing.
1:: Print what your agent is doing.
2::
2::
3−/- *verb
3+/- verb
4::
4::
5|= [loud=? =agent:gall]
5|= [loud=? =agent:gall]
6=| bowl-print=_|
6=| bowl-print=_|
@@ -14,10 +14,7 @@
14 ^- (quip card:agent:gall agent:gall)
14 ^- (quip card:agent:gall agent:gall)
15 %- (print bowl |.("{<dap.bowl>}: on-init"))
15 %- (print bowl |.("{<dap.bowl>}: on-init"))
16 =^ cards agent on-init:ag
16 =^ cards agent on-init:ag
17− :_ this
17+ [[(emit-event %on-init ~) cards] this]
18− :_ :_ cards
19− (emit-event %on-init ~)
20− (emit-event-plus bowl [%on-init ~] cards)
21::
18::
22++ on-save
19++ on-save
23 ^- vase
20 ^- vase
@@ -29,10 +26,7 @@
29 ^- (quip card:agent:gall agent:gall)
26 ^- (quip card:agent:gall agent:gall)
30 %- (print bowl |.("{<dap.bowl>}: on-load"))
27 %- (print bowl |.("{<dap.bowl>}: on-load"))
31 =^ cards agent (on-load:ag old-state)
28 =^ cards agent (on-load:ag old-state)
32− :_ this
29+ [[(emit-event %on-load ~) cards] this]
33− :_ :_ cards
34− (emit-event %on-load ~)
35− (emit-event-plus bowl [%on-load ~] cards)
36::
30::
37++ on-poke
31++ on-poke
38 |= [=mark =vase]
32 |= [=mark =vase]
@@ -44,23 +38,17 @@
44 %bowl `this(bowl-print !bowl-print)
38 %bowl `this(bowl-print !bowl-print)
45 ==
39 ==
46 =^ cards agent (on-poke:ag mark vase)
40 =^ cards agent (on-poke:ag mark vase)
47− :_ this
41+ [[(emit-event %on-poke mark) cards] this]
48− :_ :_ cards
49− (emit-event %on-poke mark)
50− (emit-event-plus bowl [%on-poke mark (mug q.vase)] cards)
51::
42::
52++ on-watch
43++ on-watch
53 |= =path
44 |= =path
54 ^- (quip card:agent:gall agent:gall)
45 ^- (quip card:agent:gall agent:gall)
55 %- (print bowl |.("{<dap.bowl>}: on-watch on path {<path>}"))
46 %- (print bowl |.("{<dap.bowl>}: on-watch on path {<path>}"))
56 =^ cards agent
47 =^ cards agent
57− ?: ?=([%verb ?(%events %events-plus) ~] path)
48+ ?: ?=([%verb %events ~] path)
58 [~ agent]
49 [~ agent]
59 (on-watch:ag path)
50 (on-watch:ag path)
60− :_ this
51+ [[(emit-event %on-watch path) cards] this]
61− :_ :_ cards
62− (emit-event %on-watch path)
63− (emit-event-plus bowl [%on-watch path] cards)
64::
52::
65++ on-leave
53++ on-leave
66 |= =path
54 |= =path
@@ -69,10 +57,7 @@
69 ?: ?=([%verb %event ~] path)
57 ?: ?=([%verb %event ~] path)
70 [~ this]
58 [~ this]
71 =^ cards agent (on-leave:ag path)
59 =^ cards agent (on-leave:ag path)
72− :_ this
60+ [[(emit-event %on-leave path) cards] this]
73− :_ :_ cards
74− (emit-event %on-leave path)
75− (emit-event-plus bowl [%on-leave path] cards)
76::
61::
77++ on-peek
62++ on-peek
78 |= =path
63 |= =path
@@ -85,17 +70,7 @@
85 ^- (quip card:agent:gall agent:gall)
70 ^- (quip card:agent:gall agent:gall)
86 %- (print bowl |.("{<dap.bowl>}: on-agent on wire {<wire>}, {<-.sign>}"))
71 %- (print bowl |.("{<dap.bowl>}: on-agent on wire {<wire>}, {<-.sign>}"))
87 =^ cards agent (on-agent:ag wire sign)
72 =^ cards agent (on-agent:ag wire sign)
88− :_ this
73+ [[(emit-event %on-agent wire -.sign) cards] this]
89− :_ :_ cards
90− (emit-event %on-agent wire -.sign)
91− =; =^sign
92− (emit-event-plus bowl [%on-agent wire sign] cards)
93− ?- -.sign
94− %poke-ack [%poke-ack ?=(~ p.sign)]
95− %watch-ack [%watch-ack ?=(~ p.sign)]
96− %kick [%kick ~]
97− %fact [%fact p.cage.sign (mug q.q.cage.sign)]
98− ==
99::
74::
100++ on-arvo
75++ on-arvo
101 |= [=wire =sign-arvo]
76 |= [=wire =sign-arvo]
@@ -103,20 +78,14 @@
103 %- %+ print bowl |.
78 %- %+ print bowl |.
104 "{<dap.bowl>}: on-arvo on wire {<wire>}, {<[- +<]:sign-arvo>}"
79 "{<dap.bowl>}: on-arvo on wire {<wire>}, {<[- +<]:sign-arvo>}"
105 =^ cards agent (on-arvo:ag wire sign-arvo)
80 =^ cards agent (on-arvo:ag wire sign-arvo)
106− :_ this
81+ [[(emit-event %on-arvo wire [- +<]:sign-arvo) cards] this]
107− :_ :_ cards
108− (emit-event %on-arvo wire [- +<]:sign-arvo)
109− (emit-event-plus bowl [%on-arvo wire [- +<]:sign-arvo] cards)
110::
82::
111++ on-fail
83++ on-fail
112 |= [=term =tang]
84 |= [=term =tang]
113 ^- (quip card:agent:gall agent:gall)
85 ^- (quip card:agent:gall agent:gall)
114 %- (print bowl |.("{<dap.bowl>}: on-fail with term {<term>}"))
86 %- (print bowl |.("{<dap.bowl>}: on-fail with term {<term>}"))
115 =^ cards agent (on-fail:ag term tang)
87 =^ cards agent (on-fail:ag term tang)
116− :_ this
88+ [[(emit-event %on-fail term) cards] this]
117− :_ :_ cards
118− (emit-event %on-fail term)
119− (emit-event-plus bowl [%on-fail term] cards)
120--
89--
121::
90::
122++ print
91++ print
@@ -130,53 +99,7 @@
130 same
99 same
131::
100::
132++ emit-event
101++ emit-event
133− |= =event
102+ |= =event:verb
134 ^- card:agent:gall
103 ^- card:agent:gall
135 [%give %fact ~[/verb/events] %verb-event !>(event)]
104 [%give %fact ~[/verb/events] %verb-event !>(event)]
136−::
137−++ emit-event-plus
138− |= [=bowl:gall =cause cards=(list card:agent:gall)]
139− ^- card:agent:gall
140− =; event=event-plus
141− [%give %fact ~[/verb/events-plus] %verb-event-plus !>(event)]
142− =- [act.bowl now.bowl src.bowl sap.bowl cause -]
143− %+ turn cards
144− |= =card:agent:gall
145− ^- effect
146− ::TODO for %fact, %kick, could calculate how many ships affected
147− ?- card
148− [%pass * %agent * ?(%poke %poke-as) *]
149− =, q.card
150− =/ =cage ?-(-.task.q.card %poke cage.task, %poke-as [mark.task q.cage.task])
151− [%poke p.card [ship name] p.cage `@`(mug q.q.cage)]
152− ::
153− [%pass * %agent * ?(%watch %watch-as) *]
154− =, q.card
155− =/ =path ?-(-.task.q.card %watch path.task, %watch-as path.task)
156− [%watch p.card [ship name] path]
157− ::
158− [%pass * %agent * %leave *]
159− =, q.card
160− [%leave p.card [ship name]]
161− ::
162− [%give %fact *]
163− =, p.card
164− [%fact paths p.cage (mug q.q.cage)]
165− ::
166− [%give %kick *]
167− [%kick paths.p.card]
168− ::
169− [%give ?(%poke-ack %watch-ack) *]
170− ~| %explicit-ack
171− !! :: shouldn't be given explicitly
172− ::
173− [%pass * %arvo *]
174− [%arvo p.card -.q.card +<.q.card]
175− ::
176− [%pass *]
177− [%arvo p.card %$ -.q.card]
178− ::
179− [%slip *]
180− $(card [%pass //slip p.card])
181− ==
182--
105--
base-desk/mar/css.hoon+5−9
@@ -6,15 +6,11 @@
6=, mimes:html
6=, mimes:html
7|_ mud=@t
7|_ mud=@t
8++ grow :: convert to
8++ grow :: convert to
9− |%
10− ++ mime [/text/css (as-octs mud)] :: convert to %mime
9+ |% ++ mime [/text/css (as-octs mud)] :: convert to %mime
11− ++ hymn :: convert to %hymn
10+ ++ elem ;style :: convert to %hymn
12− |^ html
13− ++ style ;style
14− ;- (trip mud)
11+ ;- (trip mud)
15− ==
12+ ==
16− ++ html ;html:(head:"{style}" body)
13+ ++ hymn ;html:(head:"{elem}" body)
17− --
18 --
14 --
19++ grab
15++ grab
20 |% :: convert from
16 |% :: convert from
base-desk/mar/hoon.hoon+31−285
@@ -1,295 +1,41 @@
1+:::: /hoon/hoon/mar
2+ ::
3+/? 310
4+::
5+=, eyre
1|_ own=@t
6|_ own=@t
2::
7::
3++ grow :: convert to
8++ grow :: convert to
4 |%
9 |%
5 ++ mime `^mime`[/text/x-hoon (as-octs:mimes:html own)] :: convert to %mime
10 ++ mime `^mime`[/text/x-hoon (as-octs:mimes:html own)] :: convert to %mime
11+ ++ elem :: convert to %html
12+ ;div:pre(urb_codemirror "", mode "hoon"):"{(trip own)}"
13+ :: =+ gen-id="src-{<`@ui`(mug own)>}"
14+ :: ;div
15+ :: ;textarea(id "{gen-id}"):"{(trip own)}"
16+ :: ;script:"""
17+ :: CodeMirror.fromTextArea(
18+ :: window[{<gen-id>}],
19+ :: \{lineNumbers:true, readOnly:true}
20+ :: )
21+ :: """
22+ :: ==
6 ++ hymn
23 ++ hymn
7− ^- manx
24+ :: ;html:(head:title:"Source" "+{elem}")
8− =/ to-wall
25+ ;html
9− |= =tape
26+ ;head
10− ^- wall
27+ ;title:"Source"
11− %+ roll (flop tape)
28+ ;script@"//cdnjs.cloudflare.com/ajax/libs/codemirror/4.3.0/codemirror.js";
12− |= [char=@tD =wall]
29+ ;script@"/lib/syntax/hoon.js";
13− ?~ wall
30+ ;link(rel "stylesheet", href "//cdnjs.cloudflare.com/ajax/libs/".
14− [[char ~] ~]
31+ "codemirror/4.3.0/codemirror.min.css");
15− ?: =('\0a' char)
32+ ;link/"/lib/syntax/codemirror.css"(rel "stylesheet");
16− [~ wall]
33+ ==
17− [[char i.wall] t.wall]
34+ ;body
18− ::
19− =/ src=tape (trip own)
35+ ;textarea#src:"{(trip own)}"
20− =/ count=@ud (lent (to-wall src))
36+ ;script:'CodeMirror.fromTextArea(src, {lineNumbers:true, readOnly:true})'
21− =; [style=tape script=tape]
22− ;html
23− ;head
24− ;title: source
25− ;meta(charset "utf-8");
26− ;meta(name "viewport", content "width=device-width, initial-scale=1");
27− ;style: {style}
28− ==
29− ;body
30− ;div.viewer
31− :: ;div.viewer-bar
32− :: ;span.viewer-name: {(scow %ud count)} lines
33− :: ;button.copy-link(id "copy-link", hidden ""): copy link
34− :: ==
35− ;div.code
36− ;pre.gutter(id "gutter");
37− ;div.code-body
38− ;div(id "hl");
39− ;pre.code-pre(id "code"): {src}
40− ==
41− ==
42− ==
43− ;script: {script}
44− ==
45 ==
37 ==
46− ::
38+ ==
47− :-
48− ^~ ^= style
49− ^- tape
50− %- trip
51− '''
52− :root {
53− --bg: #fbfbf9;
54− --panel: #ffffff;
55− --gutter-bg: #f3f3ef;
56− --line: #e4e4dd;
57− --fg: #2b2b2b;
58− --fg-dim: #9a9a90;
59− --sel: #fff7d6;
60− --sel-edge: #f1e4a8;
61− --accent: #4a6da7;
62− --lh: 20px;
63− --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
64− "Liberation Mono", "Courier New", monospace;
65− }
66− * { box-sizing: border-box; }
67− html, body {
68− margin: 0;
69− height: 100%;
70− background: var(--bg);
71− color: var(--fg);
72− font-family: var(--mono);
73− -webkit-font-smoothing: antialiased;
74− }
75− .viewer {
76− height: 100vh;
77− display: flex;
78− flex-direction: column;
79− padding: 16px;
80− gap: 12px;
81− }
82− .viewer-bar {
83− flex: 0 0 auto;
84− display: flex;
85− align-items: center;
86− gap: 12px;
87− font-size: 13px;
88− color: var(--fg-dim);
89− }
90− .viewer-name {
91− flex: 1 1 auto;
92− min-width: 0;
93− overflow: hidden;
94− text-overflow: ellipsis;
95− white-space: nowrap;
96− color: var(--fg);
97− }
98− .copy-link {
99− flex: 0 0 auto;
100− padding: 4px 12px;
101− border: 1px solid var(--line);
102− border-radius: 6px;
103− background: var(--panel);
104− color: var(--fg-dim);
105− font: inherit;
106− font-size: 12px;
107− cursor: pointer;
108− transition: color .12s, border-color .12s;
109− }
110− .copy-link:hover { color: var(--accent); border-color: var(--accent); }
111− .copy-link[hidden] { display: none; }
112− .code {
113− flex: 1 1 auto;
114− min-height: 0;
115− display: flex;
116− align-items: flex-start;
117− overflow: auto;
118− background: var(--panel);
119− border: 1px solid var(--line);
120− border-radius: 8px;
121− }
122− .code-body {
123− position: relative;
124− flex: 1 1 auto;
125− min-width: 0;
126− width: max-content;
127− }
128− #gutter, #code {
129− margin: 0;
130− padding: 14px 0;
131− font-family: var(--mono);
132− font-size: 13px;
133− line-height: var(--lh);
134− white-space: pre;
135− tab-size: 2;
136− }
137− #gutter {
138− position: sticky;
139− left: 0;
140− z-index: 2;
141− flex: 0 0 auto;
142− padding-left: 16px;
143− padding-right: 12px;
144− text-align: right;
145− color: var(--fg-dim);
146− background: var(--gutter-bg);
147− border-right: 1px solid var(--line);
148− user-select: none;
149− -webkit-user-select: none;
150− cursor: pointer;
151− }
152− #code {
153− display: block;
154− padding-left: 14px;
155− padding-right: 18px;
156− color: var(--fg);
157− }
158− #hl {
159− position: absolute;
160− left: 0;
161− right: 0;
162− z-index: 0; /* under the text */
163− display: none;
164− background: var(--sel);
165− box-shadow: inset 2px 0 0 var(--sel-edge);
166− pointer-events: none;
167− }
168− #code { position: relative; z-index: 1; } /* text above the bar */
169− :focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
170− '''
171− ^~ ^= code
172− ^- tape
173− %- trip
174− '''
175− (function () {
176− "use strict";
177− const panel = document.querySelector(".code"); // the scroll container
178− const code = document.getElementById("code");
179− const gutter = document.getElementById("gutter");
180− const hl = document.getElementById("hl");
181− if (!panel || !code || !gutter || !hl) return;
182− const text = code.textContent;
183− let lineCount = text.length ? text.split("\n").length : 1;
184− if (text.endsWith("\n")) lineCount -= 1;
185− if (lineCount < 1) lineCount = 1;
186− (function fillGutter() {
187− let s = "";
188− for (let i = 1; i <= lineCount; i++) s += i + "\n";
189− gutter.textContent = s;
190− })();
191− let lineH = 0;
192− let codeTop = 0; // code's content-box top padding, the y-origin of line 1
193− function measure() {
194− const cs = getComputedStyle(code);
195− const lh = parseFloat(cs.lineHeight);
196− lineH = isNaN(lh) ? parseFloat(cs.fontSize) * 1.55 : lh;
197− codeTop = parseFloat(cs.paddingTop) || 0;
198− positionHighlight(); // keep the bar correct after a re-measure
199− }
200− let anchor = null;
201− let selLo = 0;
202− let selHi = 0;
203− function positionHighlight() {
204− if (!selLo) { hl.style.display = "none"; return; }
205− hl.style.display = "block";
206− hl.style.top = (codeTop + (selLo - 1) * lineH) + "px";
207− hl.style.height = ((selHi - selLo + 1) * lineH) + "px";
208− }
209− function applySel(lo, hi) {
210− selLo = lo;
211− selHi = hi;
212− positionHighlight();
213− }
214− function deselect() {
215− selLo = selHi = 0;
216− anchor = null;
217− positionHighlight();
218− history.replaceState(null, "", location.pathname + location.search);
219− }
220− function parseHash(hash) {
221− const m = /^#L(\d+)(?:-L(\d+))?$/.exec(hash || "");
222− if (!m) return null;
223− let lo = parseInt(m[1], 10);
224− let hi = m[2] ? parseInt(m[2], 10) : lo;
225− if (hi < lo) { const t = lo; lo = hi; hi = t; }
226− lo = Math.max(1, Math.min(lo, lineCount));
227− hi = Math.max(1, Math.min(hi, lineCount));
228− return [lo, hi];
229− }
230− function setHash(lo, hi) {
231− const frag = lo === hi ? "L" + lo : "L" + lo + "-L" + hi;
232− history.replaceState(null, "", "#" + frag);
233− }
234− function scrollToLine(n) {
235− const y = codeTop + (n - 1) * lineH;
236− if (y < panel.scrollTop || y > panel.scrollTop + panel.clientHeight) {
237− panel.scrollTop = Math.max(0, y - panel.clientHeight / 2);
238− }
239− }
240− function selectFromHash(scroll) {
241− const r = parseHash(location.hash);
242− if (!r) return false;
243− anchor = r[0];
244− applySel(r[0], r[1]);
245− if (scroll) scrollToLine(r[0]);
246− return true;
247− }
248− function lineFromEvent(e) {
249− // y within the code content: pointer relative to the code pre's rendered
250− // top, which already accounts for scroll since getBoundingClientRect is
251− // viewport-relative and the pre moves as the panel scrolls.
252− const rect = code.getBoundingClientRect();
253− const y = e.clientY - rect.top - codeTop;
254− let n = Math.floor(y / lineH) + 1;
255− if (n < 1) n = 1;
256− if (n > lineCount) n = lineCount;
257− return n;
258− }
259− function onClick(e) {
260− const inGutter = e.target === gutter;
261− if (!inGutter && !e.shiftKey) return; // normal text interaction in code
262− const n = lineFromEvent(e);
263− if (!e.shiftKey && selLo === n && selHi === n) {
264− deselect();
265− return;
266− }
267− if (e.shiftKey && anchor !== null) {
268− applySel(Math.min(anchor, n), Math.max(anchor, n));
269− setHash(selLo, selHi);
270− } else {
271− anchor = n;
272− applySel(n, n);
273− setHash(n, n);
274− }
275− }
276− gutter.addEventListener("click", onClick);
277− code.addEventListener("click", onClick);
278− document.addEventListener("keydown", function (e) {
279− if (e.key === "Escape") deselect();
280− });
281− window.addEventListener("hashchange", function () {
282− if (!selectFromHash(true)) deselect();
283− });
284− let rz = null;
285− window.addEventListener("resize", function () {
286− clearTimeout(rz);
287− rz = setTimeout(measure, 100);
288− });
289− measure();
290− selectFromHash(true);
291− })();
292− '''
293 ++ txt
39 ++ txt
294 (to-wain:format own)
40 (to-wain:format own)
295 --
41 --
base-desk/mar/htm.hoon+11−2
@@ -2,5 +2,14 @@
2:::: /hoon/htm/mar
2:::: /hoon/htm/mar
3 ::
3 ::
4/? 310
4/? 310
5−/= htm /mar/html
5+|_ own=manx
6−htm
6+::
7+++ grad %noun
8+++ grow :: convert to
9+ |%
10+ ++ noun own
11+ ++ hymn own
12+ --
13+++ grab |% :: convert from
14+ ++ noun manx :: clam from %noun
15+-- --
base-desk/mar/js.hoon+4−7
@@ -8,13 +8,10 @@
8++ grow
8++ grow
9 |%
9 |%
10 ++ mime [/application/javascript (as-octs:mimes:html (@t mud))]
10 ++ mime [/application/javascript (as-octs:mimes:html (@t mud))]
11− ++ hymn :: convert to %hymn
12− |^ html
13− ++ script ;script
11+ ++ elem ;script
14− ;- (trip (@t mud))
12+ ;- (trip (@t mud))
15− ==
13+ ==
16− ++ html ;html:(head:"{script}" body)
14+ ++ hymn ;html:(head:"+{elem}" body)
17− --
18 --
15 --
19++ grab
16++ grab
20 |% :: convert from
17 |% :: convert from
base-desk/mar/noun.hoon−3
@@ -8,9 +8,6 @@
8++ grab |%
8++ grab |%
9 ++ noun *
9 ++ noun *
10 --
10 --
11−++ grow |%
12− ++ mime [/application/x-urb-jam (as-octs:mimes:html (jam non))]
13− --
14++ grad
11++ grad
15 |%
12 |%
16 ++ form %noun
13 ++ form %noun
base-desk/mar/story.hoon+10−5
@@ -46,13 +46,18 @@
46 [/text/x-urb-story (as-octs:mimes:html (of-wain:format txt))]
46 [/text/x-urb-story (as-octs:mimes:html (of-wain:format txt))]
47 ++ txt
47 ++ txt
48 ^- wain
48 ^- wain
49− %- zing
49+ %- snoc :_ '' :: ensures terminating newline is present
50− %+ join `wain`~['---']
51 %+ murn ~(tap by tale)
50 %+ murn ~(tap by tale)
52− |= [=tako:clay =proses]
51+ |= [[=tako:clay =proses]]
53− ^- (unit wain)
52+ ^- (unit cord)
54 ?~ proses ~
53 ?~ proses ~
54+ %- some
55+ %- crip
56+ ;: welp
55− (some (chapter-to-text tako proses))
57+ (tako-to-text tako)
58+ (proses-to-text proses)
59+ "---"
60+ ==
56 --
61 --
57++ grab
62++ grab
58 |% :: convert from
63 |% :: convert from
base-desk/mar/tang.hoon+5−5
@@ -16,15 +16,15 @@
16 %& a+p.result
16 %& a+p.result
17 %| a+[a+[%s '[[output rendering error]]']~]~
17 %| a+[a+[%s '[[output rendering error]]']~]~
18 ==
18 ==
19− ++ txt
19+ ::
20− ^- wain
20+ ++ elem
21+ =- ;pre:code:"{(of-wall -)}"
22+ ^- wall %- zing ^- (list wall)
21− %+ turn (flop tan)
23+ (turn (flop tan) |=(a=tank (wash 0^160 a)))
22− |=(=tank (crip ~(ram re tank)))
23 --
24 --
24++ grab :: convert from
25++ grab :: convert from
25 |%
26 |%
26 ++ noun (list ^tank) :: clam from %noun
27 ++ noun (list ^tank) :: clam from %noun
27 ++ tank |=(a=^tank [a]~)
28 ++ tank |=(a=^tank [a]~)
28− ++ txt |=(=wain (flop (turn wain tank)))
29 --
29 --
30--
30--
base-desk/mar/thread-fail.hoon+1−1
@@ -1,4 +1,4 @@
1−|_ err=[term tang]
1+|_ err=*
2++ grab
2++ grab
3 |%
3 |%
4 ++ noun (pair term tang)
4 ++ noun (pair term tang)
base-desk/mar/txt.hoon+1
@@ -18,6 +18,7 @@
18 => v=.
18 => v=.
19 |%
19 |%
20 ++ mime => v [/text/plain (as-octs (of-wain txt))]
20 ++ mime => v [/text/plain (as-octs (of-wain txt))]
21+ ++ elem => v ;pre: {(trip (of-wain txt))}
21 --
22 --
22++ grad
23++ grad
23 |%
24 |%
base-desk/mar/udon.hoon+4
@@ -9,6 +9,10 @@
9 ++ mime [/text/x-unmark (as-octs:mimes:html mud)]
9 ++ mime [/text/x-unmark (as-octs:mimes:html mud)]
10 ++ txt
10 ++ txt
11 (to-wain:format mud)
11 (to-wain:format mud)
12+ ++ elem
13+ ^- manx
14+ =, cram
15+ elm:(static (ream mud))
12 ++ front :: XX performance, types
16 ++ front :: XX performance, types
13 ^- (map term knot)
17 ^- (map term knot)
14 %- ~(run by inf:(static:cram (ream mud)))
18 %- ~(run by inf:(static:cram (ream mud)))
base-desk/mar/umd.hoon+4
@@ -9,6 +9,10 @@
9 ++ mime [/text/x-unmark (as-octs:mimes:html mud)]
9 ++ mime [/text/x-unmark (as-octs:mimes:html mud)]
10 ++ txt
10 ++ txt
11 (to-wain:format mud)
11 (to-wain:format mud)
12+ ++ elem
13+ ^- manx
14+ =, cram
15+ elm:(static (ream mud))
12 ++ front :: XX performance, types
16 ++ front :: XX performance, types
13 ^- (map term knot)
17 ^- (map term knot)
14 %- ~(run by inf:(static:cram (ream mud)))
18 %- ~(run by inf:(static:cram (ream mud)))
base-desk/mar/urb.hoon+1−1
@@ -1,5 +1,5 @@
1::
1::
2−:::: /hoon/urb/mar
2+:::: /hoon/elem/urb/mar
3 ::
3 ::
4/? 310
4/? 310
5=, mimes:html
5=, mimes:html
base-desk/sources.txt+3−2
@@ -1,3 +1,4 @@
1urbit-src/pkg/base-dev
1urbit-src/pkg/base-dev
2−urbit-src/pkg/landscape
2+urbit-src/pkg/garden-dev
3+urbit-src/pkg/arvo/lib/naive
3−urbit-src/pkg/arvo
4+urbit-src/pkg/arvo/lib/tiny
base-desk/sur/aquarium.hoon+5−8
@@ -10,6 +10,8 @@
10:: Short names are simply the first letter of each word plus `s` if
10:: Short names are simply the first letter of each word plus `s` if
11:: it's a list.
11:: it's a list.
12::
12::
13+/+ pill
14+=, pill-lib=pill
13|%
15|%
14+$ az-log [topics=(lest @) data=@t]
16+$ az-log [topics=(lest @) data=@t]
15+$ az-state
17+$ az-state
@@ -32,13 +34,14 @@
32 [%verb p=(unit ?)]
34 [%verb p=(unit ?)]
33 task-arvo
35 task-arvo
34 ==
36 ==
37++$ pill pill:pill-lib
35::
38::
36+$ aqua-event
39+$ aqua-event
37− $% [%init-ship who=ship fake=? feed=(unit feed:jael)]
40+ $% [%init-ship who=ship fake=?]
38 [%pause-events who=ship]
41 [%pause-events who=ship]
39 [%snap-ships lab=term hers=(list ship)]
42 [%snap-ships lab=term hers=(list ship)]
40 [%restore-snap lab=term]
43 [%restore-snap lab=term]
41− [%read [from=[=ship life=@ubC] =path] for=[=lane:ames life=@ubC] num=@ud]
44+ [%read [from=ship =path] [for=lane:ames num=@ud]]
42 [%event who=ship ue=unix-event]
45 [%event who=ship ue=unix-event]
43 ==
46 ==
44::
47::
@@ -71,9 +74,6 @@
71 %+ pair wire
74 %+ pair wire
72 $% [%blit p=(list blit:dill)]
75 $% [%blit p=(list blit:dill)]
73 [%send p=lane:ames q=@]
76 [%send p=lane:ames q=@]
74− [%push p=(list lane:pact:ames) q=@]
75− [%saxo sponsors=(list ship)]
76− [%nail =ship lanes=(list lane:ames)]
77 [%doze p=(unit @da)]
77 [%doze p=(unit @da)]
78 [%thus p=@ud q=(unit hiss:eyre)]
78 [%thus p=@ud q=(unit hiss:eyre)]
79 [%ergo p=@tas q=mode:clay]
79 [%ergo p=@tas q=mode:clay]
@@ -82,8 +82,5 @@
82 [%kill ~]
82 [%kill ~]
83 [%init ~]
83 [%init ~]
84 [%request id=@ud request=request:http]
84 [%request id=@ud request=request:http]
85− [%turf p=(list turf)]
86− [%unto =unto:gall] :: internal gifts to host ships
87− :: (%facts are transformed to %raw-facts)
88 ==
85 ==
89--
86--
base-desk/sur/hood.hoon+98−202
@@ -10,41 +10,12 @@
10 ==
10 ==
11::
11::
12+$ pikes (map desk pike)
12+$ pikes (map desk pike)
13−:: $jump: changes to update source change requests
14::
13::
15−+$ jump
16− $% [%all all=(map dock dock)] :: pending requests
17− [%add old=dock new=dock] :: new request
18− [%yea old=dock new=dock] :: approved
19− [%nay old=dock new=dock] :: denied
20− ==
21:: $rung: reference to upstream commit
14:: $rung: reference to upstream commit
22::
15::
23+$ rung [=aeon =weft]
16+$ rung [=aeon =weft]
24−:: #sync-record: source and destination of a kiln sync
25−::
26−+$ sync-record ::
27− $: syd=desk :: local desk
28− her=ship :: foreign ship
29− sud=desk :: foreign desk
30− ==
31−::
32−+$ sync-state ::
33− $: nun=@ta :: nonce
34− kid=(unit desk) :: has kids desk too?
35− let=@ud :: next revision
36− nit=(unit ?) :: automerge or default
37− hav=(unit @ud) :: update available
38− yea=? :: update approved
39− ==
40−::
41−+$ sync-update
42− $% [%new for=sync-record rev=@ud]
43− [%done for=sync-record rev=@ud]
44− [%drop for=sync-record rev=@ud]
45− [%pending pending=(set [for=sync-record rev=@ud])]
46− ==
47::
17::
18++$ sync-state [nun=@ta kid=(unit desk) let=@ud]
48+$ sink (unit [her=@p sud=desk kid=(unit desk) let=@ud])
19+$ sink (unit [her=@p sud=desk kid=(unit desk) let=@ud])
49:: +truncate-hash: get last 5 digits of hash and convert to tape
20:: +truncate-hash: get last 5 digits of hash and convert to tape
50::
21::
@@ -59,7 +30,7 @@
59 =/ ego (scot %p our)
30 =/ ego (scot %p our)
60 =/ wen (scot %da now)
31 =/ wen (scot %da now)
61 :* .^(rock:tire %cx /[ego]//[wen]/tire)
32 :* .^(rock:tire %cx /[ego]//[wen]/tire)
62− .^(cone %cx /[ego]//[wen]/domes)
33+ .^(=cone %cx /[ego]//[wen]/domes)
63 .^((map desk [ship desk]) %gx /[ego]/hood/[wen]/kiln/sources/noun)
34 .^((map desk [ship desk]) %gx /[ego]/hood/[wen]/kiln/sources/noun)
64 .^ (map [desk ship desk] sync-state) %gx
35 .^ (map [desk ship desk] sync-state) %gx
65 /[ego]/hood/[wen]/kiln/syncs/noun
36 /[ego]/hood/[wen]/kiln/syncs/noun
@@ -72,73 +43,43 @@
72 ^- tang
43 ^- tang
73 =/ ego (scot %p our)
44 =/ ego (scot %p our)
74 =/ wen (scot %da now)
45 =/ wen (scot %da now)
75− =+ prep=[tyr cone sor zyn]=(report-prep our now)
46+ =/ prep (report-prep our now)
76− ?: =(%$ filt)
47+ ?~ filt
77 %- zing
48 %- zing
78− %+ turn
79− ?^ desks
80− (flop desks)
49+ %+ turn (flop desks)
81− %+ sort ~(tap in ~(key by tyr.prep))
82− |= [a=desk b=desk]
83− ?: |(=(a %kids) =(b %base)) &
84− ?: |(=(a %base) =(b %kids)) |
85− (aor b a)
86 |=(syd=@tas (report-vat prep our now syd verb))
50 |=(syd=@tas (report-vat prep our now syd verb))
87− =/ deks=(list [=desk =zest wic=(set weft)])
51+ =/ deks
88 ?~ desks
52 ?~ desks
89− %+ sort ~(tap by tyr.prep)
53+ %+ sort
90− |= [[a=desk *] [b=desk *]]
54+ (sort ~(tap in -.prep) |=([[a=@ *] b=@ *] !(aor a b)))
91− ?: |(=(a %kids) =(b %base)) &
55+ |=([[a=@ *] [b=@ *]] ?|(=(a %kids) =(b %base)))
92− ?: |(=(a %base) =(b %kids)) |
56+ %+ skip ~(tap in -.prep)
93− (aor b a)
57+ |=([syd=@tas *] =(~ (find ~[syd] desks)))
94− %+ murn (flop desks)
95− |= des=desk
96− ^- (unit [=desk =zest wic=(set weft)])
97− ?~ got=(~(get by tyr.prep) des)
98− ~
99− `[des u.got]
100 ?: =(filt %blocking)
58 ?: =(filt %blocking)
101− =/ base-weft=(unit weft)
59+ =/ base-wic
102− %- ~(rep in wic:(~(got by tyr.prep) %base))
60+ %+ sort ~(tap by wic:(~(got by -.prep) %base))
103− |= [=weft out=(unit weft)]
61+ |=([[* a=@ud] [* b=@ud]] (gth a b))
104− ?~ out
105− `weft
106− ?: (lth num.weft num.u.out)
107− out
108− `weft
109− ?~ base-weft ~['%base already up-to-date']
62+ ?~ base-wic ~[leaf+"%base already up-to-date"]
110 =/ blockers=(list desk)
63 =/ blockers=(list desk)
111− %+ sort
64+ %+ turn
112− ^- (list desk)
65+ %+ skip ~(tap in -.prep)
113− %+ murn deks
114− |= [=desk =zest wic=(set weft)]
66+ |= [* [zest=@tas wic=(set weft)]]
115− ^- (unit ^desk)
116− ?. =(%live zest)
67+ ?. =(zest %live) &
117− ~
118− ?: (~(has in wic) u.base-weft)
68+ (~(has in wic) i.base-wic)
119− ~
120− `desk
69+ |=([syd=desk *] syd)
121− aor
122− ?~ blockers ~['No desks blocking upgrade']
70+ ?~ blockers ~[leaf+"No desks blocking upgrade, run |bump to apply"]
71+ :- [%rose [" %" "To unblock upgrade run |suspend %" ""] blockers]
123 %- zing
72 %- zing
124− ^- (list tang)
125− :- :~ %+ rap 3
126− :~ 'These desks are blocking upgrade to [%zuse '
127− (scot %ud num.u.base-weft)
128− ']:'
129− == ==
130− %+ turn blockers
73+ %+ turn (flop blockers)
131 |=(syd=desk (report-vat prep our now syd verb))
74 |=(syd=desk (report-vat prep our now syd verb))
132 ::
75 ::
133 %- zing
76 %- zing
134 %+ turn
77 %+ turn
135 ?+ filt !!
78 ?+ filt !!
79+ ::
136 %exists
80 %exists
137 %+ skip deks
81 %+ skip deks
138− |= [syd=desk *]
82+ |=([syd=desk *] =(ud:.^(cass %cw /[ego]/[syd]/[wen]) 0))
139− ?~ got=(~(get by cone.prep) our syd)
140− &
141− =(0 let.u.got)
142 ::
83 ::
143 %running
84 %running
144 %+ skim deks
85 %+ skim deks
@@ -149,152 +90,107 @@
149 |= [syd=@tas [zest=@tas *]]
90 |= [syd=@tas [zest=@tas *]]
150 ?| =(syd %kids)
91 ?| =(syd %kids)
151 =(zest %live)
92 =(zest %live)
152− ?~ got=(~(get by cone.prep) our syd)
93+ =(ud:.^(cass %cw /[ego]/[syd]/[wen]) 0)
153− &
154− =(0 let.u.got)
155 ==
94 ==
156 ::
95 ::
157 %exists-not
96 %exists-not
158 %+ skim deks
97 %+ skim deks
159− |= [syd=desk *]
98+ |=([syd=desk *] =(ud:.^(cass %cw /[ego]/[syd]/[wen]) 0))
160− ?~ got=(~(get by cone.prep) our syd)
161− |
162− =(0 let.u.got)
163 ==
99 ==
164 |=([syd=desk *] (report-vat prep our now syd verb))
100 |=([syd=desk *] (report-vat prep our now syd verb))
165:: +report-vat: report on a single desk installation
101:: +report-vat: report on a single desk installation
166::
102::
167++ report-vat
103++ report-vat
168− |= $: $: tyr=rock:tire =cone sor=(map desk (pair ship desk))
104+ |= $: $: tyr=rock:tire =cone sor=(map desk [ship desk])
169 zyn=(map [desk ship desk] sync-state)
105 zyn=(map [desk ship desk] sync-state)
170 ==
106 ==
171 our=ship now=@da syd=desk verb=?
107 our=ship now=@da syd=desk verb=?
172 ==
108 ==
173− |^ ^- tang
109+ ^- tang
110+ =- :: hack to force wrapped rendering
111+ ::
112+ :: edg=6 empirically prevents dedent
113+ ::
114+ %+ roll
115+ (~(win re -) [0 6])
116+ |=([a=tape b=(list @t)] [(crip a) b])
117+ ::
118+ ^- tank
174 =/ ego (scot %p our)
119 =/ ego (scot %p our)
175 =/ wen (scot %da now)
120 =/ wen (scot %da now)
176− ?. ((sane %tas) syd)
121+ =+ .^(=cass %cw /[ego]/[syd]/[wen])
177− ~[(cat 3 'insane desk: %' syd)]
122+ ?: =(ud.cass 0)
178− ?. (~(has by cone) our syd)
179− ~[(cat 3 'desk does not yet exist: %' syd)]
123+ leaf+"desk does not yet exist: {<syd>}"
180− =/ hash .^(@uv %cz /[ego]/[syd]/[wen])
181 ?: =(%kids syd)
124 ?: =(%kids syd)
125+ =+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
182− ~[(cat 3 '%kids %cz hash: ' (scot %uv hash))]
126+ leaf+"%kids %cz hash: {<hash>}"
127+ =/ kel-path
183− =/ kel-path /[ego]/[syd]/[wen]/sys/kelvin
128+ /[ego]/[syd]/[wen]/sys/kelvin
184 ?. .^(? %cu kel-path)
129 ?. .^(? %cu kel-path)
185− ~[(cat 3 'bad desk: %' syd)]
130+ leaf+"bad desk: {<syd>}"
186 =+ .^(=waft %cx kel-path)
131 =+ .^(=waft %cx kel-path)
132+ :+ %rose ["" "{<syd>}" "::"]
187 ^- tang
133 ^- tang
134+ =/ hash .^(@uv %cz /[ego]/[syd]/[wen])
188 =/ =sink
135 =/ =sink
189 ?~ s=(~(get by sor) syd)
136 ?~ s=(~(get by sor) syd)
190 ~
137 ~
191 ?~ z=(~(get by zyn) syd u.s)
138 ?~ z=(~(get by zyn) syd u.s)
192 ~
139 ~
193− `[p.u.s q.u.s [kid let]:u.z]
140+ `[-.u.s +.u.s +.u.z]
194 =/ meb=(list @uv)
141 =/ meb=(list @uv)
195− ?~ sink ~[hash]
142+ ?~ sink [hash]~
196− %+ turn
197− .^ (list tako) %cs
198− /[ego]/[syd]/[wen]/base/(scot %p her.u.sink)/[sud.u.sink]
143+ (mergebase-hashes our syd now her.u.sink sud.u.sink)
199− ==
200− |=(=tako .^(@uv %cs /[ego]/[syd]/[wen]/hash/(scot %uv tako)))
201 =/ dek (~(got by tyr) syd)
144 =/ dek (~(got by tyr) syd)
202 =/ sat
145 =/ sat
203 ?- zest.dek
146 ?- zest.dek
204− %live 'running'
147+ %live "running"
205− %dead 'suspended'
148+ %dead "suspended"
206− %held 'suspended until next update'
149+ %held "suspended until next update"
207 ==
150 ==
151+ =/ kul=tape
152+ %+ roll
153+ %+ sort
208− =/ kul=cord (print-wefts (waft-to-wefts waft))
154+ ~(tap in (waft-to-wefts:clay waft))
209− =/ ese=cord
155+ |= [a=weft b=weft]
210− ?:(.^(? %cx /[ego]//[wen]/esse/[syd]) 'yes' 'no')
156+ ?: =(lal.a lal.b)
211− =/ pax=path /(scot %p our)/[syd]/(scot %da now)
157+ (lte num.a num.b)
158+ (lte lal.a lal.b)
159+ |= [=weft =tape]
160+ (welp " {<[lal num]:weft>}" tape)
212 ?. verb
161 ?. verb
213− :~ '::'
162+ =/ cut=(list tape) (turn meb truncate-hash)
214− =+ .^(exist=? cu+(weld pax /desk/bill))
163+ =/ len (lent cut)
215− ?. exist ' /desk/bill: missing'
164+ =/ base-hash
216− =+ .^(dudes=(list dude:gall) cx+(weld pax /desk/bill))
165+ ?: =(0 len) "~"
217− (cat 3 ' /desk/bill: ' (crip "{<dudes>}"))
166+ ?: =(1 len) (head cut)
218− (cat 3 ' pending updates: ' (print-wefts wic.dek))
167+ "~[{`tape`(zing (join " " `(list tape)`cut))}]"
219− (cat 3 ' source ship: ' ?~(sink '~' (scot %p her.u.sink)))
168+ :~ leaf/"/sys/kelvin: {kul}"
169+ leaf/"base hash ends in: {base-hash}"
170+ leaf/"%cz hash ends in: {(truncate-hash hash)}"
220− (cat 3 ' app status: ' sat)
171+ leaf/"app status: {sat}"
221− (cat 3 ' essential desk: ' ese)
172+ leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
222− (cat 3 ' %cz hash ends in: ' (print-shorthash hash))
223− (cat 3 ' /sys/kelvin: ' (print-wefts (waft-to-wefts waft)))
224− (cat 3 '%' syd)
225 ==
173 ==
226 ::
174 ::
227− =/ [on=(list @tas) of=(list @tas)]
175+ =/ [on=(list [@tas ?]) of=(list [@tas ?])]
228− =/ [on=(list @tas) of=(list @tas)]
229− %- ~(rep by ren:(~(got by cone) our syd))
176+ =/ =dome (~(got by cone) our syd)
230− |= [[=dude:gall is-on=?] on=(list @tas) of=(list @tas)]
177+ (skid ~(tap by ren.dome) |=([* ?] +<+))
231− ?: is-on
178+ :~ leaf/"/sys/kelvin: {kul}"
232− [[dude on] of]
179+ leaf/"base hash: {?.(=(1 (lent meb)) <meb> <(head meb)>)}"
233− [on [dude of]]
180+ leaf/"%cz hash: {<hash>}"
234− [(sort on aor) (sort of aor)]
181+ ::
235− :~ '::'
182+ leaf/"app status: {sat}"
236− (cat 3 ' pending updates: ' (print-wefts wic.dek))
183+ leaf/"force on: {<(sort (turn on head) aor)>}"
237− %^ cat 3 ' kids desk: ' ?~ sink '~'
184+ leaf/"force off: {<(sort (turn of head) aor)>}"
238− ?~ kid.u.sink '~'
185+ ::
239− (cat 3 '%' u.kid.u.sink)
240− (cat 3 ' source aeon: ' ?~(sink '~' (scot %ud let.u.sink)))
241− (cat 3 ' source desk: ' ?~(sink '~' (cat 3 '%' sud.u.sink)))
242− (cat 3 ' source ship: ' ?~(sink '~' (scot %p her.u.sink)))
243− (cat 3 ' updates: ' ?~(sink 'local' 'remote'))
244− %^ cat 3 ' publishing ship: ' ?~ got=(get-publisher our syd now)
186+ leaf/"publishing ship: {?~(sink <~> <(get-publisher our syd now)>)}"
245− '~'
187+ leaf/"updates: {?~(sink "local" "remote")}"
246− (scot %p u.got)
188+ leaf/"source ship: {?~(sink <~> <her.u.sink>)}"
247− ::
189+ leaf/"source desk: {?~(sink <~> <sud.u.sink>)}"
248− (cat 3 ' force off: ' (print-agents of))
190+ leaf/"source aeon: {?~(sink <~> <let.u.sink>)}"
249− (cat 3 ' force on: ' (print-agents on))
191+ leaf/"kids desk: {?~(sink <~> ?~(kid.u.sink <~> <u.kid.u.sink>))}"
250− (cat 3 ' app status: ' sat)
192+ leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
251− (cat 3 ' essential desk: ' ese)
252− ::
253− (cat 3 ' %cz hash: ' (scot %uv hash))
254− (cat 3 ' base hash: ' (print-mergebases meb))
255− (cat 3 ' /sys/kelvin: ' (print-wefts (waft-to-wefts waft)))
256− (cat 3 '%' syd)
257 ==
193 ==
258− ++ print-wefts
259− |= wefts=(set weft)
260− ^- @t
261− ?: =(~ wefts)
262− '~'
263− %+ roll (sort ~(tap in wefts) aor)
264− |= [=weft out=@t]
265− ?: =('' out)
266− (rap 3 '[%' lal.weft ' ' (scot %ud num.weft) ']' ~)
267− (rap 3 out ' [%' lal.weft ' ' (scot %ud num.weft) ']' ~)
268− ::
269− ++ print-shorthash
270− |= hash=@uv
271− ^- @t
272− (crip ((v-co:co 5) (end [0 25] hash)))
273− ::
274− ++ print-mergebases
275− |= hashes=(list @uv)
276− ^- @t
277− ?~ hashes
278− '~'
279− ?~ t.hashes
280− (scot %uv i.hashes)
281− %+ roll `(list @uv)`hashes
282− |= [hash=@uv out=@t]
283− ?: =('' out)
284− (print-shorthash hash)
285− (rap 3 out ' ' (print-shorthash hash) ~)
286− ::
287− ++ print-agents
288− |= agents=(list @tas)
289− ^- @t
290− ?~ agents
291− '~'
292− %+ roll `(list @tas)`agents
293− |= [agent=@tas out=@tas]
294− ?: =('' out)
295− (cat 3 '%' agent)
296− (rap 3 out ' %' agent ~)
297− --
298:: +report-kids: non-vat cz hash report for kids desk
194:: +report-kids: non-vat cz hash report for kids desk
299::
195::
300++ report-kids
196++ report-kids
@@ -304,9 +200,9 @@
304 =/ ego (scot %p our)
200 =/ ego (scot %p our)
305 =/ wen (scot %da now)
201 =/ wen (scot %da now)
306 ?. (~(has in .^((set desk) %cd /[ego]//[wen])) syd)
202 ?. (~(has in .^((set desk) %cd /[ego]//[wen])) syd)
307− 'no %kids desk'
203+ leaf/"no %kids desk"
308 =+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
204 =+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
309− (cat 3 '%kids %cz hash: ' (scot %uv hash))
205+ leaf/"%kids %cz hash: {<hash>}"
310:: +read-bill-foreign: read /desk/bill from a foreign desk
206:: +read-bill-foreign: read /desk/bill from a foreign desk
311::
207::
312++ read-bill-foreign
208++ read-bill-foreign
@@ -366,8 +262,8 @@
366 =/ her (scot %p her)
262 =/ her (scot %p her)
367 =/ ego (scot %p our)
263 =/ ego (scot %p our)
368 =/ wen (scot %da now)
264 =/ wen (scot %da now)
369− %+ turn .^((list tako) %cs /[ego]/[syd]/[wen]/base/[her]/[sud])
265+ %+ turn .^((list tako) %cs ~[ego syd wen %base her sud])
370− |=(=tako .^(@uv %cs /[ego]/[syd]/[wen]/hash/(scot %uv tako)))
266+ |=(=tako .^(@uv %cs ~[ego syd wen %hash (scot %uv tako)]))
371::
267::
372++ enjs
268++ enjs
373 =, enjs:format
269 =, enjs:format
base-desk/sur/ring.hoon+1−1
@@ -15,7 +15,7 @@
15 :: resistance...but if your private keys are compromised, your
15 :: resistance...but if your private keys are compromised, your
16 :: adversary can determine which signatures you made.
16 :: adversary can determine which signatures you made.
17 ::
17 ::
18− y=(unit @uxpoint)
18+ y=(unit @udpoint)
19 ==
19 ==
20:: +ring-signature: higher level ring signature type
20:: +ring-signature: higher level ring signature type
21::
21::
base-desk/sur/spider.hoon+1−7
@@ -1,7 +1,7 @@
1/+ libstrand=strand
1/+ libstrand=strand
2=, strand=strand:libstrand
2=, strand=strand:libstrand
3|%
3|%
4−+$ thread $-(vase shed:khan)
4++$ thread $-(vase _*form:(strand ,vase))
5+$ input [=tid =cage]
5+$ input [=tid =cage]
6+$ tid tid:strand
6+$ tid tid:strand
7+$ bowl bowl:strand
7+$ bowl bowl:strand
@@ -18,10 +18,4 @@
18 file=term
18 file=term
19 =vase
19 =vase
20 ==
20 ==
21−+$ inline-args
22− $: parent=(unit tid)
23− use=(unit tid)
24− =beak
25− =shed:khan
26− ==
27--
21--
base-desk/sur/sss.hoon+8−4
@@ -10,21 +10,25 @@
10 --
10 --
11+$ aeon @ud
11+$ aeon @ud
12+$ dude dude:agent:gall
12+$ dude dude:agent:gall
13++$ what ?(%rock %wave)
13++ poke
14++ poke
14 |%
15 |%
15 ++ request
16 ++ request
16 |* paths=mold
17 |* paths=mold
17 $: path=paths
18 $: path=paths
18 =dude
19 =dude
20+ when=(unit aeon)
19 ==
21 ==
20 ++ response
22 ++ response
21 |* [=(lake) paths=mold]
23 |* [=(lake) paths=mold]
22 $: path=paths
24 $: path=paths
23 =dude
25 =dude
24− $% [what=%tomb ~]
26+ =aeon
27+ $% [type=?(%nigh %yore %tomb) ~]
28+ $: type=%scry
25− [what=%rock =aeon =rock:lake]
29+ $% [what=%rock =rock:lake]
26− [what=%wave =aeon =wave:lake]
30+ [what=%wave =wave:lake]
27− == ==
31+ == == == ==
28 ++ on-rock
32 ++ on-rock
29 |* [=(lake) paths=mold]
33 |* [=(lake) paths=mold]
30 $: path=paths
34 $: path=paths
base-desk/sur/verb.hoon+1−37
@@ -9,40 +9,4 @@
9 [%on-arvo =wire vane=term sign=term]
9 [%on-arvo =wire vane=term sign=term]
10 [%on-fail =term]
10 [%on-fail =term]
11 ==
11 ==
12−::
13−+$ event-plus
14− $: act=@ud
15− now=@da
16− src=@p
17− sap=path
18− =cause
19− effects=(list effect)
20− ==
21−::
22−+$ cause
23− $% [%on-init ~]
24− [%on-load ~]
25− [%on-poke =mark mug=@ux]
26− [%on-watch =path]
27− [%on-leave =path]
28− [%on-agent =wire =sign]
29− [%on-arvo =wire vane=term sign=term]
30− [%on-fail =term]
31− ==
32−::
33−+$ sign
34− $% [%poke-ack ack=?]
35− [%watch-ack ack=?]
36− [%kick ~]
37− [%fact =mark mug=@ux]
38− ==
39−::
40−+$ effect
41− $% [%poke =wire =gill:gall =mark mug=@ux]
42− [%watch =wire =gill:gall =path]
43− [%leave =wire =gill:gall]
44− [%fact paths=(list path) =mark mug=@ux]
45− [%kick paths=(list path)]
46− [%arvo =wire vane=term task=term]
47− ==
48−--
12+--
desk/sys.kelvin+2−1
@@ -1 +1,2 @@
1−[%zuse 408]
1+[%zuse 413]
2+[%zuse 412]