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/core/intro.ts DELETED
@@ -1,266 +0,0 @@
1
- /** The opening intro: ROVECODE assembles itself in the middle of the terminal.
2
- *
3
- * Four acts, all of them Berkay's picks (2026-09-06). The mark fills in left to right — chosen over a
4
- * checklist that ticks itself off and a single progress bar. A hairline frame draws inward from the four
5
- * corners until the halves meet — chosen over a shimmer pass and a rain of blocks. The cloud mascot leans
6
- * down out of the frame's top line — chosen over raining the letters into place and rising from the
7
- * bottom. Then the mark breathes once. Centred on a cleared screen, and it hands over to the session's
8
- * card (core/voice.ts).
9
- *
10
- * The CLI holds this screen until the runtime and interface are ready, not merely until their modules
11
- * are imported. The CLI waits for both the choreography and the prepared first frame, concurrently.
12
- * Fast boots still show the intro (~1.1s); slow boots hold the completed mark with a two-Hz activity line.
13
- * Standalone callers can still play the finite animation. Off for pipes, --plain, ROVECODE_INTRO=0
14
- * and --no-intro.
15
- *
16
- * It never reads stdin. Someone who starts typing immediately types into the terminal's buffer and the
17
- * TUI gets those keys when it begins reading — an intro that swallowed the first keystroke to offer a
18
- * skip would cost more than it saved. */
19
-
20
- /** ░ ▒ ▓ █ — a letter's brightness as the wave passes over it */
21
- const RAMP = ["░", "▒", "▓", "█"] as const;
22
-
23
- /** ROVECODE, two rows per letter, three columns each. Only the full blocks take the ramp; the halves
24
- * (▀ ▄) are the letter's shape and stay put, which is what keeps the word readable at every step. */
25
- const LETTERS: readonly (readonly [string, string])[] = [
26
- ["█▀█", "█▀▄"], // R
27
- ["█▀█", "█▄█"], // O
28
- ["█ █", "▀▄▀"], // V
29
- ["█▀▀", "█▄▄"], // E
30
- ["█▀▀", "█▄▄"], // C
31
- ["█▀█", "█▄█"], // O
32
- ["█▀▄", "█▄▀"], // D
33
- ["█▀▀", "█▄▄"], // E
34
- ];
35
-
36
- /** columns the mark occupies: three per letter plus the gaps */
37
- export const MARK_COLS = LETTERS.length * 4 - 1;
38
- /** the frame sits this many columns clear of the mark on each side */
39
- const FRAME_PAD = 4;
40
- /** columns the frame's two horizontal runs cover between them. Kept EVEN so the two halves meet exactly
41
- * instead of leaving a one-column gap the eye reads as a mistake. */
42
- const FRAME_COLS = MARK_COLS + FRAME_PAD * 2 + ((MARK_COLS + FRAME_PAD * 2) % 2);
43
- /** columns each end of the frame grows per step — 3 makes the draw snappy without skipping */
44
- const FRAME_GROWTH = 3;
45
-
46
- /** The mascot, hanging down from behind the frame's top line — Berkay's pick over the cloud raining the
47
- * letters into place and rising from the bottom (2026-09-06).
48
- *
49
- * This is a COPY of SPRITE + FACE from sextant/pet.ts, not an import, and that is deliberate: importing
50
- * the sextant module here would pull the panel painter into the boot path of a process that has not
51
- * decided to draw panels yet, which is the opposite of the work that made startup cheap. The copy cannot
52
- * drift — test/unit/intro.test.ts asserts these rows are identical to the ones the TUI paints, so the
53
- * intro's cloud and the session's cloud are the same cloud or the suite fails. */
54
- const CLOUD_OUTLINE: readonly string[] = [
55
- " ╭────╮ ",
56
- " ╭───╯ ╰──╮ ",
57
- " ╭╯ ╰╮ ",
58
- " │ │ ",
59
- " ╰╮ ╭╯ ",
60
- " ╰───────────╯ ",
61
- ];
62
- /** the face's columns and rows, copied from pet.ts FACE. Placed by INDEX rather than typed into the art,
63
- * so an eye cannot end up one column off the anchor the TUI paints it on — which is exactly what happened
64
- * when these rows were written by hand. */
65
- const FACE_AT = { EYE_L: 6, EYE_R: 12, MOUTH: 9, EYE_ROW: 3, MOUTH_ROW: 4 } as const;
66
- const CLOUD: readonly string[] = CLOUD_OUTLINE.map((row, r) => {
67
- const cells = [...row];
68
- if (r === FACE_AT.EYE_ROW) { cells[FACE_AT.EYE_L] = "•"; cells[FACE_AT.EYE_R] = "•"; }
69
- if (r === FACE_AT.MOUTH_ROW) cells[FACE_AT.MOUTH] = "◡";
70
- return cells.join("");
71
- });
72
- export const CLOUD_COLS = 18;
73
- /** rows of cloud that hang BELOW the frame line once it has fully descended */
74
- const CLOUD_BODY = CLOUD.length - 1;
75
-
76
- /** the four acts, in steps */
77
- const SWEEP_STEPS = LETTERS.length + RAMP.length - 1; // the mark fills in
78
- const FRAME_STEPS = Math.ceil(FRAME_COLS / 2 / FRAME_GROWTH); // the corners reach the middle
79
- const CLOUD_STEPS = CLOUD.length; // the mascot leans over the line
80
- const BREATHE = [3, 2, 3] as const; // █ ▓ █, once
81
- export const INTRO_STEPS = SWEEP_STEPS + FRAME_STEPS + CLOUD_STEPS + BREATHE.length;
82
- /** how long the whole show takes when nothing interrupts it */
83
- export const INTRO_MS = 1100;
84
-
85
- /** the two mark rows at `step`; step 0 is the whole word at its faintest, SWEEP_STEPS is solid. Past the
86
- * sweep the mark holds, except for the breath at the very end. */
87
- export function introFrame(step: number): [string, string] {
88
- const breathIx = step - SWEEP_STEPS - FRAME_STEPS - CLOUD_STEPS;
89
- const held = breathIx >= 0 ? BREATHE[Math.min(breathIx, BREATHE.length - 1)]! : undefined;
90
- const rows: [string, string] = ["", ""];
91
- LETTERS.forEach((letter, i) => {
92
- const level = held ?? Math.max(0, Math.min(RAMP.length - 1, step - i));
93
- const shade = RAMP[level]!;
94
- for (const r of [0, 1] as const) rows[r] += (rows[r].length > 0 ? " " : "") + letter[r]!.replaceAll("█", shade);
95
- });
96
- return rows;
97
- }
98
-
99
- /** How far the cloud has leaned over the top line: 0 before it starts, CLOUD.length when it is all the
100
- * way out. It only begins once the frame has closed — one thing happens at a time. */
101
- export function cloudDescent(step: number): number {
102
- return Math.max(0, Math.min(CLOUD.length, step - SWEEP_STEPS - FRAME_STEPS));
103
- }
104
-
105
- /** The cloud's rows that hang BELOW the frame line, padded to a fixed count so the block below never
106
- * shifts as it comes down — the mark must not jump while the mascot arrives. */
107
- export function cloudRows(step: number): string[] {
108
- const d = cloudDescent(step);
109
- const shown = CLOUD.slice(1, Math.max(0, d));
110
- return [...shown, ...Array.from({ length: CLOUD_BODY - shown.length }, () => "")];
111
- }
112
-
113
- /** The cloud's FIRST row is drawn into the frame's top line rather than under it, which is what makes it
114
- * read as leaning over the edge instead of floating below it. Spaces in the sprite leave the line
115
- * showing through; the sprite's own glyphs cut into it. */
116
- export function mergeCloudIntoLine(line: string, step: number): string {
117
- if (cloudDescent(step) === 0 || line.length === 0) return line;
118
- const at = Math.max(0, Math.floor((line.length - CLOUD_COLS) / 2));
119
- // always the sprite's FIRST row: it is the cloud's crown, and it stays cut into the line while the body
120
- // appears underneath. Advancing it row by row instead made the line show the cloud's underside.
121
- const row = CLOUD[0]!;
122
- const chars = [...line];
123
- [...row].forEach((ch, i) => { if (ch !== " " && at + i < chars.length) chars[at + i] = ch; });
124
- return chars.join("");
125
- }
126
-
127
- /** the frame's top and bottom rows at `step`: two runs growing inward from the corners until they meet.
128
- * Empty strings before the mark has finished filling in — one thing happens at a time. */
129
- export function frameRows(step: number): [string, string] {
130
- const grown = step - SWEEP_STEPS;
131
- if (grown < 0) return ["", ""];
132
- const half = Math.min(FRAME_COLS / 2, Math.max(0, grown) * FRAME_GROWTH);
133
- if (half === 0) return ["", ""];
134
- const run = "─".repeat(Math.max(0, half - 1)); // the corner glyph is the half's first column
135
- const gap = Math.max(0, FRAME_COLS - half * 2);
136
- const line = (l: string, r: string) => `${l}${run}${" ".repeat(gap)}${run}${r}`;
137
- return [line("╭", "╮"), line("╰", "╯")];
138
- }
139
-
140
- export interface IntroOptions {
141
- /** where the frames go; injected in tests */
142
- write: (s: string) => void;
143
- /** false → nothing is written, ever. A pipe is not a screen. */
144
- tty: boolean;
145
- version?: string;
146
- columns?: number;
147
- rows?: number;
148
- /** CLI loading mode: stay visible after the sequence until finish(), with a low-frequency activity line. */
149
- holdUntilReady?: boolean;
150
- /** Live terminal dimensions and resize subscription; no stdin is read by the intro. */
151
- size?: () => { columns: number; rows: number };
152
- onResize?: (paint: () => void) => () => void;
153
- /** ms between steps; the default spreads INTRO_STEPS over INTRO_MS */
154
- frameMs?: number;
155
- setInterval?: (fn: () => void, ms: number) => unknown;
156
- clearInterval?: (h: unknown) => void;
157
- }
158
-
159
- /** rows the whole block occupies: frame top (the cloud’s crown cut into it), the cloud’s body, a blank,
160
- * the two mark rows, the version, the status line, the frame bottom */
161
- export const INTRO_ROWS = 7 + (CLOUD.length - 1);
162
-
163
- /** Is there room to play it? A terminal too narrow wraps the frame into nonsense; one too short scrolls
164
- * its own top away. Both were real — 34×24 overflowed by six columns, 40×10 painted thirteen lines — and
165
- * neither is worth degrading the animation for: the session’s card already has a prose form for a small
166
- * terminal, and no intro at all is better than a broken one. One row and one column of margin, so the
167
- * block is never flush against the edges. */
168
- export function introFits(columns: number, rows: number): boolean {
169
- return columns >= FRAME_COLS + 2 && rows >= INTRO_ROWS + 2;
170
- }
171
-
172
- export interface Intro {
173
- /** what the session is doing right now, under the mark; "" clears the line */
174
- status: (line: string) => void;
175
- /** The mark has actually played through. Does not clear it; slow preparation may still be running. */
176
- animationDone: Promise<void>;
177
- /** resolves after finish(), or after the finite sequence when holdUntilReady is false */
178
- done: Promise<void>;
179
- /** cut it short: paint the final state and stop. Safe to call twice, and after `done`. */
180
- finish: () => void;
181
- }
182
-
183
- const CLEAR_SCREEN = "\x1b[2J\x1b[H";
184
- const HIDE_CURSOR = "\x1b[?25l";
185
- const SHOW_CURSOR = "\x1b[?25h";
186
-
187
- /** Play the intro centred on a cleared screen. Off a terminal this is a no-op whose `done` is already
188
- * resolved, so callers do not branch — the check lives here, once. */
189
- export function startIntro(opts: IntroOptions): Intro {
190
- const size = opts.size ?? (() => ({ columns: opts.columns ?? 80, rows: opts.rows ?? 24 }));
191
- const initial = size();
192
- if (!opts.tty || !introFits(initial.columns, initial.rows)) return { status: () => {}, animationDone: Promise.resolve(), done: Promise.resolve(), finish: () => {} };
193
- const setI = opts.setInterval ?? setInterval;
194
- const clearI = opts.clearInterval ?? ((h: unknown) => clearInterval(h as ReturnType<typeof setInterval>));
195
- let step = 0, line = "", ended = false, holding = false, pulse = 0, handle: unknown = null;
196
- let paintedSize = initial;
197
- let unsubscribe: (() => void) | undefined;
198
- let settle: () => void = () => {};
199
- const done = new Promise<void>((r) => { settle = r; });
200
- let animationSettled: () => void = () => {};
201
- const animationDone = new Promise<void>((r) => { animationSettled = r; });
202
- const label = (): string => line && holding && !ended ? `${line} ${"·".repeat(pulse + 1)}` : line;
203
- const centred = (text: string, cols: number): string => {
204
- const clipped = [...text.replace(/\s+/g, " ")].slice(0, Math.max(0, cols - 2)).join("");
205
- return " ".repeat(Math.max(0, Math.floor((cols - clipped.length) / 2))) + clipped;
206
- };
207
- const paint = (): void => {
208
- const { columns: cols, rows } = paintedSize = size();
209
- if (!introFits(cols, rows)) { opts.write(CLEAR_SCREEN + HIDE_CURSOR); return; }
210
- const pad = (width: number): string => " ".repeat(Math.max(0, Math.floor((cols - width) / 2)));
211
- const markPad = pad(MARK_COLS), framePad = pad(FRAME_COLS);
212
- const cloudPad = framePad + " ".repeat(Math.max(0, Math.floor((FRAME_COLS - CLOUD_COLS) / 2)));
213
- const top = "\n".repeat(Math.max(0, Math.floor((rows - INTRO_ROWS) / 2)));
214
- const [markTop, markBottom] = introFrame(step);
215
- const [frameTop, frameBottom] = frameRows(step);
216
- const frameLine = (s: string) => (s.length > 0 ? `${framePad}${s}` : "");
217
- opts.write([
218
- CLEAR_SCREEN, HIDE_CURSOR, top,
219
- `${frameLine(mergeCloudIntoLine(frameTop, step))}\n`,
220
- cloudRows(step).map((r) => `${r.length > 0 ? cloudPad + r : ""}\n`).join(""),
221
- "\n",
222
- `${markPad}${markTop}\n${markPad}${markBottom}\n`,
223
- `${centred(opts.version ?? "", cols)}\n`,
224
- `${centred(label(), cols)}\n`,
225
- `${frameLine(frameBottom)}\n`,
226
- ].join(""));
227
- };
228
- const paintStatus = (): void => {
229
- if (ended) return;
230
- const s = size();
231
- if (s.columns !== paintedSize.columns || s.rows !== paintedSize.rows) { paint(); return; }
232
- if (!introFits(s.columns, s.rows)) return;
233
- const y = Math.max(0, Math.floor((s.rows - INTRO_ROWS) / 2)) + INTRO_ROWS - 1;
234
- const esc = String.fromCharCode(27);
235
- // Keep the logo still: slow boots repaint one short status row, not the entire terminal.
236
- opts.write(`${esc}[${y};1H${esc}[2K${centred(label(), s.columns)}`);
237
- };
238
- const end = (): void => {
239
- if (ended) return;
240
- ended = true;
241
- clearI(handle);
242
- unsubscribe?.();
243
- step = INTRO_STEPS;
244
- line = "";
245
- paint();
246
- opts.write(`${SHOW_CURSOR}${CLEAR_SCREEN}`);
247
- animationSettled();
248
- settle();
249
- };
250
-
251
- paint();
252
- unsubscribe = opts.onResize?.(() => { if (!ended) paint(); });
253
- handle = setI(() => {
254
- if (ended) return;
255
- if (step < INTRO_STEPS) { step += 1; paint(); if (step === INTRO_STEPS) animationSettled(); }
256
- else if (!opts.holdUntilReady) end();
257
- else {
258
- clearI(handle);
259
- holding = true;
260
- paintStatus();
261
- handle = setI(() => { pulse = (pulse + 1) % 3; paintStatus(); }, 500);
262
- }
263
- }, opts.frameMs ?? Math.round(INTRO_MS / INTRO_STEPS));
264
-
265
- return { status: (l: string) => { if (!ended && l !== line) { line = l; paintStatus(); } }, animationDone, done, finish: end };
266
- }