@rse/ase 2.0.3 → 2.0.5

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 (198) hide show
  1. package/dst/ase-hook.js +13 -4
  2. package/dst/ase-lib-version.js +14 -5
  3. package/dst/ase-man-catalog.js +229 -0
  4. package/dst/ase-man-render.js +278 -0
  5. package/dst/ase-man-tui.js +636 -0
  6. package/dst/ase-man.js +33 -27
  7. package/dst/ase-setup.js +2 -2
  8. package/dst/ase-spec.js +103 -20
  9. package/dst/ase-task-board-filter.js +5 -4
  10. package/dst/ase-task-board-web-client.js +26 -26
  11. package/dst/man/ase-agent-adhoc.md +1165 -0
  12. package/dst/man/ase-agent-condenser.md +383 -0
  13. package/dst/man/ase-agent-editor.md +441 -0
  14. package/dst/man/ase-agent-estimator.md +477 -0
  15. package/dst/man/ase-agent-fleet.md +358 -0
  16. package/dst/man/ase-agent-implementer.md +521 -0
  17. package/dst/man/ase-agent-integrator.md +449 -0
  18. package/dst/man/ase-agent-qualifier.md +426 -0
  19. package/dst/man/ase-agent-rebooter.md +384 -0
  20. package/dst/man/ase-agent-relay.md +262 -0
  21. package/dst/man/ase-agent-researcher.md +478 -0
  22. package/dst/man/ase-agent.md +628 -0
  23. package/dst/man/ase-artifact-list.md +57 -0
  24. package/dst/man/ase-artifact-name.md +56 -0
  25. package/dst/man/ase-artifact.md +92 -0
  26. package/dst/man/ase-config-delete.md +74 -0
  27. package/dst/man/ase-config-edit.md +83 -0
  28. package/dst/man/ase-config-get.md +70 -0
  29. package/dst/man/ase-config-init.md +110 -0
  30. package/dst/man/ase-config-list.md +68 -0
  31. package/dst/man/ase-config-set.md +92 -0
  32. package/dst/man/ase-config.md +426 -0
  33. package/dst/man/ase-hook-permission-request.md +61 -0
  34. package/dst/man/ase-hook-pre-tool-use.md +96 -0
  35. package/dst/man/ase-hook-session-end.md +71 -0
  36. package/dst/man/ase-hook-session-persona.md +65 -0
  37. package/dst/man/ase-hook-session-start.md +184 -0
  38. package/dst/man/ase-hook-stop.md +52 -0
  39. package/dst/man/ase-hook-user-prompt-submit.md +54 -0
  40. package/dst/man/ase-hook.md +93 -0
  41. package/dst/man/ase-man.md +195 -0
  42. package/dst/man/ase-mcp.md +102 -0
  43. package/dst/man/ase-service-log.md +59 -0
  44. package/dst/man/ase-service-send.md +60 -0
  45. package/dst/man/ase-service-start.md +93 -0
  46. package/dst/man/ase-service-status.md +58 -0
  47. package/dst/man/ase-service-stop.md +52 -0
  48. package/dst/man/ase-service.md +124 -0
  49. package/dst/man/ase-setup-disable.md +67 -0
  50. package/dst/man/ase-setup-enable.md +66 -0
  51. package/dst/man/ase-setup-install.md +116 -0
  52. package/dst/man/ase-setup-mcp.md +213 -0
  53. package/dst/man/ase-setup-status.md +101 -0
  54. package/dst/man/ase-setup-statusline.md +162 -0
  55. package/dst/man/ase-setup-telemetry.md +166 -0
  56. package/dst/man/ase-setup-uninstall.md +85 -0
  57. package/dst/man/ase-setup-update.md +117 -0
  58. package/dst/man/ase-setup.md +156 -0
  59. package/dst/man/ase-spec-export.md +99 -0
  60. package/dst/man/ase-spec-init.md +57 -0
  61. package/dst/man/ase-spec-lint.md +74 -0
  62. package/dst/man/ase-spec-preview.md +57 -0
  63. package/dst/man/ase-spec.md +85 -0
  64. package/dst/man/ase-statusline.md +330 -0
  65. package/dst/man/ase-task-assign.md +138 -0
  66. package/dst/man/ase-task-board.md +651 -0
  67. package/dst/man/ase-task-delete.md +46 -0
  68. package/dst/man/ase-task-edit.md +73 -0
  69. package/dst/man/ase-task-idscheme.md +92 -0
  70. package/dst/man/ase-task-lifecycle.md +92 -0
  71. package/dst/man/ase-task-list.md +86 -0
  72. package/dst/man/ase-task-load.md +48 -0
  73. package/dst/man/ase-task-newid.md +100 -0
  74. package/dst/man/ase-task-purge.md +49 -0
  75. package/dst/man/ase-task-rename.md +69 -0
  76. package/dst/man/ase-task-request.md +108 -0
  77. package/dst/man/ase-task-save.md +78 -0
  78. package/dst/man/ase-task-status.md +79 -0
  79. package/dst/man/ase-task-store.md +377 -0
  80. package/dst/man/ase-task-view.md +50 -0
  81. package/dst/man/ase-task.md +335 -0
  82. package/dst/man/ase-util-compat.md +38 -0
  83. package/dst/man/ase-util-diagram.md +140 -0
  84. package/dst/man/ase-util-meta.md +68 -0
  85. package/dst/man/ase-util-metric.md +74 -0
  86. package/dst/man/ase-util-mint.md +85 -0
  87. package/dst/man/ase-util-worktree.md +109 -0
  88. package/dst/man/ase-util.md +81 -0
  89. package/dst/man/ase.md +228 -0
  90. package/package.json +16 -21
  91. package/plugin/.claude-plugin/plugin.json +1 -1
  92. package/plugin/.codex-plugin/plugin.json +1 -1
  93. package/plugin/.github/plugin/plugin.json +1 -1
  94. package/plugin/agents/ase-code-lint.md +3 -3
  95. package/plugin/agents/ase-docs-proofread.md +3 -3
  96. package/plugin/agents/ase-docs-refine.md +3 -3
  97. package/plugin/agents/ase-spec-lint.md +338 -0
  98. package/plugin/mods/ase-mods-common.ts +444 -0
  99. package/plugin/mods/ase-mods-grill.ts +312 -0
  100. package/plugin/mods/ase-mods-help-browse.ts +405 -0
  101. package/plugin/mods/ase-mods-help-compose.ts +561 -0
  102. package/plugin/mods/ase-mods-help-find.ts +426 -0
  103. package/plugin/mods/ase-mods-help-hint.ts +134 -0
  104. package/plugin/mods/ase-mods-help-show.ts +142 -0
  105. package/plugin/mods/ase-mods.ts +214 -381
  106. package/plugin/mods/claude-code.d.ts +26 -3
  107. package/plugin/skills/ase-code-lint/SKILL.md +15 -15
  108. package/plugin/skills/ase-code-lint/help.md +21 -8
  109. package/plugin/skills/ase-help-intent/SKILL.md +2 -1
  110. package/plugin/skills/ase-help-intent/data.md +214 -9
  111. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  112. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  113. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  114. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  115. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  116. package/plugin/skills/ase-spec-edit/help.md +1 -1
  117. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  118. package/plugin/skills/ase-spec-lint/help.md +184 -0
  119. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  120. package/plugin/skills/ase-task-implement/help.md +11 -1
  121. package/dst/man/ase-agent-adhoc.1 +0 -515
  122. package/dst/man/ase-agent-condenser.1 +0 -193
  123. package/dst/man/ase-agent-editor.1 +0 -212
  124. package/dst/man/ase-agent-estimator.1 +0 -214
  125. package/dst/man/ase-agent-fleet.1 +0 -185
  126. package/dst/man/ase-agent-implementer.1 +0 -233
  127. package/dst/man/ase-agent-integrator.1 +0 -213
  128. package/dst/man/ase-agent-qualifier.1 +0 -214
  129. package/dst/man/ase-agent-rebooter.1 +0 -193
  130. package/dst/man/ase-agent-relay.1 +0 -128
  131. package/dst/man/ase-agent-researcher.1 +0 -217
  132. package/dst/man/ase-agent.1 +0 -264
  133. package/dst/man/ase-artifact-list.1 +0 -38
  134. package/dst/man/ase-artifact-name.1 +0 -39
  135. package/dst/man/ase-artifact.1 +0 -56
  136. package/dst/man/ase-config-delete.1 +0 -45
  137. package/dst/man/ase-config-edit.1 +0 -48
  138. package/dst/man/ase-config-get.1 +0 -46
  139. package/dst/man/ase-config-init.1 +0 -60
  140. package/dst/man/ase-config-list.1 +0 -42
  141. package/dst/man/ase-config-set.1 +0 -52
  142. package/dst/man/ase-config.1 +0 -231
  143. package/dst/man/ase-hook-permission-request.1 +0 -36
  144. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  145. package/dst/man/ase-hook-session-end.1 +0 -47
  146. package/dst/man/ase-hook-session-persona.1 +0 -37
  147. package/dst/man/ase-hook-session-start.1 +0 -81
  148. package/dst/man/ase-hook-stop.1 +0 -34
  149. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  150. package/dst/man/ase-hook.1 +0 -51
  151. package/dst/man/ase-man.1 +0 -67
  152. package/dst/man/ase-mcp.1 +0 -61
  153. package/dst/man/ase-service-log.1 +0 -43
  154. package/dst/man/ase-service-send.1 +0 -47
  155. package/dst/man/ase-service-start.1 +0 -54
  156. package/dst/man/ase-service-status.1 +0 -46
  157. package/dst/man/ase-service-stop.1 +0 -37
  158. package/dst/man/ase-service.1 +0 -85
  159. package/dst/man/ase-setup-disable.1 +0 -44
  160. package/dst/man/ase-setup-enable.1 +0 -45
  161. package/dst/man/ase-setup-install.1 +0 -73
  162. package/dst/man/ase-setup-mcp.1 +0 -124
  163. package/dst/man/ase-setup-status.1 +0 -60
  164. package/dst/man/ase-setup-statusline.1 +0 -92
  165. package/dst/man/ase-setup-telemetry.1 +0 -92
  166. package/dst/man/ase-setup-uninstall.1 +0 -59
  167. package/dst/man/ase-setup-update.1 +0 -64
  168. package/dst/man/ase-setup.1 +0 -93
  169. package/dst/man/ase-spec-export.1 +0 -62
  170. package/dst/man/ase-spec-lint.1 +0 -40
  171. package/dst/man/ase-spec-preview.1 +0 -40
  172. package/dst/man/ase-spec.1 +0 -46
  173. package/dst/man/ase-statusline.1 +0 -189
  174. package/dst/man/ase-task-assign.1 +0 -71
  175. package/dst/man/ase-task-board.1 +0 -384
  176. package/dst/man/ase-task-delete.1 +0 -35
  177. package/dst/man/ase-task-edit.1 +0 -46
  178. package/dst/man/ase-task-idscheme.1 +0 -65
  179. package/dst/man/ase-task-lifecycle.1 +0 -57
  180. package/dst/man/ase-task-list.1 +0 -47
  181. package/dst/man/ase-task-load.1 +0 -36
  182. package/dst/man/ase-task-newid.1 +0 -61
  183. package/dst/man/ase-task-purge.1 +0 -37
  184. package/dst/man/ase-task-rename.1 +0 -44
  185. package/dst/man/ase-task-request.1 +0 -61
  186. package/dst/man/ase-task-save.1 +0 -48
  187. package/dst/man/ase-task-status.1 +0 -55
  188. package/dst/man/ase-task-store.1 +0 -194
  189. package/dst/man/ase-task-view.1 +0 -40
  190. package/dst/man/ase-task.1 +0 -160
  191. package/dst/man/ase-util-compat.1 +0 -25
  192. package/dst/man/ase-util-diagram.1 +0 -76
  193. package/dst/man/ase-util-meta.1 +0 -45
  194. package/dst/man/ase-util-metric.1 +0 -54
  195. package/dst/man/ase-util-mint.1 +0 -59
  196. package/dst/man/ase-util-worktree.1 +0 -72
  197. package/dst/man/ase-util.1 +0 -50
  198. package/dst/man/ase.1 +0 -124
