@vibelet/cli 1.1.2 → 1.1.4

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.
@@ -1,2 +1,2 @@
1
- var s=require("node:fs"),n=require("node:path"),c="@vibelet/cli";function a(e){try{let r=JSON.parse((0,s.readFileSync)(e,"utf8"));if(r.name===c&&typeof r.version=="string"&&r.version.length>0)return r.version}catch{}return null}function p(){return"1.1.2"}var i=p();process.stdout.write(`${i}
1
+ var s=require("node:fs"),n=require("node:path"),c="@vibelet/cli";function a(e){try{let r=JSON.parse((0,s.readFileSync)(e,"utf8"));if(r.name===c&&typeof r.version=="string"&&r.version.length>0)return r.version}catch{}return null}function p(){return"1.1.4"}var i=p();process.stdout.write(`${i}
2
2
  `);
package/dist/vibelet.mjs CHANGED
@@ -6617,9 +6617,39 @@ function describeLaunchctlResult(result) {
6617
6617
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
6618
6618
 
6619
6619
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
6620
- /* harmony export */ Z: () => (/* binding */ shouldReuseHealthyDaemon),
6621
- /* harmony export */ n: () => (/* binding */ doesHealthMatchRequestedConnectionConfig)
6620
+ /* harmony export */ Ne: () => (/* binding */ shouldRefuseRuntimeDowngrade),
6621
+ /* harmony export */ ZN: () => (/* binding */ shouldReuseHealthyDaemon),
6622
+ /* harmony export */ nW: () => (/* binding */ doesHealthMatchRequestedConnectionConfig)
6622
6623
  /* harmony export */ });
6624
+ function compareSemverTriple(a, b) {
6625
+ const pa = String(a).split('.').map((segment) => Number.parseInt(segment, 10) || 0);
6626
+ const pb = String(b).split('.').map((segment) => Number.parseInt(segment, 10) || 0);
6627
+ for (let i = 0; i < 3; i += 1) {
6628
+ const left = pa[i] ?? 0;
6629
+ const right = pb[i] ?? 0;
6630
+ if (left < right) return -1;
6631
+ if (left > right) return 1;
6632
+ }
6633
+ return 0;
6634
+ }
6635
+
6636
+ /**
6637
+ * True when the current CLI must refuse to install its bundled daemon over an
6638
+ * existing runtime installed by a newer CLI. A v1.0.x daemon overwriting a
6639
+ * v1.1.x sessions.json silently dropped archivedSessionIds because v1.0.x had
6640
+ * no concept of that field.
6641
+ */
6642
+ function shouldRefuseRuntimeDowngrade({
6643
+ cliVersion,
6644
+ runtimeVersion,
6645
+ runtimeEntryExists,
6646
+ }) {
6647
+ if (!runtimeEntryExists) return false;
6648
+ if (typeof cliVersion !== 'string' || !cliVersion) return false;
6649
+ if (typeof runtimeVersion !== 'string' || !runtimeVersion) return false;
6650
+ return compareSemverTriple(cliVersion, runtimeVersion) < 0;
6651
+ }
6652
+
6623
6653
  function shouldReuseHealthyDaemon({
6624
6654
  command,
6625
6655
  daemonHealthy,
@@ -6707,13 +6737,13 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
6707
6737
  /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6760);
6708
6738
  /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(3136);
6709
6739
  /* harmony import */ var qrcode__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(1302);
6710
- /* harmony import */ var _vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(3428);
6711
- /* harmony import */ var _cloudflared_quick_tunnel_mjs__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(1932);
6740
+ /* harmony import */ var _vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(3428);
6741
+ /* harmony import */ var _cloudflared_quick_tunnel_mjs__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(1932);
6712
6742
  /* harmony import */ var _cloudflared_resolver_mjs__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(3006);
6713
- /* harmony import */ var _vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(2927);
6743
+ /* harmony import */ var _vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(2927);
6714
6744
  /* harmony import */ var _linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(5400);
6715
- /* harmony import */ var _vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(9917);
6716
- /* harmony import */ var _vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(6067);
6745
+ /* harmony import */ var _vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(9917);
6746
+ /* harmony import */ var _vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(6067);
6717
6747
 
6718
6748
 
6719
6749
 
@@ -6887,6 +6917,19 @@ function ensureRuntimeInstalled() {
6887
6917
 
6888
6918
  const sourceDaemonStat = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.statSync)(daemonEntryPath);
6889
6919
  const runtimeMetadata = readRuntimeMetadata();
6920
+
6921
+ if ((0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_8__/* .shouldRefuseRuntimeDowngrade */ .Ne)({
6922
+ cliVersion: packageJson.version,
6923
+ runtimeVersion: runtimeMetadata?.version,
6924
+ runtimeEntryExists: (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(runtimeDaemonEntryPath),
6925
+ })) {
6926
+ fail(
6927
+ `Refusing to downgrade vibelet runtime from v${runtimeMetadata.version} to v${packageJson.version}.`,
6928
+ `An older daemon can silently drop on-disk state (sessions, archives) it doesn't know about.\n`
6929
+ + `Run \`npx @vibelet/cli@latest\` to use the newest CLI, or remove \`${runtimeCurrentDir}\` if you really need to roll back.`,
6930
+ );
6931
+ }
6932
+
6890
6933
  const runtimeLooksFresh =
