@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,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>
|