@rse/ase 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/dst/ase-agent-definition-core.js +111 -87
  2. package/dst/ase-agent-fleet.js +1 -1
  3. package/dst/ase-agent-runtime-claim.js +5 -3
  4. package/dst/ase-agent-runtime-engine.js +1 -1
  5. package/dst/ase-agent-runtime-phase.js +1 -1
  6. package/dst/ase-agent-runtime-request.js +1 -1
  7. package/dst/ase-agent-runtime.js +3 -5
  8. package/dst/ase-artifact.js +3 -3
  9. package/dst/ase-config-core.js +2 -16
  10. package/dst/ase-config-schema.js +1 -3
  11. package/dst/ase-config.js +2 -0
  12. package/dst/ase-hook.js +13 -13
  13. package/dst/ase-lib-daemon-cli.js +117 -4
  14. package/dst/ase-lib-server-cli.js +4 -5
  15. package/dst/ase-lib-version.js +14 -5
  16. package/dst/ase-man-catalog.js +229 -0
  17. package/dst/ase-man-render.js +278 -0
  18. package/dst/ase-man-tui.js +636 -0
  19. package/dst/ase-man.js +33 -27
  20. package/dst/ase-mcp.js +4 -4
  21. package/dst/ase-service-getopt.js +2 -2
  22. package/dst/ase-service-otel.js +4 -4
  23. package/dst/ase-service-skills.js +5 -15
  24. package/dst/ase-service.js +87 -210
  25. package/dst/ase-setup-common.js +1 -2
  26. package/dst/ase-setup-settings.js +6 -9
  27. package/dst/ase-setup.js +4 -5
  28. package/dst/ase-spec.js +103 -20
  29. package/dst/ase-statusline.js +170 -170
  30. package/dst/ase-task-board-filter.js +5 -4
  31. package/dst/ase-task-board-flow.js +7 -6
  32. package/dst/ase-task-board-graph.js +5 -4
  33. package/dst/ase-task-board-tui-control.js +41 -35
  34. package/dst/ase-task-board-tui-model.js +185 -167
  35. package/dst/ase-task-board-tui-popup.js +2 -3
  36. package/dst/ase-task-board-tui-view.js +74 -70
  37. package/dst/ase-task-board-web-client.js +27 -27
  38. package/dst/ase-task-board-web-server.js +2 -2
  39. package/dst/ase-task-board.js +1 -1
  40. package/dst/ase-task-format.js +1 -1
  41. package/dst/ase-task-store-client.js +17 -5
  42. package/dst/ase-task-store-core.js +5 -7
  43. package/dst/ase-task-store-issues.js +16 -1
  44. package/dst/ase-task-store-plugin-ase.js +7 -3
  45. package/dst/ase-task-store-plugin-gitea.js +9 -32
  46. package/dst/ase-task-store-plugin-github.js +3 -12
  47. package/dst/ase-task-store-plugin-gitlab.js +2 -18
  48. package/dst/ase-task.js +51 -23
  49. package/dst/ase-util-compat.js +1 -1
  50. package/dst/ase-util-diagram.js +13 -37
  51. package/dst/ase.js +5 -5
  52. package/dst/man/ase-agent-adhoc.md +1165 -0
  53. package/dst/man/ase-agent-condenser.md +383 -0
  54. package/dst/man/ase-agent-editor.md +441 -0
  55. package/dst/man/ase-agent-estimator.md +477 -0
  56. package/dst/man/ase-agent-fleet.md +358 -0
  57. package/dst/man/ase-agent-implementer.md +521 -0
  58. package/dst/man/ase-agent-integrator.md +449 -0
  59. package/dst/man/ase-agent-qualifier.md +426 -0
  60. package/dst/man/ase-agent-rebooter.md +384 -0
  61. package/dst/man/ase-agent-relay.md +262 -0
  62. package/dst/man/ase-agent-researcher.md +478 -0
  63. package/dst/man/ase-agent.md +628 -0
  64. package/dst/man/ase-artifact-list.md +57 -0
  65. package/dst/man/ase-artifact-name.md +56 -0
  66. package/dst/man/ase-artifact.md +92 -0
  67. package/dst/man/ase-config-delete.md +74 -0
  68. package/dst/man/ase-config-edit.md +83 -0
  69. package/dst/man/ase-config-get.md +70 -0
  70. package/dst/man/ase-config-init.md +110 -0
  71. package/dst/man/ase-config-list.md +68 -0
  72. package/dst/man/ase-config-set.md +92 -0
  73. package/dst/man/ase-config.md +426 -0
  74. package/dst/man/ase-hook-permission-request.md +61 -0
  75. package/dst/man/ase-hook-pre-tool-use.md +96 -0
  76. package/dst/man/ase-hook-session-end.md +71 -0
  77. package/dst/man/ase-hook-session-persona.md +65 -0
  78. package/dst/man/ase-hook-session-start.md +184 -0
  79. package/dst/man/ase-hook-stop.md +52 -0
  80. package/dst/man/ase-hook-user-prompt-submit.md +54 -0
  81. package/dst/man/ase-hook.md +93 -0
  82. package/dst/man/ase-man.md +195 -0
  83. package/dst/man/ase-mcp.md +102 -0
  84. package/dst/man/ase-service-log.md +59 -0
  85. package/dst/man/ase-service-send.md +60 -0
  86. package/dst/man/ase-service-start.md +93 -0
  87. package/dst/man/ase-service-status.md +58 -0
  88. package/dst/man/ase-service-stop.md +52 -0
  89. package/dst/man/ase-service.md +124 -0
  90. package/dst/man/ase-setup-disable.md +67 -0
  91. package/dst/man/ase-setup-enable.md +66 -0
  92. package/dst/man/ase-setup-install.md +116 -0
  93. package/dst/man/ase-setup-mcp.md +213 -0
  94. package/dst/man/ase-setup-status.md +101 -0
  95. package/dst/man/ase-setup-statusline.md +162 -0
  96. package/dst/man/ase-setup-telemetry.md +166 -0
  97. package/dst/man/ase-setup-uninstall.md +85 -0
  98. package/dst/man/ase-setup-update.md +117 -0
  99. package/dst/man/ase-setup.md +156 -0
  100. package/dst/man/ase-spec-export.md +99 -0
  101. package/dst/man/ase-spec-init.md +57 -0
  102. package/dst/man/ase-spec-lint.md +74 -0
  103. package/dst/man/ase-spec-preview.md +57 -0
  104. package/dst/man/ase-spec.md +85 -0
  105. package/dst/man/ase-statusline.md +330 -0
  106. package/dst/man/ase-task-assign.md +138 -0
  107. package/dst/man/ase-task-board.md +651 -0
  108. package/dst/man/ase-task-delete.md +46 -0
  109. package/dst/man/ase-task-edit.md +73 -0
  110. package/dst/man/ase-task-idscheme.md +92 -0
  111. package/dst/man/ase-task-lifecycle.md +92 -0
  112. package/dst/man/ase-task-list.md +86 -0
  113. package/dst/man/ase-task-load.md +48 -0
  114. package/dst/man/ase-task-newid.md +100 -0
  115. package/dst/man/ase-task-purge.md +49 -0
  116. package/dst/man/ase-task-rename.md +69 -0
  117. package/dst/man/ase-task-request.md +108 -0
  118. package/dst/man/ase-task-save.md +78 -0
  119. package/dst/man/ase-task-status.md +79 -0
  120. package/dst/man/ase-task-store.md +377 -0
  121. package/dst/man/ase-task-view.md +50 -0
  122. package/dst/man/ase-task.md +335 -0
  123. package/dst/man/ase-util-compat.md +38 -0
  124. package/dst/man/ase-util-diagram.md +140 -0
  125. package/dst/man/ase-util-meta.md +68 -0
  126. package/dst/man/ase-util-metric.md +74 -0
  127. package/dst/man/ase-util-mint.md +85 -0
  128. package/dst/man/ase-util-worktree.md +109 -0
  129. package/dst/man/ase-util.md +81 -0
  130. package/dst/man/ase.md +228 -0
  131. package/package.json +12 -17
  132. package/plugin/.claude-plugin/plugin.json +1 -1
  133. package/plugin/.codex-plugin/plugin.json +1 -1
  134. package/plugin/.github/plugin/plugin.json +1 -1
  135. package/plugin/agents/ase-code-lint.md +3 -3
  136. package/plugin/agents/ase-docs-proofread.md +3 -3
  137. package/plugin/agents/ase-docs-refine.md +3 -3
  138. package/plugin/agents/ase-spec-lint.md +338 -0
  139. package/plugin/meta/ase-skill.md +7 -0
  140. package/plugin/mods/ase-mods.ts +10 -7
  141. package/plugin/mods/claude-code.d.ts +26 -3
  142. package/plugin/skills/ase-code-analyze/SKILL.md +18 -10
  143. package/plugin/skills/ase-code-analyze/help.md +11 -6
  144. package/plugin/skills/ase-code-lint/SKILL.md +37 -23
  145. package/plugin/skills/ase-code-lint/help.md +10 -5
  146. package/plugin/skills/ase-help-intent/data.md +204 -13
  147. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  148. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  149. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  150. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  151. package/plugin/skills/ase-repo-review/SKILL.md +5 -3
  152. package/plugin/skills/ase-repo-review/help.md +3 -1
  153. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  154. package/plugin/skills/ase-spec-edit/help.md +1 -1
  155. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  156. package/plugin/skills/ase-spec-lint/help.md +171 -0
  157. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  158. package/plugin/skills/ase-task-implement/help.md +11 -1
  159. package/dst/man/ase-agent-adhoc.1 +0 -515
  160. package/dst/man/ase-agent-condenser.1 +0 -193
  161. package/dst/man/ase-agent-editor.1 +0 -212
  162. package/dst/man/ase-agent-estimator.1 +0 -214
  163. package/dst/man/ase-agent-fleet.1 +0 -185
  164. package/dst/man/ase-agent-implementer.1 +0 -233
  165. package/dst/man/ase-agent-integrator.1 +0 -213
  166. package/dst/man/ase-agent-qualifier.1 +0 -214
  167. package/dst/man/ase-agent-rebooter.1 +0 -193
  168. package/dst/man/ase-agent-relay.1 +0 -128
  169. package/dst/man/ase-agent-researcher.1 +0 -217
  170. package/dst/man/ase-agent.1 +0 -264
  171. package/dst/man/ase-artifact-list.1 +0 -38
  172. package/dst/man/ase-artifact-name.1 +0 -39
  173. package/dst/man/ase-artifact.1 +0 -56
  174. package/dst/man/ase-config-delete.1 +0 -45
  175. package/dst/man/ase-config-edit.1 +0 -48
  176. package/dst/man/ase-config-get.1 +0 -46
  177. package/dst/man/ase-config-init.1 +0 -60
  178. package/dst/man/ase-config-list.1 +0 -42
  179. package/dst/man/ase-config-set.1 +0 -52
  180. package/dst/man/ase-config.1 +0 -231
  181. package/dst/man/ase-hook-permission-request.1 +0 -36
  182. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  183. package/dst/man/ase-hook-session-end.1 +0 -47
  184. package/dst/man/ase-hook-session-persona.1 +0 -37
  185. package/dst/man/ase-hook-session-start.1 +0 -81
  186. package/dst/man/ase-hook-stop.1 +0 -34
  187. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  188. package/dst/man/ase-hook.1 +0 -51
  189. package/dst/man/ase-man.1 +0 -67
  190. package/dst/man/ase-mcp.1 +0 -61
  191. package/dst/man/ase-service-log.1 +0 -43
  192. package/dst/man/ase-service-send.1 +0 -47
  193. package/dst/man/ase-service-start.1 +0 -54
  194. package/dst/man/ase-service-status.1 +0 -46
  195. package/dst/man/ase-service-stop.1 +0 -37
  196. package/dst/man/ase-service.1 +0 -85
  197. package/dst/man/ase-setup-disable.1 +0 -44
  198. package/dst/man/ase-setup-enable.1 +0 -45
  199. package/dst/man/ase-setup-install.1 +0 -73
  200. package/dst/man/ase-setup-mcp.1 +0 -124
  201. package/dst/man/ase-setup-status.1 +0 -60
  202. package/dst/man/ase-setup-statusline.1 +0 -92
  203. package/dst/man/ase-setup-telemetry.1 +0 -92
  204. package/dst/man/ase-setup-uninstall.1 +0 -59
  205. package/dst/man/ase-setup-update.1 +0 -64
  206. package/dst/man/ase-setup.1 +0 -93
  207. package/dst/man/ase-spec-export.1 +0 -62
  208. package/dst/man/ase-spec-lint.1 +0 -40
  209. package/dst/man/ase-spec-preview.1 +0 -40
  210. package/dst/man/ase-spec.1 +0 -46
  211. package/dst/man/ase-statusline.1 +0 -189
  212. package/dst/man/ase-task-assign.1 +0 -71
  213. package/dst/man/ase-task-board.1 +0 -384
  214. package/dst/man/ase-task-delete.1 +0 -35
  215. package/dst/man/ase-task-edit.1 +0 -46
  216. package/dst/man/ase-task-idscheme.1 +0 -65
  217. package/dst/man/ase-task-lifecycle.1 +0 -57
  218. package/dst/man/ase-task-list.1 +0 -47
  219. package/dst/man/ase-task-load.1 +0 -36
  220. package/dst/man/ase-task-newid.1 +0 -61
  221. package/dst/man/ase-task-purge.1 +0 -37
  222. package/dst/man/ase-task-rename.1 +0 -44
  223. package/dst/man/ase-task-request.1 +0 -61
  224. package/dst/man/ase-task-save.1 +0 -48
  225. package/dst/man/ase-task-status.1 +0 -55
  226. package/dst/man/ase-task-store.1 +0 -194
  227. package/dst/man/ase-task-view.1 +0 -40
  228. package/dst/man/ase-task.1 +0 -160
  229. package/dst/man/ase-util-compat.1 +0 -25
  230. package/dst/man/ase-util-diagram.1 +0 -76
  231. package/dst/man/ase-util-meta.1 +0 -45
  232. package/dst/man/ase-util-metric.1 +0 -54
  233. package/dst/man/ase-util-mint.1 +0 -59
  234. package/dst/man/ase-util-worktree.1 +0 -72
  235. package/dst/man/ase-util.1 +0 -50
  236. package/dst/man/ase.1 +0 -124
