@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.
- package/dst/ase-hook.js +1 -1
- package/dst/ase-lib-version.js +14 -5
- package/dst/ase-man-catalog.js +229 -0
- package/dst/ase-man-render.js +278 -0
- package/dst/ase-man-tui.js +636 -0
- package/dst/ase-man.js +33 -27
- package/dst/ase-setup.js +2 -2
- package/dst/ase-spec.js +103 -20
- package/dst/ase-task-board-filter.js +5 -4
- package/dst/ase-task-board-web-client.js +26 -26
- package/dst/man/ase-agent-adhoc.md +1165 -0
- package/dst/man/ase-agent-condenser.md +383 -0
- package/dst/man/ase-agent-editor.md +441 -0
- package/dst/man/ase-agent-estimator.md +477 -0
- package/dst/man/ase-agent-fleet.md +358 -0
- package/dst/man/ase-agent-implementer.md +521 -0
- package/dst/man/ase-agent-integrator.md +449 -0
- package/dst/man/ase-agent-qualifier.md +426 -0
- package/dst/man/ase-agent-rebooter.md +384 -0
- package/dst/man/ase-agent-relay.md +262 -0
- package/dst/man/ase-agent-researcher.md +478 -0
- package/dst/man/ase-agent.md +628 -0
- package/dst/man/ase-artifact-list.md +57 -0
- package/dst/man/ase-artifact-name.md +56 -0
- package/dst/man/ase-artifact.md +92 -0
- package/dst/man/ase-config-delete.md +74 -0
- package/dst/man/ase-config-edit.md +83 -0
- package/dst/man/ase-config-get.md +70 -0
- package/dst/man/ase-config-init.md +110 -0
- package/dst/man/ase-config-list.md +68 -0
- package/dst/man/ase-config-set.md +92 -0
- package/dst/man/ase-config.md +426 -0
- package/dst/man/ase-hook-permission-request.md +61 -0
- package/dst/man/ase-hook-pre-tool-use.md +96 -0
- package/dst/man/ase-hook-session-end.md +71 -0
- package/dst/man/ase-hook-session-persona.md +65 -0
- package/dst/man/ase-hook-session-start.md +184 -0
- package/dst/man/ase-hook-stop.md +52 -0
- package/dst/man/ase-hook-user-prompt-submit.md +54 -0
- package/dst/man/ase-hook.md +93 -0
- package/dst/man/ase-man.md +195 -0
- package/dst/man/ase-mcp.md +102 -0
- package/dst/man/ase-service-log.md +59 -0
- package/dst/man/ase-service-send.md +60 -0
- package/dst/man/ase-service-start.md +93 -0
- package/dst/man/ase-service-status.md +58 -0
- package/dst/man/ase-service-stop.md +52 -0
- package/dst/man/ase-service.md +124 -0
- package/dst/man/ase-setup-disable.md +67 -0
- package/dst/man/ase-setup-enable.md +66 -0
- package/dst/man/ase-setup-install.md +116 -0
- package/dst/man/ase-setup-mcp.md +213 -0
- package/dst/man/ase-setup-status.md +101 -0
- package/dst/man/ase-setup-statusline.md +162 -0
- package/dst/man/ase-setup-telemetry.md +166 -0
- package/dst/man/ase-setup-uninstall.md +85 -0
- package/dst/man/ase-setup-update.md +117 -0
- package/dst/man/ase-setup.md +156 -0
- package/dst/man/ase-spec-export.md +99 -0
- package/dst/man/ase-spec-init.md +57 -0
- package/dst/man/ase-spec-lint.md +74 -0
- package/dst/man/ase-spec-preview.md +57 -0
- package/dst/man/ase-spec.md +85 -0
- package/dst/man/ase-statusline.md +330 -0
- package/dst/man/ase-task-assign.md +138 -0
- package/dst/man/ase-task-board.md +651 -0
- package/dst/man/ase-task-delete.md +46 -0
- package/dst/man/ase-task-edit.md +73 -0
- package/dst/man/ase-task-idscheme.md +92 -0
- package/dst/man/ase-task-lifecycle.md +92 -0
- package/dst/man/ase-task-list.md +86 -0
- package/dst/man/ase-task-load.md +48 -0
- package/dst/man/ase-task-newid.md +100 -0
- package/dst/man/ase-task-purge.md +49 -0
- package/dst/man/ase-task-rename.md +69 -0
- package/dst/man/ase-task-request.md +108 -0
- package/dst/man/ase-task-save.md +78 -0
- package/dst/man/ase-task-status.md +79 -0
- package/dst/man/ase-task-store.md +377 -0
- package/dst/man/ase-task-view.md +50 -0
- package/dst/man/ase-task.md +335 -0
- package/dst/man/ase-util-compat.md +38 -0
- package/dst/man/ase-util-diagram.md +140 -0
- package/dst/man/ase-util-meta.md +68 -0
- package/dst/man/ase-util-metric.md +74 -0
- package/dst/man/ase-util-mint.md +85 -0
- package/dst/man/ase-util-worktree.md +109 -0
- package/dst/man/ase-util.md +81 -0
- package/dst/man/ase.md +228 -0
- package/package.json +12 -17
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/agents/ase-code-lint.md +3 -3
- package/plugin/agents/ase-docs-proofread.md +3 -3
- package/plugin/agents/ase-docs-refine.md +3 -3
- package/plugin/agents/ase-spec-lint.md +338 -0
- package/plugin/mods/claude-code.d.ts +26 -3
- package/plugin/skills/ase-help-intent/data.md +180 -1
- package/plugin/skills/ase-help-skill/catalog.md +1 -0
- package/plugin/skills/ase-meta-workflow/workflow.txt +2 -0
- package/plugin/skills/ase-repo-commit/SKILL.md +1 -0
- package/plugin/skills/ase-repo-merge/SKILL.md +1 -0
- package/plugin/skills/ase-spec-edit/SKILL.md +3 -3
- package/plugin/skills/ase-spec-edit/help.md +1 -1
- package/plugin/skills/ase-spec-lint/SKILL.md +695 -0
- package/plugin/skills/ase-spec-lint/help.md +171 -0
- package/plugin/skills/ase-task-implement/SKILL.md +24 -6
- package/plugin/skills/ase-task-implement/help.md +11 -1
- package/dst/man/ase-agent-adhoc.1 +0 -515
- package/dst/man/ase-agent-condenser.1 +0 -193
- package/dst/man/ase-agent-editor.1 +0 -212
- package/dst/man/ase-agent-estimator.1 +0 -214
- package/dst/man/ase-agent-fleet.1 +0 -185
- package/dst/man/ase-agent-implementer.1 +0 -233
- package/dst/man/ase-agent-integrator.1 +0 -213
- package/dst/man/ase-agent-qualifier.1 +0 -214
- package/dst/man/ase-agent-rebooter.1 +0 -193
- package/dst/man/ase-agent-relay.1 +0 -128
- package/dst/man/ase-agent-researcher.1 +0 -217
- package/dst/man/ase-agent.1 +0 -264
- package/dst/man/ase-artifact-list.1 +0 -38
- package/dst/man/ase-artifact-name.1 +0 -39
- package/dst/man/ase-artifact.1 +0 -56
- package/dst/man/ase-config-delete.1 +0 -45
- package/dst/man/ase-config-edit.1 +0 -48
- package/dst/man/ase-config-get.1 +0 -46
- package/dst/man/ase-config-init.1 +0 -60
- package/dst/man/ase-config-list.1 +0 -42
- package/dst/man/ase-config-set.1 +0 -52
- package/dst/man/ase-config.1 +0 -231
- package/dst/man/ase-hook-permission-request.1 +0 -36
- package/dst/man/ase-hook-pre-tool-use.1 +0 -59
- package/dst/man/ase-hook-session-end.1 +0 -47
- package/dst/man/ase-hook-session-persona.1 +0 -37
- package/dst/man/ase-hook-session-start.1 +0 -81
- package/dst/man/ase-hook-stop.1 +0 -34
- package/dst/man/ase-hook-user-prompt-submit.1 +0 -34
- package/dst/man/ase-hook.1 +0 -51
- package/dst/man/ase-man.1 +0 -67
- package/dst/man/ase-mcp.1 +0 -61
- package/dst/man/ase-service-log.1 +0 -43
- package/dst/man/ase-service-send.1 +0 -47
- package/dst/man/ase-service-start.1 +0 -54
- package/dst/man/ase-service-status.1 +0 -46
- package/dst/man/ase-service-stop.1 +0 -37
- package/dst/man/ase-service.1 +0 -85
- package/dst/man/ase-setup-disable.1 +0 -44
- package/dst/man/ase-setup-enable.1 +0 -45
- package/dst/man/ase-setup-install.1 +0 -73
- package/dst/man/ase-setup-mcp.1 +0 -124
- package/dst/man/ase-setup-status.1 +0 -60
- package/dst/man/ase-setup-statusline.1 +0 -92
- package/dst/man/ase-setup-telemetry.1 +0 -92
- package/dst/man/ase-setup-uninstall.1 +0 -59
- package/dst/man/ase-setup-update.1 +0 -64
- package/dst/man/ase-setup.1 +0 -93
- package/dst/man/ase-spec-export.1 +0 -62
- package/dst/man/ase-spec-lint.1 +0 -40
- package/dst/man/ase-spec-preview.1 +0 -40
- package/dst/man/ase-spec.1 +0 -46
- package/dst/man/ase-statusline.1 +0 -189
- package/dst/man/ase-task-assign.1 +0 -71
- package/dst/man/ase-task-board.1 +0 -384
- package/dst/man/ase-task-delete.1 +0 -35
- package/dst/man/ase-task-edit.1 +0 -46
- package/dst/man/ase-task-idscheme.1 +0 -65
- package/dst/man/ase-task-lifecycle.1 +0 -57
- package/dst/man/ase-task-list.1 +0 -47
- package/dst/man/ase-task-load.1 +0 -36
- package/dst/man/ase-task-newid.1 +0 -61
- package/dst/man/ase-task-purge.1 +0 -37
- package/dst/man/ase-task-rename.1 +0 -44
- package/dst/man/ase-task-request.1 +0 -61
- package/dst/man/ase-task-save.1 +0 -48
- package/dst/man/ase-task-status.1 +0 -55
- package/dst/man/ase-task-store.1 +0 -194
- package/dst/man/ase-task-view.1 +0 -40
- package/dst/man/ase-task.1 +0 -160
- package/dst/man/ase-util-compat.1 +0 -25
- package/dst/man/ase-util-diagram.1 +0 -76
- package/dst/man/ase-util-meta.1 +0 -45
- package/dst/man/ase-util-metric.1 +0 -54
- package/dst/man/ase-util-mint.1 +0 -59
- package/dst/man/ase-util-worktree.1 +0 -72
- package/dst/man/ase-util.1 +0 -50
- 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>
|