@@ -0,0 +1,102 @@
1
+ # ase-mcp(1) -- Bridge Stdio MCP to the Per-Project Service
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase mcp`
6
+ \[`-h`|`--help`\]
7
+
8
+ ## DESCRIPTION
9
+
10
+ **ase mcp** is a Model-Context-Protocol (MCP) server speaking the
11
+ stdio transport: it accepts MCP messages on standard input, forwards
12
+ them to the per-project background service of `ase-service`(1) via the
13
+ Streamable HTTP transport (`http://127.0.0.1:`*port*`/mcp`), and writes
14
+ the responses to standard output.
15
+
16
+ It is configured as the stdio MCP server `ase` of the *ASE* plugin in
17
+ the agent tool and is not intended to be invoked directly by end users.
18
+ All log messages go to standard error (or to the file of the global
19
+ `--log-file` option), as standard output carries the MCP protocol.
20
+
21
+ On start, the service of the project is probed and auto-started (via
22
+ `ase service start`) if it is not running yet. The bridge then lives as
23
+ long as its standard input is open, and is robust against a vanishing
24
+ service:
25
+
26
+ - Messages arriving while no service connection exists are buffered
27
+ (up to 100 messages, dropping the oldest ones on overflow) and sent
28
+ once the connection is (re-)established.
29
+
30
+ - On a lost or refused connection, the service is auto-started again
31
+ and the connection is re-established, with a delay growing from 0.5
32
+ up to 10 seconds between the attempts.
33
+
34
+ - Every 30 seconds, the service is probed, and a vanished service
35
+ triggers the same reconnect.
36
+
37
+ Under *GitHub Copilot CLI* (detected by the environment variable
38
+ `COPILOT_PLUGIN_ROOT`), the MCP server is started in the plugin
39
+ installation directory instead of the project. Hence, the bridge first
40
+ answers all MCP messages in-process through the same set of MCP tools
41
+ the service provides (covering the MCP handshake and the tool listing),
42
+ holds back all tool calls, and waits until the `SessionStart` hook (see
43
+ `ase-hook`(1)) recorded the project directory of the session (with id
44
+ `COPILOT_AGENT_SESSION_ID`).
45
+
46
+ It then switches into this directory, starts or connects the service
47
+ of the project there, and forwards the held tool calls. If no project
48
+ directory is recorded within 30 seconds of the first held tool call, it
49
+ falls back to the current directory.
50
+
51
+ The service provides the `ase_*` MCP tools of the skills, e.g.,
52
+ `ase_ping`, `ase_config_get`, `ase_config_set`, `ase_config_delete`,
53
+ `ase_config_list`, `ase_state_get`, `ase_state_set`,
54
+ `ase_state_delete`, `ase_kv_get`, `ase_kv_set`, `ase_kv_delete`,
55
+ `ase_kv_clear`, `ase_kv_batch`, the `ase_task_*` tools, `ase_artifact_list`,
56
+ `ase_artifact_name`, `ase_specbook_lint`, `ase_specbook_export`,
57
+ `ase_diagram`, `ase_worktree_path`, `ase_mint`, `ase_text_metric`,
58
+ `ase_getopt`, `ase_markdown_prepare`, `ase_timestamp`, `ase_sleep`,
59
+ `ase_compat`, `ase_component_info`, and `ase_decision_matrix`.
60
+
61
+ ## OPTIONS
62
+
63
+ - \[`-h`|`--help`\]:
64
+ Show usage information and exit.
65
+
66
+ ## ENVIRONMENT
67
+
68
+ - `COPILOT_PLUGIN_ROOT`, `COPILOT_AGENT_SESSION_ID`:
69
+ Exported by *GitHub Copilot CLI* to its MCP servers. When both are
70
+ set (and the session id matches `[A-Za-z0-9._-]+`), the service is
71
+ deferred until the project directory of the session is known (see
72
+ **DESCRIPTION**).
73
+
74
+ ## FILES
75
+
76
+ - `.ase/service.yaml`:
77
+ The persisted port of the per-project service.
78
+
79
+ - *per-user state directory*`/session/`*id*`/state.yaml`:
80
+ The internal session state, from which the project directory
81
+ (`basedir`) recorded by the `SessionStart` hook is read under *GitHub
82
+ Copilot CLI*.
83
+
84
+ ## EXIT STATUS
85
+
86
+ `0` once standard input is closed, `1` if the service cannot be
87
+ started initially.
88
+
89
+ ## EXAMPLES
90
+
91
+ ```sh
92
+ # register the bridge manually as an MCP server in Claude Code
93
+ $ claude mcp add ase -- ase mcp
94
+ ```
95
+
96
+ ## SEE ALSO
97
+
98
+ `ase`(1), `ase-service`(1), `ase-hook`(1), `ase-setup`(1).
99
+
100
+ ## AUTHOR
101
+
102
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,59 @@
1
+ # ase-service-log(1) -- Show the Log of the Background Service
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase service log`
6
+ \[`-h`|`--help`\]
7
+ \[`-f`|`--follow`\]
8
+ \[`-n`|`--lines` *n*\]
9
+
10
+ ## DESCRIPTION
11
+
12
+ **ase service log** shows the log file `.ase/service.log` of the
13
+ per-project background service of *ASE* (see `ase-service`(1)) on
14
+ standard output: by default the entire file, else its last lines
15
+ only. If no log file exists, nothing is shown and the command exits
16
+ with status `0`.
17
+
18
+ ## OPTIONS
19
+
20
+ - \[`-h`|`--help`\]:
21
+ Show usage information and exit.
22
+
23
+ - \[`-f`|`--follow`\]:
24
+ After showing the last *n* lines (default: `10`), keep following the
25
+ file in the style of `tail -f` and show all newly appended lines,
26
+ until interrupted (e.g., via `CTRL+C`), even once the service has
27
+ stopped. When the log is trimmed on a service start, following
28
+ continues at the new end of the file.
29
+
30
+ - \[`-n`|`--lines` *n*\]:
31
+ Show the last *n* non-empty lines only, where *n* has to be a
32
+ positive integer (default: all lines, or `10` with `--follow`).
33
+
34
+ ## FILES
35
+
36
+ - `.ase/service.log`:
37
+ The log of the detached service.
38
+
39
+ ## EXIT STATUS
40
+
41
+ `0` on success, `1` on an invalid *n* or an unreadable log file.
42
+
43
+ ## EXAMPLES
44
+
45
+ ```sh
46
+ # show the last 50 log lines
47
+ $ ase service log -n 50
48
+
49
+ # follow the log
50
+ $ ase service log -f
51
+ ```
52
+
53
+ ## SEE ALSO
54
+
55
+ `ase`(1), `ase-service`(1), `ase-service-start`(1), `tail`(1).
56
+
57
+ ## AUTHOR
58
+
59
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,60 @@
1
+ # ase-service-send(1) -- Send a Command to the Background Service
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase service send`
6
+ \[`-h`|`--help`\]
7
+ *cmd*
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase service send** dispatches the command token *cmd* to the
12
+ per-project background service of *ASE* (see `ase-service`(1)) via an
13
+ HTTP `POST /command` request with the JSON body `{ "command":` *cmd*
14
+ `}`, and prints the raw response body (a JSON object) on standard
15
+ output. If the service is not running, it is auto-started first (like
16
+ `ase service start`).
17
+
18
+ ## OPTIONS
19
+
20
+ - \[`-h`|`--help`\]:
21
+ Show usage information and exit.
22
+
23
+ ## ARGUMENTS
24
+
25
+ - *cmd*:
26
+ The command token to dispatch. The service currently understands:
27
+
28
+ - `ping`:
29
+ Answer with `{"ok":true,"pong":true}`.
30
+ - `status`:
31
+ Answer with the service identity, i.e., `ok`, the project id
32
+ `projectId`, the `port`, and the uptime `uptimeMs` in
33
+ milliseconds.
34
+
35
+ Any other token is answered with an `unknown command` error (HTTP
36
+ status `400`).
37
+
38
+ ## EXIT STATUS
39
+
40
+ `0` if the service answered with a success status, `1` if it answered
41
+ with an error status (e.g., for an unknown *cmd*), or if it could not
42
+ be started or reached.
43
+
44
+ ## EXAMPLES
45
+
46
+ ```sh
47
+ $ ase service send ping
48
+ {"ok":true,"pong":true}
49
+
50
+ $ ase service send status
51
+ {"ok":true,"projectId":"ase","port":42817,"uptimeMs":723456}
52
+ ```
53
+
54
+ ## SEE ALSO
55
+
56
+ `ase`(1), `ase-service`(1), `ase-service-status`(1).
57
+
58
+ ## AUTHOR
59
+
60
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,93 @@
1
+ # ase-service-start(1) -- Start the Per-Project Background Service
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase service start`
6
+ \[`-h`|`--help`\]
7
+ \[`-f`|`--foreground`\]
8
+
9
+ ## DESCRIPTION
10
+
11
+ **ase service start** starts the per-project background HTTP service
12
+ of *ASE* (see `ase-service`(1)) for the project of the current working
13
+ directory.
14
+
15
+ If a service of this project already answers on the port persisted in
16
+ `.ase/service.yaml`, the command just reports `service: already running
17
+ on port` *port* and exits with status `0`. Otherwise, it allocates the
18
+ preferred port `project.service.port` (see `ase-config`(1)), if
19
+ configured and free, else (with a warning, if configured) a fresh
20
+ random free port out of the range `42000`..`44000` (trying up to 20
21
+ candidates), spawns the service as a detached background process
22
+ (with its standard output and standard error appended to
23
+ `.ase/service.log`, trimmed to its last 2000 lines beforehand if larger
24
+ than 1 MB), and probes its readiness for up to 5 seconds.
25
+
26
+ Once ready, the service persists its port into `.ase/service.yaml`,
27
+ and the command reports `service: started on port` *port*. If the
28
+ spawned service exits during its startup, does not become ready in
29
+ time, or loses its port to a foreign listener, the attempt is aborted
30
+ (killing the process) and retried with a new port, up to three attempts
31
+ in total, after which the command fails with the reason and the last
32
+ 20 lines of the log.
33
+
34
+ The detached service adopts the log level of the global `--log-level`
35
+ option of this command, e.g., `ase --log-level debug service start`
36
+ logs the full MCP traffic. It stops itself after 30 minutes without any
37
+ request (but never while a request is in flight or while it holds open
38
+ AI usage windows), on `ase service stop`, and removes its port from
39
+ `.ase/service.yaml` again.
40
+
41
+ Usually, the service does not have to be started explicitly, as the
42
+ MCP bridge `ase mcp`, `ase service send`, and the hooks start it on
43
+ demand.
44
+
45
+ ## OPTIONS
46
+
47
+ - \[`-h`|`--help`\]:
48
+ Show usage information and exit.
49
+
50
+ - \[`-f`|`--foreground`\]:
51
+ Run the service in the current process instead, on a port allocated
52
+ as above, logging to the terminal (resp. the global `--log-file`) instead
53
+ of `.ase/service.log` and without the idle timeout, until it is
54
+ interrupted (via `SIGINT`, e.g., `CTRL+C`, `SIGTERM`, `SIGHUP`, or
55
+ `SIGQUIT`) or stopped via `ase service stop`. A service of this
56
+ project already running is an error in this mode.
57
+
58
+ ## FILES
59
+
60
+ - `.ase/service.yaml`:
61
+ The persisted port of the running service.
62
+
63
+ - `.ase/service.log`:
64
+ The log of the detached service.
65
+
66
+ - `.ase/.gitignore`:
67
+ The self-ignoring Git ignore file covering the machine-local runtime
68
+ files, created if missing.
69
+
70
+ ## EXIT STATUS
71
+
72
+ `0` if the service was started or is already running (resp., in the
73
+ foreground, once it was stopped), `1` if it could not be started, or,
74
+ with `--foreground`, if it is already running.
75
+
76
+ ## EXAMPLES
77
+
78
+ ```sh
79
+ # start the service in the background
80
+ $ ase service start
81
+
82
+ # run the service in the foreground for debugging
83
+ $ ase --log-level debug service start --foreground
84
+ ```
85
+
86
+ ## SEE ALSO
87
+
88
+ `ase`(1), `ase-service`(1), `ase-service-status`(1),
89
+ `ase-service-stop`(1), `ase-service-log`(1), `ase-config`(1).
90
+
91
+ ## AUTHOR
92
+
93
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,58 @@
1
+ # ase-service-status(1) -- Report Whether the Background Service Is Running
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase service status`
6
+ \[`-h`|`--help`\]
7
+
8
+ ## DESCRIPTION
9
+
10
+ **ase service status** reports whether the per-project background
11
+ service of *ASE* (see `ase-service`(1)) is running. It probes the port
12
+ persisted in `.ase/service.yaml` via an HTTP `OPTIONS /` request and
13
+ verifies that the responding service belongs to the current project
14
+ (by its project id). It prints one of the following lines on standard
15
+ output:
16
+
17
+ - `service: running on port` *port* `(uptime:` *duration*`)`:
18
+ A service of this project is running.
19
+
20
+ - `service: not running (no port configured)`:
21
+ No port is persisted in `.ase/service.yaml`.
22
+
23
+ - `service: not running (port` *port* `not responding)`:
24
+ Nothing listens on the persisted port.
25
+
26
+ - `service: not running (port` *port* `in use by foreign service)`:
27
+ The persisted port is answered by something else, e.g., the service
28
+ of another project.
29
+
30
+ ## OPTIONS
31
+
32
+ - \[`-h`|`--help`\]:
33
+ Show usage information and exit.
34
+
35
+ ## FILES
36
+
37
+ - `.ase/service.yaml`:
38
+ The persisted port of the service.
39
+
40
+ ## EXIT STATUS
41
+
42
+ `0` if the service of the project is running, else `1`.
43
+
44
+ ## EXAMPLES
45
+
46
+ ```sh
47
+ $ ase service status
48
+ service: running on port 42817 (uptime: 12 minutes 3.4 seconds)
49
+ ```
50
+
51
+ ## SEE ALSO
52
+
53
+ `ase`(1), `ase-service`(1), `ase-service-start`(1),
54
+ `ase-service-stop`(1).
55
+
56
+ ## AUTHOR
57
+
58
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,52 @@
1
+ # ase-service-stop(1) -- Stop the Background Service
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase service stop`
6
+ \[`-h`|`--help`\]
7
+
8
+ ## DESCRIPTION
9
+
10
+ **ase service stop** stops the per-project background service of
11
+ *ASE* (see `ase-service`(1)) via an HTTP `POST /stop` request to the
12
+ port persisted in `.ase/service.yaml`, and removes the persisted port
13
+ (and the file, if it becomes empty). This also stops a service running
14
+ in the foreground via `ase service start --foreground`. On stop, the
15
+ service persists the journal of its AI usage windows, so no usage is
16
+ lost.
17
+
18
+ If no port is persisted, or nothing listens on the persisted port, an
19
+ informational message is logged, a stale port is removed, and the
20
+ command exits with status `0`. If the persisted port is answered by a
21
+ foreign service (e.g., the service of another project), it is left
22
+ alone and the command exits with status `1`.
23
+
24
+ ## OPTIONS
25
+
26
+ - \[`-h`|`--help`\]:
27
+ Show usage information and exit.
28
+
29
+ ## FILES
30
+
31
+ - `.ase/service.yaml`:
32
+ The persisted port of the service, cleared on stop.
33
+
34
+ ## EXIT STATUS
35
+
36
+ `0` if the service was stopped or was not running, `1` if the port is
37
+ in use by a foreign service or the stop request failed.
38
+
39
+ ## EXAMPLES
40
+
41
+ ```sh
42
+ $ ase service stop
43
+ ```
44
+
45
+ ## SEE ALSO
46
+
47
+ `ase`(1), `ase-service`(1), `ase-service-start`(1),
48
+ `ase-service-status`(1).
49
+
50
+ ## AUTHOR
51
+
52
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,124 @@
1
+ # ase-service(1) -- Manage the Per-Project Background Service
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase service`
6
+ \[`-h`|`--help`\]
7
+ *command*
8
+ \[*options* \[...\]\]
9
+ \[*args* \[...\]\]
10
+
11
+ `ase service start` \[`-f`|`--foreground`\]
12
+
13
+ `ase service status`
14
+
15
+ `ase service send` *cmd*
16
+
17
+ `ase service log` \[`-f`|`--follow`\] \[`-n`|`--lines` *n*\]
18
+
19
+ `ase service stop`
20
+
21
+ ## DESCRIPTION
22
+
23
+ **ase service** manages the per-project background HTTP service of
24
+ *ASE*. The service is bound to `127.0.0.1` on the preferred port
25
+ `project.service.port`, if configured and available, else on a random
26
+ port out of the range `42000`..`44000`, which is persisted in
27
+ `.ase/service.yaml` of the project, and logs into `.ase/service.log`. It is identified by the id
28
+ of the project (`project.id`, else derived from the project root), so a
29
+ port answered by the service of another project counts as a *foreign*
30
+ service.
31
+
32
+ The service provides:
33
+
34
+ - the MCP endpoint `/mcp` (Streamable HTTP), serving the `ase_*` MCP
35
+ tools of the skills, bridged into the agent tool via `ase-mcp`(1),
36
+ which auto-starts the service on demand,
37
+ - the command endpoint `/command` (see `ase-service-send`(1)) and the
38
+ stop endpoint `/stop`,
39
+ - the endpoints `/usage/*` of the AI usage accounting of the task
40
+ assignments (see `ase-task-assign`(1)), plus, while
41
+ `telemetry.enabled` is `true`, the attempt to hold the per-user OTLP
42
+ ingress on `127.0.0.1:`*port* (`telemetry.service.port`, default
43
+ `44318`), routing the received records to the service of the project
44
+ owning the session (see `ase-setup-telemetry`(1)),
45
+ - the web task board of `ase task board --web` (see
46
+ `ase-task-board`(1)).
47
+
48
+ The service accepts requests with a loopback `Host` header only, to
49
+ defeat DNS rebinding attacks from browser pages. A detached service
50
+ stops itself after 30 minutes without any request, but never while a
51
+ request is in flight or while it holds open AI usage windows.
52
+
53
+ Without a *command*, the usage information is shown and the command
54
+ exits with status `1`.
55
+
56
+ ## OPTIONS
57
+
58
+ - \[`-h`|`--help`\]:
59
+ Show usage information and exit.
60
+
61
+ ## COMMANDS
62
+
63
+ - `start` \[`-f`|`--foreground`\]:
64
+ Start the service in the background (or run it in the foreground).
65
+ See `ase-service-start`(1).
66
+
67
+ - `status`:
68
+ Report whether the service is running. See `ase-service-status`(1).
69
+
70
+ - `send` *cmd*:
71
+ Send a command to the service. See `ase-service-send`(1).
72
+
73
+ - `log` \[`-f`|`--follow`\] \[`-n`|`--lines` *n*\]:
74
+ Show the log of the service. See `ase-service-log`(1).
75
+
76
+ - `stop`:
77
+ Stop the service. See `ase-service-stop`(1).
78
+
79
+ ## FILES
80
+
81
+ - `.ase/service.yaml`:
82
+ The per-project service state (the `port` of the running service),
83
+ removed again once the service stopped.
84
+
85
+ - `.ase/service.log`:
86
+ The standard output and standard error of the detached service,
87
+ appended to. As the service inherits the file descriptor for its
88
+ entire lifetime, the file cannot be rotated while the service runs,
89
+ and instead is trimmed down to its last 2000 lines whenever a
90
+ service is started on a file larger than 1 MB.
91
+
92
+ Routine MCP traffic (session handshakes, notifications, and stream
93
+ opens) is logged at level `debug` only, and the arguments of the
94
+ logged MCP tool calls are cut at 200 characters.
95
+
96
+ - `.ase/.gitignore`:
97
+ The self-ignoring Git ignore file covering the machine-local runtime
98
+ files, created on the first start if missing.
99
+
100
+ ## EXIT STATUS
101
+
102
+ `0` on success, `1` on any error (including a missing *command*). See
103
+ the individual commands for details.
104
+
105
+ ## EXAMPLES
106
+
107
+ ```sh
108
+ # start the service with the full MCP traffic logged
109
+ $ ase --log-level debug service start
110
+
111
+ # check the service and follow its log
112
+ $ ase service status
113
+ $ ase service log -f
114
+ ```
115
+
116
+ ## SEE ALSO
117
+
118
+ `ase`(1), `ase-service-start`(1), `ase-service-status`(1),
119
+ `ase-service-send`(1), `ase-service-log`(1), `ase-service-stop`(1),
120
+ `ase-mcp`(1).
121
+
122
+ ## AUTHOR
123
+
124
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,67 @@
1
+ # ase-setup-disable(1) -- Disable the ASE Plugin in an Agent Tool
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase setup disable`
6
+ \[`-h`|`--help`\]
7
+ \[`-t`|`--tool` *tool*\]
8
+ \[`-s`|`--scope` *scope*\]
9
+
10
+ ## DESCRIPTION
11
+
12
+ **ase setup disable** disables the installed *ASE* plugin in the agent
13
+ tool selected by `--tool` without uninstalling it, so it can be
14
+ enabled again via `ase setup enable`. It requires the CLI of the
15
+ agent tool to be found in `$PATH`.
16
+
17
+ For *Anthropic Claude Code CLI*, the plugin is disabled via `claude
18
+ plugin disable ase@ase` (with `--scope` *scope* for a non-`user`
19
+ scope), which keeps its registration under `enabledPlugins` (with the
20
+ value `false`). As *GitHub Copilot CLI* and *OpenAI Codex CLI* have no
21
+ plugin disable command, the plugin is uninstalled there instead
22
+ (`copilot plugin uninstall ase@ase`, resp. `codex plugin remove
23
+ ase@ase`, retried up to three times), while its plugin marketplace
24
+ stays registered.
25
+
26
+ ## OPTIONS
27
+
28
+ - \[`-h`|`--help`\]:
29
+ Show usage information and exit.
30
+
31
+ - \[`-t`|`--tool` *tool*\]:
32
+ Select the target agent tool: `claude`, `copilot`, or `codex`
33
+ (default: `$ASE_TOOL`, else `claude`).
34
+
35
+ - \[`-s`|`--scope` *scope*\]:
36
+ Select the plugin installation scope: `user`, `project`, or
37
+ `local`. The default is auto-detected from the existing
38
+ installation: the scopes `local`, `project`, and `user` are probed
39
+ in this order, and the first one whose settings file registers the
40
+ plugin `ase@ase` under `enabledPlugins` is taken, falling back to
41
+ `user`. Only supported for `--tool claude`; a non-`user` scope for
42
+ `copilot` or `codex` fails with an error.
43
+
44
+ ## ENVIRONMENT
45
+
46
+ - `ASE_TOOL`:
47
+ The default of `--tool`.
48
+
49
+ ## EXIT STATUS
50
+
51
+ `0` on success, `1` on any error.
52
+
53
+ ## EXAMPLES
54
+
55
+ ```sh
56
+ # temporarily disable the ASE plugin in Anthropic Claude Code CLI
57
+ $ ase setup disable
58
+ ```
59
+
60
+ ## SEE ALSO
61
+
62
+ `ase`(1), `ase-setup`(1), `ase-setup-enable`(1),
63
+ `ase-setup-uninstall`(1), `ase-setup-status`(1).
64
+
65
+ ## AUTHOR
66
+
67
+ Dr. Ralf S. Engelschall <rse@engelschall.com>
@@ -0,0 +1,66 @@
1
+ # ase-setup-enable(1) -- Enable the ASE Plugin in an Agent Tool
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase setup enable`
6
+ \[`-h`|`--help`\]
7
+ \[`-t`|`--tool` *tool*\]
8
+ \[`-s`|`--scope` *scope*\]
9
+
10
+ ## DESCRIPTION
11
+
12
+ **ase setup enable** enables the already installed *ASE* plugin in the
13
+ agent tool selected by `--tool`, e.g., after it was disabled via `ase
14
+ setup disable`. It requires the CLI of the agent tool to be found in
15
+ `$PATH`.
16
+
17
+ For *Anthropic Claude Code CLI*, the plugin is enabled via `claude
18
+ plugin enable ase@ase` (with `--scope` *scope* for a non-`user`
19
+ scope). As *GitHub Copilot CLI* and *OpenAI Codex CLI* have no plugin
20
+ enable command, the plugin is (re-)installed there instead (`copilot
21
+ plugin install ase@ase`, resp. `codex plugin add ase@ase`, retried up
22
+ to three times), which requires the *ASE* plugin marketplace to be
23
+ still registered (see `ase-setup-install`(1)).
24
+
25
+ ## OPTIONS
26
+
27
+ - \[`-h`|`--help`\]:
28
+ Show usage information and exit.
29
+
30
+ - \[`-t`|`--tool` *tool*\]:
31
+ Select the target agent tool: `claude`, `copilot`, or `codex`
32
+ (default: `$ASE_TOOL`, else `claude`).
33
+
34
+ - \[`-s`|`--scope` *scope*\]:
35
+ Select the plugin installation scope: `user`, `project`, or
36
+ `local`. The default is auto-detected from the existing
37
+ installation: the scopes `local`, `project`, and `user` are probed
38
+ in this order, and the first one whose settings file registers the
39
+ plugin `ase@ase` under `enabledPlugins` (enabled or disabled) is
40
+ taken, falling back to `user`. Only supported for `--tool claude`;
41
+ a non-`user` scope for `copilot` or `codex` fails with an error.
42
+
43
+ ## ENVIRONMENT
44
+
45
+ - `ASE_TOOL`:
46
+ The default of `--tool`.
47
+
48
+ ## EXIT STATUS
49
+
50
+ `0` on success, `1` on any error.
51
+
52
+ ## EXAMPLES
53
+
54
+ ```sh
55
+ # re-enable the ASE plugin in Anthropic Claude Code CLI
56
+ $ ase setup enable
57
+ ```
58
+
59
+ ## SEE ALSO
60
+
61
+ `ase`(1), `ase-setup`(1), `ase-setup-disable`(1),
62
+ `ase-setup-status`(1).
63
+
64
+ ## AUTHOR
65
+
66
+ Dr. Ralf S. Engelschall <rse@engelschall.com>