@sma1lboy/rove 0.9.178 → 0.9.179

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 (46) hide show
  1. package/dist/cli/{chunk-hkzx3t2h.js → chunk-0vrv03qn.js} +1 -1
  2. package/dist/cli/{chunk-qcb0mkzz.js → chunk-0xgd6as7.js} +1 -1
  3. package/dist/cli/{chunk-by1wyk0p.js → chunk-1ngaph89.js} +1 -1
  4. package/dist/cli/{chunk-fne9vb02.js → chunk-1vpsb31h.js} +1 -1
  5. package/dist/cli/{chunk-ea9t4hh5.js → chunk-2ragcjyb.js} +1 -1
  6. package/dist/cli/{chunk-pbrpzt04.js → chunk-3p5yjwjs.js} +1 -1
  7. package/dist/cli/{chunk-kxarx5r4.js → chunk-4kweezsh.js} +2 -2
  8. package/dist/cli/{chunk-gkdy1skt.js → chunk-615s6xjd.js} +1 -1
  9. package/dist/cli/{chunk-wqyq6481.js → chunk-6f18r6vf.js} +1 -1
  10. package/dist/cli/{chunk-95f55p39.js → chunk-8cdrt8zx.js} +1 -1
  11. package/dist/cli/{chunk-1mrjn8dj.js → chunk-8qx3959c.js} +1 -1
  12. package/dist/cli/{chunk-6btgvytm.js → chunk-8znc46fw.js} +1 -1
  13. package/dist/cli/{chunk-garjd34w.js → chunk-9d4tfysz.js} +1 -1
  14. package/dist/cli/{chunk-ajtxh7kg.js → chunk-ac0yv0v4.js} +1 -1
  15. package/dist/cli/{chunk-b8wqsg37.js → chunk-bg16r4yh.js} +1 -1
  16. package/dist/cli/{chunk-753gvvhj.js → chunk-cnre6fbm.js} +1 -1
  17. package/dist/cli/chunk-d4fvkzp3.js +2 -0
  18. package/dist/cli/{chunk-5rztnh8g.js → chunk-d8nmt9zt.js} +1 -1
  19. package/dist/cli/{chunk-q797ryhf.js → chunk-frdr9bjy.js} +1 -1
  20. package/dist/cli/{chunk-fx0gh17g.js → chunk-gpt8mj16.js} +1 -1
  21. package/dist/cli/{chunk-s72y2s88.js → chunk-gsy8xfh6.js} +1 -1
  22. package/dist/cli/{chunk-pn96m962.js → chunk-k0xgtzm2.js} +1 -1
  23. package/dist/cli/{chunk-n2r1ngzj.js → chunk-kweffk7w.js} +1 -1
  24. package/dist/cli/{chunk-xrqaqj84.js → chunk-ne34zknk.js} +1 -1
  25. package/dist/cli/{chunk-p6rbbgct.js → chunk-nnmpben9.js} +2 -2
  26. package/dist/cli/{chunk-ax8t5m5s.js → chunk-nnscywzf.js} +1 -1
  27. package/dist/cli/{chunk-earr7hwp.js → chunk-nqkcrhpp.js} +1 -1
  28. package/dist/cli/{chunk-hsggj5yh.js → chunk-pspw5k9e.js} +3 -3
  29. package/dist/cli/{chunk-9vgmrf5t.js → chunk-q8v9zad9.js} +1 -1
  30. package/dist/cli/{chunk-8zn7pdc2.js → chunk-r2r5krab.js} +1 -1
  31. package/dist/cli/{chunk-a66g3dea.js → chunk-rwkbxtpe.js} +1 -1
  32. package/dist/cli/{chunk-1nta5wc3.js → chunk-s0gqxhk7.js} +1 -1
  33. package/dist/cli/{chunk-rwsh6m4e.js → chunk-t0bfjapm.js} +3 -3
  34. package/dist/cli/chunk-te8g5azg.js +39 -0
  35. package/dist/cli/{chunk-cr5vmwmj.js → chunk-v5dmc2r6.js} +1 -1
  36. package/dist/cli/{chunk-6p1qv979.js → chunk-wz421xna.js} +1 -1
  37. package/dist/cli/{chunk-tzy85y5k.js → chunk-xswrw836.js} +1 -1
  38. package/dist/cli/{chunk-hxgkx142.js → chunk-y9bgn622.js} +1 -1
  39. package/dist/cli/{chunk-q8h41zg7.js → chunk-zkj59kkd.js} +1 -1
  40. package/dist/cli/{chunk-2ze11xhe.js → chunk-zx7fkp8y.js} +1 -1
  41. package/dist/cli/index.js +3 -3
  42. package/dist/cli/kobe.js +1 -1
  43. package/dist/cli/rove.js +1 -1
  44. package/package.json +1 -1
  45. package/dist/cli/chunk-fbc5d1fq.js +0 -3
  46. package/dist/cli/chunk-khsq49yp.js +0 -2
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{stopDaemonProcess}from"./chunk-y13681dw.js";import{KobeDaemonClient}from"./chunk-b5mbpv97.js";import{DAEMON_PROTOCOL_VERSION}from"./chunk-re5ke4fz.js";import{isProcessAlive,readPidFile}from"./chunk-t915by6w.js";import{defaultDaemonLogPath,defaultDaemonPidPath,defaultDaemonSocketPath}from"./chunk-8cjr5ypt.js";import{LEGACY_KOBE_PRODUCT_NAME,ROVE_PRODUCT_NAME}from"./chunk-hq4b3fca.js";import{spawn}from"child_process";import{closeSync,existsSync,mkdirSync,openSync,statSync,unlinkSync}from"fs";import{dirname,resolve}from"path";import{fileURLToPath}from"url";var DAEMON_START_ARGS=["daemon","start"],DAEMON_HELLO_TIMEOUT_MS=3000,BUSY_DAEMON_GRACE_MS=15000;function detachOptions(platform=process.platform){return platform==="win32"?{windowsHide:!0}:{detached:!0}}function spawnDetachedDaemon(command,args,env,logPath){let stdio="ignore",logFd;try{mkdirSync(dirname(logPath),{recursive:!0}),logFd=openSync(logPath,"a"),stdio=["ignore",logFd,logFd]}catch{stdio="ignore"}if(spawn(command,[...args],{...detachOptions(),stdio,env}).unref(),logFd!==void 0)try{closeSync(logFd)}catch{}}function insideEngineSession(env=process.env){return typeof env.KOBE_TASK_ID==="string"&&env.KOBE_TASK_ID!==""}function autospawnDaemonEnv(env=process.env,reason="autospawn"){let{KOBE_TASK_ID:_task,KOBE_TAB_ID:_tab,KOBE_TUI:_tui,KOBE_TERMINAL_PTY:_pty,ROVE_TASK_ID:_roveTask,ROVE_TAB_ID:_roveTab,ROVE_TUI:_roveTui,ROVE_TERMINAL_PTY:_rovePty,...rest}=env;return{...rest,KOBE_DAEMON_AUTOSPAWNED:"1",ROVE_DAEMON_AUTOSPAWNED:"1",KOBE_DAEMON_SPAWN_REASON:reason,ROVE_DAEMON_SPAWN_REASON:reason}}function daemonSpawnReason(env=process.env){let raw=env.ROVE_DAEMON_SPAWN_REASON??env.KOBE_DAEMON_SPAWN_REASON;if(raw==="explicit-restart"||raw==="autospawn")return raw;return env.ROVE_DAEMON_AUTOSPAWNED==="1"||env.KOBE_DAEMON_AUTOSPAWNED==="1"?"autospawn":"manual"}var SPAWN_LOCK_STALE_MS=40000,SPAWN_LOCK_WAIT_MS=30000;function tryAcquireSpawnLock(lockPath,staleMs=SPAWN_LOCK_STALE_MS){let create=()=>{return mkdirSync(dirname(lockPath),{recursive:!0}),closeSync(openSync(lockPath,"wx")),!0};try{return create()}catch{try{if(Date.now()-statSync(lockPath).mtimeMs<=staleMs)return!1;return unlinkSync(lockPath),create()}catch{return!1}}}async function ensureDaemonReachable(resolveSpawn=resolveKobeSpawn,spawnReason="autospawn"){let socketPath=defaultDaemonSocketPath(),state=await probeDaemonSocket(socketPath);if(state==="alive")return socketPath;if(state==="wedged"&&insideEngineSession())throw Error(`rove: daemon at ${socketPath} is not answering hello (busy or wedged); not restarting it from inside an engine session \u2014 retry, or run \`rove daemon restart\` from a regular shell`);let lockPath=`${defaultDaemonPidPath()}.spawn-lock`;if(!tryAcquireSpawnLock(lockPath)){let deadline=Date.now()+SPAWN_LOCK_WAIT_MS;while(Date.now()<deadline){if(await testDaemonResponds(socketPath))return socketPath;await new Promise((resolveTimer)=>setTimeout(resolveTimer,150))}throw Error(`rove: another process is starting the daemon but it never became reachable at ${socketPath}; check ${defaultDaemonLogPath()} or run \`rove doctor\``)}try{if(await probeDaemonSocket(socketPath)==="alive")return socketPath;let livePid=await readPidFile(defaultDaemonPidPath());if(livePid!==null&&livePid!==process.pid&&isProcessAlive(livePid)){let deadline2=Date.now()+BUSY_DAEMON_GRACE_MS;while(Date.now()<deadline2){if(await new Promise((resolveTimer)=>setTimeout(resolveTimer,250)),await testDaemonResponds(socketPath))return socketPath;if(!isProcessAlive(livePid))break}}let[command,...args]=resolveSpawn(DAEMON_START_ARGS);await stopDaemonProcess(socketPath,defaultDaemonPidPath()).catch(()=>{}),spawnDetachedDaemon(command,args,autospawnDaemonEnv(process.env,spawnReason),defaultDaemonLogPath());let deadline=Date.now()+5000;while(Date.now()<deadline){if(await testDaemonResponds(socketPath))return socketPath;await new Promise((resolveTimer)=>setTimeout(resolveTimer,100))}throw Error(`rove: daemon did not start (or stayed wedged) at ${socketPath}; check ${defaultDaemonLogPath()} or run \`rove doctor\``)}finally{try{unlinkSync(lockPath)}catch{}}}async function connectOrStartDaemon(spawnReason="autospawn"){let socketPath=await ensureDaemonReachable(resolveKobeSpawn,spawnReason),client=new KobeDaemonClient(socketPath);return await client.connect(),client}async function connectIfRunning(){let socketPath=defaultDaemonSocketPath();if(!await testDaemonResponds(socketPath))return null;let client=new KobeDaemonClient(socketPath);return await client.connect(),client}async function probeDaemonSocket(socketPath,timeoutMs=DAEMON_HELLO_TIMEOUT_MS){let probe=new KobeDaemonClient(socketPath);try{await probe.connect()}catch{return probe.close(),"absent"}let droppedByPeer=!1,offClose=probe.onLifecycle("close",()=>{droppedByPeer=!0}),replied=probe.request("hello",{protocolVersion:DAEMON_PROTOCOL_VERSION}).then(()=>!0).catch(()=>!0),timer,timedOut=new Promise((resolve2)=>{timer=setTimeout(()=>resolve2(!1),timeoutMs)}),settled=await Promise.race([replied,timedOut]);if(timer)clearTimeout(timer);if(offClose(),probe.close(),droppedByPeer)return"absent";return settled?"alive":"wedged"}async function testDaemonResponds(socketPath,timeoutMs=DAEMON_HELLO_TIMEOUT_MS){return await probeDaemonSocket(socketPath,timeoutMs)==="alive"}class StaleInstallError extends Error{candidates;constructor(cliName,dir,candidates){super(`${cliName}: this process is running from an install that no longer exists on disk \u2014 no ${cliName} entry near ${dir} (checked ${candidates.join(", ")}). Reinstall (\`npm install -g @sma1lboy/rove\`) and relaunch Rove.`);this.name="StaleInstallError",this.candidates=candidates}}function isStaleInstallError(err){return err instanceof Error&&err.name==="StaleInstallError"}function resolveKobeSpawn(subcommand,env=process.env,moduleFile=fileURLToPath(import.meta.url)){let here=moduleFile;if(here.startsWith("/$bunfs")||here.startsWith("B:\\~BUN"))return[process.execPath,...subcommand];let dir=dirname(here),cliName=env.ROVE_INVOKED_AS===ROVE_PRODUCT_NAME?ROVE_PRODUCT_NAME:LEGACY_KOBE_PRODUCT_NAME,candidates=[resolve(dir,`../cli/${cliName}.ts`),resolve(dir,`../../../kobe/src/cli/${cliName}.ts`),resolve(dir,`../cli/${cliName}.js`),resolve(dir,"../cli/index.ts"),resolve(dir,"../../../kobe/src/cli/index.ts"),resolve(dir,"../cli/index.js")],entry=candidates.find((candidate)=>existsSync(candidate));if(entry)return[process.execPath,entry,...subcommand];throw new StaleInstallError(cliName,dir,candidates)}
3
- export{detachOptions,spawnDetachedDaemon,autospawnDaemonEnv,daemonSpawnReason,tryAcquireSpawnLock,ensureDaemonReachable,connectOrStartDaemon,connectIfRunning,probeDaemonSocket,testDaemonResponds,StaleInstallError,isStaleInstallError,resolveKobeSpawn};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{StaleInstallError,autospawnDaemonEnv,connectIfRunning,connectOrStartDaemon,daemonSpawnReason,detachOptions,ensureDaemonReachable,isStaleInstallError,probeDaemonSocket,resolveKobeSpawn,spawnDetachedDaemon,testDaemonResponds,tryAcquireSpawnLock}from"./chunk-fbc5d1fq.js";import"./chunk-y13681dw.js";import"./chunk-b5mbpv97.js";import"./chunk-re5ke4fz.js";import"./chunk-mnqxgvyb.js";import"./chunk-t915by6w.js";import"./chunk-9prawccj.js";import"./chunk-0q6h4vt4.js";import"./chunk-pw6yfj10.js";import"./chunk-f10n6063.js";import"./chunk-8cjr5ypt.js";import"./chunk-hq4b3fca.js";import"./chunk-wqfp8d9w.js";export{tryAcquireSpawnLock,testDaemonResponds,spawnDetachedDaemon,resolveKobeSpawn,probeDaemonSocket,isStaleInstallError,ensureDaemonReachable,detachOptions,daemonSpawnReason,connectOrStartDaemon,connectIfRunning,autospawnDaemonEnv,StaleInstallError};