@@ -1,86 +1,17 @@
2title = "Dojo Tools"
2title = "Dojo Tools"
4template = "doc.html"
4template = "doc.html"
7−A number of generators are included for managing and viewing the status of desks and their agents. Each of these are documented below.
7+## Desks, apps and updates
9−Note that some old generators have been replaced:
11−- `|start` - Replaced with [`|rein`](#rein).
12−- `|ota` - Replaced with [`|install`](#install), [`|uninstall`](#uninstall), [`|pause`](#pause) and [`|resume`](#resume).
13−- `|fade` - Replaced with [`|nuke`](#nuke).
14−- `|doze` - Replaced with [`|rein`](#rein) or [`|suspend`](#suspend).
15−- `|wake` - Replaced with [`|rein`](#rein) or [`|revive`](#revive).
16−- `+trouble` - This still exists but is deprecated, and is now an alias for [`+vats`](#vats).
22−Print out the status of each installed desk.
24−Desks in Clay which aren't installed will be omitted.
28−- `/sys/kelvin` - The version of `%zuse` the desk is compatible with.
29−- `base hash` - The merge base (common ancestor) between the desk and its upstream source.
30−- `%cz hash` - The hash of the desk.
31−- `app status` - May be `suspended` or `running`.
32−- `force on` - The set of agents on the desk which have been manually started despite not being on the `desk.bill` manifest.
33−- `force off` - The set of agents on the desk which have been manually stopped despite being on the `desk.bill` manifest.
34−- `publishing ship` - The original publisher if the source ship is republishing the desk.
35−- `updates` - May be `local`, `tracking` or `paused`. Local means it will receive updates via commits on the local ship. Tracking means it will receive updates from the `source ship`. Paused means it will not receive updates.
36−- `source desk` - The desk on the `source ship`.
37−- `source aeon` - The revision number of the desk on the `source ship`.
38−- `pending updates` - Updates waiting to be applied due to incompatibility.
49− /sys/kelvin: [%zuse 418]
51− %cz hash: 0v6.2nqmu.oqm24.ighl6.n0gp9.s8res.feql1.dl8ap.isli3.jk0hu.acrd2
63− /sys/kelvin: [%zuse 418]
65− %cz hash: 0v1e.2h7hs.elq3g.1sdt7.qfga6.ganga.7p95j.aog44.8p5fe.kpr6v.7ai82
79−## `+agents`
9+### `+agents`
81Print out the status of Gall agents on a desk.
11Print out the status of Gall agents on a desk.
83−Agents may either be `archived` or `running`. Nuked or unstarted agents which are not on the manifest are omitted.
13+Agents may either be `archived` or `running`. Nuked or unstarted agents which
14+are not on the manifest are omitted.
85#### Arguments
16#### Arguments
@@ -101,53 +32,58 @@ status: running %hark-store
104−## `|suspend`
35+### `|bump`
106−Shut down all agents on a desk, archiving their states.
37+Try to apply a kernel update.
108−The tile in the homescreen (if it has one) will turn gray and say "Suspended" in the top-left corner. This generator does the same thing as selecting "Suspend" from an app tile's hamburger menu.
39+If `%zuse`'s kelvin version has decreased, try to apply the update. If any desks
40+are incompatible with the new `%zuse` version, the update will fail. The update
41+can be forced with the optional `force` argument, in which case incompatible
42+desks will be `|suspend`ed. The `set` of desks to omit (and therefore suspend)
43+can also be explicitly specified with the optional `except` argument.
110#### Arguments
45#### Arguments
113−desk
50+, =force ?, =except (set desk)
116#### Examples
53#### Examples
55+Try to apply update, failing if blocked by any desks:
119−|suspend %bitcoin
58+|bump
122−---
61+Force the update, suspending incompatible desks:
126−Revive all agents on a desk, migrating archived states.
128−All agents specified in `desk.bill` which are suspended will be restarted. If updates to the agents have occurred since their states were archived, they'll be migrated with the state transition functions in the agent. This generator does the same thing as selecting "Resume App" from the app tile's hamburger menu.
133−desk
64+|bump, =force &
136−#### Examples
67+Apply kernel update, omitting and suspending the specified desks:
139−|revive %bitcoin
70+|bump, =except (silt ~[%bitcoin %webterm])
144−## `|install`
75+### `|install`
146Install a desk, starting its agents and listening for updates.
77Install a desk, starting its agents and listening for updates.
79+If it's a remote desk we don't already have, it will be fetched. The agents
148−If it's a remote desk we don't already have, it will be fetched. The agents started will be those specified in the `desk.bill` manifest. If it has a docket file, its tile will be added to the homescreen and its glob fetched. If we already have the desk, the source for updates will be switched to the ship specified.
80+started will be those specified in the `desk.bill` manifest. If it has a docket
81+file, its tile will be added to the homescreen and its glob fetched. If we
82+already have the desk, the source for updates will be switched to the ship
85+It takes a `ship` and `desk` as its mandatory arguments. The desk may be
150−It takes a `ship` and `desk` as its mandatory arguments. The desk may be installed with a different name specified in the optional `local` argument.
86+installed with a different name specified in the optional `local` argument.
152#### Arguments
88#### Arguments
@@ -171,53 +107,61 @@ ship desk, =local desk
174−## `|uninstall`
110+### `|nuke`
176−Uninstall a desk, suspending its agents and ignoring updates.
112+Shut down an agent and permanently delete its state.
178−The specified desk will be retained in Clay, but its agents will all be stopped and have their states archived like [`|suspend`](#suspend). This is the reverse of [`|install`](#install).
180−Note that this will not remove the tile or glob from the homescreen, so if the desk has a tile it should be uninstalled with the "Remove App" button in the tile's hamburger menu.
114+The default behaviour is to shut down the specified Gall agent and discard its
115+state, similar to the now-deprecated `|fade` generator. **Note this irreversibly
116+wipes the app's state**. Additionally, if the optional `desk` argument is `%.y`,
117+it takes a desk rather than an agent name and nukes every agent on the specified
182#### Arguments
120#### Arguments
185−desk
123+@tas, =desk ?
188#### Examples
126#### Examples
191−|uninstall %bitcoin
131+|nuke %btc-wallet
194−---
134+Nuke every agent on a desk:
137+|nuke %bitcoin, =desk &
198−Pause updates on a desk.
140+---
200−The specified desk will stop tracking updates from its upstream source.
142+### `|ota`
144+Set the source of updates for the `%base` desk (the kernel and core apps) to the
145+specified ship. Automatic updates will be enabled, and any new updates available
146+will be fetched and installed.
202#### Arguments
148#### Arguments
208#### Examples
154#### Examples
210−```
156+`|ota ~marzod` is equivalent to `|install ~marzod %kids, =local %base`.
216−## `|resume`
160+### `|pause`
218−Resume updates on a desk.
162+Pause updates on a desk.
220−Start tracking previously [`|pause`](#pause)d updates from a desk's upstream source.
164+The specified desk will stop tracking updates from its upstream source.
222#### Arguments
166#### Arguments
@@ -228,115 +172,246 @@ desk
228#### Examples
172#### Examples
231−|resume %bitcoin
175+|pause %bitcoin
236−## `|nuke`
180+### `|rein`
238−Shut down an agent and permanently delete its state.
182+Adjust the state of a desk.
240−The default behaviour is to shut down the specified Gall agent and discard its state, similar to the now-deprecated `|fade` generator. **Note this irreversibly wipes the app's state**. Additionally, if the optional `desk` argument is `%.y`, it takes a desk rather than an agent name and nukes every agent on the specified desk.
184+This allows you to stop and start agents on a desk, regardless of whether
185+they're on the manifest. Stopped agents have their states archived. It can also
186+suspend and revive the whole desk with the optional `liv` argument.
242#### Arguments
188#### Arguments
245−@tas, =desk ?
191+desk (list [? dude:gall]), =liv ?
248#### Examples
194#### Examples
250−Nuke a single agent:
196+Start an agent:
253−|nuke %btc-wallet
199+|rein %bitcoin [& %btc-provider]
256−Nuke every agent on a desk:
202+Stop an agent, archiving its state:
259−|nuke %bitcoin, =desk &
205+|rein %bitcoin [| %btc-wallet]
208+Stop one agent, start another:
211+|rein %bitcoin [| %btc-wallet] [& %btc-provider]
217+|rein %bitcoin, =liv |
264−## `|bump`
228+### `|resume`
266−Try to apply a kernel update.
230+Resume updates on a desk.
268−If `%zuse`'s kelvin version has decreased, try to apply the update. If any desks are incompatible with the new `%zuse` version, the update will fail. The update can be forced with the optional `force` argument, in which case incompatible desks will be `|suspend`ed. The `set` of desks to omit (and therefore suspend) can also be explicitly specified with the optional `except` argument.
232+Start tracking previously [`|pause`](#pause)d updates from a desk's upstream
270#### Arguments
235#### Arguments
275−, =force ?, =except (set desk)
238+desk
278#### Examples
241#### Examples
280−Try to apply update, failing if blocked by any desks:
283−|bump
244+|resume %bitcoin
286−Force the update, suspending incompatible desks:
247+---
251+Revive all agents on a desk, migrating archived states.
253+All agents specified in `desk.bill` which are suspended will be restarted. If
254+updates to the agents have occurred since their states were archived, they'll be
255+migrated with the state transition functions in the agent. This generator does
256+the same thing as selecting "Resume App" from the app tile's hamburger menu.
289−|bump, =force &
261+desk
292−Apply kernel update, omitting and suspending the specified desks:
264+#### Examples
295−|bump, =except (silt ~[%bitcoin %webterm])
267+|revive %bitcoin
300−## `|rein`
272+### `|suspend`
302−Adjust the state of a desk.
274+Shut down all agents on a desk, archiving their states.
304−This allows you to stop and start agents on a desk, regardless of whether they're on the manifest. Stopped agents have their states archived. It can also suspend and revive the whole desk with the optional `liv` argument.
276+The tile in the homescreen (if it has one) will turn gray and say "Suspended" in
277+the top-left corner. This generator does the same thing as selecting "Suspend"
278+from an app tile's hamburger menu.
306#### Arguments
280#### Arguments
309−desk (list [? dude:gall]), =liv ?
283+desk
312#### Examples
286#### Examples
317−|rein %bitcoin [& %btc-provider]
289+|suspend %bitcoin
320−Stop an agent, archiving its state:
292+---
296+Uninstall a desk, suspending its agents and ignoring updates.
298+The specified desk will be retained in Clay, but its agents will all be stopped
299+and have their states archived like [`|suspend`](#suspend). This is the reverse
300+of [`|install`](#install).
302+Note that this will not remove the tile or glob from the homescreen, so if the
303+desk has a tile it should be uninstalled with the "Remove App" button in the
304+tile's hamburger menu.
323−|rein %bitcoin [| %btc-wallet]
309+desk
326−Stop one agent, start another:
312+#### Examples
329−|rein %bitcoin [| %btc-wallet] [& %btc-provider]
315+|uninstall %bitcoin
332−Suspend a desk:
318+---
322+Print out the status of a single installed desk.
324+Desks in Clay which aren't installed will be omitted. See the related
325+[`+vats`](#vats) command for details of the individual status fields.
335−|rein %bitcoin, =liv |
334+> +vat %base
336+ /sys/kelvin: [%zuse 418]
338+ %cz hash: 0v2.r1lbp.i9jr2.hosbi.rvg16.pqe7u.i3hnp.j7k27.9jsgv.8k7rp.oi98q
338−Revive a desk:
351+---
355+Print out the status of each installed desk.
357+Desks in Clay which aren't installed will be omitted. Also see the related
358+[`+vat`](#vat) command, which prints the status of a single desk rather than all
363+- `/sys/kelvin` - The version of `%zuse` the desk is compatible with.
364+- `base hash` - The merge base (common ancestor) between the desk and its upstream source.
365+- `%cz hash` - The hash of the desk.
366+- `app status` - May be `suspended` or `running`.
367+- `force on` - The set of agents on the desk which have been manually started
368+ despite not being on the `desk.bill` manifest.
369+- `force off` - The set of agents on the desk which have been manually stopped
370+ despite being on the `desk.bill` manifest.
371+- `publishing ship` - The original publisher if the source ship is republishing
373+- `updates` - May be `local`, `tracking` or `paused`. Local means it will
374+ receive updates via commits on the local ship. Tracking means it will receive
375+ updates from the `source ship`. Paused means it will not receive updates.
376+- `source desk` - The desk on the `source ship`.
377+- `source aeon` - The revision number of the desk on the `source ship`.
378+- `pending updates` - Updates waiting to be applied due to incompatibility.
341−|rein %bitcoin
387+> +vats
389+ /sys/kelvin: [%zuse 418]
391+ %cz hash: 0v6.2nqmu.oqm24.ighl6.n0gp9.s8res.feql1.dl8ap.isli3.jk0hu.acrd2
403+ /sys/kelvin: [%zuse 418]
405+ %cz hash: 0v1e.2h7hs.elq3g.1sdt7.qfga6.ganga.7p95j.aog44.8p5fe.kpr6v.7ai82
412+ source desk: %garden