bullswarm 0.30.0 → 0.32.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/AGENTS.md +2 -2
- package/CHANGELOG.md +151 -0
- package/GOAL.md +1 -1
- package/README.md +67 -18
- package/data/openrouter-benchmarks.json +7951 -7976
- package/docs/claude-dynamic-workflow-mechanics.md +1 -1
- package/docs/experiments/2026-08-29-dogfood-bullswarm-builds-bullswarm.md +3 -3
- package/docs/experiments/2026-08-29-ultracode-vs-bullswarm.md +6 -6
- package/docs/guide/concepts.md +42 -0
- package/docs/guide/getting-started.md +99 -33
- package/docs/guide/index.md +53 -0
- package/docs/guide/observing.md +226 -0
- package/docs/guide/routing.md +162 -158
- package/docs/guide/run.md +106 -0
- package/docs/guide/workflows.md +185 -303
- package/docs/index.md +28 -50
- package/docs/integrations/agent-clis.md +98 -0
- package/docs/integrations/claude-code.md +120 -0
- package/docs/integrations/issue-watcher.md +142 -0
- package/docs/notes/index.md +31 -0
- package/docs/public/favicon.svg +7 -0
- package/docs/reference/cli.md +1152 -0
- package/docs/reference/configuration.md +157 -0
- package/docs/reference/program.md +149 -0
- package/docs/{guide → reference}/providers.md +55 -81
- package/docs/reference/result.md +143 -0
- package/docs/workflow-design.md +5 -5
- package/mods/bullswarm/.claude-plugin/plugin.json +28 -0
- package/mods/bullswarm/README.md +85 -0
- package/mods/bullswarm/hooks/hooks.json +4 -0
- package/mods/bullswarm/hooks/host.ts +26 -0
- package/mods/bullswarm/hooks/names.ts +59 -0
- package/mods/bullswarm/hooks/overview.ts +51 -0
- package/mods/bullswarm/hooks/pane.tsx +604 -0
- package/mods/bullswarm/hooks/pool-rows.tsx +118 -0
- package/mods/bullswarm/hooks/pools.ts +228 -0
- package/mods/bullswarm/hooks/register.ts +815 -0
- package/mods/bullswarm/hooks/route.ts +74 -0
- package/mods/bullswarm/hooks/runs.ts +250 -0
- package/mods/bullswarm/hooks/strip.tsx +146 -0
- package/mods/bullswarm/hooks/verdict.ts +89 -0
- package/mods/bullswarm/tsconfig.json +17 -0
- package/mods/bullswarm/types/index.d.ts +209 -0
- package/package.json +5 -4
- package/providers/contrib/README.md +2 -2
- package/providers/contrib/command-code/provider.mjs +13 -5
- package/providers/contrib/{opencode2 → opencode}/connector.json +2 -1
- package/providers/contrib/{opencode2 → opencode}/provider.mjs +4 -4
- package/skill/references/providers.md +2 -2
- package/src/cli.js +108 -27
- package/src/help.js +53 -22
- package/src/integrate.js +86 -9
- package/src/lib/cli-flags.js +6 -4
- package/src/lib/config.js +73 -2
- package/src/lib/forecast.js +4 -2
- package/src/lib/providers.js +1 -1
- package/src/lib/route.js +173 -46
- package/src/lib/state.js +395 -3
- package/src/lib/strategy.js +2 -2
- package/src/lib/usage.js +14 -0
- package/src/meters/framework.js +55 -1
- package/src/meters/registry.js +112 -13
- package/src/provider-cli.js +1 -1
- package/src/provider-kit.js +9 -3
- package/src/providers/_schema.json +1 -1
- package/src/providers/claude-code/provider.mjs +9 -3
- package/src/providers/codex/provider.mjs +9 -4
- package/src/providers/grok/provider.mjs +9 -4
- package/src/setup.js +32 -0
- package/src/workflow/cli.js +61 -3
- package/src/workflow/dashboard.js +1095 -365
- package/src/workflow/usage-view.js +444 -0
- package/src/workflow/v2-dispatch.js +183 -26
- package/src/workflow/v2-outcome.js +4 -1
- package/src/workflow/v2-presentation.js +1 -1
- package/src/workflow/v2-runtime.js +43 -10
- package/src/workflow/v2-state.js +7 -1
- package/src/workflow/watch-cli.js +43 -2
- package/docs/_config.yml +0 -7
- package/docs/guide/dashboard.md +0 -193
- package/docs/guide/doctrine.md +0 -63
- package/docs/guide/entry-points.md +0 -71
- package/docs/guide/operations.md +0 -132
- package/docs/guide/repository-operations.md +0 -15
- package/docs/guide/strategy.md +0 -171
package/AGENTS.md
CHANGED
|
@@ -16,7 +16,7 @@ content. Published as `bullswarm` on npm.
|
|
|
16
16
|
`src/meters/framework.js`).
|
|
17
17
|
3. Provider quirks live in the provider's directory (`src/providers/<name>/`,
|
|
18
18
|
`providers/contrib/<name>/`, or `~/.bullswarm/providers/<name>/`), never in
|
|
19
|
-
core logic (see `docs/
|
|
19
|
+
core logic (see `docs/reference/providers.md`).
|
|
20
20
|
4. Quarantine always auto-releases; recursion depth is core-owned via env
|
|
21
21
|
(`BULLSWARM_DEPTH`).
|
|
22
22
|
5. Workflow dispatches must honor the same guarantees as single runs:
|
|
@@ -84,7 +84,7 @@ providers live in `src/providers/<name>/`, contrib providers in
|
|
|
84
84
|
`bullswarm provider scaffold <name> [--from <template>]`, then
|
|
85
85
|
`bullswarm provider validate` and `bullswarm provider probe <pool>`. Write a
|
|
86
86
|
`readUsage` export only if the vendor exposes a usage API — declared meters
|
|
87
|
-
are the fallback, never the goal. The contract is `docs/
|
|
87
|
+
are the fallback, never the goal. The contract is `docs/reference/providers.md`;
|
|
88
88
|
the authoring method is `skill/references/providers.md`.
|
|
89
89
|
|
|
90
90
|
## Releasing
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,156 @@
|
|
|
1
1
|
# bullswarm changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.32.1 — free models first, with graceful failover
|
|
6
|
+
|
|
7
|
+
- meters: rate-limited or failed live reads now persist a per-pool negative-cache hold (honouring `Retry-After` or the five-minute freshness window), and `pools`/the Claude Mod identify the stale snapshot's error and retry time.
|
|
8
|
+
- rename: the OpenCode pool is now `opencode`; the first run migrates saved
|
|
9
|
+
state, routing, provider, and meter names automatically, while historical
|
|
10
|
+
workflow run records keep their recorded `opencode2` name.
|
|
11
|
+
- routing: a pool whose model for the effort tier costs nothing is ranked ahead
|
|
12
|
+
of every metered pool while it is healthy. Free-ness is per (pool, effort
|
|
13
|
+
tier) and comes from the connector — `modelProfiles[].free`, or a model name
|
|
14
|
+
carrying a standalone `free` segment. The free tier sits below the forecast
|
|
15
|
+
gate and the 5-hour headroom tier and above expiring-soon urgency, so an
|
|
16
|
+
expiring metered window can now go unspent while free work runs; the ranking
|
|
17
|
+
among metered pools is unchanged. The reason reads `free pool first: <pool>
|
|
18
|
+
(free model <model>, …) · metered pools ranked below free: <pool> <surplus>`.
|
|
19
|
+
- routing: a pool that stalls, returns a server error, or (on a free pool) hands
|
|
20
|
+
back literally empty output takes a strike. The first is recorded; the second
|
|
21
|
+
consecutive one soft-benches the pool for a 10-minute cooldown, after which it
|
|
22
|
+
returns automatically. The strike count survives the cooldown and is cleared
|
|
23
|
+
only by a success. Auth is untouched: an upstream auth failure still
|
|
24
|
+
quarantines and still spreads across a credential group. An answer the
|
|
25
|
+
verifier judged thin but not empty stays semantic and is not retried
|
|
26
|
+
elsewhere.
|
|
27
|
+
- workflow: a free pool's silence clock is the median wall time of its own
|
|
28
|
+
recorded runs at that (pool, effort) rung — the `p50`, once 3 runs exist there
|
|
29
|
+
— with a 5-minute floor, instead of the one-hour default a metered pool keeps.
|
|
30
|
+
The multiplier on that median is 1 (`FREE_STALL_P50_FACTOR`): a worker silent
|
|
31
|
+
for as long as the whole rung usually takes has stopped working. Stalled
|
|
32
|
+
attempts are excluded from the median so a pool cannot tighten its own
|
|
33
|
+
threshold by stalling.
|
|
34
|
+
- workflow: a stalled attempt ends, keeps its partial output on disk (the retry
|
|
35
|
+
writes a new `-attempt-N` file beside it, never over it), releases its
|
|
36
|
+
in-flight ledger entry, and re-dispatches the same action on the next eligible
|
|
37
|
+
pool in the same run. The attempt record and `attempt.finished` carry
|
|
38
|
+
`stalled`, `partialOutput`, `silentSec` and `willRetry`; a new `pool.benched` event names
|
|
39
|
+
the pool, reason, strike count and deadline; the retry's reason is prefixed
|
|
40
|
+
`fallback from <pool> after stall <n>s`. A free-pool stall (and the
|
|
41
|
+
free-only literally-empty-output provider reclassification) does not spend
|
|
42
|
+
`maxMechanicalRetries`; the tried-set is the bound and each pool is tried at
|
|
43
|
+
most once for the action. A metered-pool stall keeps the mechanical retry
|
|
44
|
+
accounting.
|
|
45
|
+
- workflow: evidence and acceptance steps are exempt from the free tier and
|
|
46
|
+
route on pace as before, with one preference — a pool that wrote the work
|
|
47
|
+
being judged is chosen last, and only when no other pool is eligible, which
|
|
48
|
+
the reason then says (`evidence step: only the writer pool <pool> is
|
|
49
|
+
eligible`). This restores, in prefer-not rather than forbid form, the steering
|
|
50
|
+
removed in `eb83b79`; the reason line now names the exception, which its
|
|
51
|
+
absence was half the reason for that removal.
|
|
52
|
+
- pools: `bullswarm pools` prints `free=<model>` for a pool whose model costs
|
|
53
|
+
nothing (`free=<tier>:<model>` when it differs per effort tier, since `pools`
|
|
54
|
+
names no lane), `BENCHED until <time> (<reason>, <n> strikes)` for a benched
|
|
55
|
+
pool, and `strikes=<n>(<reason>)` for one carrying an uncounted-out strike. It
|
|
56
|
+
sweeps expired benches the same way it sweeps expired quarantines.
|
|
57
|
+
- routing: measured pacing rates now charge timed in-flight work at the actual
|
|
58
|
+
`rate × remaining minutes` with no 3-point floor, so an expiring-soon pool
|
|
59
|
+
with a known burn rate is not demoted by a tie-breaker meant for unmeasured
|
|
60
|
+
pools. `config.inflightPenaltyPct` remains the per-agent fallback for pools
|
|
61
|
+
without a measured rate (and for in-flight records with unknown duration).
|
|
62
|
+
- workflow: every attempt record now carries `routeWhy` (the router's reason)
|
|
63
|
+
and `routeCandidates` (each pool's effective surplus, urgency state and
|
|
64
|
+
pacing forecast at pick time); `workflow action show --json` and
|
|
65
|
+
`runs result --json` print them, and older state files still load.
|
|
66
|
+
|
|
67
|
+
- routing: a pool whose pacing window is about to reset is `draining` only
|
|
68
|
+
when its forecast is at or above 95% *and* ahead of the window's own clock,
|
|
69
|
+
the same clock-relative shape the 5h near-limit line already has. A pool on
|
|
70
|
+
or behind pace keeps spending right up to its reset instead of being ranked
|
|
71
|
+
last by a fixed line (observed 2026-09-16: command-code at 94.9% used with
|
|
72
|
+
98% of the month gone was passed over while +3 points of quota expired).
|
|
73
|
+
The skip reason now reads `expiring but draining (forecast >= 95% and past
|
|
74
|
+
its clock): <pool> <forecast>% (<elapsed>% elapsed)`.
|
|
75
|
+
- workflow goal: refuses to launch a duplicate of a run that is already going.
|
|
76
|
+
Before anything is validated or launched, an ongoing run with the same goal
|
|
77
|
+
text and cwd exits 2, naming that run's shortId, age, and watch command
|
|
78
|
+
(JSON: `{"error":"duplicate-goal",...}`); `--again` starts the copy anyway
|
|
79
|
+
(observed 2026-09-16: a caller whose JSON parser failed on the first
|
|
80
|
+
launch's output retried five seconds later and two identical workflows ran
|
|
81
|
+
side by side in the same directory).
|
|
82
|
+
|
|
83
|
+
## 0.32.0 — the dashboard is the main screen
|
|
84
|
+
|
|
85
|
+
- wording: a program run's dependency levels are called phases everywhere the
|
|
86
|
+
product prints them (`Phase 2 · integrate`), matching what the planner's runs
|
|
87
|
+
already say; the ids in the events are unchanged.
|
|
88
|
+
- dashboard: the full-screen Home, Run, Step, Usage, and Help pages now share
|
|
89
|
+
a sticky header and bottom nav, keyboard shortcuts, mouse clicks, and wheel
|
|
90
|
+
scrolling, so a live workflow can be understood in one place.
|
|
91
|
+
- usage and edit: Usage renders every meter window, elapsed mark, reset, pace,
|
|
92
|
+
credit meter, and rung record with the same coloured cells as the status
|
|
93
|
+
view; its read-only note hands `[edit]` to setup and returns with fresh data.
|
|
94
|
+
- install: Home's `[install]` action runs the same integration install as
|
|
95
|
+
`bullswarm integrate install --yes`, then shows each agent's skill,
|
|
96
|
+
awareness, and Claude Mod status.
|
|
97
|
+
- bare command: after setup, bare `bullswarm` opens the dashboard; the first
|
|
98
|
+
run and `bullswarm --setup` or `bullswarm setup` open setup, while
|
|
99
|
+
`bullswarm workflow tui` remains the explicit dashboard form.
|
|
100
|
+
- docs: the README, guides, CLI reference, and Claude Code pages now make the
|
|
101
|
+
dashboard the main screen and describe the Claude Mod as its read-only
|
|
102
|
+
counterpart — the same Run, Step, and Usage pages in the same colours, with
|
|
103
|
+
no edit or install action.
|
|
104
|
+
|
|
105
|
+
## 0.31.0 — the Claude Mod, and a documentation site
|
|
106
|
+
|
|
107
|
+
- mod: `mods/bullswarm` puts Bullswarm inside Claude Code's own interface as a
|
|
108
|
+
Claude Mod (function hooks, early access behind
|
|
109
|
+
`CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1`). Claude's general-purpose subagents
|
|
110
|
+
are routed to the pool with spare quota through `bullswarm run --no-caller`
|
|
111
|
+
and answered with the verified output; the verdict of every `bullswarm run`
|
|
112
|
+
and `workflow goal` the model runs is appended to its Bash result; the pool
|
|
113
|
+
meters are named in the model's context; a strip above the prompt lists
|
|
114
|
+
the ongoing workflow runs; and a docked pane shows one run as
|
|
115
|
+
`bullswarm workflow tui` draws it, every step a button that opens the
|
|
116
|
+
step laid out as the TUI's agent panel. `/bullswarm pools|status|on|off|
|
|
117
|
+
refresh|runs|pane|open <step> [run]|routed` answer from the mod; anything
|
|
118
|
+
else still reaches the packaged skill. The pool rows draw a white mark
|
|
119
|
+
where the window's elapsed time falls, and `usage` in the pane's bottom
|
|
120
|
+
nav opens a page with every meter window of every pool, its reset time
|
|
121
|
+
and pace, the credit meter where there is one, and every pool × tier rung
|
|
122
|
+
with its model, reasoning and record, grouped by lane or by provider. A
|
|
123
|
+
`route` tool lets the model switch routing when the person asks. Pool
|
|
124
|
+
display names come from the
|
|
125
|
+
`poolAliases` option; `strip` picks `runs`, `full` or `off`.
|
|
126
|
+
- integrate: `bullswarm integrate install --agents claude --yes` also links
|
|
127
|
+
the mod under `~/.claude/skills/bullswarm-mod` and sets
|
|
128
|
+
`env.CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` to `"1"` in `~/.claude/settings.json`;
|
|
129
|
+
`status` reports both and `remove` undoes both. A `settings.json` that is
|
|
130
|
+
not a JSON object is left alone and reported. `.claude-plugin/marketplace.json`
|
|
131
|
+
at the repository root makes `claude plugin marketplace add Bulls-Work/bullswarm`
|
|
132
|
+
and `claude plugin install bullswarm@bullswarm` work too.
|
|
133
|
+
- workflow tui: the Preflight milestone now states the accepted goal (wrapped)
|
|
134
|
+
with the paths of `goal.json` and `initial-planner-response.json`, and the
|
|
135
|
+
planner milestone says how many actions in how many dependency levels the
|
|
136
|
+
plan has. The Live section lists the planner only while it is planning;
|
|
137
|
+
the "waiting for N workers" planner row and the "· N waiting" count are
|
|
138
|
+
gone, since Next already says that. The first plan's own milestone is gone
|
|
139
|
+
too: the levels that follow it say what it planned; plan revisions and
|
|
140
|
+
rejected planning attempts still appear. A goal with several lines wraps
|
|
141
|
+
line by line instead of carrying a line break inside one row. `workflow tui <run> --overview
|
|
142
|
+
[--width <cols>] [--height <rows>]` prints one overview frame (or `--json`)
|
|
143
|
+
for a caller that draws its own.
|
|
144
|
+
- docs: the documentation site is now a VitePress site under `docs-site/`,
|
|
145
|
+
built from `docs/` and deployed to GitHub Pages by
|
|
146
|
+
`.github/workflows/docs.yml` at https://bulls-work.github.io/bullswarm/.
|
|
147
|
+
Guide (introduction, getting started, concepts, run, workflows, observing,
|
|
148
|
+
routing), Reference (CLI, workflow program, configuration, providers,
|
|
149
|
+
result envelope) and Integrations (Claude Code, Codex and Grok, issue
|
|
150
|
+
watcher) replace the Jekyll pages; the historical notes are indexed under
|
|
151
|
+
`/notes/`. `tests/unknown-flags.test.js` now checks every command form on
|
|
152
|
+
the new pages against the CLI.
|
|
153
|
+
|
|
3
154
|
## 0.30.0 — a run never waits: it finishes and hands back what is left
|
|
4
155
|
|
|
5
156
|
- workflow: a run no longer waits for anyone. Every point where a
|
package/GOAL.md
CHANGED
|
@@ -35,7 +35,7 @@ A working prototype installed at `~/.bullswarm/` with:
|
|
|
35
35
|
2. **Connector registry** (`~/.bullswarm/connectors/*.json`): declarative per-CLI
|
|
36
36
|
spawn command, auth-failure signatures, output extraction, verify contract,
|
|
37
37
|
quirk fields (e.g. PWD resolution). Seeded with codex, grok,
|
|
38
|
-
command-code,
|
|
38
|
+
command-code, opencode — extracted from the proven `/offload` skill.
|
|
39
39
|
3. **Meter layer**: per-pool window definition (5h / weekly / none) with
|
|
40
40
|
programmatic readers where providers expose usage, manual declaration
|
|
41
41
|
(`--meter pool=window,pct`) where they don't. Unmetered pools pace as
|
package/README.md
CHANGED
|
@@ -43,12 +43,53 @@ version in place (`bullswarm update --check` only reports). Requires Node.js
|
|
|
43
43
|
22.12 or later. `bullswarm setup` walks through detecting your
|
|
44
44
|
installed agent CLIs, showing their quota state, and writing a routing
|
|
45
45
|
configuration. See
|
|
46
|
-
[Getting started](https://
|
|
46
|
+
[Getting started](https://bulls-work.github.io/bullswarm/guide/getting-started)
|
|
47
47
|
for integrating Bullswarm's skill into Codex, Claude, and Grok, and for the
|
|
48
48
|
full quick-start command list.
|
|
49
49
|
|
|
50
|
+
## Claude Mod (early access)
|
|
51
|
+
|
|
52
|
+
`mods/bullswarm` is the same routing injected into Claude Code's own engine
|
|
53
|
+
as a Claude Mod (a plugin of TypeScript function hooks, behind
|
|
54
|
+
`CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1`): the pool meters drawn above the
|
|
55
|
+
prompt, the pools named in the model's context, Claude's general-purpose
|
|
56
|
+
subagents routed to whichever pool has surplus and answered with the
|
|
57
|
+
verified output, and the verdict appended to every `bullswarm run` the model
|
|
58
|
+
runs. The Mod is the dashboard's read-only counterpart: the same Run, Step and
|
|
59
|
+
Usage pages in the same meter colours, with no edit or install action. See
|
|
60
|
+
[mods/bullswarm/README.md](mods/bullswarm/README.md).
|
|
61
|
+
|
|
62
|
+
Three ways to load it:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# with the CLI: links the mod under ~/.claude/skills and sets the flag in ~/.claude/settings.json
|
|
66
|
+
bullswarm integrate install --agents claude --yes
|
|
67
|
+
|
|
68
|
+
# from Claude Code's plugin marketplace (a copy that `claude plugin update` refreshes)
|
|
69
|
+
claude plugin marketplace add Bulls-Work/bullswarm
|
|
70
|
+
claude plugin install bullswarm@bullswarm
|
|
71
|
+
|
|
72
|
+
# one session only, from the installed package
|
|
73
|
+
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude --plugin-dir "$(npm root -g)/bullswarm/mods/bullswarm"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The marketplace route still needs `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1`, in
|
|
77
|
+
the shell or under `env` in `~/.claude/settings.json`, and the `bullswarm`
|
|
78
|
+
CLI on `PATH`. Pick one route: an installed marketplace copy takes precedence
|
|
79
|
+
over the skills-dir link, and Claude says so at startup.
|
|
80
|
+
|
|
50
81
|
## Quick start
|
|
51
82
|
|
|
83
|
+
Once setup is complete, bare `bullswarm` opens the dashboard on its Home page.
|
|
84
|
+
Use `bullswarm --setup` or `bullswarm setup` to open setup again, and use
|
|
85
|
+
`bullswarm workflow tui` when you want the explicit dashboard command. The
|
|
86
|
+
pages are Home, Run, Step, Usage, and Help. A sticky header and bottom nav
|
|
87
|
+
(`[ 1.<run> ] … [ usage ] [ help ] [ quit ]`, each button's key
|
|
88
|
+
underlined inside its label) carry `q` (quit),
|
|
89
|
+
`h` or `?` (help), `u` (usage), `e` (edit), `i` (install), `l`/`p` (Usage tabs), arrows or
|
|
90
|
+
PgUp/PgDn (scroll), and Enter; click any button, tab, run or step, or use the
|
|
91
|
+
wheel to scroll.
|
|
92
|
+
|
|
52
93
|
One bounded outcome — a task with a clear finish line:
|
|
53
94
|
|
|
54
95
|
```bash
|
|
@@ -107,7 +148,7 @@ instead.
|
|
|
107
148
|
and never retried early.
|
|
108
149
|
|
|
109
150
|
The full mechanics behind each of these are in
|
|
110
|
-
[Routing](https://
|
|
151
|
+
[Routing](https://bulls-work.github.io/bullswarm/guide/routing).
|
|
111
152
|
|
|
112
153
|
## What you get back
|
|
113
154
|
|
|
@@ -121,7 +162,7 @@ The full mechanics behind each of these are in
|
|
|
121
162
|
content still verified; read it before re-running
|
|
122
163
|
|
|
123
164
|
A non-zero exit from the delegate is never treated as success on its own. See
|
|
124
|
-
[
|
|
165
|
+
[Result envelope](https://bulls-work.github.io/bullswarm/reference/result) for the full
|
|
125
166
|
verdict shape.
|
|
126
167
|
|
|
127
168
|
A workflow produces a durable, versioned result envelope — a JSON document
|
|
@@ -137,29 +178,37 @@ bullswarm workflow runs result <shortId> --json --summary # compact status once
|
|
|
137
178
|
the exact flags to keep polling; `runs result --summary` is what to read once
|
|
138
179
|
a run finishes, and `runs result --json` (no `--summary`) gives the full
|
|
139
180
|
envelope for a failed or partial run. See
|
|
140
|
-
[
|
|
181
|
+
[Observing runs](https://bulls-work.github.io/bullswarm/guide/observing) for the
|
|
141
182
|
full shape of both.
|
|
142
183
|
|
|
143
184
|
## Documentation
|
|
144
185
|
|
|
145
186
|
The full documentation is published at
|
|
146
|
-
[
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
187
|
+
[bulls-work.github.io/bullswarm](https://bulls-work.github.io/bullswarm/).
|
|
188
|
+
|
|
189
|
+
The dashboard is the main screen after setup: bare `bullswarm` opens Home,
|
|
190
|
+
`bullswarm --setup` or `bullswarm setup` opens setup, and
|
|
191
|
+
`bullswarm workflow tui` is the explicit form. The [Observing runs](https://bulls-work.github.io/bullswarm/guide/observing)
|
|
192
|
+
page maps its pages, keys, and mouse controls.
|
|
150
193
|
|
|
151
194
|
| Page | What it covers |
|
|
152
195
|
|---|---|
|
|
153
|
-
| [
|
|
154
|
-
| [
|
|
155
|
-
| [
|
|
156
|
-
| [
|
|
157
|
-
| [Workflows](https://
|
|
158
|
-
| [
|
|
159
|
-
| [
|
|
160
|
-
| [
|
|
161
|
-
| [
|
|
162
|
-
| [
|
|
196
|
+
| [Introduction](https://bulls-work.github.io/bullswarm/guide/) | What Bullswarm is, the two entry points, and the four rules it never breaks |
|
|
197
|
+
| [Getting started](https://bulls-work.github.io/bullswarm/guide/getting-started) | Install, `setup`, `doctor`, agent integration, and your first verified run |
|
|
198
|
+
| [Concepts](https://bulls-work.github.io/bullswarm/guide/concepts) | Pools, lanes, surplus, the two windows, verdicts, quarantine, and the run directory |
|
|
199
|
+
| [Run one task](https://bulls-work.github.io/bullswarm/guide/run) | Every `bullswarm run` option, and what each verdict asks you to do |
|
|
200
|
+
| [Workflows](https://bulls-work.github.io/bullswarm/guide/workflows) | Authoring the program `workflow goal` executes: territories, dependencies, integration, acceptance |
|
|
201
|
+
| [Observing runs](https://bulls-work.github.io/bullswarm/guide/observing) | `workflow watch`, the Home/Run/Step/Usage/Help dashboard pages, keys, mouse, and terminal glyphs |
|
|
202
|
+
| [Routing](https://bulls-work.github.io/bullswarm/guide/routing) | How a pool is picked: pace, 5-hour headroom, urgency, load, quarantine |
|
|
203
|
+
| [CLI reference](https://bulls-work.github.io/bullswarm/reference/cli) | Every verb and nested subcommand, with its flags and defaults |
|
|
204
|
+
| [Workflow program](https://bulls-work.github.io/bullswarm/reference/program) | The `bullswarm.workflow.program.v2` document: action fields, kinds, validation rules |
|
|
205
|
+
| [Configuration](https://bulls-work.github.io/bullswarm/reference/configuration) | The Bullswarm home, `state.json`, strategy models and rungs, environment variables |
|
|
206
|
+
| [Providers](https://bulls-work.github.io/bullswarm/reference/providers) | Adding your own agent CLI or reseller account as a provider plugin |
|
|
207
|
+
| [Result envelope](https://bulls-work.github.io/bullswarm/reference/result) | Every field of `run --json` and of the workflow result document |
|
|
208
|
+
| [Claude Code](https://bulls-work.github.io/bullswarm/integrations/claude-code) | The packaged skill, the MCP server, and the read-only Claude Mod counterpart under `mods/bullswarm` |
|
|
209
|
+
| [Codex and Grok](https://bulls-work.github.io/bullswarm/integrations/agent-clis) | What `bullswarm integrate` writes for each agent CLI, and how to check it |
|
|
210
|
+
| [Issue watcher](https://bulls-work.github.io/bullswarm/integrations/issue-watcher) | The launchd agent that triages and fixes new GitHub issues |
|
|
211
|
+
| [Historical notes](https://bulls-work.github.io/bullswarm/notes/) | Working notes, audits, and experiment writeups, kept as records |
|
|
163
212
|
|
|
164
213
|
## License
|
|
165
214
|
|