@@ -1,56 +0,0 @@
1
- .TH "ASE-ARTIFACT" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-artifact\fR - Resolve Project Artifact Kinds to File Lists
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase artifact\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .P
8
- \fBase artifact list\fR \[lB]\fB--kind\fR \fIkinds\fR\[rB]
9
- .P
10
- \fBase artifact name\fR \[lB]\fB--kind\fR \fIkind\fR\[rB] \fIfilename\fR
11
- .SH "DESCRIPTION"
12
- .P
13
- \fBase artifact\fR is the entry point group for resolving the \fIartifact kinds\fR of a project to project-relative file lists. The \fIASE\fR skills use it (and the MCP tools \fBase_artifact_list\fR and \fBase_artifact_name\fR, which provide the same) to locate the files of a kind. The recognized kinds are:
14
- .RS 0
15
- .IP \(bu 4
16
- \fBspec\fR: the specification (by default below \fBdocs/specbook\fR, the files \fB*.{md,txt,svg,png,jpg}\fR).
17
- .IP \(bu 4
18
- \fBcode\fR: the source code (by default below \fBsrc\fR, all files except \fB**/etc/**\fR and \fB**/{.gitignore,.npmignore,package.json}\fR).
19
- .IP \(bu 4
20
- \fBdocs\fR: the documentation (by default below \fBdoc\fR, all files plus \fB**/{README,LICENSE,CHANGELOG}.{md,txt}\fR, except \fB{spec,arch}/**\fR).
21
- .IP \(bu 4
22
- \fBinfr\fR: the infrastructure (by default below the project root, the files \fB**/{.github,.claude*,etc}/**\fR and \fB**/{AGENTS.md,{package,tsconfig*}.json,.{git,npm}ignore}\fR).
23
- .IP \(bu 4
24
- \fBothr\fR: the implicit catch-all of all other files.
25
- .RE 0
26
- .P
27
- The first four kinds are configured by the configuration keys \fBproject.artifact.\fR\fIkind\fR\fB.basedir\fR (the base directory, relative to the project root, where an empty value denotes the project root itself, and which must not escape the project root via \fB..\fR) and \fBproject.artifact.\fR\fIkind\fR\fB.files\fR (a \fIminiglob\fR specification, resolved relative to the base directory), with the defaults given above (see \fBase-config\fR(1)).
28
- .P
29
- A \fIminiglob\fR specification is a whitespace-separated list of glob patterns (in the syntax of \fIpicomatch\fR, with dot files matched), each optionally negated by a \fB!\fR prefix. The tokens are applied in order: the resulting set starts empty (or with all files, if the first token is negated), a plain pattern adds all files matching it, and a negated pattern removes all files matching it.
30
- .P
31
- The file universe is the set of all files below the project root (the Git top-level directory, else the current working directory), except the \fB.git\fR directories and all files excluded by the Git exclude rules: the global excludes file (\fBcore.excludesFile\fR, else \fB$XDG_CONFIG_HOME/git/ignore\fR, falling back to \fB~/.config/git/ignore\fR), the repository-local \fBinfo/exclude\fR, and the \fB.gitignore\fR files from the project root downwards, with the last matching rule winning.
32
- .P
33
- The universe is partitioned among the kinds by descending precedence \fBspec\fR, \fBcode\fR, \fBdocs\fR, and \fBinfr\fR: a file matched by multiple kinds belongs to the first one only, and every file matched by none of them belongs to \fBothr\fR.
34
- .P
35
- Without a sub-command, the usage information is shown and the command exits with status \fB1\fR.
36
- .SH "OPTIONS"
37
- .RS 0
38
- .IP \(bu 4
39
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
40
- .RE 0
41
- .SH "COMMANDS"
42
- .RS 0
43
- .IP \(bu 4
44
- \fBase artifact list\fR \[lB]\fB--kind\fR \fIkinds\fR\[rB]: Resolve one or more artifact kinds to project-relative file paths. See \fBase-artifact-list\fR(1).
45
- .IP \(bu 4
46
- \fBase artifact name\fR \[lB]\fB--kind\fR \fIkind\fR\[rB] \fIfilename\fR: Resolve a base-relative filename within an artifact kind to a project-relative path. See \fBase-artifact-name\fR(1).
47
- .RE 0
48
- .SH "EXIT STATUS"
49
- .P
50
- The group command without a sub-command exits with status \fB1\fR.
51
- .SH "SEE ALSO"
52
- .P
53
- \fBase\fR(1), \fBase-artifact-list\fR(1), \fBase-artifact-name\fR(1), \fBase-config\fR(1), \fBase-spec\fR(1), \fBgitignore\fR(5).
54
- .SH "AUTHOR"
55
- .P
56
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,45 +0,0 @@
1
- .TH "ASE-CONFIG-DELETE" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config-delete\fR - Delete a Configuration Value
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBdelete\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIkey\fR
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase config delete\fR deletes the configuration \fIkey\fR from the configuration file of the target scope (the strongest scope of the scope chain, by default \fBproject\fR inside a project, else \fBuser\fR) and writes the file back. Weaker scopes are never modified, so a value of the same key on a weaker scope (or the built-in default) becomes effective again.
10
- .P
11
- Deleting a key which is not set on the target scope is no error. As for \fBase config set\fR, a key which is not writable on the target scope cannot be deleted there either, and a target file which carries invalid content is not overwritten.
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--scope\fR \fIscope\fR\[rB]: Select the scope chain, whose strongest scope is the target scope written by this command. As an option of \fBase config\fR, it has to be given \fIbefore\fR \fBdelete\fR. The \fIscope\fR value is a comma-separated list of the terms \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, and \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), at most one per kind and in any order, canonicalized into the order \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR.
18
- .sp
19
- \fBuser\fR is always added implicitly, and \fBproject\fR is added implicitly whenever a project context (a Git working tree or a \fB.ase\fR directory at or above the current directory) exists, but never above the strongest explicitly requested term. An explicit \fBproject\fR without a project context is an error. Default: \fBproject\fR inside a project context, else \fBuser\fR. See \fBase-config\fR(1) for details.
20
- .RE 0
21
- .SH "ARGUMENTS"
22
- .RS 0
23
- .IP \(bu 4
24
- \fIkey\fR: The dotted configuration key, e.g., \fBagent.persona\fR, or any unambiguous trailing part of a known key, e.g., \fBpersona\fR.
25
- .RE 0
26
- .SH "EXIT STATUS"
27
- .P
28
- \fB0\fR on success, \fB1\fR on a \fIkey\fR not writable on the target scope, an ambiguous \fIkey\fR, an invalid \fIscope\fR, or a target file carrying invalid content.
29
- .SH "EXAMPLES"
30
- .P
31
- .RS 2
32
- .nf
33
- # fall back to the default persona again
34
- $ ase config delete agent.persona
35
-
36
- # remove the task store token of the user
37
- $ ase config --scope user delete project.task.store.token
38
- .fi
39
- .RE
40
- .SH "SEE ALSO"
41
- .P
42
- \fBase\fR(1), \fBase-config\fR(1), \fBase-config-set\fR(1).
43
- .SH "AUTHOR"
44
- .P
45
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,48 +0,0 @@
1
- .TH "ASE-CONFIG-EDIT" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config-edit\fR - Edit the Configuration File with an Editor
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBedit\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase config edit\fR opens the configuration file of the target scope (the strongest scope of the scope chain, by default \fBproject\fR inside a project, else \fBuser\fR) in a text editor. The file and its parent directories are created if missing (a new \fBuser\fR scope file with file mode \fB0600\fR).
10
- .P
11
- After the editor exits, the file is re-read and strictly validated against the configuration schema. If it carries invalid YAML or invalid entries, the error is reported and the question \fBre-edit? \[lB]Y/n\[rB]\fR is asked on standard error: any answer other than \fBn\fR or \fBno\fR opens the editor again, while \fBn\fR or \fBno\fR lets the command fail (leaving the invalid file as is).
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--scope\fR \fIscope\fR\[rB]: Select the scope chain, whose strongest scope is the target scope whose file is edited. As an option of \fBase config\fR, it has to be given \fIbefore\fR \fBedit\fR. The \fIscope\fR value is a comma-separated list of the terms \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, and \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), at most one per kind and in any order, canonicalized into the order \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR.
18
- .sp
19
- \fBuser\fR is always added implicitly, and \fBproject\fR is added implicitly whenever a project context (a Git working tree or a \fB.ase\fR directory at or above the current directory) exists, but never above the strongest explicitly requested term. An explicit \fBproject\fR without a project context is an error. Default: \fBproject\fR inside a project context, else \fBuser\fR. See \fBase-config\fR(1) for details.
20
- .RE 0
21
- .SH "ENVIRONMENT"
22
- .RS 0
23
- .IP \(bu 4
24
- \fBVISUAL\fR, \fBEDITOR\fR: The editor command, taken from the first non-empty one of \fBVISUAL\fR and \fBEDITOR\fR, falling back to \fBvi\fR. The value is split on whitespace into the command and its arguments (it is not run through a shell), and the file name is appended as the last argument.
25
- .RE 0
26
- .SH "FILES"
27
- .P
28
- The configuration file of the target scope: \fIper-user configuration directory\fR\fB/config.yaml\fR (\fBuser\fR), \fB.ase/config.yaml\fR (\fBproject\fR), \fB.ase/task/\fR\fIid\fR\fB/config.yaml\fR (\fBtask:\fR\fIid\fR), or \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/config.yaml\fR (\fBsession:\fR\fIid\fR). See \fBase-config\fR(1).
29
- .SH "EXIT STATUS"
30
- .P
31
- \fB0\fR once the edited file is valid, \fB1\fR if the editor could not be run, or if the file stayed invalid and re-editing was declined.
32
- .SH "EXAMPLES"
33
- .P
34
- .RS 2
35
- .nf
36
- # edit the project configuration with Vim
37
- $ EDITOR=vim ase config edit
38
-
39
- # edit the user configuration
40
- $ ase config --scope user edit
41
- .fi
42
- .RE
43
- .SH "SEE ALSO"
44
- .P
45
- \fBase\fR(1), \fBase-config\fR(1), \fBase-config-set\fR(1).
46
- .SH "AUTHOR"
47
- .P
48
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,46 +0,0 @@
1
- .TH "ASE-CONFIG-GET" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config-get\fR - Print a Configuration Value
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBget\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIkey\fR
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase config get\fR prints the effective value of the configuration \fIkey\fR, followed by a newline, on standard output. The value is looked up from the strongest scope of the scope chain down to the built-in \fBdefault\fR scope, and the first defined value wins. In contrast to \fBase
10
- config list\fR, secret values are printed unmasked.
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
- .IP \(bu 4
16
- \[lB]\fB--scope\fR \fIscope\fR\[rB]: Select the scope chain whose values are cascaded. As an option of \fBase config\fR, it has to be given \fIbefore\fR \fBget\fR. The \fIscope\fR value is a comma-separated list of the terms \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, and \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), at most one per kind and in any order, canonicalized into the order \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR.
17
- .sp
18
- \fBuser\fR is always added implicitly, and \fBproject\fR is added implicitly whenever a project context (a Git working tree or a \fB.ase\fR directory at or above the current directory) exists, but never above the strongest explicitly requested term. An explicit \fBproject\fR without a project context is an error. Default: \fBproject\fR inside a project context, else \fBuser\fR. See \fBase-config\fR(1) for details.
19
- .RE 0
20
- .SH "ARGUMENTS"
21
- .RS 0
22
- .IP \(bu 4
23
- \fIkey\fR: The dotted configuration key, e.g., \fBagent.persona\fR, or any unambiguous trailing part of a known key, e.g., \fBpersona\fR. See \fBase-config\fR(1) for all keys.
24
- .RE 0
25
- .SH "EXIT STATUS"
26
- .P
27
- \fB0\fR on success, \fB1\fR if \fIkey\fR is not set on any scope, if \fIkey\fR does not address a leaf value (e.g., \fBproject.task\fR), if \fIkey\fR is ambiguous, or on an invalid \fIscope\fR.
28
- .SH "EXAMPLES"
29
- .P
30
- .RS 2
31
- .nf
32
- # print the effective task lifecycle model
33
- $ ase config get project.task.lifecycle
34
- solo
35
-
36
- # print the user-level persona via its abbreviated key
37
- $ ase config --scope user get persona
38
- engineer
39
- .fi
40
- .RE
41
- .SH "SEE ALSO"
42
- .P
43
- \fBase\fR(1), \fBase-config\fR(1), \fBase-config-list\fR(1), \fBase-config-set\fR(1).
44
- .SH "AUTHOR"
45
- .P
46
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,60 +0,0 @@
1
- .TH "ASE-CONFIG-INIT" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config-init\fR - Initialize Configuration with Preset Values
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBinit\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fItype\fR
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase config init\fR initializes the configuration file of the target scope (the strongest scope of the scope chain, by default \fBproject\fR inside a project, else \fBuser\fR) with the preset values of \fItype\fR. The file (and its parent directories) are created if missing. Already existing keys of the file which the preset does not cover are kept, while those covered by the preset are overwritten.
10
- .P
11
- Keys of the preset which are not writable on the target scope (e.g., all \fBproject.task.*\fR, \fBproject.artifact.*\fR, and \fBboard.*\fR keys on a \fBtask\fR or \fBsession\fR scope, or \fBtelemetry.prices.ai\fR on the \fBproject\fR scope) are silently skipped. The file is written under an advisory file lock and atomically.
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--scope\fR \fIscope\fR\[rB]: Select the scope chain, whose strongest scope is the target scope written by this command. As an option of \fBase config\fR, it has to be given \fIbefore\fR \fBinit\fR. The \fIscope\fR value is a comma-separated list of the terms \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, and \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), at most one per kind and in any order, canonicalized into the order \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR.
18
- .sp
19
- \fBuser\fR is always added implicitly, and \fBproject\fR is added implicitly whenever a project context (a Git working tree or a \fB.ase\fR directory at or above the current directory) exists, but never above the strongest explicitly requested term. An explicit \fBproject\fR without a project context is an error. Default: \fBproject\fR inside a project context, else \fBuser\fR. See \fBase-config\fR(1) for details.
20
- .RE 0
21
- .SH "ARGUMENTS"
22
- .RS 0
23
- .IP \(bu 4
24
- \fItype\fR: The preset to apply, one of:
25
- .RS 4
26
- .IP \(bu 4
27
- \fBdefault\fR: The complete baseline of the built-in \fBdefault\fR scope: \fBagent.persona\fR \fBengineer\fR, \fBagent.guidance\fR \fBnormal\fR, \fBproject.name\fR \fBExample Project\fR, \fBproject.boxing\fR \fBwhite\fR, \fBproject.task.lifecycle\fR \fBsolo\fR, \fBproject.task.idscheme\fR \fBslug\fR, \fBproject.task.store.url\fR \fBase:./.ase/task\fR, \fBproject.task.default.source\fR \fBworktree\fR, \fBproject.task.default.changeset\fR \fBworktree\fR, \fBproject.task.default.target\fR \fBsource\fR, \fBproject.task.effort.scale\fR \fB15,60,240,960\fR, \fBproject.task.effort.factor\fR \fB1\fR, \fBproject.task.effort.file\fR \fB1\fR, \fBproject.task.effort.line\fR \fB0.025\fR, \fBproject.task.effort.iteration\fR \fB2.5\fR, the full set of \fBproject.artifact.*\fR globs, the \fBboard.tui.color.*\fR, \fBboard.web.color.*\fR, and \fBboard.web.editor.keymap\fR defaults, and \fBtelemetry.enabled\fR \fBfalse\fR, \fBtelemetry.prices.ai\fR \fB*=4.00/20.00/0.20/5.00\fR, and \fBtelemetry.prices.hr\fR \fB*=110\fR.
28
- .IP \(bu 4
29
- \fBvibe\fR: \fBagent.persona\fR \fBwriter\fR, \fBproject.name\fR \fBExample Project\fR, and \fBproject.boxing\fR \fBblack\fR.
30
- .IP \(bu 4
31
- \fBpro\fR: \fBagent.persona\fR \fBengineer\fR, \fBproject.name\fR \fBExample Project\fR, and \fBproject.boxing\fR \fBwhite\fR.
32
- .IP \(bu 4
33
- \fBindustry\fR: \fBagent.persona\fR \fBengineer\fR, \fBproject.name\fR \fBExample Project\fR, and \fBproject.boxing\fR \fBgrey\fR.
34
- .RE 0
35
- .IP "" 4
36
- Any other \fItype\fR is an error.
37
- .RE 0
38
- .SH "FILES"
39
- .P
40
- The configuration file of the target scope: \fIper-user configuration directory\fR\fB/config.yaml\fR (\fBuser\fR), \fB.ase/config.yaml\fR (\fBproject\fR), \fB.ase/task/\fR\fIid\fR\fB/config.yaml\fR (\fBtask:\fR\fIid\fR), or \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/config.yaml\fR (\fBsession:\fR\fIid\fR). See \fBase-config\fR(1).
41
- .SH "EXIT STATUS"
42
- .P
43
- \fB0\fR on success, \fB1\fR on an unknown \fItype\fR, an invalid \fIscope\fR, or a target file carrying invalid content.
44
- .SH "EXAMPLES"
45
- .P
46
- .RS 2
47
- .nf
48
- # initialize the project configuration for an industrial project
49
- $ ase config init industry
50
-
51
- # write the entire baseline into the user configuration
52
- $ ase config --scope user init default
53
- .fi
54
- .RE
55
- .SH "SEE ALSO"
56
- .P
57
- \fBase\fR(1), \fBase-config\fR(1), \fBase-config-list\fR(1), \fBase-config-set\fR(1).
58
- .SH "AUTHOR"
59
- .P
60
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,42 +0,0 @@
1
- .TH "ASE-CONFIG-LIST" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config-list\fR - List the Effective Configuration
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBlist\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase config list\fR lists all configuration keys known to the configuration schema, plus all further leaf keys found in the files of the scope chain, with their effective values, rendered as a table with the three columns \fBKEY\fR, \fBVALUE\fR, and \fBSCOPE\fR, sorted by key.
10
- .P
11
- The \fBSCOPE\fR column names the scope which supplied the value: \fBdefault\fR (the built-in defaults), \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, or \fBsession:\fR\fIid\fR. For a key set on multiple scopes, only the value of the strongest scope is shown. A key which is not set on any scope is shown with an empty \fBVALUE\fR and the \fBSCOPE\fR \fB-\fR. The values of the secret keys \fBproject.task.store.token\fR, \fBproject.relay.token\fR, and \fBtelemetry.service.token\fR are masked as \fB***\fR.
12
- .P
13
- Invalid entries of the configuration files are warned about and skipped.
14
- .SH "OPTIONS"
15
- .RS 0
16
- .IP \(bu 4
17
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
18
- .IP \(bu 4
19
- \[lB]\fB--scope\fR \fIscope\fR\[rB]: Select the scope chain whose values are cascaded. As an option of \fBase config\fR, it has to be given \fIbefore\fR \fBlist\fR. The \fIscope\fR value is a comma-separated list of the terms \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, and \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), at most one per kind and in any order, canonicalized into the order \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR.
20
- .sp
21
- \fBuser\fR is always added implicitly, and \fBproject\fR is added implicitly whenever a project context (a Git working tree or a \fB.ase\fR directory at or above the current directory) exists, but never above the strongest explicitly requested term. An explicit \fBproject\fR without a project context is an error. Default: \fBproject\fR inside a project context, else \fBuser\fR. See \fBase-config\fR(1) for details.
22
- .RE 0
23
- .SH "EXIT STATUS"
24
- .P
25
- \fB0\fR on success, \fB1\fR on an invalid \fIscope\fR.
26
- .SH "EXAMPLES"
27
- .P
28
- .RS 2
29
- .nf
30
- # list the effective project configuration
31
- $ ase config list
32
-
33
- # list the configuration as seen by a particular task
34
- $ ase config --scope task:json-export list
35
- .fi
36
- .RE
37
- .SH "SEE ALSO"
38
- .P
39
- \fBase\fR(1), \fBase-config\fR(1), \fBase-config-get\fR(1).
40
- .SH "AUTHOR"
41
- .P
42
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,52 +0,0 @@
1
- .TH "ASE-CONFIG-SET" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config-set\fR - Set a Configuration Value
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBset\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIkey\fR \fIvalue\fR
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase config set\fR sets the configuration \fIkey\fR to \fIvalue\fR in the configuration file of the target scope (the strongest scope of the scope chain, by default \fBproject\fR inside a project, else \fBuser\fR), creating the file, its parent directories, and the intermediate maps of the dotted key as needed. Weaker and intermediate scopes are never modified.
10
- .P
11
- The \fIvalue\fR is validated against the configuration schema before the file is written, and an invalid value is an error. Some keys are writable on particular scopes only (e.g., \fBproject.task.*\fR on \fBuser\fR and \fBproject\fR, the token keys on \fBuser\fR): setting such a key on any other scope is an error naming the permitted scopes. See \fBase-config\fR(1) for all keys, their values, and their scopes. A target file which already carries invalid content is not overwritten, as this content would be lost.
12
- .P
13
- The file is written under an advisory file lock and atomically, with file mode \fB0600\fR for the \fBuser\fR scope and for any file carrying a secret key.
14
- .SH "OPTIONS"
15
- .RS 0
16
- .IP \(bu 4
17
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
18
- .IP \(bu 4
19
- \[lB]\fB--scope\fR \fIscope\fR\[rB]: Select the scope chain, whose strongest scope is the target scope written by this command. As an option of \fBase config\fR, it has to be given \fIbefore\fR \fBset\fR. The \fIscope\fR value is a comma-separated list of the terms \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, and \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), at most one per kind and in any order, canonicalized into the order \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR.
20
- .sp
21
- \fBuser\fR is always added implicitly, and \fBproject\fR is added implicitly whenever a project context (a Git working tree or a \fB.ase\fR directory at or above the current directory) exists, but never above the strongest explicitly requested term, so an explicit \fB--scope user\fR is never silently retargeted to \fBproject\fR. An explicit \fBproject\fR without a project context is an error. Default: \fBproject\fR inside a project context, else \fBuser\fR. See \fBase-config\fR(1) for details.
22
- .RE 0
23
- .SH "ARGUMENTS"
24
- .RS 0
25
- .IP \(bu 4
26
- \fIkey\fR: The dotted configuration key, e.g., \fBagent.persona\fR, or any unambiguous trailing part of a known key, e.g., \fBpersona\fR.
27
- .IP \(bu 4
28
- \fIvalue\fR: The value to set, stored as a string (e.g., \fBtrue\fR for \fBtelemetry.enabled\fR or \fB44318\fR for \fBtelemetry.service.port\fR).
29
- .RE 0
30
- .SH "EXIT STATUS"
31
- .P
32
- \fB0\fR on success, \fB1\fR on an invalid \fIvalue\fR, a \fIkey\fR not writable on the target scope, an ambiguous \fIkey\fR, an intermediate path of \fIkey\fR which is not a map, an invalid \fIscope\fR, or a target file carrying invalid content.
33
- .SH "EXAMPLES"
34
- .P
35
- .RS 2
36
- .nf
37
- # switch the project to the enterprise task lifecycle model
38
- $ ase config set project.task.lifecycle enterprise
39
-
40
- # enable the AI usage accounting for the current user
41
- $ ase config --scope user set telemetry.enabled true
42
-
43
- # set the persona for a single session only
44
- $ ase config --scope session:4711 set agent.persona caveman
45
- .fi
46
- .RE
47
- .SH "SEE ALSO"
48
- .P
49
- \fBase\fR(1), \fBase-config\fR(1), \fBase-config-get\fR(1), \fBase-config-delete\fR(1).
50
- .SH "AUTHOR"
51
- .P
52
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,231 +0,0 @@
1
- .TH "ASE-CONFIG" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-config\fR - Manage the Layered ASE Configuration
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase config\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB--scope\fR \fIscope\fR\[rB] \fIcommand\fR \[lB]\fIargs\fR \[lB]...\[rB]\[rB]
7
- .P
8
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBinit\fR \fItype\fR
9
- .P
10
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBlist\fR
11
- .P
12
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBedit\fR
13
- .P
14
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBget\fR \fIkey\fR
15
- .P
16
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBset\fR \fIkey\fR \fIvalue\fR
17
- .P
18
- \fBase config\fR \[lB]\fB--scope\fR \fIscope\fR\[rB] \fBdelete\fR \fIkey\fR
19
- .SH "DESCRIPTION"
20
- .P
21
- \fBase config\fR manages the layered \fIASE\fR configuration, a stack of \fBconfig.yaml\fR files of the \fIscopes\fR \fBuser\fR < \fBproject\fR < \fBtask:\fR\fIid\fR < \fBsession:\fR\fIid\fR, on top of a built-in \fBdefault\fR scope carrying the default values. Reads cascade from the strongest scope down to the weakest one and return the first defined value, while writes are always confined to the file of the strongest scope of the chain (the \fItarget\fR scope).
22
- .P
23
- All files are validated against the configuration schema: on read, unknown or invalid entries are warned about and dropped from the in-memory view, while on set, delete, and write they lead to a fatal error. A target file still carrying invalid content is never overwritten, as the skipped content would otherwise be lost: repair it first (e.g. via \fBase config edit\fR).
24
- .P
25
- Obsolete (pre-1.1.0) entries \fBproject.artifact.task.{basedir,files}\fR and \fBagent.{task,skill}\fR are migrated in place on reading: a \fBbasedir\fR becomes \fBproject.task.store.url\fR (as \fBase:\fR\fIbasedir\fR) unless the latter is already set, and the other entries are dropped.
26
- .P
27
- A \fIkey\fR is a dotted path like \fBagent.persona\fR. Any unambiguous trailing part of a known key is accepted, too, e.g., \fBpersona\fR for \fBagent.persona\fR or \fBstore.url\fR for \fBproject.task.store.url\fR, while an ambiguous one (like \fBcolor.dim\fR) is an error.
28
- .P
29
- Without a \fIcommand\fR, the usage information is shown and the command exits with status \fB1\fR.
30
- .SH "OPTIONS"
31
- .RS 0
32
- .IP \(bu 4
33
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
34
- .IP \(bu 4
35
- \[lB]\fB--scope\fR \fIscope\fR\[rB]: Select the scope chain. This option belongs to \fBase config\fR itself and hence has to be given \fIbefore\fR the \fIcommand\fR, e.g., \fBase config --scope user set agent.persona writer\fR.
36
- .sp
37
- The \fIscope\fR value is a comma-separated list of scope terms, in any order, where each term is one of \fBuser\fR, \fBproject\fR, \fBtask:\fR\fIid\fR, or \fBsession:\fR\fIid\fR (with \fIid\fR matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR, but neither \fB.\fR nor \fB..\fR). At most one term per kind is allowed. The chain is canonicalized into the fixed inheritance order \fBdefault\fR < \fBuser\fR < \fBproject\fR < \fBtask\fR < \fBsession\fR:
38
- .RS 4
39
- .IP \(bu 4
40
- \fBuser\fR is always implicitly added at the bottom of the chain.
41
- .IP \(bu 4
42
- \fBproject\fR is implicitly added only when a \fIproject context\fR exists, i.e., when the current working directory is inside a Git working tree or a \fB.ase\fR directory exists at or above it (except in the home directory), and only as long as it stays weaker than the strongest explicitly requested term, so an explicit \fB--scope
43
- user\fR is never silently retargeted to \fBproject\fR.
44
- .IP \(bu 4
45
- Specifying \fBproject\fR explicitly without a project context is an error.
46
- .RE 0
47
- .IP "" 4
48
- Without \fB--scope\fR, the chain is \fBproject\fR (with \fBuser\fR below it) when a project context exists, otherwise \fBuser\fR only. Example: \fB--scope
49
- task:T1,session:S1\fR yields the chain \fBdefault\fR -> \fBuser\fR -> \fBproject\fR -> \fBtask:T1\fR -> \fBsession:S1\fR with \fBsession:S1\fR as the target scope.
50
- .RE 0
51
- .SH "COMMANDS"
52
- .RS 0
53
- .IP \(bu 4
54
- \fBinit\fR \fItype\fR: Initialize the target scope with the preset values of \fItype\fR (\fBdefault\fR, \fBvibe\fR, \fBpro\fR, or \fBindustry\fR). See \fBase-config-init\fR(1).
55
- .IP \(bu 4
56
- \fBlist\fR: List all configuration keys with their effective values and the scopes supplying them. See \fBase-config-list\fR(1).
57
- .IP \(bu 4
58
- \fBedit\fR: Edit the configuration file of the target scope with the text editor. See \fBase-config-edit\fR(1).
59
- .IP \(bu 4
60
- \fBget\fR \fIkey\fR: Print the effective value of \fIkey\fR. See \fBase-config-get\fR(1).
61
- .IP \(bu 4
62
- \fBset\fR \fIkey\fR \fIvalue\fR: Set \fIkey\fR to \fIvalue\fR on the target scope. See \fBase-config-set\fR(1).
63
- .IP \(bu 4
64
- \fBdelete\fR \fIkey\fR: Delete \fIkey\fR from the target scope. See \fBase-config-delete\fR(1).
65
- .RE 0
66
- .SH "CONFIGURATION KEYS"
67
- .P
68
- The following keys are recognized. Every key is restricted to the listed values (where \fIstring\fR means any non-empty string) and is writable on all scopes \fBuser\fR, \fBproject\fR, \fBtask\fR, and \fBsession\fR, unless stated otherwise. A default stems from the built-in \fBdefault\fR scope (shown by \fBase config list\fR with scope \fBdefault\fR) or, where stated, from the code using the key.
69
- .P
70
- Project identity and classification:
71
- .RS 0
72
- .IP \(bu 4
73
- \fBproject.id\fR (\fIstring\fR): The unique id of the project. Default: the sanitized basename of the project root (with all characters other than \fBA-Z\fR, \fBa-z\fR, \fB0-9\fR, \fB_\fR, and \fB-\fR replaced by \fB_\fR), or \fIbasedir\fR\fB-\fR\fIworktree\fR if the project root is a worktree \fIbasedir\fR\fB/\fR\fIworktree\fR next to an \fBactive\fR symbolic link in \fIbasedir\fR. An explicit id is required for a remote task store and for the agent relay.
74
- .IP \(bu 4
75
- \fBproject.name\fR (\fIstring\fR): The full name of the project (default: \fBExample Project\fR).
76
- .IP \(bu 4
77
- \fBproject.boxing\fR (\fBwhite\fR, \fBgrey\fR, or \fBblack\fR): Whether the project artifacts are treated as a white box (fully transparent and understood), grey box (partially), or black box (not at all), which modulates the work depth and output visibility of the skills (default: \fBwhite\fR).
78
- .IP \(bu 4
79
- \fBproject.users\fR (\fIstring\fR, \fBuser\fR and \fBproject\fR scopes only): The comma-separated list of the known human assignees of the tasks (default: empty). If not empty, an assignment to anybody else than \fBnone\fR, the current user, one of these users, or an agent present at the agent relay is warned about (see \fBase-task-assign\fR(1)), and the assign popup of the task boards suggests these users (else the current user) besides the agents (see \fBase-task-board\fR(1)).
80
- .RE 0
81
- .P
82
- Task plans (all writable on the \fBuser\fR and \fBproject\fR scopes only, \fBproject.task.store.token\fR on the \fBuser\fR scope only):
83
- .RS 0
84
- .IP \(bu 4
85
- \fBproject.task.lifecycle\fR (\fBsolo\fR, \fBteam\fR, or \fBenterprise\fR): The task lifecycle model: single-phase for a local solo developer, two-phase for a small team, or four-phase for a gated enterprise pipeline (default: \fBsolo\fR). See \fBase-task-lifecycle\fR(1).
86
- .IP \(bu 4
87
- \fBproject.task.idscheme\fR (\fBslug\fR\[lB]\fB:\fR\fIwords\fR\[rB], \fBseq\fR\[lB]\fB:\fR\fItemplate\fR\[rB], or \fBany\fR): The task id scheme (default: \fBslug\fR). See \fBase-task-idscheme\fR(1) and \fBase-task-newid\fR(1).
88
- .IP \(bu 4
89
- \fBproject.task.store.url\fR (\fIstring\fR): The URL of the task store: \fBase:\fR\fIpath\fR (local, default \fBase:./.ase/task\fR), \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] (remote task store server), \fBgithub:\fR\fIowner\fR\fB/\fR\fIrepo\fR (and \fBgithub+http\fR\[lB]\fBs\fR\[rB]\fB://\fR\fIhost\fR\fB/\fR\fIowner\fR\fB/\fR\fIrepo\fR), \fBgitlab:\fR\fInamespace\fR\fB/\fR\fIproject\fR (and \fBgitlab://\fR\fIhost\fR\fB/\fR..., \fBgitlab+http\fR\[lB]\fBs\fR\[rB]\fB://\fR\fIhost\fR\fB/\fR...), or \fBgitea+http\fR\[lB]\fBs\fR\[rB]\fB://\fR\fIhost\fR\fB/\fR\fIowner\fR\fB/\fR\fIrepo\fR. See \fBase-task\fR(1).
90
- .IP \(bu 4
91
- \fBproject.task.store.token\fR (\fIstring\fR, \fBuser\fR scope only): The bearer token of a remote task store, resp. the token of a GitHub, GitLab, or Gitea task store. Masked as \fB***\fR by \fBase config list\fR.
92
- .IP \(bu 4
93
- \fBproject.task.store.crt\fR, \fBproject.task.store.key\fR (\fIstring\fR): The PEM certificate (chain) and private key files of the task store server, relative to the directory of the configuration file defining them. See \fBase-task-store\fR(1).
94
- .IP \(bu 4
95
- \fBproject.task.default.source\fR (\fBworktree\fR or \fBbranch:\fR\fIname\fR): The default of the \fBSource:\fR key of the task plans (default: \fBworktree\fR).
96
- .IP \(bu 4
97
- \fBproject.task.default.changeset\fR (\fBworktree\fR, \fBbranch:\fR\fIname\fR, or \fBattachment:\fR\fIname\fR): The default of the \fBChangeset:\fR key of the task plans (default: \fBworktree\fR).
98
- .IP \(bu 4
99
- \fBproject.task.default.target\fR (\fBworktree\fR, \fBbranch:\fR\fIname\fR, or \fBsource\fR): The default of the \fBTarget:\fR key of the task plans (default: \fBsource\fR).
100
- .sp
101
- A branch \fIname\fR has to start with a letter, digit, or \fB_\fR, consist of letters, digits, \fB_\fR, \fB.\fR, \fB/\fR, and \fB-\fR, must not end in \fB/\fR, \fB.\fR, or \fB.lock\fR, and must not contain \fB..\fR or \fB//\fR. An attachment \fIname\fR consists of letters, digits, \fB_\fR, and \fB-\fR. A branch or attachment \fIname\fR can carry the placeholder \fB{id}\fR, which reads as the id of the task (with every character other than letters, digits, \fB_\fR, and \fB-\fR replaced by \fB-\fR, runs of \fB-\fR reduced to one, and leading and trailing \fB-\fR and \fB_\fR removed, e.g., \fB12\fR for \fB#12\fR and \fBFOO-12\fR for \fBFOO#12\fR), e.g., \fBbranch:cs-{id}\fR for a separate changeset branch per task.
102
- .IP \(bu 4
103
- \fBproject.task.effort.scale\fR (\fIxs\fR\fB,\fR\fIs\fR\fB,\fR\fIm\fR\fB,\fR\fIl\fR): The upper bounds of the effort size bands \fBXS\fR, \fBS\fR, \fBM\fR, and \fBL\fR of the \fBEffort:\fR key of the task plans, in strictly ascending human minutes, while \fBXL\fR is open-ended (default: \fB15,60,240,960\fR). The task boards sum the efforts via the band midpoints, counting \fBXL\fR as twice the \fBL\fR bound.
104
- .IP \(bu 4
105
- \fBproject.task.effort.factor\fR (\fInumber\fR): The human minutes per point of the \fIattention score\fR of the effort estimation, i.e., of the weighted requirements, behaviors, and changes stated by the checklist items of a plan (default: \fB1\fR). Fitted and stored by \fB/ase-task-estimate --calibrate --save\fR.
106
- .IP \(bu 4
107
- \fBproject.task.effort.file\fR, \fBproject.task.effort.line\fR (\fInumber\fR): The additional human minutes per touched file resp. per predicted changed line of the \fIvolume score\fR of the effort estimation, where the line minutes also cover the edge cases and polishing no plan describes, and a newly written line weighs three times a changed one (defaults: \fB1\fR resp. \fB0.025\fR). Fitted and stored by \fB/ase-task-estimate --calibrate --save\fR.
108
- .IP \(bu 4
109
- \fBproject.task.effort.iteration\fR (\fInumber\fR): The multiplier of the estimated minutes of a task whose main deliverable is an interactive or visual user interface, covering its many rounds of post-adjustment, at least \fB1\fR (default: \fB2.5\fR). Not fitted by the calibration.
110
- .RE 0
111
- .P
112
- Agent relay (all writable on the \fBuser\fR and \fBproject\fR scopes only, \fBproject.relay.token\fR on the \fBuser\fR scope only):
113
- .RS 0
114
- .IP \(bu 4
115
- \fBproject.relay.url\fR (\fIstring\fR): The URL of the agent relay, as \fBase://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB] or \fBases://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB]\[lB]\fB?insecure\fR\[rB] (default: none). See \fBase-agent-relay\fR(1).
116
- .IP \(bu 4
117
- \fBproject.relay.token\fR (\fIstring\fR, \fBuser\fR scope only): The bearer token of the agent relay. Masked as \fB***\fR by \fBase config
118
- list\fR.
119
- .IP \(bu 4
120
- \fBproject.relay.crt\fR, \fBproject.relay.key\fR (\fIstring\fR): The PEM certificate (chain) and private key files of the agent relay server, relative to the directory of the configuration file defining them.
121
- .RE 0
122
- .P
123
- Per-project service:
124
- .RS 0
125
- .IP \(bu 4
126
- \fBproject.service.port\fR (\fIport\fR \fB1024\fR..\fB65535\fR, \fBproject\fR scope only): The preferred port of the per-project background service on \fB127.0.0.1\fR, falling back to a random port out of the range \fB42000\fR..\fB44000\fR if unavailable (default: none). See \fBase-service-start\fR(1).
127
- .RE 0
128
- .P
129
- Project artifacts (all writable on the \fBuser\fR and \fBproject\fR scopes only), each kind defined by a \fBbasedir\fR directory (relative to the project root, empty for the root itself) and a whitespace-separated \fBfiles\fR glob specification (relative to \fBbasedir\fR, with \fB!\fR negating a glob). See \fBase-artifact\fR(1):
130
- .RS 0
131
- .IP \(bu 4
132
- \fBproject.artifact.spec.basedir\fR, \fBproject.artifact.spec.files\fR: The specification files (default: \fBdocs/specbook\fR and \fB*.{md,txt,svg,png,jpg}\fR).
133
- .IP \(bu 4
134
- \fBproject.artifact.spec.schema\fR (\fIstring\fR): The whitespace-separated list of \fISpecBook\fR schema configuration files, where \fBstd\fR names the bundled standard one and every other entry is a file relative to the project root (default: empty, i.e., \fBstd\fR). See \fBase-spec\fR(1).
135
- .IP \(bu 4
136
- \fBproject.artifact.code.basedir\fR, \fBproject.artifact.code.files\fR: The source code files (default: \fBsrc\fR and \fB** !**/etc/**
137
- !**/{.gitignore,.npmignore,package.json}\fR).
138
- .IP \(bu 4
139
- \fBproject.artifact.docs.basedir\fR, \fBproject.artifact.docs.files\fR: The documentation files (default: \fBdoc\fR and \fB**
140
- **/{README,LICENSE,CHANGELOG}.{md,txt} !{spec,arch}/**\fR).
141
- .IP \(bu 4
142
- \fBproject.artifact.infr.basedir\fR, \fBproject.artifact.infr.files\fR: The infrastructure files (default: empty and \fB**/{.github,.claude*,etc}/**
143
- **/{AGENTS.md,{package,tsconfig*}.json,.{git,npm}ignore}\fR).
144
- .RE 0
145
- .P
146
- Agent:
147
- .RS 0
148
- .IP \(bu 4
149
- \fBagent.persona\fR (\fBwriter\fR, \fBengineer\fR, \fBjournalist\fR, \fBtelegrapher\fR, or \fBcaveman\fR): The communication style of the AI agent (default: \fBengineer\fR).
150
- .IP \(bu 4
151
- \fBagent.guidance\fR (\fBnone\fR, \fBminimal\fR, \fBnormal\fR, or \fBverbose\fR): The amount of unsolicited help hints of the AI agent (default: \fBnormal\fR).
152
- .RE 0
153
- .P
154
- AI usage accounting (see \fBase-task-assign\fR(1) and \fBase-setup-telemetry\fR(1)):
155
- .RS 0
156
- .IP \(bu 4
157
- \fBtelemetry.enabled\fR (\fBtrue\fR or \fBfalse\fR, \fBuser\fR and \fBproject\fR scopes only): Whether the AI usage accounting is enabled as a whole (default: \fBfalse\fR).
158
- .IP \(bu 4
159
- \fBtelemetry.implicit\fR (\fBtrue\fR or \fBfalse\fR, \fBuser\fR and \fBproject\fR scopes only): Whether the usage of an interactive session is also accounted onto its active task while the task is \fIunassigned\fR, i.e., without assigning it to oneself (default: \fBtrue\fR, never for task \fBdefault\fR).
160
- .IP \(bu 4
161
- \fBtelemetry.service.port\fR (\fIport\fR \fB1024\fR..\fB65535\fR, \fBuser\fR scope only): The port of the per-user OTLP ingress on \fB127.0.0.1\fR (default: \fB44318\fR).
162
- .IP \(bu 4
163
- \fBtelemetry.service.token\fR (\fIstring\fR, \fBuser\fR scope only): The bearer token of the OTLP ingress, generated by \fBase setup
164
- telemetry activate\fR. Masked as \fB***\fR by \fBase config list\fR.
165
- .IP \(bu 4
166
- \fBtelemetry.service.interval\fR (\fIminutes\fR, \fBuser\fR and \fBproject\fR scopes only): The interval of the interim bookings of the open usage windows (default: \fB10\fR, \fB0\fR disables).
167
- .IP \(bu 4
168
- \fBtelemetry.service.idle\fR (\fIminutes\fR, \fBuser\fR and \fBproject\fR scopes only): The idle time after which a usage window pauses (default: \fB30\fR, \fB0\fR disables).
169
- .IP \(bu 4
170
- \fBtelemetry.prices.ai\fR (\fItable\fR, \fBuser\fR scope only): The price table \fImodel\fR\fB=\fR\fIinput\fR\fB/\fR\fIoutput\fR\[lB]\fB/\fR\fIcread\fR\fB/\fR\fIcwrite\fR\[rB] \[lB]...\[rB] (whitespace-separated) in USD per million input, output, cache read, and cache write tokens (the cache prices defaulting to the input price), keyed by the model or the tool name, with \fB*\fR for all others (default: \fB*=4.00/20.00/0.20/5.00\fR).
171
- .IP \(bu 4
172
- \fBtelemetry.prices.hr\fR (\fItable\fR, \fBuser\fR and \fBproject\fR scopes only): The hourly rate table \fIuser-id\fR\fB=\fR\fIusd-per-hour\fR\[lB]\fB,\fR...\[rB] of the human time, keyed by the assignee, with \fB*\fR for all others (default: \fB*=110\fR).
173
- .RE 0
174
- .P
175
- Task board (all writable on the \fBuser\fR and \fBproject\fR scopes only, see \fBase-task-board\fR(1)):
176
- .RS 0
177
- .IP \(bu 4
178
- \fBboard.tui.color.dim\fR, \fBboard.tui.color.normal\fR, \fBboard.tui.color.accent\fR, \fBboard.tui.color.signal\fR: The colors of the four color roles of the terminal board (defaults: \fBgrey\fR, \fBdefault\fR, \fBblue\fR, and \fBred\fR), each either \fBdefault\fR (the foreground color of the terminal), a color name (like \fBblue\fR or \fBblueBright\fR), \fB#rgb\fR, \fB#rrggbb\fR, \fBansi256(\fR\fIn\fR\fB)\fR, or \fBrgb(\fR\fIr\fR\fB,\fR\fIg\fR\fB,\fR\fIb\fR\fB)\fR.
179
- .IP \(bu 4
180
- \fBboard.web.color.dim\fR, \fBboard.web.color.normal\fR, \fBboard.web.color.accent\fR, \fBboard.web.color.signal\fR: The base colors of the four color roles of the web board (defaults: \fBgrey\fR, \fBblack\fR, \fBblue\fR, and \fBorange\fR), each either \fBdefault\fR, a color name (\fBblack\fR, \fBgrey\fR, \fBgray\fR, \fBbrown\fR, \fBred\fR, \fBorange\fR, \fByellow\fR, \fBgreen\fR, \fBteal\fR, \fBcyan\fR, \fBblue\fR, \fBpurple\fR, or \fBmagenta\fR), \fB#rgb\fR, or \fB#rrggbb\fR. Each base color is expanded into a spread of 64 colors over the entire lightness range, out of which the web board takes all its colors.
181
- .IP \(bu 4
182
- \fBboard.web.editor.keymap\fR (\fBdefault\fR, \fBvim\fR, or \fBemacs\fR): The key bindings of the task plan editor of the web board (default: \fBdefault\fR).
183
- .RE 0
184
- .SH "ENVIRONMENT"
185
- .RS 0
186
- .IP \(bu 4
187
- \fBEDITOR\fR, \fBVISUAL\fR: The text editor of \fBase config edit\fR.
188
- .IP \(bu 4
189
- \fBXDG_CONFIG_HOME\fR, \fBXDG_STATE_HOME\fR, \fBAPPDATA\fR, \fBLOCALAPPDATA\fR: The base directories of the \fIper-user configuration directory\fR and the \fIper-user state directory\fR (see \fBFILES\fR).
190
- .RE 0
191
- .SH "FILES"
192
- .RS 0
193
- .IP \(bu 4
194
- \fIper-user configuration directory\fR\fB/config.yaml\fR: The configuration of scope \fBuser\fR (with file mode \fB0600\fR). The per-user configuration directory is \fB~/Library/Application
195
- Support/ase\fR on macOS, \fB%APPDATA%\[rs]ase\fR on Windows, and \fB$XDG_CONFIG_HOME/ase\fR (falling back to \fB~/.config/ase\fR) elsewhere.
196
- .IP \(bu 4
197
- \fB.ase/config.yaml\fR: The configuration of scope \fBproject\fR, searched upward from the current working directory up to the project root, else located in the project root.
198
- .IP \(bu 4
199
- \fB.ase/task/\fR\fIid\fR\fB/config.yaml\fR: The configuration of scope \fBtask:\fR\fIid\fR, located in the project root (or the current working directory outside of a project).
200
- .IP \(bu 4
201
- \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/config.yaml\fR: The configuration of scope \fBsession:\fR\fIid\fR, independent of any project. The per-user state directory is \fB~/Library/Application
202
- Support/ase\fR on macOS, \fB%LOCALAPPDATA%\[rs]ase\fR on Windows, and \fB$XDG_STATE_HOME/ase\fR (falling back to \fB~/.local/state/ase\fR) elsewhere.
203
- .RE 0
204
- .P
205
- Every write happens under an advisory file lock and atomically. A file carrying a secret key (a token) is written with file mode \fB0600\fR.
206
- .SH "EXIT STATUS"
207
- .P
208
- \fB0\fR on success, \fB1\fR on any error (including a missing \fIcommand\fR).
209
- .SH "EXAMPLES"
210
- .P
211
- .RS 2
212
- .nf
213
- # initialize the project configuration with the "industry" preset
214
- $ ase config init industry
215
-
216
- # show the effective configuration
217
- $ ase config list
218
-
219
- # set the persona of the agent on the user scope
220
- $ ase config --scope user set agent.persona telegrapher
221
-
222
- # read a value by an abbreviated key
223
- $ ase config get persona
224
- .fi
225
- .RE
226
- .SH "SEE ALSO"
227
- .P
228
- \fBase\fR(1), \fBase-config-init\fR(1), \fBase-config-list\fR(1), \fBase-config-edit\fR(1), \fBase-config-get\fR(1), \fBase-config-set\fR(1), \fBase-config-delete\fR(1).
229
- .SH "AUTHOR"
230
- .P
231
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,36 +0,0 @@
1
- .TH "ASE-HOOK-PERMISSION-REQUEST" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-permission-request\fR - Handle the PermissionRequest Hook Event
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook permission-request\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase hook permission-request\fR handles the \fBPermissionRequest\fR hook event of \fIOpenAI Codex CLI\fR, which the agent tool fires only when a tool invocation would otherwise require an interactive user approval. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users. It is configured for \fB--tool codex\fR only, as \fIOpenAI Codex CLI\fR does not honor an approval in its \fBPreToolUse\fR event.
10
- .P
11
- The handler reads the event payload from standard input, a JSON object with the tool name (field \fBtool_name\fR), the tool input (field \fBtool_input\fR), and the session id (field \fBsession_id\fR), and applies the very same auto-approval rules as \fBase hook pre-tool-use\fR (see \fBase-hook-pre-tool-use\fR(1)): \fIASE\fR CLI invocations, \fIASE\fR skills, \fIASE\fR MCP tools, tools of the pre-defined foreign MCP servers, reads of plugin files, and edits during an active edit-capable skill.
12
- .P
13
- On approval, the handler writes the decision \fB{"hookSpecificOutput":{"hookEventName":"PermissionRequest","decision":{"behavior":"allow"}}}\fR to standard output. Otherwise, it stays silent and hence defers to the regular approval flow of the agent tool.
14
- .SH "OPTIONS"
15
- .RS 0
16
- .IP \(bu 4
17
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
18
- .IP \(bu 4
19
- \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]: The agent tool whose event payload is read: \fBclaude\fR, \fBcopilot\fR, or \fBcodex\fR (as configured: \fBcodex\fR). Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
20
- .RE 0
21
- .SH "ENVIRONMENT"
22
- .RS 0
23
- .IP \(bu 4
24
- \fBPLUGIN_ROOT\fR, \fBCLAUDE_PLUGIN_ROOT\fR, \fBCOPILOT_PLUGIN_ROOT\fR: The plugin root directory for the auto-approval of plugin file reads.
25
- .IP \(bu 4
26
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
27
- .RE 0
28
- .SH "EXIT STATUS"
29
- .P
30
- Exits with status \fB0\fR, unless \fB--tool\fR is invalid (status \fB1\fR).
31
- .SH "SEE ALSO"
32
- .P
33
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-pre-tool-use\fR(1).
34
- .SH "AUTHOR"
35
- .P
36
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR