bullswarm 0.10.8 → 0.10.9

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 CHANGED
@@ -37,7 +37,7 @@ content. Published as `bullswarm` on npm.
37
37
  ## Development
38
38
 
39
39
  ```bash
40
- npm test # 261 tests, no network needed (meters read from cache)
40
+ npm test # full suite, no network needed (meters read from cache)
41
41
  node bin/bullswarm.js doctor --json # readiness report
42
42
  node bin/bullswarm.js workflow list # discover workflows
43
43
  node bin/bullswarm.js workflow runs # ongoing workflow instances
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # bullswarm changelog
2
2
 
3
+ ## 0.10.9 — planner self-correction and honest silence
4
+
5
+ - An invalid or non-JSON orchestrator decision no longer fails the run. The
6
+ runtime feeds the exact validator issues, the rejected proposal, and a
7
+ response excerpt back to the same orchestrator thread for bounded corrective
8
+ turns (`settings.maxPlannerCorrections`, default 2, emits
9
+ `decision.correction_requested`), then benches that pool as orchestrator for
10
+ the rest of the run and escalates to one other eligible pool
11
+ (`decision.orchestrator_escalated`), and only then settles on a qualified
12
+ `completed_with_concerns`/`blocked` outcome. The decide action's ledger status
13
+ now agrees with that outcome (`failed_retryable` while correcting,
14
+ `failed_terminal` on exhaustion) instead of reporting `succeeded`.
15
+ - The planner prompt now shows complete `run`, `fanout` (`items` +
16
+ `stepTemplate.prompt` with `{{item}}`), and `verify` (`review`) skeletons, so
17
+ the first proposal can match what `decision.js` validates.
18
+ - `workflow watch` separates two silences: `quiet` counts durable workflow
19
+ events, and a new `agent output … ago` figure (JSONL `transportQuietForSec`)
20
+ counts raw output from live agents, so a thinking agent and a dead one look
21
+ different on the same heartbeat line.
22
+ - Removed the dead thin-leaf help renderer left over from the help unification
23
+ and stopped hard-coding the test count in AGENTS.md.
24
+
3
25
  ## 0.10.8 — quieter monitoring and resilient orchestration
4
26
 
5
27
  - Made `workflow watch` aggregate low-level activity into compact interval
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullswarm",
3
- "version": "0.10.8",
3
+ "version": "0.10.9",
4
4
  "description": "Route work across coding-agent CLI subscriptions — paced by live quota meters, verified by content, never trusting exit codes.",
5
5
  "type": "module",
6
6
  "bin": {
package/skill/SKILL.md CHANGED
@@ -335,6 +335,14 @@ execute -> observe -> decide -> validate proposal -> append -> execute -> observ
335
335
  Allowed planner decisions are `proceed`, `complete`, `needs_more_work`,
336
336
  `retry`, `escalate`, `wait_for_approval`, and `stop`. Expansion decisions must
337
337
  contain bounded actions; malformed or over-budget output executes nothing.
338
+ A malformed or non-JSON decision does not fail the run: the runtime returns
339
+ the exact validator issues to the same orchestrator thread for up to
340
+ `settings.maxPlannerCorrections` (default 2) corrective turns
341
+ (`decision.correction_requested` events), then benches that pool as
342
+ orchestrator for the rest of the run and tries one other eligible pool
343
+ (`decision.orchestrator_escalated`), and only then settles on a qualified
344
+ `completed_with_concerns`/`blocked` outcome. Safety bounds (`maxActions`,
345
+ `maxItemsPerExpansion`) still terminate immediately with a qualified outcome.
338
346
  `complete` still requires successful delivery and verification. `stop` returns
339
347
  `completed_with_concerns` with a ready best-effort artifact when useful work
340
348
  exists, or `blocked` when it does not; neither hides failed verification.
package/src/cli.js CHANGED
@@ -17,7 +17,7 @@ import { release } from './lib/release.js';
17
17
  import { cmdWorkflow } from './workflow/cli.js';
18
18
  import { cmdStrategy, maybeRefreshStrategy } from './strategy-cli.js';
19
19
  import { cmdIntegrate, installIntegration } from './integrate.js';
20
- import { helpForArgs } from './help.js';
20
+ import { helpForArgs, usageLine } from './help.js';
21
21
  import { resolveDispatchModel } from './lib/strategy.js';
22
22
 
23
23
  export function getBullswarmDir() {
@@ -474,9 +474,7 @@ export async function main(argv) {
474
474
  case 'release':
475
475
  return cmdRelease(opts);
476
476
  default:
477
- console.error(
478
- `unknown verb "${verb}". try: setup | integrate | run | health | pools | strategy | doctor | workflow | runs | version | release`,
479
- );
477
+ console.error(`unknown verb "${verb}". Run "bullswarm --help" for the list of commands.`);
480
478
  return 2;
481
479
  }
482
480
  }
@@ -486,7 +484,7 @@ export async function main(argv) {
486
484
  function cmdRelease(opts) {
487
485
  const kind = opts.rest[0];
488
486
  if (!['patch', 'minor', 'major'].includes(kind)) {
489
- console.error('usage: bullswarm release patch|minor|major [--dry-run]');
487
+ console.error(`usage: ${usageLine(['release'])}`);
490
488
  return 2;
491
489
  }
492
490
  try {