@rse/ase 1.0.7 → 2.0.0

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 (279) hide show
  1. package/dst/ase-agent-definition-api.d.ts +184 -0
  2. package/dst/ase-agent-definition-api.js +6 -0
  3. package/dst/ase-agent-definition-builtin/condenser.js +42 -0
  4. package/dst/ase-agent-definition-builtin/editor.js +45 -0
  5. package/dst/ase-agent-definition-builtin/estimator.js +98 -0
  6. package/dst/ase-agent-definition-builtin/implementer.js +121 -0
  7. package/dst/ase-agent-definition-builtin/integrator.js +56 -0
  8. package/dst/ase-agent-definition-builtin/qualifier.js +61 -0
  9. package/dst/ase-agent-definition-builtin/rebooter.js +41 -0
  10. package/dst/ase-agent-definition-builtin/researcher.js +77 -0
  11. package/dst/ase-agent-definition-core.js +827 -0
  12. package/dst/ase-agent-fleet.js +772 -0
  13. package/dst/ase-agent-process.js +232 -0
  14. package/dst/ase-agent-relay-client.js +509 -0
  15. package/dst/ase-agent-relay-core.js +213 -0
  16. package/dst/ase-agent-relay-server-bind.js +242 -0
  17. package/dst/ase-agent-relay-server-cli.js +50 -0
  18. package/dst/ase-agent-runtime-claim.js +189 -0
  19. package/dst/ase-agent-runtime-engine.js +1100 -0
  20. package/dst/ase-agent-runtime-exec.js +275 -0
  21. package/dst/ase-agent-runtime-phase.js +581 -0
  22. package/dst/ase-agent-runtime-request.js +272 -0
  23. package/dst/ase-agent-runtime-tool.js +207 -0
  24. package/dst/ase-agent-runtime.js +1316 -0
  25. package/dst/ase-agent.js +65 -0
  26. package/dst/ase-artifact.js +6 -5
  27. package/dst/ase-config-core.js +465 -0
  28. package/dst/ase-config-schema.js +351 -0
  29. package/dst/ase-config-scope.js +172 -0
  30. package/dst/ase-config.js +25 -585
  31. package/dst/ase-hook.js +228 -111
  32. package/dst/ase-lib-daemon-cli.js +130 -0
  33. package/dst/ase-lib-hash.js +20 -0
  34. package/dst/{ase-log.js → ase-lib-log.js} +40 -7
  35. package/dst/ase-lib-server-bind.js +115 -0
  36. package/dst/ase-lib-server-cli.js +474 -0
  37. package/dst/{ase-table.js → ase-lib-table.js} +1 -1
  38. package/dst/{ase-version.js → ase-lib-version.js} +3 -0
  39. package/dst/ase-man.js +96 -0
  40. package/dst/ase-mcp.js +166 -13
  41. package/dst/{ase-getopt.js → ase-service-getopt.js} +82 -80
  42. package/dst/{ase-markdown.js → ase-service-markdown.js} +18 -11
  43. package/dst/ase-service-otel.js +1246 -0
  44. package/dst/{ase-skills.js → ase-service-skills.js} +29 -64
  45. package/dst/ase-service-state.js +101 -0
  46. package/dst/ase-service.js +251 -76
  47. package/dst/ase-setup-common.js +141 -0
  48. package/dst/ase-setup-mcp.js +359 -0
  49. package/dst/ase-setup-settings.js +837 -0
  50. package/dst/ase-setup.js +113 -869
  51. package/dst/ase-spec.js +31 -19
  52. package/dst/ase-statusline.js +108 -43
  53. package/dst/ase-task-board-core.js +739 -0
  54. package/dst/ase-task-board-filter.js +127 -0
  55. package/dst/ase-task-board-flow.js +237 -0
  56. package/dst/ase-task-board-graph.js +497 -0
  57. package/dst/ase-task-board-stats.js +263 -0
  58. package/dst/ase-task-board-tui-control.js +775 -0
  59. package/dst/ase-task-board-tui-model.js +1008 -0
  60. package/dst/ase-task-board-tui-popup.js +626 -0
  61. package/dst/ase-task-board-tui-style.js +106 -0
  62. package/dst/ase-task-board-tui-view.js +847 -0
  63. package/dst/ase-task-board-tui.js +189 -0
  64. package/dst/ase-task-board-web-client.css +1 -0
  65. package/dst/ase-task-board-web-client.html +20 -0
  66. package/dst/ase-task-board-web-client.js +81 -0
  67. package/dst/ase-task-board-web-server.js +823 -0
  68. package/dst/ase-task-board.js +134 -0
  69. package/dst/ase-task-format.js +757 -0
  70. package/dst/ase-task-request.js +208 -0
  71. package/dst/ase-task-store-client.js +495 -0
  72. package/dst/ase-task-store-core.js +804 -0
  73. package/dst/ase-task-store-issues.js +237 -0
  74. package/dst/ase-task-store-plugin-api.js +6 -0
  75. package/dst/ase-task-store-plugin-ase.js +484 -0
  76. package/dst/ase-task-store-plugin-delegate.js +137 -0
  77. package/dst/ase-task-store-plugin-gitea.js +666 -0
  78. package/dst/ase-task-store-plugin-github.js +696 -0
  79. package/dst/ase-task-store-plugin-gitlab.js +668 -0
  80. package/dst/ase-task-store-server-bind.js +538 -0
  81. package/dst/ase-task-store-server-cli.js +154 -0
  82. package/dst/ase-task.js +1335 -357
  83. package/dst/{ase-compat.js → ase-util-compat.js} +2 -2
  84. package/dst/{ase-diagram.js → ase-util-diagram.js} +107 -32
  85. package/dst/{ase-meta.js → ase-util-meta.js} +2 -2
  86. package/dst/{ase-metric.js → ase-util-metric.js} +2 -2
  87. package/dst/{ase-mint.js → ase-util-mint.js} +19 -12
  88. package/dst/{ase-worktree.js → ase-util-worktree.js} +30 -19
  89. package/dst/ase-util.js +20 -0
  90. package/dst/ase.js +108 -32
  91. package/dst/man/ase-agent-adhoc.1 +515 -0
  92. package/dst/man/ase-agent-condenser.1 +193 -0
  93. package/dst/man/ase-agent-editor.1 +212 -0
  94. package/dst/man/ase-agent-estimator.1 +214 -0
  95. package/dst/man/ase-agent-fleet.1 +185 -0
  96. package/dst/man/ase-agent-implementer.1 +233 -0
  97. package/dst/man/ase-agent-integrator.1 +213 -0
  98. package/dst/man/ase-agent-qualifier.1 +214 -0
  99. package/dst/man/ase-agent-rebooter.1 +193 -0
  100. package/dst/man/ase-agent-relay.1 +128 -0
  101. package/dst/man/ase-agent-researcher.1 +217 -0
  102. package/dst/man/ase-agent.1 +264 -0
  103. package/dst/man/ase-artifact-list.1 +38 -0
  104. package/dst/man/ase-artifact-name.1 +39 -0
  105. package/dst/man/ase-artifact.1 +56 -0
  106. package/dst/man/ase-config-delete.1 +45 -0
  107. package/dst/man/ase-config-edit.1 +48 -0
  108. package/dst/man/ase-config-get.1 +46 -0
  109. package/dst/man/ase-config-init.1 +60 -0
  110. package/dst/man/ase-config-list.1 +42 -0
  111. package/dst/man/ase-config-set.1 +52 -0
  112. package/dst/man/ase-config.1 +225 -0
  113. package/dst/man/ase-hook-permission-request.1 +36 -0
  114. package/dst/man/ase-hook-pre-tool-use.1 +59 -0
  115. package/dst/man/ase-hook-session-end.1 +47 -0
  116. package/dst/man/ase-hook-session-persona.1 +37 -0
  117. package/dst/man/ase-hook-session-start.1 +81 -0
  118. package/dst/man/ase-hook-stop.1 +34 -0
  119. package/dst/man/ase-hook-user-prompt-submit.1 +34 -0
  120. package/dst/man/ase-hook.1 +51 -0
  121. package/dst/man/ase-man.1 +67 -0
  122. package/dst/man/ase-mcp.1 +61 -0
  123. package/dst/man/ase-service-log.1 +43 -0
  124. package/dst/man/ase-service-send.1 +47 -0
  125. package/dst/man/ase-service-start.1 +54 -0
  126. package/dst/man/ase-service-status.1 +46 -0
  127. package/dst/man/ase-service-stop.1 +37 -0
  128. package/dst/man/ase-service.1 +85 -0
  129. package/dst/man/ase-setup-disable.1 +44 -0
  130. package/dst/man/ase-setup-enable.1 +45 -0
  131. package/dst/man/ase-setup-install.1 +73 -0
  132. package/dst/man/ase-setup-mcp.1 +124 -0
  133. package/dst/man/ase-setup-status.1 +60 -0
  134. package/dst/man/ase-setup-statusline.1 +92 -0
  135. package/dst/man/ase-setup-telemetry.1 +92 -0
  136. package/dst/man/ase-setup-uninstall.1 +59 -0
  137. package/dst/man/ase-setup-update.1 +64 -0
  138. package/dst/man/ase-setup.1 +93 -0
  139. package/dst/man/ase-spec-export.1 +62 -0
  140. package/dst/man/ase-spec-lint.1 +40 -0
  141. package/dst/man/ase-spec-preview.1 +40 -0
  142. package/dst/man/ase-spec.1 +46 -0
  143. package/dst/man/ase-statusline.1 +189 -0
  144. package/dst/man/ase-task-assign.1 +71 -0
  145. package/dst/man/ase-task-board.1 +384 -0
  146. package/dst/man/ase-task-delete.1 +35 -0
  147. package/dst/man/ase-task-edit.1 +46 -0
  148. package/dst/man/ase-task-idscheme.1 +65 -0
  149. package/dst/man/ase-task-lifecycle.1 +57 -0
  150. package/dst/man/ase-task-list.1 +47 -0
  151. package/dst/man/ase-task-load.1 +36 -0
  152. package/dst/man/ase-task-newid.1 +61 -0
  153. package/dst/man/ase-task-purge.1 +37 -0
  154. package/dst/man/ase-task-rename.1 +44 -0
  155. package/dst/man/ase-task-request.1 +61 -0
  156. package/dst/man/ase-task-save.1 +48 -0
  157. package/dst/man/ase-task-status.1 +55 -0
  158. package/dst/man/ase-task-store.1 +194 -0
  159. package/dst/man/ase-task-view.1 +40 -0
  160. package/dst/man/ase-task.1 +160 -0
  161. package/dst/man/ase-util-compat.1 +25 -0
  162. package/dst/man/ase-util-diagram.1 +76 -0
  163. package/dst/man/ase-util-meta.1 +45 -0
  164. package/dst/man/ase-util-metric.1 +54 -0
  165. package/dst/man/ase-util-mint.1 +59 -0
  166. package/dst/man/ase-util-worktree.1 +72 -0
  167. package/dst/man/ase-util.1 +50 -0
  168. package/dst/man/ase.1 +124 -0
  169. package/package.json +79 -21
  170. package/plugin/.claude-plugin/plugin.json +1 -1
  171. package/plugin/.codex-plugin/plugin.json +1 -1
  172. package/plugin/.github/plugin/plugin.json +1 -1
  173. package/plugin/agents/ase-meta-diagram.md +12 -8
  174. package/plugin/agents/ase-repo-review.md +322 -0
  175. package/plugin/hooks/hooks-codex.json +5 -0
  176. package/plugin/hooks/hooks-copilot.json +5 -0
  177. package/plugin/hooks/hooks.json +8 -0
  178. package/plugin/meta/ase-common-approach.md +117 -0
  179. package/plugin/meta/ase-common-changeset.md +256 -0
  180. package/plugin/meta/ase-common-code.md +10 -173
  181. package/plugin/meta/ase-common-grill.md +317 -0
  182. package/plugin/meta/ase-common-resolve.md +305 -0
  183. package/plugin/meta/ase-common-task.md +83 -4
  184. package/plugin/meta/ase-constitution.md +0 -2
  185. package/plugin/meta/ase-format-specbook.md +208 -25
  186. package/plugin/meta/ase-format-specbook.yaml +242 -851
  187. package/plugin/meta/ase-format-task.md +669 -125
  188. package/plugin/meta/ase-persona.md +3 -4
  189. package/plugin/meta/ase-skill.md +9 -0
  190. package/plugin/mods/ase-mods.ts +409 -0
  191. package/plugin/mods/claude-code.d.ts +13417 -0
  192. package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
  193. package/plugin/skills/ase-arch-analyze/help.md +2 -2
  194. package/plugin/skills/ase-code-analyze/SKILL.md +59 -8
  195. package/plugin/skills/ase-code-analyze/help.md +29 -4
  196. package/plugin/skills/ase-code-edit/SKILL.md +107 -181
  197. package/plugin/skills/ase-code-edit/help.md +118 -31
  198. package/plugin/skills/ase-code-lint/SKILL.md +64 -13
  199. package/plugin/skills/ase-code-lint/help.md +32 -2
  200. package/plugin/skills/ase-docs-proofread/SKILL.md +4 -4
  201. package/plugin/skills/ase-docs-proofread/help.md +1 -1
  202. package/plugin/skills/ase-docs-refine/SKILL.md +4 -4
  203. package/plugin/skills/ase-docs-shorten/SKILL.md +4 -4
  204. package/plugin/skills/ase-help-intent/data.md +2164 -1087
  205. package/plugin/skills/ase-help-intent/help.md +1 -1
  206. package/plugin/skills/ase-help-skill/catalog.md +12 -9
  207. package/plugin/skills/ase-meta-brainstorm/SKILL.md +1 -1
  208. package/plugin/skills/ase-meta-config/SKILL.md +3 -4
  209. package/plugin/skills/ase-meta-config/help.md +31 -10
  210. package/plugin/skills/ase-meta-mint/SKILL.md +5 -5
  211. package/plugin/skills/ase-meta-mint/help.md +10 -5
  212. package/plugin/skills/ase-meta-why/help.md +1 -1
  213. package/plugin/skills/ase-meta-workflow/SKILL.md +7 -7
  214. package/plugin/skills/ase-meta-workflow/help.md +4 -4
  215. package/plugin/skills/ase-meta-workflow/sample.md +3 -3
  216. package/plugin/skills/ase-meta-workflow/workflow.txt +22 -18
  217. package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/SKILL.md +4 -3
  218. package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/help.md +5 -5
  219. package/plugin/skills/{ase-meta-commit → ase-repo-commit}/SKILL.md +6 -6
  220. package/plugin/skills/{ase-meta-commit → ase-repo-commit}/help.md +5 -5
  221. package/plugin/skills/{ase-meta-diff → ase-repo-diff}/SKILL.md +6 -6
  222. package/plugin/skills/{ase-meta-diff → ase-repo-diff}/help.md +8 -8
  223. package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/SKILL.md +19 -19
  224. package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/help.md +10 -12
  225. package/plugin/skills/ase-repo-merge/SKILL.md +346 -0
  226. package/plugin/skills/ase-repo-merge/help.md +107 -0
  227. package/plugin/skills/ase-repo-resolve/SKILL.md +158 -0
  228. package/plugin/skills/ase-repo-resolve/help.md +102 -0
  229. package/plugin/skills/ase-repo-review/SKILL.md +406 -0
  230. package/plugin/skills/ase-repo-review/help.md +181 -0
  231. package/plugin/skills/ase-spec-edit/SKILL.md +117 -183
  232. package/plugin/skills/ase-spec-edit/help.md +107 -26
  233. package/plugin/skills/ase-sync-reconcile/help.md +1 -1
  234. package/plugin/skills/ase-task-assign/SKILL.md +111 -0
  235. package/plugin/skills/ase-task-assign/help.md +119 -0
  236. package/plugin/skills/ase-task-condense/SKILL.md +21 -21
  237. package/plugin/skills/ase-task-condense/help.md +12 -10
  238. package/plugin/skills/ase-task-delete/SKILL.md +1 -1
  239. package/plugin/skills/ase-task-dissect/SKILL.md +71 -48
  240. package/plugin/skills/ase-task-dissect/help.md +10 -9
  241. package/plugin/skills/ase-task-edit/SKILL.md +379 -94
  242. package/plugin/skills/ase-task-edit/help.md +95 -22
  243. package/plugin/skills/ase-task-estimate/SKILL.md +492 -0
  244. package/plugin/skills/ase-task-estimate/help.md +158 -0
  245. package/plugin/skills/ase-task-grill/SKILL.md +246 -138
  246. package/plugin/skills/ase-task-grill/help.md +129 -26
  247. package/plugin/skills/ase-task-id/SKILL.md +8 -1
  248. package/plugin/skills/ase-task-id/help.md +6 -3
  249. package/plugin/skills/ase-task-implement/SKILL.md +535 -145
  250. package/plugin/skills/ase-task-implement/help.md +138 -47
  251. package/plugin/skills/ase-task-integrate/SKILL.md +549 -0
  252. package/plugin/skills/ase-task-integrate/help.md +187 -0
  253. package/plugin/skills/ase-task-list/SKILL.md +55 -23
  254. package/plugin/skills/ase-task-list/help.md +45 -21
  255. package/plugin/skills/ase-task-reboot/SKILL.md +84 -43
  256. package/plugin/skills/ase-task-reboot/help.md +28 -8
  257. package/plugin/skills/ase-task-rename/SKILL.md +10 -2
  258. package/plugin/skills/ase-task-research/SKILL.md +386 -0
  259. package/plugin/skills/ase-task-research/help.md +102 -0
  260. package/plugin/skills/ase-task-status/SKILL.md +137 -0
  261. package/plugin/skills/ase-task-status/help.md +80 -0
  262. package/plugin/skills/ase-task-view/SKILL.md +49 -24
  263. package/plugin/skills/ase-task-view/help.md +19 -9
  264. package/plugin/agents/ase-meta-review.md +0 -187
  265. package/plugin/skills/ase-code-craft/SKILL.md +0 -264
  266. package/plugin/skills/ase-code-craft/help.md +0 -122
  267. package/plugin/skills/ase-code-refactor/SKILL.md +0 -232
  268. package/plugin/skills/ase-code-refactor/help.md +0 -109
  269. package/plugin/skills/ase-code-resolve/SKILL.md +0 -289
  270. package/plugin/skills/ase-code-resolve/help.md +0 -116
  271. package/plugin/skills/ase-meta-review/SKILL.md +0 -210
  272. package/plugin/skills/ase-meta-review/help.md +0 -96
  273. package/plugin/skills/ase-task-preflight/SKILL.md +0 -166
  274. package/plugin/skills/ase-task-preflight/help.md +0 -82
  275. /package/dst/{ase-ignore.js → ase-lib-ignore.js} +0 -0
  276. /package/dst/{ase-stdio.js → ase-lib-stdio.js} +0 -0
  277. /package/dst/{ase-kv.js → ase-service-kv.js} +0 -0
  278. /package/dst/{ase-sleep.js → ase-service-sleep.js} +0 -0
  279. /package/dst/{ase-timestamp.js → ase-service-timestamp.js} +0 -0
