@sma1lboy/rove 0.9.252 → 0.9.253
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.
- package/dist/cli/{chunk-952aedqm.js → chunk-02h0488p.js} +1 -1
- package/dist/cli/{chunk-r0etyq15.js → chunk-08ycv55d.js} +1 -1
- package/dist/cli/{chunk-namxa4wy.js → chunk-0x7zcw52.js} +1 -1
- package/dist/cli/{chunk-gaf6n1ea.js → chunk-19h18xca.js} +1 -1
- package/dist/cli/{chunk-07jq0271.js → chunk-1mpheecn.js} +1 -1
- package/dist/cli/{chunk-md094j05.js → chunk-278sc87n.js} +1 -1
- package/dist/cli/{chunk-zzzm2cfx.js → chunk-2bmebw8q.js} +2 -2
- package/dist/cli/{chunk-jwnhthx9.js → chunk-2nfz06mq.js} +1 -1
- package/dist/cli/chunk-34vpdm19.js +2 -0
- package/dist/cli/{chunk-qyfmfpjg.js → chunk-3dgghmjv.js} +1 -1
- package/dist/cli/chunk-3j1x55tc.js +2 -0
- package/dist/cli/{chunk-q854fweb.js → chunk-3jnw3ftt.js} +1 -1
- package/dist/cli/chunk-3r4ekafa.js +2 -0
- package/dist/cli/{chunk-sgegp9x9.js → chunk-4zhmbqt3.js} +1 -1
- package/dist/cli/{chunk-2s762g8n.js → chunk-65tbvcjj.js} +1 -1
- package/dist/cli/{chunk-zcadc92x.js → chunk-67q0qw7z.js} +1 -1
- package/dist/cli/{chunk-q2fnt7gm.js → chunk-68gxqtse.js} +1 -1
- package/dist/cli/{chunk-rxge7bh5.js → chunk-6e54q8g5.js} +1 -1
- package/dist/cli/chunk-6k424rbf.js +2 -0
- package/dist/cli/{chunk-2n1n70f2.js → chunk-6r84zkcz.js} +1 -1
- package/dist/cli/{chunk-s5k3g5ra.js → chunk-6ygwq4w5.js} +1 -1
- package/dist/cli/{chunk-j6t7xvm3.js → chunk-75zg2k73.js} +1 -1
- package/dist/cli/{chunk-2bxts9pp.js → chunk-76adkzyf.js} +1 -1
- package/dist/cli/{chunk-axmpjma9.js → chunk-7cd1epfw.js} +1 -1
- package/dist/cli/chunk-7ghwdjdc.js +3 -0
- package/dist/cli/{chunk-cvrtapqt.js → chunk-7hkkjx6g.js} +1 -1
- package/dist/cli/{chunk-e8pv3b92.js → chunk-814ktvx2.js} +1 -1
- package/dist/cli/chunk-8je3dmzq.js +2 -0
- package/dist/cli/{chunk-25867jnk.js → chunk-8wze6dnr.js} +1 -1
- package/dist/cli/{chunk-0gxa04rx.js → chunk-97vsqj97.js} +1 -1
- package/dist/cli/chunk-9g7gneek.js +30 -0
- package/dist/cli/chunk-9jbcfrse.js +2 -0
- package/dist/cli/{chunk-kqv7t8jk.js → chunk-9r6x8mh4.js} +1 -1
- package/dist/cli/chunk-9vd6fv1k.js +3 -0
- package/dist/cli/{chunk-phpt1d3e.js → chunk-9wkf17yd.js} +1 -1
- package/dist/cli/{chunk-9sta3ak4.js → chunk-ad5gbdcf.js} +1 -1
- package/dist/cli/{chunk-vd8qqev9.js → chunk-admwmjjy.js} +1 -1
- package/dist/cli/{chunk-tntdcyra.js → chunk-afwh7as3.js} +1 -1
- package/dist/cli/{chunk-57wm48dh.js → chunk-avdg2rrh.js} +1 -1
- package/dist/cli/chunk-avz72132.js +3 -0
- package/dist/cli/chunk-ax7wzcam.js +2 -0
- package/dist/cli/{chunk-zk5qkkb1.js → chunk-axxf5dkq.js} +1 -1
- package/dist/cli/{chunk-p2jeq98m.js → chunk-b18pnmsv.js} +1 -1
- package/dist/cli/chunk-b1mk33gy.js +2 -0
- package/dist/cli/{chunk-a7kq09ke.js → chunk-b31cte10.js} +1 -1
- package/dist/cli/{chunk-032g0ahy.js → chunk-b3j5s2jb.js} +1 -1
- package/dist/cli/{chunk-va0n5rwm.js → chunk-bdvqjzwh.js} +1 -1
- package/dist/cli/{chunk-tfqrc2v1.js → chunk-bk4pfjs0.js} +3 -3
- package/dist/cli/{chunk-fktvtdkb.js → chunk-bphs6am4.js} +1 -1
- package/dist/cli/chunk-bq0xsdqx.js +3 -0
- package/dist/cli/{chunk-m3bz62v4.js → chunk-c3d36ryd.js} +1 -1
- package/dist/cli/chunk-c4e149yb.js +2 -0
- package/dist/cli/chunk-cgy92ks5.js +2 -0
- package/dist/cli/chunk-cjxvb9vg.js +2 -0
- package/dist/cli/{chunk-resmnaxq.js → chunk-dehnv06q.js} +1 -1
- package/dist/cli/{chunk-y1cb8pj5.js → chunk-dk0hffvd.js} +1 -1
- package/dist/cli/{chunk-ebhbtvhd.js → chunk-dkb8nj75.js} +1 -1
- package/dist/cli/chunk-dx72asyw.js +2 -0
- package/dist/cli/{chunk-qh4y4e27.js → chunk-epyw87gt.js} +1 -1
- package/dist/cli/{chunk-s2t9acrv.js → chunk-f6836h0n.js} +1 -1
- package/dist/cli/{chunk-npb9xz3y.js → chunk-ffjwgbck.js} +1 -1
- package/dist/cli/chunk-ft6ftksv.js +2 -0
- package/dist/cli/{chunk-7h7270rz.js → chunk-g3wdrhxk.js} +2 -2
- package/dist/cli/{chunk-ra40m849.js → chunk-gb3qb83h.js} +1 -1
- package/dist/cli/chunk-ghyz3fd7.js +4 -0
- package/dist/cli/chunk-gt1vbz3f.js +5 -0
- package/dist/cli/{chunk-pgmv2hwf.js → chunk-hbq7nqnp.js} +2 -2
- package/dist/cli/{chunk-jp31bpgp.js → chunk-hm7t9gkb.js} +1 -1
- package/dist/cli/{chunk-kda565xs.js → chunk-hqzgejfj.js} +1 -1
- package/dist/cli/{chunk-b67pjyyg.js → chunk-j26zqrnq.js} +1 -1
- package/dist/cli/{chunk-1tebqkdv.js → chunk-jbqpyp76.js} +1 -1
- package/dist/cli/{chunk-9e21z4gn.js → chunk-jk9b9ztf.js} +1 -1
- package/dist/cli/{chunk-w2sp489k.js → chunk-k3wzznqw.js} +1 -1
- package/dist/cli/{chunk-zb5d61xa.js → chunk-k8dm013e.js} +1 -1
- package/dist/cli/{chunk-a7m7w6d1.js → chunk-m6qv5rsv.js} +1 -1
- package/dist/cli/{chunk-34468esa.js → chunk-mrtfvgb2.js} +1 -1
- package/dist/cli/{chunk-t3v57v42.js → chunk-mt8vtz20.js} +2 -2
- package/dist/cli/{chunk-2ks86x2d.js → chunk-mw35vd6g.js} +1 -1
- package/dist/cli/{chunk-36pkmg07.js → chunk-mwm63vz3.js} +9 -9
- package/dist/cli/chunk-n7dtvega.js +2 -0
- package/dist/cli/chunk-nhpadsbv.js +2 -0
- package/dist/cli/{chunk-4ays3krf.js → chunk-p8d9va1w.js} +2 -2
- package/dist/cli/{chunk-7j00hbq5.js → chunk-p98w5ffk.js} +1 -1
- package/dist/cli/chunk-parvvj8h.js +2 -0
- package/dist/cli/{chunk-jn7vr075.js → chunk-pcyatg4b.js} +1 -1
- package/dist/cli/{chunk-rc8baevh.js → chunk-pkq8n3gs.js} +2 -2
- package/dist/cli/chunk-pwybgztt.js +2 -0
- package/dist/cli/chunk-q1e0qqmd.js +3 -0
- package/dist/cli/{chunk-5q08srg6.js → chunk-q349ydch.js} +1 -1
- package/dist/cli/chunk-qb6ktr8a.js +2 -0
- package/dist/cli/{chunk-a1wjg2cv.js → chunk-qc06psqb.js} +1 -1
- package/dist/cli/{chunk-mw0ysrpd.js → chunk-qk5f6p3e.js} +1 -1
- package/dist/cli/chunk-r2pd9tv9.js +3 -0
- package/dist/cli/{chunk-h7y9v8k1.js → chunk-r4bn0mtb.js} +1 -1
- package/dist/cli/{chunk-4e1wcgw7.js → chunk-rm2wy5hf.js} +3 -3
- package/dist/cli/chunk-rpm771v5.js +15 -0
- package/dist/cli/{chunk-24dryfqb.js → chunk-s21t29qn.js} +1 -1
- package/dist/cli/{chunk-ccn7pq03.js → chunk-sb2xg6py.js} +2 -2
- package/dist/cli/{chunk-ayhkcv0w.js → chunk-sk3h2pzj.js} +2 -2
- package/dist/cli/{chunk-6a4xqzqf.js → chunk-sncjkw3g.js} +3 -3
- package/dist/cli/chunk-t6j3pmpp.js +2 -0
- package/dist/cli/{chunk-1v8y9xtk.js → chunk-tmz0wzq8.js} +1 -1
- package/dist/cli/{chunk-nz9nmp4v.js → chunk-tq1hrd9n.js} +1 -1
- package/dist/cli/{chunk-x0rvg54z.js → chunk-v0jvt60f.js} +1 -1
- package/dist/cli/chunk-v8s0s21v.js +2 -0
- package/dist/cli/{chunk-2rfyjb3y.js → chunk-v9avfsxq.js} +1 -1
- package/dist/cli/{chunk-t5qayy7m.js → chunk-v9dcyjmj.js} +1 -1
- package/dist/cli/{chunk-trjve2xz.js → chunk-vcq9hb2a.js} +1 -1
- package/dist/cli/chunk-vx4e787s.js +3 -0
- package/dist/cli/{chunk-vgknea9y.js → chunk-wbtebbrv.js} +1 -1
- package/dist/cli/{chunk-meyfwc50.js → chunk-wkk63qck.js} +1 -1
- package/dist/cli/{chunk-m2t2n474.js → chunk-wq6pfbek.js} +2 -2
- package/dist/cli/{chunk-x8pk5cyf.js → chunk-x2c8f2qz.js} +1 -1
- package/dist/cli/{chunk-0y4qgnby.js → chunk-x5ymh8ev.js} +1 -1
- package/dist/cli/{chunk-568q390y.js → chunk-x7r75e3p.js} +2 -2
- package/dist/cli/chunk-xg6zg6kz.js +2 -0
- package/dist/cli/chunk-xgq5ycyn.js +2 -0
- package/dist/cli/{chunk-21ek142k.js → chunk-xkr7fwvb.js} +1 -1
- package/dist/cli/{chunk-5hhr44fc.js → chunk-xmf4053m.js} +1 -1
- package/dist/cli/{chunk-nqtvthqg.js → chunk-xpxxgzw9.js} +1 -1
- package/dist/cli/{chunk-s5a5dyab.js → chunk-y33j54yr.js} +2 -2
- package/dist/cli/{chunk-hq9tbzqa.js → chunk-y55zpren.js} +1 -1
- package/dist/cli/{chunk-h3q3r1py.js → chunk-yjk0465m.js} +1 -1
- package/dist/cli/chunk-yq99x0r6.js +2 -0
- package/dist/cli/{chunk-qstjfseh.js → chunk-yshp8cmx.js} +1 -1
- package/dist/cli/chunk-z3zaa155.js +3 -0
- package/dist/cli/{chunk-npwzmmv9.js → chunk-z7zm8h1q.js} +2 -2
- package/dist/cli/chunk-zfjqy7hp.js +52 -0
- package/dist/cli/{chunk-cbd6y9at.js → chunk-zmw0v18d.js} +1 -1
- package/dist/cli/chunk-zy20hzvh.js +4 -0
- package/dist/cli/index.js +8 -8
- package/dist/cli/pty-host-node.mjs +3 -0
- package/dist/cli/rove-run.js +1 -1
- package/dist/cli/rove.js +1 -1
- package/dist/completions/rove.bash +1 -1
- package/dist/completions/rove.fish +1 -1
- package/dist/completions/rove.zsh +1 -1
- package/dist/skills/rove/SKILL.md +50 -2
- package/dist/skills/rove/references/api-flags.md +38 -7
- package/dist/web/assets/{index-DHlgMx7L.js → index-DmRZRttZ.js} +2 -2
- package/dist/web/index.html +1 -1
- package/package.json +3 -3
- package/dist/cli/chunk-17pg88dq.js +0 -22
- package/dist/cli/chunk-1zwp3ase.js +0 -2
- package/dist/cli/chunk-2bp01vf2.js +0 -2
- package/dist/cli/chunk-2g2w5vvn.js +0 -2
- package/dist/cli/chunk-564jgrb3.js +0 -2
- package/dist/cli/chunk-5qxp7xx3.js +0 -2
- package/dist/cli/chunk-6f01fsje.js +0 -2
- package/dist/cli/chunk-7zxf47xb.js +0 -2
- package/dist/cli/chunk-8e0nmegv.js +0 -2
- package/dist/cli/chunk-9dregrj6.js +0 -5
- package/dist/cli/chunk-9h940gnr.js +0 -2
- package/dist/cli/chunk-9mcpqrx8.js +0 -2
- package/dist/cli/chunk-bhm24ne6.js +0 -9
- package/dist/cli/chunk-c0ksxg3z.js +0 -3
- package/dist/cli/chunk-cb1dg7nz.js +0 -2
- package/dist/cli/chunk-cpv1rpc7.js +0 -2
- package/dist/cli/chunk-csdttpme.js +0 -52
- package/dist/cli/chunk-fz0xfw86.js +0 -2
- package/dist/cli/chunk-h89ghyex.js +0 -2
- package/dist/cli/chunk-jnj2kk2h.js +0 -3
- package/dist/cli/chunk-kx0wzjj4.js +0 -2
- package/dist/cli/chunk-n2xemv4a.js +0 -2
- package/dist/cli/chunk-n92fz0hn.js +0 -2
- package/dist/cli/chunk-nj53wrzz.js +0 -2
- package/dist/cli/chunk-pdvyfz3n.js +0 -3
- package/dist/cli/chunk-pj3gnkfr.js +0 -3
- package/dist/cli/chunk-q3xt0mqt.js +0 -3
- package/dist/cli/chunk-qzsahxd9.js +0 -3
- package/dist/cli/chunk-r2c5nbcq.js +0 -4
- package/dist/cli/chunk-rf0jrh3q.js +0 -2
- package/dist/cli/chunk-rj7fwa30.js +0 -2
- package/dist/cli/chunk-sbn5pbz9.js +0 -2
- package/dist/cli/chunk-va5am5n6.js +0 -2
- package/dist/cli/chunk-vwpcv7j1.js +0 -4
- package/dist/cli/chunk-yknavm97.js +0 -3
- package/dist/cli/chunk-yt24rrvx.js +0 -2
package/dist/cli/rove.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
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 V,accessSync as R}from"node:fs";import{homedir as e}from"node:os";import{basename as I,delimiter as U,dirname as o,join as y}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.
|
|
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 V,accessSync as R}from"node:fs";import{homedir as e}from"node:os";import{basename as I,delimiter as U,dirname as o,join as y}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.253",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","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.22","@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","rove-bridge":"0.0.14","rove-weixin":"0.0.14",typescript:"5.8.2",vitest:"2.1.9"},trustedDependencies:[]};var q="rove";var k=q;var z="ROVE_BUN",_="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,V.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
3
|
`)[0]?.trim()??""};function J(s){return s.trim().match(/^v?(\d+\.\d+\.\d+)/)?.[1]??null}function X(s,t=$){let c=J(s),W=J(t);if(!c||!W)return!0;let b=c.split(".").map(Number),g=W.split(".").map(Number);for(let x=0;x<3;x++){let i=b[x]??0,r=g[x]??0;if(i!==r)return i>r}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,W=s.home??t.HOME??t.USERPROFILE??e(),b=B(c),g=[],x=t[z]?.trim();if(x)g.push(x);for(let G of(t.PATH??t.Path??"").split(U))if(G)g.push(y(G,b));let i=t.BUN_INSTALL?.trim();if(i)g.push(y(i,"bin",b));if(W)g.push(y(W,".bun","bin",b));let r=s.launcherDir;if(r)g.push(y(r,"..","..","node_modules","bun","bin",b)),g.push(y(r,"..","..","..","bun","bin",b));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 W=null,b=null;for(let g of A(s)){if(!t(g))continue;let x=c(g);if(x===null){b??=g;continue}if(X(x))return{bun:g,stale:W,unusable:b};W??={path:g,version:J(x)??x}}return{bun:null,stale:W,unusable:b}}function h(s){return o(T(s))}function C(s){return I(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=k,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
4
|
`)}function j(s,t,c=k){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
5
|
`)}function v(s,t=k){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(`
|
|
@@ -12,7 +12,7 @@ _rove() {
|
|
|
12
12
|
fi
|
|
13
13
|
if [[ ${COMP_CWORD} -eq 2 ]]; then
|
|
14
14
|
case "${prev}" in
|
|
15
|
-
api) COMPREPLY=( $(compgen -W "schema engine-list list get-task pty-list collect context digest agent-turns inspect read-output watch add send dispatch interrupt note note-list note-delete pane-open pane-close pane-graphics tab-close tab-new tab-split notify prompt engine-report row-token set-active feedback issue-list issue-create issue-update issue-delete routine-list routine-create routine-update routine-delete routine-run-now routine-respond routine-runs workitem-list workitem-start update land delete ensure-worktree remove-worktree discover-adoptable adopt" -- "${cur}") ) ;;
|
|
15
|
+
api) COMPREPLY=( $(compgen -W "schema engine-list list get-task pty-list collect context digest agent-turns inspect read-output watch deliveries add send dispatch interrupt note note-list note-delete pane-open pane-close pane-graphics tab-close tab-new tab-split notify prompt engine-report row-token set-active report gate-raise gate-answer gate-withdraw gates feedback issue-list issue-create issue-update issue-delete routine-list routine-create routine-update routine-delete routine-run-now routine-respond routine-runs workitem-list workitem-start update land delete ensure-worktree remove-worktree discover-adoptable adopt" -- "${cur}") ) ;;
|
|
16
16
|
daemon) COMPREPLY=( $(compgen -W "status start stop restart" -- "${cur}") ) ;;
|
|
17
17
|
machine) COMPREPLY=( $(compgen -W "add doctor remove list" -- "${cur}") ) ;;
|
|
18
18
|
plugin) COMPREPLY=( $(compgen -W "install link list search outdated update enable disable unlink uninstall config-dir log action pane" -- "${cur}") ) ;;
|
|
@@ -19,7 +19,7 @@ complete -c rove -f -n __fish_use_subcommand -a skill
|
|
|
19
19
|
complete -c rove -f -n __fish_use_subcommand -a plugin
|
|
20
20
|
complete -c rove -f -n __fish_use_subcommand -a feedback
|
|
21
21
|
complete -c rove -f -n __fish_use_subcommand -a update
|
|
22
|
-
complete -c rove -f -n "__fish_seen_subcommand_from api" -a "schema engine-list list get-task pty-list collect context digest agent-turns inspect read-output watch add send dispatch interrupt note note-list note-delete pane-open pane-close pane-graphics tab-close tab-new tab-split notify prompt engine-report row-token set-active feedback issue-list issue-create issue-update issue-delete routine-list routine-create routine-update routine-delete routine-run-now routine-respond routine-runs workitem-list workitem-start update land delete ensure-worktree remove-worktree discover-adoptable adopt"
|
|
22
|
+
complete -c rove -f -n "__fish_seen_subcommand_from api" -a "schema engine-list list get-task pty-list collect context digest agent-turns inspect read-output watch deliveries add send dispatch interrupt note note-list note-delete pane-open pane-close pane-graphics tab-close tab-new tab-split notify prompt engine-report row-token set-active report gate-raise gate-answer gate-withdraw gates feedback issue-list issue-create issue-update issue-delete routine-list routine-create routine-update routine-delete routine-run-now routine-respond routine-runs workitem-list workitem-start update land delete ensure-worktree remove-worktree discover-adoptable adopt"
|
|
23
23
|
complete -c rove -f -n "__fish_seen_subcommand_from daemon" -a "status start stop restart"
|
|
24
24
|
complete -c rove -f -n "__fish_seen_subcommand_from machine" -a "add doctor remove list"
|
|
25
25
|
complete -c rove -f -n "__fish_seen_subcommand_from plugin" -a "install link list search outdated update enable disable unlink uninstall config-dir log action pane"
|
|
@@ -13,7 +13,7 @@ _rove() {
|
|
|
13
13
|
|
|
14
14
|
verbs=()
|
|
15
15
|
case "${words[2]}" in
|
|
16
|
-
api) verbs=("schema" "engine-list" "list" "get-task" "pty-list" "collect" "context" "digest" "agent-turns" "inspect" "read-output" "watch" "add" "send" "dispatch" "interrupt" "note" "note-list" "note-delete" "pane-open" "pane-close" "pane-graphics" "tab-close" "tab-new" "tab-split" "notify" "prompt" "engine-report" "row-token" "set-active" "feedback" "issue-list" "issue-create" "issue-update" "issue-delete" "routine-list" "routine-create" "routine-update" "routine-delete" "routine-run-now" "routine-respond" "routine-runs" "workitem-list" "workitem-start" "update" "land" "delete" "ensure-worktree" "remove-worktree" "discover-adoptable" "adopt") ;;
|
|
16
|
+
api) verbs=("schema" "engine-list" "list" "get-task" "pty-list" "collect" "context" "digest" "agent-turns" "inspect" "read-output" "watch" "deliveries" "add" "send" "dispatch" "interrupt" "note" "note-list" "note-delete" "pane-open" "pane-close" "pane-graphics" "tab-close" "tab-new" "tab-split" "notify" "prompt" "engine-report" "row-token" "set-active" "report" "gate-raise" "gate-answer" "gate-withdraw" "gates" "feedback" "issue-list" "issue-create" "issue-update" "issue-delete" "routine-list" "routine-create" "routine-update" "routine-delete" "routine-run-now" "routine-respond" "routine-runs" "workitem-list" "workitem-start" "update" "land" "delete" "ensure-worktree" "remove-worktree" "discover-adoptable" "adopt") ;;
|
|
17
17
|
daemon) verbs=("status" "start" "stop" "restart") ;;
|
|
18
18
|
machine) verbs=("add" "doctor" "remove" "list") ;;
|
|
19
19
|
plugin) verbs=("install" "link" "list" "search" "outdated" "update" "enable" "disable" "unlink" "uninstall" "config-dir" "log" "action" "pane") ;;
|
|
@@ -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:
|
|
6
|
+
<!-- rove-skill-version: 63 — bump in lockstep with ROVE_SKILL_VERSION (src/lib/skill-install.ts). -->
|
|
7
7
|
|
|
8
8
|
# Rove shell control
|
|
9
9
|
|
|
@@ -273,7 +273,7 @@ turn either. These five carry almost all traffic:
|
|
|
273
273
|
|
|
274
274
|
```text
|
|
275
275
|
add --repo(REQ) --prompt --title --command --count --agents --activate
|
|
276
|
-
send --prompt|--prompt-file(REQ) --task-id --tab --command --plain
|
|
276
|
+
send --prompt|--prompt-file(REQ) --task-id --tab --command --plain --expect-report
|
|
277
277
|
get-task --task-id(REQ) list (no flags)
|
|
278
278
|
collect --group <groupId> | --task-ids <csv> | --repo
|
|
279
279
|
```
|
|
@@ -294,6 +294,7 @@ Find your section by what you were ASKED, not by Rove's noun for it:
|
|
|
294
294
|
| track work in Rove's own backlog, move a kanban card | issues |
|
|
295
295
|
| remember this for the repo, leave a field note / 记一笔 | drive |
|
|
296
296
|
| what did the agent do, per-turn cost, read its screen | read |
|
|
297
|
+
| a prompt ends `[ROVE] … report with: rove api report`; tick a task unattended and want proof it reported | drive (`report`, `send --expect-report`) / read (`deliveries`) |
|
|
297
298
|
| make / rename / retarget / land / close a task | create / edit / lifecycle |
|
|
298
299
|
| materialize or adopt a checkout | worktree |
|
|
299
300
|
| which engines exist, send Rove product feedback | discover / feedback |
|
|
@@ -420,6 +421,17 @@ below the minimum usable size (20×6 cells) falls back to a tab.
|
|
|
420
421
|
Panes land in the USER'S live workspace — open them when asked (monitors,
|
|
421
422
|
logs, dashboards), don't scatter panes for work `add` should own.
|
|
422
423
|
|
|
424
|
+
## Asking the owner (decision gates)
|
|
425
|
+
|
|
426
|
+
A question only the owner can answer goes through a gate, not a MEMO line or the tail of a long report. Raise it, then stop and wait; the answer is pasted back into your tab as `[ROVE GATE g-N answered] …`.
|
|
427
|
+
|
|
428
|
+
| Verb | Purpose |
|
|
429
|
+
|---|---|
|
|
430
|
+
| `gate-raise --task-id "$ROVE_TASK_ID" --question TEXT [--option KEY=LABEL]… [--recommend KEY] [--context TEXT]` | Open a decision gate (≤ 6 options, empty = free text). It shows in the owner's Inbox as `decision_needed`; `--tab` defaults to the tab you run in |
|
|
431
|
+
| `gate-answer --gate g-N [--option KEY] [--text TEXT]` | Answer a gate (owner/coordinator). Saved first, then pasted into the gate's tab; no live engine → `delivered:false`, and the next `send`/routine into that tab carries it |
|
|
432
|
+
| `gate-withdraw --gate g-N` | Drop a question that went moot |
|
|
433
|
+
| `gates [--repo PATH] [--task-id ID] [--status open\|answered\|withdrawn\|all]` | List gates (default open); `context` also carries the repo's open gates |
|
|
434
|
+
|
|
423
435
|
## Lifecycle
|
|
424
436
|
|
|
425
437
|
| Verb | Purpose |
|
|
@@ -609,6 +621,42 @@ worker died (it may be mid-turn or stuck on a permission prompt): peek with
|
|
|
609
621
|
`collect`/`get-task`, nudge with `send`, and never mark a silent task failed
|
|
610
622
|
or auto-retry it.
|
|
611
623
|
|
|
624
|
+
### Reports: close a delivered prompt with `report`
|
|
625
|
+
|
|
626
|
+
A completion `send` is a message. For work that runs unattended — a routine,
|
|
627
|
+
a standing session, a scheduler ticking a task — Rove can also ask for a
|
|
628
|
+
**report** and notice when it never comes.
|
|
629
|
+
|
|
630
|
+
**Receiving side.** A prompt that ends with `[ROVE] When this turn ends,
|
|
631
|
+
report: rove api report --delivery d-<n> …` (or opens with a
|
|
632
|
+
`[ROVE ROUTINE] … report with: rove api report --delivery d-<n> …` line)
|
|
633
|
+
is an armed delivery. Make `report` the LAST step of the turn, before you
|
|
634
|
+
stop:
|
|
635
|
+
|
|
636
|
+
```bash
|
|
637
|
+
rove api report --delivery d-41 --outcome done \
|
|
638
|
+
--summary "<what you did, conclusion first>" \
|
|
639
|
+
--evidence "<commit, PR url, test result, path>" --evidence "…" \
|
|
640
|
+
--next "<what the next tick should do>"
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
`--outcome` is `done`, `partial`, `blocked` (you need the owner or an
|
|
644
|
+
outside fix) or `failed` (you tried and could not). A turn that ends with no
|
|
645
|
+
report is flagged `report_missing` in the owner's Inbox, and the delivery is
|
|
646
|
+
marked `missing`. Reporting again replaces the report; a late report clears
|
|
647
|
+
the flag. For text with quotes or backticks use `--json -` (stdin) with
|
|
648
|
+
`{delivery, outcome, summary, evidence?, next?}`. `routine-respond` is the
|
|
649
|
+
same report as `--outcome done`.
|
|
650
|
+
|
|
651
|
+
**Sending side.** Arm the prompt you send: `rove api send --expect-report
|
|
652
|
+
…` (the reply carries `deliveryId`), or set it once with
|
|
653
|
+
`add --require-report` / `update --require-report on` so every `send` to that
|
|
654
|
+
task is armed. Read what recent ticks did with `rove api deliveries
|
|
655
|
+
--task-id <id> --limit 5` (newest first: outcome, summary, evidence, next,
|
|
656
|
+
or why it went missing) instead of a growing notes file. Silence still never
|
|
657
|
+
proves a worker is dead — `missing` says the turn ended or the engine died
|
|
658
|
+
without a report; look before you act on it.
|
|
659
|
+
|
|
612
660
|
### A task is finished when it is GONE
|
|
613
661
|
|
|
614
662
|
The dispatcher closes tasks. A worker cannot delete itself, so when it reports
|
|
@@ -81,6 +81,8 @@ agent-turns --task-id --repo --since-days(7) --limit(200)
|
|
|
81
81
|
inspect --task-id
|
|
82
82
|
read-output --task-id --tab --source{auto|history|terminal}(auto) --cursor --limit
|
|
83
83
|
watch --task-ids <a,b,c> --group --until(REQ) <STATE[,STATE]> --timeout
|
|
84
|
+
deliveries --task-id(REQ) --limit
|
|
85
|
+
gates --repo --task-id --status{open|answered|withdrawn|all}(open)
|
|
84
86
|
```
|
|
85
87
|
<!-- generated:end -->
|
|
86
88
|
|
|
@@ -89,6 +91,12 @@ watch --task-ids <a,b,c> --group --until(REQ) <STATE[,STATE]> --timeout
|
|
|
89
91
|
(what `add --count` returned), a `--task-ids` csv, or a `--repo`; `inspect` is
|
|
90
92
|
the wider diagnostic — daemon activity, a pty walk, and every tab snapshot.
|
|
91
93
|
|
|
94
|
+
`deliveries --task-id` is the task's report log, newest first: for each armed
|
|
95
|
+
prompt its `status` (`awaiting`, `reported`, `missing`), the report
|
|
96
|
+
(`outcome`, `summary`, `evidence`, `next`) or why it went missing (`cause`,
|
|
97
|
+
`note`). A loop that wakes a task reads `deliveries --limit 5` for what the
|
|
98
|
+
last ticks did, instead of a growing notes file.
|
|
99
|
+
|
|
92
100
|
`pty-list` is what `NO_ENGINE_TAB`'s hint points at: when `.tabs[]` and reality
|
|
93
101
|
disagree, it is the ground truth for what is actually alive — key, alive, pid,
|
|
94
102
|
command, OSC title.
|
|
@@ -112,7 +120,7 @@ needs numbers, not when you want to know what a task is doing.
|
|
|
112
120
|
<!-- generated:begin drive -->
|
|
113
121
|
```text
|
|
114
122
|
send --task-id --prompt|--prompt-file(REQ) --tab --command --respawn --plain
|
|
115
|
-
--allow-empty
|
|
123
|
+
--allow-empty --expect-report
|
|
116
124
|
dispatch --task-id(REQ) --prompt|--prompt-file(REQ) --tab
|
|
117
125
|
interrupt --task-id(REQ) --tab
|
|
118
126
|
note --task-id(REQ) --text(REQ)
|
|
@@ -124,7 +132,7 @@ pane-close --task-id --title(REQ) --tab
|
|
|
124
132
|
pane-graphics --task-id --tab(REQ) --image-id
|
|
125
133
|
tab-close --task-id(REQ) --tab(REQ)
|
|
126
134
|
tab-new --task-id(REQ) --kind{shell|engine|editor|pane|viewport}(REQ) --command
|
|
127
|
-
--file --pane --tab --view-task
|
|
135
|
+
--file --line --pane --tab --view-task
|
|
128
136
|
tab-split --task-id(REQ) --tab(REQ) --action{open|close|rename|reset}(REQ)
|
|
129
137
|
--direction{right|down}(right) --leaf --title --cols --rows
|
|
130
138
|
notify --title(REQ) --body --kind(done) --task-id --source
|
|
@@ -135,6 +143,11 @@ engine-report --task-id
|
|
|
135
143
|
row-token --task-id(REQ) --text --ttl(60) --key(default)
|
|
136
144
|
--tone{info|success|warning|error|muted} --clear
|
|
137
145
|
set-active --task-id --none
|
|
146
|
+
report --delivery --outcome{done|partial|blocked|failed} --summary --evidence
|
|
147
|
+
--next --json
|
|
148
|
+
gate-raise --task-id(REQ) --tab --question(REQ) --option --recommend --context
|
|
149
|
+
gate-answer --gate(REQ) --option --text
|
|
150
|
+
gate-withdraw --gate(REQ)
|
|
138
151
|
```
|
|
139
152
|
<!-- generated:end -->
|
|
140
153
|
|
|
@@ -153,6 +166,19 @@ a resolved gotcha; an issue is for work that still needs doing.
|
|
|
153
166
|
that legitimately produced no commits (an investigation, a review, a question
|
|
154
167
|
answered); without it such a report is refused with `EMPTY_SUCCESS_REPORT`.
|
|
155
168
|
|
|
169
|
+
**`send --expect-report` asks for a report.** The reply carries `deliveryId`
|
|
170
|
+
(`d-<n>`) and the pasted prompt ends with a `[ROVE] When this turn ends,
|
|
171
|
+
report: rove api report --delivery d-<n> …` line. A task added with
|
|
172
|
+
`add --require-report` (or `update --require-report on`) arms every `send`
|
|
173
|
+
to it. When YOU receive a prompt with that line, finish the turn with
|
|
174
|
+
`report --delivery d-<n> --outcome done|partial|blocked|failed --summary "…"`
|
|
175
|
+
(repeat `--evidence` for commits, PR urls, test results, paths; `--next` for
|
|
176
|
+
what the next tick should do; `--json -` for text with quotes). Run it as the
|
|
177
|
+
last step, before you stop. A turn that ends without it raises a
|
|
178
|
+
`report_missing` Inbox row for the owner. Reporting again replaces the
|
|
179
|
+
report; a late one clears the flag. `outcome` is `blocked` when you need the
|
|
180
|
+
owner, `failed` when you tried and could not. Summary max 32,000 characters.
|
|
181
|
+
|
|
156
182
|
`notify --kind` styles the toast: `done`, `needs_input`, `error` get severity
|
|
157
183
|
treatment and an unread mark, anything else renders neutrally.
|
|
158
184
|
|
|
@@ -182,8 +208,9 @@ clear the shared active task.
|
|
|
182
208
|
add --repo(REQ) --title --branch --base-branch --worktree-name --command --effort
|
|
183
209
|
--tier{swift|standard|deep|auto} --model --count --agents <claude:2,codex:1>
|
|
184
210
|
--status{backlog|in_progress|in_review|done|canceled|error}(backlog) --pin
|
|
185
|
-
--activate(false) --prompt|--prompt-file
|
|
211
|
+
--require-report --expect-report --activate(false) --prompt|--prompt-file
|
|
186
212
|
update --task-id(REQ) --title --tab --branch --command --model --effort --pinned
|
|
213
|
+
--require-report{on|off}
|
|
187
214
|
--status{backlog|in_progress|in_review|done|canceled|error} --report-branch
|
|
188
215
|
--report-pr --report-summary
|
|
189
216
|
land --task-id(REQ) --dry-run --strategy{merge|squash}(merge) --delete-branch
|
|
@@ -313,10 +340,13 @@ and does not shift the schedule. `routine-delete` leaves already-created tasks
|
|
|
313
340
|
alone.
|
|
314
341
|
|
|
315
342
|
A delivered routine prompt starts with `[ROVE ROUTINE] "<name>" run #<n> — when
|
|
316
|
-
done, report with: …
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
343
|
+
done, report with: … rove api report --delivery d-<n> …`. When you received
|
|
344
|
+
one, finish by reporting THAT delivery (`report --outcome done|partial|blocked|failed
|
|
345
|
+
--summary …`): lead with the conclusion, markdown welcome, 32,000 characters
|
|
346
|
+
max. Reporting again replaces the answer. `routine-respond --run <runId>
|
|
347
|
+
--text …` still works; it is `report --outcome done` on the same delivery.
|
|
348
|
+
Nothing is inferred if you skip it; the run shows "no response" and the
|
|
349
|
+
delivery goes `missing`.
|
|
320
350
|
|
|
321
351
|
Run statuses from `routine-runs`: `dispatched`, `revived` (standing session
|
|
322
352
|
respawned — files kept, conversation did not), `skipped_precheck` (nothing to do),
|
|
@@ -350,6 +380,7 @@ Errors go to stderr as `{"error":{"message","code",...}}`. Most carry `hint`
|
|
|
350
380
|
|---|---|---|
|
|
351
381
|
| `BAD_FLAG` | flag not on that verb | check the table above, then `schema --verb <v>` |
|
|
352
382
|
| `TASK_NOT_FOUND` | id deleted or mistyped | `rove api list` |
|
|
383
|
+
| `DELIVERY_NOT_FOUND` | `report --delivery` names no delivery | copy the id from the prompt's `[ROVE]` line; `deliveries --task-id <id>` |
|
|
353
384
|
| `DIRTY_WORKTREE` | `delete` on a worktree with uncommitted files | send the worker back to commit, or `delete --force` to discard |
|
|
354
385
|
| `ISSUE_NOT_FOUND` | no issue with that number in this repo | `rove api issue-list --repo <path>` |
|
|
355
386
|
| `NO_ENGINE_TAB` | live tabs exist, none is an engine | `--tab tab-N` from `pty-list`, or `--tab new` |
|