6891
6934
  (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(runtimeDaemonEntryPath) &&
6892
6935
  runtimeMetadata?.version === packageJson.version &&
@@ -7036,7 +7079,7 @@ function createDarwinBackend() {
7036
7079
  }
7037
7080
 
7038
7081
  function bootoutService() {
7039
- return (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_8__/* .bootoutLaunchdService */ .B)({
7082
+ return (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_9__/* .bootoutLaunchdService */ .B)({
7040
7083
  launchctl,
7041
7084
  launchDomain,
7042
7085
  label,
@@ -7122,7 +7165,7 @@ ${envSection}
7122
7165
  if (result.status !== 0) {
7123
7166
  fail(
7124
7167
  'Failed to bootstrap vibelet launch agent.',
7125
- [(0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_8__/* .describeLaunchctlResult */ .N)(bootoutResult.result), (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_8__/* .describeLaunchctlResult */ .N)(result)]
7168
+ [(0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_9__/* .describeLaunchctlResult */ .N)(bootoutResult.result), (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_9__/* .describeLaunchctlResult */ .N)(result)]
7126
7169
  .filter(Boolean)
7127
7170
  .join('\n'),
7128
7171
  );
@@ -7140,7 +7183,7 @@ ${envSection}
7140
7183
  stop() {
7141
7184
  const bootoutResult = bootoutService();
7142
7185
  if (!bootoutResult.ok) {
7143
- fail('Failed to unload vibelet launch agent.', (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_8__/* .describeLaunchctlResult */ .N)(bootoutResult.result));
7186
+ fail('Failed to unload vibelet launch agent.', (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_9__/* .describeLaunchctlResult */ .N)(bootoutResult.result));
7144
7187
  }
7145
7188
  // bootout returns before launchd actually finishes unloading. Poll
7146
7189
  // until the service is gone so a follow-up install() doesn't see a
@@ -7467,7 +7510,7 @@ function isDaemonStartCommand(command) {
7467
7510
 
7468
7511
  async function stopRunningDaemon(backend) {
7469
7512
  try {
7470
- await (0,_vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_9__/* .stopDaemonWithHooks */ .v)({
7513
+ await (0,_vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_10__/* .stopDaemonWithHooks */ .v)({
7471
7514
  requestShutdown,
7472
7515
  backendStop: () => backend.stop(),
7473
7516
  waitForDaemonExit,
@@ -7749,7 +7792,7 @@ function printHelp() {
7749
7792
  }
7750
7793
 
7751
7794
  function parseNamedArg(name, errorHint) {
7752
- return (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .parseNamedArg */ .nE)(process.argv, name, errorHint, fail);
7795
+ return (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .parseNamedArg */ .nE)(process.argv, name, errorHint, fail);
7753
7796
  }
7754
7797
 
7755
7798
  function parseRelayArg() {
@@ -7902,7 +7945,7 @@ function startTunnel() {
7902
7945
  const poll = setInterval(() => {
7903
7946
  try {
7904
7947
  const content = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync)(logPath, 'utf8');
7905
- const tunnelUrl = (0,_cloudflared_quick_tunnel_mjs__WEBPACK_IMPORTED_MODULE_11__/* .extractQuickTunnelUrl */ .k)(content);
7948
+ const tunnelUrl = (0,_cloudflared_quick_tunnel_mjs__WEBPACK_IMPORTED_MODULE_12__/* .extractQuickTunnelUrl */ .k)(content);
7906
7949
  if (tunnelUrl) {
7907
7950
  url = tunnelUrl;
7908
7951
  saveTunnelState(pid, url);
@@ -7924,7 +7967,7 @@ function startTunnel() {
7924
7967
  childExited = true;
7925
7968
  if (!url) {
7926
7969
  const content = readCloudflaredLog(logPath);
7927
- const tunnelUrl = (0,_cloudflared_quick_tunnel_mjs__WEBPACK_IMPORTED_MODULE_11__/* .extractQuickTunnelUrl */ .k)(content);
7970
+ const tunnelUrl = (0,_cloudflared_quick_tunnel_mjs__WEBPACK_IMPORTED_MODULE_12__/* .extractQuickTunnelUrl */ .k)(content);
7928
7971
  if (tunnelUrl) {
7929
7972
  url = tunnelUrl;
7930
7973
  saveTunnelState(pid, url);
@@ -7963,9 +8006,9 @@ async function main() {
7963
8006
  process.env.VIBE_PORT = String(portArg);
7964
8007
  }
7965
8008
 
7966
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .consumeFlag */ .PC)(process.argv, 'remote') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .consumeFlag */ .PC)(process.argv, 'tunnel') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .readNpmConfigFlag */ .AW)('remote') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .readNpmConfigFlag */ .AW)('tunnel');
7967
- const localFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .consumeFlag */ .PC)(process.argv, 'local') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .readNpmConfigFlag */ .AW)('local');
7968
- const forceFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .consumeFlag */ .PC)(process.argv, 'force') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_10__/* .readNpmConfigFlag */ .AW)('force');
8009
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .consumeFlag */ .PC)(process.argv, 'remote') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .consumeFlag */ .PC)(process.argv, 'tunnel') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .readNpmConfigFlag */ .AW)('remote') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .readNpmConfigFlag */ .AW)('tunnel');
8010
+ const localFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .consumeFlag */ .PC)(process.argv, 'local') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .readNpmConfigFlag */ .AW)('local');
8011
+ const forceFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .consumeFlag */ .PC)(process.argv, 'force') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_11__/* .readNpmConfigFlag */ .AW)('force');
7969
8012
  const relayArg = parseRelayArg();
7970
8013
  const hostArg = parseNamedArg('host', '100.x.x.x');
7971
8014
  const fallbackHostsArg = parseNamedArg('fallback-hosts', '100.x.x.x,192.168.1.x');
@@ -8112,7 +8155,7 @@ async function main() {
8112
8155
 
8113
8156
  if (command === 'reset') {
8114
8157
  const healthyDaemon = await probeHealth(1_500);
8115
- const hasExplicitConfigOverrides = !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_12__/* .doesHealthMatchRequestedConnectionConfig */ .n)({
8158
+ const hasExplicitConfigOverrides = !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_8__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
8116
8159
  health: healthyDaemon,
8117
8160
  relayUrl,
8118
8161
  canonicalHost: hostArg || '',
@@ -8138,14 +8181,14 @@ async function main() {
8138
8181
  }
8139
8182
 
8140
8183
  const healthyDaemon = await probeHealth(1_500);
8141
- const hasExplicitConfigOverrides = !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_12__/* .doesHealthMatchRequestedConnectionConfig */ .n)({
8184
+ const hasExplicitConfigOverrides = !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_8__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
8142
8185
  health: healthyDaemon,
8143
8186
  relayUrl,
8144
8187
  canonicalHost: hostArg || '',
8145
8188
  fallbackHosts: fallbackHostsArg || '',
8146
8189
  localMode: localFlag,
8147
8190
  }) && (localFlag || Boolean(relayUrl) || Boolean(hostArg) || Boolean(fallbackHostsArg));
8148
- const existingHealth = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_12__/* .shouldReuseHealthyDaemon */ .Z)({
8191
+ const existingHealth = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_8__/* .shouldReuseHealthyDaemon */ .ZN)({
8149
8192
  command,
8150
8193
  daemonHealthy: Boolean(healthyDaemon),
8151
8194
  hasExplicitConfigOverrides,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibelet/cli",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "Cross-platform CLI for installing and running the Vibelet daemon",
5
5
  "homepage": "https://vibelet.icu",
6
6
  "files": [