@@ -0,0 +1,47 @@
1
+ .TH "ASE-TASK-LIST" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-list\fR - List Persisted Task Ids
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task list\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-v\fR|\fB--verbose\fR\[rB] \[lB]\fB-i\fR|\fB--include\fR \fIstates\fR\[rB] \[lB]\fB-e\fR|\fB--exclude\fR \fIstates\fR\[rB]
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task list\fR lists the ids of the persisted task plans of the current project in the task store (see \fBase-task\fR(1)), one per line, in natural order (numbers ordered by their value, e.g., \fBFOO-2\fR before \fBFOO-10\fR).
10
+ .P
11
+ The listed tasks are restricted to those whose lifecycle status (the \fBStatus\fR frontmatter key, or the initial state of the task lifecycle model if absent) is in the effective state set of the \fB--include\fR and \fB--exclude\fR options. By default, all tasks except the ones in a \fIfinished\fR state of the task lifecycle model are listed. A task whose status is unknown to the task lifecycle model is always listed, but warned about.
12
+ .SH "OPTIONS"
13
+ .RS 0
14
+ .IP \(bu 4
15
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
16
+ .IP \(bu 4
17
+ \[lB]\fB-v\fR|\fB--verbose\fR\[rB]: Annotate each task id with the lifecycle status of its plan, the modification time of its plan as \fB(YYYY-MM-DD HH:MM)\fR, its effort size (the T-shirt size \fBXS\fR, \fBS\fR, \fBM\fR, \fBL\fR, or \fBXL\fR of the valid \fBEffort\fR frontmatter key of the plan, else \fB-\fR), and its title (the text after \fBTASK:\fR of the first \fB# TASK:\fR heading of the plan body, else empty), all separated by a single tab character.
18
+ .IP \(bu 4
19
+ \[lB]\fB-i\fR|\fB--include\fR \fIstates\fR\[rB]: Restrict the listing to the tasks in one of the \fIstates\fR, a comma-separated list of lifecycle states of the task lifecycle model of the project (given case-insensitively), where the term \fBfinished\fR expands to the finished states of the model and the term \fBnone\fR (as well as an empty term) is ignored. An empty list (default: \fBnone\fR) means all states.
20
+ .sp
21
+ The states of the models are \fBOPEN\fR, \fBSHELVED\fR, \fBCLOSED\fR, and \fBCANCELLED\fR (\fBsolo\fR), \fBPLANNING\fR, \fBSHELVED\fR, \fBIMPLEMENTING\fR, \fBSTALLED\fR, \fBIMPLEMENTED\fR, and \fBCANCELLED\fR (\fBteam\fR), and \fBDRAFTED\fR, \fBSHELVED\fR, \fBPLANNING\fR, \fBPLANNED\fR, \fBSTALLED\fR, \fBIMPLEMENTING\fR, \fBIMPLEMENTED\fR, \fBDECLINED\fR, \fBQUALIFYING\fR, \fBQUALIFIED\fR, \fBDEFERRED\fR, \fBINTEGRATING\fR, \fBINTEGRATED\fR, and \fBCANCELLED\fR (\fBenterprise\fR). A state which is not one of the model is an error.
22
+ .IP \(bu 4
23
+ \[lB]\fB-e\fR|\fB--exclude\fR \fIstates\fR\[rB]: Exclude the tasks in one of the \fIstates\fR from the listing, a comma-separated list of the same form as for \fB--include\fR, applied after \fB--include\fR (default: \fBfinished\fR, i.e., the finished states of the model). Use \fBnone\fR to exclude nothing. If \fB--include\fR and \fB--exclude\fR cancel out to an empty state set, this is an error.
24
+ .RE 0
25
+ .SH "EXIT STATUS"
26
+ .P
27
+ \fB0\fR on success, \fB1\fR on an error, like an invalid state, an empty effective state set, or an unreachable task store.
28
+ .SH "EXAMPLES"
29
+ .P
30
+ .RS 2
31
+ .nf
32
+ # list all unfinished tasks
33
+ $ ase task list
34
+
35
+ # list all tasks, including the finished ones, with details
36
+ $ ase task list -v -e none
37
+
38
+ # list the tasks waiting for their qualification
39
+ $ ase task list -i IMPLEMENTED,DECLINED
40
+ .fi
41
+ .RE
42
+ .SH "SEE ALSO"
43
+ .P
44
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-status\fR(1), \fBase-task-board\fR(1).
45
+ .SH "AUTHOR"
46
+ .P
47
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,36 @@
1
+ .TH "ASE-TASK-LOAD" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-load\fR - Write a Task Plan to Standard Output
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task load\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIid\fR
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task load\fR loads the task plan with the given \fIid\fR from the task store (see \fBase-task\fR(1)) and writes it to standard output, in the textual task format: the frontmatter block (with its keys in canonical order and their values column-aligned), the plan body, and the attachment blocks (with their \fBData\fR as literal block scalars). A plan in a legacy format is normalized into the current frontmatter shape on the fly. If no such task exists, nothing is written.
10
+ .SH "OPTIONS"
11
+ .RS 0
12
+ .IP \(bu 4
13
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
14
+ .RE 0
15
+ .SH "ARGUMENTS"
16
+ .RS 0
17
+ .IP \(bu 4
18
+ \fIid\fR: The id of the task, matching \fB\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*\fR.
19
+ .RE 0
20
+ .SH "EXIT STATUS"
21
+ .P
22
+ \fB0\fR on success, also if no such task exists, \fB1\fR on an invalid \fIid\fR or an unreachable task store.
23
+ .SH "EXAMPLES"
24
+ .P
25
+ .RS 2
26
+ .nf
27
+ # copy a task plan into a file
28
+ $ ase task load json-export >json-export.md
29
+ .fi
30
+ .RE
31
+ .SH "SEE ALSO"
32
+ .P
33
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-save\fR(1), \fBase-task-view\fR(1), \fBase-task-edit\fR(1).
34
+ .SH "AUTHOR"
35
+ .P
36
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,61 @@
1
+ .TH "ASE-TASK-NEWID" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-newid\fR - Print the Next Free Task Id
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task newid\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-p\fR|\fB--proposal\fR \fIid\fR\[rB] \[lB]\fB-t\fR|\fB--taken\fR \fIids\fR\[rB] \[lB]\fB-v\fR|\fB--verbose\fR\[rB] \[lB]\fItitle\fR\[rB]
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task newid\fR prints the next free task id according to the effective task id scheme of the project (see \fBase-task-idscheme\fR(1) and \fBTASK ID SCHEMES\fR in \fBase-task\fR(1)), determined by searching all existing task ids of the project in the task store, plus the ids given via \fB--taken\fR, plus the reserved id \fBdefault\fR:
10
+ .RS 0
11
+ .IP \(bu 4
12
+ \fBslug\fR\[lB]\fB:\fR\fIwords\fR\[rB]: The slug of the first \fIwords\fR words of \fItitle\fR (starting with the first word beginning with a letter, with diacritics stripped, lower-cased, and joined with \fB-\fR).
13
+ .IP \(bu 4
14
+ \fBseq\fR\[lB]\fB:\fR\fItemplate\fR\[rB]: The highest sequence number of all ids matching \fItemplate\fR plus one, but at least the high-water mark of all ids ever removed (deleted, purged, or renamed) or allocated plus one, so the number of such a task is never reused. Ids not matching the current \fItemplate\fR (e.g., after a template change) are ignored.
15
+ .sp
16
+ The allocated number is \fIreserved\fR by raising the high-water mark atomically, so a concurrent allocation never yields the same id. The \fItitle\fR is not used.
17
+ .IP \(bu 4
18
+ \fBany\fR: The proposed id of \fB--proposal\fR, sanitized (whitespace runs replaced by \fB-\fR, all characters other than \fBA-Z\fR, \fBa-z\fR, \fB0-9\fR, \fB#\fR, \fB_\fR, and \fB-\fR removed, and leading \fB_\fR and \fB-\fR stripped), else the slug of the first two words of \fItitle\fR.
19
+ .RE 0
20
+ .P
21
+ A slug or proposed id which is already taken gets a numeric suffix \fB-2\fR, \fB-3\fR, etc. As only a \fBseq\fR id is reserved, the first save of the new task should be a create-only one (\fBase task save --create\fR, see \fBase-task-save\fR(1)), which fails instead of overwriting a concurrently created task of the same id.
22
+ .SH "OPTIONS"
23
+ .RS 0
24
+ .IP \(bu 4
25
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
26
+ .IP \(bu 4
27
+ \[lB]\fB-p\fR|\fB--proposal\fR \fIid\fR\[rB]: The proposed task id, honored for the task id scheme \fBany\fR only (default: none).
28
+ .IP \(bu 4
29
+ \[lB]\fB-t\fR|\fB--taken\fR \fIids\fR\[rB]: A comma-separated list of task ids to consider as taken in addition to the existing ones (default: none), e.g., the ids planned for further tasks not yet saved. Whitespace around the ids is ignored.
30
+ .IP \(bu 4
31
+ \[lB]\fB-v\fR|\fB--verbose\fR\[rB]: Instead of the id only, print the three lines \fBscheme:\fR (the effective task id scheme), \fBid:\fR (the new id), and \fBmatch:\fR (the regular expression matching all ids conforming to the scheme).
32
+ .RE 0
33
+ .SH "ARGUMENTS"
34
+ .RS 0
35
+ .IP \(bu 4
36
+ \[lB]\fItitle\fR\[rB]: The title of the new task, from which the id is derived for the schemes \fBslug\fR and \fBany\fR (default: empty). For \fBslug\fR (and for \fBany\fR without \fB--proposal\fR), a title without any word beginning with a letter is an error.
37
+ .RE 0
38
+ .SH "EXIT STATUS"
39
+ .P
40
+ \fB0\fR on success, \fB1\fR if no id can be derived (e.g., a missing title) or the task store is unreachable.
41
+ .SH "EXAMPLES"
42
+ .P
43
+ .RS 2
44
+ .nf
45
+ # derive an id from a title under the "slug" scheme
46
+ $ ase task newid "Export the Tasks as JSON"
47
+ export-the
48
+
49
+ # show the details of the allocation under the "seq:#%d" scheme
50
+ $ ase task newid -v
51
+ scheme: seq:#%d
52
+ id: #43
53
+ match: ^#(\[lB]0-9\[rB]+)$
54
+ .fi
55
+ .RE
56
+ .SH "SEE ALSO"
57
+ .P
58
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-idscheme\fR(1), \fBase-task-save\fR(1).
59
+ .SH "AUTHOR"
60
+ .P
61
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,37 @@
1
+ .TH "ASE-TASK-PURGE" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-purge\fR - Remove Old Task Plans
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task purge\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fIage\fR\[rB]
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task purge\fR removes all persisted task plans of the current project from the task store (see \fBase-task\fR(1)) whose modification time is older than \fIage\fR, regardless of their lifecycle status. Each removed task is logged as \fBtask: purged "\fR\fIid\fR\fB"\fR, or \fBtask: no tasks
10
+ to purge\fR is logged if none was removed. For a \fBseq\fR task id scheme, the sequence numbers of the purged tasks are never reused by \fBase-task-newid\fR(1).
11
+ .SH "OPTIONS"
12
+ .RS 0
13
+ .IP \(bu 4
14
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
15
+ .RE 0
16
+ .SH "ARGUMENTS"
17
+ .RS 0
18
+ .IP \(bu 4
19
+ \[lB]\fIage\fR\[rB]: The maximum age of the task plans to keep, as \fB<number><unit>\fR, where \fIunit\fR is one of \fBh\fR (hour), \fBd\fR (day, 24 hours), \fBm\fR (month, 30 days), or \fBy\fR (year, 365 days) (default: \fB31d\fR).
20
+ .RE 0
21
+ .SH "EXIT STATUS"
22
+ .P
23
+ \fB0\fR on success (also if no task was removed), \fB1\fR on a malformed \fIage\fR or an unreachable task store.
24
+ .SH "EXAMPLES"
25
+ .P
26
+ .RS 2
27
+ .nf
28
+ # remove all tasks not modified within the last half year
29
+ $ ase task purge 6m
30
+ .fi
31
+ .RE
32
+ .SH "SEE ALSO"
33
+ .P
34
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-delete\fR(1), \fBase-task-list\fR(1).
35
+ .SH "AUTHOR"
36
+ .P
37
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,44 @@
1
+ .TH "ASE-TASK-RENAME" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-rename\fR - Rename a Task Plan
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task rename\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIold-id\fR \fInew-id\fR
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task rename\fR renames the task plan with the given \fIold-id\fR to \fInew-id\fR in the task store (see \fBase-task\fR(1)), rewriting the \fBId\fR frontmatter key inside the plan.
10
+ .P
11
+ All references to \fIold-id\fR in the \fBAfter\fR frontmatter keys of all other task plans of the project are rewritten to \fInew-id\fR (in the frontmatter only, so their \fBModified\fR key stays untouched), and the number of updated plans is reported. For an \fIexplicit epic\fR, i.e., a task whose \fBGroup\fR key equals its old (or already its new) id, its own \fBGroup\fR key and those of all its member task plans are rewritten, too, while otherwise the group names are left untouched, as they form a namespace of their own.
12
+ .P
13
+ The task itself is renamed first, so an interruption never leaves both ids behind; a failure to update the references afterwards is reported together with the plans left behind.
14
+ .P
15
+ For a \fBseq\fR task id scheme, the sequence number of \fIold-id\fR is never reused by \fBase-task-newid\fR(1). A \fInew-id\fR not conforming to the task id scheme of the project is warned about. Finally, the rename is reported to the \fBase service\fR of the project (if it ever ran, i.e., \fB.ase/service.yaml\fR exists), so its AI usage windows follow the task; a failure of this report is only warned about.
16
+ .SH "OPTIONS"
17
+ .RS 0
18
+ .IP \(bu 4
19
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
20
+ .RE 0
21
+ .SH "ARGUMENTS"
22
+ .RS 0
23
+ .IP \(bu 4
24
+ \fIold-id\fR: The current id of the task, matching \fB\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*\fR.
25
+ .IP \(bu 4
26
+ \fInew-id\fR: The new id of the task, matching \fB\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*\fR, which must not be in use already.
27
+ .RE 0
28
+ .SH "EXIT STATUS"
29
+ .P
30
+ \fB0\fR on success, \fB1\fR if no such task existed (reported as \fBtask: no
31
+ task "\fR\fIold-id\fR\fB" to rename\fR), the \fInew-id\fR is already in use, or on any other error.
32
+ .SH "EXAMPLES"
33
+ .P
34
+ .RS 2
35
+ .nf
36
+ $ ase task rename json-export export-json
37
+ .fi
38
+ .RE
39
+ .SH "SEE ALSO"
40
+ .P
41
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-edit\fR(1), \fBase-task-newid\fR(1), \fBase-task-delete\fR(1).
42
+ .SH "AUTHOR"
43
+ .P
44
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,61 @@
1
+ .TH "ASE-TASK-REQUEST" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-request\fR - Request the Processing of a Task by a Prompt
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task request\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIid\fR \fIname\fR \[lB]\fIprompt\fR ...\[rB]
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task request\fR requests the processing of the task \fIid\fR by the \fIprompt\fR under the request name \fIname\fR, for an agent processing the requests of this name (see \fBase-agent\fR(1)): \fBedit\fR for the edit requests of \fBase agent editor\fR (the same as key \fBE\fR of the task board, see \fBase-task-board\fR(1)), \fBestimate\fR for the (re-)estimation requests of \fBase agent estimator --mode request\fR (see \fBase-agent-estimator\fR(1)), \fBresearch\fR for the research requests of \fBase agent researcher\fR (see \fBase-agent-researcher\fR(1)), and any other name for the requests of a request agent of a definition kind or of \fBase agent adhoc\fR (with \fB--type request\fR and \fB--request-name\fR \fIname\fR).
10
+ .P
11
+ The request is attached to the task plan as an attachment of the type \fBtext/plain; charset=utf-8; kind="\fR\fIname\fR\fB"\fR, with the prompt as its data, its whitespace-collapsed first 60 characters as its description (resp. \fIname\fR\fB request without prompt\fR for an empty prompt), and its creation and modification timestamps. The aggregated state of the requests of the name is mirrored in the \fBTags\fR frontmatter key of the task as the tag \fBase-agent-\fR\fIname\fR\fB:pending\fR (resp. \fBase-agent-editor:pending\fR for \fBedit\fR), as the agents and the task boards see the task headers only.
12
+ .P
13
+ While being processed, the request turns into \fBkind="\fR\fIname\fR\fB-running"\fR (tag value \fBactive\fR), and on a failure into \fBkind="\fR\fIname\fR\fB-failed"\fR (tag value \fBfailed\fR). A new request replaces all failed requests of the name.
14
+ .P
15
+ The request is refused for a missing task, for a task in a finished state of the task lifecycle model, for an empty prompt of an \fBedit\fR request, and while a request of the name is being processed, as adding a request would change the task plan under the agent processing the running one. The prompt of any other request may be empty, for the request agents ignoring the prompts of their requests (like \fBase agent
16
+ estimator --mode request\fR) or taking them as optional (like \fBase agent
17
+ researcher\fR, which then researches the task plan itself), while a request agent consuming the prompts (by the placeholder \fB{prompt}\fR of its prompt template, or by its hooks \fBprepare\fR, \fBprompt\fR, or \fBfinish\fR, see \fBase-agent-adhoc\fR(1)) turns a request with an empty prompt into a failed one.
18
+ .P
19
+ The MCP tool \fBase_task_request\fR provides the same functionality.
20
+ .SH "OPTIONS"
21
+ .RS 0
22
+ .IP \(bu 4
23
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
24
+ .RE 0
25
+ .SH "ARGUMENTS"
26
+ .RS 0
27
+ .IP \(bu 4
28
+ \fIid\fR: The id of the task.
29
+ .IP \(bu 4
30
+ \fIname\fR: The request name: a lower-case word of letters, digits, and dashes, starting with a letter, not ending in \fB-running\fR or \fB-failed\fR, and none of the built-in agent kinds \fBrebooter\fR, \fBcondenser\fR, \fBimplementer\fR, \fBqualifier\fR, \fBintegrator\fR, \fBeditor\fR, \fBestimator\fR, and \fBresearcher\fR (as its tag \fBase-agent-\fR\fIname\fR is the one of a built-in agent). The name \fBedit\fR selects the edit requests of \fBase agent editor\fR, the name \fBestimate\fR the estimation requests of \fBase agent estimator --mode
31
+ request\fR, and the name \fBresearch\fR the research requests of \fBase agent
32
+ researcher --mode request\fR.
33
+ .IP \(bu 4
34
+ \[lB]\fIprompt\fR ...\[rB]: The prompt of the request, with all its words joined by single spaces (and leading and trailing whitespace removed), where an omitted prompt is an empty one (refused for \fBedit\fR).
35
+ .RE 0
36
+ .SH "EXIT STATUS"
37
+ .P
38
+ \fB0\fR on success, \fB1\fR if the request name is invalid or the request is refused.
39
+ .SH "EXAMPLES"
40
+ .P
41
+ .RS 2
42
+ .nf
43
+ # request an edit of the plan of task "json-export"
44
+ $ ase task request json-export edit "Also support JSON5 output"
45
+
46
+ # request a lint report from a request agent of name "lint"
47
+ $ ase task request json-export lint focus on error handling
48
+
49
+ # request a re-estimation of the effort (without a prompt)
50
+ $ ase task request json-export estimate
51
+
52
+ # request a research of a topic for the task
53
+ $ ase task request json-export research streaming JSON serialization
54
+ .fi
55
+ .RE
56
+ .SH "SEE ALSO"
57
+ .P
58
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-board\fR(1), \fBase-agent\fR(1), \fBase-agent-editor\fR(1), \fBase-agent-researcher\fR(1), \fBase-agent-adhoc\fR(1).
59
+ .SH "AUTHOR"
60
+ .P
61
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,48 @@
1
+ .TH "ASE-TASK-SAVE" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-save\fR - Save a Task Plan from Standard Input
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task save\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-c\fR|\fB--create\fR\[rB] \fIid\fR
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task save\fR reads a task plan in the textual task format (see \fBase util meta format-task\fR) from standard input and saves it under the given \fIid\fR in the task store (see \fBase-task\fR(1)), creating or overwriting the task.
10
+ .P
11
+ The text is parsed into the frontmatter block, the plan body, and the attachment blocks, where a plan in a legacy format is normalized into the current frontmatter shape first. The \fBId\fR frontmatter key is always taken from the \fIid\fR argument, and a missing \fBType\fR key is set to \fBtext/vnd.ase.task\fR. A text without a closed frontmatter block is taken as the plan body.
12
+ .P
13
+ Attachment data given as the elision marker \fB\[lB]elided: \fR\fIN\fR\fB lines\[rB]\fR is restored from the stored plan. The usage attachment (\fBkind="usage"\fR) can be changed by a booking only: an overwrite keeps the stored usage attachment, while a create drops any given one.
14
+ .P
15
+ The \fBStatus\fR frontmatter key is checked against the task lifecycle model of the project: a changed status which is not a state of the model, or which is not reachable from the previously saved status (or, for a new task, from the initial state of the model) via one or more transitions of the model, lets the save fail. An \fIid\fR not conforming to the task id scheme of the project is saved, but warned about.
16
+ .SH "OPTIONS"
17
+ .RS 0
18
+ .IP \(bu 4
19
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
20
+ .IP \(bu 4
21
+ \[lB]\fB-c\fR|\fB--create\fR\[rB]: Create the task only: fail if a task with \fIid\fR already exists, instead of overwriting it (default: off). Intended for the first save of a task whose \fIid\fR was obtained via \fBase-task-newid\fR(1), as only a \fBseq\fR id is reserved there, so a concurrently created task of the same id is never overwritten.
22
+ .RE 0
23
+ .SH "ARGUMENTS"
24
+ .RS 0
25
+ .IP \(bu 4
26
+ \fIid\fR: The id of the task, matching \fB\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*\fR.
27
+ .RE 0
28
+ .SH "EXIT STATUS"
29
+ .P
30
+ \fB0\fR on success, \fB1\fR if the \fIid\fR is invalid, the plan is invalid (e.g., a multi-line frontmatter value, or a body which would be misread as attachments), the \fBStatus\fR is not a state of the model or not reachable, or, with \fB--create\fR, the task already exists.
31
+ .SH "EXAMPLES"
32
+ .P
33
+ .RS 2
34
+ .nf
35
+ # create a new task from a plan file
36
+ $ id=$(ase task newid "Export as JSON")
37
+ $ ase task save --create "$id" <plan.md
38
+
39
+ # round-trip a task plan through a filter
40
+ $ ase task load json-export | sed -e 's/^Kind:.*/Kind: CRAFTING/' | ase task save json-export
41
+ .fi
42
+ .RE
43
+ .SH "SEE ALSO"
44
+ .P
45
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-load\fR(1), \fBase-task-edit\fR(1), \fBase-task-newid\fR(1), \fBase-task-status\fR(1).
46
+ .SH "AUTHOR"
47
+ .P
48
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,55 @@
1
+ .TH "ASE-TASK-STATUS" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-status\fR - Get or Set the Lifecycle Status of a Task
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task status\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fIid\fR\[lB]\fB:\fR\[rB]\[rB] \[lB]\fIstatus\fR\[rB]
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task status\fR gets or sets the lifecycle status, i.e., the \fBStatus\fR frontmatter key, of the task plan with the given \fIid\fR in the task store (see \fBase-task\fR(1)).
10
+ .P
11
+ Without \fIstatus\fR, the current status is printed to standard output, where a plan without a \fBStatus\fR key reads as the initial state of the task lifecycle model of the project.
12
+ .P
13
+ With \fIstatus\fR, the status is set and the change is logged as \fBtask: set status of "\fR\fIid\fR\fB" from "\fR\fIfrom\fR\fB" to "\fR\fIto\fR\fB"\fR. The \fIstatus\fR is given case-insensitively and has to be a state of the task lifecycle model of the project, which is reachable from the current status via one or more transitions of the model (see \fBTASK LIFECYCLE MODELS\fR in \fBase-task\fR(1)); a current status foreign to the model can be changed to any state, to allow its correction.
14
+ .P
15
+ Only the frontmatter is changed: the \fBModified\fR key is left alone, as it tracks the changes of the plan body only.
16
+ .SH "OPTIONS"
17
+ .RS 0
18
+ .IP \(bu 4
19
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
20
+ .RE 0
21
+ .SH "ARGUMENTS"
22
+ .RS 0
23
+ .IP \(bu 4
24
+ \[lB]\fIid\fR\[lB]\fB:\fR\[rB]\[rB]: The id of the task (default: \fB$ASE_TASK_ID\fR, else \fBdefault\fR). A trailing colon is stripped, which allows to mark a single argument explicitly as the \fIid\fR: if only a single argument is given, it is taken as \fIstatus\fR if it is a state of the task lifecycle model (case-insensitively) and has no trailing colon, else as \fIid\fR.
25
+ .IP \(bu 4
26
+ \[lB]\fIstatus\fR\[rB]: The lifecycle status to set.
27
+ .RE 0
28
+ .SH "ENVIRONMENT"
29
+ .RS 0
30
+ .IP \(bu 4
31
+ \fBASE_TASK_ID\fR: The default task id (default: \fBdefault\fR).
32
+ .RE 0
33
+ .SH "EXIT STATUS"
34
+ .P
35
+ \fB0\fR on success, \fB1\fR if no such task exists, the \fIstatus\fR is not a state of the task lifecycle model, or it is not reachable from the current status.
36
+ .SH "EXAMPLES"
37
+ .P
38
+ .RS 2
39
+ .nf
40
+ # print the status of the task "json-export"
41
+ $ ase task status json-export:
42
+
43
+ # move the task "json-export" into "SHELVED"
44
+ $ ase task status json-export shelved
45
+
46
+ # close the task of $ASE_TASK_ID
47
+ $ ase task status CLOSED
48
+ .fi
49
+ .RE
50
+ .SH "SEE ALSO"
51
+ .P
52
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-lifecycle\fR(1), \fBase-task-list\fR(1), \fBase-task-save\fR(1).
53
+ .SH "AUTHOR"
54
+ .P
55
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,194 @@
1
+ .TH "ASE-TASK-STORE" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-store\fR - Manage the per-user task store REST API server
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task store\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIcommand\fR \[lB]\fIoptions\fR \[lB]...\[rB]\[rB]
7
+ .P
8
+ \fBase task store start\fR \[lB]\fB-a\fR|\fB--address\fR \fIhost\fR\[rB] \[lB]\fB-p\fR|\fB--port\fR \fIport\fR\[rB] \[lB]\fB-t\fR|\fB--token\fR \fItoken\fR\[rB] \[lB]\fB-c\fR|\fB--cors\fR \fIorigin\fR\[rB] \[lB]\fB-m\fR|\fB--module\fR \fIname\fR\[rB] \[lB]\fB-d\fR|\fB--basedir\fR \fIdir\fR\[rB] \[lB]\fB-s\fR|\fB--solo\fR|\fB--no-solo\fR\[rB] \[lB]\fB--with-agent-relay\fR|\fB--without-agent-relay\fR\[rB] \[lB]\fB--tls-cert\fR \fIfile\fR \fB--tls-key\fR \fIfile\fR\[rB] \[lB]\fB-f\fR|\fB--foreground\fR\[rB]
9
+ .P
10
+ \fBase task store status\fR
11
+ .P
12
+ \fBase task store log\fR \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]
13
+ .P
14
+ \fBase task store stop\fR
15
+ .SH "DESCRIPTION"
16
+ .P
17
+ \fBase task store\fR manages the \fItask store server\fR: a per-user (not per-project), bearer token authenticated REST API server, which persists the task plans of \fIall\fR projects registered with it and which the \fBase task\fR commands of a project use through a remote \fBproject.task.store.url\fR of the form \fBase://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB] resp. \fBases://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB]\[lB]\fB?insecure\fR\[rB] (see \fBase-task\fR(1)).
18
+ .P
19
+ It can run locally or on a central host, as long as all clients reach it. The REST API itself, its task plan model, and its event notifications are described in \fBdocs/task-api.md\fR of the \fIASE\fR distribution.
20
+ .P
21
+ The server is \fIstorage agnostic\fR: it implements the authentication, the validation, the task lifecycle model checks, and the event notifications itself, and delegates the \fIpersistence\fR of projects and task plans to a single \fIstorage plugin\fR loaded at its start (see \fBSTORAGE PLUGINS\fR below).
22
+ .P
23
+ The server is configured through its per-user configuration file \fIper-user configuration directory\fR\fB/store.yaml\fR (see \fBFILES\fR), into which the effective configuration of every start is persisted again, so later starts, \fBase task store status\fR, and \fBase task store stop\fR find and probe the running server with the very same address, port, token, and TLS setting. Optionally, the server additionally co-hosts the \fIagent relay\fR (see \fBase-agent-relay\fR(1)), so a central host needs a single server process only.
24
+ .P
25
+ Without a \fIcommand\fR, the usage information is shown and the command exits with status \fB1\fR.
26
+ .SH "OPTIONS"
27
+ .RS 0
28
+ .IP \(bu 4
29
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information of \fBase task store\fR resp. of the given \fIcommand\fR and exit.
30
+ .RE 0
31
+ .SH "COMMANDS"
32
+ .P
33
+ The following commands exist:
34
+ .SS "ase task store start"
35
+ .P
36
+ \fBase task store start\fR \[lB]\fIoptions\fR\[rB]
37
+ .P
38
+ Start the task store server in the background (detached, logging into \fIper-user configuration directory\fR\fB/store.log\fR), or with \fB--foreground\fR in the current process. Before the server is started, the given port is validated, and the TLS certificate and key are resolved (where both or none have to be given) and checked for readability, so invalid options never leave no server running.
39
+ .P
40
+ The start is \fIidempotent\fR: a server already running on the configured address and port (as identified by probing its \fB/projects\fR endpoint) is left alone and reported as \fBtask store: already running on\fR \fIurl\fR. If an explicitly given option \fIdeviates\fR from the configuration of the running server (\fB--address\fR, \fB--port\fR, \fB--token\fR, \fB--cors\fR, \fB--tls-cert\fR, \fB--tls-key\fR, \fB--module\fR, \fB--basedir\fR, \fB--solo\fR/\fB--no-solo\fR, \fB--with-agent-relay\fR, or \fB--without-agent-relay\fR), the running server is instead stopped and restarted with the new configuration.
41
+ .P
42
+ A running server rejecting the configured token is an error. A configured port held by a foreign service is re-allocated (with a warning). Binding to a non-loopback \fIhost\fR without TLS is warned about, as the bearer token would then travel unencrypted over the network.
43
+ .P
44
+ A detached server is awaited (for up to 10 seconds) until it responds to the probe with the expected token, and is reported as \fBtask store:
45
+ started on\fR \fIurl\fR \fB(storage plugin "\fR\fIname\fR\fB")\fR. If it exits during startup, does not respond, or its port is taken by a foreign service meanwhile, it is terminated and the failure is reported together with the last 20 lines of its log. The server terminates on \fBSIGTERM\fR, \fBSIGINT\fR, \fBSIGHUP\fR, or \fBSIGQUIT\fR, stopping its storage plugin and removing its \fBpid\fR from \fBstore.yaml\fR. The options are:
46
+ .RS 0
47
+ .IP \(bu 4
48
+ \[lB]\fB-a\fR|\fB--address\fR \fIhost\fR\[rB]: The IP address (or hostname) to bind to (default: the configured \fBaddress\fR, else \fB127.0.0.1\fR). Use \fB0.0.0.0\fR resp. \fB::\fR to bind to all interfaces (the local probes then connect to \fB127.0.0.1\fR resp. \fB::1\fR).
49
+ .IP \(bu 4
50
+ \[lB]\fB-p\fR|\fB--port\fR \fIport\fR\[rB]: The TCP port to bind to, an integer in the range \fB1\fR..\fB65535\fR (default: the configured \fBport\fR, else a free port allocated randomly in the range \fB42000\fR..\fB44000\fR).
51
+ .IP \(bu 4
52
+ \[lB]\fB-t\fR|\fB--token\fR \fItoken\fR\[rB]: The bearer token every request has to carry in its \fBAuthorization: Bearer\fR \fItoken\fR header (default: \fB$ASE_TASK_STORE_TOKEN\fR, else the configured \fBtoken\fR, else a freshly generated random token of 48 hexadecimal digits). The token grants \fIfull\fR access to \fIall\fR projects of the server.
53
+ .IP \(bu 4
54
+ \[lB]\fB-c\fR|\fB--cors\fR \fIorigin\fR\[rB]: Allow cross-origin browser requests (Cross-Origin Resource Sharing, CORS) from \fIorigin\fR, e.g. \fBhttp://localhost:5173\fR, or from any origin with \fB*\fR. Repeatable for multiple origins (default: the configured \fBcors\fR list, else none, i.e., no CORS headers are emitted and cross-origin browser requests fail).
55
+ .IP \(bu 4
56
+ \[lB]\fB-m\fR|\fB--module\fR \fIname\fR\[rB]: The storage plugin to load: \fBase\fR for the built-in file-based one, \fBgithub\fR, \fBgitlab\fR, resp. \fBgitea\fR for the built-in GitHub, GitLab, resp. Gitea Issues one, any other plain \fIname\fR (matching \fB\[lB]A-Za-z0-9_-\[rB]+\fR) for the NPM package \fBase-task-store-\fR\fIname\fR (resolvable from the \fIASE\fR installation), and a relative or absolute path for a local module (default: the configured \fBstorage.plugin\fR, else \fBase\fR).
57
+ .sp
58
+ The given plugin is persisted as \fBstorage.plugin\fR.
59
+ .IP \(bu 4
60
+ \[lB]\fB-d\fR|\fB--basedir\fR \fIdir\fR\[rB]: The base directory of the built-in \fBase\fR storage plugin (default: the configured \fBstorage.options.basedir\fR, resolved relative to the per-user configuration directory, else \fBtasks\fR below it). A given \fIdir\fR is persisted as \fBstorage.options.basedir\fR. Ignored for all other storage plugins.
61
+ .IP \(bu 4
62
+ \[lB]\fB-s\fR|\fB--solo\fR\[rB]: Let the built-in \fBase\fR storage plugin store a \fIsingle\fR project flat in its base directory, accepting \fIany\fR project id (default: the configured \fBstorage.options.solo\fR, else one sub-directory per project). Persisted as \fBstorage.options.solo\fR. Ignored for all other storage plugins.
63
+ .IP \(bu 4
64
+ \[lB]\fB--no-solo\fR\[rB]: Let the built-in \fBase\fR storage plugin store one sub-directory per project, removing a configured \fBstorage.options.solo\fR.
65
+ .IP \(bu 4
66
+ \[lB]\fB--with-agent-relay\fR\[rB]: Additionally co-host the agent relay (see \fBase-agent-relay\fR(1)), i.e., its \fB/agents\fR and \fB/projects/\fR\fIid\fR\fB/agents\fR... endpoints, under the same address, port, and token (default: the configured \fBrelay\fR, else not co-hosted). Persisted as \fBrelay\fR. Mutually exclusive with \fB--without-agent-relay\fR.
67
+ .IP \(bu 4
68
+ \[lB]\fB--without-agent-relay\fR\[rB]: Do not co-host the agent relay, removing a configured \fBrelay\fR. Mutually exclusive with \fB--with-agent-relay\fR.
69
+ .IP \(bu 4
70
+ \[lB]\fB--tls-cert\fR \fIfile\fR\[rB]: Serve HTTPS (and \fBwss://\fR for the WebSocket event endpoint) instead of plain HTTP, with the PEM certificate (chain) in \fIfile\fR. Requires \fB--tls-key\fR. Default: the \fBproject.task.store.crt\fR configuration (resolved relative to the configuration file defining it), unless \fBproject.task.store.url\fR selects plain HTTP via \fBase://\fR on this host, else the configured \fBtls.cert\fR, else plain HTTP. The effective path is persisted as \fBtls.cert\fR.
71
+ .IP \(bu 4
72
+ \[lB]\fB--tls-key\fR \fIfile\fR\[rB]: The PEM private key in \fIfile\fR for HTTPS. Requires \fB--tls-cert\fR. Default: the \fBproject.task.store.key\fR configuration (under the same condition as for \fB--tls-cert\fR), else the configured \fBtls.key\fR. The effective path is persisted as \fBtls.key\fR.
73
+ .IP \(bu 4
74
+ \[lB]\fB-f\fR|\fB--foreground\fR\[rB]: Run the server in the current process instead, logging to the terminal, until it is interrupted (e.g. via \fBCTRL+C\fR) or stopped via \fBase task store stop\fR. An already running server with an unchanged configuration is then an error.
75
+ .IP \(bu 4
76
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
77
+ .RE 0
78
+ .SS "ase task store status"
79
+ .P
80
+ \fBase task store status\fR
81
+ .P
82
+ Report whether the task store server is running, by probing the configured address and port with the configured token. Prints \fBtask
83
+ store: running on\fR \fIurl\fR \fB(pid\fR \fIpid\fR\fB)\fR, followed by \fBwith agent
84
+ relay\fR if the server co-hosts the agent relay, and exits with status \fB0\fR. Otherwise it prints why it is not running -- no port configured, port not responding, port in use by a foreign service, or a running server rejecting the configured token -- and exits with status \fB1\fR.
85
+ .SS "ase task store log"
86
+ .P
87
+ \fBase task store log\fR \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]
88
+ .P
89
+ Show the log \fIper-user configuration directory\fR\fB/store.log\fR of the task store server run in the background. A server run with \fB--foreground\fR logs to the terminal instead, and without a log file just an informational message is printed. The log file is trimmed down to its last 2000 lines whenever a server is started on a log file larger than 1 MB. The options are:
90
+ .RS 0
91
+ .IP \(bu 4
92
+ \[lB]\fB-f\fR|\fB--follow\fR\[rB]: Show the last \fIn\fR lines (default: \fB10\fR) and then, in the style of \fBtail -f\fR, follow all newly appended lines until interrupted, even once the server has stopped.
93
+ .IP \(bu 4
94
+ \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]: Show the last \fIn\fR lines only, where \fIn\fR is a positive integer (default: all lines, or \fB10\fR with \fB--follow\fR).
95
+ .IP \(bu 4
96
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
97
+ .RE 0
98
+ .SS "ase task store stop"
99
+ .P
100
+ \fBase task store stop\fR
101
+ .P
102
+ Stop the task store server: it is first probed (as a stale process id might meanwhile belong to a foreign process), then sent \fBSIGTERM\fR, and awaited for up to 5 seconds until it is gone, and finally its \fBpid\fR is removed from \fBstore.yaml\fR. A server which is not running (or not configured at all) is reported informationally with exit status \fB0\fR. A responding server whose process id is unknown, resp. a server not stopping within the timeout, is an error.
103
+ .SH "STORAGE PLUGINS"
104
+ .P
105
+ A storage plugin is a Node.js module default-exporting a factory function, which receives the \fBstorage.options\fR of \fBstore.yaml\fR verbatim (see \fBdocs/task-api.md\fR for the plugin API). The following built-in storage plugins exist:
106
+ .RS 0
107
+ .IP \(bu 4
108
+ \fBase\fR: The default, file-based plugin, persisting the task plans in the textual task format as \fBTASK-\fR\fIid\fR\fB.md\fR files. Its options are \fBbasedir\fR (the base directory, see \fB--basedir\fR), \fBsolo\fR (see \fB--solo\fR), and \fBlifecycle\fR (the task lifecycle model of newly registered projects, default: \fBsolo\fR).
109
+ .sp
110
+ Without \fBsolo\fR, every project is stored below \fIbasedir\fR\fB/\fR\fIproject-id\fR\fB/\fR, with its \fBPROJECT.yaml\fR as the project registry entry (carrying the task lifecycle model, the task id scheme, and the sequence number high-water mark). With \fBsolo\fR, a single project is stored flat in \fIbasedir\fR itself, with a single \fBPROJECT.yaml\fR there, and any project id is accepted -- which is exactly what the local \fBase:\fR\fIpath\fR form of \fBproject.task.store.url\fR uses in-process, without any server.
111
+ .IP \(bu 4
112
+ \fBgithub\fR: Persists the task plans as the \fIissues\fR of GitHub repositories, through the GitHub REST API.
113
+ .sp
114
+ Its options are \fBurl\fR (the web URL of the GitHub instance, default: \fBhttps://github.com\fR, else e.g. the one of a GitHub Enterprise Server or Cloud), \fBtoken\fR (default: \fB$GITHUB_TOKEN\fR, else \fB$GH_TOKEN\fR; required), \fBrepos\fR (required, a mapping of each project id onto its \fIowner\fR\fB/\fR\fIrepo\fR), and \fBpoll\fR (the polling interval of the change detection in seconds, default: \fB60\fR, \fB0\fR disables it).
115
+ .IP \(bu 4
116
+ \fBgitlab\fR: Persists the task plans as the \fIissues\fR of GitLab projects, through the GitLab REST API v4. Its options are \fBurl\fR (the GitLab instance, default: \fB$GITLAB_HOST\fR, else \fBhttps://gitlab.com\fR), \fBtoken\fR (default: \fB$GITLAB_TOKEN\fR; required, a token with scope \fBapi\fR and at least the role \fIPlanner\fR in the projects), \fBrepos\fR (required, a mapping of each project id onto its \fInamespace\fR\fB/\fR\fIproject\fR path, with nested groups allowed), and \fBpoll\fR (as for \fBgithub\fR).
117
+ .IP \(bu 4
118
+ \fBgitea\fR: Persists the task plans as the \fIissues\fR of Gitea repositories, through the Gitea REST API v1. Its options are \fBurl\fR (the Gitea instance, default: \fBhttps://gitea.com\fR), \fBtoken\fR (default: \fB$GITEA_TOKEN\fR; required, a token with the scopes \fBwrite:issue\fR and \fBread:repository\fR and write access to the repositories), \fBrepos\fR (required, a mapping of each project id onto its \fIowner\fR\fB/\fR\fIrepo\fR), and \fBpoll\fR (as for \fBgithub\fR).
119
+ .RE 0
120
+ .P
121
+ The issue tracker plugins register a project by the label \fBase:project\fR of its repository and map the task plan frontmatter onto the issue state, assignees, labels, and dependencies, as detailed in \fBdocs/task-api.md\fR. The same plugins also run in-process (without any server) for the \fBgithub:\fR, \fBgitlab:\fR, and \fBgitea+http\[lB]s\[rB]:\fR forms of \fBproject.task.store.url\fR (see \fBase-task\fR(1)).
122
+ .SH "ENVIRONMENT"
123
+ .RS 0
124
+ .IP \(bu 4
125
+ \fBASE_TASK_STORE_TOKEN\fR: The default bearer token of \fBase task store start\fR (taking precedence over the configured \fBtoken\fR, but not over \fB--token\fR).
126
+ .IP \(bu 4
127
+ \fBGITHUB_TOKEN\fR, \fBGH_TOKEN\fR: The default access token of the \fBgithub\fR storage plugin.
128
+ .IP \(bu 4
129
+ \fBGITLAB_HOST\fR, \fBGITLAB_TOKEN\fR: The default instance and access token of the \fBgitlab\fR storage plugin.
130
+ .IP \(bu 4
131
+ \fBGITEA_TOKEN\fR: The default access token of the \fBgitea\fR storage plugin.
132
+ .RE 0
133
+ .SH "FILES"
134
+ .RS 0
135
+ .IP \(bu 4
136
+ \fIper-user configuration directory\fR\fB/store.yaml\fR: The configuration and runtime state of the task store server (see \fBase\fR(1) for the location of the per-user configuration directory), written with mode \fB0600\fR, as it carries the token.
137
+ .sp
138
+ Its keys are \fBaddress\fR (the bound address), \fBport\fR (the bound port), \fBtoken\fR (the expected bearer token), \fBpid\fR (the process id of the running server), \fBcors\fR (the list of allowed CORS origins), \fBtls.cert\fR and \fBtls.key\fR (the paths of the PEM certificate and key, resolved relative to the file), \fBrelay\fR (\fBtrue\fR to co-host the agent relay), \fBstorage.plugin\fR (the storage plugin), and \fBstorage.options\fR (the options of the storage plugin, see \fBSTORAGE PLUGINS\fR), as in the example below.
139
+ .IP \(bu 4
140
+ \fIper-user configuration directory\fR\fB/store.log\fR: The log of the task store server run in the background.
141
+ .IP \(bu 4
142
+ \fIper-user configuration directory\fR\fB/tasks/\fR: The default base directory of the built-in \fBase\fR storage plugin.
143
+ .RE 0
144
+ .P
145
+ An example \fBstore.yaml\fR is:
146
+ .P
147
+ .RS 2
148
+ .nf
149
+ address: 127.0.0.1
150
+ port: 42042
151
+ token: 8f3c\[lB]...\[rB]
152
+ cors:
153
+ - http://localhost:5173
154
+ storage:
155
+ plugin: ase
156
+ options:
157
+ basedir: /Users/rse/Library/Application Support/ase/tasks
158
+ .fi
159
+ .RE
160
+ .SH "EXIT STATUS"
161
+ .P
162
+ \fBase task store status\fR exits with status \fB0\fR if the server is running and with status \fB1\fR otherwise. All other commands exit with status \fB0\fR on success and with status \fB1\fR on any error.
163
+ .SH "EXAMPLES"
164
+ .P
165
+ .RS 2
166
+ .nf
167
+ # start the task store server locally and point the project to it
168
+ $ ase task store start --port 42042
169
+ $ ase config set project.task.store.url ase://127.0.0.1:42042
170
+
171
+ # start a central task store server with TLS and co-hosted agent relay
172
+ $ ase task store start --address 0.0.0.0 --port 42042 \[rs]
173
+ --tls-cert /etc/ssl/tasks.example.com.crt \[rs]
174
+ --tls-key /etc/ssl/tasks.example.com.key \[rs]
175
+ --with-agent-relay
176
+
177
+ # start a task store server on the GitHub Issues storage plugin
178
+ # (after configuring "storage.options.repos" in "store.yaml")
179
+ $ ase task store start --module github
180
+
181
+ # check and follow the server
182
+ $ ase task store status
183
+ $ ase task store log -f
184
+
185
+ # stop the server
186
+ $ ase task store stop
187
+ .fi
188
+ .RE
189
+ .SH "SEE ALSO"
190
+ .P
191
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-board\fR(1), \fBase-agent-relay\fR(1), \fBase-config\fR(1).
192
+ .SH "AUTHOR"
193
+ .P
194
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -0,0 +1,40 @@
1
+ .TH "ASE-TASK-VIEW" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
2
+ .SH "NAME"
3
+ \fBase-task-view\fR - Show a Task Plan in the Pager
4
+ .SH "SYNOPSIS"
5
+ .P
6
+ \fBase task view\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIid\fR
7
+ .SH "DESCRIPTION"
8
+ .P
9
+ \fBase task view\fR loads the task plan with the given \fIid\fR from the task store (see \fBase-task\fR(1)) and shows it in the pager defined by \fB$PAGER\fR (falling back to \fBmore\fR), run through the shell (so a value with arguments is supported) and fed with the plan via its standard input. If standard output is not a terminal, the pager is bypassed and the plan is written plainly to standard output.
10
+ .SH "OPTIONS"
11
+ .RS 0
12
+ .IP \(bu 4
13
+ \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
14
+ .RE 0
15
+ .SH "ARGUMENTS"
16
+ .RS 0
17
+ .IP \(bu 4
18
+ \fIid\fR: The id of the task, matching \fB\[lB]A-Za-z0-9#\[rB]\[lB]A-Za-z0-9#_-\[rB]*\fR.
19
+ .RE 0
20
+ .SH "ENVIRONMENT"
21
+ .RS 0
22
+ .IP \(bu 4
23
+ \fBPAGER\fR: The pager command (default: \fBmore\fR).
24
+ .RE 0
25
+ .SH "EXIT STATUS"
26
+ .P
27
+ \fB0\fR on success, \fB1\fR if no such task exists.
28
+ .SH "EXAMPLES"
29
+ .P
30
+ .RS 2
31
+ .nf
32
+ $ PAGER="less -R" ase task view json-export
33
+ .fi
34
+ .RE
35
+ .SH "SEE ALSO"
36
+ .P
37
+ \fBase\fR(1), \fBase-task\fR(1), \fBase-task-load\fR(1), \fBase-task-edit\fR(1), \fBmore\fR(1), \fBless\fR(1).
38
+ .SH "AUTHOR"
39
+ .P
40
+ Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR