rovecode 0.3.3 → 0.4.0-beta.2

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 (491) hide show
  1. package/CHANGELOG.md +512 -0
  2. package/README.md +33 -48
  3. package/bin/rovecode.js +24 -0
  4. package/dist/cli/app-dybnr56b.js +2 -0
  5. package/dist/cli/ask-user-p8hq4xgj.js +2 -0
  6. package/dist/cli/auth-login-ewpgw5sm.js +2 -0
  7. package/dist/cli/auth-m8p9grty.js +2 -0
  8. package/dist/cli/bench-xv3ypwev.js +9 -0
  9. package/dist/cli/catalog-737wb2s0.js +2 -0
  10. package/dist/cli/cli-arhg40m0.js +2 -0
  11. package/dist/cli/client-cf2pxx8q.js +2 -0
  12. package/dist/cli/commands-3p7e4xxs.js +2 -0
  13. package/dist/cli/connect-3q93d7cb.js +2 -0
  14. package/dist/cli/context-cmd-eqxmxhzq.js +2 -0
  15. package/dist/cli/context-report-hbw9zfes.js +2 -0
  16. package/dist/cli/count-remote-mby98cd0.js +2 -0
  17. package/dist/cli/design-122y0axd.js +2 -0
  18. package/dist/cli/dispatch-b4egzvvh.js +2 -0
  19. package/dist/cli/doctor-x4jkv72e.js +3 -0
  20. package/dist/cli/executor-ftvg6tsy.js +2 -0
  21. package/dist/cli/export-pdgdhkch.js +2 -0
  22. package/dist/cli/files-cez9a96p.js +2 -0
  23. package/dist/cli/gauntlet-r3xxaszc.js +2 -0
  24. package/dist/cli/gauntlet-runner-r515m7kk.js +10 -0
  25. package/dist/cli/gauntlet-wave3-bnkjk2v2.js +5 -0
  26. package/dist/cli/gauntlet-wave4-acs9s60q.js +14 -0
  27. package/dist/cli/hashline-ewg5hbe3.js +2 -0
  28. package/dist/cli/http-n0kehsk8.js +5 -0
  29. package/dist/cli/index-z5qt1s76.js +2 -0
  30. package/dist/cli/install-80mp63kx.js +2 -0
  31. package/dist/cli/loop-12twjcat.js +2 -0
  32. package/dist/cli/main-01pv9206.js +4 -0
  33. package/dist/cli/main-0jys2ccn.js +3 -0
  34. package/dist/cli/main-1ztz6fkj.js +10 -0
  35. package/dist/cli/main-23q7cmww.js +9 -0
  36. package/dist/cli/main-2rzbexn2.js +3 -0
  37. package/dist/cli/main-2wyax8k9.js +9 -0
  38. package/dist/cli/main-2yeveeve.js +6 -0
  39. package/dist/cli/main-2z3dek0b.js +3 -0
  40. package/dist/cli/main-2zgsknth.js +3 -0
  41. package/dist/cli/main-45ejth3a.js +4 -0
  42. package/dist/cli/main-45rn3trk.js +22 -0
  43. package/dist/cli/main-4p4e2w7x.js +4 -0
  44. package/dist/cli/main-4y0tnfpa.js +16 -0
  45. package/dist/cli/main-5py0rkmc.js +4 -0
  46. package/dist/cli/main-6dtqmbt6.js +7 -0
  47. package/dist/cli/main-6h9x282m.js +4 -0
  48. package/dist/cli/main-6vjeds42.js +3 -0
  49. package/dist/cli/main-78gq4bt9.js +6 -0
  50. package/dist/cli/main-7jd5vh3x.js +4 -0
  51. package/dist/cli/main-7kt6r53y.js +4 -0
  52. package/dist/cli/main-8c1tbazx.js +58 -0
  53. package/dist/cli/main-9a9rnh47.js +19 -0
  54. package/dist/cli/main-9ht36z12.js +3 -0
  55. package/dist/cli/main-a2yfvcy9.js +7 -0
  56. package/dist/cli/main-a3f51n0x.js +5 -0
  57. package/dist/cli/main-b8zq261k.js +3 -0
  58. package/dist/cli/main-bxtvnf6d.js +13 -0
  59. package/dist/cli/main-edxc3yzt.js +4 -0
  60. package/dist/cli/main-evgz4mp5.js +21 -0
  61. package/dist/cli/main-f33fc5je.js +9 -0
  62. package/dist/cli/main-fvnpq46y.js +12 -0
  63. package/dist/cli/main-gbbty4d4.js +3 -0
  64. package/dist/cli/main-gth53dnt.js +25 -0
  65. package/dist/cli/main-hqbz10aw.js +9 -0
  66. package/dist/cli/main-hrrvcfan.js +38 -0
  67. package/dist/cli/main-hzwtsb2m.js +5 -0
  68. package/dist/cli/main-j7ttv0sd.js +34 -0
  69. package/dist/cli/main-jak598k9.js +5 -0
  70. package/dist/cli/main-kba6zeyd.js +6 -0
  71. package/dist/cli/main-kwwsz6rq.js +3 -0
  72. package/dist/cli/main-m8vm17zq.js +3 -0
  73. package/dist/cli/main-mg4f96e1.js +3 -0
  74. package/dist/cli/main-mg9b20ac.js +18 -0
  75. package/dist/cli/main-mgb9ccnx.js +3 -0
  76. package/dist/cli/main-mjt2p7aj.js +3 -0
  77. package/dist/cli/main-n6qrdbmy.js +3 -0
  78. package/dist/cli/main-na7wse0x.js +5 -0
  79. package/dist/cli/main-nqveez48.js +4 -0
  80. package/dist/cli/main-ntqef02r.js +10 -0
  81. package/dist/cli/main-nvc3yjay.js +136 -0
  82. package/dist/cli/main-p0cfn6nr.js +16 -0
  83. package/dist/cli/main-qj2djy17.js +19 -0
  84. package/dist/cli/main-qsevpgsv.js +3 -0
  85. package/dist/cli/main-qvarybsp.js +3 -0
  86. package/dist/cli/main-rebtt91r.js +5 -0
  87. package/dist/cli/main-rpg7h8mb.js +3 -0
  88. package/dist/cli/main-rsy72qmw.js +15 -0
  89. package/dist/cli/main-rvetps99.js +18 -0
  90. package/dist/cli/main-s4bb0jav.js +3 -0
  91. package/dist/cli/main-s9v8k74e.js +3 -0
  92. package/dist/cli/main-tjvwmscs.js +3 -0
  93. package/dist/cli/main-tkgarpjj.js +4 -0
  94. package/dist/cli/main-v8y60bb2.js +3 -0
  95. package/dist/cli/main-vhrrq337.js +3 -0
  96. package/dist/cli/main-vp2dfb7s.js +4 -0
  97. package/dist/cli/main-vqbr22sz.js +8 -0
  98. package/dist/cli/main-vxnwe5xx.js +18 -0
  99. package/dist/cli/main-wgph00xf.js +5 -0
  100. package/dist/cli/main-wk2csfnj.js +5 -0
  101. package/dist/cli/main-wm997zjx.js +3 -0
  102. package/dist/cli/main-wpkyraxh.js +3 -0
  103. package/dist/cli/main-wqt32p5x.js +4 -0
  104. package/dist/cli/main-x9ct6y1a.js +3 -0
  105. package/dist/cli/main-xfekqh9m.js +7 -0
  106. package/dist/cli/main-xt9zc3n6.js +7 -0
  107. package/dist/cli/main-xx2z3zh5.js +4 -0
  108. package/dist/cli/main-y5c82rxr.js +3 -0
  109. package/dist/cli/main-yrjt2sqt.js +14 -0
  110. package/dist/cli/main-ys6zj3yr.js +3 -0
  111. package/dist/cli/main-ywbxshqc.js +8 -0
  112. package/dist/cli/main-z13755t8.js +25 -0
  113. package/dist/cli/main-zc7pyrbj.js +4 -0
  114. package/dist/cli/main.js +279 -0
  115. package/dist/cli/market-cmd-bm5xvn9f.js +5 -0
  116. package/dist/cli/mcp-login-bthtfpt7.js +2 -0
  117. package/dist/cli/mcp-market-cmd-mbeshfyd.js +2 -0
  118. package/dist/cli/notify-54v5z9dz.js +2 -0
  119. package/dist/cli/oauth-g5gme95c.js +2 -0
  120. package/dist/cli/output-satndjap.js +16 -0
  121. package/dist/cli/profiles-sfhpbq3m.js +2 -0
  122. package/dist/cli/provider-config-hv3xtdt4.js +2 -0
  123. package/dist/cli/provider-kwzq6g84.js +2 -0
  124. package/dist/cli/registry-fh0hdnyn.js +2 -0
  125. package/dist/cli/registry-y1y8e94r.js +2 -0
  126. package/dist/cli/repl-t4z03mqq.js +11 -0
  127. package/dist/cli/resume-fqt4chg8.js +2 -0
  128. package/dist/cli/run-flags-rysbag9t.js +2 -0
  129. package/dist/cli/runtime-j19fjbsa.js +2 -0
  130. package/dist/cli/sandbox-config-g4qxd7y5.js +2 -0
  131. package/dist/cli/server-r0b6bksk.js +5 -0
  132. package/dist/cli/session-arg-txmn5g4x.js +2 -0
  133. package/dist/cli/session-ed250d9j.js +2 -0
  134. package/dist/cli/sessions-cmd-adw7svfn.js +7 -0
  135. package/dist/cli/settings-y9rzcqx8.js +2 -0
  136. package/dist/cli/setup-jmbr11j0.js +2 -0
  137. package/dist/cli/sextant-smoke-tcth0vea.js +5 -0
  138. package/dist/cli/skills-cmd-zbdy99v6.js +2 -0
  139. package/dist/cli/smoke-1bg937kx.js +8 -0
  140. package/dist/cli/start-chat-p01cdks3.js +12 -0
  141. package/dist/cli/stream-4wmyaypz.js +2 -0
  142. package/dist/cli/task-eg4s093s.js +2 -0
  143. package/dist/cli/tasks-12v9rr9k.js +2 -0
  144. package/dist/cli/thinking-a5ngvqyh.js +2 -0
  145. package/dist/cli/todo-1wxpcecx.js +2 -0
  146. package/dist/cli/tools-2ftsya7w.js +2 -0
  147. package/dist/cli/tools-x1tj4fxm.js +2 -0
  148. package/dist/cli/trust-cmd-hccxehzb.js +2 -0
  149. package/dist/cli/update-check-ygt3vd7m.js +2 -0
  150. package/dist/cli/update-cmd-v23qhr8c.js +2 -0
  151. package/dist/cli/voice-g1gtck92.js +2 -0
  152. package/dist/cli/webfetch-0nnrjgb5.js +2 -0
  153. package/dist/cli/websearch-f0vr2p7d.js +2 -0
  154. package/dist/cli/workspace-9rq1w4ta.js +2 -0
  155. package/dist/lib/index.js +62 -0
  156. package/dist/lib/models-index.json +1 -0
  157. package/dist/lib/plugins.js +6 -0
  158. package/dist/lib/providers.js +17 -0
  159. package/dist/lib/public-api.js +20 -0
  160. package/dist/rovecode.exe +4 -0
  161. package/package.json +83 -72
  162. package/bin/rovecode.ts +0 -21
  163. package/src/acp/server.ts +0 -374
  164. package/src/cli/auth-login.ts +0 -122
  165. package/src/cli/connect.ts +0 -244
  166. package/src/cli/context-cmd.ts +0 -199
  167. package/src/cli/dispatch.ts +0 -82
  168. package/src/cli/doctor.ts +0 -362
  169. package/src/cli/export.ts +0 -276
  170. package/src/cli/help.ts +0 -293
  171. package/src/cli/is-tui-invocation.ts +0 -8
  172. package/src/cli/main.ts +0 -583
  173. package/src/cli/market-cmd.ts +0 -658
  174. package/src/cli/mcp-login.ts +0 -141
  175. package/src/cli/mcp-market-cmd.ts +0 -302
  176. package/src/cli/output.ts +0 -382
  177. package/src/cli/repl.ts +0 -250
  178. package/src/cli/repomap-root.ts +0 -14
  179. package/src/cli/resume.ts +0 -57
  180. package/src/cli/run-flags.ts +0 -43
  181. package/src/cli/run-limits.ts +0 -78
  182. package/src/cli/runtime.ts +0 -931
  183. package/src/cli/session-arg.ts +0 -30
  184. package/src/cli/sessions-cmd.ts +0 -145
  185. package/src/cli/setup.ts +0 -153
  186. package/src/cli/skills-cmd.ts +0 -194
  187. package/src/cli/start-chat.ts +0 -65
  188. package/src/cli/trust-cmd.ts +0 -52
  189. package/src/coding/bash.ts +0 -148
  190. package/src/coding/checkpoints.ts +0 -327
  191. package/src/coding/diff.ts +0 -138
  192. package/src/coding/files.ts +0 -341
  193. package/src/coding/hashline.ts +0 -274
  194. package/src/coding/lsp-gate.ts +0 -254
  195. package/src/coding/lsp-servers.ts +0 -147
  196. package/src/coding/lsp.ts +0 -283
  197. package/src/coding/repomap-cache.ts +0 -99
  198. package/src/coding/repomap-files.ts +0 -192
  199. package/src/coding/repomap.ts +0 -481
  200. package/src/core/agents.ts +0 -255
  201. package/src/core/compaction.ts +0 -259
  202. package/src/core/config.ts +0 -289
  203. package/src/core/context-report.ts +0 -228
  204. package/src/core/context.ts +0 -60
  205. package/src/core/count-remote.ts +0 -107
  206. package/src/core/execpolicy-rules.ts +0 -196
  207. package/src/core/execpolicy.ts +0 -385
  208. package/src/core/executor.ts +0 -454
  209. package/src/core/guardrails.ts +0 -400
  210. package/src/core/hooks.ts +0 -411
  211. package/src/core/images.ts +0 -230
  212. package/src/core/intro.ts +0 -266
  213. package/src/core/loop.ts +0 -567
  214. package/src/core/modes.ts +0 -372
  215. package/src/core/orchestrator.ts +0 -245
  216. package/src/core/proc-group.ts +0 -48
  217. package/src/core/project-trust.ts +0 -98
  218. package/src/core/reflection.ts +0 -165
  219. package/src/core/sandbox-config.ts +0 -186
  220. package/src/core/session-id.ts +0 -24
  221. package/src/core/session-images.ts +0 -73
  222. package/src/core/session-ops.ts +0 -183
  223. package/src/core/session-text.ts +0 -29
  224. package/src/core/session.ts +0 -469
  225. package/src/core/settings.ts +0 -170
  226. package/src/core/tasks.ts +0 -646
  227. package/src/core/token-scale.ts +0 -108
  228. package/src/core/tools.ts +0 -309
  229. package/src/core/trust.ts +0 -104
  230. package/src/core/types.ts +0 -330
  231. package/src/core/update-check.ts +0 -171
  232. package/src/core/usage.ts +0 -204
  233. package/src/core/validate.ts +0 -121
  234. package/src/core/verify-gate.ts +0 -159
  235. package/src/core/verify.ts +0 -236
  236. package/src/core/voice.ts +0 -158
  237. package/src/core/win-job.ts +0 -183
  238. package/src/core/workspace.ts +0 -184
  239. package/src/design/audit.ts +0 -797
  240. package/src/design/direction.ts +0 -190
  241. package/src/design/rules.ts +0 -157
  242. package/src/eval/bench.ts +0 -150
  243. package/src/eval/gauntlet-runner.ts +0 -215
  244. package/src/eval/gauntlet-support.ts +0 -84
  245. package/src/eval/gauntlet-wave3.ts +0 -269
  246. package/src/eval/gauntlet-wave4.ts +0 -217
  247. package/src/eval/gauntlet.ts +0 -253
  248. package/src/index.ts +0 -17
  249. package/src/lanes/agy.ts +0 -95
  250. package/src/lanes/approval.ts +0 -24
  251. package/src/lanes/claude.ts +0 -129
  252. package/src/lanes/codex.ts +0 -127
  253. package/src/lanes/events.ts +0 -130
  254. package/src/lanes/job.ts +0 -142
  255. package/src/lanes/opencode.ts +0 -122
  256. package/src/lanes/process.ts +0 -184
  257. package/src/lanes/progress.ts +0 -183
  258. package/src/lanes/registry.ts +0 -178
  259. package/src/lanes/runner.ts +0 -124
  260. package/src/lanes/types.ts +0 -112
  261. package/src/market/catalogs/mcp-docs.json +0 -111
  262. package/src/market/catalogs/plugins.json +0 -111
  263. package/src/market/catalogs/skills.json +0 -478
  264. package/src/market/clone.ts +0 -72
  265. package/src/market/context-cost.ts +0 -121
  266. package/src/market/digest.ts +0 -106
  267. package/src/market/index.ts +0 -22
  268. package/src/market/install.ts +0 -578
  269. package/src/market/manifest.ts +0 -187
  270. package/src/market/prereq.ts +0 -145
  271. package/src/market/registry.ts +0 -363
  272. package/src/market/resolve.ts +0 -111
  273. package/src/market/types.ts +0 -236
  274. package/src/market/validate.ts +0 -227
  275. package/src/mcp/client.ts +0 -449
  276. package/src/mcp/config.ts +0 -252
  277. package/src/mcp/local-package.ts +0 -211
  278. package/src/mcp/market-catalog.ts +0 -84
  279. package/src/mcp/market-install.ts +0 -289
  280. package/src/mcp/market.ts +0 -362
  281. package/src/mcp/oauth.ts +0 -251
  282. package/src/mcp/prompts-resources.ts +0 -249
  283. package/src/mcp/shared.ts +0 -149
  284. package/src/mcp/status.ts +0 -67
  285. package/src/mcp/tools.ts +0 -275
  286. package/src/mcp/transport.ts +0 -122
  287. package/src/mcp/trust.ts +0 -25
  288. package/src/memory/blocks.ts +0 -278
  289. package/src/memory/recall.ts +0 -355
  290. package/src/memory/scope.ts +0 -182
  291. package/src/memory/store.ts +0 -105
  292. package/src/memory/tools.ts +0 -99
  293. package/src/plugins/cli.ts +0 -119
  294. package/src/plugins/discover.ts +0 -108
  295. package/src/plugins/index.ts +0 -50
  296. package/src/plugins/install.ts +0 -184
  297. package/src/plugins/load.ts +0 -124
  298. package/src/plugins/manifest.ts +0 -92
  299. package/src/plugins/state.ts +0 -83
  300. package/src/providers/auth.ts +0 -408
  301. package/src/providers/cache.ts +0 -223
  302. package/src/providers/catalog-local.ts +0 -160
  303. package/src/providers/catalog.ts +0 -421
  304. package/src/providers/middleware-context.ts +0 -86
  305. package/src/providers/middleware.ts +0 -373
  306. package/src/providers/model-list.ts +0 -23
  307. package/src/providers/oauth/common.ts +0 -105
  308. package/src/providers/oauth/device-code.ts +0 -107
  309. package/src/providers/oauth/github-copilot.ts +0 -146
  310. package/src/providers/oauth/loopback.ts +0 -158
  311. package/src/providers/oauth/openai.ts +0 -163
  312. package/src/providers/oauth/openrouter.ts +0 -89
  313. package/src/providers/oauth/pkce.ts +0 -45
  314. package/src/providers/oauth/registry.ts +0 -39
  315. package/src/providers/oauth/seam.ts +0 -89
  316. package/src/providers/profile-glm53.ts +0 -111
  317. package/src/providers/profile-sonnet5-persona.ts +0 -65
  318. package/src/providers/profile-sonnet5-voice.ts +0 -23
  319. package/src/providers/profiles.ts +0 -156
  320. package/src/providers/provider-config.ts +0 -311
  321. package/src/providers/registry.ts +0 -333
  322. package/src/providers/responses.ts +0 -209
  323. package/src/providers/retry.ts +0 -234
  324. package/src/providers/router.ts +0 -294
  325. package/src/providers/sse.ts +0 -26
  326. package/src/providers/stream-errors.ts +0 -117
  327. package/src/providers/stream.ts +0 -566
  328. package/src/providers/thinking.ts +0 -189
  329. package/src/providers/wire-messages.ts +0 -129
  330. package/src/providers/wire-responses.ts +0 -79
  331. package/src/providers/wire-select.ts +0 -53
  332. package/src/server/http.ts +0 -291
  333. package/src/server/openapi.ts +0 -246
  334. package/src/sextant/card-hits.ts +0 -102
  335. package/src/sextant/card-keys.ts +0 -55
  336. package/src/sextant/context-source.ts +0 -157
  337. package/src/sextant/crew-cards.ts +0 -350
  338. package/src/sextant/draw-agents.ts +0 -273
  339. package/src/sextant/draw-code.ts +0 -388
  340. package/src/sextant/draw-context.ts +0 -222
  341. package/src/sextant/draw-frame.ts +0 -164
  342. package/src/sextant/draw-market.ts +0 -573
  343. package/src/sextant/draw-messages.ts +0 -386
  344. package/src/sextant/draw-pet.ts +0 -230
  345. package/src/sextant/draw-plan.ts +0 -187
  346. package/src/sextant/draw-tabs.ts +0 -85
  347. package/src/sextant/draw-util.ts +0 -65
  348. package/src/sextant/draw-wizard.ts +0 -378
  349. package/src/sextant/engine.ts +0 -230
  350. package/src/sextant/frame-hits.ts +0 -25
  351. package/src/sextant/frame.ts +0 -101
  352. package/src/sextant/git-status.ts +0 -197
  353. package/src/sextant/grid.ts +0 -59
  354. package/src/sextant/input.ts +0 -119
  355. package/src/sextant/keys.ts +0 -521
  356. package/src/sextant/layout.ts +0 -86
  357. package/src/sextant/local-commands.ts +0 -169
  358. package/src/sextant/market-source.ts +0 -287
  359. package/src/sextant/mentions.ts +0 -200
  360. package/src/sextant/message-hits.ts +0 -26
  361. package/src/sextant/model.ts +0 -387
  362. package/src/sextant/overlays.ts +0 -456
  363. package/src/sextant/panel-hits.ts +0 -38
  364. package/src/sextant/pet.ts +0 -399
  365. package/src/sextant/screen.ts +0 -324
  366. package/src/sextant/scroll-hits.ts +0 -66
  367. package/src/sextant/scrollbar.ts +0 -82
  368. package/src/sextant/sextant-bridge.ts +0 -174
  369. package/src/sextant/sextant-cards.ts +0 -142
  370. package/src/sextant/sextant-diff-base.ts +0 -63
  371. package/src/sextant/sextant-files.ts +0 -154
  372. package/src/sextant/sextant-frame-loop.ts +0 -335
  373. package/src/sextant/sextant-renderer.ts +0 -574
  374. package/src/sextant/sextant-repo.ts +0 -140
  375. package/src/sextant/theme.ts +0 -66
  376. package/src/sextant/tool-rows.ts +0 -189
  377. package/src/sextant/types.ts +0 -493
  378. package/src/skills/index.ts +0 -387
  379. package/src/skills/pack.ts +0 -220
  380. package/src/skills/spec.ts +0 -162
  381. package/src/skills/tools.ts +0 -69
  382. package/src/skills/versioned.ts +0 -227
  383. package/src/telemetry/otel-export.ts +0 -122
  384. package/src/telemetry/otel-lanes.ts +0 -89
  385. package/src/telemetry/otel-logs.ts +0 -131
  386. package/src/telemetry/otel-metrics.ts +0 -136
  387. package/src/telemetry/otel.ts +0 -397
  388. package/src/telemetry/otlp.ts +0 -76
  389. package/src/tools/ask-user.ts +0 -156
  390. package/src/tools/bash-bg.ts +0 -94
  391. package/src/tools/bash-jobs.ts +0 -237
  392. package/src/tools/design.ts +0 -151
  393. package/src/tools/evalcell.ts +0 -338
  394. package/src/tools/html-text.ts +0 -139
  395. package/src/tools/provider.ts +0 -149
  396. package/src/tools/task.ts +0 -250
  397. package/src/tools/todo.ts +0 -320
  398. package/src/tools/webfetch.ts +0 -332
  399. package/src/tools/websearch.ts +0 -359
  400. package/src/tui/agents-cmd.ts +0 -41
  401. package/src/tui/app.ts +0 -749
  402. package/src/tui/attach.ts +0 -127
  403. package/src/tui/boot-notes.ts +0 -41
  404. package/src/tui/builtin-prompts.ts +0 -59
  405. package/src/tui/checkpoints-cmd.ts +0 -70
  406. package/src/tui/clipboard-image.ts +0 -81
  407. package/src/tui/clipboard.ts +0 -78
  408. package/src/tui/commands.ts +0 -283
  409. package/src/tui/config-view.ts +0 -53
  410. package/src/tui/context-cmds.ts +0 -282
  411. package/src/tui/cost.ts +0 -108
  412. package/src/tui/crash-guard.ts +0 -173
  413. package/src/tui/focus-terminal.ts +0 -34
  414. package/src/tui/git-cmds.ts +0 -273
  415. package/src/tui/git-plain.ts +0 -58
  416. package/src/tui/info-cmd.ts +0 -150
  417. package/src/tui/input-plain.ts +0 -76
  418. package/src/tui/mcp-cmd.ts +0 -128
  419. package/src/tui/memory-note.ts +0 -77
  420. package/src/tui/modes-cmd.ts +0 -45
  421. package/src/tui/notify-seq.ts +0 -100
  422. package/src/tui/notify.ts +0 -318
  423. package/src/tui/overlays.ts +0 -97
  424. package/src/tui/pi-renderer.ts +0 -428
  425. package/src/tui/providers-cmd.ts +0 -377
  426. package/src/tui/reasoning-view.ts +0 -56
  427. package/src/tui/renderer.ts +0 -128
  428. package/src/tui/replay-marker.ts +0 -29
  429. package/src/tui/session-cmd.ts +0 -148
  430. package/src/tui/session-manage.ts +0 -95
  431. package/src/tui/sextant-attach.ts +0 -102
  432. package/src/tui/sextant-io.ts +0 -202
  433. package/src/tui/sextant-smoke.ts +0 -110
  434. package/src/tui/shell-cmd.ts +0 -158
  435. package/src/tui/smoke.ts +0 -72
  436. package/src/tui/staged-terminal.ts +0 -50
  437. package/src/tui/startup.ts +0 -12
  438. package/src/tui/theme.ts +0 -59
  439. package/src/tui/todo-label.ts +0 -7
  440. package/src/tui/trust-card.ts +0 -107
  441. package/src/tui/tui-commands.ts +0 -87
  442. package/tsconfig.json +0 -30
  443. package/vendor/pi-tui/LICENSE +0 -21
  444. package/vendor/pi-tui/PATCHES.md +0 -12
  445. package/vendor/pi-tui/PROVENANCE.md +0 -12
  446. package/vendor/pi-tui/README.upstream.md +0 -854
  447. package/vendor/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  448. package/vendor/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  449. package/vendor/pi-tui/src/alt-screen-search.ts +0 -158
  450. package/vendor/pi-tui/src/autocomplete.ts +0 -827
  451. package/vendor/pi-tui/src/components/alt-screen-flash.ts +0 -52
  452. package/vendor/pi-tui/src/components/box.ts +0 -138
  453. package/vendor/pi-tui/src/components/cancellable-loader.ts +0 -41
  454. package/vendor/pi-tui/src/components/editor.ts +0 -2364
  455. package/vendor/pi-tui/src/components/h-stack.ts +0 -45
  456. package/vendor/pi-tui/src/components/image.ts +0 -128
  457. package/vendor/pi-tui/src/components/input.ts +0 -448
  458. package/vendor/pi-tui/src/components/loader.ts +0 -93
  459. package/vendor/pi-tui/src/components/markdown.ts +0 -1016
  460. package/vendor/pi-tui/src/components/scroll-view.ts +0 -217
  461. package/vendor/pi-tui/src/components/select-list.ts +0 -230
  462. package/vendor/pi-tui/src/components/settings-list.ts +0 -277
  463. package/vendor/pi-tui/src/components/spacer.ts +0 -29
  464. package/vendor/pi-tui/src/components/stack.ts +0 -155
  465. package/vendor/pi-tui/src/components/text.ts +0 -108
  466. package/vendor/pi-tui/src/components/truncated-text.ts +0 -66
  467. package/vendor/pi-tui/src/components/v-stack.ts +0 -34
  468. package/vendor/pi-tui/src/editor-component.ts +0 -75
  469. package/vendor/pi-tui/src/fuzzy.ts +0 -138
  470. package/vendor/pi-tui/src/index.ts +0 -149
  471. package/vendor/pi-tui/src/keybindings.ts +0 -321
  472. package/vendor/pi-tui/src/keys.ts +0 -1402
  473. package/vendor/pi-tui/src/kill-ring.ts +0 -47
  474. package/vendor/pi-tui/src/latex.ts +0 -1381
  475. package/vendor/pi-tui/src/layout-node.ts +0 -52
  476. package/vendor/pi-tui/src/layout.ts +0 -411
  477. package/vendor/pi-tui/src/native-modifiers.ts +0 -60
  478. package/vendor/pi-tui/src/native-module-path.ts +0 -32
  479. package/vendor/pi-tui/src/stdin-buffer.ts +0 -445
  480. package/vendor/pi-tui/src/terminal-colors.ts +0 -74
  481. package/vendor/pi-tui/src/terminal-image.ts +0 -701
  482. package/vendor/pi-tui/src/terminal.ts +0 -554
  483. package/vendor/pi-tui/src/tui-alt-screen.ts +0 -1379
  484. package/vendor/pi-tui/src/tui-main-screen.ts +0 -655
  485. package/vendor/pi-tui/src/tui.ts +0 -1264
  486. package/vendor/pi-tui/src/undo-stack.ts +0 -29
  487. package/vendor/pi-tui/src/utils.ts +0 -1327
  488. package/vendor/pi-tui/src/word-navigation.ts +0 -118
  489. package/vendor/pi-tui/test/test-themes.ts +0 -39
  490. package/vendor/pi-tui/test/virtual-terminal.ts +0 -219
  491. /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";