@sma1lboy/rove 0.9.237 → 0.9.239

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 (240) hide show
  1. package/README.md +2 -2
  2. package/dist/cli/{chunk-63xy91mc.js → chunk-0k91029d.js} +1 -1
  3. package/dist/cli/chunk-0mj358p5.js +3 -0
  4. package/dist/cli/chunk-0n7w8t48.js +2 -0
  5. package/dist/cli/{chunk-v4y0sf0x.js → chunk-0wrh5s5y.js} +2 -2
  6. package/dist/cli/chunk-0y4qgnby.js +3 -0
  7. package/dist/cli/chunk-1brfxbvg.js +4 -0
  8. package/dist/cli/{chunk-tdze2mnn.js → chunk-20qm75rb.js} +1 -1
  9. package/dist/cli/chunk-21fm5tks.js +2 -0
  10. package/dist/cli/{chunk-bkbmqec2.js → chunk-28zg6p31.js} +1 -1
  11. package/dist/cli/chunk-2andp9gs.js +2 -0
  12. package/dist/cli/{chunk-r2pztgm6.js → chunk-2bgmby1d.js} +1 -1
  13. package/dist/cli/{chunk-5e39zhvj.js → chunk-2s2xy444.js} +5 -5
  14. package/dist/cli/chunk-2vgc5cyj.js +2 -0
  15. package/dist/cli/chunk-2x9yc5nx.js +2 -0
  16. package/dist/cli/chunk-30kjq5m7.js +2 -0
  17. package/dist/cli/{chunk-mkksdcsw.js → chunk-3342qzve.js} +1 -1
  18. package/dist/cli/chunk-3aqhytyy.js +3 -0
  19. package/dist/cli/chunk-3c58659p.js +2 -0
  20. package/dist/cli/chunk-3d1hjrq0.js +2 -0
  21. package/dist/cli/chunk-41x1hrqe.js +3 -0
  22. package/dist/cli/{chunk-mhg40es1.js → chunk-4hestsjp.js} +1 -1
  23. package/dist/cli/{chunk-s1p650mm.js → chunk-53cyns0f.js} +1 -1
  24. package/dist/cli/chunk-576r5nht.js +5 -0
  25. package/dist/cli/{chunk-rvx5zz72.js → chunk-5akk3wap.js} +6 -5
  26. package/dist/cli/chunk-7cce0st1.js +3 -0
  27. package/dist/cli/{chunk-zyd6k6ak.js → chunk-7q43tysm.js} +1 -1
  28. package/dist/cli/chunk-8bn6eg67.js +8 -0
  29. package/dist/cli/chunk-8rf7nzan.js +4 -0
  30. package/dist/cli/chunk-96cjpssp.js +3 -0
  31. package/dist/cli/{chunk-bs7v83x0.js → chunk-9aydqazr.js} +1 -1
  32. package/dist/cli/{chunk-7txq91d9.js → chunk-9jsm6h5y.js} +1 -1
  33. package/dist/cli/{chunk-pz907kve.js → chunk-9w5g7frx.js} +1 -1
  34. package/dist/cli/{chunk-vnpqemb0.js → chunk-a7kq09ke.js} +1 -1
  35. package/dist/cli/chunk-acxznk3y.js +2 -0
  36. package/dist/cli/chunk-adkva3ep.js +6 -0
  37. package/dist/cli/{chunk-nvqdmx7q.js → chunk-ag3txfg2.js} +1 -1
  38. package/dist/cli/{chunk-2rg6aw59.js → chunk-atmaakwp.js} +1 -1
  39. package/dist/cli/chunk-axsm0gn5.js +3 -0
  40. package/dist/cli/chunk-b0ssvpht.js +3 -0
  41. package/dist/cli/chunk-b39sdtt0.js +3 -0
  42. package/dist/cli/{chunk-qyzvcgva.js → chunk-b9q8c2qg.js} +6 -6
  43. package/dist/cli/{chunk-g56km26e.js → chunk-bn73kd6z.js} +1 -1
  44. package/dist/cli/chunk-c2m55b72.js +4 -0
  45. package/dist/cli/{chunk-3gmzrstj.js → chunk-c60qsnfw.js} +3 -3
  46. package/dist/cli/{chunk-ch0ehc06.js → chunk-cbc1h345.js} +1 -1
  47. package/dist/cli/{chunk-dnbh8hsm.js → chunk-cbjh43yc.js} +1 -1
  48. package/dist/cli/{chunk-kbje1cpy.js → chunk-cmcn8e8x.js} +1 -1
  49. package/dist/cli/{chunk-cv1kaq8a.js → chunk-cp89n425.js} +5 -5
  50. package/dist/cli/chunk-cst86kt3.js +2 -0
  51. package/dist/cli/chunk-des00203.js +2 -0
  52. package/dist/cli/chunk-dgs0m8r4.js +3 -0
  53. package/dist/cli/chunk-dkgxz9hf.js +5 -0
  54. package/dist/cli/{chunk-gqphk56d.js → chunk-ekg3h5z3.js} +7 -7
  55. package/dist/cli/chunk-fert44x2.js +2 -0
  56. package/dist/cli/chunk-ff1h2qxd.js +2 -0
  57. package/dist/cli/{chunk-cv6r89jp.js → chunk-ffs26p85.js} +1 -1
  58. package/dist/cli/chunk-fft50thp.js +3 -0
  59. package/dist/cli/{chunk-hp32tbes.js → chunk-fg62y5fm.js} +1 -1
  60. package/dist/cli/{chunk-s9a974w9.js → chunk-fvmee0tr.js} +1 -1
  61. package/dist/cli/chunk-g4c4ffqp.js +20 -0
  62. package/dist/cli/{chunk-k7g060qr.js → chunk-g4j41mky.js} +2 -2
  63. package/dist/cli/{chunk-j6kataan.js → chunk-g5c5jytr.js} +1 -1
  64. package/dist/cli/{chunk-4bmap7dg.js → chunk-ga1pb0mr.js} +1 -1
  65. package/dist/cli/{chunk-dqndd97s.js → chunk-gkdfct7t.js} +2 -2
  66. package/dist/cli/chunk-gqydm0q8.js +2 -0
  67. package/dist/cli/chunk-gvrtrvnz.js +96 -0
  68. package/dist/cli/chunk-h2m7em1e.js +3 -0
  69. package/dist/cli/chunk-h33m6cc6.js +8 -0
  70. package/dist/cli/{chunk-ynbfqbn9.js → chunk-h3fckxn3.js} +1 -1
  71. package/dist/cli/chunk-h7y9v8k1.js +4 -0
  72. package/dist/cli/{chunk-32mv1yy6.js → chunk-h9cg0j3a.js} +1 -1
  73. package/dist/cli/{chunk-h4qv19v8.js → chunk-hbn1t161.js} +1 -1
  74. package/dist/cli/{chunk-12kgbrj1.js → chunk-hen7jj2h.js} +2 -2
  75. package/dist/cli/{chunk-3es6spp4.js → chunk-hq9tbzqa.js} +2 -2
  76. package/dist/cli/{chunk-snjte1rd.js → chunk-hr2xky15.js} +1 -1
  77. package/dist/cli/{chunk-s0snbj93.js → chunk-kb6xw0fw.js} +1 -1
  78. package/dist/cli/{chunk-40dk2add.js → chunk-ker4971f.js} +2 -2
  79. package/dist/cli/{chunk-vyb5a2rh.js → chunk-kg9kmwt9.js} +1 -1
  80. package/dist/cli/chunk-ktzbg4jg.js +2 -0
  81. package/dist/cli/chunk-m4f5h05c.js +10 -0
  82. package/dist/cli/chunk-m6q44xc0.js +2 -0
  83. package/dist/cli/{chunk-hq2n27y1.js → chunk-mw0ysrpd.js} +1 -1
  84. package/dist/cli/{chunk-2cwb64fj.js → chunk-n5dea05t.js} +1 -1
  85. package/dist/cli/chunk-nc46gddg.js +3 -0
  86. package/dist/cli/{chunk-jhbc9nx2.js → chunk-nckmga7j.js} +1 -1
  87. package/dist/cli/chunk-nem2x959.js +2 -0
  88. package/dist/cli/chunk-ng12dprz.js +2 -0
  89. package/dist/cli/chunk-npwzmmv9.js +3 -0
  90. package/dist/cli/chunk-nzh30nty.js +4 -0
  91. package/dist/cli/{chunk-gqrh2gp1.js → chunk-p024scd4.js} +1 -1
  92. package/dist/cli/chunk-p18ehv9y.js +7 -0
  93. package/dist/cli/chunk-p6qr8sen.js +2 -0
  94. package/dist/cli/{chunk-3sg5v7cg.js → chunk-p83wf4zw.js} +2 -2
  95. package/dist/cli/{chunk-s278gjet.js → chunk-pdvyfz3n.js} +1 -1
  96. package/dist/cli/chunk-pe6wnsww.js +2 -0
  97. package/dist/cli/{chunk-dhtsd706.js → chunk-pqzbk1cz.js} +25 -23
  98. package/dist/cli/chunk-prqeddy7.js +3 -0
  99. package/dist/cli/chunk-pvm3fc44.js +2 -0
  100. package/dist/cli/chunk-qd5zgq91.js +10 -0
  101. package/dist/cli/chunk-qvfdqrbf.js +3 -0
  102. package/dist/cli/{chunk-2xsem13q.js → chunk-qzsahxd9.js} +1 -1
  103. package/dist/cli/{chunk-aj3fk7xz.js → chunk-rahv4nrm.js} +3 -3
  104. package/dist/cli/chunk-rqyaf0dw.js +4 -0
  105. package/dist/cli/chunk-s57vy3k3.js +2 -0
  106. package/dist/cli/{chunk-g2advs8t.js → chunk-sak1tphp.js} +1 -1
  107. package/dist/cli/{chunk-vdcn6h48.js → chunk-snhcvjdb.js} +1 -1
  108. package/dist/cli/chunk-ss8c3b25.js +3 -0
  109. package/dist/cli/{chunk-bav389wj.js → chunk-svm809bx.js} +1 -1
  110. package/dist/cli/chunk-t8v9rpdx.js +2 -0
  111. package/dist/cli/{chunk-j4xfsn9g.js → chunk-tbrkck2f.js} +1 -1
  112. package/dist/cli/chunk-tdhk4dz8.js +4 -0
  113. package/dist/cli/chunk-try1f2h3.js +3 -0
  114. package/dist/cli/{chunk-b9ywdsdj.js → chunk-tsj1054w.js} +1 -1
  115. package/dist/cli/{chunk-t3wwsz29.js → chunk-tvk46rfs.js} +1 -1
  116. package/dist/cli/{chunk-4d54zgc7.js → chunk-twyda1p8.js} +2 -2
  117. package/dist/cli/{chunk-s1e0e9hc.js → chunk-vej49hnt.js} +2 -2
  118. package/dist/cli/chunk-w2sp489k.js +3 -0
  119. package/dist/cli/chunk-wfhnbnbw.js +2 -0
  120. package/dist/cli/{chunk-0wh2ff77.js → chunk-whbm14qr.js} +2 -2
  121. package/dist/cli/{chunk-ww4fbx8h.js → chunk-wtb8cycx.js} +2 -2
  122. package/dist/cli/chunk-wvmjdnhk.js +2 -0
  123. package/dist/cli/chunk-x9s14ppv.js +4 -0
  124. package/dist/cli/{chunk-dq2mh3b3.js → chunk-xv8fhxxm.js} +1 -1
  125. package/dist/cli/{chunk-85pk7c74.js → chunk-xx166cdv.js} +1 -1
  126. package/dist/cli/{chunk-ssfj9td0.js → chunk-y8tysjc2.js} +15 -13
  127. package/dist/cli/{chunk-y3k1accw.js → chunk-yexx8nec.js} +1 -1
  128. package/dist/cli/{chunk-9prawccj.js → chunk-yt15y085.js} +1 -1
  129. package/dist/cli/{chunk-n0mg67wn.js → chunk-ytxk6zqc.js} +1 -1
  130. package/dist/cli/chunk-yvjgwnb9.js +2 -0
  131. package/dist/cli/{chunk-n24dmy2r.js → chunk-yxt1y0n3.js} +9 -9
  132. package/dist/cli/chunk-ze0htjr5.js +2 -0
  133. package/dist/cli/chunk-zeb0sttx.js +2 -0
  134. package/dist/cli/chunk-znjcesdr.js +5 -0
  135. package/dist/cli/chunk-zsfyj36g.js +3 -0
  136. package/dist/cli/chunk-zt49bbg9.js +3 -0
  137. package/dist/cli/chunk-zt7wfnva.js +3 -0
  138. package/dist/cli/{chunk-6rvzzrd7.js → chunk-zx2n95qe.js} +1 -1
  139. package/dist/cli/{chunk-c4dx3er1.js → chunk-zxsbz3kk.js} +1 -1
  140. package/dist/cli/index.js +12 -10
  141. package/dist/cli/pty-host-node.mjs +1189 -177
  142. package/dist/cli/rove-run.js +1 -1
  143. package/dist/cli/rove.js +6 -6
  144. package/dist/skills/rove/SKILL.md +1 -1
  145. package/dist/skills/rove/references/api-flags.md +5 -5
  146. package/dist/web-ui/assets/harness-BHiciz5A.js +87 -0
  147. package/dist/web-ui/assets/{index-D2wALq0b.js → index-BkxJISAI.js} +2 -2
  148. package/dist/web-ui/assets/index-nMJ42IGm.css +1 -0
  149. package/dist/web-ui/index.html +2 -2
  150. package/dist/web-ui/origin-policy.mjs +1 -1
  151. package/dist/web-ui/pty-server.mjs +66 -8
  152. package/dist/web-ui/pty-session-lifecycle.mjs +49 -14
  153. package/package.json +6 -8
  154. package/dist/cli/chunk-05jej26n.js +0 -3
  155. package/dist/cli/chunk-072x915d.js +0 -2
  156. package/dist/cli/chunk-079cyb2e.js +0 -4
  157. package/dist/cli/chunk-1da3bqjc.js +0 -4
  158. package/dist/cli/chunk-1m7cp5ze.js +0 -3
  159. package/dist/cli/chunk-1q8tbbpz.js +0 -2
  160. package/dist/cli/chunk-1tx1s5v6.js +0 -2
  161. package/dist/cli/chunk-4y1fdz34.js +0 -3
  162. package/dist/cli/chunk-53afdybj.js +0 -3
  163. package/dist/cli/chunk-544bwsss.js +0 -4
  164. package/dist/cli/chunk-5bsk7qmg.js +0 -8
  165. package/dist/cli/chunk-6s5mev2n.js +0 -4
  166. package/dist/cli/chunk-6x5vzzpx.js +0 -3
  167. package/dist/cli/chunk-7s1kx9ez.js +0 -2
  168. package/dist/cli/chunk-85mk6j0s.js +0 -3
  169. package/dist/cli/chunk-8hbtca1g.js +0 -3
  170. package/dist/cli/chunk-8pa1ph1s.js +0 -7
  171. package/dist/cli/chunk-9k47xr7m.js +0 -2
  172. package/dist/cli/chunk-9mtxxsb3.js +0 -2
  173. package/dist/cli/chunk-a3yyrabb.js +0 -2
  174. package/dist/cli/chunk-a8et9f63.js +0 -4
  175. package/dist/cli/chunk-ahnk6zx3.js +0 -2
  176. package/dist/cli/chunk-bc18gat5.js +0 -4
  177. package/dist/cli/chunk-bw73t1zw.js +0 -5
  178. package/dist/cli/chunk-c2tevj9f.js +0 -2
  179. package/dist/cli/chunk-d1agt94n.js +0 -8
  180. package/dist/cli/chunk-dc31fzrm.js +0 -2
  181. package/dist/cli/chunk-dw853n4w.js +0 -3
  182. package/dist/cli/chunk-eawt4n4g.js +0 -2
  183. package/dist/cli/chunk-efx1gqmp.js +0 -2
  184. package/dist/cli/chunk-egx76ah2.js +0 -5
  185. package/dist/cli/chunk-ex1a2djb.js +0 -2
  186. package/dist/cli/chunk-f5e3dcxe.js +0 -2
  187. package/dist/cli/chunk-fwb72vzc.js +0 -2
  188. package/dist/cli/chunk-fxs82dsx.js +0 -4
  189. package/dist/cli/chunk-g3r1dwy9.js +0 -3
  190. package/dist/cli/chunk-ge30p4s5.js +0 -3
  191. package/dist/cli/chunk-gmgsxdrf.js +0 -10
  192. package/dist/cli/chunk-he76emdm.js +0 -2
  193. package/dist/cli/chunk-hgx20x94.js +0 -2
  194. package/dist/cli/chunk-hkq7c6hy.js +0 -2
  195. package/dist/cli/chunk-hnfp317x.js +0 -2
  196. package/dist/cli/chunk-hq4b3fca.js +0 -3
  197. package/dist/cli/chunk-jvxh93nz.js +0 -3
  198. package/dist/cli/chunk-k6nxyxyh.js +0 -3
  199. package/dist/cli/chunk-k8tspshr.js +0 -2
  200. package/dist/cli/chunk-kavsx69v.js +0 -3
  201. package/dist/cli/chunk-md8k7c5w.js +0 -2
  202. package/dist/cli/chunk-mppda1wq.js +0 -3
  203. package/dist/cli/chunk-ppwpjm39.js +0 -3
  204. package/dist/cli/chunk-pvw2y93q.js +0 -25
  205. package/dist/cli/chunk-pw6yfj10.js +0 -3
  206. package/dist/cli/chunk-q4nehkj9.js +0 -2
  207. package/dist/cli/chunk-qagek3wg.js +0 -5
  208. package/dist/cli/chunk-rz8zs7j8.js +0 -3
  209. package/dist/cli/chunk-sb0ns0c7.js +0 -3
  210. package/dist/cli/chunk-sp99y6eb.js +0 -2
  211. package/dist/cli/chunk-vejgnmcp.js +0 -2
  212. package/dist/cli/chunk-vz5g1p3w.js +0 -3
  213. package/dist/cli/chunk-vzqrj32e.js +0 -2
  214. package/dist/cli/chunk-wpsbyq4s.js +0 -2
  215. package/dist/cli/chunk-wtqxv2rv.js +0 -39
  216. package/dist/cli/chunk-xhgmnvjz.js +0 -8
  217. package/dist/cli/chunk-y05d79az.js +0 -2
  218. package/dist/cli/chunk-y8fqdnh3.js +0 -3
  219. package/dist/cli/chunk-ygd572ee.js +0 -4
  220. package/dist/cli/chunk-zja9chrd.js +0 -4
  221. package/dist/cli/chunk-zwej00t0.js +0 -5
  222. package/dist/cli/kobe-run.js +0 -3
  223. package/dist/cli/kobe.js +0 -7
  224. package/dist/completions/kobe.bash +0 -25
  225. package/dist/completions/kobe.fish +0 -27
  226. package/dist/completions/kobe.zsh +0 -35
  227. package/dist/web-ui/assets/harness-CLsfHgXB.js +0 -86
  228. package/dist/web-ui/assets/index-B4knjCIs.css +0 -1
  229. /package/dist/cli/{chunk-hqbmzz4t.js → chunk-0422g8ac.js} +0 -0
  230. /package/dist/cli/{chunk-khj0apc7.js → chunk-2tfnscxk.js} +0 -0
  231. /package/dist/cli/{chunk-7q67dz4c.js → chunk-4250pw6r.js} +0 -0
  232. /package/dist/cli/{chunk-xsrcwcjc.js → chunk-5mhvjytn.js} +0 -0
  233. /package/dist/cli/{chunk-ef39ym8f.js → chunk-7bgbansg.js} +0 -0
  234. /package/dist/cli/{chunk-nh4wvyz3.js → chunk-atn06ncf.js} +0 -0
  235. /package/dist/cli/{chunk-h4n8ffqy.js → chunk-dmzg9zdc.js} +0 -0
  236. /package/dist/cli/{chunk-w25b7xxz.js → chunk-etfh8f4z.js} +0 -0
  237. /package/dist/cli/{chunk-hape5vwj.js → chunk-hpay0ax8.js} +0 -0
  238. /package/dist/cli/{chunk-f10n6063.js → chunk-pn5ygqn6.js} +0 -0
  239. /package/dist/cli/{chunk-rcyasw34.js → chunk-rxqdw6s5.js} +0 -0
  240. /package/dist/cli/{chunk-exfyqsdd.js → chunk-vjvkkrzc.js} +0 -0
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import{markRoveInvocation,prepareCliEnvironment,prepareCliStateLayout}from"./chunk-ppwpjm39.js";import"./chunk-fxs82dsx.js";import"./chunk-zyd6k6ak.js";import"./chunk-8hbtca1g.js";import"./chunk-hq2n27y1.js";import"./chunk-sb0ns0c7.js";import"./chunk-vnpqemb0.js";import"./chunk-9prawccj.js";import"./chunk-y8fqdnh3.js";import"./chunk-hq4b3fca.js";import{__require}from"./chunk-wqfp8d9w.js";markRoveInvocation();prepareCliEnvironment();prepareCliStateLayout();await import("./index.js");
3
+ import{migrateRoveClientStateLayout}from"./chunk-tdhk4dz8.js";import{updateStateFile}from"./chunk-7q43tysm.js";import"./chunk-mw0ysrpd.js";import"./chunk-a7kq09ke.js";import{kvStatePath}from"./chunk-prqeddy7.js";import"./chunk-zt7wfnva.js";import"./chunk-yt15y085.js";import"./chunk-npwzmmv9.js";import"./chunk-b39sdtt0.js";import"./chunk-nc46gddg.js";import{__require}from"./chunk-wqfp8d9w.js";import{readFileSync}from"fs";var RENAMED_KEY_PREFIXES=[{from:"autoEffort.",to:"autoRouting."}],NOTHING={moved:0,superseded:0};function legacyRename(key){for(let{from,to}of RENAMED_KEY_PREFIXES)if(key.startsWith(from))return`${to}${key.slice(from.length)}`;return}function isStateObject(text){try{let parsed=JSON.parse(text);return typeof parsed==="object"&&parsed!==null&&!Array.isArray(parsed)}catch{return!1}}function migrateRenamedStateKeys(){let text;try{text=readFileSync(kvStatePath(),"utf8")}catch{return NOTHING}if(!RENAMED_KEY_PREFIXES.some(({from})=>text.includes(`"${from}`)))return NOTHING;if(!isStateObject(text))return NOTHING;let moved=0,superseded=0;try{updateStateFile((state)=>{for(let[key,value]of Object.entries(state)){let renamed=legacyRename(key);if(renamed===void 0)continue;if(renamed in state)superseded+=1;else state[renamed]=value,moved+=1;delete state[key]}return moved+superseded>0})}catch{return NOTHING}return{moved,superseded}}function prepareCliStateLayout(env=process.env){let result=migrateRoveClientStateLayout(env);for(let warning of result.warnings)console.error(`[rove] state migration will retry: ${warning}`);migrateRenamedStateKeys()}prepareCliStateLayout();await import("./index.js");
package/dist/cli/rove.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import{join as G1}from"node:path";import{createInterface as K1}from"node:readline/promises";import{pathToFileURL as U1}from"node:url";import{spawnSync as V}from"node:child_process";import{constants as a,accessSync as e}from"node:fs";import{homedir as W1}from"node:os";import{basename as z1,delimiter as J1,dirname as Q1,join as G}from"node:path";import{fileURLToPath as N}from"node:url";var M={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.9.237",description:"Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],type:"module",packageManager:"bun@1.3.13",bin:{kobe:"dist/cli/kobe.js",rove:"dist/cli/rove.js"},files:["dist/cli","dist/completions","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://rove.run",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:kobe":"KOBE_DEV=1 bun --conditions=browser ./src/cli/kobe.ts","dev:mock":"KOBE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:rubric":"bun run scripts/build-tier-rubric.ts",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"KOBE_INCLUDE_SOCKET=1 KOBE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun scripts/render-track.mjs",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8","smol-toml":"^1.7.1",ws:"^8.21.3"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/kobe-daemon":"0.7.19","@tsconfig/bun":"1.0.11","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]};var O="rove",T="kobe";var I=T;var L=O;var t="ROVE_INVOKED_AS";function K(W=process.env){return W[t]===L?L:I}var U="ROVE_BUN",Z1="ROVE_NO_BUN_BOOTSTRAP",R="ROVE_SKIP_BUN_CHECK",x=M.engines.bun.match(/\d+\.\d+\.\d+/)?.[0]??"0.0.0",y=(W)=>{try{return e(W,a.X_OK),!0}catch{return!1}},$1=(W)=>W==="win32"?"bun.exe":"bun",X1=(W)=>{let z=V(W,["--version"],{encoding:"utf8",timeout:5000});if(z.error||z.status!==0)return null;return z.stdout?.split(`
3
- `)[0]?.trim()??""};function F(W){return W.trim().match(/^v?(\d+\.\d+\.\d+)/)?.[1]??null}function C(W,z=x){let J=F(W),$=F(z);if(!J||!$)return!0;let Z=J.split(".").map(Number),Q=$.split(".").map(Number);for(let X=0;X<3;X++){let Y=Z[X]??0,b=Q[X]??0;if(Y!==b)return Y>b}return!0}function j(W=process.env){return W[R]==="1"}function k(W={}){let z=W.env??process.env,J=W.platform??process.platform,$=W.home??z.HOME??z.USERPROFILE??W1(),Z=$1(J),Q=[],X=z[U]?.trim();if(X)Q.push(X);for(let w of(z.PATH??z.Path??"").split(J1))if(w)Q.push(G(w,Z));let Y=z.BUN_INSTALL?.trim();if(Y)Q.push(G(Y,"bin",Z));if($)Q.push(G($,".bun","bin",Z));let b=W.launcherDir;if(b)Q.push(G(b,"..","..","node_modules","bun","bin",Z)),Q.push(G(b,"..","..","..","bun","bin",Z));return Q}function q1(W={}){let z=W.isExecutable??y;return k(W).find((J)=>z(J))??null}function B(W={}){let z=W.isExecutable??y,J=W.bunVersionOf??X1;if(j(W.env??process.env))return{bun:q1(W),stale:null,unusable:null};let $=null,Z=null;for(let Q of k(W)){if(!z(Q))continue;let X=J(Q);if(X===null){Z??=Q;continue}if(C(X))return{bun:Q,stale:$,unusable:Z};$??={path:Q,version:F(X)??X}}return{bun:null,stale:$,unusable:Z}}function _(W){return Q1(N(W))}function P(W){return z1(N(W)).replace(/\.[cm]?[jt]s$/,"")}function b1(W=process.platform){return W==="win32"?["powershell","-NoProfile","-Command","irm bun.sh/install.ps1 | iex"]:["bash","-c","curl -fsSL https://bun.sh/install | bash"]}function D(W=K(),z=process.platform){let J=z==="win32"?'powershell -c "irm bun.sh/install.ps1 | iex"':"curl -fsSL https://bun.sh/install | bash";return[`${W}: Rove runs on the Bun runtime, and no Bun was found on this machine.`,"","Install Bun, then run this command again:",` ${J}`," npm install -g bun # any platform, if you already have npm","","Or install Bun and Rove together in one step:"," curl -fsSL https://rove.run/install.sh | sh","",`Already have Bun somewhere unusual? Point Rove at it: ${U}=/path/to/bun`,""].join(`
4
- `)}function g(W,z,J=K()){return[`${J}: this machine's Bun is too old for Rove — found ${z} at ${W}, need ${x} or newer.`,"","Rove's terminals are built on Bun's PTY API. An older Bun ignores it silently,","so every terminal and engine tab would open empty and stay empty.","","Upgrade Bun, then run this command again:"," bun upgrade # Bun installed itself (~/.bun)"," brew upgrade bun # Homebrew"," npm install -g bun@latest # npm-managed Bun","",`Have a newer Bun elsewhere? Point Rove at it: ${U}=/path/to/bun`,`Run on this one anyway (unsupported, terminals will be blank): ${R}=1`,""].join(`
5
- `)}function p(W,z=K()){return[`${z}: the Bun at ${W} could not be run — \`${W} --version\` failed or never returned.`,"","Rove skipped it rather than starting through it, which would hang or fail","with a message from that binary instead of this one.","","Reinstall Bun, then run this command again:"," curl -fsSL https://bun.sh/install | bash","",`Have a working Bun elsewhere? Point Rove at it: ${U}=/path/to/bun`,""].join(`
6
- `)}function S(W=process.env,z=process.stdin,J=process.stdout){if(W[Z1]==="1")return!1;if(W.CI==="true"||W.CI==="1")return!1;return Boolean(z.isTTY&&J.isTTY)}function v(W={},z=V){let J=W.platform??process.platform,[$,...Z]=b1(J);if(!$)return null;let Q=z($,Z,{stdio:"inherit"});if(Q.error||Q.status!==0)return null;return B(W).bun}function Y1(W){if(typeof W.status==="number")return W.status;if(W.signal)return 128+(Object.hasOwn(f,W.signal)?f[W.signal]:0);return 1}var f={SIGINT:2,SIGQUIT:3,SIGKILL:9,SIGTERM:15};function E(W,z,J,$=V){let Z=$(W,[z,...J],{stdio:"inherit"});if(Z.error)return process.stderr.write(`rove: could not start Bun at ${W}: ${Z.error.message}
7
- `),1;return Y1(Z)}var h=_(import.meta.url),q=P(import.meta.url),u=G1(h,`${q}-run.js`);async function x1(W){let z=K1({input:process.stdin,output:process.stdout});try{let J=(await z.question(W)).trim().toLowerCase();return J===""||J==="y"||J==="yes"}finally{z.close()}}async function H1(){let W={launcherDir:h},z=B(W);if(z.bun||!S())return z;let J=z.stale?`${q}: Bun ${z.stale.version} is too old for Rove (needs ${x}+). Install the latest Bun now? [Y/n] `:`${q}: Rove runs on the Bun runtime, and none is installed. Install Bun now? [Y/n] `;if(!await x1(J))return z;return{bun:v(W),stale:z.stale,unusable:z.unusable}}var c=globalThis.Bun;if(c){let W=c.version;if(W&&!j()&&!C(W))process.stderr.write(g(process.execPath,W,q)),process.exit(1);await import(U1(u).href)}else{let{bun:W,stale:z,unusable:J}=await H1();if(!W){let $=z?g(z.path,z.version,q):J?p(J,q):D(q);process.stderr.write($),process.exit(1)}process.exit(E(W,u,process.argv.slice(2)))}
2
+ import{join as n}from"node:path";import{createInterface as a}from"node:readline/promises";import{pathToFileURL as ss}from"node:url";import{spawnSync as Q}from"node:child_process";import{constants as d,accessSync as R}from"node:fs";import{homedir as I}from"node:os";import{basename as U,delimiter as _,dirname as o,join as r}from"node:path";import{fileURLToPath as T}from"node:url";var H={$schema:"https://json.schemastore.org/package.json",name:"@sma1lboy/rove",version:"0.9.239",description:"Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",keywords:["terminal","tui","cli","multiplexer","ai-agents","coding-agent","ai-coding-assistant","agentic-ai","parallel-agents","git-worktree","claude-code","codex","llm","developer-tools"],type:"module",packageManager:"bun@1.3.13",bin:{rove:"dist/cli/rove.js"},files:["dist/cli","dist/completions","dist/web-ui","dist/skills","dist/*.wav","README.md","LICENSE"],publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/Sma1lboy/rove.git"},homepage:"https://rove.run",bugs:{url:"https://github.com/Sma1lboy/rove/issues"},engines:{bun:">=1.3.11"},scripts:{dev:"ROVE_DEV=1 bun --conditions=browser ./src/cli/rove.ts","dev:mock":"ROVE_DEV=1 bun ./src/tui-react/mock/host.tsx","dev:sandbox":"bun run scripts/dev-sandbox.ts run","dev:sandbox:reset":"bun run scripts/dev-sandbox.ts reset",build:"bun run scripts/build.ts","build:rubric":"bun run scripts/build-tier-rubric.ts",compile:"bun run scripts/compile.ts",typecheck:"tsc --noEmit","check-i18n":"bun run scripts/check-i18n.ts",test:"bun run test:fast && bun run test:socket","perf:golden":"bun scripts/perf-golden.ts","pty:soak":"bun scripts/pty-soak.ts","test:fast":"vitest run --passWithNoTests --minWorkers=1 --maxWorkers=8","test:socket":"ROVE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:socket:coverage":"ROVE_INCLUDE_SOCKET=1 ROVE_COVERAGE_DAEMON=1 vitest run test/daemon --coverage --pool forks --minWorkers=1 --maxWorkers=4 --passWithNoTests","test:behavior":"ROVE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --retry=2 --passWithNoTests","test:render":"bun scripts/render-track.mjs",coverage:"vitest run --coverage --passWithNoTests",bench:"vitest bench --run",lint:"biome check .",knip:"knip-bun",postinstall:"bun run scripts/check-preview-deps.ts || true",prepublishOnly:"bun run typecheck && bun run build","plugin-sandbox":"bun run scripts/plugin-sandbox.ts"},"//":"biome.json + bunfig.toml live at the monorepo root since they apply repo-wide; bun.lock also lives at root (workspace-shared).",dependencies:{"@ansi-tools/parser":"^1.0.15","@opentui/core":"0.4.3","@opentui/react":"0.4.3","@xterm/addon-serialize":"^0.14.0","@xterm/addon-unicode11":"^0.9.0","@xterm/headless":"^6.0.0","node-pty":"^1.1.0",react:"^19.2.8","smol-toml":"^1.7.1",ws:"^8.21.3"},devDependencies:{"@biomejs/biome":"1.9.4","@sma1lboy/rove-daemon":"0.7.20","@tsconfig/bun":"1.0.11","@types/bun":"1.3.14","@types/node":"25.6.2","@types/react":"^19.2.0","@vitest/coverage-v8":"2.1.9",knip:"^6.14.2","react-devtools-core":"^7.0.1",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]};var q="rove";var i=q;var z="ROVE_BUN",e="ROVE_NO_BUN_BOOTSTRAP",F="ROVE_SKIP_BUN_CHECK",$=H.engines.bun.match(/\d+\.\d+\.\d+/)?.[0]??"0.0.0",L=(s)=>{try{return R(s,d.X_OK),!0}catch{return!1}},B=(s)=>s==="win32"?"bun.exe":"bun",f=(s)=>{let t=Q(s,["--version"],{encoding:"utf8",timeout:5000});if(t.error||t.status!==0)return null;return t.stdout?.split(`
3
+ `)[0]?.trim()??""};function J(s){return s.trim().match(/^v?(\d+\.\d+\.\d+)/)?.[1]??null}function X(s,t=$){let c=J(s),b=J(t);if(!c||!b)return!0;let W=c.split(".").map(Number),g=b.split(".").map(Number);for(let p=0;p<3;p++){let k=W[p]??0,y=g[p]??0;if(k!==y)return k>y}return!0}function Y(s=process.env){return s[F]==="1"}function A(s={}){let t=s.env??process.env,c=s.platform??process.platform,b=s.home??t.HOME??t.USERPROFILE??I(),W=B(c),g=[],p=t[z]?.trim();if(p)g.push(p);for(let G of(t.PATH??t.Path??"").split(_))if(G)g.push(r(G,W));let k=t.BUN_INSTALL?.trim();if(k)g.push(r(k,"bin",W));if(b)g.push(r(b,".bun","bin",W));let y=s.launcherDir;if(y)g.push(r(y,"..","..","node_modules","bun","bin",W)),g.push(r(y,"..","..","..","bun","bin",W));return g}function N(s={}){let t=s.isExecutable??L;return A(s).find((c)=>t(c))??null}function Z(s={}){let t=s.isExecutable??L,c=s.bunVersionOf??f;if(Y(s.env??process.env))return{bun:N(s),stale:null,unusable:null};let b=null,W=null;for(let g of A(s)){if(!t(g))continue;let p=c(g);if(p===null){W??=g;continue}if(X(p))return{bun:g,stale:b,unusable:W};b??={path:g,version:J(p)??p}}return{bun:null,stale:b,unusable:W}}function h(s){return o(T(s))}function C(s){return U(T(s)).replace(/\.[cm]?[jt]s$/,"")}function u(s=process.platform){return s==="win32"?["powershell","-NoProfile","-Command","irm bun.sh/install.ps1 | iex"]:["bash","-c","curl -fsSL https://bun.sh/install | bash"]}function D(s=i,t=process.platform){let c=t==="win32"?'powershell -c "irm bun.sh/install.ps1 | iex"':"curl -fsSL https://bun.sh/install | bash";return[`${s}: Rove runs on the Bun runtime, and no Bun was found on this machine.`,"","Install Bun, then run this command again:",` ${c}`," npm install -g bun # any platform, if you already have npm","","Or install Bun and Rove together in one step:"," curl -fsSL https://rove.run/install.sh | sh","",`Already have Bun somewhere unusual? Point Rove at it: ${z}=/path/to/bun`,""].join(`
4
+ `)}function j(s,t,c=i){return[`${c}: this machine's Bun is too old for Rove — found ${t} at ${s}, need ${$} or newer.`,"","Rove's terminals are built on Bun's PTY API. An older Bun ignores it silently,","so every terminal and engine tab would open empty and stay empty.","","Upgrade Bun, then run this command again:"," bun upgrade # Bun installed itself (~/.bun)"," brew upgrade bun # Homebrew"," npm install -g bun@latest # npm-managed Bun","",`Have a newer Bun elsewhere? Point Rove at it: ${z}=/path/to/bun`,`Run on this one anyway (unsupported, terminals will be blank): ${F}=1`,""].join(`
5
+ `)}function v(s,t=i){return[`${t}: the Bun at ${s} could not be run — \`${s} --version\` failed or never returned.`,"","Rove skipped it rather than starting through it, which would hang or fail","with a message from that binary instead of this one.","","Reinstall Bun, then run this command again:"," curl -fsSL https://bun.sh/install | bash","",`Have a working Bun elsewhere? Point Rove at it: ${z}=/path/to/bun`,""].join(`
6
+ `)}function w(s=process.env,t=process.stdin,c=process.stdout){if(s[e]==="1")return!1;if(s.CI==="true"||s.CI==="1")return!1;return Boolean(t.isTTY&&c.isTTY)}function M(s={},t=Q){let c=s.platform??process.platform,[b,...W]=u(c);if(!b)return null;let g=t(b,W,{stdio:"inherit"});if(g.error||g.status!==0)return null;return Z(s).bun}function l(s){if(typeof s.status==="number")return s.status;if(s.signal)return 128+(Object.hasOwn(K,s.signal)?K[s.signal]:0);return 1}var K={SIGINT:2,SIGQUIT:3,SIGKILL:9,SIGTERM:15};function S(s,t,c,b=Q){let W=b(s,[t,...c],{stdio:"inherit"});if(W.error)return process.stderr.write(`rove: could not start Bun at ${s}: ${W.error.message}
7
+ `),1;return l(W)}var E=h(import.meta.url),x=C(import.meta.url),m=n(E,`${x}-run.js`);async function ts(s){let t=a({input:process.stdin,output:process.stdout});try{let c=(await t.question(s)).trim().toLowerCase();return c===""||c==="y"||c==="yes"}finally{t.close()}}async function cs(){let s={launcherDir:E},t=Z(s);if(t.bun||!w())return t;let c=t.stale?`${x}: Bun ${t.stale.version} is too old for Rove (needs ${$}+). Install the latest Bun now? [Y/n] `:`${x}: Rove runs on the Bun runtime, and none is installed. Install Bun now? [Y/n] `;if(!await ts(c))return t;return{bun:M(s),stale:t.stale,unusable:t.unusable}}var O=globalThis.Bun;if(O){let s=O.version;if(s&&!Y()&&!X(s))process.stderr.write(j(process.execPath,s,x)),process.exit(1);await import(ss(m).href)}else{let{bun:s,stale:t,unusable:c}=await cs();if(!s){let b=t?j(t.path,t.version,x):c?v(c,x):D(x);process.stderr.write(b),process.exit(1)}process.exit(S(s,m,process.argv.slice(2)))}
@@ -3,7 +3,7 @@ name: rove
3
3
  description: Use when controlling Rove tasks, parallel coding attempts, hosted agent sessions, task lifecycle, or the daemon-owned issue tracker from a shell. Also the ONLY channel for messaging another agent session on this machine — `rove api send`, never a peer/MCP side channel.
