@brokkai/brokk-town-linux-arm64 0.3.3 → 0.4.1

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/BUILD.json CHANGED
@@ -1 +1 @@
1
- {"commit": "9e84f9c4c8f893ab3d5bea2cc070f6b5a111d346", "tag": "v0.3.3", "target": "linux-arm64"}
1
+ {"commit": "dccebd2104fe778f604673386d71bcfa88cc4603", "tag": "v0.4.1", "target": "linux-arm64"}
package/README.md CHANGED
@@ -8,8 +8,11 @@ hosts the towns and shares a configurable pool of agent worker slots between
8
8
  them (four by default, from one to 64).
9
9
 
10
10
  The browser shows worker houses, wheelbarrows carrying completed handoffs, trucks
11
- bringing external issues and PRs, and shipments leaving the release depot. Visit
12
- a house to inspect its queue, activity, errors, and controls. Town hall holds
11
+ bringing external issues and PRs, and shipments leaving the release depot. Every
12
+ house label names the harness, model and effort that house runs, so a bot on a
13
+ different harness or a higher effort is visible without opening it; the terminal
14
+ panel carries the same profile in its house table. Visit a house to inspect its
15
+ queue, activity, errors, and controls. Town hall holds
13
16
  repo-bot's reports. The all-towns overview shows activity and attention counts
14
17
  without visiting each repository.
15
18
 
@@ -150,7 +153,7 @@ for tag rules, pipeline steps, and recovery.
150
153
  Install and authenticate `git`, GitHub CLI (`gh`), Node.js/npm, and your chosen
151
154
  coding agent. Town does not require a separate bot installation: each dispatch
152
155
  uses `npx --yes` with an exact compatible release of bug-bot, feature-bot,
153
- issue-bot, review-bot, or release-bot, then communicates with it over a private
156
+ issue-bot, review-bot, release-bot, or simplifier-bot, then communicates with it over a private
154
157
  Unix socket. Town never selects an ambient or floating bot version.
155
158
  Each bot's Settings panel shows its current pin. **Check for bot update** reads
156
159
  npm's stable tag, and **Use VERSION** stages that exact version for the Mayor to
@@ -194,11 +197,11 @@ GitHub reconciliation.
194
197
 
195
198
  Town starts and manages the bot libraries internally; the standalone bot CLIs are
196
199
  not companion processes. New towns start with Bug Bot, Feature Bot, Issue Bot,
197
- Review Bot, and Release Bot **paused**. Repo Bot starts its read-only inventory.
200
+ Review Bot, Release Bot, and Simplifier Bot **paused**. Repo Bot starts its read-only inventory.
198
201
  The town header shows whether the town is paused, awake,
199
202
  or partly awake, and its button offers the action that changes that state.
200
203
  Inspect the town, then start individual workers or choose **Wake the town**, which
201
- enables all five automation workers (except Release Bot under manual merge policy).
204
+ enables all six automation workers (except Release Bot under manual merge policy).
202
205
  Starting workers authorizes their real work: filing issues,
203
206
  creating and repairing PRs, posting reviews, merging under the configured policy,
204
207
  and publishing releases. Agents and verification commands run with your local
@@ -218,7 +221,8 @@ Pause finishes active work and stops scheduling more. Stop also cancels active
218
221
  work. Enabled/paused settings survive restarts. A restart resumes enabled workers;
219
222
  uncertain external writes retain their saved intent and are reconciled first.
220
223
 
