@sma1lboy/rove 0.9.258 → 0.9.262

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 (139) hide show
  1. package/dist/cli/{chunk-rx2604ry.js → chunk-06wk3r66.js} +1 -1
  2. package/dist/cli/chunk-0wy0w6jd.js +3 -0
  3. package/dist/cli/{chunk-wyt2vgjv.js → chunk-1bfcy0n9.js} +1 -1
  4. package/dist/cli/chunk-1dzr3fba.js +2 -0
  5. package/dist/cli/{chunk-mmc662x2.js → chunk-1pfsfpcg.js} +1 -1
  6. package/dist/cli/{chunk-jtpjdmb6.js → chunk-1x6yahf1.js} +1 -1
  7. package/dist/cli/{chunk-tq6pq1ws.js → chunk-2676cb62.js} +1 -1
  8. package/dist/cli/{chunk-ehb0hbrg.js → chunk-2cwzyxcs.js} +2 -2
  9. package/dist/cli/{chunk-r6f8h111.js → chunk-31h3d4re.js} +2 -2
  10. package/dist/cli/{chunk-68113ts1.js → chunk-36y93k92.js} +1 -1
  11. package/dist/cli/chunk-37v3752z.js +2 -0
  12. package/dist/cli/{chunk-0604fza5.js → chunk-3ds88mym.js} +1 -1
  13. package/dist/cli/{chunk-cewyvr3c.js → chunk-4ntrjm11.js} +1 -1
  14. package/dist/cli/{chunk-kgddz8pw.js → chunk-4t1dvw2h.js} +1 -1
  15. package/dist/cli/chunk-4tgz542w.js +3 -0
  16. package/dist/cli/chunk-53p99fe7.js +66 -0
  17. package/dist/cli/{chunk-sabpcket.js → chunk-5a3c9fnd.js} +1 -1
  18. package/dist/cli/{chunk-ke3t032y.js → chunk-5js4agdd.js} +1 -1
  19. package/dist/cli/{chunk-zqq3djrw.js → chunk-65kx9ksj.js} +3 -3
  20. package/dist/cli/{chunk-cb7hc2xm.js → chunk-68xcxsbg.js} +1 -1
  21. package/dist/cli/{chunk-pb5g6161.js → chunk-6an1v8vq.js} +1 -1
  22. package/dist/cli/{chunk-s0jbtyd9.js → chunk-6ks6s8b2.js} +3 -2
  23. package/dist/cli/{chunk-45thgqdr.js → chunk-6nw0s0ab.js} +1 -1
  24. package/dist/cli/{chunk-t25xke74.js → chunk-73fw8277.js} +1 -1
  25. package/dist/cli/{chunk-1xrbb7gf.js → chunk-74e3k701.js} +1 -1
  26. package/dist/cli/{chunk-stcvcsfm.js → chunk-7697syt8.js} +1 -1
  27. package/dist/cli/{chunk-3q1rv3rm.js → chunk-7nqzg7h6.js} +2 -2
  28. package/dist/cli/chunk-7t9q7k4d.js +4 -0
  29. package/dist/cli/{chunk-0d57z680.js → chunk-8e8y2m0b.js} +1 -1
  30. package/dist/cli/chunk-8k04kxqq.js +20 -0
  31. package/dist/cli/chunk-951xzbsm.js +3 -0
  32. package/dist/cli/{chunk-dqprpnd6.js → chunk-95gk3twe.js} +1 -1
  33. package/dist/cli/chunk-b7w3q5f1.js +2 -0
  34. package/dist/cli/chunk-c0gvp57p.js +3 -0
  35. package/dist/cli/{chunk-pwbtezsa.js → chunk-c3g1bfn6.js} +1 -1
  36. package/dist/cli/{chunk-yktnbb14.js → chunk-c7j05xps.js} +37 -37
  37. package/dist/cli/chunk-db61d8dz.js +3 -0
  38. package/dist/cli/{chunk-95jzkqp2.js → chunk-dc3n6nf7.js} +1 -1
  39. package/dist/cli/{chunk-x8rkpfqd.js → chunk-dq3m7rhj.js} +1 -1
  40. package/dist/cli/{chunk-hfvz23r6.js → chunk-edrw4tby.js} +1 -1
  41. package/dist/cli/chunk-ephcyh6v.js +3 -0
  42. package/dist/cli/{chunk-jd02zgwf.js → chunk-esk09jfb.js} +1 -1
  43. package/dist/cli/{chunk-cq5qv93a.js → chunk-fg55dc4s.js} +1 -1
  44. package/dist/cli/{chunk-278sc87n.js → chunk-fq3s9q62.js} +1 -1
  45. package/dist/cli/{chunk-1egwgg6p.js → chunk-gc3f7zbs.js} +1 -1
  46. package/dist/cli/{chunk-y0gybgba.js → chunk-gc78tfn9.js} +1 -1
  47. package/dist/cli/chunk-h0pg8e0g.js +70 -0
  48. package/dist/cli/{chunk-b47k0cnw.js → chunk-h5znx9v9.js} +1 -1
  49. package/dist/cli/chunk-hrgd7vws.js +2 -0
  50. package/dist/cli/chunk-jc2jwy0j.js +2 -0
  51. package/dist/cli/{chunk-8gjpnb83.js → chunk-k21hb0rj.js} +1 -1
  52. package/dist/cli/{chunk-rc2nwsdd.js → chunk-k71h719j.js} +1 -1
  53. package/dist/cli/chunk-karefnj8.js +11 -0
  54. package/dist/cli/chunk-kkzmdwfr.js +7 -0
  55. package/dist/cli/chunk-kqdq5g1x.js +3 -0
  56. package/dist/cli/{chunk-6x0trw81.js → chunk-m2qajv9v.js} +1 -1
  57. package/dist/cli/{chunk-1vwngrmf.js → chunk-m3773n9n.js} +1 -1
  58. package/dist/cli/chunk-m3nfbnxy.js +2 -0
  59. package/dist/cli/{chunk-edpbz0gz.js → chunk-m5kxc6m3.js} +3 -3
  60. package/dist/cli/chunk-mgx6w27b.js +2 -0
  61. package/dist/cli/{chunk-ebea569y.js → chunk-n8p8b9qd.js} +1 -1
  62. package/dist/cli/{chunk-9v18qy3s.js → chunk-nnda6138.js} +1 -1
  63. package/dist/cli/{chunk-edsm15ht.js → chunk-nwevnc6k.js} +1 -1
  64. package/dist/cli/{chunk-7cd1epfw.js → chunk-nxdm60xy.js} +1 -1
  65. package/dist/cli/{chunk-pw87thvf.js → chunk-p0ycfqw2.js} +1 -1
  66. package/dist/cli/{chunk-sma961wh.js → chunk-q07r6hf7.js} +1 -1
  67. package/dist/cli/{chunk-jf46jsdp.js → chunk-q55z079p.js} +1 -1
  68. package/dist/cli/{chunk-xnaehfby.js → chunk-qc376zm1.js} +1 -1
  69. package/dist/cli/chunk-qk9tgve2.js +2 -0
  70. package/dist/cli/{chunk-jv11f2c2.js → chunk-qwhajjyw.js} +3 -3
  71. package/dist/cli/chunk-r03m4san.js +2 -0
  72. package/dist/cli/{chunk-kqf371ff.js → chunk-r1epx453.js} +1 -1
  73. package/dist/cli/chunk-r3zkpbf5.js +9 -0
  74. package/dist/cli/{chunk-6p9yxt3q.js → chunk-r7p1dhrv.js} +1 -1
  75. package/dist/cli/{chunk-y8xb4ys7.js → chunk-rcqckj34.js} +1 -1
  76. package/dist/cli/{chunk-zam29b9x.js → chunk-rh5vxymy.js} +1 -1
  77. package/dist/cli/chunk-rrqjk4rn.js +16 -0
  78. package/dist/cli/chunk-s83qnstd.js +2 -0
  79. package/dist/cli/{chunk-rnxk3587.js → chunk-sp9cmc7p.js} +1 -1
  80. package/dist/cli/{chunk-yjyjg7sk.js → chunk-stng29vp.js} +2 -2
  81. package/dist/cli/{chunk-80zzjcvp.js → chunk-syqbc3a3.js} +1 -1
  82. package/dist/cli/chunk-t228jyth.js +4 -0
  83. package/dist/cli/{chunk-ya0h6hcd.js → chunk-tj1w7jb7.js} +5 -5
  84. package/dist/cli/{chunk-t60qcvcj.js → chunk-traxwyfz.js} +1 -1
  85. package/dist/cli/chunk-tx4b93j7.js +2 -0
  86. package/dist/cli/{chunk-c8anewjn.js → chunk-tykb6n4m.js} +1 -1
  87. package/dist/cli/{chunk-cqychwvw.js → chunk-vznz1yf0.js} +1 -1
  88. package/dist/cli/{chunk-v7prawj1.js → chunk-wqcs5mz0.js} +1 -1
  89. package/dist/cli/chunk-wv6d96t6.js +2 -0
  90. package/dist/cli/{chunk-tpt3fn1q.js → chunk-xwynw0t0.js} +1 -1
  91. package/dist/cli/{chunk-k2cnmb5q.js → chunk-xywr9nj6.js} +1 -1
  92. package/dist/cli/chunk-y5wt6c1s.js +3 -0
  93. package/dist/cli/{chunk-yaqkajw4.js → chunk-y7nkgnzn.js} +17 -17
  94. package/dist/cli/{chunk-qpc8bv02.js → chunk-yxsec1f1.js} +4 -4
  95. package/dist/cli/chunk-z3qhpthz.js +3 -0
  96. package/dist/cli/{chunk-8q1g1xq0.js → chunk-z5evzj1q.js} +1 -1
  97. package/dist/cli/{chunk-eyzjma6q.js → chunk-zqfvxz1g.js} +1 -1
  98. package/dist/cli/{chunk-1zqzqbek.js → chunk-zsth2jk6.js} +1 -1
  99. package/dist/cli/{chunk-hdnqq66w.js → chunk-zt0dmqn5.js} +1 -1
  100. package/dist/cli/index.js +4 -4
  101. package/dist/cli/pty-host-node.mjs +4 -0
  102. package/dist/cli/rove.js +1 -1
  103. package/dist/completions/rove.bash +2 -2
  104. package/dist/completions/rove.fish +2 -2
  105. package/dist/completions/rove.zsh +2 -2
  106. package/dist/skills/rove/SKILL.md +1 -1
  107. package/dist/skills/rove/references/api-flags.md +28 -11
  108. package/dist/web/assets/index-BLCf4p1g.js +109 -0
  109. package/dist/web/assets/index-CdjFB6v7.css +1 -0
  110. package/dist/web/index.html +2 -2
  111. package/package.json +3 -3
  112. package/dist/cli/chunk-1378mh2w.js +0 -3
  113. package/dist/cli/chunk-1qge84t7.js +0 -3
  114. package/dist/cli/chunk-1vxykwb9.js +0 -3
  115. package/dist/cli/chunk-2yjpqb47.js +0 -3
  116. package/dist/cli/chunk-4ab8y1yp.js +0 -15
  117. package/dist/cli/chunk-4d4d59vp.js +0 -20
  118. package/dist/cli/chunk-658859k9.js +0 -31
  119. package/dist/cli/chunk-6t5d02s4.js +0 -2
  120. package/dist/cli/chunk-79r3wbhh.js +0 -2
  121. package/dist/cli/chunk-7nr405tr.js +0 -9
  122. package/dist/cli/chunk-82zpp3yx.js +0 -4
  123. package/dist/cli/chunk-8dggnfaf.js +0 -2
  124. package/dist/cli/chunk-csdne12x.js +0 -3
  125. package/dist/cli/chunk-dd0mtzje.js +0 -3
  126. package/dist/cli/chunk-fehxbwcb.js +0 -6
  127. package/dist/cli/chunk-g846fbp7.js +0 -52
  128. package/dist/cli/chunk-hkv6t5v9.js +0 -2
  129. package/dist/cli/chunk-jetsx9zr.js +0 -3
  130. package/dist/cli/chunk-q301ewyq.js +0 -2
  131. package/dist/cli/chunk-qn04z4zb.js +0 -2
  132. package/dist/cli/chunk-rmk69hvh.js +0 -2
  133. package/dist/cli/chunk-s1rg1zae.js +0 -3
  134. package/dist/cli/chunk-skpkscne.js +0 -11
  135. package/dist/cli/chunk-x7cv6deh.js +0 -2
  136. package/dist/cli/chunk-y85e24s9.js +0 -2
  137. package/dist/cli/chunk-yc9bytrj.js +0 -2
  138. package/dist/web/assets/index-BiUiNIOp.css +0 -1
  139. package/dist/web/assets/index-jy27XaL0.js +0 -109
