@botiverse/raft-computer 0.0.38 → 0.0.53

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/index.js CHANGED
@@ -31030,18 +31030,6 @@ function readComputerVersion(moduleUrl = import.meta.url) {
31030
31030
  }
31031
31031
  }
31032
31032
  var COMPUTER_VERSION = readComputerVersion();
31033
- function readComputerPackageName(moduleUrl = import.meta.url) {
31034
- const baked = process.env.SLOCK_COMPUTER_PACKAGE_NAME;
31035
- if (typeof baked === "string" && baked.length > 0) return baked;
31036
- try {
31037
- const require2 = createRequire(moduleUrl);
31038
- const pkg = require2("../package.json");
31039
- return typeof pkg.name === "string" && pkg.name.length > 0 ? pkg.name : "@botiverse/raft-computer";
31040
- } catch {
31041
- return "@botiverse/raft-computer";
31042
- }
31043
- }
31044
- var COMPUTER_PACKAGE_NAME = readComputerPackageName();
31045
31033
 
31046
31034
  // src/service.ts
31047
31035
  import { mkdir as mkdir10, readFile as readFile9, writeFile as writeFile9, open, rename as rename3 } from "fs/promises";
@@ -32027,39 +32015,41 @@ async function runSeaUpgrade(opts) {
32027
32015
  emit7("restarting", "restarting service on new version");
32028
32016
  return { ok: true, swap };
32029
32017
  }
