@rse/ase 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/dst/ase-agent-definition-core.js +111 -87
  2. package/dst/ase-agent-fleet.js +1 -1
  3. package/dst/ase-agent-runtime-claim.js +5 -3
  4. package/dst/ase-agent-runtime-engine.js +1 -1
  5. package/dst/ase-agent-runtime-phase.js +1 -1
  6. package/dst/ase-agent-runtime-request.js +1 -1
  7. package/dst/ase-agent-runtime.js +3 -5
  8. package/dst/ase-artifact.js +3 -3
  9. package/dst/ase-config-core.js +2 -16
  10. package/dst/ase-config-schema.js +1 -3
  11. package/dst/ase-config.js +2 -0
  12. package/dst/ase-hook.js +13 -13
  13. package/dst/ase-lib-daemon-cli.js +117 -4
  14. package/dst/ase-lib-server-cli.js +4 -5
  15. package/dst/ase-lib-version.js +14 -5
  16. package/dst/ase-man-catalog.js +229 -0
  17. package/dst/ase-man-render.js +278 -0
  18. package/dst/ase-man-tui.js +636 -0
  19. package/dst/ase-man.js +33 -27
  20. package/dst/ase-mcp.js +4 -4
  21. package/dst/ase-service-getopt.js +2 -2
  22. package/dst/ase-service-otel.js +4 -4
  23. package/dst/ase-service-skills.js +5 -15
  24. package/dst/ase-service.js +87 -210
  25. package/dst/ase-setup-common.js +1 -2
  26. package/dst/ase-setup-settings.js +6 -9
  27. package/dst/ase-setup.js +4 -5
  28. package/dst/ase-spec.js +103 -20
  29. package/dst/ase-statusline.js +170 -170
  30. package/dst/ase-task-board-filter.js +5 -4
  31. package/dst/ase-task-board-flow.js +7 -6
  32. package/dst/ase-task-board-graph.js +5 -4
  33. package/dst/ase-task-board-tui-control.js +41 -35
  34. package/dst/ase-task-board-tui-model.js +185 -167
  35. package/dst/ase-task-board-tui-popup.js +2 -3
  36. package/dst/ase-task-board-tui-view.js +74 -70
  37. package/dst/ase-task-board-web-client.js +27 -27
  38. package/dst/ase-task-board-web-server.js +2 -2
  39. package/dst/ase-task-board.js +1 -1
  40. package/dst/ase-task-format.js +1 -1
  41. package/dst/ase-task-store-client.js +17 -5
  42. package/dst/ase-task-store-core.js +5 -7
  43. package/dst/ase-task-store-issues.js +16 -1
  44. package/dst/ase-task-store-plugin-ase.js +7 -3
  45. package/dst/ase-task-store-plugin-gitea.js +9 -32
  46. package/dst/ase-task-store-plugin-github.js +3 -12
  47. package/dst/ase-task-store-plugin-gitlab.js +2 -18
  48. package/dst/ase-task.js +51 -23
  49. package/dst/ase-util-compat.js +1 -1
  50. package/dst/ase-util-diagram.js +13 -37
  51. package/dst/ase.js +5 -5
  52. package/dst/man/ase-agent-adhoc.md +1165 -0
  53. package/dst/man/ase-agent-condenser.md +383 -0
  54. package/dst/man/ase-agent-editor.md +441 -0
  55. package/dst/man/ase-agent-estimator.md +477 -0
  56. package/dst/man/ase-agent-fleet.md +358 -0
  57. package/dst/man/ase-agent-implementer.md +521 -0
  58. package/dst/man/ase-agent-integrator.md +449 -0
  59. package/dst/man/ase-agent-qualifier.md +426 -0
  60. package/dst/man/ase-agent-rebooter.md +384 -0
  61. package/dst/man/ase-agent-relay.md +262 -0
  62. package/dst/man/ase-agent-researcher.md +478 -0
  63. package/dst/man/ase-agent.md +628 -0
  64. package/dst/man/ase-artifact-list.md +57 -0
  65. package/dst/man/ase-artifact-name.md +56 -0
  66. package/dst/man/ase-artifact.md +92 -0
  67. package/dst/man/ase-config-delete.md +74 -0
  68. package/dst/man/ase-config-edit.md +83 -0
  69. package/dst/man/ase-config-get.md +70 -0
  70. package/dst/man/ase-config-init.md +110 -0
  71. package/dst/man/ase-config-list.md +68 -0
  72. package/dst/man/ase-config-set.md +92 -0
  73. package/dst/man/ase-config.md +426 -0
  74. package/dst/man/ase-hook-permission-request.md +61 -0
  75. package/dst/man/ase-hook-pre-tool-use.md +96 -0
  76. package/dst/man/ase-hook-session-end.md +71 -0
  77. package/dst/man/ase-hook-session-persona.md +65 -0
  78. package/dst/man/ase-hook-session-start.md +184 -0
  79. package/dst/man/ase-hook-stop.md +52 -0
  80. package/dst/man/ase-hook-user-prompt-submit.md +54 -0
  81. package/dst/man/ase-hook.md +93 -0
  82. package/dst/man/ase-man.md +195 -0
  83. package/dst/man/ase-mcp.md +102 -0
  84. package/dst/man/ase-service-log.md +59 -0
  85. package/dst/man/ase-service-send.md +60 -0
  86. package/dst/man/ase-service-start.md +93 -0
  87. package/dst/man/ase-service-status.md +58 -0
  88. package/dst/man/ase-service-stop.md +52 -0
  89. package/dst/man/ase-service.md +124 -0
  90. package/dst/man/ase-setup-disable.md +67 -0
  91. package/dst/man/ase-setup-enable.md +66 -0
  92. package/dst/man/ase-setup-install.md +116 -0
  93. package/dst/man/ase-setup-mcp.md +213 -0
  94. package/dst/man/ase-setup-status.md +101 -0
  95. package/dst/man/ase-setup-statusline.md +162 -0
  96. package/dst/man/ase-setup-telemetry.md +166 -0
  97. package/dst/man/ase-setup-uninstall.md +85 -0
  98. package/dst/man/ase-setup-update.md +117 -0
  99. package/dst/man/ase-setup.md +156 -0
  100. package/dst/man/ase-spec-export.md +99 -0
  101. package/dst/man/ase-spec-init.md +57 -0
  102. package/dst/man/ase-spec-lint.md +74 -0
  103. package/dst/man/ase-spec-preview.md +57 -0
  104. package/dst/man/ase-spec.md +85 -0
  105. package/dst/man/ase-statusline.md +330 -0
  106. package/dst/man/ase-task-assign.md +138 -0
  107. package/dst/man/ase-task-board.md +651 -0
  108. package/dst/man/ase-task-delete.md +46 -0
  109. package/dst/man/ase-task-edit.md +73 -0
  110. package/dst/man/ase-task-idscheme.md +92 -0
  111. package/dst/man/ase-task-lifecycle.md +92 -0
  112. package/dst/man/ase-task-list.md +86 -0
  113. package/dst/man/ase-task-load.md +48 -0
  114. package/dst/man/ase-task-newid.md +100 -0
  115. package/dst/man/ase-task-purge.md +49 -0
  116. package/dst/man/ase-task-rename.md +69 -0
  117. package/dst/man/ase-task-request.md +108 -0
  118. package/dst/man/ase-task-save.md +78 -0
  119. package/dst/man/ase-task-status.md +79 -0
  120. package/dst/man/ase-task-store.md +377 -0
  121. package/dst/man/ase-task-view.md +50 -0
  122. package/dst/man/ase-task.md +335 -0
  123. package/dst/man/ase-util-compat.md +38 -0
  124. package/dst/man/ase-util-diagram.md +140 -0
  125. package/dst/man/ase-util-meta.md +68 -0
  126. package/dst/man/ase-util-metric.md +74 -0
  127. package/dst/man/ase-util-mint.md +85 -0
  128. package/dst/man/ase-util-worktree.md +109 -0
  129. package/dst/man/ase-util.md +81 -0
  130. package/dst/man/ase.md +228 -0
  131. package/package.json +12 -17
  132. package/plugin/.claude-plugin/plugin.json +1 -1
  133. package/plugin/.codex-plugin/plugin.json +1 -1
  134. package/plugin/.github/plugin/plugin.json +1 -1
  135. package/plugin/agents/ase-code-lint.md +3 -3
  136. package/plugin/agents/ase-docs-proofread.md +3 -3
  137. package/plugin/agents/ase-docs-refine.md +3 -3
  138. package/plugin/agents/ase-spec-lint.md +338 -0
  139. package/plugin/meta/ase-skill.md +7 -0
  140. package/plugin/mods/ase-mods.ts +10 -7
  141. package/plugin/mods/claude-code.d.ts +26 -3
  142. package/plugin/skills/ase-code-analyze/SKILL.md +18 -10
  143. package/plugin/skills/ase-code-analyze/help.md +11 -6
  144. package/plugin/skills/ase-code-lint/SKILL.md +37 -23
  145. package/plugin/skills/ase-code-lint/help.md +10 -5
  146. package/plugin/skills/ase-help-intent/data.md +204 -13
  147. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  148. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  149. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  150. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  151. package/plugin/skills/ase-repo-review/SKILL.md +5 -3
  152. package/plugin/skills/ase-repo-review/help.md +3 -1
  153. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  154. package/plugin/skills/ase-spec-edit/help.md +1 -1
  155. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  156. package/plugin/skills/ase-spec-lint/help.md +171 -0
  157. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  158. package/plugin/skills/ase-task-implement/help.md +11 -1
  159. package/dst/man/ase-agent-adhoc.1 +0 -515
  160. package/dst/man/ase-agent-condenser.1 +0 -193
  161. package/dst/man/ase-agent-editor.1 +0 -212
  162. package/dst/man/ase-agent-estimator.1 +0 -214
  163. package/dst/man/ase-agent-fleet.1 +0 -185
  164. package/dst/man/ase-agent-implementer.1 +0 -233
  165. package/dst/man/ase-agent-integrator.1 +0 -213
  166. package/dst/man/ase-agent-qualifier.1 +0 -214
  167. package/dst/man/ase-agent-rebooter.1 +0 -193
  168. package/dst/man/ase-agent-relay.1 +0 -128
  169. package/dst/man/ase-agent-researcher.1 +0 -217
  170. package/dst/man/ase-agent.1 +0 -264
  171. package/dst/man/ase-artifact-list.1 +0 -38
  172. package/dst/man/ase-artifact-name.1 +0 -39
  173. package/dst/man/ase-artifact.1 +0 -56
  174. package/dst/man/ase-config-delete.1 +0 -45
  175. package/dst/man/ase-config-edit.1 +0 -48
  176. package/dst/man/ase-config-get.1 +0 -46
  177. package/dst/man/ase-config-init.1 +0 -60
  178. package/dst/man/ase-config-list.1 +0 -42
  179. package/dst/man/ase-config-set.1 +0 -52
  180. package/dst/man/ase-config.1 +0 -231
  181. package/dst/man/ase-hook-permission-request.1 +0 -36
  182. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  183. package/dst/man/ase-hook-session-end.1 +0 -47
  184. package/dst/man/ase-hook-session-persona.1 +0 -37
  185. package/dst/man/ase-hook-session-start.1 +0 -81
  186. package/dst/man/ase-hook-stop.1 +0 -34
  187. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  188. package/dst/man/ase-hook.1 +0 -51
  189. package/dst/man/ase-man.1 +0 -67
  190. package/dst/man/ase-mcp.1 +0 -61
  191. package/dst/man/ase-service-log.1 +0 -43
  192. package/dst/man/ase-service-send.1 +0 -47
  193. package/dst/man/ase-service-start.1 +0 -54
  194. package/dst/man/ase-service-status.1 +0 -46
  195. package/dst/man/ase-service-stop.1 +0 -37
  196. package/dst/man/ase-service.1 +0 -85
  197. package/dst/man/ase-setup-disable.1 +0 -44
  198. package/dst/man/ase-setup-enable.1 +0 -45
  199. package/dst/man/ase-setup-install.1 +0 -73
  200. package/dst/man/ase-setup-mcp.1 +0 -124
  201. package/dst/man/ase-setup-status.1 +0 -60
  202. package/dst/man/ase-setup-statusline.1 +0 -92
  203. package/dst/man/ase-setup-telemetry.1 +0 -92
  204. package/dst/man/ase-setup-uninstall.1 +0 -59
  205. package/dst/man/ase-setup-update.1 +0 -64
  206. package/dst/man/ase-setup.1 +0 -93
  207. package/dst/man/ase-spec-export.1 +0 -62
  208. package/dst/man/ase-spec-lint.1 +0 -40
  209. package/dst/man/ase-spec-preview.1 +0 -40
  210. package/dst/man/ase-spec.1 +0 -46
  211. package/dst/man/ase-statusline.1 +0 -189
  212. package/dst/man/ase-task-assign.1 +0 -71
  213. package/dst/man/ase-task-board.1 +0 -384
  214. package/dst/man/ase-task-delete.1 +0 -35
  215. package/dst/man/ase-task-edit.1 +0 -46
  216. package/dst/man/ase-task-idscheme.1 +0 -65
  217. package/dst/man/ase-task-lifecycle.1 +0 -57
  218. package/dst/man/ase-task-list.1 +0 -47
  219. package/dst/man/ase-task-load.1 +0 -36
  220. package/dst/man/ase-task-newid.1 +0 -61
  221. package/dst/man/ase-task-purge.1 +0 -37
  222. package/dst/man/ase-task-rename.1 +0 -44
  223. package/dst/man/ase-task-request.1 +0 -61
  224. package/dst/man/ase-task-save.1 +0 -48
  225. package/dst/man/ase-task-status.1 +0 -55
  226. package/dst/man/ase-task-store.1 +0 -194
  227. package/dst/man/ase-task-view.1 +0 -40
  228. package/dst/man/ase-task.1 +0 -160
  229. package/dst/man/ase-util-compat.1 +0 -25
  230. package/dst/man/ase-util-diagram.1 +0 -76
  231. package/dst/man/ase-util-meta.1 +0 -45
  232. package/dst/man/ase-util-metric.1 +0 -54
  233. package/dst/man/ase-util-mint.1 +0 -59
  234. package/dst/man/ase-util-worktree.1 +0 -72
  235. package/dst/man/ase-util.1 +0 -50
  236. package/dst/man/ase.1 +0 -124
