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.
- package/CHANGELOG.md +527 -0
- package/README.md +46 -48
- package/bin/rovecode.js +24 -0
- package/dist/cli/app-j6gn14w3.js +2 -0
- package/dist/cli/ask-user-cwstt8fz.js +2 -0
- package/dist/cli/auth-login-9bbp9915.js +2 -0
- package/dist/cli/auth-m8p9grty.js +2 -0
- package/dist/cli/bench-16zqdms5.js +9 -0
- package/dist/cli/catalog-1xchffa4.js +2 -0
- package/dist/cli/cli-1n1zb64f.js +2 -0
- package/dist/cli/client-2t9gjkck.js +2 -0
- package/dist/cli/commands-exafvm2b.js +2 -0
- package/dist/cli/connect-6zde0kn3.js +2 -0
- package/dist/cli/context-cmd-5t43wgqt.js +2 -0
- package/dist/cli/context-report-kt01pw8y.js +2 -0
- package/dist/cli/count-remote-ap7x3vh6.js +2 -0
- package/dist/cli/design-ne5zszyh.js +2 -0
- package/dist/cli/dispatch-2r5myxye.js +2 -0
- package/dist/cli/doctor-ws4fh4tn.js +3 -0
- package/dist/cli/executor-bdrjn634.js +2 -0
- package/dist/cli/export-1mxb9g5p.js +2 -0
- package/dist/cli/files-g104xghh.js +2 -0
- package/dist/cli/gauntlet-07xrjpj7.js +2 -0
- package/dist/cli/gauntlet-runner-xvy64436.js +10 -0
- package/dist/cli/gauntlet-wave3-jm91yt5w.js +5 -0
- package/dist/cli/gauntlet-wave4-r13py7p1.js +14 -0
- package/dist/cli/hashline-znvrat11.js +2 -0
- package/dist/cli/http-xafw6fsh.js +143 -0
- package/dist/cli/index-1sgjm25y.js +2 -0
- package/dist/cli/init-g2m0tn4m.js +51 -0
- package/dist/cli/install-avaqjjqq.js +2 -0
- package/dist/cli/loop-mmpfft01.js +2 -0
- package/dist/cli/main-0904f6ps.js +5 -0
- package/dist/cli/main-0ab9fc26.js +9 -0
- package/dist/cli/main-0jys2ccn.js +3 -0
- package/dist/cli/main-0mtcdbs7.js +3 -0
- package/dist/cli/main-0z1w2zsg.js +3 -0
- package/dist/cli/main-1dchs7xv.js +18 -0
- package/dist/cli/main-1ereejm1.js +3 -0
- package/dist/cli/main-1k1kw6b5.js +3 -0
- package/dist/cli/main-27y4sm2k.js +38 -0
- package/dist/cli/main-2wwjex5j.js +58 -0
- package/dist/cli/main-2yeveeve.js +6 -0
- package/dist/cli/main-2yfck9b5.js +3 -0
- package/dist/cli/main-2zmzgkwh.js +3 -0
- package/dist/cli/main-351pz3z7.js +7 -0
- package/dist/cli/main-3gjqfh7a.js +6 -0
- package/dist/cli/main-3nf3kgve.js +3 -0
- package/dist/cli/main-3pjrb2hd.js +3 -0
- package/dist/cli/main-3rxcvgna.js +19 -0
- package/dist/cli/main-4b3jgy66.js +19 -0
- package/dist/cli/main-4wndhjdc.js +7 -0
- package/dist/cli/main-4xcmvxnk.js +3 -0
- package/dist/cli/main-5tbz0wbz.js +4 -0
- package/dist/cli/main-5ywnwthm.js +3 -0
- package/dist/cli/main-6b62vkz0.js +14 -0
- package/dist/cli/main-6dnk69vp.js +3 -0
- package/dist/cli/main-6genrmhs.js +136 -0
- package/dist/cli/main-73g7eff4.js +15 -0
- package/dist/cli/main-7c5thhjd.js +5 -0
- package/dist/cli/main-7rn6bqje.js +3 -0
- package/dist/cli/main-80haw7qk.js +4 -0
- package/dist/cli/main-875s60s2.js +4 -0
- package/dist/cli/main-8kjxbpw4.js +8 -0
- package/dist/cli/main-90ds1z4e.js +10 -0
- package/dist/cli/main-9etavkew.js +3 -0
- package/dist/cli/main-a9njrkk1.js +3 -0
- package/dist/cli/main-aecrjq2d.js +12 -0
- package/dist/cli/main-ck9asesq.js +9 -0
- package/dist/cli/main-cta9racd.js +4 -0
- package/dist/cli/main-ddv7j2ag.js +3 -0
- package/dist/cli/main-dfreez27.js +10 -0
- package/dist/cli/main-f7rw7des.js +3 -0
- package/dist/cli/main-ggcn7rd7.js +5 -0
- package/dist/cli/main-gzkmycnv.js +3 -0
- package/dist/cli/main-hq51jg8v.js +18 -0
- package/dist/cli/main-jft389w9.js +8 -0
- package/dist/cli/main-k1eqkg83.js +3 -0
- package/dist/cli/main-k2y8a2aw.js +9 -0
- package/dist/cli/main-kcpbykxz.js +4 -0
- package/dist/cli/main-kd488vje.js +22 -0
- package/dist/cli/main-kh32yvgk.js +5 -0
- package/dist/cli/main-kqxnqjnv.js +25 -0
- package/dist/cli/main-kyn0xnsg.js +3 -0
- package/dist/cli/main-m1kk6fp5.js +21 -0
- package/dist/cli/main-mv40pcr2.js +4 -0
- package/dist/cli/main-n0t3973w.js +3 -0
- package/dist/cli/main-nqveez48.js +4 -0
- package/dist/cli/main-pknhvrmj.js +3 -0
- package/dist/cli/main-pn1w7a7j.js +3 -0
- package/dist/cli/main-prxxs70n.js +4 -0
- package/dist/cli/main-q3vsesf9.js +3 -0
- package/dist/cli/main-qsevpgsv.js +3 -0
- package/dist/cli/main-rdgdw24b.js +25 -0
- package/dist/cli/main-rfth4tbm.js +16 -0
- package/dist/cli/main-rg0wn0xf.js +5 -0
- package/dist/cli/main-sdmxhtv8.js +4 -0
- package/dist/cli/main-skbp13js.js +18 -0
- package/dist/cli/main-t4xnd213.js +7 -0
- package/dist/cli/main-vqak588n.js +4 -0
- package/dist/cli/main-w2n1303f.js +9 -0
- package/dist/cli/main-wbrdspr2.js +5 -0
- package/dist/cli/main-wsrg79c1.js +7 -0
- package/dist/cli/main-x4r0fne4.js +5 -0
- package/dist/cli/main-xea2f3tn.js +6 -0
- package/dist/cli/main-xg704a3c.js +3 -0
- package/dist/cli/main-xvnrabfp.js +16 -0
- package/dist/cli/main-xy53xf0r.js +4 -0
- package/dist/cli/main-y1fqy60y.js +3 -0
- package/dist/cli/main-yn8cd281.js +34 -0
- package/dist/cli/main-yr0ksc0h.js +4 -0
- package/dist/cli/main-z2ex2vyf.js +4 -0
- package/dist/cli/main-z3aayzvq.js +3 -0
- package/dist/cli/main-zaqh35jg.js +3 -0
- package/dist/cli/main-zc2e8e46.js +4 -0
- package/dist/cli/main-zzrfw6cf.js +13 -0
- package/dist/cli/main.js +280 -0
- package/dist/cli/market-cmd-e14kmx9n.js +5 -0
- package/dist/cli/mcp-login-wq7ktdek.js +2 -0
- package/dist/cli/mcp-market-cmd-9mg3jecy.js +2 -0
- package/dist/cli/notify-b7qc0cjb.js +2 -0
- package/dist/cli/oauth-z8whcgfx.js +2 -0
- package/dist/cli/output-b3ewj3ps.js +16 -0
- package/dist/cli/profiles-6mr5he5e.js +2 -0
- package/dist/cli/provider-config-g7j42q8x.js +2 -0
- package/dist/cli/provider-jr1y8vvm.js +2 -0
- package/dist/cli/registry-s8yk86g0.js +2 -0
- package/dist/cli/registry-t6p8d4mn.js +2 -0
- package/dist/cli/repl-bajwe1mh.js +11 -0
- package/dist/cli/resume-rwn9nz7y.js +2 -0
- package/dist/cli/run-flags-nah7ndpt.js +2 -0
- package/dist/cli/runtime-n7gafzhb.js +2 -0
- package/dist/cli/sandbox-config-emdy18x4.js +2 -0
- package/dist/cli/server-b0nvs2bn.js +5 -0
- package/dist/cli/session-arg-y75wd4kj.js +2 -0
- package/dist/cli/session-j62evmjq.js +2 -0
- package/dist/cli/sessions-cmd-tsnwz0ns.js +7 -0
- package/dist/cli/settings-df10wfez.js +2 -0
- package/dist/cli/setup-jzvv72fg.js +2 -0
- package/dist/cli/sextant-smoke-37m81ke6.js +5 -0
- package/dist/cli/skills-cmd-gjxnxnhx.js +2 -0
- package/dist/cli/smoke-p7748apt.js +8 -0
- package/dist/cli/start-chat-s4st3mm0.js +12 -0
- package/dist/cli/stream-gmeyewds.js +2 -0
- package/dist/cli/task-gh0kkp3n.js +2 -0
- package/dist/cli/tasks-z1kfpe8e.js +2 -0
- package/dist/cli/thinking-0eqkrz6t.js +2 -0
- package/dist/cli/todo-5brcrt9m.js +2 -0
- package/dist/cli/tools-7pzm0vj9.js +2 -0
- package/dist/cli/tools-s635p6s8.js +2 -0
- package/dist/cli/trust-cmd-cjav8zgm.js +2 -0
- package/dist/cli/update-check-pt31bm2f.js +2 -0
- package/dist/cli/update-cmd-tk131s9t.js +2 -0
- package/dist/cli/voice-56nabd8d.js +2 -0
- package/dist/cli/webfetch-xd8q596m.js +2 -0
- package/dist/cli/websearch-5hkf98k1.js +2 -0
- package/dist/cli/workflow-cmd-cy3cvzjp.js +4 -0
- package/dist/cli/workspace-q10g5z3e.js +2 -0
- package/dist/lib/index.js +62 -0
- package/dist/lib/models-index.json +1 -0
- package/dist/lib/plugins.js +55 -0
- package/dist/lib/providers.js +17 -0
- package/dist/lib/public-api.js +20 -0
- package/dist/lib/sdk.js +360 -0
- package/package.json +84 -72
- package/bin/rovecode.ts +0 -21
- package/src/acp/server.ts +0 -374
- package/src/cli/auth-login.ts +0 -122
- package/src/cli/connect.ts +0 -244
- package/src/cli/context-cmd.ts +0 -199
- package/src/cli/dispatch.ts +0 -82
- package/src/cli/doctor.ts +0 -362
- package/src/cli/export.ts +0 -276
- package/src/cli/help.ts +0 -293
- package/src/cli/is-tui-invocation.ts +0 -8
- package/src/cli/main.ts +0 -583
- package/src/cli/market-cmd.ts +0 -658
- package/src/cli/mcp-login.ts +0 -141
- package/src/cli/mcp-market-cmd.ts +0 -302
- package/src/cli/output.ts +0 -382
- package/src/cli/repl.ts +0 -250
- package/src/cli/repomap-root.ts +0 -14
- package/src/cli/resume.ts +0 -57
- package/src/cli/run-flags.ts +0 -43
- package/src/cli/run-limits.ts +0 -78
- package/src/cli/runtime.ts +0 -931
- package/src/cli/session-arg.ts +0 -30
- package/src/cli/sessions-cmd.ts +0 -145
- package/src/cli/setup.ts +0 -153
- package/src/cli/skills-cmd.ts +0 -194
- package/src/cli/start-chat.ts +0 -65
- package/src/cli/trust-cmd.ts +0 -52
- package/src/coding/bash.ts +0 -148
- package/src/coding/checkpoints.ts +0 -327
- package/src/coding/diff.ts +0 -138
- package/src/coding/files.ts +0 -341
- package/src/coding/hashline.ts +0 -274
- package/src/coding/lsp-gate.ts +0 -254
- package/src/coding/lsp-servers.ts +0 -147
- package/src/coding/lsp.ts +0 -283
- package/src/coding/repomap-cache.ts +0 -99
- package/src/coding/repomap-files.ts +0 -192
- package/src/coding/repomap.ts +0 -481
- package/src/core/agents.ts +0 -255
- package/src/core/compaction.ts +0 -259
- package/src/core/config.ts +0 -289
- package/src/core/context-report.ts +0 -228
- package/src/core/context.ts +0 -60
- package/src/core/count-remote.ts +0 -107
- package/src/core/execpolicy-rules.ts +0 -196
- package/src/core/execpolicy.ts +0 -385
- package/src/core/executor.ts +0 -454
- package/src/core/guardrails.ts +0 -400
- package/src/core/hooks.ts +0 -411
- package/src/core/images.ts +0 -230
- package/src/core/intro.ts +0 -266
- package/src/core/loop.ts +0 -567
- package/src/core/modes.ts +0 -372
- package/src/core/orchestrator.ts +0 -245
- package/src/core/proc-group.ts +0 -48
- package/src/core/project-trust.ts +0 -98
- package/src/core/reflection.ts +0 -165
- package/src/core/sandbox-config.ts +0 -186
- package/src/core/session-id.ts +0 -24
- package/src/core/session-images.ts +0 -73
- package/src/core/session-ops.ts +0 -183
- package/src/core/session-text.ts +0 -29
- package/src/core/session.ts +0 -469
- package/src/core/settings.ts +0 -170
- package/src/core/tasks.ts +0 -646
- package/src/core/token-scale.ts +0 -108
- package/src/core/tools.ts +0 -309
- package/src/core/trust.ts +0 -104
- package/src/core/types.ts +0 -330
- package/src/core/update-check.ts +0 -171
- package/src/core/usage.ts +0 -204
- package/src/core/validate.ts +0 -121
- package/src/core/verify-gate.ts +0 -159
- package/src/core/verify.ts +0 -236
- package/src/core/voice.ts +0 -158
- package/src/core/win-job.ts +0 -183
- package/src/core/workspace.ts +0 -184
- package/src/design/audit.ts +0 -797
- package/src/design/direction.ts +0 -190
- package/src/design/rules.ts +0 -157
- package/src/eval/bench.ts +0 -150
- package/src/eval/gauntlet-runner.ts +0 -215
- package/src/eval/gauntlet-support.ts +0 -84
- package/src/eval/gauntlet-wave3.ts +0 -269
- package/src/eval/gauntlet-wave4.ts +0 -217
- package/src/eval/gauntlet.ts +0 -253
- package/src/index.ts +0 -17
- package/src/lanes/agy.ts +0 -95
- package/src/lanes/approval.ts +0 -24
- package/src/lanes/claude.ts +0 -129
- package/src/lanes/codex.ts +0 -127
- package/src/lanes/events.ts +0 -130
- package/src/lanes/job.ts +0 -142
- package/src/lanes/opencode.ts +0 -122
- package/src/lanes/process.ts +0 -184
- package/src/lanes/progress.ts +0 -183
- package/src/lanes/registry.ts +0 -178
- package/src/lanes/runner.ts +0 -124
- package/src/lanes/types.ts +0 -112
- package/src/market/catalogs/mcp-docs.json +0 -111
- package/src/market/catalogs/plugins.json +0 -111
- package/src/market/catalogs/skills.json +0 -478
- package/src/market/clone.ts +0 -72
- package/src/market/context-cost.ts +0 -121
- package/src/market/digest.ts +0 -106
- package/src/market/index.ts +0 -22
- package/src/market/install.ts +0 -578
- package/src/market/manifest.ts +0 -187
- package/src/market/prereq.ts +0 -145
- package/src/market/registry.ts +0 -363
- package/src/market/resolve.ts +0 -111
- package/src/market/types.ts +0 -236
- package/src/market/validate.ts +0 -227
- package/src/mcp/client.ts +0 -449
- package/src/mcp/config.ts +0 -252
- package/src/mcp/local-package.ts +0 -211
- package/src/mcp/market-catalog.ts +0 -84
- package/src/mcp/market-install.ts +0 -289
- package/src/mcp/market.ts +0 -362
- package/src/mcp/oauth.ts +0 -251
- package/src/mcp/prompts-resources.ts +0 -249
- package/src/mcp/shared.ts +0 -149
- package/src/mcp/status.ts +0 -67
- package/src/mcp/tools.ts +0 -275
- package/src/mcp/transport.ts +0 -122
- package/src/mcp/trust.ts +0 -25
- package/src/memory/blocks.ts +0 -278
- package/src/memory/recall.ts +0 -355
- package/src/memory/scope.ts +0 -182
- package/src/memory/store.ts +0 -105
- package/src/memory/tools.ts +0 -99
- package/src/plugins/cli.ts +0 -119
- package/src/plugins/discover.ts +0 -108
- package/src/plugins/index.ts +0 -50
- package/src/plugins/install.ts +0 -184
- package/src/plugins/load.ts +0 -124
- package/src/plugins/manifest.ts +0 -92
- package/src/plugins/state.ts +0 -83
- package/src/providers/auth.ts +0 -408
- package/src/providers/cache.ts +0 -223
- package/src/providers/catalog-local.ts +0 -160
- package/src/providers/catalog.ts +0 -421
- package/src/providers/middleware-context.ts +0 -86
- package/src/providers/middleware.ts +0 -373
- package/src/providers/model-list.ts +0 -23
- package/src/providers/oauth/common.ts +0 -105
- package/src/providers/oauth/device-code.ts +0 -107
- package/src/providers/oauth/github-copilot.ts +0 -146
- package/src/providers/oauth/loopback.ts +0 -158
- package/src/providers/oauth/openai.ts +0 -163
- package/src/providers/oauth/openrouter.ts +0 -89
- package/src/providers/oauth/pkce.ts +0 -45
- package/src/providers/oauth/registry.ts +0 -39
- package/src/providers/oauth/seam.ts +0 -89
- package/src/providers/profile-glm53.ts +0 -111
- package/src/providers/profile-sonnet5-persona.ts +0 -65
- package/src/providers/profile-sonnet5-voice.ts +0 -23
- package/src/providers/profiles.ts +0 -156
- package/src/providers/provider-config.ts +0 -311
- package/src/providers/registry.ts +0 -333
- package/src/providers/responses.ts +0 -209
- package/src/providers/retry.ts +0 -234
- package/src/providers/router.ts +0 -294
- package/src/providers/sse.ts +0 -26
- package/src/providers/stream-errors.ts +0 -117
- package/src/providers/stream.ts +0 -566
- package/src/providers/thinking.ts +0 -189
- package/src/providers/wire-messages.ts +0 -129
- package/src/providers/wire-responses.ts +0 -79
- package/src/providers/wire-select.ts +0 -53
- package/src/server/http.ts +0 -291
- package/src/server/openapi.ts +0 -246
- package/src/sextant/card-hits.ts +0 -102
- package/src/sextant/card-keys.ts +0 -55
- package/src/sextant/context-source.ts +0 -157
- package/src/sextant/crew-cards.ts +0 -350
- package/src/sextant/draw-agents.ts +0 -273
- package/src/sextant/draw-code.ts +0 -388
- package/src/sextant/draw-context.ts +0 -222
- package/src/sextant/draw-frame.ts +0 -164
- package/src/sextant/draw-market.ts +0 -573
- package/src/sextant/draw-messages.ts +0 -386
- package/src/sextant/draw-pet.ts +0 -230
- package/src/sextant/draw-plan.ts +0 -187
- package/src/sextant/draw-tabs.ts +0 -85
- package/src/sextant/draw-util.ts +0 -65
- package/src/sextant/draw-wizard.ts +0 -378
- package/src/sextant/engine.ts +0 -230
- package/src/sextant/frame-hits.ts +0 -25
- package/src/sextant/frame.ts +0 -101
- package/src/sextant/git-status.ts +0 -197
- package/src/sextant/grid.ts +0 -59
- package/src/sextant/input.ts +0 -119
- package/src/sextant/keys.ts +0 -521
- package/src/sextant/layout.ts +0 -86
- package/src/sextant/local-commands.ts +0 -169
- package/src/sextant/market-source.ts +0 -287
- package/src/sextant/mentions.ts +0 -200
- package/src/sextant/message-hits.ts +0 -26
- package/src/sextant/model.ts +0 -387
- package/src/sextant/overlays.ts +0 -456
- package/src/sextant/panel-hits.ts +0 -38
- package/src/sextant/pet.ts +0 -399
- package/src/sextant/screen.ts +0 -324
- package/src/sextant/scroll-hits.ts +0 -66
- package/src/sextant/scrollbar.ts +0 -82
- package/src/sextant/sextant-bridge.ts +0 -174
- package/src/sextant/sextant-cards.ts +0 -142
- package/src/sextant/sextant-diff-base.ts +0 -63
- package/src/sextant/sextant-files.ts +0 -154
- package/src/sextant/sextant-frame-loop.ts +0 -335
- package/src/sextant/sextant-renderer.ts +0 -574
- package/src/sextant/sextant-repo.ts +0 -140
- package/src/sextant/theme.ts +0 -66
- package/src/sextant/tool-rows.ts +0 -189
- package/src/sextant/types.ts +0 -493
- package/src/skills/index.ts +0 -387
- package/src/skills/pack.ts +0 -220
- package/src/skills/spec.ts +0 -162
- package/src/skills/tools.ts +0 -69
- package/src/skills/versioned.ts +0 -227
- package/src/telemetry/otel-export.ts +0 -122
- package/src/telemetry/otel-lanes.ts +0 -89
- package/src/telemetry/otel-logs.ts +0 -131
- package/src/telemetry/otel-metrics.ts +0 -136
- package/src/telemetry/otel.ts +0 -397
- package/src/telemetry/otlp.ts +0 -76
- package/src/tools/ask-user.ts +0 -156
- package/src/tools/bash-bg.ts +0 -94
- package/src/tools/bash-jobs.ts +0 -237
- package/src/tools/design.ts +0 -151
- package/src/tools/evalcell.ts +0 -338
- package/src/tools/html-text.ts +0 -139
- package/src/tools/provider.ts +0 -149
- package/src/tools/task.ts +0 -250
- package/src/tools/todo.ts +0 -320
- package/src/tools/webfetch.ts +0 -332
- package/src/tools/websearch.ts +0 -359
- package/src/tui/agents-cmd.ts +0 -41
- package/src/tui/app.ts +0 -749
- package/src/tui/attach.ts +0 -127
- package/src/tui/boot-notes.ts +0 -41
- package/src/tui/builtin-prompts.ts +0 -59
- package/src/tui/checkpoints-cmd.ts +0 -70
- package/src/tui/clipboard-image.ts +0 -81
- package/src/tui/clipboard.ts +0 -78
- package/src/tui/commands.ts +0 -283
- package/src/tui/config-view.ts +0 -53
- package/src/tui/context-cmds.ts +0 -282
- package/src/tui/cost.ts +0 -108
- package/src/tui/crash-guard.ts +0 -173
- package/src/tui/focus-terminal.ts +0 -34
- package/src/tui/git-cmds.ts +0 -273
- package/src/tui/git-plain.ts +0 -58
- package/src/tui/info-cmd.ts +0 -150
- package/src/tui/input-plain.ts +0 -76
- package/src/tui/mcp-cmd.ts +0 -128
- package/src/tui/memory-note.ts +0 -77
- package/src/tui/modes-cmd.ts +0 -45
- package/src/tui/notify-seq.ts +0 -100
- package/src/tui/notify.ts +0 -318
- package/src/tui/overlays.ts +0 -97
- package/src/tui/pi-renderer.ts +0 -428
- package/src/tui/providers-cmd.ts +0 -377
- package/src/tui/reasoning-view.ts +0 -56
- package/src/tui/renderer.ts +0 -128
- package/src/tui/replay-marker.ts +0 -29
- package/src/tui/session-cmd.ts +0 -148
- package/src/tui/session-manage.ts +0 -95
- package/src/tui/sextant-attach.ts +0 -102
- package/src/tui/sextant-io.ts +0 -202
- package/src/tui/sextant-smoke.ts +0 -110
- package/src/tui/shell-cmd.ts +0 -158
- package/src/tui/smoke.ts +0 -72
- package/src/tui/staged-terminal.ts +0 -50
- package/src/tui/startup.ts +0 -12
- package/src/tui/theme.ts +0 -59
- package/src/tui/todo-label.ts +0 -7
- package/src/tui/trust-card.ts +0 -107
- package/src/tui/tui-commands.ts +0 -87
- package/tsconfig.json +0 -30
- package/vendor/pi-tui/LICENSE +0 -21
- package/vendor/pi-tui/PATCHES.md +0 -12
- package/vendor/pi-tui/PROVENANCE.md +0 -12
- package/vendor/pi-tui/README.upstream.md +0 -854
- package/vendor/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
- package/vendor/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
- package/vendor/pi-tui/src/alt-screen-search.ts +0 -158
- package/vendor/pi-tui/src/autocomplete.ts +0 -827
- package/vendor/pi-tui/src/components/alt-screen-flash.ts +0 -52
- package/vendor/pi-tui/src/components/box.ts +0 -138
- package/vendor/pi-tui/src/components/cancellable-loader.ts +0 -41
- package/vendor/pi-tui/src/components/editor.ts +0 -2364
- package/vendor/pi-tui/src/components/h-stack.ts +0 -45
- package/vendor/pi-tui/src/components/image.ts +0 -128
- package/vendor/pi-tui/src/components/input.ts +0 -448
- package/vendor/pi-tui/src/components/loader.ts +0 -93
- package/vendor/pi-tui/src/components/markdown.ts +0 -1016
- package/vendor/pi-tui/src/components/scroll-view.ts +0 -217
- package/vendor/pi-tui/src/components/select-list.ts +0 -230
- package/vendor/pi-tui/src/components/settings-list.ts +0 -277
- package/vendor/pi-tui/src/components/spacer.ts +0 -29
- package/vendor/pi-tui/src/components/stack.ts +0 -155
- package/vendor/pi-tui/src/components/text.ts +0 -108
- package/vendor/pi-tui/src/components/truncated-text.ts +0 -66
- package/vendor/pi-tui/src/components/v-stack.ts +0 -34
- package/vendor/pi-tui/src/editor-component.ts +0 -75
- package/vendor/pi-tui/src/fuzzy.ts +0 -138
- package/vendor/pi-tui/src/index.ts +0 -149
- package/vendor/pi-tui/src/keybindings.ts +0 -321
- package/vendor/pi-tui/src/keys.ts +0 -1402
- package/vendor/pi-tui/src/kill-ring.ts +0 -47
- package/vendor/pi-tui/src/latex.ts +0 -1381
- package/vendor/pi-tui/src/layout-node.ts +0 -52
- package/vendor/pi-tui/src/layout.ts +0 -411
- package/vendor/pi-tui/src/native-modifiers.ts +0 -60
- package/vendor/pi-tui/src/native-module-path.ts +0 -32
- package/vendor/pi-tui/src/stdin-buffer.ts +0 -445
- package/vendor/pi-tui/src/terminal-colors.ts +0 -74
- package/vendor/pi-tui/src/terminal-image.ts +0 -701
- package/vendor/pi-tui/src/terminal.ts +0 -554
- package/vendor/pi-tui/src/tui-alt-screen.ts +0 -1379
- package/vendor/pi-tui/src/tui-main-screen.ts +0 -655
- package/vendor/pi-tui/src/tui.ts +0 -1264
- package/vendor/pi-tui/src/undo-stack.ts +0 -29
- package/vendor/pi-tui/src/utils.ts +0 -1327
- package/vendor/pi-tui/src/word-navigation.ts +0 -118
- package/vendor/pi-tui/test/test-themes.ts +0 -39
- package/vendor/pi-tui/test/virtual-terminal.ts +0 -219
- /package/{src/providers → dist/cli}/models-index.json +0 -0
package/src/core/workspace.ts
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/** Workspace roots + the `file.external` boundary (ported from the Nimbus harness, PORT #81).
|
|
2
|
-
*
|
|
3
|
-
* Until this port nothing locked the file tools to the cwd: read / edit / write / glob / grep / ls open any
|
|
4
|
-
* absolute path verbatim (coding/hashline.ts, coding/files.ts, coding/diff.ts resolvePath) and the gated rule set
|
|
5
|
-
* says `file.read * allow` — so an absolute path outside the project was read silently. This module INTRODUCES
|
|
6
|
-
* the boundary and `--add-dir <dir>` widens it:
|
|
7
|
-
* - the cwd (ToolContext.cwd — a task child's own dir for children) is the implicit root; every `--add-dir`
|
|
8
|
-
* value is an extra root, canonicalised (realpath through the deepest existing ancestor: junction, 8.3 and
|
|
9
|
-
* case spellings collapse), deduplicated, and dropped with ONE note when it lies inside the cwd or inside
|
|
10
|
-
* another root; a value that is not a directory, or is a filesystem root (`C:\`, `/` — it would disable the
|
|
11
|
-
* boundary), is an error the surfaces turn into exit 2;
|
|
12
|
-
* - containment is `path.relative` (not a string prefix: `E:\proj2\x` is OUTSIDE `E:\proj`; on win32 relative()
|
|
13
|
-
* compares case-insensitively, so a non-existent tail keeps working), both sides canonical — a junction inside
|
|
14
|
-
* the cwd that points outside is OUTSIDE, because its real target is;
|
|
15
|
-
* - the ONE ladder (core/tools.ts dispatch step 2a) evaluates the action `file.external` for a path-declared tool
|
|
16
|
-
* whose canonical resource is outside the cwd, with resource `<real containing dir>\*` (the parent dir of a
|
|
17
|
-
* file target, the dir itself when glob/grep/ls name an existing directory, `C:\*` for a drive root): the
|
|
18
|
-
* built-in gated set says `file.external * prompt`, yolo's `* * allow` covers it, the roots enter as
|
|
19
|
-
* `allow file.external <root>\*` rules after the built-in set; the prompt names the path, the cwd, the roots
|
|
20
|
-
* that exist and the remedy — never a bare denial;
|
|
21
|
-
* - what a tool OPENS is what the ladder JUDGED: toolPath() below is the ONE spelling rule — `path.resolve`
|
|
22
|
-
* against the cwd, so `.` / `..` collapse LEXICALLY before any filesystem lookup — shared by core/tools.ts
|
|
23
|
-
* describeResource and the read / edit / write / glob / grep / ls tools and the diff preview. A
|
|
24
|
-
* `<cwd>/<symlink>/../<outside>` spelling therefore names `<cwd>/<outside>` on BOTH sides: the symlink is never
|
|
25
|
-
* handed to the kernel (a POSIX kernel applies `..` to the link's TARGET; Win32 collapses it lexically), so a
|
|
26
|
-
* lexical INSIDE verdict can no longer open an OUTSIDE file. The direct `<cwd>/<symlink>/<file>` spelling
|
|
27
|
-
* stays OUTSIDE via realpath.
|
|
28
|
-
* Pure over the filesystem: no settings knob, no env — a repo must never widen its own roots.
|
|
29
|
-
*
|
|
30
|
-
* What the boundary does NOT cover, said plainly: `bash` is not path-declared, so `cd ../other && …` is judged
|
|
31
|
-
* as a shell command (its own rules), not as a path; the executor's cwd lock is what bash has. And checkpoints
|
|
32
|
-
* (coding/checkpoints.ts) are ONE shadow repository whose work-tree is the cwd: a change under an added root is
|
|
33
|
-
* not snapshotted and /restore does not undo it — WorkspaceRoots.checkpointNote() says so at boot and in
|
|
34
|
-
* `rovecode doctor` rather than letting one root look whole. Spanning roots means one shadow repo per root; not
|
|
35
|
-
* built here.
|
|
36
|
-
*
|
|
37
|
-
* Pattern sources (pattern level, no code copied):
|
|
38
|
-
* - opencode (MIT): `packages/opencode/src/tool/external-directory.ts` :15-45 (a target outside the instance
|
|
39
|
-
* directory asks an `external_directory` permission whose pattern AND `always` grant is `path.join(dir, "*")`),
|
|
40
|
-
* `packages/core/src/fs-util.ts` :270-273 contains() (`relative` result not absolute / not `..`-prefixed),
|
|
41
|
-
* `packages/opencode/src/project/instance-context.ts` :18-24 containsPath (a `/` worktree is never a boundary);
|
|
42
|
-
* - gemini-cli (Apache-2.0): `packages/core/src/utils/workspaceContext.ts` :262-272 isPathWithinRoot (the same
|
|
43
|
-
* relative() rule over fully-resolved paths), and the `--include-directories` flag name; Claude Code's
|
|
44
|
-
* `--add-dir` is a flag-name mention only (proprietary). */
|
|
45
|
-
|
|
46
|
-
import { realpathSync, statSync } from "node:fs";
|
|
47
|
-
import { basename, dirname, isAbsolute, join, parse, relative, resolve, sep } from "node:path";
|
|
48
|
-
import type { PermissionRule } from "./types.ts";
|
|
49
|
-
|
|
50
|
-
/** the ladder action a path-declared tool's call outside the workspace is evaluated under */
|
|
51
|
-
export const EXTERNAL_ACTION = "file.external";
|
|
52
|
-
|
|
53
|
-
/** The canonical spelling of a path: its real path (symlinks, junctions, 8.3 short names and drive-letter case
|
|
54
|
-
* resolved). A path that does not (or no longer) exist keys as the real path of its deepest existing ancestor plus
|
|
55
|
-
* the missing tail — so a file the model is about to CREATE inside a junction is still judged by where the junction
|
|
56
|
-
* really points. (The Nimbus tree kept this in core/trust.ts as trustKey; rovecode has no trust store, so it lives
|
|
57
|
-
* here — the one canonicalisation for roots, resources and grants.) */
|
|
58
|
-
export function canonical(p: string): string {
|
|
59
|
-
const abs = resolve(p);
|
|
60
|
-
try { return realpathSync.native(abs); } catch { /* not on disk: resolve through the existing ancestors below */ }
|
|
61
|
-
const parent = dirname(abs);
|
|
62
|
-
return parent === abs ? abs : join(canonical(parent), basename(abs));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** The ONE spelling a `path` argument has for BOTH the ladder (core/tools.ts describeResource) and the tool that opens it
|
|
66
|
-
* (coding/hashline.ts read / edit / write, coding/files.ts glob / grep / ls, coding/diff.ts previewDiff): `path.resolve`
|
|
67
|
-
* against the cwd — absolute, with `.` / `..` / doubled and mixed separators collapsed LEXICALLY before any filesystem lookup
|
|
68
|
-
* and a trailing separator dropped. On win32 a rooted spelling without a drive (`/workspace/x`) resolves on the PROCESS's
|
|
69
|
-
* current drive — that is where node:fs opens it, so it is judged there too (a posix carve-out would let `/proj/.env` dodge an
|
|
70
|
-
* absolute deny). The lexical collapse is the point: `<cwd>/<symlink>/../<outside>` names `<cwd>/<outside>` here, so the
|
|
71
|
-
* symlink never reaches the kernel and the tool opens exactly the path policy judged. */
|
|
72
|
-
export function toolPath(cwd: string, p: string): string {
|
|
73
|
-
return resolve(isAbsolute(p) ? p : join(cwd, p));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** is `p` inside `root` (or root itself)? Both CANONICAL. `path.relative`, not a prefix test: `E:\proj2` is not inside `E:\proj`;
|
|
77
|
-
* on win32 relative() is case-insensitive (opencode fs-util contains(); gemini-cli isPathWithinRoot) */
|
|
78
|
-
export function isInside(root: string, p: string): boolean {
|
|
79
|
-
const r = relative(root, p);
|
|
80
|
-
return r === "" || (!isAbsolute(r) && r !== ".." && !r.startsWith(`..${sep}`));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/** is the canonical form of `resource` outside the canonical form of `cwd`? (the dispatch gate) */
|
|
84
|
-
export function outsideWorkspace(cwd: string, resource: string): boolean { return !isInside(canonical(cwd), canonical(resource)); }
|
|
85
|
-
|
|
86
|
-
function isDirectory(p: string): boolean { try { return statSync(p).isDirectory(); } catch { return false; } }
|
|
87
|
-
|
|
88
|
-
/** the `file.external` resource for a path resource: `<canonical containing dir>\*` — the dir itself when the target is an
|
|
89
|
-
* existing directory (glob / grep / ls), else its parent; a drive / filesystem root gives `C:\*` / `/*` (opencode's
|
|
90
|
-
* `path.join(dir, "*")` pattern). The glob is the SAVED / CACHED shape too, so a second file in that dir matches it. */
|
|
91
|
-
export function externalResource(resource: string): string {
|
|
92
|
-
const c = canonical(resource);
|
|
93
|
-
return join(isDirectory(c) ? c : dirname(c), "*");
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/** the ONE prompt text for a call outside the workspace: names the path, the cwd, the roots the ladder already allows
|
|
97
|
-
* (its `allow file.external <dir>\*` rules — `--add-dir` roots and grants) and the remedy. Never a bare denial. */
|
|
98
|
-
export function outsidePrompt(resource: string, cwd: string, rules: readonly PermissionRule[]): string {
|
|
99
|
-
const roots = rules.filter((r) => r.action === EXTERNAL_ACTION && r.effect === "allow" && r.resource !== "*").map((r) => r.resource);
|
|
100
|
-
return `${resource} is outside the workspace ${cwd}${roots.length > 0 ? ` and its roots ${roots.join(", ")}` : ""} — allow once/always for this directory, or start rovecode with --add-dir <dir> to make it a workspace root`;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/** why `abs` cannot be a workspace root (`spelled` = the value as the user typed it), or undefined when it can */
|
|
104
|
-
export function rootProblem(abs: string, spelled: string): string | undefined {
|
|
105
|
-
// a `*` in the name (POSIX allows it) would be a ladder wildcard in the root's `allow file.external <dir>\*` rule; checked on
|
|
106
|
-
// the spelling first (before the stat) and again on the real path (a link whose target's name holds `*`)
|
|
107
|
-
const wildcard = `--add-dir "${spelled}": the directory name contains "*", a rule wildcard (no escape syntax) — its allow rule would match more than that directory`;
|
|
108
|
-
if (abs.includes("*")) return wildcard;
|
|
109
|
-
if (!isDirectory(abs)) return `--add-dir "${spelled}" is not a directory`;
|
|
110
|
-
const c = canonical(abs);
|
|
111
|
-
if (c.includes("*")) return wildcard;
|
|
112
|
-
if (parse(c).root === c) return `--add-dir "${spelled}" is a filesystem root — it would disable the workspace boundary — pass --yolo instead`;
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export interface ResolvedRoots { dirs: string[]; notes: string[] }
|
|
117
|
-
|
|
118
|
-
/** thrown by resolveRoots for a value that cannot be a root (cli/runtime.ts turns it into a startup error → exit 2) */
|
|
119
|
-
export class WorkspaceRootError extends Error {
|
|
120
|
-
constructor(message: string) { super(message); this.name = "WorkspaceRootError"; }
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/** Canonicalise `addDirs` (each resolved against `base` — the LAUNCH dir) into the extra roots: duplicates, a dir inside the
|
|
124
|
-
* cwd and a dir inside another root are dropped (a later root that CONTAINS an earlier one replaces it) with ONE note line;
|
|
125
|
-
* a non-directory or a filesystem root throws WorkspaceRootError. */
|
|
126
|
-
export function resolveRoots(cwd: string, addDirs: readonly string[] = [], base: string = process.cwd()): ResolvedRoots {
|
|
127
|
-
const home = canonical(cwd);
|
|
128
|
-
const dirs: string[] = [], dropped: string[] = [];
|
|
129
|
-
for (const spelled of addDirs) {
|
|
130
|
-
const abs = resolve(base, spelled);
|
|
131
|
-
const problem = rootProblem(abs, spelled);
|
|
132
|
-
if (problem !== undefined) throw new WorkspaceRootError(problem);
|
|
133
|
-
const c = canonical(abs);
|
|
134
|
-
if (isInside(home, c) || dirs.some((d) => isInside(d, c))) { dropped.push(spelled); continue; }
|
|
135
|
-
for (const d of dirs) if (isInside(c, d)) dropped.push(d); // the wider root replaces the narrower one
|
|
136
|
-
dirs.splice(0, dirs.length, ...dirs.filter((d) => !isInside(c, d)), c);
|
|
137
|
-
}
|
|
138
|
-
const notes = dropped.length === 0 ? [] : [`rovecode: --add-dir: ${dropped.length} value${dropped.length === 1 ? "" : "s"} dropped — already inside the workspace ${home} or another root: ${dropped.join(", ")}`];
|
|
139
|
-
return { dirs, notes };
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/** The roots a runtime carries: canonical cwd + extra dirs, their ladder rules and the banner / prompt spellings. */
|
|
143
|
-
export class WorkspaceRoots {
|
|
144
|
-
readonly cwd: string;
|
|
145
|
-
readonly dirs: readonly string[];
|
|
146
|
-
readonly notes: readonly string[];
|
|
147
|
-
|
|
148
|
-
constructor(cwd: string, resolved: ResolvedRoots = { dirs: [], notes: [] }) {
|
|
149
|
-
this.cwd = canonical(cwd);
|
|
150
|
-
this.dirs = resolved.dirs;
|
|
151
|
-
this.notes = resolved.notes;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/** the extra root containing `abs` (canonical compare), or undefined — cwd is not a root here (callers fall back to it) */
|
|
155
|
-
rootOf(abs: string): string | undefined {
|
|
156
|
-
const c = canonical(abs);
|
|
157
|
-
return this.dirs.find((d) => isInside(d, c));
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/** `allow file.external <root>\*` per extra root — the ladder layer right after the built-in set */
|
|
161
|
-
rules(): PermissionRule[] {
|
|
162
|
-
return this.dirs.map((d) => ({ action: EXTERNAL_ACTION, resource: join(d, "*"), effect: "allow" as const }));
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/** `allow file.write <root>\*` per extra root — what accept-edits adds for the cwd, extended to every root, so a root is
|
|
166
|
-
* visible everywhere a permission decision is made (the cwd's own rule stays where runtime.ts puts it) */
|
|
167
|
-
acceptEditsRules(): PermissionRule[] {
|
|
168
|
-
return this.dirs.map((d) => ({ action: "file.write", resource: join(d, "*"), effect: "allow" as const }));
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/** the banner spelling: `+<dir> +<dir>` ("" without roots) */
|
|
172
|
-
describe(): string { return this.dirs.map((d) => `+${d}`).join(" "); }
|
|
173
|
-
|
|
174
|
-
/** the system-prompt sentence; "" without roots (the prompt stays byte-identical) */
|
|
175
|
-
promptLine(): string {
|
|
176
|
-
return this.dirs.length === 0 ? "" : `\n\nAdditional workspace roots (name them by absolute path): ${this.dirs.join(", ")}`;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/** the limit, named: checkpoints (coding/checkpoints.ts) snapshot the cwd only. "" without roots. Shown once at boot on every
|
|
180
|
-
* surface and as the doctor row's detail — a root that looks checkpointed and is not would be the silent kind of wrong. */
|
|
181
|
-
checkpointNote(): string {
|
|
182
|
-
return this.dirs.length === 0 ? "" : `roots: ${this.describe()} — checkpoints cover ${this.cwd} only; a change under an added root is not snapshotted and /restore does not undo it`;
|
|
183
|
-
}
|
|
184
|
-
}
|