@rse/ase 1.0.6 → 2.0.0
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-agent-definition-api.d.ts +184 -0
- package/dst/ase-agent-definition-api.js +6 -0
- package/dst/ase-agent-definition-builtin/condenser.js +42 -0
- package/dst/ase-agent-definition-builtin/editor.js +45 -0
- package/dst/ase-agent-definition-builtin/estimator.js +98 -0
- package/dst/ase-agent-definition-builtin/implementer.js +121 -0
- package/dst/ase-agent-definition-builtin/integrator.js +56 -0
- package/dst/ase-agent-definition-builtin/qualifier.js +61 -0
- package/dst/ase-agent-definition-builtin/rebooter.js +41 -0
- package/dst/ase-agent-definition-builtin/researcher.js +77 -0
- package/dst/ase-agent-definition-core.js +827 -0
- package/dst/ase-agent-fleet.js +772 -0
- package/dst/ase-agent-process.js +232 -0
- package/dst/ase-agent-relay-client.js +509 -0
- package/dst/ase-agent-relay-core.js +213 -0
- package/dst/ase-agent-relay-server-bind.js +242 -0
- package/dst/ase-agent-relay-server-cli.js +50 -0
- package/dst/ase-agent-runtime-claim.js +189 -0
- package/dst/ase-agent-runtime-engine.js +1100 -0
- package/dst/ase-agent-runtime-exec.js +275 -0
- package/dst/ase-agent-runtime-phase.js +581 -0
- package/dst/ase-agent-runtime-request.js +272 -0
- package/dst/ase-agent-runtime-tool.js +207 -0
- package/dst/ase-agent-runtime.js +1316 -0
- package/dst/ase-agent.js +65 -0
- package/dst/ase-artifact.js +6 -5
- package/dst/ase-config-core.js +465 -0
- package/dst/ase-config-schema.js +351 -0
- package/dst/ase-config-scope.js +172 -0
- package/dst/ase-config.js +25 -585
- package/dst/ase-hook.js +230 -116
- package/dst/ase-lib-daemon-cli.js +130 -0
- package/dst/ase-lib-hash.js +20 -0
- package/dst/{ase-log.js → ase-lib-log.js} +40 -7
- package/dst/ase-lib-server-bind.js +115 -0
- package/dst/ase-lib-server-cli.js +474 -0
- package/dst/{ase-table.js → ase-lib-table.js} +1 -1
- package/dst/{ase-version.js → ase-lib-version.js} +3 -0
- package/dst/ase-man.js +96 -0
- package/dst/ase-mcp.js +166 -13
- package/dst/{ase-getopt.js → ase-service-getopt.js} +82 -80
- package/dst/{ase-markdown.js → ase-service-markdown.js} +18 -11
- package/dst/ase-service-otel.js +1246 -0
- package/dst/{ase-skills.js → ase-service-skills.js} +29 -64
- package/dst/ase-service-state.js +101 -0
- package/dst/ase-service.js +251 -76
- package/dst/ase-setup-common.js +141 -0
- package/dst/ase-setup-mcp.js +359 -0
- package/dst/ase-setup-settings.js +837 -0
- package/dst/ase-setup.js +113 -869
- package/dst/ase-spec.js +31 -19
- package/dst/ase-statusline.js +108 -43
- package/dst/ase-task-board-core.js +739 -0
- package/dst/ase-task-board-filter.js +127 -0
- package/dst/ase-task-board-flow.js +237 -0
- package/dst/ase-task-board-graph.js +497 -0
- package/dst/ase-task-board-stats.js +263 -0
- package/dst/ase-task-board-tui-control.js +775 -0
- package/dst/ase-task-board-tui-model.js +1008 -0
- package/dst/ase-task-board-tui-popup.js +626 -0
- package/dst/ase-task-board-tui-style.js +106 -0
- package/dst/ase-task-board-tui-view.js +847 -0
- package/dst/ase-task-board-tui.js +189 -0
- package/dst/ase-task-board-web-client.css +1 -0
- package/dst/ase-task-board-web-client.html +20 -0
- package/dst/ase-task-board-web-client.js +81 -0
- package/dst/ase-task-board-web-server.js +823 -0
- package/dst/ase-task-board.js +134 -0
- package/dst/ase-task-format.js +757 -0
- package/dst/ase-task-request.js +208 -0
- package/dst/ase-task-store-client.js +495 -0
- package/dst/ase-task-store-core.js +804 -0
- package/dst/ase-task-store-issues.js +237 -0
- package/dst/ase-task-store-plugin-api.js +6 -0
- package/dst/ase-task-store-plugin-ase.js +484 -0
- package/dst/ase-task-store-plugin-delegate.js +137 -0
- package/dst/ase-task-store-plugin-gitea.js +666 -0
- package/dst/ase-task-store-plugin-github.js +696 -0
- package/dst/ase-task-store-plugin-gitlab.js +668 -0
- package/dst/ase-task-store-server-bind.js +538 -0
- package/dst/ase-task-store-server-cli.js +154 -0
- package/dst/ase-task.js +1335 -357
- package/dst/{ase-compat.js → ase-util-compat.js} +2 -2
- package/dst/{ase-diagram.js → ase-util-diagram.js} +107 -32
- package/dst/{ase-meta.js → ase-util-meta.js} +2 -2
- package/dst/{ase-metric.js → ase-util-metric.js} +2 -2
- package/dst/{ase-mint.js → ase-util-mint.js} +19 -12
- package/dst/{ase-worktree.js → ase-util-worktree.js} +30 -19
- package/dst/ase-util.js +20 -0
- package/dst/ase.js +108 -32
- package/dst/man/ase-agent-adhoc.1 +515 -0
- package/dst/man/ase-agent-condenser.1 +193 -0
- package/dst/man/ase-agent-editor.1 +212 -0
- package/dst/man/ase-agent-estimator.1 +214 -0
- package/dst/man/ase-agent-fleet.1 +185 -0
- package/dst/man/ase-agent-implementer.1 +233 -0
- package/dst/man/ase-agent-integrator.1 +213 -0
- package/dst/man/ase-agent-qualifier.1 +214 -0
- package/dst/man/ase-agent-rebooter.1 +193 -0
- package/dst/man/ase-agent-relay.1 +128 -0
- package/dst/man/ase-agent-researcher.1 +217 -0
- package/dst/man/ase-agent.1 +264 -0
- package/dst/man/ase-artifact-list.1 +38 -0
- package/dst/man/ase-artifact-name.1 +39 -0
- package/dst/man/ase-artifact.1 +56 -0
- package/dst/man/ase-config-delete.1 +45 -0
- package/dst/man/ase-config-edit.1 +48 -0
- package/dst/man/ase-config-get.1 +46 -0
- package/dst/man/ase-config-init.1 +60 -0
- package/dst/man/ase-config-list.1 +42 -0
- package/dst/man/ase-config-set.1 +52 -0
- package/dst/man/ase-config.1 +225 -0
- package/dst/man/ase-hook-permission-request.1 +36 -0
- package/dst/man/ase-hook-pre-tool-use.1 +59 -0
- package/dst/man/ase-hook-session-end.1 +47 -0
- package/dst/man/ase-hook-session-persona.1 +37 -0
- package/dst/man/ase-hook-session-start.1 +81 -0
- package/dst/man/ase-hook-stop.1 +34 -0
- package/dst/man/ase-hook-user-prompt-submit.1 +34 -0
- package/dst/man/ase-hook.1 +51 -0
- package/dst/man/ase-man.1 +67 -0
- package/dst/man/ase-mcp.1 +61 -0
- package/dst/man/ase-service-log.1 +43 -0
- package/dst/man/ase-service-send.1 +47 -0
- package/dst/man/ase-service-start.1 +54 -0
- package/dst/man/ase-service-status.1 +46 -0
- package/dst/man/ase-service-stop.1 +37 -0
- package/dst/man/ase-service.1 +85 -0
- package/dst/man/ase-setup-disable.1 +44 -0
- package/dst/man/ase-setup-enable.1 +45 -0
- package/dst/man/ase-setup-install.1 +73 -0
- package/dst/man/ase-setup-mcp.1 +124 -0
- package/dst/man/ase-setup-status.1 +60 -0
- package/dst/man/ase-setup-statusline.1 +92 -0
- package/dst/man/ase-setup-telemetry.1 +92 -0
- package/dst/man/ase-setup-uninstall.1 +59 -0
- package/dst/man/ase-setup-update.1 +64 -0
- package/dst/man/ase-setup.1 +93 -0
- package/dst/man/ase-spec-export.1 +62 -0
- package/dst/man/ase-spec-lint.1 +40 -0
- package/dst/man/ase-spec-preview.1 +40 -0
- package/dst/man/ase-spec.1 +46 -0
- package/dst/man/ase-statusline.1 +189 -0
- package/dst/man/ase-task-assign.1 +71 -0
- package/dst/man/ase-task-board.1 +384 -0
- package/dst/man/ase-task-delete.1 +35 -0
- package/dst/man/ase-task-edit.1 +46 -0
- package/dst/man/ase-task-idscheme.1 +65 -0
- package/dst/man/ase-task-lifecycle.1 +57 -0
- package/dst/man/ase-task-list.1 +47 -0
- package/dst/man/ase-task-load.1 +36 -0
- package/dst/man/ase-task-newid.1 +61 -0
- package/dst/man/ase-task-purge.1 +37 -0
- package/dst/man/ase-task-rename.1 +44 -0
- package/dst/man/ase-task-request.1 +61 -0
- package/dst/man/ase-task-save.1 +48 -0
- package/dst/man/ase-task-status.1 +55 -0
- package/dst/man/ase-task-store.1 +194 -0
- package/dst/man/ase-task-view.1 +40 -0
- package/dst/man/ase-task.1 +160 -0
- package/dst/man/ase-util-compat.1 +25 -0
- package/dst/man/ase-util-diagram.1 +76 -0
- package/dst/man/ase-util-meta.1 +45 -0
- package/dst/man/ase-util-metric.1 +54 -0
- package/dst/man/ase-util-mint.1 +59 -0
- package/dst/man/ase-util-worktree.1 +72 -0
- package/dst/man/ase-util.1 +50 -0
- package/dst/man/ase.1 +124 -0
- package/package.json +79 -21
- 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-meta-diagram.md +12 -8
- package/plugin/agents/ase-repo-review.md +322 -0
- package/plugin/hooks/hooks-codex.json +5 -0
- package/plugin/hooks/hooks-copilot.json +5 -0
- package/plugin/hooks/hooks.json +8 -0
- package/plugin/meta/ase-common-approach.md +117 -0
- package/plugin/meta/ase-common-changeset.md +256 -0
- package/plugin/meta/ase-common-code.md +10 -173
- package/plugin/meta/ase-common-grill.md +317 -0
- package/plugin/meta/ase-common-resolve.md +305 -0
- package/plugin/meta/ase-common-task.md +83 -4
- package/plugin/meta/ase-constitution.md +0 -2
- package/plugin/meta/ase-format-specbook.md +208 -25
- package/plugin/meta/ase-format-specbook.yaml +242 -851
- package/plugin/meta/ase-format-task.md +669 -125
- package/plugin/meta/ase-persona.md +3 -4
- package/plugin/meta/ase-skill.md +9 -0
- package/plugin/mods/ase-mods.ts +409 -0
- package/plugin/mods/claude-code.d.ts +13417 -0
- package/plugin/skills/ase-arch-analyze/SKILL.md +1 -1
- package/plugin/skills/ase-arch-analyze/help.md +2 -2
- package/plugin/skills/ase-code-analyze/SKILL.md +59 -8
- package/plugin/skills/ase-code-analyze/help.md +29 -4
- package/plugin/skills/ase-code-edit/SKILL.md +107 -181
- package/plugin/skills/ase-code-edit/help.md +118 -31
- package/plugin/skills/ase-code-lint/SKILL.md +64 -13
- package/plugin/skills/ase-code-lint/help.md +32 -2
- package/plugin/skills/ase-docs-proofread/SKILL.md +4 -4
- package/plugin/skills/ase-docs-proofread/help.md +1 -1
- package/plugin/skills/ase-docs-refine/SKILL.md +4 -4
- package/plugin/skills/ase-docs-shorten/SKILL.md +4 -4
- package/plugin/skills/ase-help-intent/data.md +2164 -1087
- package/plugin/skills/ase-help-intent/help.md +1 -1
- package/plugin/skills/ase-help-skill/catalog.md +12 -9
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +1 -1
- package/plugin/skills/ase-meta-config/SKILL.md +3 -4
- package/plugin/skills/ase-meta-config/help.md +31 -10
- package/plugin/skills/ase-meta-mint/SKILL.md +5 -5
- package/plugin/skills/ase-meta-mint/help.md +10 -5
- package/plugin/skills/ase-meta-why/help.md +1 -1
- package/plugin/skills/ase-meta-workflow/SKILL.md +7 -7
- package/plugin/skills/ase-meta-workflow/help.md +4 -4
- package/plugin/skills/ase-meta-workflow/sample.md +3 -3
- package/plugin/skills/ase-meta-workflow/workflow.txt +22 -18
- package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/SKILL.md +4 -3
- package/plugin/skills/{ase-meta-changelog → ase-repo-changelog}/help.md +5 -5
- package/plugin/skills/{ase-meta-commit → ase-repo-commit}/SKILL.md +6 -6
- package/plugin/skills/{ase-meta-commit → ase-repo-commit}/help.md +5 -5
- package/plugin/skills/{ase-meta-diff → ase-repo-diff}/SKILL.md +6 -6
- package/plugin/skills/{ase-meta-diff → ase-repo-diff}/help.md +8 -8
- package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/SKILL.md +19 -19
- package/plugin/skills/{ase-code-dissect → ase-repo-dissect}/help.md +10 -12
- package/plugin/skills/ase-repo-merge/SKILL.md +346 -0
- package/plugin/skills/ase-repo-merge/help.md +107 -0
- package/plugin/skills/ase-repo-resolve/SKILL.md +158 -0
- package/plugin/skills/ase-repo-resolve/help.md +102 -0
- package/plugin/skills/ase-repo-review/SKILL.md +406 -0
- package/plugin/skills/ase-repo-review/help.md +181 -0
- package/plugin/skills/ase-spec-edit/SKILL.md +117 -183
- package/plugin/skills/ase-spec-edit/help.md +107 -26
- package/plugin/skills/ase-sync-reconcile/help.md +1 -1
- package/plugin/skills/ase-task-assign/SKILL.md +111 -0
- package/plugin/skills/ase-task-assign/help.md +119 -0
- package/plugin/skills/ase-task-condense/SKILL.md +21 -21
- package/plugin/skills/ase-task-condense/help.md +12 -10
- package/plugin/skills/ase-task-delete/SKILL.md +1 -1
- package/plugin/skills/ase-task-dissect/SKILL.md +71 -48
- package/plugin/skills/ase-task-dissect/help.md +10 -9
- package/plugin/skills/ase-task-edit/SKILL.md +379 -94
- package/plugin/skills/ase-task-edit/help.md +95 -22
- package/plugin/skills/ase-task-estimate/SKILL.md +492 -0
- package/plugin/skills/ase-task-estimate/help.md +158 -0
- package/plugin/skills/ase-task-grill/SKILL.md +246 -138
- package/plugin/skills/ase-task-grill/help.md +129 -26
- package/plugin/skills/ase-task-id/SKILL.md +8 -1
- package/plugin/skills/ase-task-id/help.md +6 -3
- package/plugin/skills/ase-task-implement/SKILL.md +535 -145
- package/plugin/skills/ase-task-implement/help.md +138 -47
- package/plugin/skills/ase-task-integrate/SKILL.md +549 -0
- package/plugin/skills/ase-task-integrate/help.md +187 -0
- package/plugin/skills/ase-task-list/SKILL.md +55 -23
- package/plugin/skills/ase-task-list/help.md +45 -21
- package/plugin/skills/ase-task-reboot/SKILL.md +84 -43
- package/plugin/skills/ase-task-reboot/help.md +28 -8
- package/plugin/skills/ase-task-rename/SKILL.md +10 -2
- package/plugin/skills/ase-task-research/SKILL.md +386 -0
- package/plugin/skills/ase-task-research/help.md +102 -0
- package/plugin/skills/ase-task-status/SKILL.md +137 -0
- package/plugin/skills/ase-task-status/help.md +80 -0
- package/plugin/skills/ase-task-view/SKILL.md +49 -24
- package/plugin/skills/ase-task-view/help.md +19 -9
- package/plugin/agents/ase-meta-review.md +0 -187
- package/plugin/skills/ase-code-craft/SKILL.md +0 -264
- package/plugin/skills/ase-code-craft/help.md +0 -122
- package/plugin/skills/ase-code-refactor/SKILL.md +0 -232
- package/plugin/skills/ase-code-refactor/help.md +0 -109
- package/plugin/skills/ase-code-resolve/SKILL.md +0 -289
- package/plugin/skills/ase-code-resolve/help.md +0 -116
- package/plugin/skills/ase-meta-review/SKILL.md +0 -210
- package/plugin/skills/ase-meta-review/help.md +0 -96
- package/plugin/skills/ase-task-preflight/SKILL.md +0 -166
- package/plugin/skills/ase-task-preflight/help.md +0 -82
- /package/dst/{ase-ignore.js → ase-lib-ignore.js} +0 -0
- /package/dst/{ase-stdio.js → ase-lib-stdio.js} +0 -0
- /package/dst/{ase-kv.js → ase-service-kv.js} +0 -0
- /package/dst/{ase-sleep.js → ase-service-sleep.js} +0 -0
- /package/dst/{ase-timestamp.js → ase-service-timestamp.js} +0 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
.TH "ASE-AGENT-ESTIMATOR" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
|
|
2
|
+
.SH "NAME"
|
|
3
|
+
\fBase-agent-estimator\fR - Effort Estimation Agent
|
|
4
|
+
.SH "SYNOPSIS"
|
|
5
|
+
.P
|
|
6
|
+
\fBase agent estimator start\fR \[lB]\fB-n\fR|\fB--name\fR \fIname\fR\[rB] \[lB]\fB-t\fR|\fB--tool\fR \fBclaude\fR|\fBcopilot\fR|\fBcodex\fR\[rB] \[lB]\fB-p\fR|\fB--parallel\fR \fInum\fR\[rB] \[lB]\fB-T\fR|\fB--timeout\fR \fIduration\fR\[rB] \[lB]\fB-o\fR|\fB--one-shot\fR\[rB] \[lB]\fB--agent-relay\fR \fIurl\fR\[rB] \[lB]\fB-m\fR|\fB--mode\fR \fBphase\fR|\fBrequest\fR\[rB] \[lB]\fB--\fR\fIgroup\fR\fB-\fR\fIitem\fR \fIvalue\fR \[lB]...\[rB]\[rB] \[lB]\fB-f\fR|\fB--foreground\fR\[rB]
|
|
7
|
+
.P
|
|
8
|
+
\fBase agent estimator status\fR \[lB]\fB-n\fR|\fB--name\fR \fIname\fR\[rB]
|
|
9
|
+
.P
|
|
10
|
+
\fBase agent estimator log\fR \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB] \[lB]\fB--name\fR \fIname\fR\[rB]
|
|
11
|
+
.P
|
|
12
|
+
\fBase agent estimator stop\fR \[lB]\fB-n\fR|\fB--name\fR \fIname\fR\[rB]
|
|
13
|
+
.SH "DESCRIPTION"
|
|
14
|
+
.P
|
|
15
|
+
\fBase agent estimator\fR estimates the effort of tasks, i.e., it stores the expected human time of a task as a T-shirt size in its \fBEffort:\fR frontmatter key (see the skill \fBase-task-estimate\fR). Unlike the phase agents, it drives no phase and supports all task lifecycle models (\fBsolo\fR, \fBteam\fR, and \fBenterprise\fR). It runs in one of two modes (see \fB--mode\fR): the mode \fBphase\fR (the default) estimates the unestimated planned tasks automatically and is intended for the \fIfinal\fR estimation of the tasks, once their plans are complete, while the mode \fBrequest\fR (re-)estimates the tasks in any unfinished status on request and is intended for \fIdry-runs\fR, i.e., provisional estimations of plans still in progress.
|
|
16
|
+
.P
|
|
17
|
+
In the mode \fBphase\fR, the estimator observes the tasks in the state \fBPLANNED\fR, adapted onto the task lifecycle model of the project, i.e., \fBPLANNED\fR for \fBenterprise\fR, \fBPLANNING\fR for \fBteam\fR, and \fBOPEN\fR for \fBsolo\fR (see \fB--state-incoming\fR), which do not carry its tag \fBase-agent-estimator\fR yet, independent of their \fBAssignee:\fR and their \fBAfter:\fR predecessors. Of these, it processes every task which carries no valid \fBEffort:\fR key yet, whose plan is not empty, and which is no explicit epic (a task whose \fBGroup:\fR is its own id, as its effort is the sum of the efforts of its members).
|
|
18
|
+
.P
|
|
19
|
+
The estimator processes each such task \fIunclaimed\fR (see \fB--unclaimed\fR): it neither moves the task into an activity state, nor tags it as active, nor assigns it to itself, and it never changes its status or its assignee. Hence, it keeps no other agent and no human off the task. However, the built-in \fBimplementer\fR by default waits with a \fBPLANNED\fR task until the estimator is done with it (see its parameter \fBeffort-wait\fR in \fBase-agent-implementer\fR(1)), so with both agents running, the tasks are estimated before their implementation. An agent of the kind \fBestimator\fR does not pick up a task already processed by another one on the same host.
|
|
20
|
+
.P
|
|
21
|
+
It estimates the effort via the skill invocation \fBase-task-estimate\fR \fIid\fR, which writes just the \fBEffort:\fR key in a conditional save, i.e., only if the plan was not changed meanwhile (re-estimating the task otherwise), so a concurrent change of the task by another agent or a human is never lost. It writes neither the \fBStatus:\fR nor the \fBModified:\fR key of the task.
|
|
22
|
+
.P
|
|
23
|
+
The estimation succeeds only if the agent tool succeeded, the skill reported no error, and the task afterwards carries a valid \fBEffort:\fR key. A successfully estimated task is left untagged, as its valid \fBEffort:\fR key itself keeps it from being estimated again, until its plan content changes, which drops its then stale \fBEffort:\fR key, so it is estimated again. A task not estimated is tagged with \fBase-agent-estimator\fR instead, so it is not processed again and again (removing this tag requests another estimation).
|
|
24
|
+
.P
|
|
25
|
+
In the mode \fBrequest\fR, the estimator instead processes the \fBestimate\fR requests attached to tasks in any lifecycle status except a finished one (e.g., \fBDRAFTED\fR, which the mode \fBphase\fR never picks up), as requested via \fBase task request\fR \fIid\fR \fBestimate\fR (see \fBase-task-request\fR(1)) resp. key \fBR\fR of the task boards, where a prompt is ignored and hence may be empty. Like the request agent \fBeditor\fR (see \fBase-agent-editor\fR(1)), it claims such a task by tagging it with \fBase-agent-estimate:active\fR and assigning it to itself (deferring a task in an activity status until it changes), estimates its effort via the skill invocation \fBase-task-estimate --force\fR \fIid\fR, i.e., even if it already carries a valid \fBEffort:\fR key, restores its previous assignee, and removes the request on success, else turns it into a failed request (to be re-requested). The estimation succeeds under the same conditions as in the mode \fBphase\fR, so a request for an explicit epic or a task with an empty plan fails.
|
|
26
|
+
.P
|
|
27
|
+
Both modes can run side by side as two agents of the kind \fBestimator\fR under different names (e.g., \fBestimator\fR and \fBestimator-request\fR).
|
|
28
|
+
.P
|
|
29
|
+
On an interrupt, a task being processed in the mode \fBphase\fR is left untouched, while the request of a task being processed in the mode \fBrequest\fR is turned back into a pending one. The estimator works in the project root only, so it neither requires a Git working copy nor \fBgit\fR, and it accepts no \fB--repo\fR and \fB--tempdir\fR. See \fBase-agent\fR(1) for the common mechanics of all agents.
|
|
30
|
+
.SH "OPTIONS"
|
|
31
|
+
.RS 0
|
|
32
|
+
.IP \(bu 4
|
|
33
|
+
\[lB]\fB-h\fR|\fB--help\fR\[rB]: Show usage information of \fBase agent estimator\fR (or of the given sub-command) only.
|
|
34
|
+
.RE 0
|
|
35
|
+
.P
|
|
36
|
+
All other options belong to the sub-commands (see \fBCOMMANDS\fR).
|
|
37
|
+
.SH "COMMANDS"
|
|
38
|
+
.RS 0
|
|
39
|
+
.IP \(bu 4
|
|
40
|
+
\fBase agent estimator start\fR \[lB]\fIoptions\fR\[rB]: Start the estimator agent in the background, logging into \fB.ase/agent/\fR\fIname\fR\fB.log\fR. The agent is validated and initialized (e.g., its agent tool is looked up) before the command returns (waiting up to 30 seconds), so a failing agent is reported together with the tail of its log. An agent of the same name already running is left alone. The options are:
|
|
41
|
+
.RS 4
|
|
42
|
+
.IP \(bu 4
|
|
43
|
+
\[lB]\fB-n\fR|\fB--name\fR \fIname\fR\[rB]: The name of the agent (default: \fBestimator\fR): up to 64 letters, digits, underscores, and dashes, starting with a letter or digit, other than the name of another agent kind, \fBrelay\fR, or \fBfleet\fR.
|
|
44
|
+
.sp
|
|
45
|
+
It names the agent in its log lines (also in the shared processing log attachment \fBagent\fR), and its process files \fB.ase/agent/\fR\fIname\fR\fB.yaml\fR and \fB.ase/agent/\fR\fIname\fR\fB.log\fR. Agents of the kind \fBestimator\fR under different names form a pool, competing for the same tasks and processing them in parallel to each other.
|
|
46
|
+
.IP \(bu 4
|
|
47
|
+
\[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]: The headless agent tool processing the tasks: \fBclaude\fR (\fIAnthropic Claude Code CLI\fR), \fBcopilot\fR (\fIGitHub Copilot CLI\fR), or \fBcodex\fR (\fIOpenAI Codex CLI\fR) (default: \fB$ASE_TOOL\fR, else \fBclaude\fR). Its command has to be found in \fB$PATH\fR.
|
|
48
|
+
.IP \(bu 4
|
|
49
|
+
\[lB]\fB-p\fR|\fB--parallel\fR \fInum\fR\[rB]: The maximum number of tasks processed in parallel by this agent (default: \fB1\fR), a positive integer.
|
|
50
|
+
.IP \(bu 4
|
|
51
|
+
\[lB]\fB-T\fR|\fB--timeout\fR \fIduration\fR\[rB]: The maximum duration of processing a task (the run of the agent tool), as \fInumber\fR \fIunit\fR (without a space) with \fIunit\fR \fBs\fR (seconds), \fBm\fR (minutes), or \fBh\fR (hours) (default: \fB60m\fR). A processing exceeding it is aborted and counts as failed.
|
|
52
|
+
.IP \(bu 4
|
|
53
|
+
\[lB]\fB-o\fR|\fB--one-shot\fR\[rB]: Terminate the agent, instead of observing for further tasks, once a check of the task store finds no dispatchable task while the agent processes no task anymore -- intended for CI contexts like GitHub Actions, and not allowed in a fleet. A check of the task store failing three times in a row then terminates the agent with a non-zero exit status (instead of being retried endlessly after a growing delay).
|
|
54
|
+
.IP \(bu 4
|
|
55
|
+
\[lB]\fB--agent-relay\fR \fIurl\fR\[rB]: The agent relay to pass the live presence of the agent to, as \fBase://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB] resp. \fBases://\fR\fIaddr\fR\fB:\fR\fIport\fR\[lB]\fB/\fR\fItoken\fR\[rB]\[lB]\fB?insecure\fR\[rB] for HTTPS (default: the configured \fBproject.relay.url\fR, else none). See \fBAGENT RELAY\fR in \fBase-agent\fR(1).
|
|
56
|
+
.IP \(bu 4
|
|
57
|
+
\[lB]\fB-m\fR|\fB--mode\fR \fImode\fR\[rB]: The mode of the agent (default: \fBphase\fR): \fBphase\fR estimates the unestimated tasks in \fBPLANNED\fR automatically and unclaimed (intended for the final estimation), while \fBrequest\fR (re-)estimates the tasks of the \fBestimate\fR requests in any unfinished status (intended for dry-runs). An invalid mode is an error. The built-in values of the following options are given per mode where they differ, and in the mode \fBrequest\fR, the options for \fBphase\fR only (\fB--unclaimed\fR, \fB--state-\fR*, \fB--tag-success\fR, \fB--tag-failure\fR, \fB--tag-retry\fR, \fB--assign-required\fR, and \fB--attach-skip\fR) are not allowed.
|
|
58
|
+
.IP \(bu 4
|
|
59
|
+
\[lB]\fB--title\fR \fItext\fR\[rB]: The one-line title of the operation of the agent (at most 80 characters), shown on the task boards. Built-in: \fBEstimate the effort of unestimated planned tasks\fR (\fBphase\fR) resp. \fBRe-estimate the effort of tasks on request\fR (\fBrequest\fR).
|
|
60
|
+
.IP \(bu 4
|
|
61
|
+
\[lB]\fB--description\fR \fItext\fR\[rB]: The brief description of the operation of the agent (about 3-6 lines, at most 600 characters, with its whitespace collapsed), shown on the task boards. Built-in: a description of the operation of the mode.
|
|
62
|
+
.IP \(bu 4
|
|
63
|
+
\[lB]\fB--type\fR \fBphase\fR|\fBrequest\fR\[rB]: The processing type: \fBphase\fR claims the tasks by their lifecycle status, \fBrequest\fR processes the prompt requests attached to the tasks. Generic default: \fBphase\fR. Built-in: \fBphase\fR (mode \fBphase\fR) resp. \fBrequest\fR (mode \fBrequest\fR).
|
|
64
|
+
.IP \(bu 4
|
|
65
|
+
\[lB]\fB--workdir\fR \fIkind\fR\[rB]: The working directory of the agent tool: \fBproject\fR, \fBsource\fR, \fBchangeset\fR, \fBchangeset-read\fR, or \fBtarget\fR. Generic default: \fBproject\fR. Built-in: \fBproject\fR.
|
|
66
|
+
.IP \(bu 4
|
|
67
|
+
\[lB]\fB--lifecycle\fR \fImodel\fR\[rB]: A supported task lifecycle model (\fBsolo\fR, \fBteam\fR, or \fBenterprise\fR, repeatable). Generic default: every model containing all given states, resp. all models for \fBrequest\fR and with \fB--unclaimed\fR. Built-in: not set. Hence, all task lifecycle models are supported.
|
|
68
|
+
.IP \(bu 4
|
|
69
|
+
\[lB]\fB--serial\fR\[rB]: Process the tasks serially only, ignoring \fB--parallel\fR. Built-in: not set.
|
|
70
|
+
.IP \(bu 4
|
|
71
|
+
\[lB]\fB--unclaimed\fR\[rB]: Process the tasks of the incoming states without claiming them, independent of their assignee and predecessors, and without ever changing their status and assignee (\fBphase\fR only). Built-in: enabled (mode \fBphase\fR) resp. not set (mode \fBrequest\fR).
|
|
72
|
+
.IP \(bu 4
|
|
73
|
+
\[lB]\fB--params\fR \fIname\fR\fB=\fR\fIvalue\fR\[rB]: The value of a parameter declared by the definition (repeatable). Built-in: none declared.
|
|
74
|
+
.IP \(bu 4
|
|
75
|
+
\[lB]\fB--state-incoming\fR \fIstate\fR\[rB]: The state of the tasks to process (mandatory for \fBphase\fR, repeatable with \fB--unclaimed\fR only), where each state is adapted onto the task lifecycle model of the project. Built-in: \fBPLANNED\fR (i.e., \fBPLANNING\fR for \fBteam\fR and \fBOPEN\fR for \fBsolo\fR) (mode \fBphase\fR) resp. not set (mode \fBrequest\fR). For instance, \fB--state-incoming DRAFTED --state-incoming PLANNED\fR additionally estimates the drafted tasks of the \fBenterprise\fR model in the mode \fBphase\fR.
|
|
76
|
+
.IP \(bu 4
|
|
77
|
+
\[lB]\fB--state-activity\fR \fIstate\fR\[rB]: The state of a task during its processing. Generic default: the incoming state. Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
78
|
+
.IP \(bu 4
|
|
79
|
+
\[lB]\fB--state-success\fR \fIstate\fR\[rB]: The target state on success. Generic default: the incoming state. Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
80
|
+
.IP \(bu 4
|
|
81
|
+
\[lB]\fB--state-failure\fR \fIstate\fR\[rB]: The target state on failure. Generic default: the incoming state. Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
82
|
+
.IP \(bu 4
|
|
83
|
+
\[lB]\fB--state-phase\fR \fIstate\fR\[rB]: The phase success state, into which the skill itself can move a task. Generic default: the success state. Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
84
|
+
.IP \(bu 4
|
|
85
|
+
\[lB]\fB--state-passed\fR \fIstate\fR\[rB]: The first state from which on a task has passed the phase for its \fBAfter:\fR successors. Generic default: the phase success state. Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
86
|
+
.IP \(bu 4
|
|
87
|
+
\[lB]\fB--state-verdict\fR \fIVERDICT\fR\fB=\fR\fIstate\fR\[rB]: The target state per verdict (repeatable). Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
88
|
+
.IP \(bu 4
|
|
89
|
+
\[lB]\fB--tag-name\fR \fItag\fR\[rB]: The tag of the processed tasks (\fBase-agent-\fR\fIword\fR). Generic default: \fBase-agent-\fR\fIname\fR, resp. for \fBrequest\fR always \fBase-agent-\fR\fIrequest-name\fR. Built-in: \fBase-agent-estimator\fR (mode \fBphase\fR) resp. \fBase-agent-estimate\fR (mode \fBrequest\fR).
|
|
90
|
+
.IP \(bu 4
|
|
91
|
+
\[lB]\fB--tag-success\fR \fItag\fR\[rB]: The tag on success: \fItag-name\fR, \fItag-name\fR\fB:\fR\fIvalue\fR, or \fBnone\fR (\fBphase\fR only). Generic default: \fItag-name\fR. Built-in: \fBnone\fR (mode \fBphase\fR), as the valid \fBEffort:\fR key of an estimated task keeps it from being estimated again, resp. not set (mode \fBrequest\fR).
|
|
92
|
+
.IP \(bu 4
|
|
93
|
+
\[lB]\fB--tag-failure\fR \fItag\fR\[rB]: The tag on failure: \fItag-name\fR, \fItag-name\fR\fB:\fR\fIvalue\fR, or \fBnone\fR (\fBphase\fR only). Generic default: \fItag-name\fR. Built-in: not set.
|
|
94
|
+
.IP \(bu 4
|
|
95
|
+
\[lB]\fB--tag-require\fR \fItag\fR\[rB]: A tag a claimable task has to carry (repeatable). Built-in: not set.
|
|
96
|
+
.IP \(bu 4
|
|
97
|
+
\[lB]\fB--tag-exclude\fR \fItag\fR\[rB]: A tag a claimable task must not carry (repeatable). Built-in: not set.
|
|
98
|
+
.IP \(bu 4
|
|
99
|
+
\[lB]\fB--tag-retry\fR\[rB]: A shorthand for \fB--tag-failure none\fR, so a failed task is processed again after a growing delay (\fBphase\fR only). Built-in: not set.
|
|
100
|
+
.IP \(bu 4
|
|
101
|
+
\[lB]\fB--assign-name\fR \fIwho\fR\[rB]: The assignee under which the tasks are claimed, held, recognized, and released, and which names the agent-owned worktrees. Generic default: the agent name. Built-in: not set. As the estimator never assigns a task in the mode \fBphase\fR, it then names the mode of the agent as announced to the agent relay only.
|
|
102
|
+
.IP \(bu 4
|
|
103
|
+
\[lB]\fB--assign-required\fR\[rB]: Claim only the tasks explicitly assigned to \fIwho\fR of \fB--assign-name\fR (\fBphase\fR only). Built-in: not set. Not allowed, as the estimator processes the tasks unclaimed.
|
|
104
|
+
.IP \(bu 4
|
|
105
|
+
\[lB]\fB--assign-success\fR \fIwho\fR\[rB]: The assignee of a task after its successful processing: a name, \fBnone\fR, or \fBprevious\fR. Generic default: \fBnone\fR for \fBphase\fR, \fBprevious\fR for \fBrequest\fR. Built-in: not set. Not allowed in the mode \fBphase\fR, as the estimator then processes the tasks unclaimed.
|
|
106
|
+
.IP \(bu 4
|
|
107
|
+
\[lB]\fB--assign-failure\fR \fIwho\fR\[rB]: The assignee of a task after its failed processing: a name, \fBnone\fR, or \fBprevious\fR. Generic default: \fBnone\fR for \fBphase\fR, \fBprevious\fR for \fBrequest\fR. Built-in: not set. Not allowed in the mode \fBphase\fR, as the estimator then processes the tasks unclaimed.
|
|
108
|
+
.IP \(bu 4
|
|
109
|
+
\[lB]\fB--request-name\fR \fIname\fR\[rB]: The name of the processed requests (\fBrequest\fR only). Generic default: the agent name. Built-in: not set (mode \fBphase\fR) resp. \fBestimate\fR (mode \fBrequest\fR).
|
|
110
|
+
.IP \(bu 4
|
|
111
|
+
\[lB]\fB--request-done\fR \fIword\fR\[rB]: The word naming a processed task in the log lines (\fBrequest\fR only). Generic default: \fBprocessed\fR. Built-in: not set (mode \fBphase\fR) resp. \fBestimated\fR (mode \fBrequest\fR).
|
|
112
|
+
.IP \(bu 4
|
|
113
|
+
\[lB]\fB--prompt-skill\fR \fIname\fR\[rB]: The skill to invoke (mutually exclusive with \fB--prompt-text\fR and \fB--prompt-file\fR). Built-in: \fBase-task-estimate\fR.
|
|
114
|
+
.IP \(bu 4
|
|
115
|
+
\[lB]\fB--prompt-args\fR \fItemplate\fR\[rB]: The argument template of the skill. Generic default: \fB{id}\fR for \fBphase\fR, \fB{id}: {prompt}\fR for \fBrequest\fR. Built-in: \fB{id}\fR (mode \fBphase\fR) resp. \fB--force {id}\fR (mode \fBrequest\fR), the latter ignoring the request prompt.
|
|
116
|
+
.IP \(bu 4
|
|
117
|
+
\[lB]\fB--prompt-text\fR \fItemplate\fR\[rB]: The prompt text template to invoke instead of a skill. Built-in: not set.
|
|
118
|
+
.IP \(bu 4
|
|
119
|
+
\[lB]\fB--prompt-file\fR \fIfile\fR\[rB]: The file with the prompt text template to invoke instead of a skill. Built-in: not set.
|
|
120
|
+
.IP \(bu 4
|
|
121
|
+
\[lB]\fB--prepare-run\fR \fIcmd\fR\[rB]: A shell command run in the working directory before the prompt (repeatable). Built-in: not set.
|
|
122
|
+
.IP \(bu 4
|
|
123
|
+
\[lB]\fB--success-criterion\fR \fIcriterion\fR\[rB]: A success criterion: \fBexit\fR, \fBclean\fR, \fBchanged\fR, \fBverdict\fR, \fBattachment\fR, or \fBstatus\fR (repeatable). Generic default: \fBexit\fR and \fBclean\fR for \fBphase\fR, \fBclean\fR and \fBchanged\fR for \fBrequest\fR. Built-in: \fBexit\fR and \fBclean\fR (in both modes, as a re-estimation of the same size leaves the plan content unchanged), where additionally the task has to carry a valid \fBEffort:\fR key afterwards.
|
|
124
|
+
.IP \(bu 4
|
|
125
|
+
\[lB]\fB--success-match\fR \fIregex\fR\[rB]: A regular expression an output line has to match (repeatable). Built-in: not set.
|
|
126
|
+
.IP \(bu 4
|
|
127
|
+
\[lB]\fB--verdict-label\fR \fIlabel\fR\[rB]: The label after which the verdict is given in the output. Built-in: not set.
|
|
128
|
+
.IP \(bu 4
|
|
129
|
+
\[lB]\fB--verdict-allow\fR \fIVERDICT\fR\[rB]: An accepted verdict (repeatable). Generic default: the verdicts of \fB--state-verdict\fR, else any. Built-in: not set.
|
|
130
|
+
.IP \(bu 4
|
|
131
|
+
\[lB]\fB--attach-output\fR \fIkind\fR\[rB]: The kind of the attachment storing the output lines of the prompt. Built-in: not set.
|
|
132
|
+
.IP \(bu 4
|
|
133
|
+
\[lB]\fB--attach-expect\fR \fIspec\fR\[rB]: The attachment \[lB]\fImime-type\fR\fB;\fR\[rB]\fIkind\fR to be created or changed by the processing for the success criterion \fBattachment\fR. Built-in: not set.
|
|
134
|
+
.IP \(bu 4
|
|
135
|
+
\[lB]\fB--attach-skip\fR \fIspec\fR\[rB]: The attachment \[lB]\fImime-type\fR\fB;\fR\[rB]\fIkind\fR leaving a task unclaimed (\fBphase\fR only). Built-in: not set.
|
|
136
|
+
.IP \(bu 4
|
|
137
|
+
\[lB]\fB--attach-changeset\fR \fIkind\fR\[rB]: The kind of the attachment \fBtext/x-diff;\fR\fIkind\fR storing the change set snapshot of the task (with \fB--workdir changeset\fR or \fBtarget\fR only). Built-in: not set. Not allowed, as the estimator works in the project root.
|
|
138
|
+
.IP \(bu 4
|
|
139
|
+
\[lB]\fB--finish-commit\fR\[rB]: Commit the work onto a \fBbranch:\fR changeset and publish it (with \fB--workdir changeset\fR only). Built-in: not set. Not allowed, as the estimator works in the project root.
|
|
140
|
+
.IP \(bu 4
|
|
141
|
+
\[lB]\fB--finish-success\fR \fIcmd\fR\[rB]: A shell command run in the working directory after a successful processing. Built-in: not set.
|
|
142
|
+
.IP \(bu 4
|
|
143
|
+
\[lB]\fB--finish-failure\fR \fIcmd\fR\[rB]: A shell command run in the working directory after a failed processing. Built-in: not set.
|
|
144
|
+
.IP \(bu 4
|
|
145
|
+
\[lB]\fB-f\fR|\fB--foreground\fR\[rB]: Run the agent in the current process instead, logging to the terminal, until it is interrupted (e.g., via \fBCTRL+C\fR) or stopped, where an agent of the same name already running is an error.
|
|
146
|
+
.IP \(bu 4
|
|
147
|
+
\[lB]\fB-h\fR|\fB--help\fR\[rB]: Show the usage information of the sub-command only.
|
|
148
|
+
.RE 0
|
|
149
|
+
.IP "" 4
|
|
150
|
+
The options \fB--\fR\fIgroup\fR\fB-\fR\fIitem\fR above override the built-in definition of the agent (where an option also replaces its mutually exclusive alternatives, e.g., \fB--prompt-text\fR replaces the skill of \fB--prompt-skill\fR), while the agent keeps the identity of its kind (its runs and its presence are named after \fBestimator\fR). See \fBase-agent-adhoc\fR(1) for their full semantics.
|
|
151
|
+
.IP \(bu 4
|
|
152
|
+
\fBase agent estimator status\fR \[lB]\fB-n\fR|\fB--name\fR \fIname\fR\[rB]: Report whether the estimator agent of the name \fIname\fR (default: \fBestimator\fR) is running, as \fBagent\fR \fIname\fR\fB: running (pid\fR \fIpid\fR\fB)\fR resp. \fBagent\fR \fIname\fR\fB: not running\fR (exit status 1).
|
|
153
|
+
.IP \(bu 4
|
|
154
|
+
\fBase agent estimator log\fR \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB] \[lB]\fB--name\fR \fIname\fR\[rB]: Show the log \fB.ase/agent/\fR\fIname\fR\fB.log\fR of the estimator agent of the name \fIname\fR (default: \fBestimator\fR) run in the background, where an agent of a fleet logs into the log of the fleet instead (see \fBase-agent-fleet\fR(1)). Without a log file, an informational message is shown only. The options are:
|
|
155
|
+
.RS 4
|
|
156
|
+
.IP \(bu 4
|
|
157
|
+
\[lB]\fB-f\fR|\fB--follow\fR\[rB]: Show the last \fIn\fR lines (default: 10) and then follow all newly appended lines, in the style of \fBtail -f\fR, until interrupted.
|
|
158
|
+
.IP \(bu 4
|
|
159
|
+
\[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]: Show the last \fIn\fR lines only (default: all, or 10 with \fB--follow\fR).
|
|
160
|
+
.IP \(bu 4
|
|
161
|
+
\[lB]\fB--name\fR \fIname\fR\[rB]: The name of the agent (default: \fBestimator\fR), given in its long form only, as \fB-n\fR is the short form of \fB--lines\fR.
|
|
162
|
+
.RE 0
|
|
163
|
+
.IP \(bu 4
|
|
164
|
+
\fBase agent estimator stop\fR \[lB]\fB-n\fR|\fB--name\fR \fIname\fR\[rB]: Stop the estimator agent of the name \fIname\fR (default: \fBestimator\fR) by \fBSIGTERM\fR, waiting (up to 5 minutes) until it aborted its running processings. An agent not running is reported informationally only.
|
|
165
|
+
.RE 0
|
|
166
|
+
.SH "CONFIGURATION"
|
|
167
|
+
.P
|
|
168
|
+
The estimation itself is configured by the keys \fBproject.task.effort.scale\fR, \fBproject.task.effort.factor\fR, \fBproject.task.effort.file\fR, \fBproject.task.effort.line\fR, and \fBproject.task.effort.iteration\fR of the skill \fBase-task-estimate\fR (see \fBase-config\fR(1)).
|
|
169
|
+
.SH "ENVIRONMENT"
|
|
170
|
+
.RS 0
|
|
171
|
+
.IP \(bu 4
|
|
172
|
+
\fBASE_TOOL\fR: The default agent tool of \fB--tool\fR (default: \fBclaude\fR).
|
|
173
|
+
.IP \(bu 4
|
|
174
|
+
\fBASE_AGENT_RELAY_TOKEN\fR: The bearer token of the agent relay, if not embedded in the URL of \fB--agent-relay\fR resp. \fBproject.relay.url\fR.
|
|
175
|
+
.IP \(bu 4
|
|
176
|
+
\fBASE_HEADLESS\fR: Set to \fBtrue\fR for the agent tool processes spawned by the agent.
|
|
177
|
+
.RE 0
|
|
178
|
+
.SH "FILES"
|
|
179
|
+
.RS 0
|
|
180
|
+
.IP \(bu 4
|
|
181
|
+
\fB.ase/agent/\fR\fIname\fR\fB.yaml\fR: The process state (kind, process id, and process start time) of the agent, existing while it runs.
|
|
182
|
+
.IP \(bu 4
|
|
183
|
+
\fB.ase/agent/\fR\fIname\fR\fB.log\fR: The log of the agent run in the background.
|
|
184
|
+
.IP \(bu 4
|
|
185
|
+
\fIper-user state directory\fR\fB/agent-estimator/\fR\fIstore-hash\fR\fB/\fR\fIrun-id\fR\fB.lock\fR and \fB.json\fR: The run lock and the run record of each estimator agent process, which records the tasks it currently processes, so no other agent of the kind \fBestimator\fR on the same host picks them up.
|
|
186
|
+
.RE 0
|
|
187
|
+
.SH "EXIT STATUS"
|
|
188
|
+
.P
|
|
189
|
+
\fBase agent estimator start\fR exits with status \fB0\fR once the agent started (or was already running), resp. once a foreground agent terminated regularly, and with status \fB1\fR on any error (e.g., an invalid option or a missing agent tool). \fBase agent estimator status\fR exits with status \fB1\fR if the agent is not running.
|
|
190
|
+
.SH "EXAMPLES"
|
|
191
|
+
.P
|
|
192
|
+
.RS 2
|
|
193
|
+
.nf
|
|
194
|
+
# start the estimator, estimating the planned tasks without a valid effort
|
|
195
|
+
$ ase agent estimator start
|
|
196
|
+
|
|
197
|
+
# estimate all drafted and planned tasks once, e.g., in a CI context
|
|
198
|
+
$ ase agent estimator start -f -o --state-incoming DRAFTED --state-incoming PLANNED
|
|
199
|
+
|
|
200
|
+
# start a second estimator of another agent tool as a pool
|
|
201
|
+
$ ase agent estimator start -n estimator-codex -t codex
|
|
202
|
+
|
|
203
|
+
# additionally start an estimator processing the "estimate" requests,
|
|
204
|
+
# and request the (re-)estimation of a drafted task
|
|
205
|
+
$ ase agent estimator start -n estimator-request -m request
|
|
206
|
+
$ ase task request example-task estimate re-estimate
|
|
207
|
+
.fi
|
|
208
|
+
.RE
|
|
209
|
+
.SH "SEE ALSO"
|
|
210
|
+
.P
|
|
211
|
+
\fBase\fR(1), \fBase-agent\fR(1), \fBase-agent-rebooter\fR(1), \fBase-agent-condenser\fR(1), \fBase-agent-researcher\fR(1), \fBase-agent-implementer\fR(1), \fBase-agent-qualifier\fR(1), \fBase-agent-integrator\fR(1), \fBase-agent-editor\fR(1), \fBase-agent-adhoc\fR(1), \fBase-agent-fleet\fR(1), \fBase-agent-relay\fR(1), \fBase-task\fR(1), \fBase-task-board\fR(1), \fBase-config\fR(1).
|
|
212
|
+
.SH "AUTHOR"
|
|
213
|
+
.P
|
|
214
|
+
Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
.TH "ASE-AGENT-FLEET" "1" "October 2026" "2.0.0" "Agentic Software Engineering (ASE)"
|
|
2
|
+
.SH "NAME"
|
|
3
|
+
\fBase-agent-fleet\fR - Manage a Fleet of Agents
|
|
4
|
+
.SH "SYNOPSIS"
|
|
5
|
+
.P
|
|
6
|
+
\fBase agent fleet init\fR \[lB]\fB-c\fR|\fB--config\fR \fIfile\fR\[rB] \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB] \[lB]\fB--lifecycle\fR \fImodel\fR\[rB] \[lB]\fB--force\fR\[rB]
|
|
7
|
+
.P
|
|
8
|
+
\fBase agent fleet start\fR \[lB]\fB-c\fR|\fB--config\fR \fIfile\fR\[rB] \[lB]\fB-f\fR|\fB--foreground\fR\[rB]
|
|
9
|
+
.P
|
|
10
|
+
\fBase agent fleet status\fR
|
|
11
|
+
.P
|
|
12
|
+
\fBase agent fleet log\fR \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]
|
|
13
|
+
.P
|
|
14
|
+
\fBase agent fleet stop\fR
|
|
15
|
+
.SH "DESCRIPTION"
|
|
16
|
+
.P
|
|
17
|
+
\fBase agent fleet\fR manages a \fIfleet\fR of agents (see \fBase-agent\fR(1)), and optionally of the agent relay they report to (see \fBase-agent-relay\fR(1)), as given by a YAML configuration file (default: \fB.ase/fleet.yaml\fR). A supervising process runs each member in its own child process (in its own process group) via \fBase agent\fR \fIagent\fR \fBstart --foreground\fR resp. \fBase agent relay start --foreground\fR, and restarts it whenever it exits.
|
|
18
|
+
.P
|
|
19
|
+
All members log into the shared log \fB.ase/agent/fleet.log\fR of the fleet (or, with \fB--foreground\fR, to the terminal), where each line is prefixed with the name of the member writing it (resp. \fBfleet\fR for the fleet itself), padded to the longest name and followed by \fB|\fR (e.g., \fBimplementer | ase: \[lB]...\[rB]: \[lB]INFO\[rB]: ...\fR), and, on a terminal, colored by the name (the fleet in bold red, the relay in red, and all agents in blue).
|
|
20
|
+
.P
|
|
21
|
+
On its start, the fleet first starts the agent relay (if any, waiting up to 10 seconds until it persisted its runtime state), and then all agents in parallel (waiting up to 30 seconds for each one), where it passes the URL of the agent relay via \fB--agent-relay\fR and its actual token via \fB$ASE_AGENT_RELAY_TOKEN\fR to all agents. If any member fails to start, all members are stopped again and the failure is reported. A member exiting during the startup of the others is restarted once the fleet is ready.
|
|
22
|
+
.P
|
|
23
|
+
Afterwards, the fleet restarts every member whenever it exits (e.g., crashed, or stopped individually via \fBase agent\fR \fIagent\fR \fBstop\fR) after a delay starting at 1 second and doubled on each restart in a row up to 5 minutes, which is reset once the member ran for 10 minutes.
|
|
24
|
+
.P
|
|
25
|
+
On termination (\fBSIGTERM\fR, \fBSIGINT\fR, \fBSIGHUP\fR, or \fBSIGQUIT\fR), the fleet first stops all agents (each of which aborts its running processings and puts their tasks back) and then the agent relay (as the agents remove their presence from it), where a repeated signal is forwarded to all remaining members (terminating the agents at once).
|
|
26
|
+
.P
|
|
27
|
+
As each agent runs in its own process, the agents of a fleet do not coordinate their direct use of the Git working copy they are started in, so a working copy should be used directly by a single agent only, while the other agents are given \fBrepo\fR (see \fBase-agent\fR(1)).
|
|
28
|
+
.P
|
|
29
|
+
As the members run in their own process groups, they survive a fleet process killed without a chance to stop them (e.g., via \fBSIGKILL\fR). Such \fIorphaned\fR members, identified by their own runtime state still recording the process recorded by the runtime state of the fleet (resp., for the agent relay, by \fBrelay.yaml\fR still recording it), are stopped by the next \fBase agent fleet start\fR (before starting the new members) or \fBase agent fleet stop\fR.
|
|
30
|
+
.SH "COMMANDS"
|
|
31
|
+
.RS 0
|
|
32
|
+
.IP \(bu 4
|
|
33
|
+
\fBase agent fleet init\fR \[lB]\fB-c\fR|\fB--config\fR \fIfile\fR\[rB] \[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB] \[lB]\fB--lifecycle\fR \fImodel\fR\[rB] \[lB]\fB--force\fR\[rB]: Create the initial YAML configuration \fIfile\fR of a fleet for a task lifecycle model. For all models, it contains the section \fBrelay\fR (with all its options commented out, so they fall back to \fBproject.relay.url\fR, \fBproject.relay.crt\fR, and \fBproject.relay.key\fR), the section \fBdefault\fR (with \fBtool\fR, \fBparallel: 1\fR, and \fBtimeout: 60m\fR, plus \fBrepo\fR and \fBtempdir\fR commented out), the edit request agent \fBeditor\fR, the effort estimation agent \fBestimator\fR (mode \fBphase\fR, estimating the planned tasks, i.e., the \fBOPEN\fR tasks for \fBsolo\fR, the \fBPLANNING\fR tasks for \fBteam\fR, and the \fBPLANNED\fR tasks for \fBenterprise\fR, intended for the final estimation), a commented-out effort estimation request agent \fBestimator-request\fR (mode \fBrequest\fR, (re-)estimating the tasks in any unfinished status on request, intended for dry-runs), a commented-out research request agent \fBresearcher-request\fR (mode \fBrequest\fR, intended for topic-driven research), and a commented-out example of an ad-hoc request agent \fBlint\fR (see \fBase-agent-adhoc\fR(1)).
|
|
34
|
+
.sp
|
|
35
|
+
Additionally, it contains per task lifecycle model:
|
|
36
|
+
.RS 4
|
|
37
|
+
.IP \(bu 4
|
|
38
|
+
\fBsolo\fR: no phase agents, as the model has no activity states, so its tasks are driven interactively, while the agents only assist.
|
|
39
|
+
.IP \(bu 4
|
|
40
|
+
\fBteam\fR: the ad-hoc implementation phase agent \fBdeveloper\fR (as the built-in phase agents support the \fBenterprise\fR model only), which claims only the \fBPLANNING\fR tasks explicitly assigned to \fBdeveloper\fR (as the other ones are still planned) into \fBIMPLEMENTING\fR, implements them from their \fBSource:\fR into their \fBChangeset:\fR via the \fBase-task-implement\fR skill, and puts them into \fBSTALLED\fR unless they became \fBIMPLEMENTED\fR.
|
|
41
|
+
.IP \(bu 4
|
|
42
|
+
\fBenterprise\fR: the planning phase agents \fBrebooter\fR, \fBcondenser\fR, and \fBresearcher\fR (mode \fBphase\fR), each processing only the \fBDRAFTED\fR tasks explicitly assigned to it, and the phase agents \fBimplementer\fR (mode \fBimplement\fR, 2 tasks in parallel, waiting for the effort estimation, with its parameter \fBeffort-wait\fR commented out, to be set to \fBfalse\fR if the \fBestimator\fR is removed), \fBqualifier\fR (mode \fBjudge\fR, 2 tasks in parallel, so a human still decides on the qualification), and \fBintegrator\fR (mode \fBsquash\fR).
|
|
43
|
+
.RE 0
|
|
44
|
+
.IP "" 4
|
|
45
|
+
The configuration is checked like on \fBase agent fleet start\fR before it is written, and an already existing \fIfile\fR is overwritten only with \fB--force\fR. Options:
|
|
46
|
+
.RS 4
|
|
47
|
+
.IP \(bu 4
|
|
48
|
+
\[lB]\fB-c\fR|\fB--config\fR \fIfile\fR\[rB]: the YAML configuration file to create (default: \fB.ase/fleet.yaml\fR of the project).
|
|
49
|
+
.IP \(bu 4
|
|
50
|
+
\[lB]\fB-t\fR|\fB--tool\fR \fItool\fR\[rB]: the agent tool of all agents, \fBclaude\fR, \fBcopilot\fR, or \fBcodex\fR (default: \fB$ASE_TOOL\fR, else \fBclaude\fR).
|
|
51
|
+
.IP \(bu 4
|
|
52
|
+
\[lB]\fB--lifecycle\fR \fImodel\fR\[rB]: the task lifecycle model, \fBsolo\fR, \fBteam\fR, or \fBenterprise\fR (default: the configured \fBproject.task.lifecycle\fR, else \fBsolo\fR).
|
|
53
|
+
.IP \(bu 4
|
|
54
|
+
\[lB]\fB--force\fR\[rB]: overwrite an already existing configuration file.
|
|
55
|
+
.IP \(bu 4
|
|
56
|
+
\[lB]\fB-h\fR|\fB--help\fR\[rB]: show the usage information and exit.
|
|
57
|
+
.RE 0
|
|
58
|
+
.IP \(bu 4
|
|
59
|
+
\fBase agent fleet start\fR \[lB]\fB-c\fR|\fB--config\fR \fIfile\fR\[rB] \[lB]\fB-f\fR|\fB--foreground\fR\[rB]: Start the fleet of the YAML configuration \fIfile\fR (see \fBCONFIGURATION\fR) in the background (spawning a detached supervising process logging into \fB.ase/agent/fleet.log\fR), and return once all members started successfully, or with \fB--foreground\fR run the fleet in the current process.
|
|
60
|
+
.sp
|
|
61
|
+
The configuration is validated before the fleet starts. An already running fleet is left alone (and is an error with \fB--foreground\fR). With the section \fBrelay\fR, the fleet owns the per-user agent relay, which hence must not run already (stop it first via \fBase agent relay stop\fR, or remove the section \fBrelay\fR). Options:
|
|
62
|
+
.RS 4
|
|
63
|
+
.IP \(bu 4
|
|
64
|
+
\[lB]\fB-c\fR|\fB--config\fR \fIfile\fR\[rB]: the YAML configuration file (default: \fB.ase/fleet.yaml\fR of the project).
|
|
65
|
+
.IP \(bu 4
|
|
66
|
+
\[lB]\fB-f\fR|\fB--foreground\fR\[rB]: run the fleet in the current process, logging to the terminal, until it is interrupted (e.g., via \fBCTRL+C\fR) or stopped via \fBase agent fleet stop\fR (default: the option \fBforeground\fR of the section \fBfleet\fR).
|
|
67
|
+
.IP \(bu 4
|
|
68
|
+
\[lB]\fB-h\fR|\fB--help\fR\[rB]: show the usage information and exit.
|
|
69
|
+
.RE 0
|
|
70
|
+
.IP \(bu 4
|
|
71
|
+
\fBase agent fleet status\fR: Report whether the fleet is running (with its process id and configuration file, and whether it is still starting up), and for each member (with its kind) whether it is running (with its process id) or awaiting its restart, and how often it was restarted. Exits with status 1 if the fleet is not running.
|
|
72
|
+
.IP \(bu 4
|
|
73
|
+
\fBase agent fleet log\fR \[lB]\fB-f\fR|\fB--follow\fR\[rB] \[lB]\fB-n\fR|\fB--lines\fR \fIn\fR\[rB]: Show the log \fB.ase/agent/fleet.log\fR of the fleet run in the background, aggregating the lines of the fleet itself and of all its members, each one prefixed with its name, where the name and the log level tag are colored if the output is a terminal.
|
|
74
|
+
.sp
|
|
75
|
+
With \fB-n\fR|\fB--lines\fR \fIn\fR, only the last \fIn\fR lines are shown (default: all). With \fB-f\fR|\fB--follow\fR, the last \fIn\fR lines (default: 10) are shown and then, in the style of \fBtail -f\fR, all newly appended lines are followed until interrupted. If no log file exists, this is just reported (at log level \fBinfo\fR).
|
|
76
|
+
.IP \(bu 4
|
|
77
|
+
\fBase agent fleet stop\fR: Stop the fleet with all its members, first all agents and then the agent relay, by sending \fBSIGTERM\fR to the fleet process and waiting (up to 5 minutes) until it is gone. With the fleet process already gone (e.g., killed via \fBSIGKILL\fR), its orphaned members are stopped instead (see \fBDESCRIPTION\fR). A not running fleet is reported as such, without an error.
|
|
78
|
+
.RE 0
|
|
79
|
+
.SH "CONFIGURATION"
|
|
80
|
+
.P
|
|
81
|
+
The YAML configuration file of a fleet consists of the following top-level sections, where all options are given by their long names (without the leading \fB--\fR), \fBtrue\fR enables a flag, \fBfalse\fR or an empty value omits an option, and a list repeats an option:
|
|
82
|
+
.RS 0
|
|
83
|
+
.IP \(bu 4
|
|
84
|
+
\fBfleet\fR: (optional) The options of the fleet itself. The only option is \fBforeground\fR (a boolean, the same as \fB--foreground\fR of \fBase agent
|
|
85
|
+
fleet start\fR).
|
|
86
|
+
.IP \(bu 4
|
|
87
|
+
\fBrelay\fR: (optional) The options \fBaddress\fR, \fBport\fR, \fBtoken\fR, \fBcors\fR, \fBtls-cert\fR, and \fBtls-key\fR of \fBase agent relay start\fR (see \fBase-agent-relay\fR(1)). The presence of this section (even if empty) lets the fleet run and own the per-user agent relay.
|
|
88
|
+
.sp
|
|
89
|
+
Its options not given fall back as follows: \fBaddress\fR, \fBport\fR, and \fBtoken\fR to those of the configured \fBproject.relay.url\fR (its embedded token, else \fB$ASE_AGENT_RELAY_TOKEN\fR, else \fBproject.relay.token\fR), if it addresses a local address of this host (else this is warned about and \fBproject.relay.url\fR is not adopted), where a deviating \fBaddress\fR or \fBport\fR (resp. a \fBtls-cert\fR with an adopted \fBproject.relay.url\fR selecting HTTP) is warned about, as the task boards following \fBproject.relay.url\fR then do not see the agents of the fleet; and \fBtls-cert\fR and \fBtls-key\fR to \fBproject.relay.crt\fR and \fBproject.relay.key\fR (unless an adopted \fBproject.relay.url\fR selects HTTP), where an adopted \fBproject.relay.url\fR selecting HTTPS requires both.
|
|
90
|
+
.IP \(bu 4
|
|
91
|
+
\fBdefault\fR: (optional) The default options of all agents: \fBtool\fR, \fBparallel\fR, \fBtimeout\fR, \fBrepo\fR, \fBtempdir\fR, and \fBagent-relay\fR (see \fBase-agent\fR(1)), each one applied only to the agents supporting it (e.g., \fBrepo\fR not to \fBrebooter\fR), and overridden by the section of an agent. The option \fBagent-relay\fR is not allowed together with the section \fBrelay\fR.
|
|
92
|
+
.IP \(bu 4
|
|
93
|
+
\fIname\fR: One section per agent, named by its agent name (at most 64 letters, digits, underscores, and dashes, starting with a letter or digit, and neither the name of another agent kind, nor \fBrelay\fR or \fBfleet\fR), with the options of \fBase agent\fR \fIkind\fR \fBstart\fR and an optional \fBkind\fR (default: the section name), i.e., one of the built-in kinds \fBrebooter\fR, \fBcondenser\fR, \fBimplementer\fR, \fBqualifier\fR, \fBintegrator\fR, \fBeditor\fR, \fBestimator\fR, and \fBresearcher\fR, a definition kind of the project or the user, or \fBadhoc\fR (see \fBase-agent-adhoc\fR(1)). Hence, an agent of a definition kind is given by a section of its kind (or with \fBkind:\fR \fIkind\fR), and an agent defined inline by a section with \fBkind: adhoc\fR.
|
|
94
|
+
.sp
|
|
95
|
+
The options of the definitions can also be nested by group, like in a definition file (e.g., \fBprompt: { text: ... }\fR), where a key must not be given both flat and nested. The values of the parameters declared by the definition are given by the map \fBparams\fR (e.g., \fBparams: { severity: high }\fR), which repeats the option \fB--params\fR \fIname\fR\fB=\fR\fIvalue\fR per parameter.
|
|
96
|
+
.sp
|
|
97
|
+
The \fBdefinition\fR of \fBkind: adhoc\fR (unless a \fBbuiltin:\fR one) is relative to the configuration file, where hooks can be given only through a TypeScript or JavaScript definition file. A section without any options (an empty value) runs the agent of the kind of its name with its defaults.
|
|
98
|
+
.RE 0
|
|
99
|
+
.P
|
|
100
|
+
The following is refused, as the definitions of all agents are already resolved and validated on the start of the fleet:
|
|
101
|
+
.RS 0
|
|
102
|
+
.IP \(bu 4
|
|
103
|
+
the options \fBname\fR (given by the section name), \fBone-shot\fR (as the members are restarted), \fBforeground\fR, and \fBhelp\fR in the section of an agent, and \fBagent-relay\fR there together with the section \fBrelay\fR;
|
|
104
|
+
.IP \(bu 4
|
|
105
|
+
an unknown section option of \fBfleet\fR, \fBrelay\fR, or \fBdefault\fR, an invalid option name (other than lower-case letters, digits, and dashes), and a value other than a string, a number, a boolean, or a list of strings and numbers (resp., for \fBparams\fR, a map of strings, numbers, and booleans);
|
|
106
|
+
.IP \(bu 4
|
|
107
|
+
an unknown agent kind, and an option unknown to the \fBstart\fR command of the agent kind;
|
|
108
|
+
.IP \(bu 4
|
|
109
|
+
more than one agent of a built-in kind processing serially only (i.e., \fBintegrator\fR), and two agents processing serially only on the same tag (e.g., two agents of \fB--serial\fR definitions of the same resolved \fB--tag-name\fR, or one next to \fBintegrator\fR with its tag \fBase-agent-integrator\fR);
|
|
110
|
+
.IP \(bu 4
|
|
111
|
+
a configuration without any agent.
|
|
112
|
+
.RE 0
|
|
113
|
+
.P
|
|
114
|
+
Before the fleet starts, the structure of the configuration, the option names, the option syntax, and the definitions of the agents are checked, while the remaining option values (e.g., \fBparallel\fR or \fBtool\fR) are checked only once the corresponding member starts.
|
|
115
|
+
.SH "ENVIRONMENT"
|
|
116
|
+
.RS 0
|
|
117
|
+
.IP \(bu 4
|
|
118
|
+
\fBASE_TOOL\fR: The default of \fB--tool\fR of \fBase agent fleet init\fR, and of the agents without a \fBtool\fR option.
|
|
119
|
+
.IP \(bu 4
|
|
120
|
+
\fBASE_AGENT_RELAY_TOKEN\fR: The fallback token of the agent relay of the section \fBrelay\fR, if not embedded in \fBproject.relay.url\fR. The fleet passes the actual token of its agent relay to all agents through this variable.
|
|
121
|
+
.RE 0
|
|
122
|
+
.SH "FILES"
|
|
123
|
+
.RS 0
|
|
124
|
+
.IP \(bu 4
|
|
125
|
+
\fB.ase/fleet.yaml\fR: The default configuration of the fleet, written by the user (or initially created via \fBase agent fleet init\fR) and intended to be versioned.
|
|
126
|
+
.IP \(bu 4
|
|
127
|
+
\fB.ase/agent/fleet.yaml\fR: The process state of the running fleet: its process id and process start time, its configuration file, whether all its members completed their initial startup, and the kind, process id (\fBnull\fR while awaiting its restart), and number of restarts of each member. It exists while the fleet runs.
|
|
128
|
+
.IP \(bu 4
|
|
129
|
+
\fB.ase/agent/fleet.log\fR: The shared log of the fleet run in the background and of all its members.
|
|
130
|
+
.IP \(bu 4
|
|
131
|
+
\fB.ase/agent/\fR\fIname\fR\fB.yaml\fR: The process state of the member agent named \fIname\fR, existing while it runs.
|
|
132
|
+
.RE 0
|
|
133
|
+
.SH "EXIT STATUS"
|
|
134
|
+
.P
|
|
135
|
+
\fBinit\fR, \fBstart\fR, and \fBstop\fR exit with status 0 on success (also for a fleet already running resp. not running) and 1 on any error. \fBstatus\fR exits with status 1 if the fleet is not running. \fBlog\fR exits with status 0.
|
|
136
|
+
.SH "EXAMPLES"
|
|
137
|
+
.P
|
|
138
|
+
.RS 2
|
|
139
|
+
.nf
|
|
140
|
+
# create the initial configuration of a fleet, and start and follow it
|
|
141
|
+
$ ase agent fleet init -t claude --lifecycle enterprise
|
|
142
|
+
$ ase agent fleet start
|
|
143
|
+
$ ase agent fleet status
|
|
144
|
+
$ ase agent fleet log -f
|
|
145
|
+
|
|
146
|
+
# stop the fleet with all its members
|
|
147
|
+
$ ase agent fleet stop
|
|
148
|
+
.fi
|
|
149
|
+
.RE
|
|
150
|
+
.P
|
|
151
|
+
A configuration \fB.ase/fleet.yaml\fR with the agent relay, the built-in agents, two editors of different agent tools, an agent of the definition file \fB.ase/agents/reviewer.mts\fR, and an ad-hoc request agent:
|
|
152
|
+
.P
|
|
153
|
+
.RS 2
|
|
154
|
+
.nf
|
|
155
|
+
fleet:
|
|
156
|
+
foreground: true
|
|
157
|
+
relay:
|
|
158
|
+
port: 4711
|
|
159
|
+
default:
|
|
160
|
+
tool: claude
|
|
161
|
+
rebooter:
|
|
162
|
+
implementer:
|
|
163
|
+
parallel: 2
|
|
164
|
+
editor-claude:
|
|
165
|
+
kind: editor
|
|
166
|
+
editor-codex:
|
|
167
|
+
kind: editor
|
|
168
|
+
tool: codex
|
|
169
|
+
reviewer:
|
|
170
|
+
parallel: 2
|
|
171
|
+
params:
|
|
172
|
+
severity: high
|
|
173
|
+
lint:
|
|
174
|
+
kind: adhoc
|
|
175
|
+
type: request
|
|
176
|
+
prompt:
|
|
177
|
+
text: "Lint the source code of task {id} with focus on: {prompt}"
|
|
178
|
+
.fi
|
|
179
|
+
.RE
|
|
180
|
+
.SH "SEE ALSO"
|
|
181
|
+
.P
|
|
182
|
+
\fBase\fR(1), \fBase-agent\fR(1), \fBase-agent-adhoc\fR(1), \fBase-agent-relay\fR(1), \fBase-agent-rebooter\fR(1), \fBase-agent-condenser\fR(1), \fBase-agent-researcher\fR(1), \fBase-agent-implementer\fR(1), \fBase-agent-qualifier\fR(1), \fBase-agent-integrator\fR(1), \fBase-agent-editor\fR(1), \fBase-agent-estimator\fR(1), \fBase-task-board\fR(1).
|
|
183
|
+
.SH "AUTHOR"
|
|
184
|
+
.P
|
|
185
|
+
Dr. Ralf S. Engelschall \fI\(larse@engelschall.com\(ra\fR
|