baro-ai 0.55.4 → 0.56.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/README.md CHANGED
@@ -279,6 +279,31 @@ baro --doctor
279
279
 
280
280
  Full options + `.barorc` config + per-phase model overrides: [**docs.baro.rs**](https://docs.baro.rs).
281
281
 
282
+ ## Run it from the cloud — `baro connect`
283
+
284
+ baro can also run as a **remote runner** for baro-cloud: fire a goal from a web
285
+ dashboard, a teammate, or a GitHub issue labeled `baro`, and it executes here on
286
+ your machine over your own subscription — your code never leaves it. baro-cloud
287
+ orchestrates (Architect/Planner/Critic/Surgeon) and never sees your source, only
288
+ metadata + diffs. Pair a machine with one line:
289
+
290
+ ```bash
291
+ curl -fsSL https://api.baro.jigjoy.ai/install.sh | sh -s -- --token rt_…
292
+ ```
293
+
294
+ That installs baro and registers a background **service** that survives terminal
295
+ close, logout, and reboot — launchd (macOS), systemd (Linux), or a logon task
296
+ (Windows). Or do it by hand:
297
+
298
+ ```bash
299
+ baro connect --install-service --token rt_… # persistent background service
300
+ baro connect --token rt_… # foreground, this terminal only
301
+ baro connect --uninstall-service # remove the service
302
+ ```
303
+
304
+ Get a pairing token (`rt_…`) from baro-cloud → Runners. A mid-run network blip
305
+ won't kill a run: the runner reconnects and resumes streaming where it left off.
306
+
282
307
  ## How it compares
283
308
 
284
309
  | | Single Claude Code session | DIY `Promise.all` of subprocesses | baro |
package/dist/cli.mjs CHANGED
@@ -42766,6 +42766,7 @@ var Finalizer = class extends BaseObserver {
42766
42766
  totalSecs,
42767
42767
  sequentialSecs: this.sequentialSeconds()
42768
42768
  });
42769
+ await this.pushBranch(branch);
42769
42770
  this.log(`[finalizer] opening PR on ${baseBranch} \u2190 ${branch}`);
42770
42771
  const url = await this.openPr({ title, body, baseBranch, branch });
42771
42772
  if (url) {
@@ -42986,6 +42987,18 @@ var Finalizer = class extends BaseObserver {
42986
42987
  return false;
42987
42988
  }
42988
42989
  }
42990
+ // Ensure the remote head branch is up to date with the local integration
42991
+ // branch (which has the merged story commits by RunCompleted time) before we
42992
+ // open the PR. Best-effort: if it's already pushed or has no remote, openPr
42993
+ // surfaces the real outcome.
42994
+ async pushBranch(branch) {
42995
+ try {
42996
+ await execFileAsync2("git", ["push", "origin", branch], { cwd: this.opts.cwd });
42997
+ } catch (e2) {
42998
+ const detail = (e2.stderr ?? e2.message).split("\n")[0]?.trim();
42999
+ this.log(`[finalizer] pre-PR push: ${detail}`);
43000
+ }
43001
+ }
42989
43002
  async openPr(args) {
42990
43003
  try {
42991
43004
  const { stdout } = await execFileAsync2(