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
@@ -1,72 +0,0 @@
1
- /** Cloning at a ref, and the one subtle decision in it.
2
- *
3
- * `--ref` takes a branch, a tag or a commit, and git needs a DIFFERENT command for the last one:
4
- * `clone --depth 1 --branch <x>` works for a branch or a tag and fails for a bare commit, so a commit has
5
- * to go through `init` + `fetch --depth 1 <url> <sha>` + `checkout FETCH_HEAD`.
6
- *
7
- * We do not decide which one `<x>` is by looking at it. `/^[0-9a-f]{7,40}$/` is a guess, and a wrong guess
8
- * here installs the wrong tree silently: `abcdef` is a perfectly legal branch name, and a repository that
9
- * has one would be pinned to a commit that merely shares the spelling. Git's answer is a fact, so we ask
10
- * git: try the branch form, and use the commit form only when that fails.
11
- *
12
- * ORDER IS A DECISION, not a side effect. When a name is BOTH a branch and the short id of some commit,
13
- * the branch wins, because someone typing `--ref` almost always means a name. That is why the branch form
14
- * is tried first, and the manifest records `resolvedBy` so the question "was this a branch or a commit?"
15
- * has an answer afterwards rather than a shrug.
16
- *
17
- * One deliberate refusal: fetching a bare SHA needs `uploadpack.allowReachableSHA1InWant` on the server,
18
- * and plenty of hosts leave it off. When that is refused we STOP and say so. The alternative — quietly
19
- * dropping `--depth` and cloning the entire history — turns a pin into a very long download the person
20
- * did not ask for, and they would have no idea why. */
21
-
22
- export type Spawn = (cmd: string[], cwd: string) => Promise<{ code: number; stderr: string }>;
23
-
24
- export type ResolvedBy = "branch" | "commit" | "default";
25
-
26
- export interface CloneResult {
27
- ok: true;
28
- /** which form of the command actually produced the tree */
29
- resolvedBy: ResolvedBy;
30
- }
31
- export type CloneOutcome = CloneResult | { ok: false; error: string };
32
-
33
- /** the last line of git's complaint, which is the part a person can act on */
34
- const lastLine = (stderr: string): string => stderr.trim().split("\n").at(-1)?.trim() ?? "";
35
-
36
- /** a server that will not serve a bare commit says so in one of a few ways; all of them mean the same
37
- * thing to us, and none of them should be answered by fetching more */
38
- function refusesBareSha(stderr: string): boolean {
39
- return /allow.*sha1.*in.?want|not our ref|unadvertised object|Server does not allow request for unadvertised object/i.test(stderr);
40
- }
41
-
42
- /** Clone `url` into `dir` (which must exist and be empty), optionally at `ref`. */
43
- /** `--` before every positional, on purpose. git parses options wherever it finds them, so a value that
44
- * begins with a dash is read as an option no matter which slot it sits in: a ref or a URL spelled
45
- * `--upload-pack=...` becomes an instruction rather than a name. Catalog data cannot reach here in that
46
- * shape (`url()` filters it), but `market install <git-url>` and `--ref` come straight from a command
47
- * line. The marker costs one argument and says "what follows is a value", which is the claim we mean. */
48
- export async function cloneAtRef(spawn: Spawn, url: string, dir: string, ref?: string): Promise<CloneOutcome> {
49
- if (ref === undefined || ref.trim() === "") {
50
- const r = await spawn(["git", "clone", "--depth", "1", "--quiet", "--", url, "."], dir);
51
- return r.code === 0 ? { ok: true, resolvedBy: "default" } : { ok: false, error: `git clone failed (exit ${r.code})${lastLine(r.stderr) ? `: ${lastLine(r.stderr)}` : ""}` };
52
- }
53
-
54
- // 1. a branch or a tag — the common case, and the winner when a name is both
55
- const branch = await spawn(["git", "clone", "--depth", "1", "--quiet", "--branch", ref, "--", url, "."], dir);
56
- if (branch.code === 0) return { ok: true, resolvedBy: "branch" };
57
-
58
- // 2. a commit. Not a fallback for "anything went wrong": if the failure was the network or auth, the
59
- // fetch will fail the same way and we report THAT, not a misleading "no such ref".
60
- const init = await spawn(["git", "init", "--quiet"], dir);
61
- if (init.code !== 0) return { ok: false, error: `git init failed (exit ${init.code})${lastLine(init.stderr) ? `: ${lastLine(init.stderr)}` : ""}` };
62
- const fetch = await spawn(["git", "fetch", "--depth", "1", "--quiet", "--", url, ref], dir);
63
- if (fetch.code !== 0) {
64
- if (refusesBareSha(fetch.stderr)) {
65
- return { ok: false, error: `${url} will not serve the single commit ${ref} (the server has uploadpack.allowReachableSHA1InWant off) — give a branch or tag instead, or ask the host to enable it` };
66
- }
67
- return { ok: false, error: `"${ref}" is not a branch or tag there, and fetching it as a commit failed (exit ${fetch.code})${lastLine(fetch.stderr) ? `: ${lastLine(fetch.stderr)}` : ""}` };
68
- }
69
- const checkout = await spawn(["git", "checkout", "--quiet", "FETCH_HEAD"], dir);
70
- if (checkout.code !== 0) return { ok: false, error: `fetched ${ref} but could not check it out (exit ${checkout.code})${lastLine(checkout.stderr) ? `: ${lastLine(checkout.stderr)}` : ""}` };
71
- return { ok: true, resolvedBy: "commit" };
72
- }
@@ -1,121 +0,0 @@
1
- /** What installing this item costs you in context, said before the yes.
2
- *
3
- * THE NUMBER IS TWO NUMBERS, and collapsing them would be the whole feature's undoing. rovecode's skills
4
- * are progressive disclosure: `buildSkillsIndex` puts one line per skill in the system prompt — the name,
5
- * the version and the clipped description — and the SKILL.md body enters context only when the model calls
6
- * `skill_view`. Measured across the 19 skills that ship: the index line averages 79 tokens, the body
7
- * averages 2,288. A single "costs ~2.3k tokens per turn" would be 29× the truth for a skill nobody opens,
8
- * and a reader who checked once would never trust the line again.
9
- *
10
- * So: `perTurn` is what every request carries, `whenUsed` is what arrives if the model opens it.
11
- *
12
- * WHAT CANNOT BE KNOWN is said instead of guessed:
13
- * - an MCP server publishes its tool schemas after it connects. Before that there is no number, and
14
- * inventing one would spend this line's credibility on the day it shipped.
15
- * - a plugin's entry module contributes tools whose schemas we would have to LOAD ITS CODE to read,
16
- * which is exactly what a plan must not do. Its skills and commands directories are files, so those
17
- * are measured.
18
- *
19
- * THE ESTIMATE IS SCALED, NOT CAVEATED. `countTokens` is gpt-tokenizer's o200k_base and Anthropic's
20
- * tokenizer is not public, so for a Claude model the raw count is simply wrong — measured against
21
- * Anthropic's own count_tokens endpoint over all 19 skill bodies that ship, it reads 1.41×–1.79× low
22
- * (mean 1.59×). Rather than describe that in prose, the numbers are multiplied by `tokenScaleFor`, which
23
- * holds a measured factor per model generation. An earlier draft of this file said "reads roughly a third
24
- * low on Anthropic models"; that was already wrong for Claude 4.5, where the factor is 1.21×, and a
25
- * sentence like it is wrong again every time a model ships.
26
- *
27
- * When no model is named the numbers are left unscaled and the line says so. When the provider's own
28
- * tokenizer IS o200k — OpenAI — there is nothing to scale and the line says that instead. A model nobody
29
- * has measured is never given a neighbour's factor.
30
- */
31
-
32
- import { tokenScaleFor, type TokenScale } from "../core/token-scale.ts";
33
- import { countTokens } from "../core/usage.ts";
34
- import { INDEX_PROMPT_LIMIT } from "../skills/tools.ts";
35
- import type { MarketItem } from "./types.ts";
36
-
37
- export interface ContextCost {
38
- /** tokens added to EVERY request while this is installed */
39
- perTurn: number;
40
- /** tokens added only when the model opens it; absent when there is no such body */
41
- whenUsed?: number;
42
- /** the tokenizer the numbers came from — named because it is not the model's */
43
- tokenizer: "o200k_base";
44
- /** a part of the cost that cannot be known before installing, and why */
45
- unknown?: string;
46
- /** installing this would push the skill count past the index limit; see `INDEX_PROMPT_LIMIT` */
47
- overIndexLimit?: boolean;
48
- /** how wrong the estimate is for the model that will carry it, when a measurement exists for it */
49
- scale?: TokenScale;
50
- }
51
-
52
- export interface ContextCostOptions {
53
- /** how many skills are already installed, so the index-limit warning can be right */
54
- installedSkills?: number;
55
- /** the model that will actually carry this, so the estimate can be scaled by a MEASURED factor rather
56
- * than described with a hand-written one. Omit it and the line says the number is unscaled. */
57
- model?: { provider: string; model: string };
58
- }
59
-
60
- /** The system-prompt line `buildSkillsIndex` renders, rebuilt from catalog fields so the count describes
61
- * what would actually be in the prompt rather than an approximation of it (skills/tools.ts
62
- * renderIndexLine). The description is already clipped to 60 characters by the skill reader. */
63
- const indexLine = (item: MarketItem): string =>
64
- `- ${item.id}${item.version ? ` (v${item.version})` : ""}: ${item.description}`;
65
-
66
- export function contextCostOf(item: MarketItem, opts: ContextCostOptions = {}): ContextCost | undefined {
67
- const install = item.install;
68
-
69
- if (install.kind === "mcp") {
70
- // Deliberately no numbers. A server's tools are whatever it reports on connect.
71
- return { perTurn: 0, tokenizer: "o200k_base",
72
- unknown: "an MCP server's tools are only known once it connects, so its context cost cannot be measured before you install it" };
73
- }
74
-
75
- if (install.kind === "skill") {
76
- const body = item.docs?.body;
77
- const cost: ContextCost = { perTurn: countTokens(indexLine(item)), tokenizer: "o200k_base" };
78
- if (opts.model !== undefined) cost.scale = tokenScaleFor(opts.model);
79
- if (body !== undefined) cost.whenUsed = countTokens(body);
80
- else cost.unknown = "the SKILL.md is not carried in the catalog, so only the index line can be measured here";
81
- const installed = opts.installedSkills;
82
- if (installed !== undefined && installed + 1 > INDEX_PROMPT_LIMIT) cost.overIndexLimit = true;
83
- return cost;
84
- }
85
-
86
- // A plugin, and the answer is nothing measurable — for two separate reasons, both worth stating plainly
87
- // rather than papering over with a number:
88
- // its entry module registers tools whose schemas need the code LOADED to read, which a plan must not do;
89
- // its commands and skills are files inside the repository, and the catalog carries the plugin's README,
90
- // not those files — measuring them would mean cloning during a preview.
91
- return { perTurn: 0, tokenizer: "o200k_base",
92
- unknown: "a plugin's context cost cannot be measured from the catalog: its tools need the code loaded to read, and its commands and skills are files that are only fetched when you install it" };
93
- }
94
-
95
- const n = (t: number): string => (t >= 1000 ? `${(t / 1000).toFixed(1)}k` : String(t));
96
-
97
- /** The plan's line(s). Returns [] when there is nothing worth saying. */
98
- export function contextCostLines(c: ContextCost | undefined): string[] {
99
- if (c === undefined) return [];
100
- const lines: string[] = [];
101
-
102
- if (c.perTurn > 0 || c.whenUsed !== undefined) {
103
- // When a measurement exists for the model in play, the numbers are SCALED BY IT rather than described
104
- // with a hand-written caveat. "Reads roughly a third low on Anthropic models" was wrong the moment
105
- // token-scale.ts had two Anthropic generations in it: 1.59x on Claude 5 and 1.21x on 4.5. A sentence
106
- // that has to be rewritten every time a model ships is a sentence that will be wrong between ships.
107
- const k = c.scale?.measured === true ? c.scale.scale : 1;
108
- const turn = `~${n(Math.round(c.perTurn * k))} tokens every turn`;
109
- const used = c.whenUsed !== undefined ? `, ~${n(Math.round(c.whenUsed * k))} more when the model opens it` : "";
110
- lines.push(`${turn}${used}`);
111
- if (c.scale === undefined) lines.push(`counted with o200k_base, which is not every model's tokenizer — unscaled here because no model was named`);
112
- else if (!c.scale.measured) lines.push(`counted with o200k_base — ${c.scale.note}`);
113
- else if (k === 1) lines.push(`counted with o200k_base — ${c.scale.note}`);
114
- else lines.push(`o200k_base scaled ${k}× for this model — ${c.scale.note}`);
115
- }
116
- if (c.overIndexLimit) {
117
- lines.push(`past ${INDEX_PROMPT_LIMIT} skills the index leaves the prompt entirely and the model lists skills with a tool instead — this changes the cost of every skill you have, not just this one`);
118
- }
119
- if (c.unknown !== undefined) lines.push(c.unknown);
120
- return lines;
121
- }
@@ -1,106 +0,0 @@
1
- /** What landed on disk, as one number — so "has this changed since I installed it?" has an answer.
2
- *
3
- * `--ref` pins what we ASK for; a digest is what we GOT. The two answer different questions and the second
4
- * is the one that survives: a commit id says the remote pointed there at fetch time, a digest says the
5
- * bytes on this machine are still the bytes that arrived. Nobody in this space signs anything, so a
6
- * recorded digest is the honest ceiling — it detects drift, it does not prove provenance, and the wording
7
- * everywhere says the former.
8
- *
9
- * Over a FOLDER, the hash covers the relative path and the content of every file, in a sorted order, so it
10
- * is stable across platforms and independent of the order a directory happens to list. `.git` is excluded:
11
- * it is fetch bookkeeping, it differs between a clone and a copy of the same tree, and including it would
12
- * make every digest disagree with itself for no reason a person could act on.
13
- *
14
- * Line endings are NOT normalised. A file that arrives with CRLF and later has LF is genuinely different
15
- * content, and on a repository that has been through a Windows checkout that difference is exactly the
16
- * kind of thing someone would want reported rather than hidden. */
17
-
18
- import { createHash } from "node:crypto";
19
- import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
20
- import { join, relative, sep } from "node:path";
21
-
22
- export interface Digest {
23
- algo: "sha256";
24
- /** hex */
25
- value: string;
26
- /** how many files went into it — a cheap sanity check when two digests differ */
27
- files: number;
28
- }
29
-
30
- /** Every file under `dir`, relative and slash-separated, sorted. Excludes `.git`. */
31
- function walk(dir: string): string[] {
32
- const out: string[] = [];
33
- const stack = [dir];
34
- while (stack.length > 0) {
35
- const here = stack.pop()!;
36
- let names: string[];
37
- try { names = readdirSync(here); } catch { continue; }
38
- for (const name of names) {
39
- if (name === ".git") continue;
40
- const full = join(here, name);
41
- let st;
42
- try { st = statSync(full); } catch { continue; }
43
- // a symlink is never followed: install refuses them, and following one here would hash something
44
- // outside the folder we claim to be describing
45
- if (st.isDirectory()) { stack.push(full); continue; }
46
- if (st.isFile()) out.push(relative(dir, full).split(sep).join("/"));
47
- }
48
- }
49
- return out.sort();
50
- }
51
-
52
- /** The digest of a file or a folder. Undefined when the path is not there — a missing thing has no
53
- * digest, and pretending it has one of an empty folder would make "deleted" and "emptied" look alike. */
54
- export function digestOf(path: string): Digest | undefined {
55
- if (!existsSync(path)) return undefined;
56
- const hash = createHash("sha256");
57
- let files = 0;
58
- try {
59
- if (statSync(path).isFile()) {
60
- hash.update(readFileSync(path));
61
- files = 1;
62
- } else {
63
- for (const rel of walk(path)) {
64
- // the PATH goes in too: moving a file's content to another name is a change
65
- hash.update(rel);
66
- hash.update("\0");
67
- hash.update(readFileSync(join(path, rel)));
68
- hash.update("\0");
69
- files += 1;
70
- }
71
- }
72
- } catch { return undefined; }
73
- return { algo: "sha256", value: hash.digest("hex"), files };
74
- }
75
-
76
- export type VerifyState =
77
- /** the bytes are what they were */
78
- | { state: "unchanged"; digest: Digest }
79
- /** it is still installed, and it is not what it was */
80
- | { state: "changed"; recorded: Digest; now: Digest }
81
- /** it was installed and is no longer there */
82
- | { state: "missing"; recorded: Digest }
83
- /** there is nothing recorded to compare against; not a failure */
84
- | { state: "unrecorded"; now?: Digest }
85
- /** the kind carries no digest by design (an MCP entry is a line in a shared file) */
86
- | { state: "not-applicable"; why: string };
87
-
88
- /** Compare what is on disk with what was recorded. Pure over its inputs apart from reading the path. */
89
- export function verifyDigest(recorded: Digest | undefined, path: string | undefined): VerifyState {
90
- if (path === undefined) return { state: "not-applicable", why: "this kind of install has no folder of its own to hash" };
91
- const now = digestOf(path);
92
- if (recorded === undefined) return now === undefined ? { state: "unrecorded" } : { state: "unrecorded", now };
93
- if (now === undefined) return { state: "missing", recorded };
94
- return now.value === recorded.value ? { state: "unchanged", digest: now } : { state: "changed", recorded, now };
95
- }
96
-
97
- /** One line for `market verify`, in the words the state deserves. */
98
- export function verifyLine(id: string, v: VerifyState): string {
99
- switch (v.state) {
100
- case "unchanged": return `${id} unchanged (${v.digest.files} file${v.digest.files === 1 ? "" : "s"})`;
101
- case "changed": return `${id} CHANGED since install — recorded ${v.recorded.value.slice(0, 12)} (${v.recorded.files} files), now ${v.now.value.slice(0, 12)} (${v.now.files} files)`;
102
- case "missing": return `${id} gone from disk, but a record remains`;
103
- case "unrecorded": return `${id} no digest recorded — installed before rovecode kept one, or by hand`;
104
- case "not-applicable": return `${id} ${v.why}`;
105
- }
106
- }
@@ -1,22 +0,0 @@
1
- /** The market's public face. Every surface — the CLI, the sextant's /market, the site's build step —
2
- * imports from here and from nowhere deeper, so the internals can move without touching them.
3
- *
4
- * Importing this module pulls in `registry.ts` and `install.ts`, which reach the MCP and plugin modules;
5
- * it is NOT free, so keep it off the boot path (cli/main.ts loads `market-cmd.ts` with a dynamic import
6
- * inside `case "market"`, and the TUI should reach it the same way, on first use). `types.ts` alone is
7
- * free — import that directly when all you need is a shape. */
8
-
9
- export type {
10
- MarketKind, MarketSource, MarketScope, MarketEnv, InstallSpec, MarketItem,
11
- InstalledState, MarketRow, SourceStatus, MarketResult, InstallPlanView, InstallOutcome, ItemDocs,
12
- } from "./types.ts";
13
- export { LIMITS, parseQualifiedId, qualify, itemLine } from "./types.ts";
14
-
15
- export type { RegistryDeps } from "./registry.ts";
16
- export { searchMarket, findItem, allItems, itemFromCatalog, itemFromMcp, CATALOG_FILES, CATALOG_DIR, MCP_DOCS_FILE } from "./registry.ts";
17
-
18
- export type { Resolution } from "./resolve.ts";
19
- export { resolveTarget, resolveDirect } from "./resolve.ts";
20
-
21
- export type { PlanOptions, RunDeps } from "./install.ts";
22
- export { planInstall, runInstall, installedState, withInstalled, removeItem, skillDir } from "./install.ts";