baro-ai 0.57.1 → 0.58.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/dist/runner.mjs CHANGED
@@ -3734,6 +3734,51 @@ var url = process.env.CONTROL_URL ?? "wss://api.baro.jigjoy.ai";
3734
3734
  var token = process.env.RUNNER_TOKEN;
3735
3735
  var httpBase = url.replace(/^ws/, "http").replace(/\/+$/, "");
3736
3736
  var credsPath = join(homedir(), ".baro", "credentials.json");
3737
+ var VERSION = "0.58.0";
3738
+ var updateCachePath = join(homedir(), ".baro", "update-check.json");
3739
+ function semverLt(a, b) {
3740
+ const pa = a.split(".").map(Number);
3741
+ const pb = b.split(".").map(Number);
3742
+ for (let i = 0; i < 3; i++) {
3743
+ const x = pa[i] ?? 0;
3744
+ const y = pb[i] ?? 0;
3745
+ if (x !== y) return x < y;
3746
+ }
3747
+ return false;
3748
+ }
3749
+ async function getLatest(force = false) {
3750
+ if (!force) {
3751
+ try {
3752
+ const c = JSON.parse(readFileSync(updateCachePath, "utf8"));
3753
+ if (c.latest && c.checkedAt && Date.now() - c.checkedAt < 24 * 36e5) return c.latest;
3754
+ } catch {
3755
+ }
3756
+ }
3757
+ try {
3758
+ const ctrl = new AbortController();
3759
+ const t = setTimeout(() => ctrl.abort(), 4e3);
3760
+ const r = await fetch("https://registry.npmjs.org/baro-ai/latest", { signal: ctrl.signal });
3761
+ clearTimeout(t);
3762
+ const latest = (await r.json()).version;
3763
+ if (!latest) return null;
3764
+ try {
3765
+ mkdirSync(join(homedir(), ".baro"), { recursive: true });
3766
+ writeFileSync(updateCachePath, JSON.stringify({ latest, checkedAt: Date.now() }));
3767
+ } catch {
3768
+ }
3769
+ return latest;
3770
+ } catch {
3771
+ return null;
3772
+ }
3773
+ }
3774
+ async function selfUpdate(latest) {
3775
+ return await new Promise((resolve) => {
3776
+ console.log(`[baro] updating ${VERSION} \u2192 ${latest}\u2026`);
3777
+ const child = spawn("npm", ["install", "-g", `baro-ai@${latest}`], { stdio: "inherit", shell: process.platform === "win32" });
3778
+ child.on("exit", (code) => resolve(code === 0));
3779
+ child.on("error", () => resolve(false));
3780
+ });
3781
+ }
3737
3782
  var readCliToken = () => {
3738
3783
  try {
3739
3784
  return JSON.parse(readFileSync(credsPath, "utf8")).token;
@@ -3898,7 +3943,7 @@ function connectOnce() {
3898
3943
  const ws = new import_websocket.default(url);
3899
3944
  currentWs = ws;
3900
3945
  ws.on("open", () => {
3901
- ws.send(encode({ t: "register", runnerId, hostname: hostname(), token, backends: ["claude"], workspaceIds: ["default"], version: "0.57.1" }));
3946
+ ws.send(encode({ t: "register", runnerId, hostname: hostname(), token, backends: ["claude"], workspaceIds: ["default"], version: VERSION }));
3902
3947
  console.log(inflight.size ? `[baro] reconnected to ${url} \u2014 resuming ${inflight.size} in-flight run(s)` : `[baro] connected to ${url} \u2014 workspace ${workspaceDir}`);
3903
3948
  });
3904
3949
  ws.on("message", (data) => {
@@ -3922,6 +3967,25 @@ async function main() {
3922
3967
  await login();
3923
3968
  return;
3924
3969
  }
3970
+ if (process.env.BARO_CHECK_UPDATE === "1") {
3971
+ await getLatest(true);
3972
+ return;
3973
+ }
3974
+ try {
3975
+ const latest = await getLatest();
3976
+ if (latest && semverLt(VERSION, latest)) {
3977
+ if (process.env.BARO_SERVICE === "1") {
3978
+ if (await selfUpdate(latest)) {
3979
+ console.log(`[baro] updated to ${latest} \u2014 restarting service\u2026`);
3980
+ process.exit(0);
3981
+ }
3982
+ console.warn(`[baro] could not self-update (likely a root-owned global install). Update manually: npm i -g baro-ai@latest`);
3983
+ } else {
3984
+ console.warn(`[baro] a newer baro is available (${VERSION} \u2192 ${latest}). Update: npm i -g baro-ai`);
3985
+ }
3986
+ }
3987
+ } catch {
3988
+ }
3925
3989
  if (!token) {
3926
3990
  const cli = readCliToken();
3927
3991
  if (cli) {