rovecode 0.3.3 → 0.4.0-beta.3

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 (495) hide show
  1. package/CHANGELOG.md +527 -0
  2. package/README.md +46 -48
  3. package/bin/rovecode.js +24 -0
  4. package/dist/cli/app-j6gn14w3.js +2 -0
  5. package/dist/cli/ask-user-cwstt8fz.js +2 -0
  6. package/dist/cli/auth-login-9bbp9915.js +2 -0
  7. package/dist/cli/auth-m8p9grty.js +2 -0
  8. package/dist/cli/bench-16zqdms5.js +9 -0
  9. package/dist/cli/catalog-1xchffa4.js +2 -0
  10. package/dist/cli/cli-1n1zb64f.js +2 -0
  11. package/dist/cli/client-2t9gjkck.js +2 -0
  12. package/dist/cli/commands-exafvm2b.js +2 -0
  13. package/dist/cli/connect-6zde0kn3.js +2 -0
  14. package/dist/cli/context-cmd-5t43wgqt.js +2 -0
  15. package/dist/cli/context-report-kt01pw8y.js +2 -0
  16. package/dist/cli/count-remote-ap7x3vh6.js +2 -0
  17. package/dist/cli/design-ne5zszyh.js +2 -0
  18. package/dist/cli/dispatch-2r5myxye.js +2 -0
  19. package/dist/cli/doctor-ws4fh4tn.js +3 -0
  20. package/dist/cli/executor-bdrjn634.js +2 -0
  21. package/dist/cli/export-1mxb9g5p.js +2 -0
  22. package/dist/cli/files-g104xghh.js +2 -0
  23. package/dist/cli/gauntlet-07xrjpj7.js +2 -0
  24. package/dist/cli/gauntlet-runner-xvy64436.js +10 -0
  25. package/dist/cli/gauntlet-wave3-jm91yt5w.js +5 -0
  26. package/dist/cli/gauntlet-wave4-r13py7p1.js +14 -0
  27. package/dist/cli/hashline-znvrat11.js +2 -0
  28. package/dist/cli/http-xafw6fsh.js +143 -0
  29. package/dist/cli/index-1sgjm25y.js +2 -0
  30. package/dist/cli/init-g2m0tn4m.js +51 -0
  31. package/dist/cli/install-avaqjjqq.js +2 -0
  32. package/dist/cli/loop-mmpfft01.js +2 -0
  33. package/dist/cli/main-0904f6ps.js +5 -0
  34. package/dist/cli/main-0ab9fc26.js +9 -0
  35. package/dist/cli/main-0jys2ccn.js +3 -0
  36. package/dist/cli/main-0mtcdbs7.js +3 -0
  37. package/dist/cli/main-0z1w2zsg.js +3 -0
  38. package/dist/cli/main-1dchs7xv.js +18 -0
  39. package/dist/cli/main-1ereejm1.js +3 -0
  40. package/dist/cli/main-1k1kw6b5.js +3 -0
  41. package/dist/cli/main-27y4sm2k.js +38 -0
  42. package/dist/cli/main-2wwjex5j.js +58 -0
  43. package/dist/cli/main-2yeveeve.js +6 -0
  44. package/dist/cli/main-2yfck9b5.js +3 -0
  45. package/dist/cli/main-2zmzgkwh.js +3 -0
  46. package/dist/cli/main-351pz3z7.js +7 -0
  47. package/dist/cli/main-3gjqfh7a.js +6 -0
  48. package/dist/cli/main-3nf3kgve.js +3 -0
  49. package/dist/cli/main-3pjrb2hd.js +3 -0
  50. package/dist/cli/main-3rxcvgna.js +19 -0
  51. package/dist/cli/main-4b3jgy66.js +19 -0
  52. package/dist/cli/main-4wndhjdc.js +7 -0
  53. package/dist/cli/main-4xcmvxnk.js +3 -0
  54. package/dist/cli/main-5tbz0wbz.js +4 -0
  55. package/dist/cli/main-5ywnwthm.js +3 -0
  56. package/dist/cli/main-6b62vkz0.js +14 -0
  57. package/dist/cli/main-6dnk69vp.js +3 -0
  58. package/dist/cli/main-6genrmhs.js +136 -0
  59. package/dist/cli/main-73g7eff4.js +15 -0
  60. package/dist/cli/main-7c5thhjd.js +5 -0
  61. package/dist/cli/main-7rn6bqje.js +3 -0
  62. package/dist/cli/main-80haw7qk.js +4 -0
  63. package/dist/cli/main-875s60s2.js +4 -0
  64. package/dist/cli/main-8kjxbpw4.js +8 -0
  65. package/dist/cli/main-90ds1z4e.js +10 -0
  66. package/dist/cli/main-9etavkew.js +3 -0
  67. package/dist/cli/main-a9njrkk1.js +3 -0
  68. package/dist/cli/main-aecrjq2d.js +12 -0
  69. package/dist/cli/main-ck9asesq.js +9 -0
  70. package/dist/cli/main-cta9racd.js +4 -0
  71. package/dist/cli/main-ddv7j2ag.js +3 -0
  72. package/dist/cli/main-dfreez27.js +10 -0
  73. package/dist/cli/main-f7rw7des.js +3 -0
  74. package/dist/cli/main-ggcn7rd7.js +5 -0
  75. package/dist/cli/main-gzkmycnv.js +3 -0
  76. package/dist/cli/main-hq51jg8v.js +18 -0
  77. package/dist/cli/main-jft389w9.js +8 -0
  78. package/dist/cli/main-k1eqkg83.js +3 -0
  79. package/dist/cli/main-k2y8a2aw.js +9 -0
  80. package/dist/cli/main-kcpbykxz.js +4 -0
  81. package/dist/cli/main-kd488vje.js +22 -0
  82. package/dist/cli/main-kh32yvgk.js +5 -0
  83. package/dist/cli/main-kqxnqjnv.js +25 -0
  84. package/dist/cli/main-kyn0xnsg.js +3 -0
  85. package/dist/cli/main-m1kk6fp5.js +21 -0
  86. package/dist/cli/main-mv40pcr2.js +4 -0
  87. package/dist/cli/main-n0t3973w.js +3 -0
  88. package/dist/cli/main-nqveez48.js +4 -0
  89. package/dist/cli/main-pknhvrmj.js +3 -0
  90. package/dist/cli/main-pn1w7a7j.js +3 -0
  91. package/dist/cli/main-prxxs70n.js +4 -0
  92. package/dist/cli/main-q3vsesf9.js +3 -0
  93. package/dist/cli/main-qsevpgsv.js +3 -0
  94. package/dist/cli/main-rdgdw24b.js +25 -0
  95. package/dist/cli/main-rfth4tbm.js +16 -0
  96. package/dist/cli/main-rg0wn0xf.js +5 -0
  97. package/dist/cli/main-sdmxhtv8.js +4 -0
  98. package/dist/cli/main-skbp13js.js +18 -0
  99. package/dist/cli/main-t4xnd213.js +7 -0
  100. package/dist/cli/main-vqak588n.js +4 -0
  101. package/dist/cli/main-w2n1303f.js +9 -0
  102. package/dist/cli/main-wbrdspr2.js +5 -0
  103. package/dist/cli/main-wsrg79c1.js +7 -0
  104. package/dist/cli/main-x4r0fne4.js +5 -0
  105. package/dist/cli/main-xea2f3tn.js +6 -0
  106. package/dist/cli/main-xg704a3c.js +3 -0
  107. package/dist/cli/main-xvnrabfp.js +16 -0
  108. package/dist/cli/main-xy53xf0r.js +4 -0
  109. package/dist/cli/main-y1fqy60y.js +3 -0
  110. package/dist/cli/main-yn8cd281.js +34 -0
  111. package/dist/cli/main-yr0ksc0h.js +4 -0
  112. package/dist/cli/main-z2ex2vyf.js +4 -0
  113. package/dist/cli/main-z3aayzvq.js +3 -0
  114. package/dist/cli/main-zaqh35jg.js +3 -0
  115. package/dist/cli/main-zc2e8e46.js +4 -0
  116. package/dist/cli/main-zzrfw6cf.js +13 -0
  117. package/dist/cli/main.js +280 -0
  118. package/dist/cli/market-cmd-e14kmx9n.js +5 -0
  119. package/dist/cli/mcp-login-wq7ktdek.js +2 -0
  120. package/dist/cli/mcp-market-cmd-9mg3jecy.js +2 -0
  121. package/dist/cli/notify-b7qc0cjb.js +2 -0
  122. package/dist/cli/oauth-z8whcgfx.js +2 -0
  123. package/dist/cli/output-b3ewj3ps.js +16 -0
  124. package/dist/cli/profiles-6mr5he5e.js +2 -0
  125. package/dist/cli/provider-config-g7j42q8x.js +2 -0
  126. package/dist/cli/provider-jr1y8vvm.js +2 -0
  127. package/dist/cli/registry-s8yk86g0.js +2 -0
  128. package/dist/cli/registry-t6p8d4mn.js +2 -0
  129. package/dist/cli/repl-bajwe1mh.js +11 -0
  130. package/dist/cli/resume-rwn9nz7y.js +2 -0
  131. package/dist/cli/run-flags-nah7ndpt.js +2 -0
  132. package/dist/cli/runtime-n7gafzhb.js +2 -0
  133. package/dist/cli/sandbox-config-emdy18x4.js +2 -0
  134. package/dist/cli/server-b0nvs2bn.js +5 -0
  135. package/dist/cli/session-arg-y75wd4kj.js +2 -0
  136. package/dist/cli/session-j62evmjq.js +2 -0
  137. package/dist/cli/sessions-cmd-tsnwz0ns.js +7 -0
  138. package/dist/cli/settings-df10wfez.js +2 -0
  139. package/dist/cli/setup-jzvv72fg.js +2 -0
  140. package/dist/cli/sextant-smoke-37m81ke6.js +5 -0
  141. package/dist/cli/skills-cmd-gjxnxnhx.js +2 -0
  142. package/dist/cli/smoke-p7748apt.js +8 -0
  143. package/dist/cli/start-chat-s4st3mm0.js +12 -0
  144. package/dist/cli/stream-gmeyewds.js +2 -0
  145. package/dist/cli/task-gh0kkp3n.js +2 -0
  146. package/dist/cli/tasks-z1kfpe8e.js +2 -0
  147. package/dist/cli/thinking-0eqkrz6t.js +2 -0
  148. package/dist/cli/todo-5brcrt9m.js +2 -0
  149. package/dist/cli/tools-7pzm0vj9.js +2 -0
  150. package/dist/cli/tools-s635p6s8.js +2 -0
  151. package/dist/cli/trust-cmd-cjav8zgm.js +2 -0
  152. package/dist/cli/update-check-pt31bm2f.js +2 -0
  153. package/dist/cli/update-cmd-tk131s9t.js +2 -0
  154. package/dist/cli/voice-56nabd8d.js +2 -0
  155. package/dist/cli/webfetch-xd8q596m.js +2 -0
  156. package/dist/cli/websearch-5hkf98k1.js +2 -0
  157. package/dist/cli/workflow-cmd-cy3cvzjp.js +4 -0
  158. package/dist/cli/workspace-q10g5z3e.js +2 -0
  159. package/dist/lib/index.js +62 -0
  160. package/dist/lib/models-index.json +1 -0
  161. package/dist/lib/plugins.js +55 -0
  162. package/dist/lib/providers.js +17 -0
  163. package/dist/lib/public-api.js +20 -0
  164. package/dist/lib/sdk.js +360 -0
  165. package/package.json +84 -72
  166. package/bin/rovecode.ts +0 -21
  167. package/src/acp/server.ts +0 -374
  168. package/src/cli/auth-login.ts +0 -122
  169. package/src/cli/connect.ts +0 -244
  170. package/src/cli/context-cmd.ts +0 -199
  171. package/src/cli/dispatch.ts +0 -82
  172. package/src/cli/doctor.ts +0 -362
  173. package/src/cli/export.ts +0 -276
  174. package/src/cli/help.ts +0 -293
  175. package/src/cli/is-tui-invocation.ts +0 -8
  176. package/src/cli/main.ts +0 -583
  177. package/src/cli/market-cmd.ts +0 -658
  178. package/src/cli/mcp-login.ts +0 -141
  179. package/src/cli/mcp-market-cmd.ts +0 -302
  180. package/src/cli/output.ts +0 -382
  181. package/src/cli/repl.ts +0 -250
  182. package/src/cli/repomap-root.ts +0 -14
  183. package/src/cli/resume.ts +0 -57
  184. package/src/cli/run-flags.ts +0 -43
  185. package/src/cli/run-limits.ts +0 -78
  186. package/src/cli/runtime.ts +0 -931
  187. package/src/cli/session-arg.ts +0 -30
  188. package/src/cli/sessions-cmd.ts +0 -145
  189. package/src/cli/setup.ts +0 -153
  190. package/src/cli/skills-cmd.ts +0 -194
  191. package/src/cli/start-chat.ts +0 -65
  192. package/src/cli/trust-cmd.ts +0 -52
  193. package/src/coding/bash.ts +0 -148
  194. package/src/coding/checkpoints.ts +0 -327
  195. package/src/coding/diff.ts +0 -138
  196. package/src/coding/files.ts +0 -341
  197. package/src/coding/hashline.ts +0 -274
  198. package/src/coding/lsp-gate.ts +0 -254
  199. package/src/coding/lsp-servers.ts +0 -147
  200. package/src/coding/lsp.ts +0 -283
  201. package/src/coding/repomap-cache.ts +0 -99
  202. package/src/coding/repomap-files.ts +0 -192
  203. package/src/coding/repomap.ts +0 -481
  204. package/src/core/agents.ts +0 -255
  205. package/src/core/compaction.ts +0 -259
  206. package/src/core/config.ts +0 -289
  207. package/src/core/context-report.ts +0 -228
  208. package/src/core/context.ts +0 -60
  209. package/src/core/count-remote.ts +0 -107
  210. package/src/core/execpolicy-rules.ts +0 -196
  211. package/src/core/execpolicy.ts +0 -385
  212. package/src/core/executor.ts +0 -454
  213. package/src/core/guardrails.ts +0 -400
  214. package/src/core/hooks.ts +0 -411
  215. package/src/core/images.ts +0 -230
  216. package/src/core/intro.ts +0 -266
  217. package/src/core/loop.ts +0 -567
  218. package/src/core/modes.ts +0 -372
  219. package/src/core/orchestrator.ts +0 -245
  220. package/src/core/proc-group.ts +0 -48
  221. package/src/core/project-trust.ts +0 -98
  222. package/src/core/reflection.ts +0 -165
  223. package/src/core/sandbox-config.ts +0 -186
  224. package/src/core/session-id.ts +0 -24
  225. package/src/core/session-images.ts +0 -73
  226. package/src/core/session-ops.ts +0 -183
  227. package/src/core/session-text.ts +0 -29
  228. package/src/core/session.ts +0 -469
  229. package/src/core/settings.ts +0 -170
  230. package/src/core/tasks.ts +0 -646
  231. package/src/core/token-scale.ts +0 -108
  232. package/src/core/tools.ts +0 -309
  233. package/src/core/trust.ts +0 -104
  234. package/src/core/types.ts +0 -330
  235. package/src/core/update-check.ts +0 -171
  236. package/src/core/usage.ts +0 -204
  237. package/src/core/validate.ts +0 -121
  238. package/src/core/verify-gate.ts +0 -159
  239. package/src/core/verify.ts +0 -236
  240. package/src/core/voice.ts +0 -158
  241. package/src/core/win-job.ts +0 -183
  242. package/src/core/workspace.ts +0 -184
  243. package/src/design/audit.ts +0 -797
  244. package/src/design/direction.ts +0 -190
  245. package/src/design/rules.ts +0 -157
  246. package/src/eval/bench.ts +0 -150
  247. package/src/eval/gauntlet-runner.ts +0 -215
  248. package/src/eval/gauntlet-support.ts +0 -84
  249. package/src/eval/gauntlet-wave3.ts +0 -269
  250. package/src/eval/gauntlet-wave4.ts +0 -217
  251. package/src/eval/gauntlet.ts +0 -253
  252. package/src/index.ts +0 -17
  253. package/src/lanes/agy.ts +0 -95
  254. package/src/lanes/approval.ts +0 -24
  255. package/src/lanes/claude.ts +0 -129
  256. package/src/lanes/codex.ts +0 -127
  257. package/src/lanes/events.ts +0 -130
  258. package/src/lanes/job.ts +0 -142
  259. package/src/lanes/opencode.ts +0 -122
  260. package/src/lanes/process.ts +0 -184
  261. package/src/lanes/progress.ts +0 -183
  262. package/src/lanes/registry.ts +0 -178
  263. package/src/lanes/runner.ts +0 -124
  264. package/src/lanes/types.ts +0 -112
  265. package/src/market/catalogs/mcp-docs.json +0 -111
  266. package/src/market/catalogs/plugins.json +0 -111
  267. package/src/market/catalogs/skills.json +0 -478
  268. package/src/market/clone.ts +0 -72
  269. package/src/market/context-cost.ts +0 -121
  270. package/src/market/digest.ts +0 -106
  271. package/src/market/index.ts +0 -22
  272. package/src/market/install.ts +0 -578
  273. package/src/market/manifest.ts +0 -187
  274. package/src/market/prereq.ts +0 -145
  275. package/src/market/registry.ts +0 -363
  276. package/src/market/resolve.ts +0 -111
  277. package/src/market/types.ts +0 -236
  278. package/src/market/validate.ts +0 -227
  279. package/src/mcp/client.ts +0 -449
  280. package/src/mcp/config.ts +0 -252
  281. package/src/mcp/local-package.ts +0 -211
  282. package/src/mcp/market-catalog.ts +0 -84
  283. package/src/mcp/market-install.ts +0 -289
  284. package/src/mcp/market.ts +0 -362
  285. package/src/mcp/oauth.ts +0 -251
  286. package/src/mcp/prompts-resources.ts +0 -249
  287. package/src/mcp/shared.ts +0 -149
  288. package/src/mcp/status.ts +0 -67
  289. package/src/mcp/tools.ts +0 -275
  290. package/src/mcp/transport.ts +0 -122
  291. package/src/mcp/trust.ts +0 -25
  292. package/src/memory/blocks.ts +0 -278
  293. package/src/memory/recall.ts +0 -355
  294. package/src/memory/scope.ts +0 -182
  295. package/src/memory/store.ts +0 -105
  296. package/src/memory/tools.ts +0 -99
  297. package/src/plugins/cli.ts +0 -119
  298. package/src/plugins/discover.ts +0 -108
  299. package/src/plugins/index.ts +0 -50
  300. package/src/plugins/install.ts +0 -184
  301. package/src/plugins/load.ts +0 -124
  302. package/src/plugins/manifest.ts +0 -92
  303. package/src/plugins/state.ts +0 -83
  304. package/src/providers/auth.ts +0 -408
  305. package/src/providers/cache.ts +0 -223
  306. package/src/providers/catalog-local.ts +0 -160
  307. package/src/providers/catalog.ts +0 -421
  308. package/src/providers/middleware-context.ts +0 -86
  309. package/src/providers/middleware.ts +0 -373
  310. package/src/providers/model-list.ts +0 -23
  311. package/src/providers/oauth/common.ts +0 -105
  312. package/src/providers/oauth/device-code.ts +0 -107
  313. package/src/providers/oauth/github-copilot.ts +0 -146
  314. package/src/providers/oauth/loopback.ts +0 -158
  315. package/src/providers/oauth/openai.ts +0 -163
  316. package/src/providers/oauth/openrouter.ts +0 -89
  317. package/src/providers/oauth/pkce.ts +0 -45
  318. package/src/providers/oauth/registry.ts +0 -39
  319. package/src/providers/oauth/seam.ts +0 -89
  320. package/src/providers/profile-glm53.ts +0 -111
  321. package/src/providers/profile-sonnet5-persona.ts +0 -65
  322. package/src/providers/profile-sonnet5-voice.ts +0 -23
  323. package/src/providers/profiles.ts +0 -156
  324. package/src/providers/provider-config.ts +0 -311
  325. package/src/providers/registry.ts +0 -333
  326. package/src/providers/responses.ts +0 -209
  327. package/src/providers/retry.ts +0 -234
  328. package/src/providers/router.ts +0 -294
  329. package/src/providers/sse.ts +0 -26
  330. package/src/providers/stream-errors.ts +0 -117
  331. package/src/providers/stream.ts +0 -566
  332. package/src/providers/thinking.ts +0 -189
  333. package/src/providers/wire-messages.ts +0 -129
  334. package/src/providers/wire-responses.ts +0 -79
  335. package/src/providers/wire-select.ts +0 -53
  336. package/src/server/http.ts +0 -291
  337. package/src/server/openapi.ts +0 -246
  338. package/src/sextant/card-hits.ts +0 -102
  339. package/src/sextant/card-keys.ts +0 -55
  340. package/src/sextant/context-source.ts +0 -157
  341. package/src/sextant/crew-cards.ts +0 -350
  342. package/src/sextant/draw-agents.ts +0 -273
  343. package/src/sextant/draw-code.ts +0 -388
  344. package/src/sextant/draw-context.ts +0 -222
  345. package/src/sextant/draw-frame.ts +0 -164
  346. package/src/sextant/draw-market.ts +0 -573
  347. package/src/sextant/draw-messages.ts +0 -386
  348. package/src/sextant/draw-pet.ts +0 -230
  349. package/src/sextant/draw-plan.ts +0 -187
  350. package/src/sextant/draw-tabs.ts +0 -85
  351. package/src/sextant/draw-util.ts +0 -65
  352. package/src/sextant/draw-wizard.ts +0 -378
  353. package/src/sextant/engine.ts +0 -230
  354. package/src/sextant/frame-hits.ts +0 -25
  355. package/src/sextant/frame.ts +0 -101
  356. package/src/sextant/git-status.ts +0 -197
  357. package/src/sextant/grid.ts +0 -59
  358. package/src/sextant/input.ts +0 -119
  359. package/src/sextant/keys.ts +0 -521
  360. package/src/sextant/layout.ts +0 -86
  361. package/src/sextant/local-commands.ts +0 -169
  362. package/src/sextant/market-source.ts +0 -287
  363. package/src/sextant/mentions.ts +0 -200
  364. package/src/sextant/message-hits.ts +0 -26
  365. package/src/sextant/model.ts +0 -387
  366. package/src/sextant/overlays.ts +0 -456
  367. package/src/sextant/panel-hits.ts +0 -38
  368. package/src/sextant/pet.ts +0 -399
  369. package/src/sextant/screen.ts +0 -324
  370. package/src/sextant/scroll-hits.ts +0 -66
  371. package/src/sextant/scrollbar.ts +0 -82
  372. package/src/sextant/sextant-bridge.ts +0 -174
  373. package/src/sextant/sextant-cards.ts +0 -142
  374. package/src/sextant/sextant-diff-base.ts +0 -63
  375. package/src/sextant/sextant-files.ts +0 -154
  376. package/src/sextant/sextant-frame-loop.ts +0 -335
  377. package/src/sextant/sextant-renderer.ts +0 -574
  378. package/src/sextant/sextant-repo.ts +0 -140
  379. package/src/sextant/theme.ts +0 -66
  380. package/src/sextant/tool-rows.ts +0 -189
  381. package/src/sextant/types.ts +0 -493
  382. package/src/skills/index.ts +0 -387
  383. package/src/skills/pack.ts +0 -220
  384. package/src/skills/spec.ts +0 -162
  385. package/src/skills/tools.ts +0 -69
  386. package/src/skills/versioned.ts +0 -227
  387. package/src/telemetry/otel-export.ts +0 -122
  388. package/src/telemetry/otel-lanes.ts +0 -89
  389. package/src/telemetry/otel-logs.ts +0 -131
  390. package/src/telemetry/otel-metrics.ts +0 -136
  391. package/src/telemetry/otel.ts +0 -397
  392. package/src/telemetry/otlp.ts +0 -76
  393. package/src/tools/ask-user.ts +0 -156
  394. package/src/tools/bash-bg.ts +0 -94
  395. package/src/tools/bash-jobs.ts +0 -237
  396. package/src/tools/design.ts +0 -151
  397. package/src/tools/evalcell.ts +0 -338
  398. package/src/tools/html-text.ts +0 -139
  399. package/src/tools/provider.ts +0 -149
  400. package/src/tools/task.ts +0 -250
  401. package/src/tools/todo.ts +0 -320
  402. package/src/tools/webfetch.ts +0 -332
  403. package/src/tools/websearch.ts +0 -359
  404. package/src/tui/agents-cmd.ts +0 -41
  405. package/src/tui/app.ts +0 -749
  406. package/src/tui/attach.ts +0 -127
  407. package/src/tui/boot-notes.ts +0 -41
  408. package/src/tui/builtin-prompts.ts +0 -59
  409. package/src/tui/checkpoints-cmd.ts +0 -70
  410. package/src/tui/clipboard-image.ts +0 -81
  411. package/src/tui/clipboard.ts +0 -78
  412. package/src/tui/commands.ts +0 -283
  413. package/src/tui/config-view.ts +0 -53
  414. package/src/tui/context-cmds.ts +0 -282
  415. package/src/tui/cost.ts +0 -108
  416. package/src/tui/crash-guard.ts +0 -173
  417. package/src/tui/focus-terminal.ts +0 -34
  418. package/src/tui/git-cmds.ts +0 -273
  419. package/src/tui/git-plain.ts +0 -58
  420. package/src/tui/info-cmd.ts +0 -150
  421. package/src/tui/input-plain.ts +0 -76
  422. package/src/tui/mcp-cmd.ts +0 -128
  423. package/src/tui/memory-note.ts +0 -77
  424. package/src/tui/modes-cmd.ts +0 -45
  425. package/src/tui/notify-seq.ts +0 -100
  426. package/src/tui/notify.ts +0 -318
  427. package/src/tui/overlays.ts +0 -97
  428. package/src/tui/pi-renderer.ts +0 -428
  429. package/src/tui/providers-cmd.ts +0 -377
  430. package/src/tui/reasoning-view.ts +0 -56
  431. package/src/tui/renderer.ts +0 -128
  432. package/src/tui/replay-marker.ts +0 -29
  433. package/src/tui/session-cmd.ts +0 -148
  434. package/src/tui/session-manage.ts +0 -95
  435. package/src/tui/sextant-attach.ts +0 -102
  436. package/src/tui/sextant-io.ts +0 -202
  437. package/src/tui/sextant-smoke.ts +0 -110
  438. package/src/tui/shell-cmd.ts +0 -158
  439. package/src/tui/smoke.ts +0 -72
  440. package/src/tui/staged-terminal.ts +0 -50
  441. package/src/tui/startup.ts +0 -12
  442. package/src/tui/theme.ts +0 -59
  443. package/src/tui/todo-label.ts +0 -7
  444. package/src/tui/trust-card.ts +0 -107
  445. package/src/tui/tui-commands.ts +0 -87
  446. package/tsconfig.json +0 -30
  447. package/vendor/pi-tui/LICENSE +0 -21
  448. package/vendor/pi-tui/PATCHES.md +0 -12
  449. package/vendor/pi-tui/PROVENANCE.md +0 -12
  450. package/vendor/pi-tui/README.upstream.md +0 -854
  451. package/vendor/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  452. package/vendor/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  453. package/vendor/pi-tui/src/alt-screen-search.ts +0 -158
  454. package/vendor/pi-tui/src/autocomplete.ts +0 -827
  455. package/vendor/pi-tui/src/components/alt-screen-flash.ts +0 -52
  456. package/vendor/pi-tui/src/components/box.ts +0 -138
  457. package/vendor/pi-tui/src/components/cancellable-loader.ts +0 -41
  458. package/vendor/pi-tui/src/components/editor.ts +0 -2364
  459. package/vendor/pi-tui/src/components/h-stack.ts +0 -45
  460. package/vendor/pi-tui/src/components/image.ts +0 -128
  461. package/vendor/pi-tui/src/components/input.ts +0 -448
  462. package/vendor/pi-tui/src/components/loader.ts +0 -93
  463. package/vendor/pi-tui/src/components/markdown.ts +0 -1016
  464. package/vendor/pi-tui/src/components/scroll-view.ts +0 -217
  465. package/vendor/pi-tui/src/components/select-list.ts +0 -230
  466. package/vendor/pi-tui/src/components/settings-list.ts +0 -277
  467. package/vendor/pi-tui/src/components/spacer.ts +0 -29
  468. package/vendor/pi-tui/src/components/stack.ts +0 -155
  469. package/vendor/pi-tui/src/components/text.ts +0 -108
  470. package/vendor/pi-tui/src/components/truncated-text.ts +0 -66
  471. package/vendor/pi-tui/src/components/v-stack.ts +0 -34
  472. package/vendor/pi-tui/src/editor-component.ts +0 -75
  473. package/vendor/pi-tui/src/fuzzy.ts +0 -138
  474. package/vendor/pi-tui/src/index.ts +0 -149
  475. package/vendor/pi-tui/src/keybindings.ts +0 -321
  476. package/vendor/pi-tui/src/keys.ts +0 -1402
  477. package/vendor/pi-tui/src/kill-ring.ts +0 -47
  478. package/vendor/pi-tui/src/latex.ts +0 -1381
  479. package/vendor/pi-tui/src/layout-node.ts +0 -52
  480. package/vendor/pi-tui/src/layout.ts +0 -411
  481. package/vendor/pi-tui/src/native-modifiers.ts +0 -60
  482. package/vendor/pi-tui/src/native-module-path.ts +0 -32
  483. package/vendor/pi-tui/src/stdin-buffer.ts +0 -445
  484. package/vendor/pi-tui/src/terminal-colors.ts +0 -74
  485. package/vendor/pi-tui/src/terminal-image.ts +0 -701
  486. package/vendor/pi-tui/src/terminal.ts +0 -554
  487. package/vendor/pi-tui/src/tui-alt-screen.ts +0 -1379
  488. package/vendor/pi-tui/src/tui-main-screen.ts +0 -655
  489. package/vendor/pi-tui/src/tui.ts +0 -1264
  490. package/vendor/pi-tui/src/undo-stack.ts +0 -29
  491. package/vendor/pi-tui/src/utils.ts +0 -1327
  492. package/vendor/pi-tui/src/word-navigation.ts +0 -118
  493. package/vendor/pi-tui/test/test-themes.ts +0 -39
  494. package/vendor/pi-tui/test/virtual-terminal.ts +0 -219
  495. /package/{src/providers → dist/cli}/models-index.json +0 -0
