aibroker 0.49.2 → 0.49.3

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.
Files changed (2) hide show
  1. package/README.md +35 -0
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -416,6 +416,41 @@ PAILot connects to `ws://your-mac:8765`. See [docs/pailot.md](docs/pailot.md).
416
416
 
417
417
  ---
418
418
 
419
+ ## Pair Programming, for Agents
420
+
421
+ Two Claude sessions can work the same repository overnight while a third supervises them. Not a swarm — a **pair**, with a manager keeping both pointed at the work.
422
+
423
+ ```
424
+ you ──► manager session ──┬──► worker A (owns Sources/, drives the screen)
425
+ (asleep) └──► worker B (owns tools/, its own git worktree)
426
+ ```
427
+
428
+ The manager is an ordinary Claude session with the `manage` CLI. It does four things the workers cannot do for themselves.
429
+
430
+ **It holds the objective.** `manage <session> set "<objective>"` stores a standing goal; the manager re-types it into the pane whenever the session stops. A session that finishes a task and would otherwise idle gets pointed at the next one. `manage <session> add` appends a rule to every future arming, so a correction made once survives every restart.
431
+
432
+ **It refuses to let a session stand down.** Workers ask to be released when they judge themselves done. The manager declines and re-arms — the objective says who ends it, and it is not the worker.
433
+
434
+ **It watches the context wall.** At 82% it asks for a handover into a named file; the session writes what a compaction would destroy and carries on working. Sessions routinely reached 99% and compacted with the record already on disk.
435
+
436
+ **It arbitrates the split.** Each worker owns a set of directories and a separate git worktree, and anything across the line is asked for by name. This is not tidiness: two sessions in one tree destroyed each other's uncommitted work twice in one night, once through a directory-wide `git add` and once through `git checkout --`.
437
+
438
+ Exactly one session may drive the screen. The pointer grant is machine-wide, so exclusivity is a coordination rule rather than a lock: the worker without it sends precise requests — what to open, what to do, what to read back — to the one that has it.
439
+
440
+ ```bash
441
+ aibroker manage worker-a "objective, in one line" # store it
442
+ aibroker manage worker-a hands on for 8 hours # grant the screen, expires by itself
443
+ aibroker manage worker-a now # arm it immediately
444
+ aibroker manage worker-a handover Notes/handover.md # where it writes before compacting
445
+ aibroker manage worker-a status # what it is doing, and what the manager has done
446
+ ```
447
+
448
+ What makes this work is not autonomy but **refusal**. The instructive failures were all instruments reporting success while measuring nothing: a guard that exempted the case it existed to stop, a mutation test whose mutation never applied, a screenshot of the previous build, a message delivered to the wrong session, a session timestamping eight hours of work from a clock it carried in context rather than one it read. Every one of them looked like progress. The manager's job is to be a second reader who asks what was actually measured.
449
+
450
+ See [docs/managed-sessions.md](docs/managed-sessions.md) and [docs/session-watchdog.md](docs/session-watchdog.md).
451
+
452
+ ---
453
+
419
454
  ## Mesh Networking
420
455
 
421
456
  Two AIBroker instances on different machines can exchange messages through AIBP bridge plugins. A message from PAILot on Machine A can reach a Claude session on Machine B:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aibroker",
3
- "version": "0.49.2",
3
+ "version": "0.49.3",
4
4
  "description": "Platform-agnostic AI message broker — routes between user channels and AI backends",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",