bullswarm 0.30.0 → 0.32.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/AGENTS.md +2 -2
- package/CHANGELOG.md +71 -0
- 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 +91 -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 +1149 -0
- package/docs/reference/configuration.md +157 -0
- package/docs/reference/program.md +149 -0
- package/docs/{guide → reference}/providers.md +53 -79
- package/docs/reference/result.md +143 -0
- package/docs/workflow-design.md +4 -4
- 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 +586 -0
- package/mods/bullswarm/hooks/pool-rows.tsx +118 -0
- package/mods/bullswarm/hooks/pools.ts +226 -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 +205 -0
- package/package.json +5 -4
- package/providers/contrib/README.md +1 -1
- package/providers/contrib/opencode2/provider.mjs +1 -1
- package/skill/references/providers.md +1 -1
- package/src/cli.js +52 -19
- package/src/help.js +46 -18
- package/src/integrate.js +86 -9
- package/src/lib/cli-flags.js +5 -3
- package/src/lib/providers.js +1 -1
- package/src/provider-cli.js +1 -1
- package/src/providers/_schema.json +1 -1
- package/src/setup.js +32 -0
- package/src/workflow/cli.js +10 -2
- package/src/workflow/dashboard.js +1095 -365
- package/src/workflow/usage-view.js +444 -0
- package/src/workflow/v2-presentation.js +1 -1
- 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,76 @@
|
|
|
1
1
|
# bullswarm changelog
|
|
2
2
|
|
|
3
|
+
## 0.32.0 — the dashboard is the main screen
|
|
4
|
+
|
|
5
|
+
- wording: a program run's dependency levels are called phases everywhere the
|
|
6
|
+
product prints them (`Phase 2 · integrate`), matching what the planner's runs
|
|
7
|
+
already say; the ids in the events are unchanged.
|
|
8
|
+
- dashboard: the full-screen Home, Run, Step, Usage, and Help pages now share
|
|
9
|
+
a sticky header and bottom nav, keyboard shortcuts, mouse clicks, and wheel
|
|
10
|
+
scrolling, so a live workflow can be understood in one place.
|
|
11
|
+
- usage and edit: Usage renders every meter window, elapsed mark, reset, pace,
|
|
12
|
+
credit meter, and rung record with the same coloured cells as the status
|
|
13
|
+
view; its read-only note hands `[edit]` to setup and returns with fresh data.
|
|
14
|
+
- install: Home's `[install]` action runs the same integration install as
|
|
15
|
+
`bullswarm integrate install --yes`, then shows each agent's skill,
|
|
16
|
+
awareness, and Claude Mod status.
|
|
17
|
+
- bare command: after setup, bare `bullswarm` opens the dashboard; the first
|
|
18
|
+
run and `bullswarm --setup` or `bullswarm setup` open setup, while
|
|
19
|
+
`bullswarm workflow tui` remains the explicit dashboard form.
|
|
20
|
+
- docs: the README, guides, CLI reference, and Claude Code pages now make the
|
|
21
|
+
dashboard the main screen and describe the Claude Mod as its read-only
|
|
22
|
+
counterpart — the same Run, Step, and Usage pages in the same colours, with
|
|
23
|
+
no edit or install action.
|
|
24
|
+
|
|
25
|
+
## 0.31.0 — the Claude Mod, and a documentation site
|
|
26
|
+
|
|
27
|
+
- mod: `mods/bullswarm` puts Bullswarm inside Claude Code's own interface as a
|
|
28
|
+
Claude Mod (function hooks, early access behind
|
|
29
|
+
`CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1`). Claude's general-purpose subagents
|
|
30
|
+
are routed to the pool with spare quota through `bullswarm run --no-caller`
|
|
31
|
+
and answered with the verified output; the verdict of every `bullswarm run`
|
|
32
|
+
and `workflow goal` the model runs is appended to its Bash result; the pool
|
|
33
|
+
meters are named in the model's context; a strip above the prompt lists
|
|
34
|
+
the ongoing workflow runs; and a docked pane shows one run as
|
|
35
|
+
`bullswarm workflow tui` draws it, every step a button that opens the
|
|
36
|
+
step laid out as the TUI's agent panel. `/bullswarm pools|status|on|off|
|
|
37
|
+
refresh|runs|pane|open <step> [run]|routed` answer from the mod; anything
|
|
38
|
+
else still reaches the packaged skill. The pool rows draw a white mark
|
|
39
|
+
where the window's elapsed time falls, and `usage` in the pane's bottom
|
|
40
|
+
nav opens a page with every meter window of every pool, its reset time
|
|
41
|
+
and pace, the credit meter where there is one, and every pool × tier rung
|
|
42
|
+
with its model, reasoning and record, grouped by lane or by provider. A
|
|
43
|
+
`route` tool lets the model switch routing when the person asks. Pool
|
|
44
|
+
display names come from the
|
|
45
|
+
`poolAliases` option; `strip` picks `runs`, `full` or `off`.
|
|
46
|
+
- integrate: `bullswarm integrate install --agents claude --yes` also links
|
|
47
|
+
the mod under `~/.claude/skills/bullswarm-mod` and sets
|
|
48
|
+
`env.CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` to `"1"` in `~/.claude/settings.json`;
|
|
49
|
+
`status` reports both and `remove` undoes both. A `settings.json` that is
|
|
50
|
+
not a JSON object is left alone and reported. `.claude-plugin/marketplace.json`
|
|
51
|
+
at the repository root makes `claude plugin marketplace add Bulls-Work/bullswarm`
|
|
52
|
+
and `claude plugin install bullswarm@bullswarm` work too.
|
|
53
|
+
- workflow tui: the Preflight milestone now states the accepted goal (wrapped)
|
|
54
|
+
with the paths of `goal.json` and `initial-planner-response.json`, and the
|
|
55
|
+
planner milestone says how many actions in how many dependency levels the
|
|
56
|
+
plan has. The Live section lists the planner only while it is planning;
|
|
57
|
+
the "waiting for N workers" planner row and the "· N waiting" count are
|
|
58
|
+
gone, since Next already says that. The first plan's own milestone is gone
|
|
59
|
+
too: the levels that follow it say what it planned; plan revisions and
|
|
60
|
+
rejected planning attempts still appear. A goal with several lines wraps
|
|
61
|
+
line by line instead of carrying a line break inside one row. `workflow tui <run> --overview
|
|
62
|
+
[--width <cols>] [--height <rows>]` prints one overview frame (or `--json`)
|
|
63
|
+
for a caller that draws its own.
|
|
64
|
+
- docs: the documentation site is now a VitePress site under `docs-site/`,
|
|
65
|
+
built from `docs/` and deployed to GitHub Pages by
|
|
66
|
+
`.github/workflows/docs.yml` at https://bulls-work.github.io/bullswarm/.
|
|
67
|
+
Guide (introduction, getting started, concepts, run, workflows, observing,
|
|
68
|
+
routing), Reference (CLI, workflow program, configuration, providers,
|
|
69
|
+
result envelope) and Integrations (Claude Code, Codex and Grok, issue
|
|
70
|
+
watcher) replace the Jekyll pages; the historical notes are indexed under
|
|
71
|
+
`/notes/`. `tests/unknown-flags.test.js` now checks every command form on
|
|
72
|
+
the new pages against the CLI.
|
|
73
|
+
|
|
3
74
|
## 0.30.0 — a run never waits: it finishes and hands back what is left
|
|
4
75
|
|
|
5
76
|
- workflow: a run no longer waits for anyone. Every point where a
|
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
|
|