package/src/cli/help.ts DELETED
@@ -1,293 +0,0 @@
1
- /** `rovecode help [topic]` — short and grouped by default; `env`, `advanced` and `all` hold the full
2
- * reference. Pure text so it is unit-testable (main.ts dispatches on import). Wording follows
3
- * core/voice.ts: plain sentences, the two permission modes by their screen names. */
4
-
5
- import { MODE_ASK, MODE_AUTO } from "../core/voice.ts";
6
-
7
- export const HELP_TOPICS = ["", "env", "advanced", "all"] as const;
8
- export type HelpTopic = (typeof HELP_TOPICS)[number];
9
-
10
- const SHORT = `rovecode — a coding agent in your terminal
11
-
12
- start here
13
- rovecode open the cockpit (--classic: the plain chat · --plain: a bare REPL)
14
- rovecode "fix the failing test" one task, then exit
15
- rovecode connect connect a model: pick a provider, paste the key (hidden), one test call
16
- rovecode connect <id> [<url>] the same in one line — rovecode connect anthropic · rovecode connect me https://host/v1
17
-
18
- everyday
19
- rovecode run "<prompt>" --yolo one task in ${MODE_AUTO} mode
20
- rovecode run "<prompt>" --output json machine-readable result (ndjson: one line per event)
21
- rovecode model pick the default from a menu · model use <provider/model> sets it (--project pins it here)
22
- rovecode market search <q> MCP servers, skills and plugins on one shelf; install any with market install <id>
23
- --effort auto|off|low|medium|high how hard I think before answering (/effort in the TUI, ROVECODE_EFFORT=…)
24
- rovecode provider list|add|remove|test endpoints in ~/.rovecode/providers.json — live, no restart
25
- rovecode auth set <id> · auth login <id> store an API key (hidden) · sign in (github-copilot, openrouter, openai) · list · remove
26
- rovecode doctor · --resume <id> what is wrong with my setup, in one pass · reopen a session (export <id> → markdown)
27
-
28
- safety
29
- ${MODE_ASK} (default) I read freely; I ask before every write, shell command and subagent
30
- accept edits (--accept-edits) I write inside this folder without asking; shell, subagents,
31
- network and writes OUTSIDE it still ask (/accept-edits, ROVECODE_ACCEPT_EDITS=1)
32
- auto (--yolo, ROVECODE_YOLO=1) I never ask — deny rules and plan mode still hold
33
- /yolo --save · /accept-edits --save make the level stick (add --project to pin it to this repo);
34
- without --save a toggle lasts one session. ROVECODE_PERMISSION=ask|accept-edits|auto
35
- plan mode (/plan in the TUI) read-only: I can look and plan, not change anything
36
-
37
- more
38
- rovecode help env every ROVECODE_* setting (incl. the bash sandbox rungs)
39
- rovecode help advanced market · context · mcp · plugins · acp · serve · gauntlet · bench · trace · tools
40
- rovecode help all everything on one page`;
41
-
42
- const ADVANCED = `advanced — the full command reference
43
- rovecode interactive TUI chat — the full cockpit (files · code · messages · plan · usage · pet)
44
- on a colour TTY of at least 100x30 (truecolor, or 256 colours through the
45
- quantizer), else the classic chat;
46
- --classic forces the classic chat · --pet <name> names the pet · --plain = readline REPL
47
- --no-intro (or ROVECODE_INTRO=0) skips the ~0.9s opening animation
48
- rovecode chat · rovecode repl the same as bare rovecode (repl still needs --plain for the readline REPL)
49
- rovecode --help | -h this help (only with no command in front of it) · rovecode --version prints the
50
- version to stdout and the update check’s answer to stderr
51
- rovecode --resume <id> open the TUI resuming a session (full id or unique prefix); an unknown, ambiguous or
52
- malformed id is refused with the reason (exit 2) — never a new session under that name
53
- rovecode --continue reopen the newest session that holds something (also: --resume with no id);
54
- nothing to continue from → a fresh session, and the startup card says so
55
- rovecode "prompt" one-shot task (same as run; a lone path-shaped word — ./x, x.ts, an existing
56
- name — is confirmed on a TTY and refused with exit 2 off one: use "rovecode run" to send it)
57
- rovecode setup connect a model step by step (TTY only; piped stdin prints the recipe and exits 2)
58
- TUI: /agents list the subagent definitions loaded from .rovecode/agents/*.md (the bare /agents
59
- is the crew board) · /config [all] the settings this session loaded
60
- rovecode connect the same wizard when given no arguments
61
- rovecode connect <id> [<baseUrl>] [--model <id>] [--key | --key-stdin | --key-env NAME | --no-key]
62
- [--protocol openai|anthropic] [--project] [--no-test]
63
- one line: register the endpoint, store the key, pick the model, one tiny real
64
- call, persist the default. A key is never a flag value (shell history, ps):
65
- --key prompts hidden, --key-stdin reads one piped line (CI), --key-env names
66
- an env var, --no-key marks a local server.
67
- exit 0 connected · 1 the test call failed (config still written) · 2 usage
68
- rovecode smoke-tui render check: full pipeline into an 80x24 terminal emulator (dev-only)
69
- rovecode smoke-tui --sextant render check: the full cockpit at 160x44 through the pipeline (no emulator needed)
70
- rovecode run "<prompt>" run an agent task (--yolo = ${MODE_AUTO}; with no provider configured this is a
71
- startup error, exit 2 — ROVECODE_MOCK=1 asks for the scripted mock on purpose)
72
- "/name args" expands a custom command (.rovecode/commands/<name>.md, else ~/.rovecode/commands)
73
- the way the TUI does; an unknown /name is sent verbatim; model:/mode: frontmatter is
74
- TUI-only and not applied headlessly
75
- piped stdin is appended to the prompt as a fenced block — git diff | rovecode run "review this"
76
- (never read from a terminal; --no-stdin ignores it; an open pipe that sends nothing
77
- for 3 s is skipped with a note; capped at 1 MB)
78
- --max-turns N · --max-seconds S|off ceilings on one run; a hit ends it cleanly with status
79
- "budget" (exit 1) and the work so far, instead of an external kill. Headless runs
80
- default to a 20-minute wall clock; --max-seconds off removes it
81
- --max-cost D|off a spend ceiling in dollars for one run, priced from each turn's usage as it lands
82
- (the catalog's rates for the model that served it); the same clean "budget" end.
83
- A turn the catalog cannot price adds nothing and is counted in the summary
84
- --output <text|json|ndjson> text (default): progress + the final answer on stdout
85
- json: exactly ONE result object on stdout {status, summary, sessionId,
86
- model:{provider,model}, origin (served model|null), usage:{input,output,cacheRead,
87
- cacheWrite}, costUsd (null when unpriced), toolCalls:[{tool,ok,ms?}], durationMs, exitCode}
88
- ndjson: one JSON line per RunEvent, then a final {type:"result"} line
89
- json/ndjson: stdout carries only JSON, progress goes to stderr
90
- exit codes: 0 done · 1 error/budget · 2 usage/startup error · 130 aborted (Ctrl-C)
91
- exit 2 = usage/startup error (bad --output value, sandbox misconfig or unavailable rung):
92
- one stderr line, nothing on stdout; --output=<mode> is accepted as well
93
- rovecode bench run cross-harness micro-benchmarks (edits, sessions)
94
- rovecode gauntlet run the adversarial evaluation suite (offline, scripted model)
95
- rovecode gauntlet --live the gauntlet's tasks minus loop-guard (9) against the configured REAL model through
96
- the real prompt — --model <provider/model> and --effort pick; compare pass/calls/tokens
97
- rovecode tools list registered tools
98
- rovecode plugin list plugins in ~/.rovecode/plugins and .rovecode/plugins with status (active · disabled · untrusted · broken)
99
- rovecode plugin add <folder|git-url> [--project] [--force] install a plugin folder (tools, hooks, commands, skills, MCP in one manifest)
100
- rovecode plugin trust <name> approve a PROJECT plugin's current files on this machine (show <name> lists them first)
101
- rovecode plugin remove|enable|disable|untrust|show <name> (docs/plugins.md; restart to load — read once per process, like hooks)
102
- rovecode mcp search [query] MCP servers to install: the curated shelf, then the official registry (cached a day)
103
- rovecode mcp info <name> publisher, version, the exact command or URL, the keys it asks for
104
- rovecode mcp add <name> [--project] [--pick N] [--as <name>] [--yes] [--force] show the plan, ask for keys
105
- masked, write ~/.rovecode/mcp.json (or .rovecode/mcp.json); --as renames it, --force replaces an entry
106
- rovecode mcp remove <name> [--project] · rovecode mcp list (docs/mcp-market.md; /mcp does the same inside the TUI)
107
- rovecode mcp show this repo's .rovecode/mcp.json + .mcp.json: exact commands/URLs, env names, trusted or not
108
- rovecode mcp trust [--yes] · rovecode mcp untrust approve those files as they are now, or withdraw that
109
- approval — until trusted nothing in them loads; your own add --project is trusted as you approve it
110
- rovecode trust show every project file that could make rovecode RUN or IMPORT something, with what it would do:
111
- .rovecode/settings.json (verify, lsp, notify_command), hooks.ts, sandbox.json, mcp.json, .mcp.json
112
- rovecode trust [--yes] · rovecode trust untrust approve them as they are now (one store with mcp trust: path → sha256,
113
- an edit asks again) — until trusted a cloned repo's files contribute NOTHING; the user files never ask
114
- rovecode skills list [--json] every installed skill, its scope and path — and every SKILL.md the loader
115
- refused or warned about, which is the only place those warnings are visible
116
- rovecode skills validate <dir> the agentskills.io spec check, strictly: findings on stderr, exit 1, nothing written
117
- rovecode skills pack <dir> [--out <file>] [--force] a <name>.tar.gz of one skill (a symlink inside refuses the pack)
118
- rovecode skills install <dir|file.tar.gz|http(s)-url> [--user] [--force] staged, validated, then renamed into
119
- place; a URL goes through the same SSRF guard as web_fetch, on the URL AND every redirect hop
120
- rovecode market search [query] [--kind mcp|skill|plugin] one shelf over MCP servers, skills and plugins
121
- rovecode market info <id> publisher, licence, version, exactly what an install would write
122
- rovecode market docs <id> the item's own documentation, as the catalog carries it — no network
123
- rovecode market install <id|kind:id|git-url|npm-pkg> [--project] [--ref <branch|tag|commit>] [--yes]
124
- plan first, write only after you agree
125
- rovecode market list|remove|update|sources what is installed, what is behind, where each shelf came from
126
- rovecode market verify [id] re-hash what is installed and say what has changed since
127
- rovecode market validate <path|url> [--kind skill|plugin] check a catalog before anyone trusts it
128
- (docs/market.md; /market does the same inside the TUI; every subcommand takes --json)
129
- rovecode doctor [--json] [--no-connect] one pass over the setup: home (and a legacy ~/.cumulus), the default
130
- provider and where its key comes from (names, never values), the permission level and
131
- which rung set it, git/node/npm/npx/uvx on PATH with what each absence costs HERE,
132
- every configured MCP server (loads? skipped for a placeholder or an unset variable?
133
- untrusted file? connects?), the shadow checkpoints' size — and a list of what it did
134
- NOT check. exit 0 nothing broken · 1 something to fix · a missing provider is a note
135
- rovecode context [session] [--json] what fills the window, item by item, and how far our estimate is from
136
- the provider's own count of the same prompt (cache reads included — they are the prompt too)
137
- (--exact asks Anthropic to count it for real; --no-runtime skips the system prompt and tool schemas)
138
- rovecode auth set <provider> [--key <name>] store an API key (prompts on stdin; ~/.rovecode/credentials.json)
139
- rovecode auth login <provider> OAuth sign-in, stored next to the keys: github-copilot (GitHub device code — open the URL,
140
- type the code) · openrouter (PKCE in your browser, back to a loopback port on this machine) ·
141
- openai (ChatGPT device code; the token is sent over the Codex Responses wire only — see
142
- ROVECODE_OPENAI_WIRE). anthropic is refused (the Claude subscription login is an owner
143
- decision, not a port). Ctrl-C cancels (exit 130)
144
- rovecode auth list stored providers: kind (api | oauth), key name, redacted value, and for oauth the expiry
145
- rovecode auth remove <provider> delete a stored credential (api or oauth)
146
- rovecode provider list [--all] providers with a key + every providers.json entry, and the default provider/model
147
- rovecode provider add <id> <baseUrl> [--protocol openai|anthropic] [--key-env NAME] [--model <id>] [--no-key]
148
- [--project | --user | --scope user|project] [--key]
149
- register any OpenAI-compatible or Anthropic endpoint in ~/.rovecode/providers.json
150
- (--project: ./.rovecode/providers.json); --key prompts for the secret (never echoed);
151
- running TUIs/servers pick the change up live — no restart
152
- rovecode provider remove <id> delete a providers.json entry (built-ins: rovecode auth remove <id> drops the key)
153
- rovecode provider test <id> [model] one tiny real call — proves url + key + model together
154
- rovecode model list [provider] model ids (providers.json "models" or the endpoint's /models); * = current default
155
- rovecode models [provider] alias for model list
156
- rovecode model no arguments on a terminal: every configured provider's models in one
157
- numbered menu, the current one first; a pipe gets the usage line instead
158
- rovecode model use <provider/model> [--project] persist the default (in the TUI: /model <provider/model> --save)
159
- rovecode model show [provider/model] the model, its protocol, and the exact thinking field each /effort
160
- level puts on the wire (docs/thinking.md)
161
- rovecode sessions [--json] this folder's sessions, newest first: id · created · turns · first prompt (or the title);
162
- reads only the sessions that hold something, and a footer counts the empty session
163
- directories (a meta.json, nothing ever written) so they stay visible without being rows
164
- rovecode sessions rename <id|prefix> <title…> name a session (one line, ≤ 120 chars; shown in place of the first prompt)
165
- rovecode sessions delete <id|prefix> [--yes] remove the session AND its checkpoints shadow dir; asks y/N on a
166
- terminal, needs --yes off one; prints every path it removed
167
- rovecode sessions fork <id|prefix> [--json] copy a session (entries, meta, attachments; up to 256 MB of attachments)
168
- into a new id titled "… (fork #N)" — the source is untouched
169
- rovecode sessions search <terms…> [--json] title hits first, then the recall index (all terms, exact before partial)
170
- every id here is exact or a unique prefix: ambiguous or unknown → exit 2 naming the
171
- candidates, nothing created or removed
172
- rovecode trace <id|prefix> the session's messages, one line each (role · first 120 chars · tool-call count)
173
- rovecode export <session> write a session as markdown (--json: raw JSONL copy; --out <path>; --force)
174
- rovecode eval alias for gauntlet
175
- rovecode acp Agent Client Protocol v1 endpoint over stdio (Zed/JetBrains)
176
- rovecode serve headless HTTP server (ROVECODE_PORT, default 4100; loopback-only)`;
177
-
178
- const ENV = `env — every ROVECODE_* setting
179
- ROVECODE_BASE_URL any OpenAI-compatible or Anthropic endpoint
180
- ROVECODE_API_KEY API key (falls back to OPENAI_API_KEY)
181
- ROVECODE_MODEL model id (e.g. zai-org/glm-5.3)
182
- ROVECODE_MODEL_<ROLE> role fallback chain, comma-separated provider/model list; on 429/5xx
183
- the next candidate serves. Roles: DEFAULT SMOL PLAN COMMIT TASK
184
- (e.g. ROVECODE_MODEL_DEFAULT=kaesra/zai-org/glm-5.3-flash,openai/gpt-4o-mini)
185
- ROVECODE_STREAM streaming is on by default (both protocols); off|json|0|false|none use the one-shot JSON
186
- adapters; sse forces the raw SSE adapter, without the tool-call middleware, for one-shot runs
187
- ROVECODE_OPENAI_WIRE responses | chat — which OpenAI wire a request takes. Unset: a stored ChatGPT login
188
- (auth login openai) always takes /responses; provider openai takes /responses for models the
189
- catalog does not mark non-reasoning (gpt-5, o3, ids it does not know) and /chat/completions
190
- for the gpt-4o class; every other provider stays on /chat/completions. Not done yet on
191
- /responses: the model's own reasoning items are NOT sent back to it on the next turn (each
192
- turn reasons afresh; reasoning text still streams live) — that needs a reasoning part in
193
- the message store, a change across the session store, export and both other wires
194
- ROVECODE_EFFORT auto|off|low|medium|high thinking before the answer (default auto: the provider's
195
- own default stands). Anthropic gets output_config.effort or a thinking budget,
196
- whichever the model takes (learned from its own 400, then remembered); OpenAI gets
197
- reasoning_effort. Thinking is billed as output and delays the first word.
198
- ROVECODE_PROFILE model profile: off, or an id (glm-5.3 | glm-5.3-plain) whose PROMPT section is forced onto
199
- every model (request fields always follow the model id). Unset = by model id: GLM-5.3 / -Flash
200
- get the Claude Sonnet 5 persona + the working agreement appended to the system prompt
201
- (glm-5.3-plain = agreement only) plus, on OpenAI-compatible providers, Z.ai's
202
- request fields (thinking always on, reasoning_effort low|high|max — off leaves the endpoint's
203
- max, medium rounds up to high, high means max — and tool_stream when streaming). The text
204
- comes from .rovecode/profiles/<id>.md (project) or ~/.rovecode/profiles/<id>.md when present.
205
- ROVECODE_DESIGN off drops the interface-design section from the system prompt (for runs with no UI in
206
- them). Otherwise every run carries it: propose three distinct directions before the first
207
- UI in a project, let the human choose, record it with design_direction, then build to it.
208
- The section prescribes NO palette, typeface or layout -- there is no default look, on
209
- purpose -- and names the patterns to climb out of (amber accents, the reflex full-viewport
210
- hero, Inter/Roboto/Poppins, hairlines round everything, all-square corners, everything
211
- centred, violet gradients). The choice lives in .rovecode/design.json; design_audit counts
212
- those patterns in the files you touched and checks them against it.
213
- ROVECODE_PERMISSION ask|accept-edits|auto — the level this run starts at. Ladder, widest first:
214
- a CLI flag, then this, then <cwd>/.rovecode/settings.json, then ~/.rovecode/settings.json,
215
- then "ask". Write the files with /yolo --save or /accept-edits --save [--project].
216
- ROVECODE_ACCEPT_EDITS=1 start in accept-edits (writes inside the workspace do not ask)
217
- ROVECODE_YOLO=1 ${MODE_AUTO}: allow all tool actions
218
- ROVECODE_TUI cockpit | classic — force the TUI surface (the cockpit still needs a TTY; --classic wins)
219
- ROVECODE_THEME cockpit palette: night (default) | ember | contrast (/theme switches it live)
220
- ROVECODE_PET=0 hide the pet panel (rovecode); --pet <name> renames it
221
- ROVECODE_NOTIFY off | auto | bell | osc9 | osc777 — how the TUI tells you a run ended or a card needs you, ONLY while
222
- the terminal is unfocused (auto = an OSC 9 toast on Ghostty/iTerm2/kitty/Warp/WezTerm, else the bell;
223
- settings.json "bell": false is off; a terminal that never reports focus stays silent)
224
- ROVECODE_NOTIFY_WHEN unfocused (default; the terminal must report focus — Windows Terminal ≥ 1.14, Ghostty, kitty, WezTerm,
225
- iTerm2, xterm, VTE) | always (every run, as before 2026-09-07)
226
- ROVECODE_NOTIFY_COMMAND a desktop hook under the same gate: argv as a JSON string array (["notify-send","rovecode"]) or
227
- whitespace-split words, the JSON payload appended as its last argument; never a shell. From a project
228
- settings.json it applies only once that file is trusted; the user file and this variable always may
229
- ROVECODE_SANDBOX executor rung for bash: direct (default) | wsl | docker; beats .rovecode/sandbox.json {"rung","dockerImage"}
230
- ROVECODE_SANDBOX_IMAGE image for the docker rung (default debian:stable-slim; must contain bash)
231
- ROVECODE_RETRY_MAX same-model retries after a 429/5xx/transport failure (default 3 = 4 attempts; 0 = off)
232
- The wait is announced live, while it is happening, not in a summary after the run
233
- ROVECODE_RETRY_BASE_MS cap of the FIRST backoff, ms (default 1000; full jitter; a Retry-After hint is a floor)
234
- It doubles per attempt up to 20 s, and a server hint can raise the wait, never shorten it
235
- ROVECODE_FIRST_BYTE_TIMEOUT_MS how long a provider may go without ANY response before the request
236
- counts as failed and is retried (default 60000). Only the FIRST byte is on this clock:
237
- once the model is talking, the body may take as long as it takes
238
- ROVECODE_WEBFETCH_TIMEOUT_MS web_fetch request timeout in ms (default 30000)
239
- EXA_API_KEY optional Exa key for web_search; without it the search runs keyless against the
240
- same hosted endpoint. Read only where the tool is registered, never stored, and
241
- stripped from every URL and error line the tool prints
242
- ROVECODE_WEBFETCH_ALLOW_PRIVATE=1 let web_fetch reach loopback/private hosts (SSRF guard escape for local dev)
243
- ROVECODE_COMPACTION history compaction strategy: head-summarize (default) | keep-window | provider-native
244
- /compact runs the same set on demand (TUI + --plain); on this build it keeps
245
- the window and notes "no summarizer wired on this surface" — a manual compaction
246
- is durable (new session branch, marker persisted) even when it falls back
247
- ROVECODE_TASKS_MAX concurrent background tasks (default 3; further task starts queue FIFO)
248
- ROVECODE_OTEL_ENDPOINT OTLP/HTTP collector, e.g. http://host:4318 — one trace per run (run ⊃ turn ⊃ tool); unset = off
249
- ROVECODE_OTEL_HEADERS extra OTLP headers as k=v,k2=v2 (e.g. authorization=Bearer …)
250
- ROVECODE_REFLECTION=0 disable reflection nudges after failed edits; ROVECODE_REFLECTION_MAX caps them per run (default 2)
251
- ROVECODE_PORT port for rovecode serve (default 4100; loopback-only)
252
- ROVECODE_IMAGE_MAX_BYTES per-image cap in bytes for pasted and attached images (default 5 MB;
253
- at most 8 images per message). Over it, the image is refused by name, not silently dropped.
254
- ROVECODE_REPOMAP_TOKENS repo-map budget in tokens (default 1024); ROVECODE_NO_REPOMAP=1 drops the map entirely
255
- ROVECODE_HOOK_TIMEOUT_MS per-hook-call budget in ms (default 5000); ROVECODE_NO_HOOKS=1 skips hook files
256
- ROVECODE_PLUGIN_TIMEOUT_MS per-plugin import + tools() budget in ms (default 5000);
257
- ROVECODE_NO_PLUGINS=1 skips plugin discovery
258
- ROVECODE_NO_CHECKPOINTS=1 turn off the shadow-git checkpoints taken after mutating tools
259
- ROVECODE_TOOL_MIDDLEWARE=1 force the text tool-call protocol (a prompt block + a parser) even for a model
260
- the catalog says has native tool calling; ROVECODE_NO_TOOL_MIDDLEWARE=1 forces native only
261
- ROVECODE_EVAL_CELL=1 register the persistent eval cell tool (a REPL that keeps state between calls)
262
- ROVECODE_MAX_TURNS turn ceiling for one run, every surface (TUI included); a hit ends it with status
263
- "budget" and exit 1
264
- ROVECODE_MAX_SECONDS the same as a wall clock, or "off". Every surface honours it, but only
265
- one-shot runs have a DEFAULT (1200 s) — the TUI has no clock unless this sets one
266
- ROVECODE_MAX_COST the same in dollars for one run (--max-cost on a one-shot run), or "off"; no default
267
- ROVECODE_FINISH_CHECK=0 turn off the once-per-run finish check: when the model stops right after a failed tool
268
- call or an unanswered question, it is asked ONCE to finish or say what is left; the next
269
- reply ends the run either way. "done · …" on run_end still names what was left
270
- ROVECODE_VERIFY=1 turn ON the verify gate (off by default): a run that wrote files runs the project's configured
271
- check before "done"; a failure goes back to the model once, then "done · check failed (…)" says
272
- so. No check configured → nothing runs, run_end says "not verified". ROVECODE_VERIFY_TIMEOUT=<s> (120)
273
- ROVECODE_LSP the language-server table behind the per-edit diagnostics gate: "ext[,ext]=argv;…" merged over
274
- the built-in ".ts,.tsx,.mts,.cts,.js,.jsx,.mjs,.cjs=typescript-language-server --stdio"; "ext=off"
275
- drops one, "off" drops all; overrides the settings key lsp. A server not on PATH is named at boot
276
- ROVECODE_HOME credentials + user-scope providers/commands dir (default ~/.rovecode)
277
- providers: built in — kaesra openai anthropic deepseek groq openrouter ollama lmstudio
278
- together mistral cerebras fireworks perplexity xai moondream vllm
279
- plus anything in ~/.rovecode/providers.json or ./.rovecode/providers.json (rovecode provider add)
280
- key: rovecode auth set <id>, or set <ID>_API_KEY — stored creds beat env;
281
- default: providers.json "default" ("provider/model"), ROVECODE_MODEL overrides the model,
282
- ROVECODE_BASE_URL/ROVECODE_API_KEY always wins`;
283
-
284
- /** the text for a topic; an unknown topic gets the short page plus a one-line note */
285
- export function helpText(topic = ""): string {
286
- switch (topic) {
287
- case "": return SHORT;
288
- case "env": return ENV;
289
- case "advanced": return ADVANCED;
290
- case "all": return `${SHORT}\n\n${ADVANCED}\n\n${ENV}`;
291
- default: return `${SHORT}\n\nno help topic "${topic}" — topics: env · advanced · all`;
292
- }
293
- }
@@ -1,8 +0,0 @@
1
- /** Returns true when argv will start the interactive TUI (as opposed to a lightweight subcommand).
2
- * Used by bin/rovecode.ts to decide whether to route through the pre-bundled dist/cli/main.js. */
3
- import { parseCli } from "./dispatch.ts";
4
-
5
- export function isTuiInvocation(argv: string[]): boolean {
6
- const { cmd, plain } = parseCli(argv);
7
- return (cmd === "" || cmd === "chat" || cmd === "repl") && !plain;
8
- }