@@ -0,0 +1,651 @@
1
+ # ase-task-board(1) -- Show the interactive task board of the project
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task board`
6
+ \[`-h`|`--help`\]
7
+ \[`-w`|`--web`\]
8
+ \[`-t`|`--text`\]
9
+ \[`--agent-relay` *url*\]
10
+
11
+ ## DESCRIPTION
12
+
13
+ **ase task board** shows the *task board* of the current project: all
14
+ persisted task plans of the task store of the project (see
15
+ `ase-task`(1)) as *cards* in the *lanes* of the effective task
16
+ lifecycle model (see `ase task lifecycle`), following all changes of
17
+ the task plans live. It comes in three variants:
18
+
19
+ - the interactive *terminal board* (the default, on a terminal),
20
+ - the *web board* in the browser (with `--web`), and
21
+ - the plain *text overview* (with `--text`, or without an interactive
22
+ terminal on standard input or output).
23
+
24
+ The lanes are grouped by the phases of the lifecycle model plus a
25
+ final `Done` phase of the finished states, where within a phase the
26
+ entry state comes first, the active state second, and the parking
27
+ state last. The cards of the *active* lanes (the states a task is
28
+ actively worked on) are shown in the accent color (default: blue), the
29
+ cards of the *parking* lanes in the normal color, and the cards of the
30
+ finished lanes in the dim color (default: grey), while the selected
31
+ card is shown in the signal color (default: red).
32
+
33
+ A card shows the task id (inverse, behind a `≡`, and of an epic, i.e.,
34
+ a task being its own group, additionally behind a `♛`), its group (if
35
+ any, between `♛` and `▶`), its markers, and its title, the latter cut
36
+ onto a single line or, toggled with `t`, wrapped onto at most three
37
+ lines. The markers are:
38
+
39
+ - `[✎]`: an edit request of the task is pending (see `ase-agent-editor`(1)).
40
+ - `[✎…]`: an edit request of the task is being processed.
41
+ - `[✎✗]`: an edit request of the task failed.
42
+ - `[⚖`*size*`]`: the effort of the task, i.e., the T-shirt size
43
+ (`XS`, `S`, `M`, `L`, or `XL`) of its valid `Effort:` key (see
44
+ `ase-agent-estimator`(1)), absent for an unestimated task.
45
+ - `⚉` *name*: a badge on the top border of the card, naming an
46
+ agent busy with the task (inverse), resp. the agent the task is
47
+ assigned to.
48
+ - `☺` *name*: a badge on the top border of the card, naming the
49
+ person the task is assigned to.
50
+
51
+ Besides the *task lanes* view, the boards show the *task graph* view,
52
+ the dependency graph of the tasks derived from their `After:` keys
53
+ (where an epic implicitly comes after all other tasks of its group),
54
+ the *statistics* view with the statistics of the tasks, and with an
55
+ agent relay the *agent logs* view and the *agent graph* view. All
56
+ views are cycled via `v` (or a click onto the `view:` value of the
57
+ header).
58
+
59
+ The last shown view, the minimized lanes, the collapsed phases, and the
60
+ shown flags are persisted in `.ase/board.yaml` (separately for the
61
+ terminal and the web board).
62
+
63
+ ### Terminal Board
64
+
65
+ The terminal board runs in the alternate screen of the terminal and
66
+ requires a window of at least 40 columns and 16 rows.
67
+
68
+ Its header shows the project, the task lifecycle model, the number of
69
+ unfinished and of all tasks, the current view, and the `filter:` field
70
+ (with its `✕` clear button), below it the warnings of the board (e.g. on
71
+ dependency cycles), and its footer shows the information line, up to
72
+ three key hint lines (hidden and shown via `?`, where the information
73
+ line reminds of `?` while they are hidden), and the status line
74
+ with the kind and connection state of the task store (`●` connected,
75
+ `○` disconnected), the number of agents and the connection state of
76
+ the agent relay (if any), and the *ASE* version, or a notice instead.
77
+
78
+ In the task lanes view, lanes can be minimized (`m`), lane rows collapsed
79
+ (`C`), and phases collapsed (`c`), and the selected lane can be
80
+ *grown* via `g` to the full board, showing all its cards in a grid of
81
+ at least four columns.
82
+
83
+ A card opens its plan in a full-height *task dialog* (`⏎` or a mouse
84
+ double click), which shows the frontmatter keys, the predecessors and successors
85
+ of the task (a click onto one opens its task dialog), and the plan body,
86
+ followed by the attachments of the plan as further tabs, where a diff
87
+ attachment (type `text/x-diff`, like the implementation draft or the change
88
+ set snapshot `kind="changeset"` of the `implementer` and `integrator`
89
+ agents) is colored per line, YAML and JSON data are syntax-highlighted,
90
+ and a change set snapshot older than the plan is marked `(stale)`.
91
+
92
+ A task is moved into another state (changing its `Status:`) either by
93
+ picking it up with `SPACE` and dropping it with a second `SPACE` onto
94
+ the selected lane (only lanes whose state is reachable from the current
95
+ state in the lifecycle model accept the task, and are shown in bold),
96
+ or via the *transfer popup* of `T`, which lists all lane states (as
97
+ *phase* `▷` *state*, starting at the current state), where the states
98
+ not reachable from the current state are dimmed.
99
+
100
+ A task is assigned (changing its `Assignee:`) via the *assign popup* of
101
+ `A`: its assignee field, prefilled with the current assignee, accepts
102
+ any name, while its drop-down suggests the names containing the typed
103
+ one: `none` (unassigning the task, like an empty field), then the
104
+ users of `project.users` (else the current user) with `☺`, then the
105
+ agents present at the agent relay with `⚉`, each sorted, except the
106
+ agents which never take a task by its assignee (the request agents,
107
+ like `ase-agent-editor`(1), and the phase agents of an `unclaimed`
108
+ definition). With a
109
+ non-empty `project.users`, a name neither suggested nor the current
110
+ user is marked `unknown`, and its assignment is warned about (see
111
+ `ase-task-assign`(1)).
112
+
113
+ `e` edits the selected task plan with `$EDITOR` (default: `vi`, run
114
+ through the shell, with the file passed as `$ASE_TASK_FILE`), where a
115
+ draft which failed to save is offered again on the next `e`. `N`
116
+ creates a new task by editing a pre-filled task plan (all frontmatter
117
+ keys, a free placeholder id, the initial state, and the section
118
+ template of the task format), which is stored under the id of its `Id:`
119
+ line (refused for an existing id, while an unchanged text creates no
120
+ task at all), where a text which failed to save is offered again on the
121
+ next `N` (created again even if unchanged) until it is emptied, which
122
+ discards it. `D` deletes the selected task after a confirmation.
123
+
124
+ `E` requests the edit of the selected task by a prompt (refused for a
125
+ finished task and while an edit of it is in progress), which
126
+ `ase-agent-editor`(1) then processes via the `ase-task-edit` skill. The
127
+ prompt popup is prefilled with the prompt of a cancelled request resp.
128
+ of the most recent failed request (for a retry), and an empty prompt
129
+ is refused.
130
+
131
+ `R` requests the selected task by a prompt under a *request name*
132
+ (see `ase task request`), suggested from the request agents announced
133
+ to the agent relay (`edit` for `ase agent editor`, else the request
134
+ name of any other request agent), which the request agent of the name
135
+ then processes. An empty prompt is refused, unless all request agents
136
+ of the name announced to the agent relay accept the prompts of their
137
+ requests as optional (e.g., the `research` requests of `ase agent
138
+ researcher`, see `ase-agent-researcher`(1)) or ignore them. If all of
139
+ them ignore the prompts (e.g., the `estimate` requests of `ase agent
140
+ estimator --mode request`, see `ase-agent-estimator`(1)), the prompt
141
+ field is disabled, skipped by `TAB`, and no prompt is sent.
142
+
143
+ `/` focuses the `filter:` field of the header: its keywords are
144
+ matched case-insensitively against the task id and title, AND-combined
145
+ when separated by spaces and OR-combined when separated by commas. Each
146
+ OR-part first matches its keywords as literal substrings, and only if
147
+ this matches no task at all, it matches them *fuzzily* (keywords of at
148
+ least four characters also match words of a similar spelling). A
149
+ keyword `effort:`*size* (with *size* one of `XS`, `S`, `M`, `L`, or
150
+ `XL`, case-insensitively) instead exactly matches the tasks of this
151
+ effort size (its `Effort:` key), while a keyword of any other size is
152
+ an ordinary one. The lanes show only the matching tasks, the graph
153
+ additionally their direct predecessors and successors (dimmed and
154
+ dashed).
155
+
156
+ The terminal board supports the mouse (via SGR mouse reporting): a
157
+ click onto a card or a lane selects it, a double click onto a card
158
+ opens it, a double click onto a lane minimizes or maximizes it (resp.
159
+ shrinks a grown lane, resp. expands its collapsed phase), a click
160
+ onto the title of a phase selects it like `←`/`→` (its lane in the row
161
+ of the selected lane), a double click onto it collapses or expands it,
162
+ a click onto
163
+ the `view:` value of the header cycles the view, a click onto the
164
+ `filter:` field focuses it, a click onto its `✕` clears it, and the
165
+ mouse wheel over a lane scrolls it. In the task graph view, a click onto a
166
+ task selects it and a double click opens it.
167
+
168
+ `M` disables the mouse support to regain the regular text selection of
169
+ the terminal (and enables it again). The terminal board enables the
170
+ *kitty keyboard protocol* if the terminal supports it, as only then
171
+ `Shift`+`⏎` is distinguishable from `⏎`.
172
+
173
+ ### Web Board
174
+
175
+ With `--web`, the web board is served through the *ASE* service of the
176
+ project (see `ase-service`(1), started if not yet running) under
177
+ `http://127.0.0.1:`*port*`/task-board`, which is printed on standard
178
+ output and opened in the default browser (via `open`, `xdg-open`, resp.
179
+ `start`).
180
+
181
+ It offers the same views and keys as the terminal board, where a task
182
+ is additionally moved by dragging its card onto a reachable lane, the
183
+ graph is zoomed by the mouse wheel (and `+`, `-`, and `0`) and panned
184
+ by dragging it, and an image attachment is zoomed by the mouse wheel.
185
+ Its minimized lanes and collapsed phases are stored once per project,
186
+ not per browser, so all open web boards share them and pick up a change
187
+ immediately.
188
+
189
+ In the task dialog of the web board, `e` (or `✎`) edits the task plan
190
+ in a Markdown editor (in the task lanes and task graph views, `e` opens the
191
+ selected task directly for editing): `Ctrl`/`⌘`+`S` saves it, but only
192
+ if the plan was not changed meanwhile (else it offers to overwrite or
193
+ discard), and `ESC` cancels (after a confirmation if changed). With the
194
+ Vim or Emacs key bindings of `board.web.editor.keymap`, `:w`/`:q` resp.
195
+ `C-x C-s`/`C-x C-c` save resp. cancel instead. A text which failed to
196
+ save is kept as a draft in the browser and offered on the next edit.
197
+
198
+ A running service with other *ASE* code is never restarted, as this
199
+ would break the MCP connections of the agent sessions using it: an
200
+ older service without the web board fails `--web` (restart it with
201
+ `ase service stop` once no agent session uses it), while a differing
202
+ build is only warned about.
203
+
204
+ ### Text Overview
205
+
206
+ With `--text`, and also without an interactive terminal, the lane
207
+ overview is printed as plain text and the command exits: a header line
208
+ with the project, the lifecycle model, and the number of tasks, then
209
+ per phase (`━` *phase*) and lane (*state*, marked `(active)` for an
210
+ active lane, and its number of cards) the cards with their id (plus
211
+ the `✎` and `⚖` markers), title, and the agents busy with them (behind
212
+ `⚙`), followed, with an agent relay, by the agents (`●` busy, `○`
213
+ waiting) with their status and their last processing log line, and
214
+ finally all warnings of the board (behind `⚠`, e.g. on dependency
215
+ cycles).
216
+
217
+ ### Statistics View
218
+
219
+ The third view *statistics* shows the statistics of the tasks matching the
220
+ `filter:` field (all tasks if empty), refreshed on every change of the
221
+ tasks, within the time range selected by the buttons `total` (all
222
+ tasks, with the number of days since the creation of the oldest
223
+ task), `within last 30 days`, and `within last 7 days` on its top
224
+ (selected via `←`/`→` or a click, initially `total`):
225
+
226
+ - `Tasks per State`: a column chart with the number of tasks of each
227
+ state of the task lifecycle model, labeled by the state, below by the
228
+ effort of its estimated tasks (blank without any), and below by its
229
+ phase (of its lane), in the colors of the lanes, and with
230
+ the `total tasks:` line below it. An effort is the sum of the
231
+ representative human minutes of the effort sizes of the tasks on the
232
+ scale `project.task.effort.scale` (see `ase-config`(1)), shown in
233
+ minutes below one hour, else in hours, where the explicit epics carry
234
+ no effort of their own.
235
+ - `Throughput` (besides `Tasks per State`): a column chart with the
236
+ number of tasks finished (in a terminal state other than `CANCELLED`)
237
+ in each of the last 12 weeks (a quarter, ending with the current
238
+ week), labeled by the ISO week number and, below, by the total and
239
+ average number of finished tasks per week. As the time of the
240
+ completion of a task is not tracked, its `Modified:` frontmatter key
241
+ is taken instead, so the throughput is just an approximation. It
242
+ always covers the last 12 weeks, independent of the time range.
243
+
244
+ Below it, the `forecast:` line shows the number of all unfinished
245
+ tasks (*work-in-progress* and *open*, independent of the time range)
246
+ and the number of weeks to finish them at the average throughput of
247
+ the last 12 weeks, `n/a` without any finished task within them.
248
+ - `Task Progress`: one stacked bar of the *cancelled* tasks, the
249
+ *finished* tasks (in a terminal state other than `CANCELLED`), the
250
+ tasks *work-in-progress* (`wip`, in an active state, like `PLANNING` or
251
+ `IMPLEMENTING`), and the *open* tasks (in any other state, like
252
+ `DRAFTED`, `PLANNED`, or `STALLED`), each with its number and share.
253
+ - `Open Tasks` (besides `Task Progress`): one stacked bar of the open
254
+ tasks, split into the *ready* tasks (all predecessors in a terminal
255
+ state, or none at all) and the *blocked* tasks (any predecessor in
256
+ another state, including the implicit predecessors of an epic),
257
+ each with its number and share. The readiness is determined against
258
+ all tasks, independent of the `filter:` field, as a predecessor
259
+ hidden by the filter blocks a task nevertheless.
260
+ - `Usage`: bars of the total accumulated usage of the tasks (see
261
+ `ase-task-assign`(1) and `ase-agent`(1)) by its `time` (AI request,
262
+ human, and real time, in minutes below one hour, else in hours), its
263
+ `token` (all tokens, stacked by the cache read, cache write, input,
264
+ and output tokens), and its `cost` (AI and human costs, in USD), with
265
+ the bars of a column scaled to the maximum of the column.
266
+ - `Effort` (besides `Usage`): a column chart with the
267
+ number of estimated tasks of each effort size, from the smallest
268
+ (`XS`) to the largest (`XL`), where the explicit epics carry no
269
+ effort of their own, and with the `estimated:` line below it, the
270
+ number of the estimated and of all tasks.
271
+ - `Top-5 Tasks`: a table of the (up to) five tasks of the highest usage, ranked
272
+ by their total (AI and human) costs and then by their input and
273
+ output tokens, with the columns `Task Id` (inverse behind `≡`, in the
274
+ color of its lane), `Task Title` (cut with an ellipsis if too long),
275
+ `Total Share` (a bar of its share of the total costs of all tasks,
276
+ resp. of their input and output tokens without any costs), `Cost`,
277
+ and `Token` (as *input* `▷` *output*, with the uncached input tokens,
278
+ i.e., without the cache read and write tokens).
279
+ - `Finished Tasks` (besides `Top-5 Tasks`): the average (`⌀`) AI costs,
280
+ human costs, and AI tokens (as *input* `▷` *output*, like in
281
+ `Top-5 Tasks`) per finished task (the usage of the finished tasks
282
+ divided by their number, including the finished tasks without any
283
+ usage), and the *lead time* (the time from the `Created:` to the
284
+ `Modified:` frontmatter key) of the finished tasks as its median
285
+ (`lead (median)`) and its 85th percentile (`lead (p85)`), in minutes
286
+ below one hour, in hours below two days, else in days, each `n/a`
287
+ without any finished task.
288
+
289
+ Like the throughput, the lead time is just an approximation, and
290
+ median and percentile are robust against single outlier tasks.
291
+ - `Efficiency` (besides `Finished Tasks`): the *AI/HR time ratio* (the
292
+ AI request time per human time, i.e., the higher, the more AI work
293
+ per attended human minute) and the *AI/HR cost ratio* (the AI costs
294
+ per human costs), each `n/a` without any human time resp. costs (as
295
+ booked by the agents, see `ase-agent`(1)), and the *AI cache hit ratio*
296
+ (the share of the cache read tokens of all input tokens, i.e., of the
297
+ cache read, cache write, and uncached input tokens, the main lever on
298
+ the AI costs), `n/a` without any input tokens.
299
+
300
+ Within the last 30 or 7 days, a task counts only if the period from
301
+ its `Created:` to its `Modified:` frontmatter key overlaps with the
302
+ time range, and the usage of a task counts only with the overlapping
303
+ part of the period from the `Created:` to the `Modified:` key of its
304
+ usage attachment (i.e., the times of its first and last booking). As
305
+ the usage attachment does not track when the usage accrued, the usage
306
+ is taken as being evenly spread over this period, so the usage within
307
+ these time ranges is just an approximation.
308
+
309
+ ### Agent Logs View
310
+
311
+ With an agent relay (see `--agent-relay`), the boards additionally
312
+ follow the running agents (see `ase-agent`(1)) live in the view
313
+ *agent logs*: a master/detail view, with the framed master list `Agents` on
314
+ the left, showing each agent as a card with its name (inverse, behind
315
+ a `⚉`), a pulse on its top border while busy (resp. a circle while
316
+ waiting), and the fields `kind:` and `mode:` of its operation (or
317
+ `none` without a mode), and `task:` with the ids of the tasks it is busy
318
+ with (else `none (waiting)`).
319
+
320
+ The framed pane `Operation` on the right shows the operation of the
321
+ selected agent: its one-line title (in bold) and its brief description
322
+ (word-wrapped and cut after six lines), as given by its definition (see
323
+ `--title` and `--description` in `ase-agent-adhoc`(1)).
324
+
325
+ Two equally wide framed panes below it show the selected agent:
326
+ `Process` with its `host:`, its process id `pid:`, its user id and user
327
+ name `uid:` (e.g. `501 (rse)`), and its current working directory `cwd:` (cut at its
328
+ start if too long), where `uid:` and `cwd:` are `n/a` for an older agent
329
+ not reporting them, and `Accounting` with `uptime:`, the duration since its
330
+ start, `heartbeat:`, the age of its latest heartbeat, and `usage
331
+ (total):` resp. `usage (last job):`, its usage of the agent tool in
332
+ total since its start
333
+ resp. by its last finished job, each as wall time, output tokens, and
334
+ costs in USD (e.g. `12m, 9.2k tok, $3.41`, with `n/a` for what the agent
335
+ tool does not report, and `none` before the first finished job).
336
+
337
+ The framed detail view `Recent Log Entries` below them shows
338
+ the recent processing log lines of the selected agent, each with its
339
+ full timestamp, the id of its task (if any), and its level and content
340
+ (warnings and errors in the signal color), broken onto multiple rows
341
+ instead of being cut. The detail view follows the bottom of the log
342
+ while not scrolled up. When the selected agent vanishes, its neighbor
343
+ is selected instead.
344
+
345
+ The information line shows the selected agent and the title of its
346
+ operation (if any). Without an agent relay,
347
+ the agent logs view is skipped.
348
+
349
+ An agent stopping vanishes from the board immediately, while an agent
350
+ missing its heartbeat vanishes after 30 to 35 seconds. A relay
351
+ connection without any traffic for 15 to 30 seconds (e.g. after a
352
+ network partition) is detected, reported as disconnected (dropping the
353
+ shown agents), and re-established.
354
+
355
+ ### Agent Graph View
356
+
357
+ With an agent relay, the boards additionally show, after the agent logs
358
+ view, the last view *agent graph*: like the task graph view, but with the
359
+ running agents as their agent cards (with the same fields as in the
360
+ agent logs view), plus the lifecycle states referenced by these agents as
361
+ state boxes. An edge from a state to an agent card shows a state the
362
+ agent observes (its incoming states), a dashed edge a state the `After:`
363
+ predecessors of its tasks have to reach first (its gate), and an edge
364
+ from an agent card to a state a state the agent writes (its success,
365
+ failure, and verdict states). The cards of the agents operating in the
366
+ same activity state (e.g. `IMPLEMENTING`) are drawn within a dashed
367
+ container labeled with this state (behind a `◉`), while unclaimed phase
368
+ agents (e.g. `estimator --mode phase`) and request agents (e.g.
369
+ `editor`) are drawn outside of any container, the latter without any
370
+ edges. The agent graph is laid out top to bottom: the request agents
371
+ in a row on top, below them the lifecycle states in the grid of the
372
+ task lanes view, i.e., per phase as a column, the entry states, then
373
+ the active states (the containers, plus the unclaimed phase agents),
374
+ and then the parking states. Several running agents of the same kind
375
+ and mode are merged into one card, with their number behind a `×` in
376
+ its name and the union of the tasks they are busy with.
377
+
378
+ The information line shows the selected agent card with its incoming,
379
+ activity, written, and gate states (resp. the name of its requests),
380
+ resp. the selected state with the agents observing, writing, and gating
381
+ on it. The states are announced by the agents themselves, so agents and
382
+ agent relay have to be of the same *ASE* version. Without an agent
383
+ relay, the agent graph view is skipped.
384
+
385
+ ## OPTIONS
386
+
387
+ - \[`-h`|`--help`\]:
388
+ Show usage information and exit.
389
+
390
+ - \[`-w`|`--web`\]:
391
+ Serve the web board through the *ASE* service of the project, print
392
+ its URL, open it in the default browser, and exit (see **Web Board**).
393
+ Takes precedence over `--text`.
394
+
395
+ - \[`-t`|`--text`\]:
396
+ Print the lane overview as plain text and exit (see **Text
397
+ Overview**), instead of starting the interactive terminal board.
398
+
399
+ - \[`--agent-relay` *url*\]:
400
+ The agent relay to receive the live presence of the agents from, as
401
+ `ase://`*addr*`:`*port*\[`/`*token*\] resp.
402
+ `ases://`*addr*`:`*port*\[`/`*token*\]\[`?insecure`\] for HTTPS
403
+ (optionally without certificate verification), with the bearer token
404
+ embedded, else from `$ASE_AGENT_RELAY_TOKEN`, else from
405
+ `project.relay.token`, else of the locally started agent relay
406
+ (default: the configured `project.relay.url`, else none, i.e.,
407
+ without agent logs and agent graph views).
408
+
409
+ Honored by the terminal board and the text overview only, as the web
410
+ board always follows the configured `project.relay.url` (and hence
411
+ warns about the option).
412
+
413
+ ## KEYS
414
+
415
+ The following keys are supported by the terminal board (and, unless
416
+ noted otherwise, equally by the web board). The keys `D`, `E`, `N`,
417
+ `R`, `T`, `A`, and `M` are also accepted as `Shift` with the lower-case
418
+ letter under the kitty keyboard protocol.
419
+
420
+ ### Every View
421
+
422
+ - `v`: Cycle the view: task lanes, task graph, statistics, and (with an
423
+ agent relay) agent logs and agent graph.
424
+ - `V`: Cycle the view backward.
425
+ - `/`: Focus the `filter:` field (not in the agent logs and agent graph
426
+ views).
427
+ - `?`: Hide or show the key hint lines (persisted); while hidden, the
428
+ information line ends with `?: show key hints`.
429
+ - `D`: Delete the selected task, after a confirmation (not in the
430
+ agent logs and statistics views).
431
+ - `T`: Transfer the selected task to another state via the transfer
432
+ popup (not in the agent logs and statistics views).
433
+ - `A`: Assign the selected task via the assign popup (not in the agent
434
+ logs and statistics views).
435
+ - `E`: Request the edit of the selected task by a prompt (not in the
436
+ agent logs and statistics views).
437
+ - `R`: Request the selected task by a prompt under a request name (not
438
+ in the agent logs and statistics views).
439
+ - `M`: Disable or enable the mouse support (terminal board only).
440
+ - `q`, `Ctrl`+`C`: Quit (terminal board only).
441
+
442
+ ### Task Lanes View
443
+
444
+ - `↑`/`↓`: Select the previous/next card of the phase (within a
445
+ collapsed phase, the previous/next lane).
446
+ - `←`/`→`: Select the card of the same lane in the previous/next phase.
447
+ - `PgUp`/`PgDn`: Select the upper/lower lane of the phase.
448
+ - `Home`/`End`: Select the first/last card of the lane.
449
+ - `Tab`/`Shift`+`Tab`: Step through the lanes of the expanded phases
450
+ lane row by lane row, wrapping around the board.
451
+ - `⏎`: Open the task dialog of the selected task.
452
+ - `e`: Edit the selected task plan (terminal: with `$EDITOR`; web: in
453
+ the Markdown editor of its task dialog).
454
+ - `N`: Create a new task.
455
+ - `SPACE`: Pick up the selected task, resp. drop the picked-up task
456
+ onto the selected lane (dropping it onto its own lane cancels).
457
+ - `ESC`: Cancel the move of a picked-up task.
458
+ - `m`: Minimize or maximize the selected lane (persisted).
459
+ - `c`: Collapse or expand the selected phase (persisted).
460
+ - `C`: Collapse the lane row of the selected lane, i.e., the lanes at
461
+ the same position in all expanded phases, resp. expand it again if
462
+ all its lanes are collapsed already (persisted).
463
+ - `g`: Grow the selected lane to the full board (only a maximized lane
464
+ of an expanded phase), resp. shrink it back again.
465
+ - `t`: Cut the card titles onto a single line, resp. wrap them onto at
466
+ most three lines (persisted).
467
+
468
+ ### Grown Lane
469
+
470
+ - `↑`/`↓`/`←`/`→`: Select the card above/below/left/right in the grid.
471
+ - `PgUp`/`PgDn`: Select the card a page of rows above/below.
472
+ - `Home`/`End`: Select the first/last card.
473
+ - `g`, `ESC`: Shrink the lane back again.
474
+ - `⏎`, `e`, `N`, `SPACE`, `t`: As in the task lanes view.
475
+
476
+ ### Task Graph View
477
+
478
+ - `↑`/`↓`/`←`/`→`: Select the nearest task in the direction of the arrow.
479
+ - `⏎`: Open the task dialog of the selected task.
480
+ - `e`, `N`, `t`: As in the task lanes view.
481
+ - `s`: Hide or show the standalone tasks, i.e., the tasks without any
482
+ predecessors and successors (persisted).
483
+ - `+`/`-`/`0`: Zoom in, out, resp. reset the zoom (web board only).
484
+
485
+ ### Statistics View
486
+
487
+ - `←`/`→`: Select the previous/next time range (`total`, `within last
488
+ 30 days`, or `within last 7 days`).
489
+
490
+ ### Agent Logs View
491
+
492
+ - `↑`/`↓`: Select the previous/next agent.
493
+ - `Shift`+`↑`/`↓`: Scroll the log of the detail view by one line
494
+ (terminal board only).
495
+ - `PgUp`/`PgDn`: Scroll the log of the detail view by one page.
496
+ - `Home`/`End`: Scroll to the top/bottom of the log of the detail view,
497
+ where scrolling down to its bottom follows it again.
498
+
499
+ ### Agent Graph View
500
+
501
+ - `↑`/`↓`/`←`/`→`, mouse click: Select the nearest agent card or state
502
+ in the direction of the arrow, resp. the clicked one, where the edges
503
+ of the selection are highlighted, and the information line of a
504
+ selected state shows the agents observing, writing, and gating on it.
505
+ - `⏎`, mouse double click: Show the agent logs view with the agent of the
506
+ selected card (of a merged card: its oldest agent) selected.
507
+ - `+`, `-`, `0`, mouse wheel: Zoom in, out, resp. reset the zoom (web
508
+ board only), where dragging the background scrolls the agent graph.
509
+ - `PgUp`/`PgDn`, `Home`/`End`, mouse wheel: Scroll the agent graph by
510
+ a page, resp. to its top/bottom (terminal board only).
511
+
512
+ ### Task Dialog
513
+
514
+ - `←`/`→`, `Tab`/`Shift`+`Tab`: Select the previous/next tab.
515
+ - `↑`/`↓`: Scroll the content.
516
+ - `PgUp`/`PgDn`: Scroll the content by one page.
517
+ - `e`: Edit the task plan.
518
+ - `D`, `T`, `A`, `E`, `R`, `M`: As in every view.
519
+ - `⏎`, `ESC`: Close the task dialog.
520
+
521
+ ### Filter Field
522
+
523
+ - *character*: Extend the filter query (applied live).
524
+ - `Backspace`: Remove the last character of the filter query.
525
+ - `⏎`: Keep the filter query and leave the field.
526
+ - `ESC`: Clear the filter query and leave the field.
527
+
528
+ ### Prompt Popup
529
+
530
+ - *character*: Insert the character (also pasted text) at the cursor.
531
+ - `⏎`: Request the edit resp. the request (on the request name field:
532
+ switch to the prompt; on a button: press it, also a click onto it).
533
+ - `Shift`+`⏎`, `Alt`+`⏎`, `Ctrl`+`J`: Insert a line break (terminal:
534
+ `Shift`+`⏎` only under the kitty keyboard protocol, `Alt`+`⏎` only
535
+ under the kitty keyboard protocol or where the terminal sends it as
536
+ `ESC`+`⏎`, e.g. with "Option as Meta" on macOS, and `Ctrl`+`J` in
537
+ every terminal; web: `Shift`+`⏎` only).
538
+ - `←`/`→`: Move the cursor by one character.
539
+ - `Home`/`End`: Move the cursor to the start/end of the prompt.
540
+ - `Backspace`/`Delete`: Remove the character before/at the cursor.
541
+ - `Tab`/`Shift`+`Tab`: Switch to the next/previous field: the request
542
+ name (`R` only), the prompt, and the request and cancel buttons
543
+ (terminal board: also a click onto a field; web: by the regular
544
+ focus switching).
545
+ - `↑`/`↓`: Cycle through the suggested request names of the drop-down,
546
+ which offers the names containing the typed request name, while on
547
+ the request name (`R` only; also a click onto a name picks it).
548
+ - `ESC`: Cancel, keeping the prompt as a draft for the task.
549
+
550
+ ### Transfer Popup
551
+
552
+ - `↑`/`↓`: Select the previous/next reachable state.
553
+ - `⏎`: Transfer the task into the selected state (also a click onto it).
554
+ - `ESC`: Cancel (also a click outside of the popup).
555
+
556
+ ### Assign Popup
557
+
558
+ - *character*: Extend the assignee (web board: edit it freely).
559
+ - `Backspace`: Remove the last character of the assignee (terminal board).
560
+ - `↑`/`↓`: Cycle through the suggested assignees of the drop-down.
561
+ - `⏎`: Assign the task to the assignee (also a click onto a suggested
562
+ assignee).
563
+ - `ESC`: Cancel (also a click outside of the popup).
564
+
565
+ ### Deletion Confirmation
566
+
567
+ - `y`: Delete the task.
568
+ - `ESC`: Cancel (web board: also `n`).
569
+ - `←`/`→`, `Tab`: Switch between the `delete` and `cancel` buttons
570
+ (terminal board; web board: by the regular focus switching).
571
+ - `⏎`: Press the selected button (default: `cancel`).
572
+
573
+ ## CONFIGURATION
574
+
575
+ The following configuration keys (on scope `user` or `project`, see
576
+ `ase-config`(1)) customize the boards:
577
+
578
+ - `board.tui.color.dim`, `board.tui.color.normal`,
579
+ `board.tui.color.accent`, `board.tui.color.signal`:
580
+ The colors of the four color roles of the terminal board (default:
581
+ `grey`, `default`, `blue`, and `red`), each either `default` (the
582
+ foreground color of the terminal), a color name, `#rgb`, `#rrggbb`,
583
+ `ansi256(`*n*`)`, or `rgb(`*r*`,`*g*`,`*b*`)`.
584
+
585
+ - `board.web.color.dim`, `board.web.color.normal`,
586
+ `board.web.color.accent`, `board.web.color.signal`:
587
+ The base colors of the four color roles of the web board (default:
588
+ `grey`, `black`, `blue`, and `orange`), each either `default` (the
589
+ default base color of the role), one of the color names `black`,
590
+ `grey`, `gray`, `brown`, `red`, `orange`, `yellow`, `green`, `teal`,
591
+ `cyan`, `blue`, `purple`, or `magenta`, `#rgb`, or `#rrggbb`.
592
+
593
+ - `board.web.editor.keymap`:
594
+ The key bindings of the task plan editor of the web board: `default`,
595
+ `vim`, or `emacs` (default: `default`).
596
+
597
+ - `project.relay.url`:
598
+ The default agent relay of the boards (see `--agent-relay`).
599
+
600
+ ## ENVIRONMENT
601
+
602
+ - `EDITOR`:
603
+ The text editor of the terminal board for `e` and `N` (default:
604
+ `vi`), run through the shell, so a value with arguments is supported.
605
+
606
+ - `ASE_AGENT_RELAY_TOKEN`:
607
+ The bearer token of an agent relay URL without an embedded token.
608
+
609
+ ## FILES
610
+
611
+ - `.ase/board.yaml`:
612
+ The display state of the boards in the project root: separately for
613
+ the terminal board (`tui`) and the web board (`web`), the shown `view`
614
+ (`lanes`, `graph`, `stats`, `agents`, or `flow`), the `minimized` lanes, the
615
+ `collapsed` phases, and whether the task `titles` are wrapped onto
616
+ multiple lines, the key hint lines are shown (`keys`), and the graph
617
+ shows the `standalone` tasks.
618
+
619
+ The web state is shared by all browsers and tabs showing the web board.
620
+ It never holds task content, and is covered by the self-ignoring
621
+ `.ase/.gitignore`.
622
+
623
+ ## EXIT STATUS
624
+
625
+ The command exits with status `0` once the terminal board is quit, the
626
+ text overview is printed, resp. the web board is opened, and with
627
+ status `1` on any error (e.g. an *ASE* service without web board on
628
+ `--web`).
629
+
630
+ ## EXAMPLES
631
+
632
+ ```sh
633
+ # show the interactive terminal board
634
+ $ ase task board
635
+
636
+ # show the web board in the browser
637
+ $ ase task board --web
638
+
639
+ # print the lane overview, including the agents of a remote agent relay
640
+ $ ase task board --text --agent-relay ase://relay.example.com:42043
641
+ ```
642
+
643
+ ## SEE ALSO
644
+
645
+ `ase`(1), `ase-task`(1), `ase-task-store`(1), `ase-agent`(1),
646
+ `ase-agent-editor`(1), `ase-agent-relay`(1), `ase-service`(1),
647
+ `ase-config`(1).
648
+
649
+ ## AUTHOR
650
+
651
+ Dr. Ralf S. Engelschall <rse@engelschall.com>