@rse/ase 2.0.3 → 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 (187) hide show
  1. package/dst/ase-hook.js +1 -1
  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 +12 -17
  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/claude-code.d.ts +26 -3
  99. package/plugin/skills/ase-help-intent/data.md +180 -1
  100. package/plugin/skills/ase-help-skill/catalog.md +1 -0
  101. package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
  102. package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
  103. package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
  104. package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
  105. package/plugin/skills/ase-spec-edit/help.md +1 -1
  106. package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
  107. package/plugin/skills/ase-spec-lint/help.md +171 -0
  108. package/plugin/skills/ase-task-implement/SKILL.md +24 -6
  109. package/plugin/skills/ase-task-implement/help.md +11 -1
  110. package/dst/man/ase-agent-adhoc.1 +0 -515
  111. package/dst/man/ase-agent-condenser.1 +0 -193
  112. package/dst/man/ase-agent-editor.1 +0 -212
  113. package/dst/man/ase-agent-estimator.1 +0 -214
  114. package/dst/man/ase-agent-fleet.1 +0 -185
  115. package/dst/man/ase-agent-implementer.1 +0 -233
  116. package/dst/man/ase-agent-integrator.1 +0 -213
  117. package/dst/man/ase-agent-qualifier.1 +0 -214
  118. package/dst/man/ase-agent-rebooter.1 +0 -193
  119. package/dst/man/ase-agent-relay.1 +0 -128
  120. package/dst/man/ase-agent-researcher.1 +0 -217
  121. package/dst/man/ase-agent.1 +0 -264
  122. package/dst/man/ase-artifact-list.1 +0 -38
  123. package/dst/man/ase-artifact-name.1 +0 -39
  124. package/dst/man/ase-artifact.1 +0 -56
  125. package/dst/man/ase-config-delete.1 +0 -45
  126. package/dst/man/ase-config-edit.1 +0 -48
  127. package/dst/man/ase-config-get.1 +0 -46
  128. package/dst/man/ase-config-init.1 +0 -60
  129. package/dst/man/ase-config-list.1 +0 -42
  130. package/dst/man/ase-config-set.1 +0 -52
  131. package/dst/man/ase-config.1 +0 -231
  132. package/dst/man/ase-hook-permission-request.1 +0 -36
  133. package/dst/man/ase-hook-pre-tool-use.1 +0 -59
  134. package/dst/man/ase-hook-session-end.1 +0 -47
  135. package/dst/man/ase-hook-session-persona.1 +0 -37
  136. package/dst/man/ase-hook-session-start.1 +0 -81
  137. package/dst/man/ase-hook-stop.1 +0 -34
  138. package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
  139. package/dst/man/ase-hook.1 +0 -51
  140. package/dst/man/ase-man.1 +0 -67
  141. package/dst/man/ase-mcp.1 +0 -61
  142. package/dst/man/ase-service-log.1 +0 -43
  143. package/dst/man/ase-service-send.1 +0 -47
  144. package/dst/man/ase-service-start.1 +0 -54
  145. package/dst/man/ase-service-status.1 +0 -46
  146. package/dst/man/ase-service-stop.1 +0 -37
  147. package/dst/man/ase-service.1 +0 -85
  148. package/dst/man/ase-setup-disable.1 +0 -44
  149. package/dst/man/ase-setup-enable.1 +0 -45
  150. package/dst/man/ase-setup-install.1 +0 -73
  151. package/dst/man/ase-setup-mcp.1 +0 -124
  152. package/dst/man/ase-setup-status.1 +0 -60
  153. package/dst/man/ase-setup-statusline.1 +0 -92
  154. package/dst/man/ase-setup-telemetry.1 +0 -92
  155. package/dst/man/ase-setup-uninstall.1 +0 -59
  156. package/dst/man/ase-setup-update.1 +0 -64
  157. package/dst/man/ase-setup.1 +0 -93
  158. package/dst/man/ase-spec-export.1 +0 -62
  159. package/dst/man/ase-spec-lint.1 +0 -40
  160. package/dst/man/ase-spec-preview.1 +0 -40
  161. package/dst/man/ase-spec.1 +0 -46
  162. package/dst/man/ase-statusline.1 +0 -189
  163. package/dst/man/ase-task-assign.1 +0 -71
  164. package/dst/man/ase-task-board.1 +0 -384
  165. package/dst/man/ase-task-delete.1 +0 -35
  166. package/dst/man/ase-task-edit.1 +0 -46
  167. package/dst/man/ase-task-idscheme.1 +0 -65
  168. package/dst/man/ase-task-lifecycle.1 +0 -57
  169. package/dst/man/ase-task-list.1 +0 -47
  170. package/dst/man/ase-task-load.1 +0 -36
  171. package/dst/man/ase-task-newid.1 +0 -61
  172. package/dst/man/ase-task-purge.1 +0 -37
  173. package/dst/man/ase-task-rename.1 +0 -44
  174. package/dst/man/ase-task-request.1 +0 -61
  175. package/dst/man/ase-task-save.1 +0 -48
  176. package/dst/man/ase-task-status.1 +0 -55
  177. package/dst/man/ase-task-store.1 +0 -194
  178. package/dst/man/ase-task-view.1 +0 -40
  179. package/dst/man/ase-task.1 +0 -160
  180. package/dst/man/ase-util-compat.1 +0 -25
  181. package/dst/man/ase-util-diagram.1 +0 -76
  182. package/dst/man/ase-util-meta.1 +0 -45
  183. package/dst/man/ase-util-metric.1 +0 -54
  184. package/dst/man/ase-util-mint.1 +0 -59
  185. package/dst/man/ase-util-worktree.1 +0 -72
  186. package/dst/man/ase-util.1 +0 -50
  187. package/dst/man/ase.1 +0 -124