4
4
  ---
5
5
 
6
- <!-- rove-skill-version: 52 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
6
+ <!-- rove-skill-version: 54 — bump in lockstep with ROVE_SKILL_VERSION (src/lib/skill-install.ts). -->
7
7
 
8
8
  # Rove shell control
9
9
 
@@ -55,9 +55,9 @@ Four flag names that have actually been guessed wrong here, and what they are:
55
55
  Seeing one of these in guidance means that guidance predates the rename —
56
56
  `rove api schema` is the tiebreak.
57
57
 
58
- `$KOBE_TASK_ID` / `$KOBE_TAB_ID` are NOT retired: they are still exported into
58
+ `$ROVE_TASK_ID` / `$ROVE_TAB_ID` are NOT retired: they are still exported into
59
59
  every engine tab as aliases of `$ROVE_TASK_ID` / `$ROVE_TAB_ID`, and parts of
60
- the daemon still read the `KOBE_` spelling. Write the `ROVE_` names; expect to
60
+ the daemon still read the `ROVE_` spelling. Write the `ROVE_` names; expect to
61
61
  see both.
62
62
 
63
63
  ## read
@@ -235,7 +235,7 @@ own store. These are the INBOUND user reports; Rove issues are the backlog.
235
235
  ```text
236
236
  workitem-list --repo(REQ) --state{open|closed|all}(open) --limit(20) --search --assignee
237
237
  --label
238
- workitem-start --repo(REQ) --number(REQ) --vendor{claude|codex|copilot|kimi|pi|omp}
238
+ workitem-start --repo(REQ) --number(REQ) --vendor{claude|codex|copilot|kimi|pi|omp|bob}
239
239
  --base-branch
240
240
  ```
241
241
  <!-- generated:end -->
@@ -258,8 +258,8 @@ it fires with no TUI attached.
258
258
  ```text
259
259
  routine-list (none)
260
260
  routine-create --repo(REQ) --name(REQ) --prompt|--prompt-file(REQ) --schedule(REQ)
261
- --vendor{claude|codex|copilot|kimi|pi|omp} --base-branch --precheck
262
- --precheck-timeout(120) --grace(60) --persistent-session
261
+ --vendor{claude|codex|copilot|kimi|pi|omp|bob} --base-branch
262
+ --precheck --precheck-timeout(120) --grace(60) --persistent-session
263
263
  --target-task --target-tab --disabled
264
264
  routine-update --id(REQ) --name --prompt|--prompt-file --schedule --vendor
265
265
  --base-branch --precheck --precheck-timeout(120) --grace(60)