32030
- async function fetchComputerDistTags(fetchFn = fetch) {
32031
- const url = `https://registry.npmjs.org/${COMPUTER_PACKAGE_NAME}`;
32018
+ async function fetchCdnLatestVersion(baseUrl, fetchFn = fetch) {
32019
+ const url = `${baseUrl.replace(/\/$/, "")}/manifest.json`;
32032
32020
  const controller = new AbortController();
32033
32021
  const timeoutId = setTimeout(() => controller.abort(), 1e4);
32034
32022
  try {
32035
32023
  const res = await fetchFn(url, { signal: controller.signal, headers: { accept: "application/json" } });
32036
32024
  if (!res.ok) return null;
32037
32025
  const data = await res.json();
32038
- return data["dist-tags"] ?? null;
32026
+ return typeof data.version === "string" && data.version.length > 0 ? data.version : null;
32039
32027
  } catch {
32040
32028
  return null;
32041
32029
  } finally {
32042
32030
  clearTimeout(timeoutId);
32043
32031
  }
32044
32032
  }
32045
- async function resolveSeaTargetVersion(channel2, fetchDistTags = () => fetchComputerDistTags()) {
32033
+ async function resolveSeaTargetVersion(channel2, baseUrl, fetchLatest = fetchCdnLatestVersion) {
32046
32034
  if (channel2.startsWith("pinned:")) {
32047
32035
  const v = channel2.slice("pinned:".length);
32048
32036
  return SEMVER_RE.test(v) ? v : null;
32049
32037
  }
32050
- const tags = await fetchDistTags();
32051
- const resolved = tags?.[channel2];
32052
- return typeof resolved === "string" && resolved.length > 0 ? resolved : null;
32038
+ if (channel2 === "latest") {
32039
+ return await fetchLatest(baseUrl);
32040
+ }
32041
+ return null;
32053
32042
  }
32054
32043
  async function resolveAndRunSeaUpgrade(opts) {
32055
32044
  const d = opts.deps ?? {};
32045
+ const baseUrl = d.baseUrl ?? resolveUpgradeBaseUrl();
32056
32046
  let targetVersion;
32057
32047
  try {
32058
32048
  if (d.resolveTargetVersion) {
32059
32049
  targetVersion = await d.resolveTargetVersion();
32060
32050
  } else {
32061
32051
  const channel2 = await (d.readChannelFn ?? readChannel)(opts.slockHome);
32062
- targetVersion = await resolveSeaTargetVersion(channel2, d.fetchDistTags);
32052
+ targetVersion = await resolveSeaTargetVersion(channel2, baseUrl, d.fetchLatestVersion);
32063
32053
  }
32064
32054
  } catch (e) {
32065
32055
  return { ok: false, failedPhase: "resolve", reason: e instanceof Error ? e.message : String(e) };
@@ -32080,7 +32070,7 @@ async function resolveAndRunSeaUpgrade(opts) {
32080
32070
  platform: opts.platform,
32081
32071
  arch: opts.arch,
32082
32072
  deps: {
32083
- baseUrl: d.baseUrl,
32073
+ baseUrl,
32084
32074
  fetchFn: d.fetchFn,
32085
32075
  onProgress: d.onProgress,
32086
32076
  stageFn: d.stageFn,
@@ -32347,6 +32337,9 @@ async function resolveServiceIdentity() {
32347
32337
  }
32348
32338
  } catch {
32349
32339
  }
32340
+ if (!version && COMPUTER_VERSION.length > 0) {
32341
+ version = COMPUTER_VERSION;
32342
+ }
32350
32343
  return { installRoot, version };
32351
32344
  }
32352
32345
  async function writeServiceVersionEvidence(slockHome) {
@@ -33737,19 +33730,17 @@ async function runUpgradeCli(slockHome, opts, deps = {}) {
33737
33730
  } else if (channel2.startsWith("pinned:")) {
33738
33731
  targetVersion = channel2.slice("pinned:".length);
33739
33732
  } else {
33740
- const fetchDistTags = deps.fetchDistTags ?? defaultFetchDistTags;
33741
- const tags = await fetchDistTags();
33742
- if (!tags) {
33743
- fail(
33744
- "UPGRADE_VERSION_RESOLVE_FAILED",
33745
- `Could not reach npm registry to resolve ${channel2} dist-tag. Check connectivity or pass --target-version <semver>.`
33746
- );
33733
+ const baseUrl = (deps.resolveUpgradeBaseUrlFn ?? resolveUpgradeBaseUrl)();
33734
+ let resolved;
33735
+ try {
33736
+ resolved = await resolveSeaTargetVersion(channel2, baseUrl, deps.fetchLatestVersion);
33737
+ } catch {
33738
+ resolved = null;
33747
33739
  }
33748
- const resolved = tags[channel2];
33749
33740
  if (typeof resolved !== "string" || resolved.length === 0) {
33750
33741
  fail(
33751
33742
  "UPGRADE_VERSION_RESOLVE_FAILED",
33752
- `Channel "${channel2}" has no published dist-tag on the registry. Pass --target-version <semver> or switch channels.`
33743
+ `Could not resolve channel "${channel2}" to a version from ${baseUrl}/manifest.json. Only \`latest\` and \`pinned:<semver>\` are served from the CDN \u2014 for any other channel pass --target-version <semver>, or check connectivity.`
33753
33744
  );
33754
33745
  }
33755
33746
  targetVersion = resolved;
@@ -33847,24 +33838,6 @@ async function runUpgradeCli(slockHome, opts, deps = {}) {
33847
33838
  `Upgrade failed at phase=${result.failedPhase ?? "stage"}: ${result.reason ?? "unknown"}.`
33848
33839
  );
33849
33840
  }
33850
- async function defaultFetchDistTags() {
33851
- const url = `https://registry.npmjs.org/${COMPUTER_PACKAGE_NAME}`;
33852
- const controller = new AbortController();
33853
- const timeoutId = setTimeout(() => controller.abort(), 1e4);
33854
- try {
33855
- const res = await fetch(url, {
33856
- signal: controller.signal,
33857
- headers: { accept: "application/json" }
33858
- });
33859
- if (!res.ok) return null;
33860
- const data = await res.json();
33861
- return data["dist-tags"] ?? null;
33862
- } catch {
33863
- return null;
33864
- } finally {
33865
- clearTimeout(timeoutId);
33866
- }
33867
- }
33868
33841
  function defaultCurrentBinaryDir() {
33869
33842
  const here = fileURLToPath3(import.meta.url);
33870
33843
  return dirname12(dirname12(here));
package/dist/lib/index.js CHANGED
@@ -488,18 +488,6 @@ function readComputerVersion(moduleUrl = import.meta.url) {
488
488
  }
489
489
  }
490
490
  var COMPUTER_VERSION = readComputerVersion();
491
- function readComputerPackageName(moduleUrl = import.meta.url) {
492
- const baked = process.env.SLOCK_COMPUTER_PACKAGE_NAME;
493
- if (typeof baked === "string" && baked.length > 0) return baked;
494
- try {
495
- const require2 = createRequire(moduleUrl);
496
- const pkg = require2("../package.json");
497
- return typeof pkg.name === "string" && pkg.name.length > 0 ? pkg.name : "@botiverse/raft-computer";
498
- } catch {
499
- return "@botiverse/raft-computer";
500
- }
501
- }
502
- var COMPUTER_PACKAGE_NAME = readComputerPackageName();
503
491
 
504
492
  // src/service.ts
505
493
  import { mkdir as mkdir10, readFile as readFile9, writeFile as writeFile9, open, rename as rename3 } from "fs/promises";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/raft-computer",
3
- "version": "0.0.38",
3
+ "version": "0.0.53",
4
4
  "description": "Canonical Raft Computer — standalone human/local-machine control-plane CLI (login + attach). Provides raft-computer plus the legacy slock-computer alias; distinct from the agent-facing @botiverse/raft CLI.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,7 +31,7 @@
31
31
  "commander": "^12.1.0",
32
32
  "proper-lockfile": "^4.1.2",
33
33
  "undici": "^7.24.7",
34
- "@botiverse/raft-daemon": "0.58.2"
34
+ "@botiverse/raft-daemon": "0.59.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "^25.5.0",