@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,59 +0,0 @@
1
- .TH "ASE-HOOK-PRE-TOOL-USE" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-pre-tool-use\fR - Handle the PreToolUse Hook Event
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook pre-tool-use\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 pre-tool-use\fR handles the \fBPreToolUse\fR hook event of \fIAnthropic Claude Code CLI\fR and \fIOpenAI Codex CLI\fR, resp. the \fBpreToolUse\fR hook event of \fIGitHub Copilot CLI\fR, which the agent tool fires before each tool invocation. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users.
10
- .P
11
- The handler reads the event payload from standard input, a JSON object with the tool name (field \fBtool_name\fR, resp. \fBtoolName\fR for \fIGitHub Copilot CLI\fR), the tool input (field \fBtool_input\fR, resp. \fBtoolArgs\fR, either an object or a JSON-encoded string), and the session id (field \fBsession_id\fR, resp. \fBsessionId\fR). It auto-approves the invocation, so the user is not prompted for it, if it is one of the following:
12
- .RS 0
13
- .IP \(bu 4
14
- a shell command (tool \fBBash\fR, resp. \fBbash\fR) starting with the word \fBase\fR and not containing any of the characters \fB;\fR, \fB&\fR, \fB|\fR, \fB<\fR, \fB>\fR, backtick, or newline, or a \fB$(\fR command substitution;
15
- .IP \(bu 4
16
- a skill invocation (tool \fBSkill\fR) of an \fIASE\fR skill (\fBase-\fR\fIname\fR, optionally namespaced as \fBase:ase-\fR\fIname\fR);
17
- .IP \(bu 4
18
- an \fIASE\fR MCP tool (\fBmcp__plugin_ase_ase__\fR\fItool\fR for \fBclaude\fR, \fBase-\fR\fItool\fR for \fBcopilot\fR, and \fBmcp__ase__\fR\fItool\fR for \fBcodex\fR);
19
- .IP \(bu 4
20
- a tool of one of the pre-defined foreign MCP servers of \fBase setup
21
- mcp\fR (\fBchat-alibaba-qwen\fR, \fBchat-deepseek\fR, \fBchat-google-gemini\fR, \fBchat-openai-chatgpt\fR, \fBchat-xai-grok\fR, \fBchat-zai-glm\fR, \fBsearch-brave\fR, \fBsearch-exa\fR, and \fBsearch-perplexity\fR, named \fBmcp__\fR\fIserver\fR\fB__\fR\fItool\fR resp. \fIserver\fR\fB-\fR\fItool\fR for \fBcopilot\fR);
22
- .IP \(bu 4
23
- a file read (tool \fBRead\fR) of a file located below the plugin root directory (e.g., the meta files included by the skills);
24
- .IP \(bu 4
25
- a file edit (tool \fBEdit\fR) while one of the edit-capable skills \fBase-code-lint\fR, \fBase-docs-shorten\fR, \fBase-docs-refine\fR, or \fBase-docs-proofread\fR is recorded as active in the internal session state of the session.
26
- .RE 0
27
- .P
28
- On approval, the handler writes the decision \fBpermissionDecision:
29
- allow\fR with a human-readable \fBpermissionDecisionReason\fR to standard output, nested in \fBhookSpecificOutput\fR (\fBclaude\fR), resp. as top-level fields (\fBcopilot\fR). Otherwise, it stays silent and hence defers to the regular permission flow of the agent tool.
30
- .P
31
- For \fB--tool codex\fR, the handler only drains its standard input and stays silent, as \fIOpenAI Codex CLI\fR rejects an approval in \fBPreToolUse\fR; the approval is granted by \fBase hook permission-request\fR instead.
32
- .SH "OPTIONS"
33
- .RS 0
34
- .IP \(bu 4
35
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
36
- .IP \(bu 4
37
- \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]: The agent tool whose event payload is read and whose decision format is written: \fBclaude\fR, \fBcopilot\fR, or \fBcodex\fR. Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
38
- .RE 0
39
- .SH "ENVIRONMENT"
40
- .RS 0
41
- .IP \(bu 4
42
- \fBCLAUDE_PLUGIN_ROOT\fR, \fBCOPILOT_PLUGIN_ROOT\fR, \fBPLUGIN_ROOT\fR: The plugin root directory for the auto-approval of plugin file reads. If unset, such reads are not auto-approved.
43
- .IP \(bu 4
44
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
45
- .RE 0
46
- .SH "FILES"
47
- .RS 0
48
- .IP \(bu 4
49
- \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/state.yaml\fR: The internal session state, whose \fBskill\fR field records the active edit-capable skill.
50
- .RE 0
51
- .SH "EXIT STATUS"
52
- .P
53
- Exits with status \fB0\fR, unless \fB--tool\fR is invalid (status \fB1\fR).
54
- .SH "SEE ALSO"
55
- .P
56
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-permission-request\fR(1), \fBase-setup-mcp\fR(1).
57
- .SH "AUTHOR"
58
- .P
59
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,47 +0,0 @@
1
- .TH "ASE-HOOK-SESSION-END" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-session-end\fR - Handle the SessionEnd Hook Event
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook session-end\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 session-end\fR handles the \fBSessionEnd\fR hook event of \fIAnthropic Claude Code CLI\fR and \fIOpenAI Codex CLI\fR, resp. the \fBsessionEnd\fR hook event of \fIGitHub Copilot CLI\fR. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users.
10
- .P
11
- The handler reads the event payload from standard input, a JSON object with the session id (field \fBsession_id\fR, resp. \fBsessionId\fR). For a valid session id (matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), it:
12
- .RS 0
13
- .IP 1. 4
14
- removes the session directory \fIper-user state directory\fR\fB/session/\fR\fIid\fR with the session-scoped configuration (scope \fBsession:\fR\fIid\fR) and the internal session state, and
15
- .IP 2. 4
16
- detaches the session from its AI usage window (if any, see \fBase-task-assign\fR(1)) through the \fBase service\fR of the owning project, which closes and books the window once no other session remains attached to it. If the owning project service is not reachable in time, the session end is noted in the session registry (\fIper-user state directory\fR\fB/telemetry.json\fR) instead, and the service is started in the background, which then detaches the session as of its noted end. A failure is only warned about.
17
- .RE 0
18
- .P
19
- An empty, malformed, or invalid payload is silently ignored. The handler writes nothing to standard output.
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
- .IP \(bu 4
25
- \[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. Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
26
- .RE 0
27
- .SH "ENVIRONMENT"
28
- .RS 0
29
- .IP \(bu 4
30
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
31
- .RE 0
32
- .SH "FILES"
33
- .RS 0
34
- .IP \(bu 4
35
- \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/\fR: The per-session directory, removed by this handler.
36
- .IP \(bu 4
37
- \fIper-user state directory\fR\fB/telemetry.json\fR: The telemetry state, whose session registry routes the session to the service of its project.
38
- .RE 0
39
- .SH "EXIT STATUS"
40
- .P
41
- Exits with status \fB0\fR, unless \fB--tool\fR is invalid (status \fB1\fR).
42
- .SH "SEE ALSO"
43
- .P
44
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-session-start\fR(1), \fBase-task-assign\fR(1), \fBase-service\fR(1), \fBase-setup-telemetry\fR(1).
45
- .SH "AUTHOR"
46
- .P
47
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,37 +0,0 @@
1
- .TH "ASE-HOOK-SESSION-PERSONA" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-session-persona\fR - Handle the SessionStart Hook Event for the Persona
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook session-persona\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 session-persona\fR handles the \fBSessionStart\fR hook event of \fIAnthropic Claude Code CLI\fR and \fIOpenAI Codex CLI\fR, resp. the \fBsessionStart\fR hook event of \fIGitHub Copilot CLI\fR, in addition to \fBase hook session-start\fR. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users.
10
- .P
11
- The handler determines the plugin root directory (see \fBase-hook-session-start\fR(1)), reads the persona rules \fBmeta/ase-persona.md\fR from it, and writes them as the hook output payload to standard output, as \fBhookSpecificOutput.additionalContext\fR (\fBclaude\fR and \fBcodex\fR), resp. as the top-level field \fBadditionalContext\fR (\fBcopilot\fR).
12
- .P
13
- The persona rules are injected by this separate handler, as agent tools like \fIAnthropic Claude Code CLI\fR show only a preview of a hook output beyond 10,000 characters, which otherwise would cut off the persona rules from the output of \fBase hook session-start\fR. The rules refer to the persona style \fB<ase-persona-style>\fR injected by \fBase hook
14
- session-start\fR, but only by name, so both handlers are independent of each other and their execution order does not matter.
15
- .SH "OPTIONS"
16
- .RS 0
17
- .IP \(bu 4
18
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
19
- .IP \(bu 4
20
- \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]: The agent tool whose hook output format is written: \fBclaude\fR (\fIAnthropic Claude Code CLI\fR), \fBcopilot\fR (\fIGitHub Copilot CLI\fR), or \fBcodex\fR (\fIOpenAI Codex CLI\fR). Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
21
- .RE 0
22
- .SH "ENVIRONMENT"
23
- .RS 0
24
- .IP \(bu 4
25
- \fBCLAUDE_PLUGIN_ROOT\fR, \fBCOPILOT_PLUGIN_ROOT\fR, \fBPLUGIN_ROOT\fR: The plugin root directory, provided by the agent tool. The handler fails if the variable of the selected tool is unset or empty.
26
- .IP \(bu 4
27
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
28
- .RE 0
29
- .SH "EXIT STATUS"
30
- .P
31
- Exits with status \fB0\fR on success, and with status \fB1\fR if the plugin root directory cannot be determined, the persona file cannot be read, or \fB--tool\fR is invalid.
32
- .SH "SEE ALSO"
33
- .P
34
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-session-start\fR(1), \fBase-config\fR(1).
35
- .SH "AUTHOR"
36
- .P
37
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,81 +0,0 @@
1
- .TH "ASE-HOOK-SESSION-START" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-session-start\fR - Handle the SessionStart Hook Event
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook session-start\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 session-start\fR handles the \fBSessionStart\fR hook event of \fIAnthropic Claude Code CLI\fR and \fIOpenAI Codex CLI\fR, resp. the \fBsessionStart\fR hook event of \fIGitHub Copilot CLI\fR. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users.
10
- .P
11
- The handler reads the event payload from standard input, a JSON object with the session id (field \fBsession_id\fR, resp. \fBsessionId\fR for \fIGitHub Copilot CLI\fR) and the working directory (field \fBcwd\fR), and performs the following steps:
12
- .RS 0
13
- .IP 1. 4
14
- It determines the plugin root directory from the environment variable \fBCLAUDE_PLUGIN_ROOT\fR (\fBclaude\fR), \fBCOPILOT_PLUGIN_ROOT\fR (\fBcopilot\fR), resp. \fBPLUGIN_ROOT\fR or \fBCLAUDE_PLUGIN_ROOT\fR (\fBcodex\fR), and reads the plugin manifest \fB.claude-plugin/plugin.json\fR (for the plugin version), the constitution \fBmeta/ase-constitution.md\fR, and the output style \fBoutput-styles/ase-terse.md\fR from it.
15
- .IP 2. 4
16
- It determines a version hint: a warning on a version mismatch between the tool and the plugin, a notice on a newer tool version available in the NPM registry (checked in the background at most once per hour), and a notice on a development setup (environment variable \fBASE_SETUP_DEV\fR set).
17
- .IP 3. 4
18
- For \fB--tool copilot\fR only, it changes into the project directory \fBcwd\fR of the payload, as \fIGitHub Copilot CLI\fR runs its hooks in the plugin installation directory.
19
- .IP 4. 4
20
- It removes all session state directories below the \fIper-user state directory\fR\fB/session/\fR (except the one of the current session) which were not modified for more than 7 days, i.e., the leftovers of agent tool sessions which ended without running \fBase hook session-end\fR.
21
- .IP 5. 4
22
- It determines the project directory (the Git top-level directory of \fBcwd\fR, else \fBcwd\fR itself) and, for a valid session id (matching \fB\[lB]A-Za-z0-9._-\[rB]+\fR), persists the active task id (\fB$ASE_TASK_ID\fR, else \fBdefault\fR) and the project directory into the internal session state \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/state.yaml\fR.
23
- .IP 6. 4
24
- Inside a \fItmux\fR pane, it sets the per-pane user option \fB@ase_agent_status\fR to \fB⏸\fR (ready).
25
- .IP 7. 4
26
- It resolves the session information from the configuration cascade (with the scope \fBsession:\fR\fIid\fR for a valid session id): the project id (a valid configured \fBproject.id\fR, else derived from the project directory), the user id (\fB$USER\fR, else \fB$LOGNAME\fR, else \fBunknown\fR), the persona style \fBagent.persona\fR, the guidance level \fBagent.guidance\fR, the boxing transparency \fBproject.boxing\fR, the task lifecycle model \fBproject.task.lifecycle\fR, the defaults \fBproject.task.default.source\fR, \fBproject.task.default.changeset\fR, and \fBproject.task.default.target\fR, the specification base directory \fBproject.artifact.spec.basedir\fR, and the schema configuration \fBproject.artifact.spec.schema\fR.
27
- .sp
28
- A setting not explicitly configured in any scope falls back to the environment variables \fBASE_PERSONA_STYLE\fR, \fBASE_GUIDANCE_LEVEL\fR, \fBASE_PROJECT_BOXING\fR, \fBASE_PROJECT_TASK_LIFECYCLE\fR, \fBASE_PROJECT_TASK_DEFAULT_SOURCE\fR, \fBASE_PROJECT_TASK_DEFAULT_CHANGESET\fR, and \fBASE_PROJECT_TASK_DEFAULT_TARGET\fR, and finally to the defaults \fBengineer\fR, \fBnormal\fR, \fBwhite\fR, \fBsolo\fR, \fBworktree\fR, \fBworktree\fR, and \fBsource\fR.
29
- .IP 8. 4
30
- For \fB--tool claude\fR only, it appends \fBexport\fR statements of the variables \fBASE_VERSION\fR, \fBASE_PLUGIN_ROOT\fR, \fBASE_USER_ID\fR, \fBASE_PROJECT_ID\fR, \fBASE_PROJECT_BOXING\fR, \fBASE_PROJECT_TASK_LIFECYCLE\fR, \fBASE_PROJECT_TASK_DEFAULT_SOURCE\fR, \fBASE_PROJECT_TASK_DEFAULT_CHANGESET\fR, \fBASE_PROJECT_TASK_DEFAULT_TARGET\fR, \fBASE_SPEC_BASEDIR\fR, \fBASE_SPEC_SCHEMA\fR, \fBASE_TASK_ID\fR, \fBASE_SESSION_ID\fR, \fBASE_HEADLESS\fR, and \fBASE_AGENT_TOOL\fR to the file of the environment variable \fBCLAUDE_ENV_FILE\fR (if set), so they are available to all shell commands of the session.
31
- .IP 9. 4
32
- It writes the hook output payload to standard output: the session information as XML-style tags (\fB<ase-version>\fR, \fB<ase-version-hint>\fR, \fB<ase-plugin-root>\fR, \fB<ase-persona-style>\fR, \fB<ase-guidance-level>\fR, \fB<ase-user-id>\fR, \fB<ase-project-id>\fR, \fB<ase-project-boxing>\fR, \fB<ase-project-task-lifecycle>\fR, \fB<ase-project-task-default-source>\fR, \fB<ase-project-task-default-changeset>\fR, \fB<ase-project-task-default-target>\fR, \fB<ase-spec-basedir>\fR, \fB<ase-spec-schema>\fR, \fB<ase-task-id>\fR, \fB<ase-session-id>\fR, \fB<ase-headless>\fR, and \fB<ase-agent-tool>\fR), followed by the constitution, with all \fB@\fR\fIfile\fR references expanded recursively (relative to the referencing file, \fB~/\fR denoting the home directory).
33
- .sp
34
- The persona rules are not part of this output, but are injected separately by \fBase hook session-persona\fR, as agent tools like \fIAnthropic Claude Code CLI\fR show only a preview of a hook output beyond 10,000 characters.
35
- .sp
36
- For \fB--tool copilot\fR and \fB--tool codex\fR only, the instructions of the output style \fBase-terse\fR (with its YAML frontmatter stripped) are appended, as these agent tools have no output style concept, whereas \fIAnthropic Claude Code CLI\fR applies the plugin output style natively. The context is emitted as \fBhookSpecificOutput.additionalContext\fR (\fBclaude\fR and \fBcodex\fR), resp. as the top-level field \fBadditionalContext\fR (\fBcopilot\fR).
37
- .sp
38
- Additionally, for \fBclaude\fR and \fBcodex\fR, unless running headless (\fBASE_HEADLESS\fR is \fBtrue\fR) or with guidance level \fBnone\fR, a deterministic \fIASE\fR banner (version, user, project, task, session, persona, guidance, and boxing, plus usage hints for guidance level \fBnormal\fR and \fBverbose\fR) is emitted as the top-level field \fBsystemMessage\fR.
39
- .RE 0
40
- .SH "OPTIONS"
41
- .RS 0
42
- .IP \(bu 4
43
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
44
- .IP \(bu 4
45
- \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]: The agent tool whose event payload is read and whose hook output format is written: \fBclaude\fR (\fIAnthropic Claude Code CLI\fR), \fBcopilot\fR (\fIGitHub Copilot CLI\fR), or \fBcodex\fR (\fIOpenAI Codex CLI\fR). Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
46
- .RE 0
47
- .SH "ENVIRONMENT"
48
- .RS 0
49
- .IP \(bu 4
50
- \fBCLAUDE_PLUGIN_ROOT\fR, \fBCOPILOT_PLUGIN_ROOT\fR, \fBPLUGIN_ROOT\fR: The plugin root directory, provided by the agent tool. The handler fails if the variable of the selected tool is unset or empty.
51
- .IP \(bu 4
52
- \fBCLAUDE_ENV_FILE\fR: The environment file of \fIAnthropic Claude Code CLI\fR, receiving the exported session information.
53
- .IP \(bu 4
54
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
55
- .IP \(bu 4
56
- \fBASE_TASK_ID\fR: The active task id of the session (default: \fBdefault\fR).
57
- .IP \(bu 4
58
- \fBASE_HEADLESS\fR: If \fBtrue\fR, the session runs headless, and no banner is emitted.
59
- .IP \(bu 4
60
- \fBASE_SETUP_DEV\fR: If set, the version hint notes a development setup.
61
- .IP \(bu 4
62
- \fBASE_PERSONA_STYLE\fR, \fBASE_GUIDANCE_LEVEL\fR, \fBASE_PROJECT_BOXING\fR, \fBASE_PROJECT_TASK_LIFECYCLE\fR, \fBASE_PROJECT_TASK_DEFAULT_SOURCE\fR, \fBASE_PROJECT_TASK_DEFAULT_CHANGESET\fR, \fBASE_PROJECT_TASK_DEFAULT_TARGET\fR: The fallbacks of the settings not explicitly configured.
63
- .IP \(bu 4
64
- \fBUSER\fR, \fBLOGNAME\fR: The user id.
65
- .IP \(bu 4
66
- \fBTMUX\fR, \fBTMUX_PANE\fR: The \fItmux\fR pane whose user option \fB@ase_agent_status\fR is set.
67
- .RE 0
68
- .SH "FILES"
69
- .RS 0
70
- .IP \(bu 4
71
- \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/state.yaml\fR: The internal session state, holding the active task id and the project directory of the session.
72
- .RE 0
73
- .SH "EXIT STATUS"
74
- .P
75
- Exits with status \fB0\fR on success, and with status \fB1\fR if the plugin root directory cannot be determined, a plugin file cannot be read, or \fB--tool\fR is invalid.
76
- .SH "SEE ALSO"
77
- .P
78
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-session-persona\fR(1), \fBase-hook-session-end\fR(1), \fBase-config\fR(1), \fBase-statusline\fR(1).
79
- .SH "AUTHOR"
80
- .P
81
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,34 +0,0 @@
1
- .TH "ASE-HOOK-STOP" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-stop\fR - Handle the Stop Hook Event
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook stop\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 stop\fR handles the \fBStop\fR hook event of \fIAnthropic Claude Code CLI\fR and \fIOpenAI Codex CLI\fR, resp. the \fBagentStop\fR hook event of \fIGitHub Copilot CLI\fR, which the agent tool fires when the agent finished responding. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users.
10
- .P
11
- The handler reads and discards the event payload on standard input and, when running inside a \fItmux\fR pane, sets the per-pane user option \fB@ase_agent_status\fR to \fB⏸\fR (ready), so a \fItmux\fR status line can render the live activity of the agent via \fB#{@ase_agent_status}\fR. It writes nothing to standard output.
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-t\fR|\fB--tool\fR \fItool\fR\[rB]: The agent tool which fires the event: \fBclaude\fR, \fBcopilot\fR, or \fBcodex\fR. Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
18
- .RE 0
19
- .SH "ENVIRONMENT"
20
- .RS 0
21
- .IP \(bu 4
22
- \fBTMUX\fR, \fBTMUX_PANE\fR: The \fItmux\fR pane whose user option \fB@ase_agent_status\fR is set (only if both are set and non-empty).
23
- .IP \(bu 4
24
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
25
- .RE 0
26
- .SH "EXIT STATUS"
27
- .P
28
- Exits with status \fB0\fR, unless \fB--tool\fR is invalid (status \fB1\fR).
29
- .SH "SEE ALSO"
30
- .P
31
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-user-prompt-submit\fR(1), \fBtmux\fR(1).
32
- .SH "AUTHOR"
33
- .P
34
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,34 +0,0 @@
1
- .TH "ASE-HOOK-USER-PROMPT-SUBMIT" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook-user-prompt-submit\fR - Handle the UserPromptSubmit Hook Event
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook user-prompt-submit\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 user-prompt-submit\fR handles the \fBUserPromptSubmit\fR hook event of \fIAnthropic Claude Code CLI\fR and \fIOpenAI Codex CLI\fR, resp. the \fBuserPromptSubmitted\fR hook event of \fIGitHub Copilot CLI\fR, which the agent tool fires when the user submits a prompt. It is intended to be invoked by the agent tool internally as a configured hook handler only, and not directly by end users.
10
- .P
11
- The handler reads and discards the event payload on standard input and, when running inside a \fItmux\fR pane, sets the per-pane user option \fB@ase_agent_status\fR to \fB▶\fR (busy), so a \fItmux\fR status line can render the live activity of the agent via \fB#{@ase_agent_status}\fR (independent of the statusline of the agent tool, which is not repainted during the agent processing). It writes nothing to standard output.
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-t\fR|\fB--tool\fR \fItool\fR\[rB]: The agent tool which fires the event: \fBclaude\fR, \fBcopilot\fR, or \fBcodex\fR. Default: \fB$ASE_TOOL\fR, else \fBclaude\fR.
18
- .RE 0
19
- .SH "ENVIRONMENT"
20
- .RS 0
21
- .IP \(bu 4
22
- \fBTMUX\fR, \fBTMUX_PANE\fR: The \fItmux\fR pane whose user option \fB@ase_agent_status\fR is set (only if both are set and non-empty).
23
- .IP \(bu 4
24
- \fBASE_TOOL\fR: The default of \fB--tool\fR.
25
- .RE 0
26
- .SH "EXIT STATUS"
27
- .P
28
- Exits with status \fB0\fR, unless \fB--tool\fR is invalid (status \fB1\fR).
29
- .SH "SEE ALSO"
30
- .P
31
- \fBase\fR(1), \fBase-hook\fR(1), \fBase-hook-stop\fR(1), \fBtmux\fR(1).
32
- .SH "AUTHOR"
33
- .P
34
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,51 +0,0 @@
1
- .TH "ASE-HOOK" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-hook\fR - Handle the Hook Events of the Agent Tool
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase hook\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .P
8
- \fBase hook\fR \fIevent\fR \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]
9
- .SH "DESCRIPTION"
10
- .P
11
- \fBase hook\fR is the entry point group of the hook handlers which the \fIASE\fR plugin configures in the agent tool: in \fBhooks/hooks.json\fR for \fIAnthropic Claude Code CLI\fR, in \fBhooks/hooks-copilot.json\fR for \fIGitHub Copilot CLI\fR (with \fB--tool copilot\fR), and in \fBhooks/hooks-codex.json\fR for \fIOpenAI Codex CLI\fR (with \fB--tool codex\fR). The agent tool invokes a handler on the corresponding event, passes the event payload as a JSON object on standard input, and interprets the JSON object a handler optionally writes to standard output.
12
- .P
13
- The handlers are intended to be invoked by the agent tool internally only, and not directly by end users. Without a sub-command, the usage information is shown and the command exits with status \fB1\fR.
14
- .SH "OPTIONS"
15
- .RS 0
16
- .IP \(bu 4
17
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information, including the list of all event handlers, and exit.
18
- .RE 0
19
- .SH "COMMANDS"
20
- .P
21
- The following event handlers exist, each accepting the option \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB] (\fBclaude\fR, \fBcopilot\fR, or \fBcodex\fR, default: \fB$ASE_TOOL\fR, else \fBclaude\fR) to select the agent tool whose payload format is read and written:
22
- .RS 0
23
- .IP \(bu 4
24
- \fBase hook session-start\fR: Handle the \fBSessionStart\fR (resp. \fBsessionStart\fR) event: inject the \fIASE\fR constitution and session information into the session context. See \fBase-hook-session-start\fR(1).
25
- .IP \(bu 4
26
- \fBase hook session-persona\fR: Handle the \fBSessionStart\fR (resp. \fBsessionStart\fR) event a second time: inject the \fIASE\fR persona rules into the session context. See \fBase-hook-session-persona\fR(1).
27
- .IP \(bu 4
28
- \fBase hook session-end\fR: Handle the \fBSessionEnd\fR (resp. \fBsessionEnd\fR) event: remove the session state and detach the session from its AI usage window. See \fBase-hook-session-end\fR(1).
29
- .IP \(bu 4
30
- \fBase hook pre-tool-use\fR: Handle the \fBPreToolUse\fR (resp. \fBpreToolUse\fR) event: auto-approve the invocations of \fIASE\fR tools. See \fBase-hook-pre-tool-use\fR(1).
31
- .IP \(bu 4
32
- \fBase hook permission-request\fR: Handle the \fBPermissionRequest\fR event of \fIOpenAI Codex CLI\fR: auto-approve the invocations of \fIASE\fR tools. See \fBase-hook-permission-request\fR(1).
33
- .IP \(bu 4
34
- \fBase hook user-prompt-submit\fR: Handle the \fBUserPromptSubmit\fR (resp. \fBuserPromptSubmitted\fR) event: mark the agent as busy. See \fBase-hook-user-prompt-submit\fR(1).
35
- .IP \(bu 4
36
- \fBase hook stop\fR: Handle the \fBStop\fR (resp. \fBagentStop\fR) event: mark the agent as ready. See \fBase-hook-stop\fR(1).
37
- .RE 0
38
- .SH "ENVIRONMENT"
39
- .RS 0
40
- .IP \(bu 4
41
- \fBASE_TOOL\fR: The default of the \fB--tool\fR option of all event handlers. An invalid value is reported only once a handler actually runs.
42
- .RE 0
43
- .SH "EXIT STATUS"
44
- .P
45
- Each event handler exits with status \fB0\fR on success, and with status \fB1\fR on an invalid \fB--tool\fR value or a fatal error. The group command without a sub-command exits with status \fB1\fR.
46
- .SH "SEE ALSO"
47
- .P
48
- \fBase\fR(1), \fBase-hook-session-start\fR(1), \fBase-hook-session-persona\fR(1), \fBase-hook-session-end\fR(1), \fBase-hook-pre-tool-use\fR(1), \fBase-hook-permission-request\fR(1), \fBase-hook-user-prompt-submit\fR(1), \fBase-hook-stop\fR(1), \fBase-setup\fR(1).
49
- .SH "AUTHOR"
50
- .P
51
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
package/dst/man/ase-man.1 DELETED
@@ -1,67 +0,0 @@
1
- .TH "ASE-MAN" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-man\fR - Show an internally shipped manual page
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase man\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-l\fR|\fB--list\fR\[rB] \[lB]\fB-p\fR|\fB--path\fR\[rB] \[lB]\fIpage\fR \[lB]...\[rB]\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase man\fR shows one of the Unix manual pages shipped internally with the \fBase\fR tool with \fBman\fR(1), independent of whether the manual pages are installed into the \fBMANPATH\fR of the system (as npm does only for a global installation of the \fB@rse/ase\fR package).
10
- .P
11
- The manual pages are rendered at build-time from Markdown into the Unix manual page format and shipped in the directory \fBdst/man/\fR of the tool package. There is one manual page per command and command group, named after the command path with dashes, e.g., \fBase-task\fR(1) for \fBase task\fR and \fBase-agent-fleet\fR(1) for \fBase agent fleet\fR. The commands of the third level (e.g. \fBase task store start\fR) are covered by the manual page of their group (e.g. \fBase-task-store\fR(1)).
12
- .P
13
- The manual page file is passed to \fBman\fR(1) by its path, so \fBman\fR(1) formats and pages it as usual (honoring \fBMANPAGER\fR, \fBPAGER\fR, and \fBMANWIDTH\fR).
14
- .SH "OPTIONS"
15
- .RS 0
16
- .IP \(bu 4
17
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show program usage information only.
18
- .IP \(bu 4
19
- \[lB]\fB-l\fR|\fB--list\fR\[rB]: Instead of showing a manual page, list the names of all shipped manual pages, one per line, in natural order. Any \fIpage\fR is ignored.
20
- .IP \(bu 4
21
- \[lB]\fB-p\fR|\fB--path\fR\[rB]: Instead of showing the manual page, print the absolute path of its file, e.g., for passing it to another formatter.
22
- .RE 0
23
- .SH "ARGUMENTS"
24
- .RS 0
25
- .IP \(bu 4
26
- \[lB]\fIpage\fR \[lB]...\[rB]\[rB]: The manual page to show (default: \fBase\fR). It is given either by its name (e.g. \fBase-agent-fleet\fR) or by the words of the command path (e.g. \fBagent fleet\fR), which are joined with dashes, where the leading \fBase\fR is optional and the name is case-insensitive.
27
- .sp
28
- A command path deeper than the shipped manual pages (e.g. \fBtask store start\fR) falls back to the manual page of its nearest parent group (e.g. \fBase-task-store\fR), but never to the top-level page \fBase\fR(1). A \fIpage\fR consisting of anything other than letters, digits, and dashes is refused.
29
- .RE 0
30
- .SH "ENVIRONMENT"
31
- .RS 0
32
- .IP \(bu 4
33
- \fBMANPAGER\fR, \fBPAGER\fR, \fBMANWIDTH\fR: Honored by \fBman\fR(1) for paging and formatting the manual page.
34
- .RE 0
35
- .SH "FILES"
36
- .RS 0
37
- .IP \(bu 4
38
- \fIpackage directory\fR\fB/dst/man/ase{,-\fR\fIcommand\fR\fB{,-\fR\fIsub-command\fR\fB}}.1\fR: The internally shipped manual pages.
39
- .RE 0
40
- .SH "EXIT STATUS"
41
- .P
42
- The exit status of \fBman\fR(1), resp. \fB0\fR for \fB--list\fR and \fB--path\fR. The command exits with status \fB1\fR if no manual page is found for \fIpage\fR, or if \fBman\fR(1) cannot be run at all (e.g. on a system without it, where the error message names the manual page file).
43
- .SH "EXAMPLES"
44
- .P
45
- .RS 2
46
- .nf
47
- # show the manual page of the "ase" command itself
48
- $ ase man
49
-
50
- # show the manual page of "ase agent fleet" (all equivalent)
51
- $ ase man ase-agent-fleet
52
- $ ase man agent-fleet
53
- $ ase man agent fleet
54
-
55
- # show the manual page covering "ase task store start"
56
- $ ase man task store start
57
-
58
- # list all shipped manual pages
59
- $ ase man --list
60
- .fi
61
- .RE
62
- .SH "SEE ALSO"
63
- .P
64
- \fBase\fR(1), \fBman\fR(1).
65
- .SH "AUTHOR"
66
- .P
67
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
package/dst/man/ase-mcp.1 DELETED
@@ -1,61 +0,0 @@
1
- .TH "ASE-MCP" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-mcp\fR - Bridge Stdio MCP to the Per-Project Service
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase mcp\fR \[lB]\fB-h\fR|\fB--help\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase mcp\fR is a Model-Context-Protocol (MCP) server speaking the stdio transport: it accepts MCP messages on standard input, forwards them to the per-project background service of \fBase-service\fR(1) via the Streamable HTTP transport (\fBhttp://127.0.0.1:\fR\fIport\fR\fB/mcp\fR), and writes the responses to standard output.
10
- .P
11
- It is configured as the stdio MCP server \fBase\fR of the \fIASE\fR plugin in the agent tool and is not intended to be invoked directly by end users. All log messages go to standard error (or to the file of the global \fB--log-file\fR option), as standard output carries the MCP protocol.
12
- .P
13
- On start, the service of the project is probed and auto-started (via \fBase service start\fR) if it is not running yet. The bridge then lives as long as its standard input is open, and is robust against a vanishing service:
14
- .RS 0
15
- .IP \(bu 4
16
- Messages arriving while no service connection exists are buffered (up to 100 messages, dropping the oldest ones on overflow) and sent once the connection is (re-)established.
17
- .IP \(bu 4
18
- On a lost or refused connection, the service is auto-started again and the connection is re-established, with a delay growing from 0.5 up to 10 seconds between the attempts.
19
- .IP \(bu 4
20
- Every 30 seconds, the service is probed, and a vanished service triggers the same reconnect.
21
- .RE 0
22
- .P
23
- Under \fIGitHub Copilot CLI\fR (detected by the environment variable \fBCOPILOT_PLUGIN_ROOT\fR), the MCP server is started in the plugin installation directory instead of the project. Hence, the bridge first answers all MCP messages in-process through the same set of MCP tools the service provides (covering the MCP handshake and the tool listing), holds back all tool calls, and waits until the \fBSessionStart\fR hook (see \fBase-hook\fR(1)) recorded the project directory of the session (with id \fBCOPILOT_AGENT_SESSION_ID\fR).
24
- .P
25
- It then switches into this directory, starts or connects the service of the project there, and forwards the held tool calls. If no project directory is recorded within 30 seconds of the first held tool call, it falls back to the current directory.
26
- .P
27
- The service provides the \fBase_*\fR MCP tools of the skills, e.g., \fBase_ping\fR, \fBase_config_get\fR, \fBase_config_set\fR, \fBase_config_delete\fR, \fBase_config_list\fR, \fBase_state_get\fR, \fBase_state_set\fR, \fBase_state_delete\fR, \fBase_kv_get\fR, \fBase_kv_set\fR, \fBase_kv_delete\fR, \fBase_kv_clear\fR, \fBase_kv_batch\fR, the \fBase_task_*\fR tools, \fBase_artifact_list\fR, \fBase_artifact_name\fR, \fBase_specbook_lint\fR, \fBase_specbook_export\fR, \fBase_diagram\fR, \fBase_worktree_path\fR, \fBase_mint\fR, \fBase_text_metric\fR, \fBase_getopt\fR, \fBase_markdown_prepare\fR, \fBase_timestamp\fR, \fBase_sleep\fR, \fBase_compat\fR, \fBase_component_info\fR, and \fBase_decision_matrix\fR.
28
- .SH "OPTIONS"
29
- .RS 0
30
- .IP \(bu 4
31
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
32
- .RE 0
33
- .SH "ENVIRONMENT"
34
- .RS 0
35
- .IP \(bu 4
36
- \fBCOPILOT_PLUGIN_ROOT\fR, \fBCOPILOT_AGENT_SESSION_ID\fR: Exported by \fIGitHub Copilot CLI\fR to its MCP servers. When both are set (and the session id matches \fB\[lB]A-Za-z0-9._-\[rB]+\fR), the service is deferred until the project directory of the session is known (see \fBDESCRIPTION\fR).
37
- .RE 0
38
- .SH "FILES"
39
- .RS 0
40
- .IP \(bu 4
41
- \fB.ase/service.yaml\fR: The persisted port of the per-project service.
42
- .IP \(bu 4
43
- \fIper-user state directory\fR\fB/session/\fR\fIid\fR\fB/state.yaml\fR: The internal session state, from which the project directory (\fBbasedir\fR) recorded by the \fBSessionStart\fR hook is read under \fIGitHub Copilot CLI\fR.
44
- .RE 0
45
- .SH "EXIT STATUS"
46
- .P
47
- \fB0\fR once standard input is closed, \fB1\fR if the service cannot be started initially.
48
- .SH "EXAMPLES"
49
- .P
50
- .RS 2
51
- .nf
52
- # register the bridge manually as an MCP server in Claude Code
53
- $ claude mcp add ase -- ase mcp
54
- .fi
55
- .RE
56
- .SH "SEE ALSO"
57
- .P
58
- \fBase\fR(1), \fBase-service\fR(1), \fBase-hook\fR(1), \fBase-setup\fR(1).
59
- .SH "AUTHOR"
60
- .P
61
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,43 +0,0 @@
1
- .TH "ASE-SERVICE-LOG" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-service-log\fR - Show the Log of the Background Service
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase service log\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase service log\fR shows the log file \fB.ase/service.log\fR of the per-project background service of \fIASE\fR (see \fBase-service\fR(1)) on standard output: by default the entire file, else its last lines only. If no log file exists, nothing is shown and the command exits with status \fB0\fR.
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
- .IP \(bu 4
15
- \[lB]\fB-f\fR|\fB--follow\fR\[rB]: After showing the last \fIn\fR lines (default: \fB10\fR), keep following the file in the style of \fBtail -f\fR and show all newly appended lines, until interrupted (e.g., via \fBCTRL+C\fR), even once the service has stopped. When the log is trimmed on a service start, following continues at the new end of the file.
16
- .IP \(bu 4
17
- \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]: Show the last \fIn\fR non-empty lines only, where \fIn\fR has to be a positive integer (default: all lines, or \fB10\fR with \fB--follow\fR).
18
- .RE 0
19
- .SH "FILES"
20
- .RS 0
21
- .IP \(bu 4
22
- \fB.ase/service.log\fR: The log of the detached service.
23
- .RE 0
24
- .SH "EXIT STATUS"
25
- .P
26
- \fB0\fR on success, \fB1\fR on an invalid \fIn\fR or an unreadable log file.
27
- .SH "EXAMPLES"
28
- .P
29
- .RS 2
30
- .nf
31
- # show the last 50 log lines
32
- $ ase service log -n 50
33
-
34
- # follow the log
35
- $ ase service log -f
36
- .fi
37
- .RE
38
- .SH "SEE ALSO"
39
- .P
40
- \fBase\fR(1), \fBase-service\fR(1), \fBase-service-start\fR(1), \fBtail\fR(1).
41
- .SH "AUTHOR"
42
- .P
43
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,47 +0,0 @@
1
- .TH "ASE-SERVICE-SEND" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-service-send\fR - Send a Command to the Background Service
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase service send\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \fIcmd\fR
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase service send\fR dispatches the command token \fIcmd\fR to the per-project background service of \fIASE\fR (see \fBase-service\fR(1)) via an HTTP \fBPOST /command\fR request with the JSON body \fB{ "command":\fR \fIcmd\fR \fB}\fR, and prints the raw response body (a JSON object) on standard output. If the service is not running, it is auto-started first (like \fBase service start\fR).
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
- \fIcmd\fR: The command token to dispatch. The service currently understands:
19
- .RS 4
20
- .IP \(bu 4
21
- \fBping\fR: Answer with \fB{"ok":true,"pong":true}\fR.
22
- .IP \(bu 4
23
- \fBstatus\fR: Answer with the service identity, i.e., \fBok\fR, the project id \fBprojectId\fR, the \fBport\fR, and the uptime \fBuptimeMs\fR in milliseconds.
24
- .RE 0
25
- .IP "" 4
26
- Any other token is answered with an \fBunknown command\fR error (HTTP status \fB400\fR).
27
- .RE 0
28
- .SH "EXIT STATUS"
29
- .P
30
- \fB0\fR if the service answered with a success status, \fB1\fR if it answered with an error status (e.g., for an unknown \fIcmd\fR), or if it could not be started or reached.
31
- .SH "EXAMPLES"
32
- .P
33
- .RS 2
34
- .nf
35
- $ ase service send ping
36
- {"ok":true,"pong":true}
37
-
38
- $ ase service send status
39
- {"ok":true,"projectId":"ase","port":42817,"uptimeMs":723456}
40
- .fi
41
- .RE
42
- .SH "SEE ALSO"
43
- .P
44
- \fBase\fR(1), \fBase-service\fR(1), \fBase-service-status\fR(1).
45
- .SH "AUTHOR"
46
- .P
47
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
@@ -1,54 +0,0 @@
1
- .TH "ASE-SERVICE-START" "1" "October 2026" "2.0.2" "Agentic Software Engineering (ASE)"
2
- .SH "NAME"
3
- \fBase-service-start\fR - Start the Per-Project Background Service
4
- .SH "SYNOPSIS"
5
- .P
6
- \fBase service start\fR \[lB]\fB-h\fR|\fB--help\fR\[rB] \[lB]\fB-f\fR|\fB--foreground\fR\[rB]
7
- .SH "DESCRIPTION"
8
- .P
9
- \fBase service start\fR starts the per-project background HTTP service of \fIASE\fR (see \fBase-service\fR(1)) for the project of the current working directory.
10
- .P
11
- If a service of this project already answers on the port persisted in \fB.ase/service.yaml\fR, the command just reports \fBservice: already running
12
- on port\fR \fIport\fR and exits with status \fB0\fR. Otherwise, it allocates the preferred port \fBproject.service.port\fR (see \fBase-config\fR(1)), if configured and free, else (with a warning, if configured) a fresh random free port out of the range \fB42000\fR..\fB44000\fR (trying up to 20 candidates), spawns the service as a detached background process (with its standard output and standard error appended to \fB.ase/service.log\fR, trimmed to its last 2000 lines beforehand if larger than 1 MB), and probes its readiness for up to 5 seconds.
13
- .P
14
- Once ready, the service persists its port into \fB.ase/service.yaml\fR, and the command reports \fBservice: started on port\fR \fIport\fR. If the spawned service exits during its startup, does not become ready in time, or loses its port to a foreign listener, the attempt is aborted (killing the process) and retried with a new port, up to three attempts in total, after which the command fails with the reason and the last 20 lines of the log.
15
- .P
16
- The detached service adopts the log level of the global \fB--log-level\fR option of this command, e.g., \fBase --log-level debug service start\fR logs the full MCP traffic. It stops itself after 30 minutes without any request (but never while a request is in flight or while it holds open AI usage windows), on \fBase service stop\fR, and removes its port from \fB.ase/service.yaml\fR again.
17
- .P
18
- Usually, the service does not have to be started explicitly, as the MCP bridge \fBase mcp\fR, \fBase service send\fR, and the hooks start it on demand.
19
- .SH "OPTIONS"
20
- .RS 0
21
- .IP \(bu 4
22
- \[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information and exit.
23
- .IP \(bu 4
24
- \[lB]\fB-f\fR|\fB--foreground\fR\[rB]: Run the service in the current process instead, on a port allocated as above, logging to the terminal (resp. the global \fB--log-file\fR) instead of \fB.ase/service.log\fR and without the idle timeout, until it is interrupted (via \fBSIGINT\fR, e.g., \fBCTRL+C\fR, \fBSIGTERM\fR, \fBSIGHUP\fR, or \fBSIGQUIT\fR) or stopped via \fBase service stop\fR. A service of this project already running is an error in this mode.
25
- .RE 0
26
- .SH "FILES"
27
- .RS 0
28
- .IP \(bu 4
29
- \fB.ase/service.yaml\fR: The persisted port of the running service.
30
- .IP \(bu 4
31
- \fB.ase/service.log\fR: The log of the detached service.
32
- .IP \(bu 4
33
- \fB.ase/.gitignore\fR: The self-ignoring Git ignore file covering the machine-local runtime files, created if missing.
34
- .RE 0
35
- .SH "EXIT STATUS"
36
- .P
37
- \fB0\fR if the service was started or is already running (resp., in the foreground, once it was stopped), \fB1\fR if it could not be started, or, with \fB--foreground\fR, if it is already running.
38
- .SH "EXAMPLES"
39
- .P
40
- .RS 2
41
- .nf
42
- # start the service in the background
43
- $ ase service start
44
-
45
- # run the service in the foreground for debugging
46
- $ ase --log-level debug service start --foreground
47
- .fi
48
- .RE
49
- .SH "SEE ALSO"
50
- .P
51
- \fBase\fR(1), \fBase-service\fR(1), \fBase-service-status\fR(1), \fBase-service-stop\fR(1), \fBase-service-log\fR(1), \fBase-config\fR(1).
52
- .SH "AUTHOR"
53
- .P
54
- Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR