@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
@@ -0,0 +1,65 @@
1
+ # ase-hook-session-persona(1) -- Handle the SessionStart Hook Event for the Persona
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase hook session-persona`
6
+ \[`-h`|`--help`\]
7
+ \[`-t`|`--tool` *tool*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase hook session-persona** handles the `SessionStart` hook event of
12
+ *Anthropic Claude Code CLI* and *OpenAI Codex CLI*, resp. the
13
+ `sessionStart` hook event of *GitHub Copilot CLI*, in addition to
14
+ `ase hook session-start`.
15
+ It is intended to be invoked by the agent tool internally as a
16
+ configured hook handler only, and not directly by end users.
17
+
18
+ The handler determines the plugin root directory (see
19
+ `ase-hook-session-start`(1)), reads the persona rules
20
+ `meta/ase-persona.md` from it, and writes them as the hook output
21
+ payload to standard output, as `hookSpecificOutput.additionalContext`
22
+ (`claude` and `codex`), resp. as the top-level field
23
+ `additionalContext` (`copilot`).
24
+
25
+ The persona rules are injected by this separate handler, as agent tools
26
+ like *Anthropic Claude Code CLI* show only a preview of a hook output
27
+ beyond 10,000 characters, which otherwise would cut off the persona
28
+ rules from the output of `ase hook session-start`. The rules refer to
29
+ the persona style `<ase-persona-style>` injected by `ase hook
30
+ session-start`, but only by name, so both handlers are independent of
31
+ each other and their execution order does not matter.
32
+
33
+ ## OPTIONS
34
+
35
+ - \[`-h`|`--help`\]:
36
+ Show usage information and exit.
37
+
38
+ - \[`-t`|`--tool` *tool*\]:
39
+ The agent tool whose hook output format is written: `claude`
40
+ (*Anthropic Claude Code CLI*), `copilot` (*GitHub Copilot CLI*), or
41
+ `codex` (*OpenAI Codex CLI*). Default: `$ASE_TOOL`, else `claude`.
42
+
43
+ ## ENVIRONMENT
44
+
45
+ - `CLAUDE_PLUGIN_ROOT`, `COPILOT_PLUGIN_ROOT`, `PLUGIN_ROOT`:
46
+ The plugin root directory, provided by the agent tool. The handler
47
+ fails if the variable of the selected tool is unset or empty.
48
+
49
+ - `ASE_TOOL`:
50
+ The default of `--tool`.
51
+
52
+ ## EXIT STATUS
53
+
54
+ Exits with status `0` on success, and with status `1` if the plugin
55
+ root directory cannot be determined, the persona file cannot be read,
56
+ or `--tool` is invalid.
57
+
58
+ ## SEE ALSO
59
+
60
+ `ase`(1), `ase-hook`(1), `ase-hook-session-start`(1), `ase-config`(1).
61
+
62
+ ## AUTHOR
63
+
64
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
65
+
@@ -0,0 +1,184 @@
1
+ # ase-hook-session-start(1) -- Handle the SessionStart Hook Event
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase hook session-start`
6
+ \[`-h`|`--help`\]
7
+ \[`-t`|`--tool` *tool*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase hook session-start** handles the `SessionStart` hook event of
12
+ *Anthropic Claude Code CLI* and *OpenAI Codex CLI*, resp. the
13
+ `sessionStart` hook event of *GitHub Copilot CLI*. It is intended to be
14
+ invoked by the agent tool internally as a configured hook handler only,
15
+ and not directly by end users.
16
+
17
+ The handler reads the event payload from standard input, a JSON object
18
+ with the session id (field `session_id`, resp. `sessionId` for *GitHub
19
+ Copilot CLI*) and the working directory (field `cwd`), and performs the
20
+ following steps:
21
+
22
+ 1. It determines the plugin root directory from the environment
23
+ variable `CLAUDE_PLUGIN_ROOT` (`claude`), `COPILOT_PLUGIN_ROOT`
24
+ (`copilot`), resp. `PLUGIN_ROOT` or `CLAUDE_PLUGIN_ROOT` (`codex`),
25
+ and reads the plugin manifest `.claude-plugin/plugin.json` (for the
26
+ plugin version), the constitution `meta/ase-constitution.md`, and the
27
+ output style `output-styles/ase-terse.md` from it.
28
+
29
+ 2. It determines a version hint: a warning on a version mismatch
30
+ between the tool and the plugin, a notice on a newer tool version
31
+ available in the NPM registry (checked in the background at most
32
+ once per hour), and a notice on a development setup (environment
33
+ variable `ASE_SETUP_DEV` set).
34
+
35
+ 3. For `--tool copilot` only, it changes into the project directory
36
+ `cwd` of the payload, as *GitHub Copilot CLI* runs its hooks in the
37
+ plugin installation directory.
38
+
39
+ 4. It removes all session state directories below the *per-user state
40
+ directory*`/session/` (except the one of the current session) which
41
+ were not modified for more than 7 days, i.e., the leftovers of agent
42
+ tool sessions which ended without running `ase hook session-end`.
43
+
44
+ 5. It determines the project directory (the Git top-level directory of
45
+ `cwd`, else `cwd` itself) and, for a valid session id (matching
46
+ `[A-Za-z0-9._-]+`), persists the active task id (`$ASE_TASK_ID`,
47
+ else `default`) and the project directory into the internal session
48
+ state *per-user state directory*`/session/`*id*`/state.yaml`.
49
+
50
+ 6. Inside a *tmux* pane, it sets the per-pane user option
51
+ `@ase_agent_status` to `⏸` (ready).
52
+
53
+ 7. It resolves the session information from the configuration
54
+ cascade (with the scope `session:`*id* for a valid session id):
55
+ the project id (a valid configured `project.id`, else derived from
56
+ the project directory), the user id (`$USER`, else `$LOGNAME`, else
57
+ `unknown`), the persona style `agent.persona`, the guidance level
58
+ `agent.guidance`, the boxing transparency `project.boxing`, the task
59
+ lifecycle model `project.task.lifecycle`, the defaults
60
+ `project.task.default.source`, `project.task.default.changeset`, and
61
+ `project.task.default.target`, the specification base directory
62
+ `project.artifact.spec.basedir`, and the schema configuration
63
+ `project.artifact.spec.schema`.
64
+
65
+ A setting not explicitly configured in any scope falls back to the
66
+ environment variables `ASE_PERSONA_STYLE`, `ASE_GUIDANCE_LEVEL`,
67
+ `ASE_PROJECT_BOXING`, `ASE_PROJECT_TASK_LIFECYCLE`,
68
+ `ASE_PROJECT_TASK_DEFAULT_SOURCE`,
69
+ `ASE_PROJECT_TASK_DEFAULT_CHANGESET`, and
70
+ `ASE_PROJECT_TASK_DEFAULT_TARGET`, and finally to the defaults
71
+ `engineer`, `normal`, `white`, `solo`, `worktree`, `worktree`, and
72
+ `source`.
73
+
74
+ 8. For `--tool claude` only, it appends `export` statements of the
75
+ variables `ASE_VERSION`, `ASE_PLUGIN_ROOT`, `ASE_USER_ID`,
76
+ `ASE_PROJECT_ID`, `ASE_PROJECT_BOXING`, `ASE_PROJECT_TASK_LIFECYCLE`,
77
+ `ASE_PROJECT_TASK_DEFAULT_SOURCE`,
78
+ `ASE_PROJECT_TASK_DEFAULT_CHANGESET`,
79
+ `ASE_PROJECT_TASK_DEFAULT_TARGET`, `ASE_SPEC_BASEDIR`,
80
+ `ASE_SPEC_SCHEMA`, `ASE_TASK_ID`, `ASE_SESSION_ID`, `ASE_HEADLESS`,
81
+ and `ASE_AGENT_TOOL` to the file of the environment variable
82
+ `CLAUDE_ENV_FILE` (if set), so they are available to all shell
83
+ commands of the session.
84
+
85
+ 9. It writes the hook output payload to standard output: the session
86
+ information as XML-style tags (`<ase-version>`, `<ase-version-hint>`,
87
+ `<ase-plugin-root>`, `<ase-persona-style>`, `<ase-guidance-level>`,
88
+ `<ase-user-id>`, `<ase-project-id>`, `<ase-project-boxing>`,
89
+ `<ase-project-task-lifecycle>`,
90
+ `<ase-project-task-default-source>`,
91
+ `<ase-project-task-default-changeset>`,
92
+ `<ase-project-task-default-target>`, `<ase-spec-basedir>`,
93
+ `<ase-spec-schema>`, `<ase-task-id>`, `<ase-session-id>`,
94
+ `<ase-headless>`, and `<ase-agent-tool>`), followed by the
95
+ constitution, with all `@`*file* references expanded recursively
96
+ (relative to the referencing file, `~/` denoting the home
97
+ directory).
98
+
99
+ The persona rules are not part of this output, but are injected
100
+ separately by `ase hook session-persona`, as agent tools like
101
+ *Anthropic Claude Code CLI* show only a preview of a hook output
102
+ beyond 10,000 characters.
103
+
104
+ For `--tool copilot` and `--tool codex` only, the instructions of the
105
+ output style `ase-terse` (with its YAML frontmatter stripped) are
106
+ appended, as these agent tools have no output style concept, whereas
107
+ *Anthropic Claude Code CLI* applies the plugin output style natively.
108
+ The context is emitted as `hookSpecificOutput.additionalContext`
109
+ (`claude` and `codex`), resp. as the top-level field
110
+ `additionalContext` (`copilot`).
111
+
112
+ Additionally, for `claude` and `codex`, unless running headless
113
+ (`ASE_HEADLESS` is `true`) or with guidance level `none`, a
114
+ deterministic *ASE* banner (version, user, project, task, session,
115
+ persona, guidance, and boxing, plus usage hints for guidance level
116
+ `normal` and `verbose`) is emitted as the top-level field
117
+ `systemMessage`.
118
+
119
+ ## OPTIONS
120
+
121
+ - \[`-h`|`--help`\]:
122
+ Show usage information and exit.
123
+
124
+ - \[`-t`|`--tool` *tool*\]:
125
+ The agent tool whose event payload is read and whose hook output
126
+ format is written: `claude` (*Anthropic Claude Code CLI*), `copilot`
127
+ (*GitHub Copilot CLI*), or `codex` (*OpenAI Codex CLI*). Default:
128
+ `$ASE_TOOL`, else `claude`.
129
+
130
+ ## ENVIRONMENT
131
+
132
+ - `CLAUDE_PLUGIN_ROOT`, `COPILOT_PLUGIN_ROOT`, `PLUGIN_ROOT`:
133
+ The plugin root directory, provided by the agent tool. The handler
134
+ fails if the variable of the selected tool is unset or empty.
135
+
136
+ - `CLAUDE_ENV_FILE`:
137
+ The environment file of *Anthropic Claude Code CLI*, receiving the
138
+ exported session information.
139
+
140
+ - `ASE_TOOL`:
141
+ The default of `--tool`.
142
+
143
+ - `ASE_TASK_ID`:
144
+ The active task id of the session (default: `default`).
145
+
146
+ - `ASE_HEADLESS`:
147
+ If `true`, the session runs headless, and no banner is emitted.
148
+
149
+ - `ASE_SETUP_DEV`:
150
+ If set, the version hint notes a development setup.
151
+
152
+ - `ASE_PERSONA_STYLE`, `ASE_GUIDANCE_LEVEL`, `ASE_PROJECT_BOXING`,
153
+ `ASE_PROJECT_TASK_LIFECYCLE`, `ASE_PROJECT_TASK_DEFAULT_SOURCE`,
154
+ `ASE_PROJECT_TASK_DEFAULT_CHANGESET`,
155
+ `ASE_PROJECT_TASK_DEFAULT_TARGET`:
156
+ The fallbacks of the settings not explicitly configured.
157
+
158
+ - `USER`, `LOGNAME`:
159
+ The user id.
160
+
161
+ - `TMUX`, `TMUX_PANE`:
162
+ The *tmux* pane whose user option `@ase_agent_status` is set.
163
+
164
+ ## FILES
165
+
166
+ - *per-user state directory*`/session/`*id*`/state.yaml`:
167
+ The internal session state, holding the active task id and the
168
+ project directory of the session.
169
+
170
+ ## EXIT STATUS
171
+
172
+ Exits with status `0` on success, and with status `1` if the plugin
173
+ root directory cannot be determined, a plugin file cannot be read, or
174
+ `--tool` is invalid.
175
+
176
+ ## SEE ALSO
177
+
178
+ `ase`(1), `ase-hook`(1), `ase-hook-session-persona`(1),
179
+ `ase-hook-session-end`(1), `ase-config`(1),
180
+ `ase-statusline`(1).
181
+
182
+ ## AUTHOR
183
+
184
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,52 @@
1
+ # ase-hook-stop(1) -- Handle the Stop Hook Event
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase hook stop`
6
+ \[`-h`|`--help`\]
7
+ \[`-t`|`--tool` *tool*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase hook stop** handles the `Stop` hook event of *Anthropic Claude
12
+ Code CLI* and *OpenAI Codex CLI*, resp. the `agentStop` hook event of
13
+ *GitHub Copilot CLI*, which the agent tool fires when the agent
14
+ finished responding. It is intended to be invoked by the agent tool
15
+ internally as a configured hook handler only, and not directly by end
16
+ users.
17
+
18
+ The handler reads and discards the event payload on standard input
19
+ and, when running inside a *tmux* pane, sets the per-pane user option
20
+ `@ase_agent_status` to `⏸` (ready), so a *tmux* status line can render
21
+ the live activity of the agent via `#{@ase_agent_status}`. It writes
22
+ nothing to standard output.
23
+
24
+ ## OPTIONS
25
+
26
+ - \[`-h`|`--help`\]:
27
+ Show usage information and exit.
28
+
29
+ - \[`-t`|`--tool` *tool*\]:
30
+ The agent tool which fires the event: `claude`, `copilot`, or
31
+ `codex`. Default: `$ASE_TOOL`, else `claude`.
32
+
33
+ ## ENVIRONMENT
34
+
35
+ - `TMUX`, `TMUX_PANE`:
36
+ The *tmux* pane whose user option `@ase_agent_status` is set (only if
37
+ both are set and non-empty).
38
+
39
+ - `ASE_TOOL`:
40
+ The default of `--tool`.
41
+
42
+ ## EXIT STATUS
43
+
44
+ Exits with status `0`, unless `--tool` is invalid (status `1`).
45
+
46
+ ## SEE ALSO
47
+
48
+ `ase`(1), `ase-hook`(1), `ase-hook-user-prompt-submit`(1), `tmux`(1).
49
+
50
+ ## AUTHOR
51
+
52
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,54 @@
1
+ # ase-hook-user-prompt-submit(1) -- Handle the UserPromptSubmit Hook Event
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase hook user-prompt-submit`
6
+ \[`-h`|`--help`\]
7
+ \[`-t`|`--tool` *tool*\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase hook user-prompt-submit** handles the `UserPromptSubmit` hook
12
+ event of *Anthropic Claude Code CLI* and *OpenAI Codex CLI*, resp. the
13
+ `userPromptSubmitted` hook event of *GitHub Copilot CLI*, which the
14
+ agent tool fires when the user submits a prompt. It is intended to be
15
+ invoked by the agent tool internally as a configured hook handler only,
16
+ and not directly by end users.
17
+
18
+ The handler reads and discards the event payload on standard input
19
+ and, when running inside a *tmux* pane, sets the per-pane user option
20
+ `@ase_agent_status` to `▶` (busy), so a *tmux* status line can render
21
+ the live activity of the agent via `#{@ase_agent_status}`
22
+ (independent of the statusline of the agent tool, which is not
23
+ repainted during the agent processing). It writes nothing to standard
24
+ output.
25
+
26
+ ## OPTIONS
27
+
28
+ - \[`-h`|`--help`\]:
29
+ Show usage information and exit.
30
+
31
+ - \[`-t`|`--tool` *tool*\]:
32
+ The agent tool which fires the event: `claude`, `copilot`, or
33
+ `codex`. Default: `$ASE_TOOL`, else `claude`.
34
+
35
+ ## ENVIRONMENT
36
+
37
+ - `TMUX`, `TMUX_PANE`:
38
+ The *tmux* pane whose user option `@ase_agent_status` is set (only if
39
+ both are set and non-empty).
40
+
41
+ - `ASE_TOOL`:
42
+ The default of `--tool`.
43
+
44
+ ## EXIT STATUS
45
+
46
+ Exits with status `0`, unless `--tool` is invalid (status `1`).
47
+
48
+ ## SEE ALSO
49
+
50
+ `ase`(1), `ase-hook`(1), `ase-hook-stop`(1), `tmux`(1).
51
+
52
+ ## AUTHOR
53
+
54
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,93 @@
1
+ # ase-hook(1) -- Handle the Hook Events of the Agent Tool
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase hook`
6
+ \[`-h`|`--help`\]
7
+
8
+ `ase hook`
9
+ *event*
10
+ \[`-t`|`--tool` *tool*\]
11
+
12
+ ## DESCRIPTION
13
+
14
+ **ase hook** is the entry point group of the hook handlers which the
15
+ *ASE* plugin configures in the agent tool: in `hooks/hooks.json` for
16
+ *Anthropic Claude Code CLI*, in `hooks/hooks-copilot.json` for *GitHub
17
+ Copilot CLI* (with `--tool copilot`), and in `hooks/hooks-codex.json`
18
+ for *OpenAI Codex CLI* (with `--tool codex`). The agent tool invokes a
19
+ handler on the corresponding event, passes the event payload as a JSON
20
+ object on standard input, and interprets the JSON object a handler
21
+ optionally writes to standard output.
22
+
23
+ The handlers are intended to be invoked by the agent tool internally
24
+ only, and not directly by end users. Without a sub-command, the usage
25
+ information is shown and the command exits with status `1`.
26
+
27
+ ## OPTIONS
28
+
29
+ - \[`-h`|`--help`\]:
30
+ Show usage information, including the list of all event handlers,
31
+ and exit.
32
+
33
+ ## COMMANDS
34
+
35
+ The following event handlers exist, each accepting the option
36
+ \[`-t`|`--tool` *tool*\] (`claude`, `copilot`, or `codex`, default:
37
+ `$ASE_TOOL`, else `claude`) to select the agent tool whose payload
38
+ format is read and written:
39
+
40
+ - `ase hook session-start`:
41
+ Handle the `SessionStart` (resp. `sessionStart`) event: inject the
42
+ *ASE* constitution and session information into the session context.
43
+ See `ase-hook-session-start`(1).
44
+
45
+ - `ase hook session-persona`:
46
+ Handle the `SessionStart` (resp. `sessionStart`) event a second time:
47
+ inject the *ASE* persona rules into the session context.
48
+ See `ase-hook-session-persona`(1).
49
+
50
+ - `ase hook session-end`:
51
+ Handle the `SessionEnd` (resp. `sessionEnd`) event: remove the
52
+ session state and detach the session from its AI usage window. See
53
+ `ase-hook-session-end`(1).
54
+
55
+ - `ase hook pre-tool-use`:
56
+ Handle the `PreToolUse` (resp. `preToolUse`) event: auto-approve the
57
+ invocations of *ASE* tools. See `ase-hook-pre-tool-use`(1).
58
+
59
+ - `ase hook permission-request`:
60
+ Handle the `PermissionRequest` event of *OpenAI Codex CLI*:
61
+ auto-approve the invocations of *ASE* tools. See
62
+ `ase-hook-permission-request`(1).
63
+
64
+ - `ase hook user-prompt-submit`:
65
+ Handle the `UserPromptSubmit` (resp. `userPromptSubmitted`) event:
66
+ mark the agent as busy. See `ase-hook-user-prompt-submit`(1).
67
+
68
+ - `ase hook stop`:
69
+ Handle the `Stop` (resp. `agentStop`) event: mark the agent as
70
+ ready. See `ase-hook-stop`(1).
71
+
72
+ ## ENVIRONMENT
73
+
74
+ - `ASE_TOOL`:
75
+ The default of the `--tool` option of all event handlers. An invalid
76
+ value is reported only once a handler actually runs.
77
+
78
+ ## EXIT STATUS
79
+
80
+ Each event handler exits with status `0` on success, and with status
81
+ `1` on an invalid `--tool` value or a fatal error. The group command
82
+ without a sub-command exits with status `1`.
83
+
84
+ ## SEE ALSO
85
+
86
+ `ase`(1), `ase-hook-session-start`(1), `ase-hook-session-persona`(1),
87
+ `ase-hook-session-end`(1),
88
+ `ase-hook-pre-tool-use`(1), `ase-hook-permission-request`(1),
89
+ `ase-hook-user-prompt-submit`(1), `ase-hook-stop`(1), `ase-setup`(1).
90
+
91
+ ## AUTHOR
92
+
93
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,195 @@
1
+ # ase-man(1) -- Browse the internally shipped manual pages
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase man`
6
+ \[`-h`|`--help`\]
7
+ \[`-l`|`--list`\]
8
+ \[*page* \[...\]\]
9
+
10
+ ## DESCRIPTION
11
+
12
+ **ase man** shows the manual pages shipped internally with the **ase**
13
+ tool: the manual pages of all **ase** commands *and* the manual pages
14
+ of all **ASE** skills of the bundled agent tool plugin.
15
+
16
+ The manual pages of the commands are shipped as Markdown in the
17
+ directory `dst/man/` of the tool package. There is one manual page per
18
+ command and command group, named after the command path with dashes,
19
+ e.g., `ase-task`(1) for `ase task` and `ase-agent-fleet`(1) for `ase
20
+ agent fleet`. The commands of the third level (e.g. `ase task store
21
+ start`) are covered by the manual page of their group (e.g.
22
+ `ase-task-store`(1)).
23
+
24
+ On a terminal (and without `--list`), **ase man** opens the
25
+ interactive, full-screen *manual page browser*. If standard input or
26
+ standard output is not a terminal, it instead prints the manual page
27
+ *page* (or `ase`(1)) as plain text, wrapped to 80 columns, onto
28
+ standard output. The browser consists of two pages:
29
+
30
+ - The *start page* shows a search field on top of a catalog of all AI
31
+ skills and all CLI commands, grouped like the catalog of the website
32
+ and laid out in up to five columns, depending on the terminal width
33
+ (reduced to the matching manual pages while a search is active).
34
+ Selecting a manual page or submitting a search opens the browser page.
35
+ The browser starts on the start page if no *page* is given.
36
+
37
+ - The *browser page* shows the master on the left, with the search
38
+ field on top of the grouped list of all manual pages (reduced to the
39
+ matching manual pages while a search is active), and the detail on
40
+ the right, with the selected manual page as rendered and
41
+ syntax-highlighted Markdown (with the matches of an active search
42
+ highlighted). References to other manual pages within the detail,
43
+ like `ase-task`(1) or `ase-task-edit`, can be followed. The browser
44
+ starts on the browser page if a *page* is given: with the manual page
45
+ fitting exactly onto *page* selected, else with *page* as the search.
46
+
47
+ A search consists of whitespace-separated keywords, which *all* have to
48
+ occur (case-insensitively) in a manual page. Only if no manual page
49
+ matches the keywords literally, they are matched fuzzily against the
50
+ words of the manual pages, so a misspelled keyword still finds its
51
+ manual pages. On both pages, the catalog resp. the master is filtered
52
+ live while typing, and the header shows the counts of the matching
53
+ manual pages.
54
+
55
+ ## OPTIONS
56
+
57
+ - \[`-h`|`--help`\]:
58
+ Show program usage information only.
59
+
60
+ - \[`-l`|`--list`\]:
61
+ Instead of showing a manual page, list the names of all shipped
62
+ manual pages of the commands, one per line, in natural order. Any
63
+ *page* is ignored.
64
+
65
+ ## ARGUMENTS
66
+
67
+ - \[*page* \[...\]\]:
68
+ The manual page to show (default: the start page of the interactive
69
+ manual page browser on a terminal, else `ase`). It is given either by
70
+ its name (e.g. `ase-agent-fleet` or `ase-task-edit`) or by the words
71
+ of the command path (e.g. `agent fleet`), which are joined with
72
+ dashes, where the leading `ase` is optional and the name is
73
+ case-insensitive.
74
+
75
+ In the manual page browser, the manual page fitting exactly onto
76
+ *page* is selected. Of a skill and a command of the same name (e.g.
77
+ `ase-task-edit` and `ase-task-edit`(1)), a single name with dashes
78
+ (e.g. `task-edit`) selects the skill, while the words of a command
79
+ path (e.g. `task edit`) select the command. If no manual page fits
80
+ exactly, the words of *page* are
81
+ placed into the search field instead, so the master shows only the
82
+ matching manual pages, with the first of them selected.
83
+
84
+ When printed as plain text, the manual page fitting exactly onto
85
+ *page* is printed likewise. If no manual page fits exactly, a command
86
+ path deeper than the shipped manual pages (e.g. `task store start`)
87
+ falls back to the manual page of its nearest parent group (e.g.
88
+ `ase-task-store`), but never to the top-level page `ase`(1), and a
89
+ *page* consisting of anything other than letters, digits, and dashes
90
+ is refused.
91
+
92
+ ## KEYS
93
+
94
+ The following keys and mouse actions are supported by the interactive
95
+ manual page browser.
96
+
97
+ ### Start Page
98
+
99
+ - `Up`, `Down`, `Left`, `Right`: Select the manual page above, below,
100
+ left, or right of the selected one in the catalog (at the end of a
101
+ column, `Up` and `Down` continue in the nearest other column).
102
+ - `Home`, `End`: Select the first or last manual page of the catalog
103
+ (not within the search field).
104
+ - `Return`: Open the selected manual page on the browser page (keeping
105
+ an active search).
106
+ - `/`: Enter the search field, whose search filters the catalog live.
107
+ Within it, `Return` submits the search (opening the browser page
108
+ with the selected, i.e. initially the first, matching manual page),
109
+ `Left`, `Right`, `Home`, and `End` move the cursor, `Backspace` and
110
+ `Delete` delete the character before resp. at the cursor, and
111
+ `Escape` leaves the search field again.
112
+ - `Escape`: Clear a non-empty search (not within the search field).
113
+ - `q`, `Ctrl`+`C`: Quit (`q` not within the search field).
114
+ - Left-Click: Open the clicked manual page (keeping an active search),
115
+ resp. enter the clicked search field (clearing the search on its
116
+ trailing `✕` symbol).
117
+ - Wheel: Select the manual page above or below the selected one.
118
+
119
+ ### Browser Page
120
+
121
+ - `Up`, `Down`: Select the previous or next manual page of the master,
122
+ resp. the previous or next reference within the detail (while a
123
+ reference is selected).
124
+ - `Right`, `Left`: Enter the references of the detail (selecting the
125
+ first shown reference), resp. leave them again towards the master.
126
+ - `Page Up`, `Page Down`, `Space`: Scroll the detail by a page
127
+ (`Space` not within the search field).
128
+ - `Home`, `End`: Scroll the detail to its top or bottom (not within
129
+ the search field).
130
+ - `Tab`, `Shift`+`Tab`: Select the next or previous reference to
131
+ another manual page within the detail.
132
+ - `Return`: Follow the selected reference (leaving a search the
133
+ referenced manual page does not match), resp. leave the search
134
+ field.
135
+ - `/`: Enter the search field, whose search filters the master live.
136
+ Within it, `Left`, `Right`, `Home`, and `End` move the cursor, and
137
+ `Backspace` and `Delete` delete the character before resp. at the
138
+ cursor.
139
+ - `Escape`: Step back: first clear a non-empty search, then leave the
140
+ search field, and finally return to the start page.
141
+ - `q`, `Ctrl`+`C`: Quit (`q` not within the search field).
142
+ - Left-Click: Select the clicked manual page of the master, follow the
143
+ clicked reference of the detail, resp. enter the clicked search field
144
+ (clearing the search on its trailing `✕` symbol).
145
+ - Wheel: Select the previous or next manual page (over the master),
146
+ resp. scroll the detail (over the detail).
147
+
148
+ ## FILES
149
+
150
+ - *package directory*`/dst/man/ase{,-`*command*`{,-`*sub-command*`}}.md`:
151
+ The internally shipped manual pages of the commands.
152
+
153
+ - *package directory*`/plugin/skills/`*skill*`/help.md`:
154
+ The manual pages of the skills of the bundled agent tool plugin.
155
+
156
+ ## EXIT STATUS
157
+
158
+ The command exits with status `0` on success, and with status `1` if
159
+ no manual page is found for *page* when printing it as plain text.
160
+
161
+ ## EXAMPLES
162
+
163
+ ```sh
164
+ # browse all manual pages of the commands and skills interactively
165
+ $ ase man
166
+
167
+ # show the manual page of the "ase" command itself
168
+ $ ase man ase
169
+
170
+ # show the manual page of "ase agent fleet" (all equivalent, as no skill has this name)
171
+ $ ase man ase-agent-fleet
172
+ $ ase man agent-fleet
173
+ $ ase man agent fleet
174
+
175
+ # show the manual page of the skill "ase-task-edit" resp. of "ase task edit"
176
+ $ ase man task-edit
177
+ $ ase man task edit
178
+
179
+ # browse the manual pages matching the keywords "worktree" and "merge"
180
+ $ ase man worktree merge
181
+
182
+ # print the manual page covering "ase task store start" as plain text
183
+ $ ase man task store start | less
184
+
185
+ # list all shipped manual pages of the commands
186
+ $ ase man --list
187
+ ```
188
+
189
+ ## SEE ALSO
190
+
191
+ `ase`(1).
192
+
193
+ ## AUTHOR
194
+
195
+ Dr. Ralf S. Engelschall <rse@engelschall.com>