@rse/ase 2.0.3 → 2.0.5

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 (198) hide show
  1. package/dst/ase-hook.js +13 -4
  2. package/dst/ase-lib-version.js +14 -5
  3. package/dst/ase-man-catalog.js +229 -0
  4. package/dst/ase-man-render.js +278 -0
  5. package/dst/ase-man-tui.js +636 -0
  6. package/dst/ase-man.js +33 -27
  7. package/dst/ase-setup.js +2 -2
  8. package/dst/ase-spec.js +103 -20
  9. package/dst/ase-task-board-filter.js +5 -4
  10. package/dst/ase-task-board-web-client.js +26 -26
  11. package/dst/man/ase-agent-adhoc.md +1165 -0
  12. package/dst/man/ase-agent-condenser.md +383 -0
  13. package/dst/man/ase-agent-editor.md +441 -0
  14. package/dst/man/ase-agent-estimator.md +477 -0
  15. package/dst/man/ase-agent-fleet.md +358 -0
  16. package/dst/man/ase-agent-implementer.md +521 -0
  17. package/dst/man/ase-agent-integrator.md +449 -0
  18. package/dst/man/ase-agent-qualifier.md +426 -0
  19. package/dst/man/ase-agent-rebooter.md +384 -0
  20. package/dst/man/ase-agent-relay.md +262 -0
  21. package/dst/man/ase-agent-researcher.md +478 -0
  22. package/dst/man/ase-agent.md +628 -0
  23. package/dst/man/ase-artifact-list.md +57 -0
  24. package/dst/man/ase-artifact-name.md +56 -0
  25. package/dst/man/ase-artifact.md +92 -0
  26. package/dst/man/ase-config-delete.md +74 -0
  27. package/dst/man/ase-config-edit.md +83 -0
  28. package/dst/man/ase-config-get.md +70 -0
  29. package/dst/man/ase-config-init.md +110 -0
  30. package/dst/man/ase-config-list.md +68 -0
  31. package/dst/man/ase-config-set.md +92 -0
  32. package/dst/man/ase-config.md +426 -0
  33. package/dst/man/ase-hook-permission-request.md +61 -0
  34. package/dst/man/ase-hook-pre-tool-use.md +96 -0
  35. package/dst/man/ase-hook-session-end.md +71 -0
  36. package/dst/man/ase-hook-session-persona.md +65 -0
  37. package/dst/man/ase-hook-session-start.md +184 -0
  38. package/dst/man/ase-hook-stop.md +52 -0
  39. package/dst/man/ase-hook-user-prompt-submit.md +54 -0
  40. package/dst/man/ase-hook.md +93 -0
  41. package/dst/man/ase-man.md +195 -0
  42. package/dst/man/ase-mcp.md +102 -0
  43. package/dst/man/ase-service-log.md +59 -0
  44. package/dst/man/ase-service-send.md +60 -0
  45. package/dst/man/ase-service-start.md +93 -0
  46. package/dst/man/ase-service-status.md +58 -0
  47. package/dst/man/ase-service-stop.md +52 -0
  48. package/dst/man/ase-service.md +124 -0
  49. package/dst/man/ase-setup-disable.md +67 -0
  50. package/dst/man/ase-setup-enable.md +66 -0
  51. package/dst/man/ase-setup-install.md +116 -0
  52. package/dst/man/ase-setup-mcp.md +213 -0
  53. package/dst/man/ase-setup-status.md +101 -0
  54. package/dst/man/ase-setup-statusline.md +162 -0
  55. package/dst/man/ase-setup-telemetry.md +166 -0
  56. package/dst/man/ase-setup-uninstall.md +85 -0
  57. package/dst/man/ase-setup-update.md +117 -0
  58. package/dst/man/ase-setup.md +156 -0
  59. package/dst/man/ase-spec-export.md +99 -0
  60. package/dst/man/ase-spec-init.md +57 -0
  61. package/dst/man/ase-spec-lint.md +74 -0
  62. package/dst/man/ase-spec-preview.md +57 -0
  63. package/dst/man/ase-spec.md +85 -0
  64. package/dst/man/ase-statusline.md +330 -0
  65. package/dst/man/ase-task-assign.md +138 -0
  66. package/dst/man/ase-task-board.md +651 -0
  67. package/dst/man/ase-task-delete.md +46 -0
  68. package/dst/man/ase-task-edit.md +73 -0
  69. package/dst/man/ase-task-idscheme.md +92 -0
  70. package/dst/man/ase-task-lifecycle.md +92 -0
  71. package/dst/man/ase-task-list.md +86 -0
  72. package/dst/man/ase-task-load.md +48 -0
  73. package/dst/man/ase-task-newid.md +100 -0
  74. package/dst/man/ase-task-purge.md +49 -0
  75. package/dst/man/ase-task-rename.md +69 -0
  76. package/dst/man/ase-task-request.md +108 -0
  77. package/dst/man/ase-task-save.md +78 -0
  78. package/dst/man/ase-task-status.md +79 -0
  79. package/dst/man/ase-task-store.md +377 -0
  80. package/dst/man/ase-task-view.md +50 -0
  81. package/dst/man/ase-task.md +335 -0
  82. package/dst/man/ase-util-compat.md +38 -0
  83. package/dst/man/ase-util-diagram.md +140 -0
  84. package/dst/man/ase-util-meta.md +68 -0
  85. package/dst/man/ase-util-metric.md +74 -0
  86. package/dst/man/ase-util-mint.md +85 -0
  87. package/dst/man/ase-util-worktree.md +109 -0
  88. package/dst/man/ase-util.md +81 -0
  89. package/dst/man/ase.md +228 -0
  90. package/package.json +16 -21
  91. package/plugin/.claude-plugin/plugin.json +1 -1
  92. package/plugin/.codex-plugin/plugin.json +1 -1
  93. package/plugin/.github/plugin/plugin.json +1 -1
  94. package/plugin/agents/ase-code-lint.md +3 -3
  95. package/plugin/agents/ase-docs-proofread.md +3 -3
  96. package/plugin/agents/ase-docs-refine.md +3 -3
  97. package/plugin/agents/ase-spec-lint.md +338 -0
  98. package/plugin/mods/ase-mods-common.ts +444 -0
  99. package/plugin/mods/ase-mods-grill.ts +312 -0
  100. package/plugin/mods/ase-mods-help-browse.ts +405 -0
  101. package/plugin/mods/ase-mods-help-compose.ts +561 -0
  102. package/plugin/mods/ase-mods-help-find.ts +426 -0
  103. package/plugin/mods/ase-mods-help-hint.ts +134 -0
  104. package/plugin/mods/ase-mods-help-show.ts +142 -0
  105. package/plugin/mods/ase-mods.ts +214 -381
  106. package/plugin/mods/claude-code.d.ts +26 -3
  107. package/plugin/skills/ase-code-lint/SKILL.md +15 -15
  108. package/plugin/skills/ase-code-lint/help.md +21 -8
  109. package/plugin/skills/ase-help-intent/SKILL.md +2 -1
  110. package/plugin/skills/ase-help-intent/data.md +214 -9
  111. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  112. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  113. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  114. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  115. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  116. package/plugin/skills/ase-spec-edit/help.md +1 -1
  117. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  118. package/plugin/skills/ase-spec-lint/help.md +184 -0
  119. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  120. package/plugin/skills/ase-task-implement/help.md +11 -1
  121. package/dst/man/ase-agent-adhoc.1 +0 -515
  122. package/dst/man/ase-agent-condenser.1 +0 -193
  123. package/dst/man/ase-agent-editor.1 +0 -212
  124. package/dst/man/ase-agent-estimator.1 +0 -214
  125. package/dst/man/ase-agent-fleet.1 +0 -185
  126. package/dst/man/ase-agent-implementer.1 +0 -233
  127. package/dst/man/ase-agent-integrator.1 +0 -213
  128. package/dst/man/ase-agent-qualifier.1 +0 -214
  129. package/dst/man/ase-agent-rebooter.1 +0 -193
  130. package/dst/man/ase-agent-relay.1 +0 -128
  131. package/dst/man/ase-agent-researcher.1 +0 -217
  132. package/dst/man/ase-agent.1 +0 -264
  133. package/dst/man/ase-artifact-list.1 +0 -38
  134. package/dst/man/ase-artifact-name.1 +0 -39
  135. package/dst/man/ase-artifact.1 +0 -56
  136. package/dst/man/ase-config-delete.1 +0 -45
  137. package/dst/man/ase-config-edit.1 +0 -48
  138. package/dst/man/ase-config-get.1 +0 -46
  139. package/dst/man/ase-config-init.1 +0 -60
  140. package/dst/man/ase-config-list.1 +0 -42
  141. package/dst/man/ase-config-set.1 +0 -52
  142. package/dst/man/ase-config.1 +0 -231
  143. package/dst/man/ase-hook-permission-request.1 +0 -36
  144. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  145. package/dst/man/ase-hook-session-end.1 +0 -47
  146. package/dst/man/ase-hook-session-persona.1 +0 -37
  147. package/dst/man/ase-hook-session-start.1 +0 -81
  148. package/dst/man/ase-hook-stop.1 +0 -34
  149. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  150. package/dst/man/ase-hook.1 +0 -51
  151. package/dst/man/ase-man.1 +0 -67
  152. package/dst/man/ase-mcp.1 +0 -61
  153. package/dst/man/ase-service-log.1 +0 -43
  154. package/dst/man/ase-service-send.1 +0 -47
  155. package/dst/man/ase-service-start.1 +0 -54
  156. package/dst/man/ase-service-status.1 +0 -46
  157. package/dst/man/ase-service-stop.1 +0 -37
  158. package/dst/man/ase-service.1 +0 -85
  159. package/dst/man/ase-setup-disable.1 +0 -44
  160. package/dst/man/ase-setup-enable.1 +0 -45
  161. package/dst/man/ase-setup-install.1 +0 -73
  162. package/dst/man/ase-setup-mcp.1 +0 -124
  163. package/dst/man/ase-setup-status.1 +0 -60
  164. package/dst/man/ase-setup-statusline.1 +0 -92
  165. package/dst/man/ase-setup-telemetry.1 +0 -92
  166. package/dst/man/ase-setup-uninstall.1 +0 -59
  167. package/dst/man/ase-setup-update.1 +0 -64
  168. package/dst/man/ase-setup.1 +0 -93
  169. package/dst/man/ase-spec-export.1 +0 -62
  170. package/dst/man/ase-spec-lint.1 +0 -40
  171. package/dst/man/ase-spec-preview.1 +0 -40
  172. package/dst/man/ase-spec.1 +0 -46
  173. package/dst/man/ase-statusline.1 +0 -189
  174. package/dst/man/ase-task-assign.1 +0 -71
  175. package/dst/man/ase-task-board.1 +0 -384
  176. package/dst/man/ase-task-delete.1 +0 -35
  177. package/dst/man/ase-task-edit.1 +0 -46
  178. package/dst/man/ase-task-idscheme.1 +0 -65
  179. package/dst/man/ase-task-lifecycle.1 +0 -57
  180. package/dst/man/ase-task-list.1 +0 -47
  181. package/dst/man/ase-task-load.1 +0 -36
  182. package/dst/man/ase-task-newid.1 +0 -61
  183. package/dst/man/ase-task-purge.1 +0 -37
  184. package/dst/man/ase-task-rename.1 +0 -44
  185. package/dst/man/ase-task-request.1 +0 -61
  186. package/dst/man/ase-task-save.1 +0 -48
  187. package/dst/man/ase-task-status.1 +0 -55
  188. package/dst/man/ase-task-store.1 +0 -194
  189. package/dst/man/ase-task-view.1 +0 -40
  190. package/dst/man/ase-task.1 +0 -160
  191. package/dst/man/ase-util-compat.1 +0 -25
  192. package/dst/man/ase-util-diagram.1 +0 -76
  193. package/dst/man/ase-util-meta.1 +0 -45
  194. package/dst/man/ase-util-metric.1 +0 -54
  195. package/dst/man/ase-util-mint.1 +0 -59
  196. package/dst/man/ase-util-worktree.1 +0 -72
  197. package/dst/man/ase-util.1 +0 -50
  198. package/dst/man/ase.1 +0 -124
@@ -0,0 +1,46 @@
1
+ # ase-task-delete(1) -- Delete a Task Plan
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task delete`
6
+ \[`-h`|`--help`\]
7
+ *id*
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase task delete** deletes the task plan with the given *id*,
12
+ including all its attachments, from the task store (see
13
+ `ase-task`(1)). For a `seq` task id scheme, the sequence number of the
14
+ deleted task is never reused by `ase-task-newid`(1), as it raises the
15
+ high-water mark of the sequence numbers of the project. References to
16
+ the deleted task in the `After` keys of other task plans are left
17
+ alone.
18
+
19
+ ## OPTIONS
20
+
21
+ - \[`-h`|`--help`\]:
22
+ Show usage information and exit.
23
+
24
+ ## ARGUMENTS
25
+
26
+ - *id*:
27
+ The id of the task, matching `[A-Za-z0-9#][A-Za-z0-9#_-]*`.
28
+
29
+ ## EXIT STATUS
30
+
31
+ `0` if the task existed and was deleted, `1` if no such task existed
32
+ (reported as `task: no task "`*id*`" to remove`) or on any error.
33
+
34
+ ## EXAMPLES
35
+
36
+ ```sh
37
+ $ ase task delete json-export
38
+ ```
39
+
40
+ ## SEE ALSO
41
+
42
+ `ase`(1), `ase-task`(1), `ase-task-purge`(1), `ase-task-rename`(1).
43
+
44
+ ## AUTHOR
45
+
46
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,73 @@
1
+ # ase-task-edit(1) -- Edit a Task Plan in the Editor
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task edit`
6
+ \[`-h`|`--help`\]
7
+ *id*
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase task edit** opens the task plan with the given *id* of the task
12
+ store (see `ase-task`(1)) in the editor defined by `$EDITOR`, else
13
+ `$VISUAL` (falling back to `vi`), run through the shell (so a value
14
+ with arguments is supported). As the task store is not necessarily
15
+ local, the plan is round-tripped through a temporary file
16
+ `ase-task-`*XXXXXX*`/`*id*`.md` below the system temporary directory.
17
+ A not yet existing plan starts as its minimal frontmatter (just the
18
+ `Type` and `Id` keys).
19
+
20
+ After the editor exits, an unchanged text is not saved at all. A
21
+ changed text is saved like by `ase-task-save`(1), i.e., checked
22
+ against the task lifecycle model, where the save is *conditional* on
23
+ the plan as loaded (resp. create-only for a not yet existing plan), so
24
+ a change of the task in the meantime (e.g., by an agent) is never
25
+ overwritten.
26
+
27
+ A changed `Id` frontmatter key renames the task after the save, like
28
+ `ase-task-rename`(1), where an already existing target id is refused
29
+ before anything is saved. An id not conforming to the task id scheme
30
+ of the project is warned about.
31
+
32
+ If the save fails because the task was changed in the meantime, the
33
+ edits are not saved, but kept in the temporary file, whose path is
34
+ reported. On any other failure (e.g., an unreachable status), the
35
+ error is reported and, on a terminal, `re-edit? [Y/n]` is asked: by
36
+ default the editor is opened again on the edited text, while `n` (and
37
+ a non-interactive standard input) gives up, keeping the edits in the
38
+ temporary file, too.
39
+
40
+ ## OPTIONS
41
+
42
+ - \[`-h`|`--help`\]:
43
+ Show usage information and exit.
44
+
45
+ ## ARGUMENTS
46
+
47
+ - *id*:
48
+ The id of the task, matching `[A-Za-z0-9#][A-Za-z0-9#_-]*`.
49
+
50
+ ## ENVIRONMENT
51
+
52
+ - `EDITOR`, `VISUAL`:
53
+ The editor command (default: `vi`).
54
+
55
+ ## EXIT STATUS
56
+
57
+ `0` on success (also for an unchanged text), `1` if the edits could
58
+ not be saved.
59
+
60
+ ## EXAMPLES
61
+
62
+ ```sh
63
+ $ EDITOR="code --wait" ase task edit json-export
64
+ ```
65
+
66
+ ## SEE ALSO
67
+
68
+ `ase`(1), `ase-task`(1), `ase-task-save`(1), `ase-task-rename`(1),
69
+ `ase-task-view`(1), `ase-task-board`(1), `vi`(1).
70
+
71
+ ## AUTHOR
72
+
73
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,92 @@
1
+ # ase-task-idscheme(1) -- Get or Set the Task Id Scheme
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task idscheme`
6
+ \[`-h`|`--help`\]
7
+ \[*scheme*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase task idscheme** gets or sets the task id scheme of the current
12
+ project in the task store (see `ase-task`(1)), i.e., the scheme after
13
+ which `ase-task-newid`(1) generates new task ids (see **TASK ID
14
+ SCHEMES** in `ase-task`(1)).
15
+
16
+ Without *scheme*, the effective scheme is printed: for a local task
17
+ store (`ase:`, `github:`, `gitlab:`, or `gitea+`*scheme*`:`), which
18
+ always follows the configuration, the `project.task.idscheme`
19
+ configuration (default: `slug`); for a remote task store (`ase://` or
20
+ `ases://`), the scheme the project is registered under in the task
21
+ store, which is shared by all clients of the project and hence
22
+ registered under `project.task.idscheme` on first use only.
23
+
24
+ A configured `project.task.idscheme` deviating from the scheme of a
25
+ remote task store is warned about once per deviation only (tracked in
26
+ the *per-user state directory* as `task-lifecycle.json`).
27
+
28
+ With *scheme*, the project in the task store is explicitly switched to
29
+ this scheme: for a local task store by setting `project.task.idscheme`
30
+ on the `project` scope (see `ase-config`(1)), for a remote task store
31
+ by re-registering the project there. The existing task ids are not
32
+ changed, but ids not conforming to the new scheme are warned about on
33
+ their next save, rename, and switch. The switch is logged as `task:
34
+ set task id scheme of project from "`*from*`" to "`*scheme*`"`.
35
+
36
+ ## OPTIONS
37
+
38
+ - \[`-h`|`--help`\]:
39
+ Show usage information and exit.
40
+
41
+ ## ARGUMENTS
42
+
43
+ - \[*scheme*\]:
44
+ The task id scheme to switch to:
45
+ - `slug`\[`:`*words*\]: the slug of the first *words* (`1`-`16`,
46
+ default: `2`) words of the task title, e.g., `json-export`.
47
+ - `seq`\[`:`*template*\]: a continuously increasing sequence number,
48
+ rendered through the sprintf-style *template* (default: `%d`) with
49
+ exactly one `%d` or `%0`*width*`d` (*width* `0`-`16`) and otherwise
50
+ only the characters `A-Z`, `a-z`, `#`, `_`, and `-` (but not
51
+ starting with `_` or `-`), e.g., `FOO-%03d` or `#%d`. This scheme
52
+ is required by the GitHub, GitLab, and Gitea task stores, as their
53
+ task ids are the issue numbers (e.g., `seq:#%d`).
54
+ - `any`: an arbitrary id, as proposed by the caller.
55
+
56
+ ## FILES
57
+
58
+ - `.ase/config.yaml`:
59
+ The `project` scope configuration receiving `project.task.idscheme`
60
+ on a switch of a local task store.
61
+
62
+ - *per-user state directory*`/task-lifecycle.json`:
63
+ The deviations of the configured task id scheme (and lifecycle
64
+ model) from the ones of a remote task store already warned about.
65
+
66
+ ## EXIT STATUS
67
+
68
+ `0` on success, `1` on an invalid *scheme* or an unreachable task
69
+ store.
70
+
71
+ ## EXAMPLES
72
+
73
+ ```sh
74
+ # print the effective task id scheme
75
+ $ ase task idscheme
76
+ slug
77
+
78
+ # switch to sequence numbers like "ASE-007"
79
+ $ ase task idscheme "seq:ASE-%03d"
80
+
81
+ # switch to issue numbers like "#42" (quoted, as "#" starts a comment)
82
+ $ ase task idscheme "seq:#%d"
83
+ ```
84
+
85
+ ## SEE ALSO
86
+
87
+ `ase`(1), `ase-task`(1), `ase-task-newid`(1), `ase-task-lifecycle`(1),
88
+ `ase-config`(1).
89
+
90
+ ## AUTHOR
91
+
92
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,92 @@
1
+ # ase-task-lifecycle(1) -- Get or Set the Task Lifecycle Model
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task lifecycle`
6
+ \[`-h`|`--help`\]
7
+ \[*name*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase task lifecycle** gets or sets the task lifecycle model of the
12
+ current project in the task store (see `ase-task`(1)), i.e., the state
13
+ machine the `Status` frontmatter keys of its task plans follow (see
14
+ **TASK LIFECYCLE MODELS** in `ase-task`(1)).
15
+
16
+ Without *name*, the effective model is printed: for a local task store
17
+ (`ase:`, `github:`, `gitlab:`, or `gitea+`*scheme*`:`), which always
18
+ follows the configuration, the `project.task.lifecycle` configuration
19
+ (default: `solo`); for a remote task store (`ase://` or `ases://`),
20
+ the model the project is registered under in the task store, which is
21
+ shared by all clients of the project and hence registered under
22
+ `project.task.lifecycle` on first use only.
23
+
24
+ A configured `project.task.lifecycle` deviating from the model of a
25
+ remote task store is warned about once per deviation only (tracked in
26
+ the *per-user state directory* as `task-lifecycle.json`).
27
+
28
+ With *name*, the project in the task store is explicitly switched to
29
+ this model: for a local task store by setting `project.task.lifecycle`
30
+ on the `project` scope (see `ase-config`(1)), for a remote task store by
31
+ re-registering the project there.
32
+
33
+ On every switch of the model, the `Status` of the existing task plans is
34
+ mapped onto the new model: a state also existing in the new model is
35
+ kept, else the first candidate state existing in the new model wins (for
36
+ a finished state only a finished one), else the initial state (resp. the
37
+ first finished state) of the new model is used. For instance, from
38
+ `solo` to `team`, `OPEN` becomes `PLANNING` and `CLOSED` becomes
39
+ `IMPLEMENTED`, and from `enterprise` to `solo`, `PLANNED` and
40
+ `IMPLEMENTING` become `OPEN` and `INTEGRATED` becomes `CLOSED`.
41
+
42
+ Plans without a `Status` key are left alone, as they read as the initial
43
+ state of any model. The switch is logged as
44
+ `task: set lifecycle model of project from "`*from*`" to "`*name*`"`.
45
+
46
+ ## OPTIONS
47
+
48
+ - \[`-h`|`--help`\]:
49
+ Show usage information and exit.
50
+
51
+ ## ARGUMENTS
52
+
53
+ - \[*name*\]:
54
+ The name of the task lifecycle model to switch to: `solo` (the
55
+ single-phase lifecycle for a local solo developer), `team` (the
56
+ two-phase lifecycle for a distributed small team), or `enterprise`
57
+ (the four-phase lifecycle for a gated enterprise pipeline).
58
+
59
+ ## FILES
60
+
61
+ - `.ase/config.yaml`:
62
+ The `project` scope configuration receiving `project.task.lifecycle`
63
+ on a switch of a local task store.
64
+
65
+ - *per-user state directory*`/task-lifecycle.json`:
66
+ The deviations of the configured lifecycle model (and task id
67
+ scheme) from the ones of a remote task store already warned about.
68
+
69
+ ## EXIT STATUS
70
+
71
+ `0` on success, `1` on an unknown model *name* or an unreachable task
72
+ store.
73
+
74
+ ## EXAMPLES
75
+
76
+ ```sh
77
+ # print the effective task lifecycle model
78
+ $ ase task lifecycle
79
+ solo
80
+
81
+ # switch the project to the enterprise lifecycle model
82
+ $ ase task lifecycle enterprise
83
+ ```
84
+
85
+ ## SEE ALSO
86
+
87
+ `ase`(1), `ase-task`(1), `ase-task-status`(1), `ase-task-idscheme`(1),
88
+ `ase-task-board`(1), `ase-config`(1), `ase-agent`(1).
89
+
90
+ ## AUTHOR
91
+
92
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,86 @@
1
+ # ase-task-list(1) -- List Persisted Task Ids
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task list`
6
+ \[`-h`|`--help`\]
7
+ \[`-v`|`--verbose`\]
8
+ \[`-i`|`--include` *states*\]
9
+ \[`-e`|`--exclude` *states*\]
10
+
11
+ ## DESCRIPTION
12
+
13
+ **ase task list** lists the ids of the persisted task plans of the
14
+ current project in the task store (see `ase-task`(1)), one per line,
15
+ in natural order (numbers ordered by their value, e.g., `FOO-2` before
16
+ `FOO-10`).
17
+
18
+ The listed tasks are restricted to those whose lifecycle status
19
+ (the `Status` frontmatter key, or the initial state of the task
20
+ lifecycle model if absent) is in the effective state set of the
21
+ `--include` and `--exclude` options. By default, all tasks except the
22
+ ones in a *finished* state of the task lifecycle model are listed. A
23
+ task whose status is unknown to the task lifecycle model is always
24
+ listed, but warned about.
25
+
26
+ ## OPTIONS
27
+
28
+ - \[`-h`|`--help`\]:
29
+ Show usage information and exit.
30
+
31
+ - \[`-v`|`--verbose`\]:
32
+ Annotate each task id with the lifecycle status of its plan, the
33
+ modification time of its plan as `(YYYY-MM-DD HH:MM)`, its effort
34
+ size (the T-shirt size `XS`, `S`, `M`, `L`, or `XL` of the valid
35
+ `Effort` frontmatter key of the plan, else `-`), and its title (the
36
+ text after `TASK:` of the first `# TASK:` heading of the plan body,
37
+ else empty), all separated by a single tab character.
38
+
39
+ - \[`-i`|`--include` *states*\]:
40
+ Restrict the listing to the tasks in one of the *states*, a
41
+ comma-separated list of lifecycle states of the task lifecycle model
42
+ of the project (given case-insensitively), where the term `finished`
43
+ expands to the finished states of the model and the term `none` (as
44
+ well as an empty term) is ignored. An empty list (default: `none`)
45
+ means all states.
46
+
47
+ The states of the models are `OPEN`, `SHELVED`, `CLOSED`, and
48
+ `CANCELLED` (`solo`), `PLANNING`, `SHELVED`, `IMPLEMENTING`,
49
+ `STALLED`, `IMPLEMENTED`, and `CANCELLED` (`team`), and `DRAFTED`,
50
+ `SHELVED`, `PLANNING`, `PLANNED`, `STALLED`, `IMPLEMENTING`,
51
+ `IMPLEMENTED`, `DECLINED`, `QUALIFYING`, `QUALIFIED`, `DEFERRED`,
52
+ `INTEGRATING`, `INTEGRATED`, and `CANCELLED` (`enterprise`). A state
53
+ which is not one of the model is an error.
54
+
55
+ - \[`-e`|`--exclude` *states*\]:
56
+ Exclude the tasks in one of the *states* from the listing, a
57
+ comma-separated list of the same form as for `--include`, applied
58
+ after `--include` (default: `finished`, i.e., the finished states of
59
+ the model). Use `none` to exclude nothing. If `--include` and
60
+ `--exclude` cancel out to an empty state set, this is an error.
61
+
62
+ ## EXIT STATUS
63
+
64
+ `0` on success, `1` on an error, like an invalid state, an empty
65
+ effective state set, or an unreachable task store.
66
+
67
+ ## EXAMPLES
68
+
69
+ ```sh
70
+ # list all unfinished tasks
71
+ $ ase task list
72
+
73
+ # list all tasks, including the finished ones, with details
74
+ $ ase task list -v -e none
75
+
76
+ # list the tasks waiting for their qualification
77
+ $ ase task list -i IMPLEMENTED,DECLINED
78
+ ```
79
+
80
+ ## SEE ALSO
81
+
82
+ `ase`(1), `ase-task`(1), `ase-task-status`(1), `ase-task-board`(1).
83
+
84
+ ## AUTHOR
85
+
86
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,48 @@
1
+ # ase-task-load(1) -- Write a Task Plan to Standard Output
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task load`
6
+ \[`-h`|`--help`\]
7
+ *id*
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase task load** loads the task plan with the given *id* from the task
12
+ store (see `ase-task`(1)) and writes it to standard output, in the
13
+ textual task format: the frontmatter block (with its keys in canonical
14
+ order and their values column-aligned), the plan body, and the
15
+ attachment blocks (with their `Data` as literal block scalars). A plan
16
+ in a legacy format is normalized into the current frontmatter shape on
17
+ the fly. If no such task exists, nothing is written.
18
+
19
+ ## OPTIONS
20
+
21
+ - \[`-h`|`--help`\]:
22
+ Show usage information and exit.
23
+
24
+ ## ARGUMENTS
25
+
26
+ - *id*:
27
+ The id of the task, matching `[A-Za-z0-9#][A-Za-z0-9#_-]*`.
28
+
29
+ ## EXIT STATUS
30
+
31
+ `0` on success, also if no such task exists, `1` on an invalid *id*
32
+ or an unreachable task store.
33
+
34
+ ## EXAMPLES
35
+
36
+ ```sh
37
+ # copy a task plan into a file
38
+ $ ase task load json-export >json-export.md
39
+ ```
40
+
41
+ ## SEE ALSO
42
+
43
+ `ase`(1), `ase-task`(1), `ase-task-save`(1), `ase-task-view`(1),
44
+ `ase-task-edit`(1).
45
+
46
+ ## AUTHOR
47
+
48
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,100 @@
1
+ # ase-task-newid(1) -- Print the Next Free Task Id
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task newid`
6
+ \[`-h`|`--help`\]
7
+ \[`-p`|`--proposal` *id*\]
8
+ \[`-t`|`--taken` *ids*\]
9
+ \[`-v`|`--verbose`\]
10
+ \[*title*\]
11
+
12
+ ## DESCRIPTION
13
+
14
+ **ase task newid** prints the next free task id according to the
15
+ effective task id scheme of the project (see `ase-task-idscheme`(1)
16
+ and **TASK ID SCHEMES** in `ase-task`(1)), determined by searching all
17
+ existing task ids of the project in the task store, plus the ids given
18
+ via `--taken`, plus the reserved id `default`:
19
+
20
+ - `slug`\[`:`*words*\]:
21
+ The slug of the first *words* words of *title* (starting with the
22
+ first word beginning with a letter, with diacritics stripped,
23
+ lower-cased, and joined with `-`).
24
+
25
+ - `seq`\[`:`*template*\]:
26
+ The highest sequence number of all ids matching *template* plus one,
27
+ but at least the high-water mark of all ids ever removed (deleted,
28
+ purged, or renamed) or allocated plus one, so the number of such a
29
+ task is never reused. Ids not matching the current *template* (e.g.,
30
+ after a template change) are ignored.
31
+
32
+ The allocated number is *reserved* by raising the high-water mark
33
+ atomically, so a concurrent allocation never yields the same id. The
34
+ *title* is not used.
35
+
36
+ - `any`:
37
+ The proposed id of `--proposal`, sanitized (whitespace runs replaced
38
+ by `-`, all characters other than `A-Z`, `a-z`, `0-9`, `#`, `_`, and
39
+ `-` removed, and leading `_` and `-` stripped), else the slug of the
40
+ first two words of *title*.
41
+
42
+ A slug or proposed id which is already taken gets a numeric suffix
43
+ `-2`, `-3`, etc. As only a `seq` id is reserved, the first save of the
44
+ new task should be a create-only one (`ase task save --create`, see
45
+ `ase-task-save`(1)), which fails instead of overwriting a concurrently
46
+ created task of the same id.
47
+
48
+ ## OPTIONS
49
+
50
+ - \[`-h`|`--help`\]:
51
+ Show usage information and exit.
52
+
53
+ - \[`-p`|`--proposal` *id*\]:
54
+ The proposed task id, honored for the task id scheme `any` only
55
+ (default: none).
56
+
57
+ - \[`-t`|`--taken` *ids*\]:
58
+ A comma-separated list of task ids to consider as taken in addition
59
+ to the existing ones (default: none), e.g., the ids planned for
60
+ further tasks not yet saved. Whitespace around the ids is ignored.
61
+
62
+ - \[`-v`|`--verbose`\]:
63
+ Instead of the id only, print the three lines `scheme:` (the
64
+ effective task id scheme), `id:` (the new id), and `match:` (the
65
+ regular expression matching all ids conforming to the scheme).
66
+
67
+ ## ARGUMENTS
68
+
69
+ - \[*title*\]:
70
+ The title of the new task, from which the id is derived for the
71
+ schemes `slug` and `any` (default: empty). For `slug` (and for `any`
72
+ without `--proposal`), a title without any word beginning with a
73
+ letter is an error.
74
+
75
+ ## EXIT STATUS
76
+
77
+ `0` on success, `1` if no id can be derived (e.g., a missing title)
78
+ or the task store is unreachable.
79
+
80
+ ## EXAMPLES
81
+
82
+ ```sh
83
+ # derive an id from a title under the "slug" scheme
84
+ $ ase task newid "Export the Tasks as JSON"
85
+ export-the
86
+
87
+ # show the details of the allocation under the "seq:#%d" scheme
88
+ $ ase task newid -v
89
+ scheme: seq:#%d
90
+ id: #43
91
+ match: ^#([0-9]+)$
92
+ ```
93
+
94
+ ## SEE ALSO
95
+
96
+ `ase`(1), `ase-task`(1), `ase-task-idscheme`(1), `ase-task-save`(1).
97
+
98
+ ## AUTHOR
99
+
100
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,49 @@
1
+ # ase-task-purge(1) -- Remove Old Task Plans
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task purge`
6
+ \[`-h`|`--help`\]
7
+ \[*age*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase task purge** removes all persisted task plans of the current
12
+ project from the task store (see `ase-task`(1)) whose modification
13
+ time is older than *age*, regardless of their lifecycle status. Each
14
+ removed task is logged as `task: purged "`*id*`"`, or `task: no tasks
15
+ to purge` is logged if none was removed. For a `seq` task id scheme,
16
+ the sequence numbers of the purged tasks are never reused by
17
+ `ase-task-newid`(1).
18
+
19
+ ## OPTIONS
20
+
21
+ - \[`-h`|`--help`\]:
22
+ Show usage information and exit.
23
+
24
+ ## ARGUMENTS
25
+
26
+ - \[*age*\]:
27
+ The maximum age of the task plans to keep, as `<number><unit>`, where
28
+ *unit* is one of `h` (hour), `d` (day, 24 hours), `m` (month, 30
29
+ days), or `y` (year, 365 days) (default: `31d`).
30
+
31
+ ## EXIT STATUS
32
+
33
+ `0` on success (also if no task was removed), `1` on a malformed *age*
34
+ or an unreachable task store.
35
+
36
+ ## EXAMPLES
37
+
38
+ ```sh
39
+ # remove all tasks not modified within the last half year
40
+ $ ase task purge 6m
41
+ ```
42
+
43
+ ## SEE ALSO
44
+
45
+ `ase`(1), `ase-task`(1), `ase-task-delete`(1), `ase-task-list`(1).
46
+
47
+ ## AUTHOR
48
+
49
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,69 @@
1
+ # ase-task-rename(1) -- Rename a Task Plan
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase task rename`
6
+ \[`-h`|`--help`\]
7
+ *old-id*
8
+ *new-id*
9
+
10
+ ## DESCRIPTION
11
+
12
+ **ase task rename** renames the task plan with the given *old-id* to
13
+ *new-id* in the task store (see `ase-task`(1)), rewriting the `Id`
14
+ frontmatter key inside the plan.
15
+
16
+ All references to *old-id* in the `After` frontmatter keys of all
17
+ other task plans of the project are rewritten to *new-id* (in the
18
+ frontmatter only, so their `Modified` key stays untouched), and the
19
+ number of updated plans is reported. For an *explicit epic*, i.e., a
20
+ task whose `Group` key equals its old (or already its new) id, its own
21
+ `Group` key and those of all its member task plans are rewritten, too,
22
+ while otherwise the group names are left untouched, as they form a
23
+ namespace of their own.
24
+
25
+ The task itself is renamed first, so an interruption never leaves both
26
+ ids behind; a failure to update the references afterwards is reported
27
+ together with the plans left behind.
28
+
29
+ For a `seq` task id scheme, the sequence number of *old-id* is never
30
+ reused by `ase-task-newid`(1). A *new-id* not conforming to the task
31
+ id scheme of the project is warned about. Finally, the rename is
32
+ reported to the `ase service` of the project (if it ever ran, i.e.,
33
+ `.ase/service.yaml` exists), so its AI usage windows follow the task;
34
+ a failure of this report is only warned about.
35
+
36
+ ## OPTIONS
37
+
38
+ - \[`-h`|`--help`\]:
39
+ Show usage information and exit.
40
+
41
+ ## ARGUMENTS
42
+
43
+ - *old-id*:
44
+ The current id of the task, matching `[A-Za-z0-9#][A-Za-z0-9#_-]*`.
45
+
46
+ - *new-id*:
47
+ The new id of the task, matching `[A-Za-z0-9#][A-Za-z0-9#_-]*`,
48
+ which must not be in use already.
49
+
50
+ ## EXIT STATUS
51
+
52
+ `0` on success, `1` if no such task existed (reported as `task: no
53
+ task "`*old-id*`" to rename`), the *new-id* is already in use, or on
54
+ any other error.
55
+
56
+ ## EXAMPLES
57
+
58
+ ```sh
59
+ $ ase task rename json-export export-json
60
+ ```
61
+
62
+ ## SEE ALSO
63
+
64
+ `ase`(1), `ase-task`(1), `ase-task-edit`(1), `ase-task-newid`(1),
65
+ `ase-task-delete`(1).
66
+
67
+ ## AUTHOR
68
+
69
+ Dr. Ralf S. Engelschall <rse@engelschall.com>