@brokkai/brokk-town-linux-x64 0.1.1 → 0.1.2
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 +1 -1
- package/README.md +60 -2
- package/bin/bt +0 -0
- package/package.json +1 -1
package/BUILD.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"commit": "
|
|
1
|
+
{"commit": "8222b017b527bd9879b1261370f64c12e297f8b4", "tag": "v0.1.2", "target": "linux-amd64"}
|
package/README.md
CHANGED
|
@@ -70,13 +70,19 @@ a commit shipped. Columns, prompts and transitions are not programmable.
|
|
|
70
70
|
## Installation and releases
|
|
71
71
|
|
|
72
72
|
Source is published at [BrokkAi/brokk-town](https://github.com/BrokkAi/brokk-town).
|
|
73
|
-
The stable release is available from [GitHub](https://github.com/BrokkAi/brokk-town/releases/tag/v0.1.
|
|
73
|
+
The stable release is available from [GitHub](https://github.com/BrokkAi/brokk-town/releases/tag/v0.1.1)
|
|
74
74
|
and npm:
|
|
75
75
|
|
|
76
76
|
```sh
|
|
77
77
|
npm install -g @brokkai/brokk-town
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
While the service is running, Town checks npm outside its input and render loops.
|
|
81
|
+
When a newer stable release is available, the browser offers an **Upgrade Town**
|
|
82
|
+
button and the TUI offers `u`. After confirmation, the service installs that exact
|
|
83
|
+
version and asks for a restart. A failed or offline check never interrupts local
|
|
84
|
+
operation.
|
|
85
|
+
|
|
80
86
|
You can also build from source as above or install the current branch:
|
|
81
87
|
|
|
82
88
|
```sh
|
|
@@ -106,6 +112,10 @@ coding agent. Town does not require a separate bot installation: each dispatch
|
|
|
106
112
|
uses `npx --yes` with an exact compatible release of bug-bot, feature-bot,
|
|
107
113
|
issue-bot, review-bot, or release-bot, then communicates with it over a private
|
|
108
114
|
Unix socket. Town never selects an ambient or floating bot version.
|
|
115
|
+
Each bot's Settings panel shows its current pin. **Check for bot update** reads
|
|
116
|
+
npm's stable tag, and **Use VERSION** stages that exact version for the Mayor to
|
|
117
|
+
save. The pin changes only for that town and takes effect on the bot's next run;
|
|
118
|
+
capability and reported-version checks still run before any repository work.
|
|
109
119
|
|
|
110
120
|
The worker uses
|
|
111
121
|
standard-library HTTP/JSON, negotiates protocol and capabilities before work,
|
|
@@ -284,6 +294,13 @@ Animation never initiates a GitHub write. Reconnecting does not replay previousl
|
|
|
284
294
|
seen deliveries. External PRs receive reviews but their branches are left to their
|
|
285
295
|
authors; only locally recorded Town-created branches enter automatic repair.
|
|
286
296
|
|
|
297
|
+
New external issues and PRs first wait at Town Hall for a durable Mayoral
|
|
298
|
+
decision. **Admit** sends the work to Issue Bot or Review Bot; **Decline** keeps
|
|
299
|
+
Town from acting on it without changing GitHub. Feature Bot proposals follow the
|
|
300
|
+
same route by default and can be exempted in **Town Settings → External
|
|
301
|
+
contributions**. The browser provides the primary decision UX; scripts may use
|
|
302
|
+
`bt admit --repo OWNER/REPO --task issue:123` or `bt decline ...`.
|
|
303
|
+
|
|
287
304
|
A review is bound to the exact base, head, PR description, and discussion snapshot. A suppressed
|
|
288
305
|
duplicate comment is still a finding to check. Complete coverage, explicit
|
|
289
306
|
resolution of every concern, and validation evidence are required for a clean
|
|
@@ -293,6 +310,7 @@ repair cycles become visible tasks needing attention.
|
|
|
293
310
|
The default merge policy is `bot`: auto-merge eligible Town-created PRs. `manual`
|
|
294
311
|
leaves merging to the operator; `all` also permits eligible external PRs. Town-managed merges require current clean Town evidence, GitHub mergeability, required checks
|
|
295
312
|
and approvals. Town uses an expected-head squash merge, without admin bypass.
|
|
313
|
+
Change this at any time under **Town Settings → External contributions**.
|
|
296
314
|
Repositories that require a merge queue or prohibit squash merging need manual
|
|
297
315
|
merges for now. GitHub is the final authority at write time.
|
|
298
316
|
|
|
@@ -307,7 +325,8 @@ bot profiles, verification command, and policy, then run:
|
|
|
307
325
|
|
|
308
326
|
Configuration is a JSON array for town-only files. Each entry supplies `repo`, optional `branch` and
|
|
309
327
|
`harness`, `agent`, optional `bot_agents`, optional `verify` argument vector,
|
|
310
|
-
`merge_policy`, `poll_seconds`, `report_seconds`, and
|
|
328
|
+
`merge_policy`, `mayoral_feature_review`, `poll_seconds`, `report_seconds`, and
|
|
329
|
+
`max_cycles`. The example
|
|
311
330
|
lists all required values. To persist global capacity alongside the town list,
|
|
312
331
|
use the object form `{"max_workers": 2, "towns": [...]}`; the legacy array form
|
|
313
332
|
remains accepted. When `serve --config` includes `max_workers`, that value
|
|
@@ -351,6 +370,45 @@ local key in a URL fragment. `connection.json` and state snapshots are mode 0600
|
|
|
351
370
|
Private agent commands, environment, and authentication configuration are omitted
|
|
352
371
|
from public configuration snapshots for both town defaults and bot profiles;
|
|
353
372
|
each bot's effective harness, model, and effort are visible.
|
|
373
|
+
|
|
374
|
+
### Source funnels
|
|
375
|
+
|
|
376
|
+
Optional `funnels` make issue intake source-neutral. Each named funnel declares a
|
|
377
|
+
provider, validated location/filter, a local credential reference, explicit
|
|
378
|
+
priority policy, overlap policy, and allowlisted lifecycle mappings. Credential
|
|
379
|
+
references are resolved by adapters at request time; secret values never enter
|
|
380
|
+
Town state, model prompts, events, logs, or public snapshots. Public state shows
|
|
381
|
+
the safe funnel configuration and each normalized item's source identity, URL,
|
|
382
|
+
revision, external state, eligibility, capabilities, priority policy, last sync,
|
|
383
|
+
and typed outcome.
|
|
384
|
+
|
|
385
|
+
GitHub funnels support query, `selected_issues`, and comma-separated
|
|
386
|
+
`include_labels`/`exclude_labels`. Focused selections are read by issue identity
|
|
387
|
+
instead of relying on search indexing. `working` and `blocked` mappings translate
|
|
388
|
+
the normalized lifecycle into confirmed label changes. Slack is the second real
|
|
389
|
+
adapter: it reads a configured channel through paginated Web API calls and maps
|
|
390
|
+
configured lifecycle actions to reactions plus bounded thread replies. Slack
|
|
391
|
+
tokens are obtained from a private resolver immediately before each request.
|
|
392
|
+
Read-only funnels and empty per-transition mappings stay visibly unsupported.
|
|
393
|
+
|
|
394
|
+
Funnels also recognize provider-native done signals on inbound reads. A Slack
|
|
395
|
+
message with a present `:white_check_mark:` or `:heavy_check_mark:` reaction is
|
|
396
|
+
normalized as **Done**; a GitHub issue whose state is `closed` is normalized as
|
|
397
|
+
**Closed**. Both remain in the durable inventory with their source provenance,
|
|
398
|
+
but become ineligible and leave the worker queue. A GitHub selector must include
|
|
399
|
+
closed issues (for example `is:issue`, not `is:issue is:open`) if Town is to
|
|
400
|
+
observe that transition. Done is based only on an explicit item state or reaction;
|
|
401
|
+
an incomplete or empty inventory never closes missing work by implication.
|
|
402
|
+
|
|
403
|
+
Lifecycle mutations use a durable intent before the provider call. A lost
|
|
404
|
+
response remains `uncertain`; reconciliation is read-only and absence of a
|
|
405
|
+
receipt never permits a duplicate label, reaction, comment, or thread reply.
|
|
406
|
+
Incomplete reads, partial discovery, authentication failures, rate limits,
|
|
407
|
+
unsupported actions, and uncertain writes remain distinct outcomes. Funnel
|
|
408
|
+
declaration order is never scheduling priority. Overlapping source identities
|
|
409
|
+
are retained, deduplicated, or rejected only according to the explicit overlap
|
|
410
|
+
policy. Demo and tests use synthetic or fake providers and perform no live source
|
|
411
|
+
or agent automation. See the complete JSON example for GitHub and Slack shapes.
|
|
354
412
|
Local logs and worktrees can contain repository content; keep this directory private.
|
|
355
413
|
|
|
356
414
|
If a push or merge response is lost, Town checks GitHub rather than assuming
|
package/bin/bt
CHANGED
|
Binary file
|
package/package.json
CHANGED