221
- Stopping or restarting the service (Ctrl+C, SIGTERM, `bt service restart`, or
224
+ Stopping or restarting the service (Ctrl+C, SIGTERM, SIGHUP from a closed
225
+ terminal or dropped SSH session, `bt service restart`, or
222
226
  an in-app upgrade) does not stop the external bots. Each bot process runs detached, and Town commits its handle (PID,
223
227
  socket, and exact task) before requesting work. The next `bt serve` reconnects to
224
228
  those processes before scheduling anything new. Bots that advertise the `detach`
@@ -237,11 +241,16 @@ where `N` is an integer from 1 through 64.
237
241
 
238
242
  Visit a town and choose **Settings**, then use **Configure agent for** to select
239
243
  the bot and configure its agent, model, and reasoning effort independently. Bug,
240
- feature, issue, review, and release bots can each use a different profile. Bots
244
+ feature, issue, review, release, and simplifier bots can each use a different profile. Bots
241
245
  without a profile inherit **Town defaults**. Choose **Use town defaults** and save
242
246
  to remove a bot's independent profile. Save each changed profile before closing
243
247
  Settings. Repo-bot only reports repository state and does not use an agent.
244
248
 
249
+ **Simplifier decisions** selects `suggest` (the default) or `auto`. Suggest keeps
250
+ the Mayor as decision maker and shows Simplifier Bot's advice on every pending
251
+ arrival. Auto lets the bot's assessment route routine work without a separate
252
+ Mayoral decision, including closing low-value complex issues.
253
+
245
254
  For each profile, select any agent from the
246
255
  [official ACP registry](https://agentclientprotocol.com/get-started/registry),
247
256
  plus **Anvil**, **Muse ACP**, **Draupnir**, or a custom ACP command. The full
@@ -348,6 +357,7 @@ finish before restoring a town.
348
357
  | --- | --- |
349
358
  | Bug greenhouse | Runs bug-bot's investigation and verification; observed filed issues travel to issue-bot. |
350
359
  | Feature study | Runs feature-bot to discover useful new capabilities, independently review their value and feasibility, and compare existing requests; confirmed feature issues travel to issue-bot. |
360
+ | Simplifier clarifier | Reviews every incoming issue/PR for disproportionate complexity or low value, advises the Mayor, and discovers removal/replacement proposals. |
351
361
  | Issue workshop | Runs issue-bot on eligible issues, opens implementation-ready PRs, and repairs Town-owned PR branches from review feedback. |
352
362
  | Review observatory | Runs review-bot, independently checks the full change and every retained finding, then returns fixes or waits for merge requirements. |
353
363
  | Release depot | Runs release-bot's batching and publishing policy. Confirmed merged/direct commits accumulate here; a published stable release ships only commits proven to be its ancestors. |
@@ -360,12 +370,18 @@ Animation never initiates a GitHub write. Reconnecting does not replay previousl
360
370
  seen deliveries. External PRs receive reviews but their branches are left to their
361
371
  authors; only locally recorded Town-created branches enter automatic repair.
362
372
 
363
- New external issues and PRs first wait at Town Hall for a durable Mayoral
364
- decision. **Admit** sends the work to Issue Bot or Review Bot; **Decline** keeps
365
- Town from acting on it without changing GitHub. Feature Bot proposals follow the
366
- same route by default and can be exempted in **Town Settings → External
367
- contributions**. A proposal is the town's own work, so declining one also closes
368
- its issue as not planned; outside issues and PRs are only ignored. The browser provides the primary decision UX; scripts may use
373
+ Every new issue and PR first waits at Simplifier Bot (including work filed by
374
+ Bug Bot and Feature Bot and implementation PRs created by Issue Bot). In the
375
+ default **suggest** mode, its bounded assessment is attached to the resulting
376
+ durable Mayoral decision: **Admit** sends the work to Issue Bot or Review Bot;
377
+ **Decline** keeps Town from acting on it. In **auto** mode, Simplifier Bot can
378
+ admit routine work and decline low-value complex work itself; a declined issue is
379
+ closed through Repo-bot, while a declined PR is ignored rather than closed.
380
+ Simplifier Bot's own marked proposals do not recursively pass through intake.
381
+ Between arrivals, the same worker scans the repository and may file marked
382
+ proposals to remove or replace subsystems that add disproportionate complexity
383
+ for little value.
384
+ The browser provides the primary decision UX; scripts may use
369
385
  `bt admit --repo OWNER/REPO --task issue:123` or `bt decline ...`. Offered bot
370
386
  upgrades use the same commands with `--task upgrade:feature` (or another bot
371
387
  role), plus `bt delay ...` to be asked again in a day.
@@ -397,19 +413,24 @@ bot profiles, verification command, and policy, then run:
397
413
 
398
414
  Configuration is a JSON array for town-only files. Each entry supplies `repo`, optional `branch` and
399
415
  `harness`, `agent`, optional `bot_agents`, optional `verify` argument vector,
400
- `merge_policy`, `mayoral_feature_review`, `poll_seconds`, `report_seconds`, and
416
+ `merge_policy`, `simplifier_mode`, `poll_seconds`, `report_seconds`, and
401
417
  `max_cycles`. The example
402
418
  lists all required values. To persist global capacity alongside the town list,
403
419
  use the object form `{"max_workers": 2, "towns": [...]}`; the legacy array form
404
420
  remains accepted. When `serve --config` includes `max_workers`, that value
405
421
  overrides the persisted service setting in the same atomic state update; an
406
422
  array config without it preserves the saved limit. Town
407
- uses the repository's default branch when omitted; an initialized town's branch
408
- cannot be changed in place. Omitted towns are retained when loading a config.
423
+ uses the repository's default branch when omitted, and keeps following it: the
424
+ observed default is recorded as repository state, so renaming it moves the town
425
+ with it and never overwrites a branch you chose. An initialized town's branch
426
+ cannot be changed in place. A town saved by an older Town has the branch observed
427
+ at its first inventory pinned in its configuration; setting `"branch": ""`
428
+ explicitly releases that pin so the town follows the repository default again,
429
+ while omitting the field keeps whatever the town already uses. Omitted towns are retained when loading a config.
409
430
  Agent configuration uses acp-go's `command`, `environment`, `auth_method`, `mode`, `model`, and `effort` fields.
410
431
 
411
432
  The top-level `harness` and `agent` define town defaults. `bot_agents` maps any of
412
- `bug`, `feature`, `issue`, `review`, and `release` to a complete profile containing
433
+ `bug`, `feature`, `issue`, `review`, `release`, and `simplifier` to a complete profile containing
413
434
  its own `harness` and `agent`, with an optional saved `harness_definition`.
414
435
  An absent role follows the town defaults. A configured role is independent:
415
436
  blank model or effort uses its harness default, and omitted agent fields do not
@@ -420,7 +441,7 @@ authenticating each harness. Verification and scheduling settings remain shared
420
441
  at town level.
421
442
 
422
443
  Repo-bot and issue/review scheduling use `poll_seconds` (default 60). Quiet reports
423
- use `report_seconds` (1800). Bug-bot and feature-bot run at most every 30 minutes; release-bot
444
+ use `report_seconds` (1800). Bug-bot, feature-bot, and simplifier-bot run at most every 30 minutes; release-bot
424
445
  checks every five minutes and retains its own quiet window, minimum gap, and
425
446
  batching decisions. Each worker attempt has a two-hour deadline. Repair cycles
426
447
  default to five; failed PR attempts back off and block after three failures.
@@ -448,6 +469,10 @@ Private state defaults to `$XDG_STATE_HOME/brokk-town` or
448
469
  appends `demo`. A single writer lock, atomic snapshots, per-role bot state, and
449
470
  private worktrees keep towns separate. Events, logs, and repo-bot reports have
450
471
  bounded recent histories; task, intent, and automation outcome history persists.
472
+ A worker's own log lines and phase changes are committed in batches of at most a
473
+ couple of seconds, because every commit rewrites and fsyncs the whole snapshot;
474
+ the newest line and phase always win, and everything buffered is committed before
475
+ a run's result is.
451
476
  Browser access uses a per-service
452
477
  local key in a URL fragment. `connection.json` and state snapshots are mode 0600.
453
478
  Private agent commands, environment, and authentication configuration are omitted
@@ -505,6 +530,18 @@ Retry explicitly permits another attempt after fresh checks. For an uncertain
505
530
  repair push, it reuses and verifies the saved commit; it does not rerun the agent.
506
531
  If the PR moved, the saved worktree is retained for inspection. A retry also resets
507
532
  an exhausted repair budget. Never delete an uncertain intent to force progress.
533
+ Retry clears that one task's block; it never starts a paused house. If the house
534
+ is paused, the task says so and waits for you to start it.
535
+
536
+ An uncertain repair is settled by ancestry, not only by an equal revision: once
537
+ the commit Town pushed is proven to be in the pull request's history, the push
538
+ landed, the intent is closed, and the newer revision goes back for review. Town
539
+ never republishes the saved commit over work that built on it.
540
+
541
+ A worktree is kept only while a saved intent still needs it. Repairs that fail
542
+ before anything is pushed release their worktree and its `town-repair-*` branch
543
+ immediately, and the issue house collects worktrees whose intent has since been
544
+ confirmed, so an unattended town does not accumulate them.
508
545
 
509
546
  When the release house reports that Release Bot's retry budget is exhausted, fix
510
547
  the reported failure and ask Town to lift the budget:
@@ -526,9 +563,9 @@ browsers use the ordinary interface.
526
563
 
527
564
  ## Keyboard and development
528
565
 
529
- Browser: `0` overview, `1`–`5` agent houses, `6` town hall, `?` help, Escape closes
566
+ Browser: `0` overview, `1` Bug, `2` Issue, `3` Review, `4` Release, `5` Repo, `6` Town Hall, `7` Feature, `8` Simplifier, `?` help, Escape closes
530
567
  the inspector. Motion follows reduced-motion preferences and can be switched off.
531
- Terminal: `0` overview, Tab next town, `1`–`5` or `j`/`k` select a house, `s` start,
568
+ Terminal: `0` overview, Tab next town, `1`–`7` or `j`/`k` select a house, `s` start,
532
569
  `p` pause, `x` stop, `a` wake the selected town, `d` delete with `y`/`n` confirmation,
533
570
  `q` detach. Use `bt settings` and `bt request` for agent settings and new work, or
534
571
  the forms in the browser. Bracketed paste is
package/bin/bt CHANGED
Binary file
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.3",
2
+ "version": "0.4.1",
3
3
  "license": "Apache-2.0",
4
4
  "repository": {
5
5
  "type": "git",