@@ -0,0 +1,4 @@
1
+ // @bun
2
+ import{logDaemonInfo}from"./chunk-rxqdw6s5.js";import{resolveRoveSpawn,testDaemonResponds}from"./chunk-r1epx453.js";import{stopDaemonProcess}from"./chunk-m3773n9n.js";import{spawnDetachedDaemon,windowsPowershellPath}from"./chunk-c7j05xps.js";import{isProcessAlive,readPidFile}from"./chunk-wqckm0k6.js";import{RoveDaemonClient}from"./chunk-6ks6s8b2.js";import{defaultPtyHostLogPath,defaultPtyHostPidPath,defaultPtyHostSocketPath}from"./chunk-n0rtj4z7.js";import{spawn}from"child_process";import{existsSync}from"fs";import{rename,rm}from"fs/promises";import{basename,delimiter,dirname,join,resolve}from"path";import{fileURLToPath}from"url";var PTY_HOST_START_ARGS=["pty-host"],PTY_HOST_NODE_BUNDLE="pty-host-node.mjs",PTY_HOST_NODE_DEV_CACHE="../../.cache/pty-host-node.mjs",PTY_HOST_NODE_ENTRY="../daemon/pty-host-node-entry.ts";function resolveNodeBinary(env=process.env,exists=existsSync,platform=process.platform){let dirs=(env.PATH??env.Path??"").split(delimiter).filter((dir)=>dir.length>0),suffixes=platform==="win32"?(env.PATHEXT??".EXE;.CMD;.BAT").split(";").filter((ext)=>ext.length>0):[""];for(let dir of dirs)for(let suffix of suffixes){let candidate=join(dir,`node${suffix}`);if(exists(candidate))return candidate}return null}async function bundleWithBun(entry,outFile,io){let{build,rename:move,discard}=io??{build:(config)=>Bun.build(config),rename,discard:(path)=>rm(path,{force:!0})},staging=`${outFile}.${process.pid}.tmp`,built=await build({entrypoints:[entry],outdir:dirname(staging),target:"node",format:"esm",naming:basename(staging),external:["node-pty"]});if(!built.success)return await discard(staging).catch(()=>{}),built;return await move(staging,outFile),built}async function resolveNodePtyHostSpawn(deps={}){let platform=deps.platform??process.platform;if(platform!=="win32")return null;let here=deps.moduleDir??dirname(fileURLToPath(import.meta.url)),exists=deps.exists??existsSync,bundle=deps.bundle??bundleWithBun,node=resolveNodeBinary(deps.env??process.env,exists,platform);if(!node)throw Error("Rove: the Windows PTY host runs under node, but no node was found on PATH. "+"Install Node.js (https://nodejs.org) and restart Rove \u2014 engine and terminal sessions cannot start without it.");let packaged=resolve(here,PTY_HOST_NODE_BUNDLE);if(exists(packaged))return[node,packaged];let entry=resolve(here,PTY_HOST_NODE_ENTRY);if(!exists(entry))throw Error(`Rove: no Windows PTY host found (looked for ${packaged} and ${entry})`);let cache=resolve(here,PTY_HOST_NODE_DEV_CACHE),built=await bundle(entry,cache);if(!built.success)throw Error(`Rove: could not build the Windows PTY host \u2014 ${built.logs.map(String).join("; ")}`);return[node,cache]}var BUSY_PTY_HOST_GRACE_MS=15000,CHILD_PROBE_TIMEOUT_MS=5000;function childProbeCommand(deps={}){let env=deps.env??process.env;if((deps.platform??process.platform)!=="win32")return["ps","-A","-o","ppid="];return[windowsPowershellPath(env,deps.exists??existsSync),"-NoProfile","-NonInteractive","-Command","[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; Get-CimInstance -ClassName Win32_Process -Property ParentProcessId | Select-Object -ExpandProperty ParentProcessId"]}function runChildProbe(command,timeoutMs){return new Promise((done,fail)=>{let proc=spawn(command[0]??"",command.slice(1),{stdio:["ignore","pipe","ignore"]}),out="",finish=(err)=>{clearTimeout(timer);try{proc.kill()}catch{}if(err)fail(err);else done(out)},timer=setTimeout(()=>finish(Error(`did not answer within ${timeoutMs}ms`)),timeoutMs);proc.stdout?.on("data",(chunk)=>{out+=String(chunk)}),proc.on("error",(err)=>finish(err)),proc.on("close",(code,signal)=>finish(code===0&&signal===null?null:Error(`exited with ${signal??`code ${code}`}`)))})}async function liveChildCount(pid,deps={}){let timeoutMs=deps.timeoutMs??CHILD_PROBE_TIMEOUT_MS,command=childProbeCommand(deps),run=deps.run??runChildProbe,text;try{text=await run(command,timeoutMs)}catch{return null}let rows=text.split(`
3
+ `).map((row)=>row.trim()).filter((row)=>row.length>0);if(rows.length===0||rows.some((row)=>!/^\d+$/.test(row)))return null;return rows.filter((row)=>Number(row)===pid).length}async function ensurePtyHostReachable(){let socketPath=defaultPtyHostSocketPath();if(await testDaemonResponds(socketPath))return socketPath;let hostPid=await readPidFile(defaultPtyHostPidPath());if(hostPid!==null&&hostPid!==process.pid&&isProcessAlive(hostPid)){let deadline2=Date.now()+BUSY_PTY_HOST_GRACE_MS;while(Date.now()<deadline2){if(await new Promise((resolveTimer)=>setTimeout(resolveTimer,250)),await testDaemonResponds(socketPath))return socketPath;if(!isProcessAlive(hostPid))break}if(isProcessAlive(hostPid)){let sessions=await liveChildCount(hostPid);if(sessions===null)throw Error(`rove: the pty host (pid ${hostPid}) is not answering and Rove could not read this machine's process table, so it cannot tell whether the host still holds live sessions \u2014 refusing to restart it, which would kill every engine running in them. Inspect it with \`rove api pty-list\`, or kill ${hostPid} yourself once you have accepted losing those sessions.`);if(sessions>0)throw Error(`rove: the pty host (pid ${hostPid}) is not answering but still holds ${sessions} live session(s) \u2014 refusing to restart it, which would kill every engine running in them. Inspect it with \`rove api pty-list\`, or kill ${hostPid} yourself once you have accepted losing those sessions.`)}}await stopDaemonProcess(socketPath,defaultPtyHostPidPath()).catch(()=>{});let[command,...args]=await resolveNodePtyHostSpawn()??resolveRoveSpawn(PTY_HOST_START_ARGS);spawnDetachedDaemon(command??"",args,process.env,defaultPtyHostLogPath());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: pty host did not start (or stayed wedged) at ${socketPath}; check ${defaultPtyHostLogPath()} or run \`rove doctor\``)}async function sweepPtyHostSessions(liveTaskIds,homeDir){let client=new RoveDaemonClient(defaultPtyHostSocketPath(homeDir));try{await client.connect();let{sessions}=await client.request("pty.list"),currentTasks;for(let session of sessions){if(!currentTasks){let ids=liveTaskIds();if(ids===null)return;currentTasks=new Set(ids)}if(currentTasks.has(session.key.split("::")[0]??session.key))continue;if(!session.generation){logDaemonInfo("pty-sweep",`skipped ${session.key}: host has no session generation; restart it when sessions can be interrupted`);continue}await client.request("pty.kill",{key:session.key,expectedGeneration:session.generation}),currentTasks=void 0}}catch{}finally{client.close()}}async function ptyHostHasLiveSessions(homeDir){let client=new RoveDaemonClient(defaultPtyHostSocketPath(homeDir));try{await client.connect();let result=await client.request("pty.list");if(!Array.isArray(result.sessions)||result.sessions.some((s)=>typeof s.alive!=="boolean"))return null;return result.sessions.some((s)=>s.alive)}catch(err){if(err instanceof Error&&"code"in err&&(err.code==="ENOENT"||err.code==="ECONNREFUSED")){let pid=await readPidFile(defaultPtyHostPidPath(homeDir));return pid!==null&&isProcessAlive(pid)?null:!1}return null}finally{client.close()}}
4
+ export{resolveNodeBinary,bundleWithBun,resolveNodePtyHostSpawn,childProbeCommand,runChildProbe,liveChildCount,ensurePtyHostReachable,sweepPtyHostSessions,ptyHostHasLiveSessions};