@@ -0,0 +1,478 @@
1
+ # ase-agent-researcher(1) -- Research Agent
2
+
3
+ ## SYNOPSIS
4
+
5
+ `ase agent researcher start`
6
+ \[`-n`|`--name` *name*\]
7
+ \[`-t`|`--tool` `claude`|`copilot`|`codex`\]
8
+ \[`-p`|`--parallel` *num*\]
9
+ \[`-T`|`--timeout` *duration*\]
10
+ \[`-o`|`--one-shot`\]
11
+ \[`--agent-relay` *url*\]
12
+ \[`-r`|`--repo` *url*\]
13
+ \[`-d`|`--tempdir` *dir*\]
14
+ \[`-m`|`--mode` `phase`|`request`\]
15
+ \[`--`*group*`-`*item* *value* \[...\]\]
16
+ \[`-f`|`--foreground`\]
17
+
18
+ `ase agent researcher status`
19
+ \[`-n`|`--name` *name*\]
20
+
21
+ `ase agent researcher log`
22
+ \[`-f`|`--follow`\]
23
+ \[`-n`|`--lines` *n*\]
24
+ \[`--name` *name*\]
25
+
26
+ `ase agent researcher stop`
27
+ \[`-n`|`--name` *name*\]
28
+
29
+ ## DESCRIPTION
30
+
31
+ **ase agent researcher** researches for the plans of tasks, combining
32
+ a Web research with a grounding in the source artifacts of the project
33
+ (see the skill `ase-task-research`). It runs in one of two modes (see
34
+ `--mode`): the mode `phase` (the default) researches the plans of the
35
+ tasks explicitly assigned to it in the `Planning` phase of the
36
+ `enterprise` task lifecycle model and is intended for *researching and
37
+ grounding the plan content*, while the mode `request` processes the
38
+ research requests of tasks in any task lifecycle model and is intended
39
+ for *topic-driven research*.
40
+
41
+ In the mode `phase` (refused for any task lifecycle model other than
42
+ `enterprise`), as a plan is researched only on the explicit request of
43
+ a human, the researcher claims only the tasks in the state `DRAFTED`
44
+ whose `Assignee:` frontmatter key already is its agent name
45
+ (default: `researcher`), i.e., which a human assigned to the
46
+ researcher. Such a task is claimed immediately, without waiting for its
47
+ `After:` predecessors (and, for an explicit epic, its group members),
48
+ except for a predecessor still being processed by a researcher in the
49
+ mode `phase` or a cancelled `After:` predecessor. It moves each claimed task
50
+ into `PLANNING`, tags it with `ase-agent-researcher:active`, and
51
+ researches the plan itself via the skill invocation `ase-task-research
52
+ --refine` *id* in the working copy, grounded in the `Source:` of the
53
+ task (like in the mode `request`, see below), appending the research
54
+ report to the `research` attachment of the task and refining the plan
55
+ by the recommendations of the report. The processing succeeds under the
56
+ same conditions as in the mode `request`. Afterwards, on success as
57
+ well as on failure, the researcher puts the task back into `DRAFTED`,
58
+ removes its tag, and unassigns it. As the task is no longer assigned to
59
+ the researcher, it is not claimed again, while assigning it to the
60
+ researcher again requests another research. On an interrupt, the task
61
+ is put back, untagged and with its previous assignee (i.e., still
62
+ assigned to the researcher), into `DRAFTED`.
63
+
64
+ In the mode `request`, the researcher processes the research requests
65
+ of tasks. Like the request agent `editor`, it is then bound to no phase
66
+ and supports all task lifecycle models (`solo`, `team`, and
67
+ `enterprise`).
68
+
69
+ A research request is added by key `R` of the task board (see
70
+ `ase-task-board`(1)) or by `ase task request` *id* `research`
71
+ \[*topic*\] (see `ase-task-request`(1)) as an attachment of type
72
+ `text/plain; charset=utf-8; kind="research"` with the topic as its
73
+ data, mirrored in the tag `ase-agent-research:pending` of the task
74
+ (aggregated as `:active` while one is processed and as `:failed` once
75
+ one failed). The topic is optional: a request without a topic
76
+ researches the task plan itself.
77
+
78
+ The researcher observes the tasks with this tag, except those in an
79
+ activity status of the task lifecycle model, where the task is actively
80
+ worked on (`team`: `IMPLEMENTING`; `enterprise`: `PLANNING`,
81
+ `IMPLEMENTING`, `QUALIFYING`, and `INTEGRATING`), and those still held
82
+ by a phase agent (tagged `ase-agent-`*kind*`:active`), which wait until
83
+ their status changes resp. their tag is released.
84
+
85
+ It claims the oldest request of such a task in a single conditional
86
+ save by turning it into `kind="research-running"` and setting the
87
+ `Assignee:` of the task to its agent name (remembering the previous
88
+ assignee in the request), which keeps all other agents off the task
89
+ during the research without touching its status. The request of a
90
+ finished task is turned into `kind="research-failed"` instead.
91
+
92
+ It then researches the topic via the skill invocation
93
+ `ase-task-research --refine` *id*`:` \[*topic*\] (with the whitespace
94
+ of the topic collapsed) in the working copy, grounded in the `Source:`
95
+ of the task, where a `branch:`*name* source is checked out in the
96
+ temporary, detached Git worktree `.ase/worktree/.temp/`*id*`-researcher`,
97
+ passed to the skill via its internal option `--int-source-dir`, and
98
+ removed afterwards. The skill combines a Web research with a grounding
99
+ in the source artifacts of the project, appends its research report to
100
+ the `research` attachment of the task (of type `text/markdown;
101
+ charset=utf-8; kind="research"`), and refines the plan by the
102
+ recommendations of the report, all in a single save, which happens
103
+ only if the task was not changed meanwhile.
104
+
105
+ Finally, in a single save, the researcher restores the previous
106
+ assignee of the task (unless reassigned meanwhile) and removes the
107
+ request if the `research` attachment was created or changed and the
108
+ skill reported the attached research, or else turns it back into
109
+ `kind="research"` on an interrupt, resp. into `kind="research-failed"`
110
+ (with the reason, e.g., `skill reported an error`, `agent tool failed`,
111
+ or `no new or changed attachment "text/markdown;research"`) otherwise.
112
+
113
+ A finalization failing even after its retries is retried on every
114
+ further dispatching.
115
+
116
+ On its start in the mode `request`, the researcher marks the requests left in
117
+ `kind="research-running"` by any terminated researcher process of the
118
+ same user on the same host (whose run lock is gone or stale and whose
119
+ process is no longer alive) as failed (`kind="research-failed"`), and
120
+ restores the previous assignees of their tasks.
121
+
122
+ Both modes can run side by side as two agents of the kind `researcher`
123
+ under different names (e.g., `researcher` and `researcher-request`).
124
+ See `ase-agent`(1) for the common mechanics of all agents.
125
+
126
+ ## OPTIONS
127
+
128
+ - \[`-h`|`--help`\]: Show usage information of `ase agent researcher`
129
+ (or of the given sub-command) only.
130
+
131
+ All other options belong to the sub-commands (see **COMMANDS**).
132
+
133
+ ## COMMANDS
134
+
135
+ - `ase agent researcher start` \[*options*\]: Start the researcher agent
136
+ in the background, logging into `.ase/agent/`*name*`.log`. The agent
137
+ is validated and initialized (e.g., its agent tool is looked up and
138
+ the task lifecycle model is checked) before the command returns
139
+ (waiting up to 30 seconds), so a failing agent is reported together
140
+ with the tail of its log. An agent of the same name already running is
141
+ left alone. The options are:
142
+
143
+ - \[`-n`|`--name` *name*\]: The name of the agent (default:
144
+ `researcher`): up to 64 letters, digits, underscores, and dashes,
145
+ starting with a letter or digit, other than the name of another
146
+ agent kind, `relay`, or `fleet`.
147
+
148
+ It names the agent in its log lines (also in the shared processing
149
+ log attachment `agent`), the `Assignee:` of the tasks it processes, its
150
+ temporary directory, and its process files `.ase/agent/`*name*`.yaml`
151
+ and `.ase/agent/`*name*`.log`. Agents of the kind `researcher`
152
+ under different names form a pool, competing for the same tasks and
153
+ processing them in parallel to each other.
154
+
155
+ - \[`-t`|`--tool` *tool*\]: The headless agent tool processing the
156
+ tasks: `claude` (*Anthropic Claude Code CLI*), `copilot` (*GitHub
157
+ Copilot CLI*), or `codex` (*OpenAI Codex CLI*) (default:
158
+ `$ASE_TOOL`, else `claude`). Its command has to be found in
159
+ `$PATH`.
160
+
161
+ - \[`-p`|`--parallel` *num*\]: The maximum number of tasks processed
162
+ in parallel by this agent (default: `1`), a positive integer.
163
+
164
+ - \[`-T`|`--timeout` *duration*\]: The maximum duration of
165
+ processing a task (the run of the agent tool), as *number* *unit*
166
+ (without a space) with *unit* `s` (seconds), `m` (minutes), or `h`
167
+ (hours) (default: `60m`). A processing exceeding it is aborted and
168
+ counts as failed.
169
+
170
+ - \[`-o`|`--one-shot`\]: Terminate the agent, instead of observing
171
+ for further tasks, once a check of the task store finds no
172
+ dispatchable task while the agent processes no task anymore --
173
+ intended for CI contexts like GitHub Actions, and not allowed in a
174
+ fleet. A check of the task store failing three times in a row then
175
+ terminates the agent with a non-zero exit status (instead of being
176
+ retried endlessly after a growing delay).
177
+
178
+ - \[`--agent-relay` *url*\]: The agent relay to pass the live
179
+ presence of the agent to, as `ase://`*addr*`:`*port*\[`/`*token*\]
180
+ resp. `ases://`*addr*`:`*port*\[`/`*token*\]\[`?insecure`\] for
181
+ HTTPS (default: the configured `project.relay.url`, else none).
182
+ See **AGENT RELAY** in `ase-agent`(1). In the mode `request`, the
183
+ agent is announced there as processing the `research` requests,
184
+ which may have an empty prompt.
185
+
186
+ - \[`-r`|`--repo` *url*\]: The Git repository to clone once into the
187
+ temporary directory of the agent, where every task without a
188
+ `worktree` value is processed in its own temporary Git worktree of
189
+ this clone (default: none, i.e., all tasks are processed in the
190
+ Git working copy the agent is started in, which is hence
191
+ mandatory).
192
+
193
+ Requires a task store not located in the working copy (i.e., not a
194
+ local `ase:`*path* one). See **WORKING COPY, CLONES, AND WORKTREES**
195
+ in `ase-agent`(1).
196
+
197
+ - \[`-d`|`--tempdir` *dir*\]: Create the temporary directory of the
198
+ agent as the sub-directory *name* of *dir*, where `%p` is expanded
199
+ to the process id of the agent, `%h` to a hash value unique to the
200
+ process, and `%%` to `%` (default: a fresh, private directory
201
+ below the system temporary directory). A missing *dir* is created
202
+ private to the current user, while an existing *dir* has to be a
203
+ directory (no symbolic link) owned by the current user.
204
+
205
+ - \[`-m`|`--mode` *mode*\]: The mode of the agent (default:
206
+ `phase`): `phase` researches and grounds the plans of the tasks
207
+ explicitly assigned to the researcher in `DRAFTED`,
208
+ while `request` researches the topics of the `research` requests
209
+ of the tasks in any task lifecycle model. An invalid mode is an
210
+ error. The built-in values of the following options are given per
211
+ mode where they differ, and in the mode `request`, the options for
212
+ `phase` only (`--unclaimed`, `--state-`\*, `--tag-success`,
213
+ `--tag-failure`, `--tag-retry`, `--assign-required`, and
214
+ `--attach-skip`) are not allowed.
215
+
216
+ - \[`--title` *text*\]: The one-line title of the operation of the
217
+ agent (at most 80 characters), shown on the task boards. Built-in:
218
+ `Research and ground the plans of assigned tasks` (mode `phase`)
219
+ resp. `Research topics for tasks on request` (mode `request`).
220
+
221
+ - \[`--description` *text*\]: The brief description of the operation
222
+ of the agent (about 3-6 lines, at most 600 characters, with its
223
+ whitespace collapsed), shown on the task boards. Built-in: a
224
+ description of the operation of the mode.
225
+
226
+ - \[`--type` `phase`|`request`\]: The processing type: `phase`
227
+ claims the tasks by their lifecycle status, `request` processes
228
+ the prompt requests attached to the tasks. Generic default:
229
+ `phase`. Built-in: `phase` (mode `phase`) resp. `request` (mode
230
+ `request`).
231
+
232
+ - \[`--workdir` *kind*\]: The working directory of the agent tool:
233
+ `project`, `source`, `changeset`, `changeset-read`, or `target`.
234
+ Generic default: `project`. Built-in: `source`.
235
+
236
+ - \[`--lifecycle` *model*\]: A supported task lifecycle model
237
+ (`solo`, `team`, or `enterprise`, repeatable). Generic default:
238
+ every model containing all given states, resp. all models for
239
+ `request` and with `--unclaimed`. Built-in: `enterprise` (mode
240
+ `phase`) resp. not set (mode `request`). Hence, all task lifecycle
241
+ models are supported in the mode `request`.
242
+
243
+ - \[`--serial`\]: Process the tasks serially only, ignoring
244
+ `--parallel`. Built-in: not set.
245
+
246
+ - \[`--unclaimed`\]: Process the tasks of the incoming states
247
+ without claiming them (`phase` only). Built-in: not set.
248
+
249
+ - \[`--params` *name*`=`*value*\]: The value of a parameter
250
+ declared by the definition (repeatable). Built-in: none declared.
251
+
252
+ - \[`--state-incoming` *state*\]: A state of the tasks to claim
253
+ (mandatory for `phase`, repeatable with `--unclaimed` or
254
+ `--state-activity` only). Built-in: `DRAFTED` (mode `phase`).
255
+
256
+ - \[`--state-activity` *state*\]: The state of a task during its
257
+ processing. Built-in: `PLANNING` (mode `phase`).
258
+
259
+ - \[`--state-success` *state*\], \[`--state-failure` *state*\]: The
260
+ target state on success resp. failure, or `previous` for the
261
+ incoming state of the claim. Built-in: `DRAFTED` (mode `phase`).
262
+
263
+ - \[`--state-phase` *state*\]: The phase success state. Built-in: not
264
+ set (mode `phase`), hence `DRAFTED`.
265
+
266
+ - \[`--state-passed` *state*\]: The first state from which on a task
267
+ has passed the phase for its `After:` successors. Built-in: not
268
+ set (mode `phase`), hence `DRAFTED`, the first state, so the
269
+ predecessors impose no gate.
270
+
271
+ - \[`--tag-name` *tag*\]: The tag of the processed tasks
272
+ (`ase-agent-`*word*). Generic default: `ase-agent-`*name*, resp.
273
+ for `request` always `ase-agent-`*request-name*. Built-in: not set
274
+ (mode `phase`, hence `ase-agent-researcher`) resp.
275
+ `ase-agent-research` (mode `request`, derived from the request
276
+ name `research`).
277
+
278
+ - \[`--tag-success` *tag*\], \[`--tag-failure` *tag*\]: The tag on
279
+ success resp. failure (`phase` only). Built-in: `none` (mode
280
+ `phase`), as the unassignment of a processed task keeps it from
281
+ being claimed again.
282
+
283
+ - \[`--tag-require` *tag*\]: A tag a claimable task has to carry
284
+ (repeatable). Built-in: not set.
285
+
286
+ - \[`--tag-exclude` *tag*\]: A tag a claimable task must not carry
287
+ (repeatable). Built-in: not set.
288
+
289
+ - \[`--assign-name` *who*\]: The assignee under which the tasks are
290
+ claimed, held, recognized, and released, and which names the
291
+ agent-owned worktrees. Generic default: the agent name. Built-in:
292
+ not set.
293
+
294
+ - \[`--assign-required`\]: Claim only the tasks explicitly assigned
295
+ to *who* of `--assign-name` (`phase` only). Built-in: enabled
296
+ (mode `phase`).
297
+
298
+ - \[`--assign-success` *who*\]: The assignee of a task after its
299
+ successful processing: a name, `none`, or `previous`. Generic
300
+ default: `none` for `phase`, `previous` for `request`. Built-in:
301
+ not set.
302
+
303
+ - \[`--assign-failure` *who*\]: The assignee of a task after its
304
+ failed processing: a name, `none`, or `previous`. Generic default:
305
+ `none` for `phase`, `previous` for `request`. Built-in: not set.
306
+
307
+ - \[`--request-name` *name*\]: The name of the processed requests
308
+ (`request` only). Generic default: the agent name. Built-in:
309
+ `research` (mode `request`).
310
+
311
+ - \[`--request-done` *word*\]: The word naming a processed task in
312
+ the log lines (`request` only). Generic default: `processed`.
313
+ Built-in: `researched` (mode `request`).
314
+
315
+ - \[`--prompt-skill` *name*\]: The skill to invoke (mutually
316
+ exclusive with `--prompt-text` and `--prompt-file`). Built-in:
317
+ `ase-task-research`.
318
+
319
+ - \[`--prompt-args` *template*\]: The argument template of the
320
+ skill. Generic default: `{id}` for `phase`, `{id}: {prompt}` for
321
+ `request`. Built-in: `--refine{?source-dir: --int-source-dir
322
+ "{source-dir}"} {id}` (mode `phase`) resp. `--refine{?source-dir:
323
+ --int-source-dir "{source-dir}"} {id}:{?prompt: {prompt}}` (mode
324
+ `request`), where the conditional `{?prompt:...}` makes the prompt
325
+ optional.
326
+
327
+ - \[`--prompt-text` *template*\]: The prompt text template to invoke
328
+ instead of a skill. Built-in: not set.
329
+
330
+ - \[`--prompt-file` *file*\]: The file with the prompt text template
331
+ to invoke instead of a skill. Built-in: not set.
332
+
333
+ - \[`--prepare-run` *cmd*\]: A shell command run in the working
334
+ directory before the prompt (repeatable). Built-in: not set.
335
+
336
+ - \[`--success-criterion` *criterion*\]: A success criterion:
337
+ `exit`, `clean`, `changed`, `verdict`, `attachment`, or `status`
338
+ (repeatable). Generic default: `exit` and `clean` for `phase`,
339
+ `clean` and `changed` for `request`. Built-in: `exit`, `clean`,
340
+ and `attachment`.
341
+
342
+ - \[`--success-match` *regex*\]: A regular expression an output line
343
+ has to match (repeatable). Built-in: `status:\W*research
344
+ attached\b`.
345
+
346
+ - \[`--verdict-label` *label*\]: The label after which the verdict
347
+ is given in the output. Built-in: not set.
348
+
349
+ - \[`--verdict-allow` *VERDICT*\]: An accepted verdict (repeatable).
350
+ Generic default: the verdicts of `--state-verdict`, else any.
351
+ Built-in: not set.
352
+
353
+ - \[`--attach-output` *kind*\]: The kind of the attachment storing
354
+ the output lines of the prompt. Built-in: not set.
355
+
356
+ - \[`--attach-expect` *spec*\]: The attachment
357
+ \[*mime-type*`;`\]*kind* to be created or changed by the
358
+ processing for the success criterion `attachment`. Built-in:
359
+ `text/markdown;research`.
360
+
361
+ - \[`--finish-success` *cmd*\]: A shell command run in the working
362
+ directory after a successful processing. Built-in: not set.
363
+
364
+ - \[`--finish-failure` *cmd*\]: A shell command run in the working
365
+ directory after a failed processing. Built-in: not set.
366
+
367
+ - \[`-f`|`--foreground`\]: Run the agent in the current process
368
+ instead, logging to the terminal, until it is interrupted (e.g.,
369
+ via `CTRL+C`) or stopped, where an agent of the same name already
370
+ running is an error.
371
+
372
+ - \[`-h`|`--help`\]: Show the usage information of the sub-command
373
+ only.
374
+
375
+ The options `--`*group*`-`*item* above override the built-in
376
+ definition of the mode of the agent (where an option also replaces its
377
+ mutually exclusive alternatives, e.g., `--prompt-text` replaces the
378
+ skill of `--prompt-skill`), while the agent keeps the identity of its
379
+ kind (its runs, its presence, and its agent-owned worktrees are named
380
+ after `researcher`). See `ase-agent-adhoc`(1) for their full
381
+ semantics.
382
+
383
+ - `ase agent researcher status` \[`-n`|`--name` *name*\]: Report whether
384
+ the researcher agent of the name *name* (default: `researcher`) is
385
+ running, as `agent` *name*`: running (pid` *pid*`)` resp. `agent`
386
+ *name*`: not running` (exit status 1).
387
+
388
+ - `ase agent researcher log` \[`-f`|`--follow`\] \[`-n`|`--lines` *n*\]
389
+ \[`--name` *name*\]: Show the log `.ase/agent/`*name*`.log` of the
390
+ researcher agent of the name *name* (default: `researcher`) run in the
391
+ background, where an agent of a fleet logs into the log of the fleet
392
+ instead (see `ase-agent-fleet`(1)). Without a log file, an
393
+ informational message is shown only. The options are:
394
+
395
+ - \[`-f`|`--follow`\]: Show the last *n* lines (default: 10) and
396
+ then follow all newly appended lines, in the style of `tail -f`,
397
+ until interrupted.
398
+
399
+ - \[`-n`|`--lines` *n*\]: Show the last *n* lines only (default:
400
+ all, or 10 with `--follow`).
401
+
402
+ - \[`--name` *name*\]: The name of the agent (default: `researcher`),
403
+ given in its long form only, as `-n` is the short form of
404
+ `--lines`.
405
+
406
+ - `ase agent researcher stop` \[`-n`|`--name` *name*\]: Stop the
407
+ researcher agent of the name *name* (default: `researcher`) by
408
+ `SIGTERM`, waiting (up to 5 minutes) until it aborted its running
409
+ processings and put their tasks back. An agent not running is reported
410
+ informationally only.
411
+
412
+ ## ENVIRONMENT
413
+
414
+ - `ASE_TOOL`: The default agent tool of `--tool` (default: `claude`).
415
+
416
+ - `ASE_AGENT_RELAY_TOKEN`: The bearer token of the agent relay, if not
417
+ embedded in the URL of `--agent-relay` resp. `project.relay.url`.
418
+
419
+ - `ASE_HEADLESS`: Set to `true` for the agent tool processes spawned by
420
+ the agent.
421
+
422
+ ## FILES
423
+
424
+ - `.ase/agent/`*name*`.yaml`: The process state (kind, process id, and
425
+ process start time) of the agent, existing while it runs.
426
+
427
+ - `.ase/agent/`*name*`.log`: The log of the agent run in the background.
428
+
429
+ - `.ase/worktree/.temp/`*id*`-researcher`: The temporary, detached Git
430
+ worktree of a `branch:` source of a task during its research (where a
431
+ `#` of the task id is replaced by `_`).
432
+
433
+ - *per-user state
434
+ directory*`/agent-researcher/`*store-hash*`/`*run-id*`.lock` and
435
+ `.json`: The run lock and the run record of each researcher agent
436
+ process, used to recover the research requests of terminated agent
437
+ processes (see **INTERRUPTS AND RECOVERY** in `ase-agent`(1)).
438
+
439
+ ## EXIT STATUS
440
+
441
+ `ase agent researcher start` exits with status `0` once the agent
442
+ started (or was already running), resp. once a foreground agent
443
+ terminated regularly, and with status `1` on any error (e.g., an invalid
444
+ option, a task lifecycle model other than `enterprise` in the mode
445
+ `phase`, or a missing agent tool). `ase agent researcher status` exits
446
+ with status `1` if the agent is not running.
447
+
448
+ ## EXAMPLES
449
+
450
+ ```sh
451
+ # research and ground the plans of the tasks assigned to the researcher
452
+ $ ase agent researcher start
453
+
454
+ # request the research of a drafted task by assigning it to the researcher
455
+ $ ase task assign FOO-42 researcher
456
+
457
+ # process the research requests of the task board
458
+ $ ase agent researcher start -n researcher-request -m request
459
+
460
+ # request a research of a topic for a task from the command line
461
+ $ ase task request FOO-42 research "streaming JSON serialization of large data sets"
462
+
463
+ # request a research of the task plan itself (without a topic)
464
+ $ ase task request FOO-42 research
465
+ ```
466
+
467
+ ## SEE ALSO
468
+
469
+ `ase`(1), `ase-agent`(1), `ase-agent-rebooter`(1),
470
+ `ase-agent-condenser`(1), `ase-agent-implementer`(1), `ase-agent-qualifier`(1),
471
+ `ase-agent-integrator`(1), `ase-agent-editor`(1),
472
+ `ase-agent-estimator`(1), `ase-task-request`(1), `ase-agent-adhoc`(1),
473
+ `ase-agent-fleet`(1), `ase-agent-relay`(1), `ase-task`(1),
474
+ `ase-task-board`(1).
475
+
476
+ ## AUTHOR
477
+
478
+ Dr. Ralf S. Engelschall <rse@engelschall.com>