vibelet 1.2.230 → 1.2.231

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 (40) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/inventory-scan-worker.cjs +1 -1
  3. package/dist/runtime-version.cjs +1 -1
  4. package/dist/vibelet.mjs +123 -98
  5. package/dist/web/assets/App-BbkHX6Hv.css +1 -0
  6. package/dist/web/assets/App-TtlYNy7O.js +20 -0
  7. package/dist/web/assets/{BrowserControlPanel-BTBKDi0n.js → BrowserControlPanel-DzDyeCam.js} +1 -1
  8. package/dist/web/assets/{ChipGroup-ImS6VTKx.js → ChipGroup-Do4YgaVh.js} +1 -1
  9. package/dist/web/assets/FilesControlPanel-Dy08iN_7.js +1 -0
  10. package/dist/web/assets/{GlobalPendingDialog-BCLMQc_r.js → GlobalPendingDialog-BokEX_Go.js} +1 -1
  11. package/dist/web/assets/{ImageViewer-BvBKQ6wE.js → ImageViewer-BAycGfGo.js} +1 -1
  12. package/dist/web/assets/{LanguageSettingsPanel-DTDvB4l2.js → LanguageSettingsPanel-db264JO3.js} +1 -1
  13. package/dist/web/assets/NewSessionDialog-BTZlw3Gl.js +1 -0
  14. package/dist/web/assets/{NotificationSettingsPanel-BS01O3sC.js → NotificationSettingsPanel-BYr3-NRw.js} +1 -1
  15. package/dist/web/assets/{TerminalControlPanel-B7S_ebVy.js → TerminalControlPanel-16KT-TCS.js} +1 -1
  16. package/dist/web/assets/{ThemeSettingsPanel-DVaJ6nGu.js → ThemeSettingsPanel-D3-WUp4t.js} +1 -1
  17. package/dist/web/assets/{arrow-right-ORILUMdJ.js → arrow-right-mMC7Zi8G.js} +1 -1
  18. package/dist/web/assets/{collectMessageImages-lfAaZW_Y.js → collectMessageImages-F_MsAk3D.js} +2 -2
  19. package/dist/web/assets/{file-editor-FileCodeEditor-ZAqN9Q2f.js → file-editor-FileCodeEditor-CInvSSQe.js} +3 -3
  20. package/dist/web/assets/{file-editor-MarkdownLivePreview-DXTFwUnj.js → file-editor-MarkdownLivePreview-CRJo_RMu.js} +1 -1
  21. package/dist/web/assets/{file-editor-index-Dj3dV82Z.js → file-editor-index-Cbe_0mr3.js} +1 -1
  22. package/dist/web/assets/{file-editor-index-C4S-qKVH.js → file-editor-index-DXLgqR7Z.js} +1 -1
  23. package/dist/web/assets/{file-editor-index-DKQvp2Qx.js → file-editor-index-Gu3GlV9m.js} +1 -1
  24. package/dist/web/assets/{file-editor-index-Dc2gxJQY.js → file-editor-index-R2lTkg6K.js} +1 -1
  25. package/dist/web/assets/{file-editor-index-Byun61j6.js → file-editor-index-VN_2L1I4.js} +1 -1
  26. package/dist/web/assets/{file-editor-index-BC0Bqs8t.js → file-editor-index-awBV_67q.js} +1 -1
  27. package/dist/web/assets/{file-editor-index-Bo2dEHVF.js → file-editor-index-hdpS6VVW.js} +1 -1
  28. package/dist/web/assets/{file-editor-index-BBHGMD89.js → file-editor-index-ixbyM_m4.js} +1 -1
  29. package/dist/web/assets/{folder-plus-DHw5YJHP.js → folder-plus-DbDHVXck.js} +1 -1
  30. package/dist/web/assets/{highlighted-body-TPN3WLV5-DDb5MlJt.js → highlighted-body-TPN3WLV5-F1GioA6X.js} +1 -1
  31. package/dist/web/assets/{index-ConcKf33.js → index-DJLpIsPI.js} +9 -9
  32. package/dist/web/assets/{index-Be6TVbvo.css → index-XET9GutV.css} +1 -1
  33. package/dist/web/assets/{mermaid-O7DHMXV3-D-5FgaAx.js → mermaid-O7DHMXV3-H7_sz6Xo.js} +3 -3
  34. package/dist/web/index.html +2 -2
  35. package/package.json +1 -1
  36. package/dist/web/assets/App-94_jdzMk.css +0 -1
  37. package/dist/web/assets/App-CapuoJH2.js +0 -18
  38. package/dist/web/assets/DiffDrawer-sMBIj4bW.js +0 -2
  39. package/dist/web/assets/FilesControlPanel-4hHS85Mr.js +0 -1
  40. package/dist/web/assets/NewSessionDialog-LttGZHY7.js +0 -1
