@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.
- package/dst/ase-agent-definition-core.js +111 -87
- package/dst/ase-agent-fleet.js +1 -1
- package/dst/ase-agent-runtime-claim.js +5 -3
- package/dst/ase-agent-runtime-engine.js +1 -1
- package/dst/ase-agent-runtime-phase.js +1 -1
- package/dst/ase-agent-runtime-request.js +1 -1
- package/dst/ase-agent-runtime.js +3 -5
- package/dst/ase-artifact.js +3 -3
- package/dst/ase-config-core.js +2 -16
- package/dst/ase-config-schema.js +1 -3
- package/dst/ase-config.js +2 -0
- package/dst/ase-hook.js +13 -13
- package/dst/ase-lib-daemon-cli.js +117 -4
- package/dst/ase-lib-server-cli.js +4 -5
- package/dst/ase-lib-version.js +14 -5
- package/dst/ase-man-catalog.js +229 -0
- package/dst/ase-man-render.js +278 -0
- package/dst/ase-man-tui.js +636 -0
- package/dst/ase-man.js +33 -27
- package/dst/ase-mcp.js +4 -4
- package/dst/ase-service-getopt.js +2 -2
- package/dst/ase-service-otel.js +4 -4
- package/dst/ase-service-skills.js +5 -15
- package/dst/ase-service.js +87 -210
- package/dst/ase-setup-common.js +1 -2
- package/dst/ase-setup-settings.js +6 -9
- package/dst/ase-setup.js +4 -5
- package/dst/ase-spec.js +103 -20
- package/dst/ase-statusline.js +170 -170
- package/dst/ase-task-board-filter.js +5 -4
- package/dst/ase-task-board-flow.js +7 -6
- package/dst/ase-task-board-graph.js +5 -4
- package/dst/ase-task-board-tui-control.js +41 -35
- package/dst/ase-task-board-tui-model.js +185 -167
- package/dst/ase-task-board-tui-popup.js +2 -3
- package/dst/ase-task-board-tui-view.js +74 -70
- package/dst/ase-task-board-web-client.js +27 -27
- package/dst/ase-task-board-web-server.js +2 -2
- package/dst/ase-task-board.js +1 -1
- package/dst/ase-task-format.js +1 -1
- package/dst/ase-task-store-client.js +17 -5
- package/dst/ase-task-store-core.js +5 -7
- package/dst/ase-task-store-issues.js +16 -1
- package/dst/ase-task-store-plugin-ase.js +7 -3
- package/dst/ase-task-store-plugin-gitea.js +9 -32
- package/dst/ase-task-store-plugin-github.js +3 -12
- package/dst/ase-task-store-plugin-gitlab.js +2 -18
- package/dst/ase-task.js +51 -23
- package/dst/ase-util-compat.js +1 -1
- package/dst/ase-util-diagram.js +13 -37
- package/dst/ase.js +5 -5
- package/dst/man/ase-agent-adhoc.md +1165 -0
- package/dst/man/ase-agent-condenser.md +383 -0
- package/dst/man/ase-agent-editor.md +441 -0
- package/dst/man/ase-agent-estimator.md +477 -0
- package/dst/man/ase-agent-fleet.md +358 -0
- package/dst/man/ase-agent-implementer.md +521 -0
- package/dst/man/ase-agent-integrator.md +449 -0
- package/dst/man/ase-agent-qualifier.md +426 -0
- package/dst/man/ase-agent-rebooter.md +384 -0
- package/dst/man/ase-agent-relay.md +262 -0
- package/dst/man/ase-agent-researcher.md +478 -0
- package/dst/man/ase-agent.md +628 -0
- package/dst/man/ase-artifact-list.md +57 -0
- package/dst/man/ase-artifact-name.md +56 -0
- package/dst/man/ase-artifact.md +92 -0
- package/dst/man/ase-config-delete.md +74 -0
- package/dst/man/ase-config-edit.md +83 -0
- package/dst/man/ase-config-get.md +70 -0
- package/dst/man/ase-config-init.md +110 -0
- package/dst/man/ase-config-list.md +68 -0
- package/dst/man/ase-config-set.md +92 -0
- package/dst/man/ase-config.md +426 -0
- package/dst/man/ase-hook-permission-request.md +61 -0
- package/dst/man/ase-hook-pre-tool-use.md +96 -0
- package/dst/man/ase-hook-session-end.md +71 -0
- package/dst/man/ase-hook-session-persona.md +65 -0
- package/dst/man/ase-hook-session-start.md +184 -0
- package/dst/man/ase-hook-stop.md +52 -0
- package/dst/man/ase-hook-user-prompt-submit.md +54 -0
- package/dst/man/ase-hook.md +93 -0
- package/dst/man/ase-man.md +195 -0
- package/dst/man/ase-mcp.md +102 -0
- package/dst/man/ase-service-log.md +59 -0
- package/dst/man/ase-service-send.md +60 -0
- package/dst/man/ase-service-start.md +93 -0
- package/dst/man/ase-service-status.md +58 -0
- package/dst/man/ase-service-stop.md +52 -0
- package/dst/man/ase-service.md +124 -0
- package/dst/man/ase-setup-disable.md +67 -0
- package/dst/man/ase-setup-enable.md +66 -0
- package/dst/man/ase-setup-install.md +116 -0
- package/dst/man/ase-setup-mcp.md +213 -0
- package/dst/man/ase-setup-status.md +101 -0
- package/dst/man/ase-setup-statusline.md +162 -0
- package/dst/man/ase-setup-telemetry.md +166 -0
- package/dst/man/ase-setup-uninstall.md +85 -0
- package/dst/man/ase-setup-update.md +117 -0
- package/dst/man/ase-setup.md +156 -0
- package/dst/man/ase-spec-export.md +99 -0
- package/dst/man/ase-spec-init.md +57 -0
- package/dst/man/ase-spec-lint.md +74 -0
- package/dst/man/ase-spec-preview.md +57 -0
- package/dst/man/ase-spec.md +85 -0
- package/dst/man/ase-statusline.md +330 -0
- package/dst/man/ase-task-assign.md +138 -0
- package/dst/man/ase-task-board.md +651 -0
- package/dst/man/ase-task-delete.md +46 -0
- package/dst/man/ase-task-edit.md +73 -0
- package/dst/man/ase-task-idscheme.md +92 -0
- package/dst/man/ase-task-lifecycle.md +92 -0
- package/dst/man/ase-task-list.md +86 -0
- package/dst/man/ase-task-load.md +48 -0
- package/dst/man/ase-task-newid.md +100 -0
- package/dst/man/ase-task-purge.md +49 -0
- package/dst/man/ase-task-rename.md +69 -0
- package/dst/man/ase-task-request.md +108 -0
- package/dst/man/ase-task-save.md +78 -0
- package/dst/man/ase-task-status.md +79 -0
- package/dst/man/ase-task-store.md +377 -0
- package/dst/man/ase-task-view.md +50 -0
- package/dst/man/ase-task.md +335 -0
- package/dst/man/ase-util-compat.md +38 -0
- package/dst/man/ase-util-diagram.md +140 -0
- package/dst/man/ase-util-meta.md +68 -0
- package/dst/man/ase-util-metric.md +74 -0
- package/dst/man/ase-util-mint.md +85 -0
- package/dst/man/ase-util-worktree.md +109 -0
- package/dst/man/ase-util.md +81 -0
- package/dst/man/ase.md +228 -0
- package/package.json +12 -17
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-lint.md +3 -3
- package/plugin/agents/ase-docs-proofread.md +3 -3
- package/plugin/agents/ase-docs-refine.md +3 -3
- package/plugin/agents/ase-spec-lint.md +338 -0
- package/plugin/meta/ase-skill.md +7 -0
- package/plugin/mods/ase-mods.ts +10 -7
- package/plugin/mods/claude-code.d.ts +26 -3
- package/plugin/skills/ase-code-analyze/SKILL.md +18 -10
- package/plugin/skills/ase-code-analyze/help.md +11 -6
- package/plugin/skills/ase-code-lint/SKILL.md +37 -23
- package/plugin/skills/ase-code-lint/help.md +10 -5
- package/plugin/skills/ase-help-intent/data.md +204 -13
- package/plugin/skills/ase-help-skill/catalog.md +1 -0
- package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
- package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
- package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
- package/plugin/skills/ase-repo-review/SKILL.md +5 -3
- package/plugin/skills/ase-repo-review/help.md +3 -1
- package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
- package/plugin/skills/ase-spec-edit/help.md +1 -1
- package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
- package/plugin/skills/ase-spec-lint/help.md +171 -0
- package/plugin/skills/ase-task-implement/SKILL.md +24 -6
- package/plugin/skills/ase-task-implement/help.md +11 -1
- package/dst/man/ase-agent-adhoc.1 +0 -515
- package/dst/man/ase-agent-condenser.1 +0 -193
- package/dst/man/ase-agent-editor.1 +0 -212
- package/dst/man/ase-agent-estimator.1 +0 -214
- package/dst/man/ase-agent-fleet.1 +0 -185
- package/dst/man/ase-agent-implementer.1 +0 -233
- package/dst/man/ase-agent-integrator.1 +0 -213
- package/dst/man/ase-agent-qualifier.1 +0 -214
- package/dst/man/ase-agent-rebooter.1 +0 -193
- package/dst/man/ase-agent-relay.1 +0 -128
- package/dst/man/ase-agent-researcher.1 +0 -217
- package/dst/man/ase-agent.1 +0 -264
- package/dst/man/ase-artifact-list.1 +0 -38
- package/dst/man/ase-artifact-name.1 +0 -39
- package/dst/man/ase-artifact.1 +0 -56
- package/dst/man/ase-config-delete.1 +0 -45
- package/dst/man/ase-config-edit.1 +0 -48
- package/dst/man/ase-config-get.1 +0 -46
- package/dst/man/ase-config-init.1 +0 -60
- package/dst/man/ase-config-list.1 +0 -42
- package/dst/man/ase-config-set.1 +0 -52
- package/dst/man/ase-config.1 +0 -231
- package/dst/man/ase-hook-permission-request.1 +0 -36
- package/dst/man/ase-hook-pre-tool-use.1 +0 -59
- package/dst/man/ase-hook-session-end.1 +0 -47
- package/dst/man/ase-hook-session-persona.1 +0 -37
- package/dst/man/ase-hook-session-start.1 +0 -81
- package/dst/man/ase-hook-stop.1 +0 -34
- package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
- package/dst/man/ase-hook.1 +0 -51
- package/dst/man/ase-man.1 +0 -67
- package/dst/man/ase-mcp.1 +0 -61
- package/dst/man/ase-service-log.1 +0 -43
- package/dst/man/ase-service-send.1 +0 -47
- package/dst/man/ase-service-start.1 +0 -54
- package/dst/man/ase-service-status.1 +0 -46
- package/dst/man/ase-service-stop.1 +0 -37
- package/dst/man/ase-service.1 +0 -85
- package/dst/man/ase-setup-disable.1 +0 -44
- package/dst/man/ase-setup-enable.1 +0 -45
- package/dst/man/ase-setup-install.1 +0 -73
- package/dst/man/ase-setup-mcp.1 +0 -124
- package/dst/man/ase-setup-status.1 +0 -60
- package/dst/man/ase-setup-statusline.1 +0 -92
- package/dst/man/ase-setup-telemetry.1 +0 -92
- package/dst/man/ase-setup-uninstall.1 +0 -59
- package/dst/man/ase-setup-update.1 +0 -64
- package/dst/man/ase-setup.1 +0 -93
- package/dst/man/ase-spec-export.1 +0 -62
- package/dst/man/ase-spec-lint.1 +0 -40
- package/dst/man/ase-spec-preview.1 +0 -40
- package/dst/man/ase-spec.1 +0 -46
- package/dst/man/ase-statusline.1 +0 -189
- package/dst/man/ase-task-assign.1 +0 -71
- package/dst/man/ase-task-board.1 +0 -384
- package/dst/man/ase-task-delete.1 +0 -35
- package/dst/man/ase-task-edit.1 +0 -46
- package/dst/man/ase-task-idscheme.1 +0 -65
- package/dst/man/ase-task-lifecycle.1 +0 -57
- package/dst/man/ase-task-list.1 +0 -47
- package/dst/man/ase-task-load.1 +0 -36
- package/dst/man/ase-task-newid.1 +0 -61
- package/dst/man/ase-task-purge.1 +0 -37
- package/dst/man/ase-task-rename.1 +0 -44
- package/dst/man/ase-task-request.1 +0 -61
- package/dst/man/ase-task-save.1 +0 -48
- package/dst/man/ase-task-status.1 +0 -55
- package/dst/man/ase-task-store.1 +0 -194
- package/dst/man/ase-task-view.1 +0 -40
- package/dst/man/ase-task.1 +0 -160
- package/dst/man/ase-util-compat.1 +0 -25
- package/dst/man/ase-util-diagram.1 +0 -76
- package/dst/man/ase-util-meta.1 +0 -45
- package/dst/man/ase-util-metric.1 +0 -54
- package/dst/man/ase-util-mint.1 +0 -59
- package/dst/man/ase-util-worktree.1 +0 -72
- package/dst/man/ase-util.1 +0 -50
- 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>
|