huskies: merge 1137 story First-run project init flow — walk through config instead of leaving defaults silently
This commit is contained in:
@@ -215,7 +215,74 @@ The work breaks naturally into:
|
||||
- **Phase 4:** git integration — `--git <url>` clones, host SSH key
|
||||
mount, push verification.
|
||||
- **Phase 5:** per-project resource limits + cleanup chat commands.
|
||||
- **Phase 6:** `--adopt <dir>` wraps a container around an existing
|
||||
checkout. No clone or init — bind-mount only.
|
||||
- **Phase 7 (story 1137):** First-run init flow — config summary and
|
||||
chat-driven overrides (see below).
|
||||
|
||||
Each phase ships independently and is usable on its own. Phase 1 alone
|
||||
gives chat-only users a working project; later phases add the editor
|
||||
and git polish.
|
||||
|
||||
## First-Run Init Flow (Story 1137)
|
||||
|
||||
After a successful `new project ... --adopt` (or any new-project
|
||||
bootstrap), the bot appends a **Default configuration** block to the
|
||||
adoption success reply. This block lists every scaffolded agent with
|
||||
its model, budget cap, and turn limit, and provides ready-to-send
|
||||
override commands.
|
||||
|
||||
### Example reply tail
|
||||
|
||||
```
|
||||
**Default configuration** (3 agents):
|
||||
- coder-1 (coder): model=`sonnet`, budget=$5.00, max_turns=50
|
||||
- qa (qa): model=`sonnet`, budget=$4.00, max_turns=40
|
||||
- mergemaster (mergemaster): model=`sonnet`, budget=$5.00, max_turns=30
|
||||
|
||||
Override via chat: `huskies config myapp coder.model=opus`
|
||||
Project settings: `huskies config myapp default_qa=human`
|
||||
Accept all defaults silently: add `--skip-config` to the bootstrap command.
|
||||
```
|
||||
|
||||
### Config override command
|
||||
|
||||
```
|
||||
huskies config <project> <key>=<value>
|
||||
```
|
||||
|
||||
The gateway resolves the project's `host_path` from `projects.toml`,
|
||||
then writes the setting to `.huskies/agents.toml` or
|
||||
`.huskies/project.toml` on the host.
|
||||
|
||||
**Agent fields** (`<stage_or_name>.<field>=<value>`):
|
||||
|
||||
| Key | Target | Supported values |
|
||||
|-----|--------|-----------------|
|
||||
| `coder.model` | agents.toml, coder stage | `sonnet`, `opus`, any model string |
|
||||
| `qa.model` | agents.toml, qa stage | same |
|
||||
| `mergemaster.model` | agents.toml, mergemaster stage | same |
|
||||
| `coder.max_turns` | agents.toml, coder stage | integer |
|
||||
| `coder.max_budget` | agents.toml, coder stage | decimal (USD) |
|
||||
|
||||
**Project keys** (bare `<key>=<value>`):
|
||||
|
||||
| Key | Notes |
|
||||
|-----|-------|
|
||||
| `default_qa` | `"server"`, `"agent"`, or `"human"` |
|
||||
| `max_retries` | integer |
|
||||
| `max_coders` | integer |
|
||||
| `base_branch` | branch name string |
|
||||
| `timezone` | IANA timezone (e.g. `"Europe/London"`) |
|
||||
| `default_coder_model` | model string |
|
||||
|
||||
### Skip path
|
||||
|
||||
Pass `--skip-config` to suppress the config block entirely:
|
||||
|
||||
```
|
||||
new project myapp --adopt /path/to/checkout --skip-config
|
||||
```
|
||||
|
||||
The success reply is identical to pre-1137 output — only the SSH
|
||||
command and registration summary, no agent listing.
|
||||
|
||||
Reference in New Issue
Block a user