@@ -1,2 +1,2 @@
1
- var c=require("node:fs"),n=require("node:path"),p="@vibelet/cli";function i(r){try{let e=JSON.parse((0,c.readFileSync)(r,"utf8"));if(e.name===p&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function l(){return"1.2.230"}var a=l();process.stdout.write(`${a}
1
+ var c=require("node:fs"),n=require("node:path"),p="@vibelet/cli";function i(r){try{let e=JSON.parse((0,c.readFileSync)(r,"utf8"));if(e.name===p&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function l(){return"1.2.231"}var a=l();process.stdout.write(`${a}
2
2
  `);
package/dist/vibelet.mjs CHANGED
@@ -14129,6 +14129,54 @@ function parseAccessTargetArg(argv, fail, env = process.env) {
14129
14129
  }
14130
14130
 
14131
14131
 
14132
+ /***/ }),
14133
+
14134
+ /***/ 2484:
14135
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
14136
+
14137
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
14138
+ /* harmony export */ fJ: () => (/* binding */ fail),
14139
+ /* harmony export */ jU: () => (/* binding */ printDaemonLogs)
14140
+ /* harmony export */ });
14141
+ /* unused harmony export presentConnectionText */
14142
+ /* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(1421);
14143
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3024);
14144
+
14145
+
14146
+
14147
+ // Presentation only: preserve stored logs and transport configuration verbatim.
14148
+ function presentConnectionText(message) {
14149
+ return String(message)
14150
+ .replace(/tailcat/gi, 'Remote Direct')
14151
+ .replace(/(?:https?:\/\/|wss?:\/\/)?\b127\.0\.0\.1\b(?::\d+)?/gi, 'Local connection');
14152
+ }
14153
+
14154
+ function fail(message, details) {
14155
+ process.stderr.write(`${presentConnectionText(message)}\n`);
14156
+ if (details) process.stderr.write(`${presentConnectionText(details)}\n`);
14157
+ process.exit(1);
14158
+ }
14159
+
14160
+ function printDaemonLogs(stdoutLogPath, stderrLogPath) {
14161
+ process.stdout.write(`Stdout: ${stdoutLogPath}\nStderr: ${stderrLogPath}\n\n`);
14162
+ const files = [stdoutLogPath, stderrLogPath].filter((file) => (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(file));
14163
+ if (!files.length) {
14164
+ process.stdout.write('No daemon logs have been written yet.\n');
14165
+ return;
14166
+ }
14167
+ if (process.platform !== 'win32') {
14168
+ const result = (0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync)('tail', ['-n', '80', ...files], { encoding: 'utf8' });
14169
+ if (result.stdout) process.stdout.write(presentConnectionText(result.stdout));
14170
+ if (result.stderr) process.stderr.write(presentConnectionText(result.stderr));
14171
+ return;
14172
+ }
14173
+ for (const file of files) {
14174
+ const lines = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync)(file, 'utf8').trimEnd().split('\n').slice(-80).join('\n');
14175
+ process.stdout.write(`==> ${file} <==\n${presentConnectionText(lines)}\n`);
14176
+ }
14177
+ }
14178
+
14179
+
14132
14180
  /***/ }),
14133
14181
 
14134
14182
  /***/ 3869:
@@ -14772,7 +14820,7 @@ function formatConnectionSummary(target) {
14772
14820
  }
14773
14821
 
14774
14822
  function buildPairingDeepLink(pairingPayloadText) {
14775
- return `vibelet://pair?data=${encodeURIComponent(pairingPayloadText)}`;
14823
+ return `vibelet://pair?data=${Buffer.from(pairingPayloadText, 'utf8').toString('base64url')}`;
14776
14824
  }
14777
14825
 
14778
14826
  function formatUrlHost(host) {
@@ -15758,7 +15806,7 @@ async function presentPairingQr(
15758
15806
 
15759
15807
  async function writePairingOutput(pairingPayload, { directory, pairingCodePath, pairingQrPngPath, stdout }) {
15760
15808
  const payload = JSON.stringify((0,vibelet_pairing_connections/* createCompactPairingPayload */.YP)(pairingPayload));
15761
- const qrPayload = JSON.stringify((0,vibelet_pairing_connections/* createScannablePairingPayload */.u_)(pairingPayload));
15809
+ const qrPayload = (0,vibelet_pairing_connections/* buildPairingDeepLink */.N7)(JSON.stringify((0,vibelet_pairing_connections/* createScannablePairingPayload */.u_)(pairingPayload)));
15762
15810
  const deepLink = (0,vibelet_pairing_connections/* buildPairingDeepLink */.N7)(payload);
15763
15811
  (0,external_node_fs_.mkdirSync)(directory, { recursive: true });
15764
15812
  await lib.toFile(pairingQrPngPath, qrPayload, {
@@ -15768,7 +15816,7 @@ async function writePairingOutput(pairingPayload, { directory, pairingCodePath,
15768
15816
  scale: 8,
15769
15817
  });
15770
15818
  const qr = await renderTerminalQr(qrPayload, stdout.columns);
15771
- (0,external_node_fs_.writeFileSync)(pairingCodePath, `${payload}\n`, 'utf8');
15819
+ (0,external_node_fs_.writeFileSync)(pairingCodePath, `${deepLink}\n`, 'utf8');
15772
15820
  stdout.write('\nScan this QR code with the Vibelet app:\n\n');
15773
15821
  const presentation = await presentPairingQr(pairingQrPngPath, qrPayload, { stdout });
15774
15822
  if (presentation === 'opened') {
@@ -15778,7 +15826,7 @@ async function writePairingOutput(pairingPayload, { directory, pairingCodePath,
15778
15826
  }
15779
15827
  stdout.write(`Pairing QR image saved to:\n${pairingQrPngPath}\n`);
15780
15828
  stdout.write(`This pairing QR expires at: ${pairingPayload.expiresAt}\n`);
15781
- stdout.write(`If this device can't scan, paste this pairing code in Vibelet:\n${payload}\n`);
15829
+ stdout.write(`If this device can't scan, paste this pairing link in Vibelet:\n${deepLink}\n`);
15782
15830
  stdout.write(`Pairing code saved to:\n${pairingCodePath}\n`);
15783
15831
  stdout.write(`Or open this deep link on a device with Vibelet installed:\n${deepLink}\n`);
15784
15832
  }
@@ -16208,25 +16256,27 @@ function compareVersions(a, b) {
16208
16256
 
16209
16257
  __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
16210
16258
  /* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(1421);
16211
- /* harmony import */ var _vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(50);
16259
+ /* harmony import */ var _vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(50);
16212
16260
  /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3024);
16213
16261
  /* harmony import */ var node_module__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(8995);
16214
16262
  /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(8161);
16215
16263
  /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6760);
16216
16264
  /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(3136);
16217
- /* harmony import */ var _vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__ = __nccwpck_require__(6927);
16265
+ /* harmony import */ var _vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__ = __nccwpck_require__(6927);
16218
16266
  /* harmony import */ var _cloudflared_tunnel_manager_mjs__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(1484);
16219
16267
  /* harmony import */ var _vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(3869);
16220
- /* harmony import */ var _vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_15__ = __nccwpck_require__(1010);
16268
+ /* harmony import */ var _vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(1010);
16221
16269
  /* harmony import */ var _linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(4217);
16222
- /* harmony import */ var _vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(6274);
16270
+ /* harmony import */ var _vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(6274);
16223
16271
  /* harmony import */ var _vibelet_update_check_mjs__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(7775);
16224
- /* harmony import */ var _vibelet_help_mjs__WEBPACK_IMPORTED_MODULE_18__ = __nccwpck_require__(4162);
16272
+ /* harmony import */ var _vibelet_help_mjs__WEBPACK_IMPORTED_MODULE_19__ = __nccwpck_require__(4162);
16225
16273
  /* harmony import */ var _vibelet_remote_direct_config_mjs__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(6736);
16226
- /* harmony import */ var _vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(4);
16274
+ /* harmony import */ var _vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__ = __nccwpck_require__(4);
16227
16275
  /* harmony import */ var _terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(5028);
16228
- /* harmony import */ var _vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(7721);
16276
+ /* harmony import */ var _vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__ = __nccwpck_require__(7721);
16229
16277
  /* harmony import */ var _vibelet_pairing_output_mjs__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(9485);
16278
+ /* harmony import */ var _vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(2484);
16279
+
16230
16280
 
16231
16281
 
16232
16282
 
@@ -16276,7 +16326,7 @@ const OFFICIAL_SITE_URL = 'https://vibelet.icu';
16276
16326
 
16277
16327
  let officialSitePrinted = false;
16278
16328
  let updateMessage = '';
16279
- let port = (0,_vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .normalizePortValue */ .Q)(process.env.VIBE_PORT) ?? 9876;
16329
+ let port = (0,_vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_14__/* .normalizePortValue */ .Q)(process.env.VIBE_PORT) ?? 9876;
16280
16330
 
16281
16331
  function printOfficialSite() {
16282
16332
  if (officialSitePrinted) return;
@@ -16298,14 +16348,6 @@ const { checkForUpdateFromCache, fetchLatestVersionInBackground } = (0,_vibelet_
16298
16348
 
16299
16349
  // ─── Helpers ────────────────────────────────────────────────────────────────────
16300
16350
 
16301
- function fail(message, details) {
16302
- process.stderr.write(`${message}\n`);
16303
- if (details) {
16304
- process.stderr.write(`${details}\n`);
16305
- }
16306
- process.exit(1);
16307
- }
16308
-
16309
16351
  function readRuntimeMetadata() {
16310
16352
  if (!(0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(runtimeMetadataPath)) return null;
16311
16353
  try {
@@ -16317,7 +16359,7 @@ function readRuntimeMetadata() {
16317
16359
 
16318
16360
  function ensureRuntimeInstalled() {
16319
16361
  if (!(0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(daemonEntryPath)) {
16320
- fail(
16362
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(
16321
16363
  'The compiled daemon runtime is missing.',
16322
16364
  'Run `pnpm build:release` before invoking `npx @vibelet/cli` from a source checkout.',
16323
16365
  );
@@ -16327,13 +16369,13 @@ function ensureRuntimeInstalled() {
16327
16369
  const runtimeMetadata = readRuntimeMetadata();
16328
16370
 
16329
16371
  if (
16330
- (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .shouldRefuseRuntimeDowngrade */ .Ne)({
16372
+ (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .shouldRefuseRuntimeDowngrade */ .Ne)({
16331
16373
  cliVersion: packageJson.version,
16332
16374
  runtimeVersion: runtimeMetadata?.version,
16333
16375
  runtimeEntryExists: (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(runtimeDaemonEntryPath),
16334
16376
  })
16335
16377
  ) {
16336
- fail(
16378
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(
16337
16379
  `Refusing to downgrade vibelet runtime from v${runtimeMetadata.version} to v${packageJson.version}.`,
16338
16380
  `An older daemon can silently drop on-disk state (sessions, archives) it doesn't know about.\n` +
16339
16381
  `Run \`npx -y vibelet@latest\` to use the newest CLI, or remove \`${runtimeCurrentDir}\` if you really need to roll back.`,
@@ -16531,7 +16573,7 @@ function createDarwinBackend() {
16531
16573
  }
16532
16574
 
16533
16575
  function bootoutService() {
16534
- return (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_15__/* .bootoutLaunchdService */ .B)({
16576
+ return (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_16__/* .bootoutLaunchdService */ .B)({
16535
16577
  launchctl,
16536
16578
  launchDomain,
16537
16579
  label,
@@ -16619,9 +16661,9 @@ ${envSection}
16619
16661
  const bootoutResult = bootoutService();
16620
16662
  const result = launchctl(['bootstrap', launchDomain, plistPath]);
16621
16663
  if (result.status !== 0) {
16622
- fail(
16664
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(
16623
16665
  'Failed to bootstrap vibelet launch agent.',
16624
- [(0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_15__/* .describeLaunchctlResult */ .N)(bootoutResult.result), (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_15__/* .describeLaunchctlResult */ .N)(result)].filter(Boolean).join('\n'),
16666
+ [(0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_16__/* .describeLaunchctlResult */ .N)(bootoutResult.result), (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_16__/* .describeLaunchctlResult */ .N)(result)].filter(Boolean).join('\n'),
16625
16667
  );
16626
16668
  }
16627
16669
  }
@@ -16630,14 +16672,14 @@ ${envSection}
16630
16672
  start() {
16631
16673
  const result = launchctl(['kickstart', `${launchDomain}/${label}`]);
16632
16674
  if (result.status !== 0 && !this.isServiceInstalled()) {
16633
- fail('Failed to start vibelet daemon.', result.stderr || result.stdout);
16675
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('Failed to start vibelet daemon.', result.stderr || result.stdout);
16634
16676
  }
16635
16677
  },
16636
16678
 
16637
16679
  stop() {
16638
16680
  const bootoutResult = bootoutService();
16639
16681
  if (!bootoutResult.ok) {
16640
- fail('Failed to unload vibelet launch agent.', (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_15__/* .describeLaunchctlResult */ .N)(bootoutResult.result));
16682
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('Failed to unload vibelet launch agent.', (0,_vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_16__/* .describeLaunchctlResult */ .N)(bootoutResult.result));
16641
16683
  }
16642
16684
  // bootout returns before launchd actually finishes unloading. Poll
16643
16685
  // until the service is gone so a follow-up install() doesn't see a
@@ -16738,7 +16780,7 @@ WantedBy=default.target
16738
16780
  fallback.install();
16739
16781
  return;
16740
16782
  }
16741
- fail('Failed to reload vibelet systemd user units.', resultOutput(reloadResult));
16783
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('Failed to reload vibelet systemd user units.', resultOutput(reloadResult));
16742
16784
  }
16743
16785
  }
16744
16786
  const enableResult = systemctl(['enable', unitName]);
@@ -16747,7 +16789,7 @@ WantedBy=default.target
16747
16789
  fallback.install();
16748
16790
  return;
16749
16791
  }
16750
- fail('Failed to enable vibelet daemon.', resultOutput(enableResult));
16792
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('Failed to enable vibelet daemon.', resultOutput(enableResult));
16751
16793
  }
16752
16794
  },
16753
16795
 
@@ -16763,7 +16805,7 @@ WantedBy=default.target
16763
16805
  fallback.start();
16764
16806
  return;
16765
16807
  }
16766
- fail('Failed to start vibelet daemon.', result.stderr || result.stdout);
16808
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('Failed to start vibelet daemon.', result.stderr || result.stdout);
16767
16809
  }
16768
16810
  },
16769
16811
 
@@ -16937,7 +16979,7 @@ async function waitForHealth(timeoutMs = 30_000) {
16937
16979
  if (health) {
16938
16980
  return health;
16939
16981
  }
16940
- fail(`Timed out waiting for vibelet daemon on port ${port}.`);
16982
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(`Timed out waiting for vibelet daemon on port ${port}.`);
16941
16983
  }
16942
16984
 
16943
16985
  async function postJson(pathname, body = undefined) {
@@ -16948,7 +16990,7 @@ async function postJson(pathname, body = undefined) {
16948
16990
  });
16949
16991
  const payload = await response.json().catch(() => ({}));
16950
16992
  if (!response.ok) {
16951
- fail(`Request to ${pathname} failed.`, JSON.stringify(payload, null, 2));
16993
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(`Request to ${pathname} failed.`, JSON.stringify(payload, null, 2));
16952
16994
  }
16953
16995
  return payload;
16954
16996
  }
@@ -16974,32 +17016,32 @@ function retireTrackedQuickTunnel({ required = false } = {}) {
16974
17016
  tunnelStatePath,
16975
17017
  isAlive: isProcessAlive,
16976
17018
  required,
16977
- fail,
17019
+ fail: _vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ,
16978
17020
  });
16979
17021
  }
16980
17022
 
16981
17023
  async function stopRunningDaemon(backend) {
16982
17024
  try {
16983
- await (0,_vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_16__/* .stopDaemonWithHooks */ .v)({
17025
+ await (0,_vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_17__/* .stopDaemonWithHooks */ .v)({
16984
17026
  requestShutdown,
16985
17027
  backendStop: () => backend.stop(),
16986
17028
  waitForDaemonExit,
16987
17029
  });
16988
17030
  } catch (error) {
16989
- fail(error instanceof Error ? error.message : String(error));
17031
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(error instanceof Error ? error.message : String(error));
16990
17032
  }
16991
17033
  }
16992
17034
 
16993
17035
  async function ensureDaemonForTerminalControl(backend) {
16994
17036
  const healthyDaemon = await probeHealth(1_500);
16995
17037
  const tokenReady = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(runtimeTerminalControlTokenPath);
16996
- const terminalControlReady = healthyDaemon && tokenReady && (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .doesHealthSupportTerminalControl */ .iX)(healthyDaemon);
17038
+ const terminalControlReady = healthyDaemon && tokenReady && (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .doesHealthSupportTerminalControl */ .iX)(healthyDaemon);
16997
17039
  if (terminalControlReady) return healthyDaemon;
16998
17040
 
16999
17041
  if (healthyDaemon && !terminalControlReady) {
17000
17042
  const activeSessions = typeof healthyDaemon.activeSessions === 'number' ? healthyDaemon.activeSessions : 0;
17001
17043
  if (activeSessions > 0) {
17002
- const reason = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .doesHealthSupportTerminalControl */ .iX)(healthyDaemon)
17044
+ const reason = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .doesHealthSupportTerminalControl */ .iX)(healthyDaemon)
17003
17045
  ? 'terminal-control token is missing'
17004
17046
  : 'the running daemon does not advertise terminal-control support';
17005
17047
  process.stderr.write(
@@ -17018,8 +17060,8 @@ async function ensureDaemonForTerminalControl(backend) {
17018
17060
  }
17019
17061
 
17020
17062
  function validateExplicitCleartextHosts({ hostArg, fallbackHostsArg }) {
17021
- const [unsafeHost] = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .findUnsafeCleartextHosts */ .dE)({ hostArg, fallbackHostsArg });
17022
- if (unsafeHost) fail(`Refusing public cleartext host ${unsafeHost}. Use HTTPS, Tailscale, LAN, or local access.`);
17063
+ const [unsafeHost] = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .findUnsafeCleartextHosts */ .dE)({ hostArg, fallbackHostsArg });
17064
+ if (unsafeHost) (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(`Refusing public cleartext host ${unsafeHost}. Use HTTPS, Tailscale, LAN, or local access.`);
17023
17065
  }
17024
17066
 
17025
17067
  async function printPairingQr(pairingPayload) {
@@ -17039,11 +17081,11 @@ async function printPairingSummary(existingHealth = null, { relayUrlOverride = n
17039
17081
  const pairingPayload =
17040
17082
  relayUrlOverride === null
17041
17083
  ? daemonPairingPayload
17042
- : (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .applyRelayUrlToPairingPayload */ .mp)(daemonPairingPayload, relayUrlOverride);
17043
- const connections = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .normalizePairingConnections */ .No)(pairingPayload);
17084
+ : (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .applyRelayUrlToPairingPayload */ .mp)(daemonPairingPayload, relayUrlOverride);
17085
+ const connections = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .normalizePairingConnections */ .No)(pairingPayload);
17044
17086
  const [preferredConnection, ...otherConnections] = connections;
17045
- const webUiConnection = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .selectWebUiConnectionTarget */ .SF)(connections);
17046
- const compactPairingPayload = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .createCompactPairingPayload */ .YP)(pairingPayload);
17087
+ const webUiConnection = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .selectWebUiConnectionTarget */ .SF)(connections);
17088
+ const compactPairingPayload = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .createCompactPairingPayload */ .YP)(pairingPayload);
17047
17089
 
17048
17090
  process.stdout.write(`Vibelet daemon is ready.\n\n`);
17049
17091
  process.stdout.write(`Device: ${health.displayName}\n`);
@@ -17051,26 +17093,26 @@ async function printPairingSummary(existingHealth = null, { relayUrlOverride = n
17051
17093
  process.stdout.write(`Host: ${pairingPayload.canonicalHost}\n`);
17052
17094
  process.stdout.write(`Port: ${pairingPayload.port}\n`);
17053
17095
  if (preferredConnection) {
17054
- process.stdout.write(`Preferred path: ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .formatConnectionSummary */ .uR)(preferredConnection)}\n`);
17096
+ process.stdout.write(`Preferred path: ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .formatConnectionSummary */ .uR)(preferredConnection)}\n`);
17055
17097
  }
17056
17098
  if (otherConnections.length > 0) {
17057
17099
  process.stdout.write(`Other paths:\n`);
17058
17100
  otherConnections.forEach((target) => {
17059
- process.stdout.write(` - ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .formatConnectionSummary */ .uR)(target)}\n`);
17101
+ process.stdout.write(` - ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .formatConnectionSummary */ .uR)(target)}\n`);
17060
17102
  });
17061
17103
  }
17062
- process.stdout.write(`Web UI: ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .buildWebUiUrl */ .Gv)({ host: 'localhost', port }, compactPairingPayload)}\n`);
17104
+ process.stdout.write(`Web UI: ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .buildWebUiUrl */ .Gv)({ host: 'localhost', port }, compactPairingPayload)}\n`);
17063
17105
  if (webUiConnection && webUiConnection.host !== 'localhost') {
17064
- process.stdout.write(`Web UI (other devices): ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_17__/* .buildWebUiUrl */ .Gv)(webUiConnection, compactPairingPayload)}\n`);
17106
+ process.stdout.write(`Web UI (other devices): ${(0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_18__/* .buildWebUiUrl */ .Gv)(webUiConnection, compactPairingPayload)}\n`);
17065
17107
  }
17066
17108
  process.stdout.write(`Paired devices: ${health.pairedDevices}\n`);
17067
17109
  await printPairingQr(pairingPayload);
17068
17110
  }
17069
17111
 
17070
- const printHelp = () => (0,_vibelet_help_mjs__WEBPACK_IMPORTED_MODULE_18__/* .printCliHelp */ .n)({ packageJson, port });
17112
+ const printHelp = () => (0,_vibelet_help_mjs__WEBPACK_IMPORTED_MODULE_19__/* .printCliHelp */ .n)({ packageJson, port });
17071
17113
 
17072
17114
  function parseNamedArg(name, errorHint) {
17073
- return (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .parseNamedArg */ .nE)(process.argv, name, errorHint, fail);
17115
+ return (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .parseNamedArg */ .nE)(process.argv, name, errorHint, _vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ);
17074
17116
  }
17075
17117
 
17076
17118
  function parseRelayArg() {
@@ -17080,9 +17122,9 @@ function parseRelayArg() {
17080
17122
  function parsePortArg() {
17081
17123
  const rawValue = parseNamedArg('port', '9876');
17082
17124
  if (rawValue === null) return null;
17083
- const parsed = (0,_vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .normalizePortValue */ .Q)(rawValue);
17125
+ const parsed = (0,_vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_14__/* .normalizePortValue */ .Q)(rawValue);
17084
17126
  if (parsed === null) {
17085
- fail('--port must be an integer between 1 and 65535');
17127
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('--port must be an integer between 1 and 65535');
17086
17128
  }
17087
17129
  return parsed;
17088
17130
  }
@@ -17182,37 +17224,37 @@ async function main() {
17182
17224
  return;
17183
17225
  }
17184
17226
 
17185
- let accessTarget = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .parseAccessTargetArg */ .tY)(process.argv, fail);
17186
- const cloudflareFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, 'cloudflare') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)('cloudflare');
17227
+ let accessTarget = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .parseAccessTargetArg */ .tY)(process.argv, _vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ);
17228
+ const cloudflareFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, 'cloudflare') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)('cloudflare');
17187
17229
  if (cloudflareFlag && accessTarget && accessTarget.kind !== 'remote')
17188
- fail('Do not combine --cloudflare with another --access mode.');
17230
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)('Do not combine --cloudflare with another --access mode.');
17189
17231
  if (cloudflareFlag) accessTarget = { kind: 'remote' };
17190
- if (accessTarget && (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .hasLegacyAccessArgs */ .NT)(process.argv, process.env)) {
17191
- fail(
17232
+ if (accessTarget && (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .hasLegacyAccessArgs */ .NT)(process.argv, process.env)) {
17233
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(
17192
17234
  'Do not combine --access with legacy access flags.',
17193
17235
  'Use one form, for example `--access=local`, `--access=remote`, `--access=https://...`, or `--access=<host>`.',
17194
17236
  );
17195
17237
  }
17196
17238
  if (!accessTarget) {
17197
17239
  const legacyRemote =
17198
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, 'remote') ||
17199
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, 'tunnel') ||
17200
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)('remote') ||
17201
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)('tunnel');
17240
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, 'remote') ||
17241
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, 'tunnel') ||
17242
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)('remote') ||
17243
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)('tunnel');
17202
17244
  if (legacyRemote) accessTarget = { kind: 'remote' };
17203
17245
  }
17204
17246
  const localFlag =
17205
17247
  accessTarget?.kind === 'local' ||
17206
17248
  (!accessTarget &&
17207
- ((0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, 'local') ||
17208
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)('local') ||
17209
- (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .isTruthyEnvFlag */ .ap)(process.env.VIBELET_LOCAL_ONLY)));
17210
- const forceFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, 'force') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)('force');
17249
+ ((0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, 'local') ||
17250
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)('local') ||
17251
+ (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .isTruthyEnvFlag */ .ap)(process.env.VIBELET_LOCAL_ONLY)));
17252
+ const forceFlag = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, 'force') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)('force');
17211
17253
  // App-triggered upgrades keep the currently working connection intact.
17212
- const preserveAccess = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, 'preserve-access') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)('preserve-access');
17254
+ const preserveAccess = (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, 'preserve-access') || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)('preserve-access');
17213
17255
  const { enabled: remoteDirectEnabled, explicitChoice: explicitRemoteDirectChoice } = (0,_vibelet_remote_direct_config_mjs__WEBPACK_IMPORTED_MODULE_10__/* .configureRemoteDirectMode */ .FN)({
17214
- readFlag: (name) => (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .consumeFlag */ .PC)(process.argv, name) || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_19__/* .readNpmConfigFlag */ .AW)(name),
17215
- fail,
17256
+ readFlag: (name) => (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .consumeFlag */ .PC)(process.argv, name) || (0,_vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_20__/* .readNpmConfigFlag */ .AW)(name),
17257
+ fail: _vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ,
17216
17258
  config: remoteDirectConfig,
17217
17259
  localMode: localFlag,
17218
17260
  cloudflareRequested: accessTarget?.kind === 'remote',
@@ -17241,7 +17283,7 @@ async function main() {
17241
17283
  command = parseCommandArg(process.argv);
17242
17284
  const startCommand = isDaemonStartCommand(command);
17243
17285
  const savedRelayUrl = relayConfig.load();
17244
- const shouldManageTunnel = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .shouldManageQuickTunnel */ .gm)({
17286
+ const shouldManageTunnel = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .shouldManageQuickTunnel */ .gm)({
17245
17287
  startCommand,
17246
17288
  localMode: localFlag,
17247
17289
  relayArg,
@@ -17255,11 +17297,11 @@ async function main() {
17255
17297
  });
17256
17298
  const cloudflaredProtocol = process.env.VIBELET_CLOUDFLARED_PROTOCOL?.trim() || 'http2';
17257
17299
  if (shouldManageTunnel && !['auto', 'quic', 'http2'].includes(cloudflaredProtocol)) {
17258
- fail(`Unsupported VIBELET_CLOUDFLARED_PROTOCOL: ${cloudflaredProtocol}. Use auto, quic, or http2.`);
17300
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(`Unsupported VIBELET_CLOUDFLARED_PROTOCOL: ${cloudflaredProtocol}. Use auto, quic, or http2.`);
17259
17301
  }
17260
17302
 
17261
17303
  if (
17262
- (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .shouldRetireManagedQuickTunnel */ .Pg)({
17304
+ (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .shouldRetireManagedQuickTunnel */ .Pg)({
17263
17305
  startCommand,
17264
17306
  manageQuickTunnel: shouldManageTunnel,
17265
17307
  preserveAccess,
@@ -17283,7 +17325,7 @@ async function main() {
17283
17325
  protocol: cloudflaredProtocol,
17284
17326
  updateStatePath: cloudflaredUpdateStatePath,
17285
17327
  isAlive: isProcessAlive,
17286
- fail,
17328
+ fail: _vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ,
17287
17329
  });
17288
17330
  managedTunnelFailed = managedTunnel.failed;
17289
17331
  if (managedTunnel.relayUrl) {
@@ -17367,24 +17409,7 @@ async function main() {
17367
17409
  }
17368
17410
 
17369
17411
  if (command === 'logs') {
17370
- process.stdout.write(`Stdout: ${stdoutLogPath}\n`);
17371
- process.stdout.write(`Stderr: ${stderrLogPath}\n\n`);
17372
- const logFiles = [stdoutLogPath, stderrLogPath].filter((filePath) => (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(filePath));
17373
- if (logFiles.length === 0) {
17374
- process.stdout.write('No daemon logs have been written yet.\n');
17375
- return;
17376
- }
17377
- if (process.platform === 'win32') {
17378
- for (const logFile of logFiles) {
17379
- const content = (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync)(logFile, 'utf8');
17380
- const lines = content.split('\n').slice(-80).join('\n');
17381
- process.stdout.write(`==> ${logFile} <==\n${lines}\n`);
17382
- }
17383
- } else {
17384
- const result = (0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync)('tail', ['-n', '80', ...logFiles], { encoding: 'utf8' });
17385
- if (result.stdout) process.stdout.write(result.stdout);
17386
- if (result.stderr) process.stderr.write(result.stderr);
17387
- }
17412
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .printDaemonLogs */ .jU)(stdoutLogPath, stderrLogPath);
17388
17413
  return;
17389
17414
  }
17390
17415
 
@@ -17402,7 +17427,7 @@ async function main() {
17402
17427
  if (command === 'reset') {
17403
17428
  const healthyDaemon = await probeHealth(1_500);
17404
17429
  const hasExplicitConfigOverrides =
17405
- !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
17430
+ !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
17406
17431
  health: healthyDaemon,
17407
17432
  relayUrl,
17408
17433
  canonicalHost: hostArg || '',
@@ -17434,13 +17459,13 @@ async function main() {
17434
17459
 
17435
17460
  if (command !== 'default' && command !== 'start') {
17436
17461
  printHelp();
17437
- fail(`Unknown command: ${command}`);
17462
+ (0,_vibelet_cli_presentation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .fail */ .fJ)(`Unknown command: ${command}`);
17438
17463
  }
17439
17464
 
17440
17465
  let healthyDaemon = await probeHealth(1_500);
17441
- let remoteDirectMismatch = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .isRemoteDirectConfigurationMismatch */ ._4)({ health: healthyDaemon, remoteDirectEnabled });
17466
+ let remoteDirectMismatch = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .isRemoteDirectConfigurationMismatch */ ._4)({ health: healthyDaemon, remoteDirectEnabled });
17442
17467
  let hasExplicitConfigOverrides =
17443
- !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
17468
+ !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
17444
17469
  health: healthyDaemon,
17445
17470
  relayUrl,
17446
17471
  canonicalHost: hostArg || '',
@@ -17466,7 +17491,7 @@ async function main() {
17466
17491
  const refreshedHealth = await tryUpdateRunningDaemonRelay(relayUrl);
17467
17492
  if (refreshedHealth) {
17468
17493
  healthyDaemon = refreshedHealth;
17469
- hasExplicitConfigOverrides = !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
17494
+ hasExplicitConfigOverrides = !(0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .doesHealthMatchRequestedConnectionConfig */ .nW)({
17470
17495
  health: healthyDaemon,
17471
17496
  relayUrl,
17472
17497
  canonicalHost: '',
@@ -17474,10 +17499,10 @@ async function main() {
17474
17499
  localMode: false,
17475
17500
  remoteDirectEnabled,
17476
17501
  });
17477
- remoteDirectMismatch = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .isRemoteDirectConfigurationMismatch */ ._4)({ health: healthyDaemon, remoteDirectEnabled });
17502
+ remoteDirectMismatch = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .isRemoteDirectConfigurationMismatch */ ._4)({ health: healthyDaemon, remoteDirectEnabled });
17478
17503
  }
17479
17504
  }
17480
- const existingHealth = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_14__/* .shouldReuseHealthyDaemon */ .ZN)({
17505
+ const existingHealth = (0,_vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_15__/* .shouldReuseHealthyDaemon */ .ZN)({
17481
17506
  command,
17482
17507
  daemonHealthy: Boolean(healthyDaemon),
17483
17508
  hasExplicitConfigOverrides,
@@ -17489,7 +17514,7 @@ async function main() {
17489
17514
  if (existingHealth) {
17490
17515
  const runningVersion = typeof existingHealth.version === 'string' ? existingHealth.version : '';
17491
17516
  const activeSessions = typeof existingHealth.activeSessions === 'number' ? existingHealth.activeSessions : 0;
17492
- const isOutdated = runningVersion && (0,_vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_13__/* .compareVersions */ .Z)(runningVersion, packageJson.version) < 0;
17517
+ const isOutdated = runningVersion && (0,_vibelet_value_validation_mjs__WEBPACK_IMPORTED_MODULE_14__/* .compareVersions */ .Z)(runningVersion, packageJson.version) < 0;
17493
17518
  // Only force a driver switch when the user explicitly requested one (flag/env).
17494
17519
  const requestedDriver = process.env.VIBE_CLAUDE_DRIVER ? normalizeDriver(process.env.VIBE_CLAUDE_DRIVER) : null;
17495
17520
  const runningDriver = normalizeDriver(existingHealth.claudeDriverMode);
@@ -0,0 +1 @@
1
+ .skill-suggestion-list button[aria-selected=true]{background:var(--card-alt);box-shadow:inset 2px 0 var(--accent)}.composer .send-button{position:relative}.composer .send-button[data-state=sending]:disabled{background:var(--text);color:var(--bg);opacity:1}.composer-send-spinner{animation:composer-send-spin 1s linear infinite}.composer-send-progress{position:absolute;inset:3px;border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-top-color:currentColor;border-radius:50%;animation:composer-send-spin 1.8s linear infinite;pointer-events:none}.composer .send-button .composer-send-stop{width:10px;height:10px;fill:currentColor;stroke-width:0}.composer-send-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@keyframes composer-send-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.composer-send-spinner,.composer-send-progress{animation:none}}.message>.message-actions{justify-content:flex-start;margin-top:8px}.message>.message-markdown-source{padding:0;border:0;background:transparent;box-shadow:none;border-radius:0;font-family:var(--font-mono);font-size:13px;line-height:1.65;-webkit-user-select:text;user-select:text}.message-delivery{color:inherit;font-size:11px;white-space:nowrap}.replying-placeholder{padding:10px 14px}.message-replying-indicator{display:inline-flex;align-items:center;gap:7px;margin-top:7px;color:var(--text-secondary);font-size:12px;line-height:1.3;white-space:nowrap}.replying-placeholder .message-replying-indicator{margin-top:0}.message-replying-dots{display:inline-flex;align-items:center;gap:3px;height:12px;color:var(--accent-foreground)}.message-replying-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.4;animation:message-replying-pulse 1.2s ease-in-out infinite}.message-replying-dots i:nth-child(2){animation-delay:.15s}.message-replying-dots i:nth-child(3){animation-delay:.3s}@keyframes message-replying-pulse{50%{opacity:1;transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.message-replying-dots i{animation:none;opacity:.8}}.message-image-attachments{display:flex;align-items:flex-start;flex-direction:column;gap:8px;margin-top:12px}.message-image-preview{display:flex;width:fit-content;align-items:center;justify-content:center;max-width:100%;padding:0;margin:6px 0;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--card-alt);color:var(--text-secondary);vertical-align:middle;cursor:zoom-in}.message-image-preview img{display:block;max-width:min(100%,480px);max-height:320px;width:auto;height:auto;object-fit:contain}.message-markdown td .message-image-preview img{max-width:160px;max-height:120px}.message-image-placeholder{display:inline-flex;align-items:center;gap:8px;padding:16px;font-size:12px}.message-image-placeholder svg{width:16px;height:16px}.session-item{position:relative;flex-shrink:0;min-width:0;border:1px solid color-mix(in srgb,var(--border) 65%,transparent);border-radius:7px;overflow:hidden}.session-title-tooltip{position:fixed;z-index:2000;max-width:min(360px,calc(100vw - 24px));box-sizing:border-box;padding:7px 10px;border:1px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text);box-shadow:0 10px 30px -16px var(--shadow);font-size:12px;line-height:1.45;white-space:normal;text-overflow:clip;overflow-wrap:anywhere;pointer-events:none}.session-item:hover,.session-item:focus-within{background:var(--sidebar-selection)}.session-item[data-multi-selected]{border-color:var(--accent-soft-strong);background:var(--accent-soft)}.session-item[data-multi-selected]>.session-row{background:transparent}.session-item>.session-row{min-height:46px;gap:4px}.session-item .session-row-head{display:grid;grid-template-columns:minmax(0,1fr) 66px 6px;gap:6px}.session-item .session-row-metadata{display:block;margin:0;width:66px;white-space:nowrap;text-align:right}.session-item .session-row-metadata>span{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-variant-numeric:tabular-nums}.session-item .session-row-footer{padding-right:12px}.session-item .session-row-footer .session-row-agent{flex:0 0 auto;margin-left:auto;font-size:11px;text-align:right}.session-quick-actions{position:absolute;top:5px;right:16px;z-index:1;display:flex;gap:2px;padding:1px;border-radius:5px;background:var(--sidebar-selection);opacity:0;pointer-events:none}.session-quick-actions button{display:grid;place-items:center;width:22px;height:22px;padding:0;border:0;border-radius:4px;background:transparent;color:var(--text-secondary);cursor:pointer}.session-quick-actions button svg{width:13px;height:13px}.session-quick-actions button:hover,.session-quick-actions button:focus-visible{background:var(--accent-soft);color:var(--accent-action);outline:none}.session-quick-actions button.is-pinned,.session-quick-actions button.is-archived{color:var(--accent-action)}.session-quick-actions button:disabled{opacity:.4;cursor:default}.session-item:hover .session-quick-actions,.session-item:focus-within .session-quick-actions{opacity:1;pointer-events:auto}.session-item:hover .session-row-metadata,.session-item:focus-within .session-row-metadata{visibility:hidden}.session-item[data-active]:hover .session-row-metadata,.session-item[data-active]:focus-within .session-row-metadata{visibility:visible}.session-item[data-active] .session-quick-actions{right:89px}.session-item[data-active]:hover .session-row-head strong,.session-item[data-active]:focus-within .session-row-head strong{padding-right:50px}@media(hover:none){.session-item .session-quick-actions{opacity:1;pointer-events:auto}.session-item .session-row-metadata{visibility:hidden}.session-item[data-active] .session-row-metadata{visibility:visible}}.session-item .session-row-footer{display:flex;min-height:14px;gap:6px}.session-git-links{position:absolute;left:8px;right:72px;bottom:6px;display:flex;align-items:center;gap:8px;min-width:0;pointer-events:none;font-size:11px;color:var(--text-secondary)}.session-git-links a{pointer-events:auto}.session-item[data-statuses="1"] .session-git-links{right:128px}.session-item[data-statuses="2"] .session-git-links{right:184px}.session-git-folder{max-width:25%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-git-links .session-branch-link{display:block;min-width:0;max-width:160px;color:inherit;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-git-links .session-pr-link{flex:0 0 auto;white-space:nowrap;color:inherit;text-decoration:none}.session-git-links a:hover{color:var(--accent-action);text-decoration:underline}.right-sidebar-icon-hint{position:fixed;z-index:2000;width:max-content;max-width:min(280px,calc(100vw - 24px));padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--panel);color:var(--text);box-shadow:0 8px 24px -12px var(--shadow);font-size:11px;line-height:1.35;text-align:center;white-space:normal;overflow-wrap:anywhere;pointer-events:none}