@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,477 @@
|
|
|
1
|
+
# ase-agent-estimator(1) -- Effort Estimation Agent
|
|
2
|
+
|
|
3
|
+
## SYNOPSIS
|
|
4
|
+
|
|
5
|
+
`ase agent estimator 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
|
+
\[`-m`|`--mode` `phase`|`request`\]
|
|
13
|
+
\[`--`*group*`-`*item* *value* \[...\]\]
|
|
14
|
+
\[`-f`|`--foreground`\]
|
|
15
|
+
|
|
16
|
+
`ase agent estimator status`
|
|
17
|
+
\[`-n`|`--name` *name*\]
|
|
18
|
+
|
|
19
|
+
`ase agent estimator log`
|
|
20
|
+
\[`-f`|`--follow`\]
|
|
21
|
+
\[`-n`|`--lines` *n*\]
|
|
22
|
+
\[`--name` *name*\]
|
|
23
|
+
|
|
24
|
+
`ase agent estimator stop`
|
|
25
|
+
\[`-n`|`--name` *name*\]
|
|
26
|
+
|
|
27
|
+
## DESCRIPTION
|
|
28
|
+
|
|
29
|
+
**ase agent estimator** estimates the effort of tasks, i.e., it stores
|
|
30
|
+
the expected human time of a task as a T-shirt size in its `Effort:`
|
|
31
|
+
frontmatter key (see the skill `ase-task-estimate`). Unlike the phase
|
|
32
|
+
agents, it drives no phase and supports all task lifecycle models
|
|
33
|
+
(`solo`, `team`, and `enterprise`). It runs in one of two modes (see
|
|
34
|
+
`--mode`): the mode `phase` (the default) estimates the unestimated
|
|
35
|
+
planned tasks automatically and is intended for the *final* estimation
|
|
36
|
+
of the tasks, once their plans are complete, while the mode `request`
|
|
37
|
+
(re-)estimates the tasks in any unfinished status on request and is
|
|
38
|
+
intended for *dry-runs*, i.e., provisional estimations of plans still
|
|
39
|
+
in progress.
|
|
40
|
+
|
|
41
|
+
In the mode `phase`, the estimator observes the tasks in the state `PLANNED`, adapted onto
|
|
42
|
+
the task lifecycle model of the project, i.e., `PLANNED` for
|
|
43
|
+
`enterprise`, `PLANNING` for `team`, and `OPEN` for `solo` (see
|
|
44
|
+
`--state-incoming`), which do not carry its tag `ase-agent-estimator`
|
|
45
|
+
yet, independent of their `Assignee:` and their `After:` predecessors.
|
|
46
|
+
Of these, it processes every task which carries no valid `Effort:` key
|
|
47
|
+
yet, whose plan is not empty, and which is no explicit epic (a task
|
|
48
|
+
whose `Group:` is its own id, as its effort is the sum of the efforts
|
|
49
|
+
of its members).
|
|
50
|
+
|
|
51
|
+
The estimator processes each such task *unclaimed* (see
|
|
52
|
+
`--unclaimed`): it neither moves the task into an activity state, nor
|
|
53
|
+
tags it as active, nor assigns it to itself, and it never changes its
|
|
54
|
+
status or its assignee. Hence, it keeps no other agent and no human off
|
|
55
|
+
the task. However, the built-in `implementer` by default waits with a
|
|
56
|
+
`PLANNED` task until the estimator is done with it (see its parameter
|
|
57
|
+
`effort-wait` in `ase-agent-implementer`(1)), so with both agents
|
|
58
|
+
running, the tasks are estimated before their implementation. An agent
|
|
59
|
+
of the kind `estimator` does not pick up a task already processed by
|
|
60
|
+
another one on the same host.
|
|
61
|
+
|
|
62
|
+
It estimates the effort via the skill invocation `ase-task-estimate`
|
|
63
|
+
*id*, which writes just the `Effort:` key in a conditional save, i.e.,
|
|
64
|
+
only if the plan was not changed meanwhile (re-estimating the task
|
|
65
|
+
otherwise), so a concurrent change of the task by another agent or a
|
|
66
|
+
human is never lost. It writes neither the `Status:` nor the
|
|
67
|
+
`Modified:` key of the task.
|
|
68
|
+
|
|
69
|
+
The estimation succeeds only if the agent tool succeeded, the skill
|
|
70
|
+
reported no error, and the task afterwards carries a valid `Effort:`
|
|
71
|
+
key. A successfully estimated task is left untagged, as its valid
|
|
72
|
+
`Effort:` key itself keeps it from being estimated again, until its
|
|
73
|
+
plan content changes, which drops its then stale `Effort:` key, so it
|
|
74
|
+
is estimated again. A task not estimated is tagged with
|
|
75
|
+
`ase-agent-estimator` instead, so it is not processed again and again
|
|
76
|
+
(removing this tag requests another estimation).
|
|
77
|
+
|
|
78
|
+
In the mode `request`, the estimator instead processes the `estimate`
|
|
79
|
+
requests attached to tasks in any lifecycle status except a finished
|
|
80
|
+
one (e.g., `DRAFTED`, which the mode `phase` never picks up), as
|
|
81
|
+
requested via `ase task request` *id* `estimate` (see
|
|
82
|
+
`ase-task-request`(1)) resp. key `R` of the task boards, where a
|
|
83
|
+
prompt is ignored and hence may be empty. Like the request
|
|
84
|
+
agent `editor` (see `ase-agent-editor`(1)), it claims such a task by
|
|
85
|
+
tagging it with `ase-agent-estimate:active` and assigning it to itself
|
|
86
|
+
(deferring a task in an activity status until it changes), estimates
|
|
87
|
+
its effort via the skill invocation `ase-task-estimate --force` *id*,
|
|
88
|
+
i.e., even if it already carries a valid `Effort:` key, restores its
|
|
89
|
+
previous assignee, and removes the request on success, else turns it
|
|
90
|
+
into a failed request (to be re-requested). The estimation succeeds
|
|
91
|
+
under the same conditions as in the mode `phase`, so a request for an
|
|
92
|
+
explicit epic or a task with an empty plan fails.
|
|
93
|
+
|
|
94
|
+
Both modes can run side by side as two agents of the kind `estimator`
|
|
95
|
+
under different names (e.g., `estimator` and `estimator-request`).
|
|
96
|
+
|
|
97
|
+
On an interrupt, a task being processed in the mode `phase` is left
|
|
98
|
+
untouched, while the request of a task being processed in the mode
|
|
99
|
+
`request` is turned back into a pending one. The
|
|
100
|
+
estimator works in the project root only, so it neither requires a Git
|
|
101
|
+
working copy nor `git`, and it accepts no `--repo` and `--tempdir`. See
|
|
102
|
+
`ase-agent`(1) for the common mechanics of all agents.
|
|
103
|
+
|
|
104
|
+
## OPTIONS
|
|
105
|
+
|
|
106
|
+
- \[`-h`|`--help`\]: Show usage information of `ase agent estimator`
|
|
107
|
+
(or of the given sub-command) only.
|
|
108
|
+
|
|
109
|
+
All other options belong to the sub-commands (see **COMMANDS**).
|
|
110
|
+
|
|
111
|
+
## COMMANDS
|
|
112
|
+
|
|
113
|
+
- `ase agent estimator start` \[*options*\]: Start the estimator agent
|
|
114
|
+
in the background, logging into `.ase/agent/`*name*`.log`. The agent
|
|
115
|
+
is validated and initialized (e.g., its agent tool is looked up)
|
|
116
|
+
before the command returns (waiting up to 30 seconds), so a failing
|
|
117
|
+
agent is reported together with the tail of its log. An agent of the
|
|
118
|
+
same name already running is left alone. The options are:
|
|
119
|
+
|
|
120
|
+
- \[`-n`|`--name` *name*\]: The name of the agent (default:
|
|
121
|
+
`estimator`): up to 64 letters, digits, underscores, and dashes,
|
|
122
|
+
starting with a letter or digit, other than the name of another
|
|
123
|
+
agent kind, `relay`, or `fleet`.
|
|
124
|
+
|
|
125
|
+
It names the agent in its log lines (also in the shared processing
|
|
126
|
+
log attachment `agent`), and its process files
|
|
127
|
+
`.ase/agent/`*name*`.yaml` and `.ase/agent/`*name*`.log`. Agents
|
|
128
|
+
of the kind `estimator` under different names form a pool,
|
|
129
|
+
competing for the same tasks and processing them in parallel to
|
|
130
|
+
each other.
|
|
131
|
+
|
|
132
|
+
- \[`-t`|`--tool` *tool*\]: The headless agent tool processing the
|
|
133
|
+
tasks: `claude` (*Anthropic Claude Code CLI*), `copilot` (*GitHub
|
|
134
|
+
Copilot CLI*), or `codex` (*OpenAI Codex CLI*) (default:
|
|
135
|
+
`$ASE_TOOL`, else `claude`). Its command has to be found in
|
|
136
|
+
`$PATH`.
|
|
137
|
+
|
|
138
|
+
- \[`-p`|`--parallel` *num*\]: The maximum number of tasks processed
|
|
139
|
+
in parallel by this agent (default: `1`), a positive integer.
|
|
140
|
+
|
|
141
|
+
- \[`-T`|`--timeout` *duration*\]: The maximum duration of
|
|
142
|
+
processing a task (the run of the agent tool), as *number* *unit*
|
|
143
|
+
(without a space) with *unit* `s` (seconds), `m` (minutes), or `h`
|
|
144
|
+
(hours) (default: `60m`). A processing exceeding it is aborted and
|
|
145
|
+
counts as failed.
|
|
146
|
+
|
|
147
|
+
- \[`-o`|`--one-shot`\]: Terminate the agent, instead of observing
|
|
148
|
+
for further tasks, once a check of the task store finds no
|
|
149
|
+
dispatchable task while the agent processes no task anymore --
|
|
150
|
+
intended for CI contexts like GitHub Actions, and not allowed in a
|
|
151
|
+
fleet. A check of the task store failing three times in a row then
|
|
152
|
+
terminates the agent with a non-zero exit status (instead of being
|
|
153
|
+
retried endlessly after a growing delay).
|
|
154
|
+
|
|
155
|
+
- \[`--agent-relay` *url*\]: The agent relay to pass the live
|
|
156
|
+
presence of the agent to, as `ase://`*addr*`:`*port*\[`/`*token*\]
|
|
157
|
+
resp. `ases://`*addr*`:`*port*\[`/`*token*\]\[`?insecure`\] for
|
|
158
|
+
HTTPS (default: the configured `project.relay.url`, else none).
|
|
159
|
+
See **AGENT RELAY** in `ase-agent`(1).
|
|
160
|
+
|
|
161
|
+
- \[`-m`|`--mode` *mode*\]: The mode of the agent (default:
|
|
162
|
+
`phase`): `phase` estimates the unestimated tasks in `PLANNED`
|
|
163
|
+
automatically and unclaimed (intended for the final estimation),
|
|
164
|
+
while `request` (re-)estimates the tasks of the `estimate`
|
|
165
|
+
requests in any unfinished status (intended for dry-runs). An
|
|
166
|
+
invalid mode is an error. The built-in values of the following
|
|
167
|
+
options are given per mode where they differ, and in the mode
|
|
168
|
+
`request`, the options for `phase` only (`--unclaimed`,
|
|
169
|
+
`--state-`\*, `--tag-success`, `--tag-failure`, `--tag-retry`,
|
|
170
|
+
`--assign-required`, and `--attach-skip`) are not allowed.
|
|
171
|
+
|
|
172
|
+
- \[`--title` *text*\]: The one-line title of the operation of the
|
|
173
|
+
agent (at most 80 characters), shown on the task boards. Built-in:
|
|
174
|
+
`Estimate the effort of unestimated planned tasks` (`phase`) resp.
|
|
175
|
+
`Re-estimate the effort of tasks on request` (`request`).
|
|
176
|
+
|
|
177
|
+
- \[`--description` *text*\]: The brief description of the operation
|
|
178
|
+
of the agent (about 3-6 lines, at most 600 characters, with its
|
|
179
|
+
whitespace collapsed), shown on the task boards. Built-in: a
|
|
180
|
+
description of the operation of the mode.
|
|
181
|
+
|
|
182
|
+
- \[`--type` `phase`|`request`\]: The processing type: `phase`
|
|
183
|
+
claims the tasks by their lifecycle status, `request` processes
|
|
184
|
+
the prompt requests attached to the tasks. Generic default:
|
|
185
|
+
`phase`. Built-in: `phase` (mode `phase`) resp. `request` (mode
|
|
186
|
+
`request`).
|
|
187
|
+
|
|
188
|
+
- \[`--workdir` *kind*\]: The working directory of the agent tool:
|
|
189
|
+
`project`, `source`, `changeset`, `changeset-read`, or `target`.
|
|
190
|
+
Generic default: `project`. Built-in: `project`.
|
|
191
|
+
|
|
192
|
+
- \[`--lifecycle` *model*\]: A supported task lifecycle model
|
|
193
|
+
(`solo`, `team`, or `enterprise`, repeatable). Generic default:
|
|
194
|
+
every model containing all given states, resp. all models for
|
|
195
|
+
`request` and with `--unclaimed`. Built-in: not set. Hence, all
|
|
196
|
+
task lifecycle models are supported.
|
|
197
|
+
|
|
198
|
+
- \[`--serial`\]: Process the tasks serially only, ignoring
|
|
199
|
+
`--parallel`. Built-in: not set.
|
|
200
|
+
|
|
201
|
+
- \[`--unclaimed`\]: Process the tasks of the incoming states
|
|
202
|
+
without claiming them, independent of their assignee and
|
|
203
|
+
predecessors, and without ever changing their status and assignee
|
|
204
|
+
(`phase` only). Built-in: enabled (mode `phase`) resp. not set
|
|
205
|
+
(mode `request`).
|
|
206
|
+
|
|
207
|
+
- \[`--params` *name*`=`*value*\]: The value of a parameter
|
|
208
|
+
declared by the definition (repeatable). Built-in: none declared.
|
|
209
|
+
|
|
210
|
+
- \[`--state-incoming` *state*\]: The state of the tasks to process
|
|
211
|
+
(mandatory for `phase`, repeatable with `--unclaimed` only), where
|
|
212
|
+
each state is adapted onto the task lifecycle model of the project.
|
|
213
|
+
Built-in: `PLANNED` (i.e., `PLANNING` for `team` and `OPEN` for
|
|
214
|
+
`solo`) (mode `phase`) resp. not set (mode `request`). For
|
|
215
|
+
instance, `--state-incoming DRAFTED --state-incoming PLANNED`
|
|
216
|
+
additionally estimates the drafted tasks of the `enterprise`
|
|
217
|
+
model in the mode `phase`.
|
|
218
|
+
|
|
219
|
+
- \[`--state-activity` *state*\]: The state of a task during its
|
|
220
|
+
processing. Generic default: the incoming state. Built-in: not
|
|
221
|
+
set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
222
|
+
|
|
223
|
+
- \[`--state-success` *state*\]: The target state on success.
|
|
224
|
+
Generic default: the incoming state. Built-in: not set. Not
|
|
225
|
+
allowed, as the estimator processes the tasks unclaimed.
|
|
226
|
+
|
|
227
|
+
- \[`--state-failure` *state*\]: The target state on failure.
|
|
228
|
+
Generic default: the incoming state. Built-in: not set. Not
|
|
229
|
+
allowed, as the estimator processes the tasks unclaimed.
|
|
230
|
+
|
|
231
|
+
- \[`--state-phase` *state*\]: The phase success state, into which
|
|
232
|
+
the skill itself can move a task. Generic default: the success
|
|
233
|
+
state. Built-in: not set. Not allowed, as the estimator processes
|
|
234
|
+
the tasks unclaimed.
|
|
235
|
+
|
|
236
|
+
- \[`--state-passed` *state*\]: The first state from which on a task
|
|
237
|
+
has passed the phase for its `After:` successors. Generic default:
|
|
238
|
+
the phase success state. Built-in: not set. Not allowed, as the
|
|
239
|
+
estimator processes the tasks unclaimed.
|
|
240
|
+
|
|
241
|
+
- \[`--state-verdict` *VERDICT*`=`*state*\]: The target state per
|
|
242
|
+
verdict (repeatable). Built-in: not set. Not allowed, as the
|
|
243
|
+
estimator processes the tasks unclaimed.
|
|
244
|
+
|
|
245
|
+
- \[`--tag-name` *tag*\]: The tag of the processed tasks
|
|
246
|
+
(`ase-agent-`*word*). Generic default: `ase-agent-`*name*, resp.
|
|
247
|
+
for `request` always `ase-agent-`*request-name*. Built-in:
|
|
248
|
+
`ase-agent-estimator` (mode `phase`) resp. `ase-agent-estimate`
|
|
249
|
+
(mode `request`).
|
|
250
|
+
|
|
251
|
+
- \[`--tag-success` *tag*\]: The tag on success: *tag-name*,
|
|
252
|
+
*tag-name*`:`*value*, or `none` (`phase` only). Generic default:
|
|
253
|
+
*tag-name*. Built-in: `none` (mode `phase`), as the valid
|
|
254
|
+
`Effort:` key of an estimated task keeps it from being estimated
|
|
255
|
+
again, resp. not set (mode `request`).
|
|
256
|
+
|
|
257
|
+
- \[`--tag-failure` *tag*\]: The tag on failure: *tag-name*,
|
|
258
|
+
*tag-name*`:`*value*, or `none` (`phase` only). Generic default:
|
|
259
|
+
*tag-name*. Built-in: not set.
|
|
260
|
+
|
|
261
|
+
- \[`--tag-require` *tag*\]: A tag a claimable task has to carry
|
|
262
|
+
(repeatable). Built-in: not set.
|
|
263
|
+
|
|
264
|
+
- \[`--tag-exclude` *tag*\]: A tag a claimable task must not carry
|
|
265
|
+
(repeatable). Built-in: not set.
|
|
266
|
+
|
|
267
|
+
- \[`--tag-retry`\]: A shorthand for `--tag-failure none`, so a
|
|
268
|
+
failed task is processed again after a growing delay (`phase`
|
|
269
|
+
only). Built-in: not set.
|
|
270
|
+
|
|
271
|
+
- \[`--assign-name` *who*\]: The assignee under which the tasks are
|
|
272
|
+
claimed, held, recognized, and released, and which names the
|
|
273
|
+
agent-owned worktrees. Generic default: the agent name. Built-in:
|
|
274
|
+
not set. As the estimator never assigns a task in the mode
|
|
275
|
+
`phase`, it then names the mode of the agent as announced to the
|
|
276
|
+
agent relay only.
|
|
277
|
+
|
|
278
|
+
- \[`--assign-required`\]: Claim only the tasks explicitly assigned
|
|
279
|
+
to *who* of `--assign-name` (`phase` only). Built-in: not set. Not
|
|
280
|
+
allowed, as the estimator processes the tasks unclaimed.
|
|
281
|
+
|
|
282
|
+
- \[`--assign-success` *who*\]: The assignee of a task after its
|
|
283
|
+
successful processing: a name, `none`, or `previous`. Generic
|
|
284
|
+
default: `none` for `phase`, `previous` for `request`. Built-in:
|
|
285
|
+
not set. Not allowed in the mode `phase`, as the estimator then
|
|
286
|
+
processes the tasks unclaimed.
|
|
287
|
+
|
|
288
|
+
- \[`--assign-failure` *who*\]: The assignee of a task after its
|
|
289
|
+
failed processing: a name, `none`, or `previous`. Generic default:
|
|
290
|
+
`none` for `phase`, `previous` for `request`. Built-in: not set.
|
|
291
|
+
Not allowed in the mode `phase`, as the estimator then processes
|
|
292
|
+
the tasks unclaimed.
|
|
293
|
+
|
|
294
|
+
- \[`--request-name` *name*\]: The name of the processed requests
|
|
295
|
+
(`request` only). Generic default: the agent name. Built-in: not
|
|
296
|
+
set (mode `phase`) resp. `estimate` (mode `request`).
|
|
297
|
+
|
|
298
|
+
- \[`--request-done` *word*\]: The word naming a processed task in
|
|
299
|
+
the log lines (`request` only). Generic default: `processed`.
|
|
300
|
+
Built-in: not set (mode `phase`) resp. `estimated` (mode
|
|
301
|
+
`request`).
|
|
302
|
+
|
|
303
|
+
- \[`--prompt-skill` *name*\]: The skill to invoke (mutually
|
|
304
|
+
exclusive with `--prompt-text` and `--prompt-file`). Built-in:
|
|
305
|
+
`ase-task-estimate`.
|
|
306
|
+
|
|
307
|
+
- \[`--prompt-args` *template*\]: The argument template of the
|
|
308
|
+
skill. Generic default: `{id}` for `phase`, `{id}: {prompt}` for
|
|
309
|
+
`request`. Built-in: `{id}` (mode `phase`) resp. `--force {id}`
|
|
310
|
+
(mode `request`), the latter ignoring the request prompt.
|
|
311
|
+
|
|
312
|
+
- \[`--prompt-text` *template*\]: The prompt text template to invoke
|
|
313
|
+
instead of a skill. Built-in: not set.
|
|
314
|
+
|
|
315
|
+
- \[`--prompt-file` *file*\]: The file with the prompt text template
|
|
316
|
+
to invoke instead of a skill. Built-in: not set.
|
|
317
|
+
|
|
318
|
+
- \[`--prepare-run` *cmd*\]: A shell command run in the working
|
|
319
|
+
directory before the prompt (repeatable). Built-in: not set.
|
|
320
|
+
|
|
321
|
+
- \[`--success-criterion` *criterion*\]: A success criterion:
|
|
322
|
+
`exit`, `clean`, `changed`, `verdict`, `attachment`, or `status`
|
|
323
|
+
(repeatable). Generic default: `exit` and `clean` for `phase`,
|
|
324
|
+
`clean` and `changed` for `request`. Built-in: `exit` and
|
|
325
|
+
`clean` (in both modes, as a re-estimation of the same size leaves
|
|
326
|
+
the plan content unchanged), where additionally the task has to
|
|
327
|
+
carry a valid `Effort:` key afterwards.
|
|
328
|
+
|
|
329
|
+
- \[`--success-match` *regex*\]: A regular expression an output line
|
|
330
|
+
has to match (repeatable). Built-in: not set.
|
|
331
|
+
|
|
332
|
+
- \[`--verdict-label` *label*\]: The label after which the verdict
|
|
333
|
+
is given in the output. Built-in: not set.
|
|
334
|
+
|
|
335
|
+
- \[`--verdict-allow` *VERDICT*\]: An accepted verdict (repeatable).
|
|
336
|
+
Generic default: the verdicts of `--state-verdict`, else any.
|
|
337
|
+
Built-in: not set.
|
|
338
|
+
|
|
339
|
+
- \[`--attach-output` *kind*\]: The kind of the attachment storing
|
|
340
|
+
the output lines of the prompt. Built-in: not set.
|
|
341
|
+
|
|
342
|
+
- \[`--attach-expect` *spec*\]: The attachment
|
|
343
|
+
\[*mime-type*`;`\]*kind* to be created or changed by the
|
|
344
|
+
processing for the success criterion `attachment`. Built-in: not
|
|
345
|
+
set.
|
|
346
|
+
|
|
347
|
+
- \[`--attach-skip` *spec*\]: The attachment
|
|
348
|
+
\[*mime-type*`;`\]*kind* leaving a task unclaimed (`phase` only).
|
|
349
|
+
Built-in: not set.
|
|
350
|
+
|
|
351
|
+
- \[`--attach-changeset` *kind*\]: The kind of the attachment
|
|
352
|
+
`text/x-diff;`*kind* storing the change set snapshot of the task
|
|
353
|
+
(with `--workdir changeset` or `target` only). Built-in: not set.
|
|
354
|
+
Not allowed, as the estimator works in the project root.
|
|
355
|
+
|
|
356
|
+
- \[`--finish-commit`\]: Commit the work onto a `branch:` changeset
|
|
357
|
+
and publish it (with `--workdir changeset` only). Built-in: not
|
|
358
|
+
set. Not allowed, as the estimator works in the project root.
|
|
359
|
+
|
|
360
|
+
- \[`--finish-success` *cmd*\]: A shell command run in the working
|
|
361
|
+
directory after a successful processing. Built-in: not set.
|
|
362
|
+
|
|
363
|
+
- \[`--finish-failure` *cmd*\]: A shell command run in the working
|
|
364
|
+
directory after a failed processing. Built-in: not set.
|
|
365
|
+
|
|
366
|
+
- \[`-f`|`--foreground`\]: Run the agent in the current process
|
|
367
|
+
instead, logging to the terminal, until it is interrupted (e.g.,
|
|
368
|
+
via `CTRL+C`) or stopped, where an agent of the same name already
|
|
369
|
+
running is an error.
|
|
370
|
+
|
|
371
|
+
- \[`-h`|`--help`\]: Show the usage information of the sub-command
|
|
372
|
+
only.
|
|
373
|
+
|
|
374
|
+
The options `--`*group*`-`*item* above override the built-in
|
|
375
|
+
definition of the agent (where an option also replaces its mutually
|
|
376
|
+
exclusive alternatives, e.g., `--prompt-text` replaces the skill of
|
|
377
|
+
`--prompt-skill`), while the agent keeps the identity of its kind (its
|
|
378
|
+
runs and its presence are named after `estimator`). See
|
|
379
|
+
`ase-agent-adhoc`(1) for their full semantics.
|
|
380
|
+
|
|
381
|
+
- `ase agent estimator status` \[`-n`|`--name` *name*\]: Report whether
|
|
382
|
+
the estimator agent of the name *name* (default: `estimator`) is
|
|
383
|
+
running, as `agent` *name*`: running (pid` *pid*`)` resp. `agent`
|
|
384
|
+
*name*`: not running` (exit status 1).
|
|
385
|
+
|
|
386
|
+
- `ase agent estimator log` \[`-f`|`--follow`\] \[`-n`|`--lines` *n*\]
|
|
387
|
+
\[`--name` *name*\]: Show the log `.ase/agent/`*name*`.log` of the
|
|
388
|
+
estimator agent of the name *name* (default: `estimator`) run in the
|
|
389
|
+
background, where an agent of a fleet logs into the log of the fleet
|
|
390
|
+
instead (see `ase-agent-fleet`(1)). Without a log file, an
|
|
391
|
+
informational message is shown only. The options are:
|
|
392
|
+
|
|
393
|
+
- \[`-f`|`--follow`\]: Show the last *n* lines (default: 10) and
|
|
394
|
+
then follow all newly appended lines, in the style of `tail -f`,
|
|
395
|
+
until interrupted.
|
|
396
|
+
|
|
397
|
+
- \[`-n`|`--lines` *n*\]: Show the last *n* lines only (default:
|
|
398
|
+
all, or 10 with `--follow`).
|
|
399
|
+
|
|
400
|
+
- \[`--name` *name*\]: The name of the agent (default:
|
|
401
|
+
`estimator`), given in its long form only, as `-n` is the short
|
|
402
|
+
form of `--lines`.
|
|
403
|
+
|
|
404
|
+
- `ase agent estimator stop` \[`-n`|`--name` *name*\]: Stop the
|
|
405
|
+
estimator agent of the name *name* (default: `estimator`) by
|
|
406
|
+
`SIGTERM`, waiting (up to 5 minutes) until it aborted its running
|
|
407
|
+
processings. An agent not running is reported informationally only.
|
|
408
|
+
|
|
409
|
+
## CONFIGURATION
|
|
410
|
+
|
|
411
|
+
The estimation itself is configured by the keys
|
|
412
|
+
`project.task.effort.scale`, `project.task.effort.factor`,
|
|
413
|
+
`project.task.effort.file`, `project.task.effort.line`, and
|
|
414
|
+
`project.task.effort.iteration` of the skill
|
|
415
|
+
`ase-task-estimate` (see `ase-config`(1)).
|
|
416
|
+
|
|
417
|
+
## ENVIRONMENT
|
|
418
|
+
|
|
419
|
+
- `ASE_TOOL`: The default agent tool of `--tool` (default: `claude`).
|
|
420
|
+
|
|
421
|
+
- `ASE_AGENT_RELAY_TOKEN`: The bearer token of the agent relay, if not
|
|
422
|
+
embedded in the URL of `--agent-relay` resp. `project.relay.url`.
|
|
423
|
+
|
|
424
|
+
- `ASE_HEADLESS`: Set to `true` for the agent tool processes spawned by
|
|
425
|
+
the agent.
|
|
426
|
+
|
|
427
|
+
## FILES
|
|
428
|
+
|
|
429
|
+
- `.ase/agent/`*name*`.yaml`: The process state (kind, process id, and
|
|
430
|
+
process start time) of the agent, existing while it runs.
|
|
431
|
+
|
|
432
|
+
- `.ase/agent/`*name*`.log`: The log of the agent run in the background.
|
|
433
|
+
|
|
434
|
+
- *per-user state
|
|
435
|
+
directory*`/agent-estimator/`*store-hash*`/`*run-id*`.lock` and
|
|
436
|
+
`.json`: The run lock and the run record of each estimator agent
|
|
437
|
+
process, which records the tasks it currently processes, so no other
|
|
438
|
+
agent of the kind `estimator` on the same host picks them up.
|
|
439
|
+
|
|
440
|
+
## EXIT STATUS
|
|
441
|
+
|
|
442
|
+
`ase agent estimator start` exits with status `0` once the agent
|
|
443
|
+
started (or was already running), resp. once a foreground agent
|
|
444
|
+
terminated regularly, and with status `1` on any error (e.g., an
|
|
445
|
+
invalid option or a missing agent tool). `ase agent estimator status`
|
|
446
|
+
exits with status `1` if the agent is not running.
|
|
447
|
+
|
|
448
|
+
## EXAMPLES
|
|
449
|
+
|
|
450
|
+
```sh
|
|
451
|
+
# start the estimator, estimating the planned tasks without a valid effort
|
|
452
|
+
$ ase agent estimator start
|
|
453
|
+
|
|
454
|
+
# estimate all drafted and planned tasks once, e.g., in a CI context
|
|
455
|
+
$ ase agent estimator start -f -o --state-incoming DRAFTED --state-incoming PLANNED
|
|
456
|
+
|
|
457
|
+
# start a second estimator of another agent tool as a pool
|
|
458
|
+
$ ase agent estimator start -n estimator-codex -t codex
|
|
459
|
+
|
|
460
|
+
# additionally start an estimator processing the "estimate" requests,
|
|
461
|
+
# and request the (re-)estimation of a drafted task
|
|
462
|
+
$ ase agent estimator start -n estimator-request -m request
|
|
463
|
+
$ ase task request example-task estimate re-estimate
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
## SEE ALSO
|
|
467
|
+
|
|
468
|
+
`ase`(1), `ase-agent`(1), `ase-agent-rebooter`(1),
|
|
469
|
+
`ase-agent-condenser`(1), `ase-agent-researcher`(1),
|
|
470
|
+
`ase-agent-implementer`(1), `ase-agent-qualifier`(1),
|
|
471
|
+
`ase-agent-integrator`(1), `ase-agent-editor`(1), `ase-agent-adhoc`(1),
|
|
472
|
+
`ase-agent-fleet`(1), `ase-agent-relay`(1), `ase-task`(1),
|
|
473
|
+
`ase-task-board`(1), `ase-config`(1).
|
|
474
|
+
|
|
475
|
+
## AUTHOR
|
|
476
|
+
|
|
477
|
+
Dr. Ralf S. Engelschall <rse@engelschall.com>
|