rovecode 0.3.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 (334) hide show
  1. package/LICENSE +662 -0
  2. package/README.md +737 -0
  3. package/THIRD_PARTY_NOTICES.md +268 -0
  4. package/bin/rovecode.ts +21 -0
  5. package/package.json +56 -0
  6. package/src/acp/server.ts +374 -0
  7. package/src/cli/auth-login.ts +122 -0
  8. package/src/cli/connect.ts +244 -0
  9. package/src/cli/context-cmd.ts +199 -0
  10. package/src/cli/dispatch.ts +82 -0
  11. package/src/cli/doctor.ts +362 -0
  12. package/src/cli/export.ts +276 -0
  13. package/src/cli/help.ts +293 -0
  14. package/src/cli/is-tui-invocation.ts +8 -0
  15. package/src/cli/main.ts +583 -0
  16. package/src/cli/market-cmd.ts +658 -0
  17. package/src/cli/mcp-login.ts +141 -0
  18. package/src/cli/mcp-market-cmd.ts +302 -0
  19. package/src/cli/output.ts +382 -0
  20. package/src/cli/repl.ts +250 -0
  21. package/src/cli/repomap-root.ts +14 -0
  22. package/src/cli/resume.ts +57 -0
  23. package/src/cli/run-flags.ts +43 -0
  24. package/src/cli/run-limits.ts +78 -0
  25. package/src/cli/runtime.ts +931 -0
  26. package/src/cli/session-arg.ts +30 -0
  27. package/src/cli/sessions-cmd.ts +145 -0
  28. package/src/cli/setup.ts +153 -0
  29. package/src/cli/skills-cmd.ts +194 -0
  30. package/src/cli/start-chat.ts +65 -0
  31. package/src/cli/trust-cmd.ts +52 -0
  32. package/src/coding/bash.ts +148 -0
  33. package/src/coding/checkpoints.ts +327 -0
  34. package/src/coding/diff.ts +138 -0
  35. package/src/coding/files.ts +341 -0
  36. package/src/coding/hashline.ts +274 -0
  37. package/src/coding/lsp-gate.ts +254 -0
  38. package/src/coding/lsp-servers.ts +147 -0
  39. package/src/coding/lsp.ts +283 -0
  40. package/src/coding/repomap-cache.ts +99 -0
  41. package/src/coding/repomap-files.ts +192 -0
  42. package/src/coding/repomap.ts +481 -0
  43. package/src/core/agents.ts +255 -0
  44. package/src/core/compaction.ts +259 -0
  45. package/src/core/config.ts +289 -0
  46. package/src/core/context-report.ts +228 -0
  47. package/src/core/context.ts +60 -0
  48. package/src/core/count-remote.ts +107 -0
  49. package/src/core/execpolicy-rules.ts +196 -0
  50. package/src/core/execpolicy.ts +385 -0
  51. package/src/core/executor.ts +454 -0
  52. package/src/core/guardrails.ts +400 -0
  53. package/src/core/hooks.ts +411 -0
  54. package/src/core/images.ts +230 -0
  55. package/src/core/intro.ts +266 -0
  56. package/src/core/loop.ts +567 -0
  57. package/src/core/modes.ts +372 -0
  58. package/src/core/orchestrator.ts +245 -0
  59. package/src/core/proc-group.ts +48 -0
  60. package/src/core/project-trust.ts +98 -0
  61. package/src/core/reflection.ts +165 -0
  62. package/src/core/sandbox-config.ts +186 -0
  63. package/src/core/session-id.ts +24 -0
  64. package/src/core/session-images.ts +73 -0
  65. package/src/core/session-ops.ts +183 -0
  66. package/src/core/session-text.ts +29 -0
  67. package/src/core/session.ts +469 -0
  68. package/src/core/settings.ts +170 -0
  69. package/src/core/tasks.ts +646 -0
  70. package/src/core/token-scale.ts +108 -0
  71. package/src/core/tools.ts +309 -0
  72. package/src/core/trust.ts +104 -0
  73. package/src/core/types.ts +330 -0
  74. package/src/core/update-check.ts +171 -0
  75. package/src/core/usage.ts +204 -0
  76. package/src/core/validate.ts +121 -0
  77. package/src/core/verify-gate.ts +159 -0
  78. package/src/core/verify.ts +236 -0
  79. package/src/core/voice.ts +158 -0
  80. package/src/core/win-job.ts +183 -0
  81. package/src/core/workspace.ts +184 -0
  82. package/src/design/audit.ts +797 -0
  83. package/src/design/direction.ts +190 -0
  84. package/src/design/rules.ts +157 -0
  85. package/src/eval/bench.ts +150 -0
  86. package/src/eval/gauntlet-runner.ts +215 -0
  87. package/src/eval/gauntlet-support.ts +84 -0
  88. package/src/eval/gauntlet-wave3.ts +269 -0
  89. package/src/eval/gauntlet-wave4.ts +217 -0
  90. package/src/eval/gauntlet.ts +253 -0
  91. package/src/index.ts +17 -0
  92. package/src/lanes/agy.ts +95 -0
  93. package/src/lanes/approval.ts +24 -0
  94. package/src/lanes/claude.ts +129 -0
  95. package/src/lanes/codex.ts +127 -0
  96. package/src/lanes/events.ts +130 -0
  97. package/src/lanes/job.ts +142 -0
  98. package/src/lanes/opencode.ts +122 -0
  99. package/src/lanes/process.ts +184 -0
  100. package/src/lanes/progress.ts +183 -0
  101. package/src/lanes/registry.ts +178 -0
  102. package/src/lanes/runner.ts +124 -0
  103. package/src/lanes/types.ts +112 -0
  104. package/src/market/catalogs/mcp-docs.json +111 -0
  105. package/src/market/catalogs/plugins.json +111 -0
  106. package/src/market/catalogs/skills.json +478 -0
  107. package/src/market/clone.ts +72 -0
  108. package/src/market/context-cost.ts +121 -0
  109. package/src/market/digest.ts +106 -0
  110. package/src/market/index.ts +22 -0
  111. package/src/market/install.ts +578 -0
  112. package/src/market/manifest.ts +187 -0
  113. package/src/market/prereq.ts +145 -0
  114. package/src/market/registry.ts +363 -0
  115. package/src/market/resolve.ts +111 -0
  116. package/src/market/types.ts +236 -0
  117. package/src/market/validate.ts +227 -0
  118. package/src/mcp/client.ts +449 -0
  119. package/src/mcp/config.ts +252 -0
  120. package/src/mcp/local-package.ts +211 -0
  121. package/src/mcp/market-catalog.ts +84 -0
  122. package/src/mcp/market-install.ts +289 -0
  123. package/src/mcp/market.ts +362 -0
  124. package/src/mcp/oauth.ts +251 -0
  125. package/src/mcp/prompts-resources.ts +249 -0
  126. package/src/mcp/shared.ts +149 -0
  127. package/src/mcp/status.ts +67 -0
  128. package/src/mcp/tools.ts +275 -0
  129. package/src/mcp/transport.ts +122 -0
  130. package/src/mcp/trust.ts +25 -0
  131. package/src/memory/blocks.ts +278 -0
  132. package/src/memory/recall.ts +355 -0
  133. package/src/memory/scope.ts +182 -0
  134. package/src/memory/store.ts +105 -0
  135. package/src/memory/tools.ts +99 -0
  136. package/src/plugins/cli.ts +119 -0
  137. package/src/plugins/discover.ts +108 -0
  138. package/src/plugins/index.ts +50 -0
  139. package/src/plugins/install.ts +184 -0
  140. package/src/plugins/load.ts +124 -0
  141. package/src/plugins/manifest.ts +92 -0
  142. package/src/plugins/state.ts +83 -0
  143. package/src/providers/auth.ts +408 -0
  144. package/src/providers/cache.ts +223 -0
  145. package/src/providers/catalog-local.ts +160 -0
  146. package/src/providers/catalog.ts +421 -0
  147. package/src/providers/middleware-context.ts +86 -0
  148. package/src/providers/middleware.ts +373 -0
  149. package/src/providers/model-list.ts +23 -0
  150. package/src/providers/models-index.json +1 -0
  151. package/src/providers/oauth/common.ts +105 -0
  152. package/src/providers/oauth/device-code.ts +107 -0
  153. package/src/providers/oauth/github-copilot.ts +146 -0
  154. package/src/providers/oauth/loopback.ts +158 -0
  155. package/src/providers/oauth/openai.ts +163 -0
  156. package/src/providers/oauth/openrouter.ts +89 -0
  157. package/src/providers/oauth/pkce.ts +45 -0
  158. package/src/providers/oauth/registry.ts +39 -0
  159. package/src/providers/oauth/seam.ts +89 -0
  160. package/src/providers/profile-glm53.ts +111 -0
  161. package/src/providers/profile-sonnet5-persona.ts +65 -0
  162. package/src/providers/profile-sonnet5-voice.ts +23 -0
  163. package/src/providers/profiles.ts +156 -0
  164. package/src/providers/provider-config.ts +311 -0
  165. package/src/providers/registry.ts +333 -0
  166. package/src/providers/responses.ts +209 -0
  167. package/src/providers/retry.ts +234 -0
  168. package/src/providers/router.ts +294 -0
  169. package/src/providers/sse.ts +26 -0
  170. package/src/providers/stream-errors.ts +117 -0
  171. package/src/providers/stream.ts +566 -0
  172. package/src/providers/thinking.ts +189 -0
  173. package/src/providers/wire-messages.ts +129 -0
  174. package/src/providers/wire-responses.ts +79 -0
  175. package/src/providers/wire-select.ts +53 -0
  176. package/src/server/http.ts +291 -0
  177. package/src/server/openapi.ts +246 -0
  178. package/src/sextant/card-hits.ts +102 -0
  179. package/src/sextant/card-keys.ts +55 -0
  180. package/src/sextant/context-source.ts +157 -0
  181. package/src/sextant/crew-cards.ts +350 -0
  182. package/src/sextant/draw-agents.ts +273 -0
  183. package/src/sextant/draw-code.ts +388 -0
  184. package/src/sextant/draw-context.ts +222 -0
  185. package/src/sextant/draw-frame.ts +164 -0
  186. package/src/sextant/draw-market.ts +573 -0
  187. package/src/sextant/draw-messages.ts +386 -0
  188. package/src/sextant/draw-pet.ts +230 -0
  189. package/src/sextant/draw-plan.ts +187 -0
  190. package/src/sextant/draw-tabs.ts +85 -0
  191. package/src/sextant/draw-util.ts +65 -0
  192. package/src/sextant/draw-wizard.ts +378 -0
  193. package/src/sextant/engine.ts +230 -0
  194. package/src/sextant/frame-hits.ts +25 -0
  195. package/src/sextant/frame.ts +101 -0
  196. package/src/sextant/git-status.ts +197 -0
  197. package/src/sextant/grid.ts +59 -0
  198. package/src/sextant/input.ts +119 -0
  199. package/src/sextant/keys.ts +521 -0
  200. package/src/sextant/layout.ts +86 -0
  201. package/src/sextant/local-commands.ts +169 -0
  202. package/src/sextant/market-source.ts +287 -0
  203. package/src/sextant/mentions.ts +200 -0
  204. package/src/sextant/message-hits.ts +26 -0
  205. package/src/sextant/model.ts +387 -0
  206. package/src/sextant/overlays.ts +456 -0
  207. package/src/sextant/panel-hits.ts +38 -0
  208. package/src/sextant/pet.ts +399 -0
  209. package/src/sextant/screen.ts +324 -0
  210. package/src/sextant/scroll-hits.ts +66 -0
  211. package/src/sextant/scrollbar.ts +82 -0
  212. package/src/sextant/sextant-bridge.ts +174 -0
  213. package/src/sextant/sextant-cards.ts +142 -0
  214. package/src/sextant/sextant-diff-base.ts +63 -0
  215. package/src/sextant/sextant-files.ts +154 -0
  216. package/src/sextant/sextant-frame-loop.ts +335 -0
  217. package/src/sextant/sextant-renderer.ts +574 -0
  218. package/src/sextant/sextant-repo.ts +140 -0
  219. package/src/sextant/theme.ts +66 -0
  220. package/src/sextant/tool-rows.ts +189 -0
  221. package/src/sextant/types.ts +493 -0
  222. package/src/skills/index.ts +387 -0
  223. package/src/skills/pack.ts +220 -0
  224. package/src/skills/spec.ts +162 -0
  225. package/src/skills/tools.ts +69 -0
  226. package/src/skills/versioned.ts +227 -0
  227. package/src/telemetry/otel-export.ts +122 -0
  228. package/src/telemetry/otel-lanes.ts +89 -0
  229. package/src/telemetry/otel-logs.ts +131 -0
  230. package/src/telemetry/otel-metrics.ts +136 -0
  231. package/src/telemetry/otel.ts +397 -0
  232. package/src/telemetry/otlp.ts +76 -0
  233. package/src/tools/ask-user.ts +156 -0
  234. package/src/tools/bash-bg.ts +94 -0
  235. package/src/tools/bash-jobs.ts +237 -0
  236. package/src/tools/design.ts +151 -0
  237. package/src/tools/evalcell.ts +338 -0
  238. package/src/tools/html-text.ts +139 -0
  239. package/src/tools/provider.ts +149 -0
  240. package/src/tools/task.ts +250 -0
  241. package/src/tools/todo.ts +320 -0
  242. package/src/tools/webfetch.ts +332 -0
  243. package/src/tools/websearch.ts +359 -0
  244. package/src/tui/agents-cmd.ts +41 -0
  245. package/src/tui/app.ts +749 -0
  246. package/src/tui/attach.ts +127 -0
  247. package/src/tui/boot-notes.ts +41 -0
  248. package/src/tui/builtin-prompts.ts +59 -0
  249. package/src/tui/checkpoints-cmd.ts +70 -0
  250. package/src/tui/clipboard-image.ts +81 -0
  251. package/src/tui/clipboard.ts +78 -0
  252. package/src/tui/commands.ts +283 -0
  253. package/src/tui/config-view.ts +53 -0
  254. package/src/tui/context-cmds.ts +282 -0
  255. package/src/tui/cost.ts +108 -0
  256. package/src/tui/crash-guard.ts +173 -0
  257. package/src/tui/focus-terminal.ts +34 -0
  258. package/src/tui/git-cmds.ts +273 -0
  259. package/src/tui/git-plain.ts +58 -0
  260. package/src/tui/info-cmd.ts +150 -0
  261. package/src/tui/input-plain.ts +76 -0
  262. package/src/tui/mcp-cmd.ts +128 -0
  263. package/src/tui/memory-note.ts +77 -0
  264. package/src/tui/modes-cmd.ts +45 -0
  265. package/src/tui/notify-seq.ts +100 -0
  266. package/src/tui/notify.ts +318 -0
  267. package/src/tui/overlays.ts +97 -0
  268. package/src/tui/pi-renderer.ts +428 -0
  269. package/src/tui/providers-cmd.ts +377 -0
  270. package/src/tui/reasoning-view.ts +56 -0
  271. package/src/tui/renderer.ts +128 -0
  272. package/src/tui/replay-marker.ts +29 -0
  273. package/src/tui/session-cmd.ts +148 -0
  274. package/src/tui/session-manage.ts +95 -0
  275. package/src/tui/sextant-attach.ts +102 -0
  276. package/src/tui/sextant-io.ts +202 -0
  277. package/src/tui/sextant-smoke.ts +110 -0
  278. package/src/tui/shell-cmd.ts +158 -0
  279. package/src/tui/smoke.ts +72 -0
  280. package/src/tui/staged-terminal.ts +50 -0
  281. package/src/tui/startup.ts +12 -0
  282. package/src/tui/theme.ts +59 -0
  283. package/src/tui/todo-label.ts +7 -0
  284. package/src/tui/trust-card.ts +107 -0
  285. package/src/tui/tui-commands.ts +87 -0
  286. package/tsconfig.json +30 -0
  287. package/vendor/pi-tui/LICENSE +21 -0
  288. package/vendor/pi-tui/PATCHES.md +12 -0
  289. package/vendor/pi-tui/PROVENANCE.md +12 -0
  290. package/vendor/pi-tui/README.upstream.md +854 -0
  291. package/vendor/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  292. package/vendor/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  293. package/vendor/pi-tui/src/alt-screen-search.ts +158 -0
  294. package/vendor/pi-tui/src/autocomplete.ts +827 -0
  295. package/vendor/pi-tui/src/components/alt-screen-flash.ts +52 -0
  296. package/vendor/pi-tui/src/components/box.ts +138 -0
  297. package/vendor/pi-tui/src/components/cancellable-loader.ts +41 -0
  298. package/vendor/pi-tui/src/components/editor.ts +2364 -0
  299. package/vendor/pi-tui/src/components/h-stack.ts +45 -0
  300. package/vendor/pi-tui/src/components/image.ts +128 -0
  301. package/vendor/pi-tui/src/components/input.ts +448 -0
  302. package/vendor/pi-tui/src/components/loader.ts +93 -0
  303. package/vendor/pi-tui/src/components/markdown.ts +1016 -0
  304. package/vendor/pi-tui/src/components/scroll-view.ts +217 -0
  305. package/vendor/pi-tui/src/components/select-list.ts +230 -0
  306. package/vendor/pi-tui/src/components/settings-list.ts +277 -0
  307. package/vendor/pi-tui/src/components/spacer.ts +29 -0
  308. package/vendor/pi-tui/src/components/stack.ts +155 -0
  309. package/vendor/pi-tui/src/components/text.ts +108 -0
  310. package/vendor/pi-tui/src/components/truncated-text.ts +66 -0
  311. package/vendor/pi-tui/src/components/v-stack.ts +34 -0
  312. package/vendor/pi-tui/src/editor-component.ts +75 -0
  313. package/vendor/pi-tui/src/fuzzy.ts +138 -0
  314. package/vendor/pi-tui/src/index.ts +149 -0
  315. package/vendor/pi-tui/src/keybindings.ts +321 -0
  316. package/vendor/pi-tui/src/keys.ts +1402 -0
  317. package/vendor/pi-tui/src/kill-ring.ts +47 -0
  318. package/vendor/pi-tui/src/latex.ts +1381 -0
  319. package/vendor/pi-tui/src/layout-node.ts +52 -0
  320. package/vendor/pi-tui/src/layout.ts +411 -0
  321. package/vendor/pi-tui/src/native-modifiers.ts +60 -0
  322. package/vendor/pi-tui/src/native-module-path.ts +32 -0
  323. package/vendor/pi-tui/src/stdin-buffer.ts +445 -0
  324. package/vendor/pi-tui/src/terminal-colors.ts +74 -0
  325. package/vendor/pi-tui/src/terminal-image.ts +701 -0
  326. package/vendor/pi-tui/src/terminal.ts +554 -0
  327. package/vendor/pi-tui/src/tui-alt-screen.ts +1379 -0
  328. package/vendor/pi-tui/src/tui-main-screen.ts +655 -0
  329. package/vendor/pi-tui/src/tui.ts +1264 -0
  330. package/vendor/pi-tui/src/undo-stack.ts +29 -0
  331. package/vendor/pi-tui/src/utils.ts +1327 -0
  332. package/vendor/pi-tui/src/word-navigation.ts +118 -0
  333. package/vendor/pi-tui/test/test-themes.ts +39 -0
  334. package/vendor/pi-tui/test/virtual-terminal.ts +219 -0
@@ -0,0 +1,87 @@
1
+ /** TUI options/table extraction port, following aion's tui-commands.ts. app.ts re-exports both
2
+ * names so existing callers, help, palette and custom-command reservations keep the same source.
3
+ * The declarations below are moved verbatim from this checkout's app.ts, not from aion's table. */
4
+ import type { SpawnRunner } from "../core/executor.ts";
5
+ import { THINKING_EFFORTS, type PermissionLevel, type StreamFn, type ThinkingEffort } from "../core/types.ts";
6
+ import { ATTACH_COMMAND, PASTE_COMMAND } from "./attach.ts";
7
+ import { CONNECT_COMMAND, MODEL_COMMAND, PROVIDER_COMMANDS } from "./providers-cmd.ts";
8
+ import { MCP_COMMAND } from "./mcp-cmd.ts";
9
+ import { TRUST_COMMAND } from "./trust-card.ts";
10
+ import { CONTEXT_COMMANDS } from "./context-cmds.ts";
11
+ import type { Renderer, SlashCommand } from "./renderer.ts";
12
+
13
+ export interface TuiAppOptions {
14
+ yolo?: boolean;
15
+ model?: string;
16
+ cwd?: string;
17
+ /** resume an existing session id instead of starting a fresh one. ALREADY RESOLVED by the caller (cli/resume.ts
18
+ * resolveBoot → the one resolver in core/session-ops.ts): a prefix has become the full id, and an invalid, unknown
19
+ * or ambiguous one exited 2 before this module loaded — the TUI no longer re-resolves or starts fresh on a miss */
20
+ sessionId?: string;
21
+ /** one line for the startup card when the boot request could not be honoured as a resume
22
+ * (cli/resume.ts: "nothing to continue from — this is a new session") */
23
+ bootNote?: string;
24
+ /** Owns the loading screen until runtime, sandbox and scene setup are ready. finish() hands it over. */
25
+ startup?: { status(line: string): void; finish(): void; animationDone?: Promise<void>; signal?: AbortSignal };
26
+ /** injected by tests/smoke (VirtualTerminal-backed renderer, mock stream) */
27
+ renderer?: Renderer;
28
+ stream?: StreamFn | null;
29
+ /** default true: process.exit(0) when the user quits */
30
+ exitOnClose?: boolean;
31
+ /** port #27 test seams, threaded into createRuntime: the process runner behind the rung
32
+ * probe (never a real wsl.exe/docker in tests) and the platform the probe assumes */
33
+ spawnRunner?: SpawnRunner;
34
+ platform?: NodeJS.Platform;
35
+ /** `--add-dir <dir>` values (absolute; cli/run-flags.ts) — extra workspace roots beside the cwd (core/workspace.ts) */
36
+ addDirs?: readonly string[];
37
+ /** port #44: the sextant pet's name (`--pet <name>`); the classic renderer ignores it */
38
+ pet?: string;
39
+ /** start in the middle permission tier (`--accept-edits`, ROVECODE_ACCEPT_EDITS=1) */
40
+ acceptEdits?: boolean;
41
+ /** the permission level as an explicit ASK from an in-process caller — the same rung as a CLI flag, so it
42
+ * beats ROVECODE_PERMISSION and both settings files. `yolo`/`acceptEdits` can only demand a WIDER
43
+ * level; `yolo: false` is "no flag", and a user settings file saying "auto" then wins. A smoke whose
44
+ * assertion is "an approval card appears" needs this to say "ask" and mean it. Leaving it undefined
45
+ * changes nothing: the env var and the files keep their say. */
46
+ permission?: PermissionLevel;
47
+ /** `--effort <level>`; overrides ROVECODE_EFFORT for this session */
48
+ effort?: ThinkingEffort;
49
+ }
50
+
51
+ /** The built-in slash commands, worded in rovecode's voice (core/voice.ts) and tagged with the /help topic
52
+ * they are listed under (info-cmd.ts cmdHelp groups by `group`; the palette shows name + description). */
53
+ export const TUI_COMMANDS: SlashCommand[] = [
54
+ { name: "help", description: "This list, by topic", group: "start here" },
55
+ CONNECT_COMMAND, // providers-cmd.ts: /connect — bare it is /setup; with an id it takes the answers on the line
56
+ { name: "exit", description: "Quit (alias /quit; Ctrl+C does the same)", group: "start here" },
57
+ { name: "new", description: "Start over in this session (branch back to the beginning)", group: "session" },
58
+ { name: "sessions", description: "Pick an earlier session to continue — or manage them: /sessions rename <title…> | delete <id> | fork [<id>] | search <terms…>", group: "session", choices: ["rename", "delete", "fork", "search"] /* session-manage.ts; inline so the palette table does not load that module at boot */, choicesThen: "complete" },
59
+ { name: "resume", description: "Continue a session by id: /resume <id>", group: "session" },
60
+ { name: "rewind", description: "Go back to an earlier turn and edit it (alias: /tree)", group: "session" },
61
+ { name: "tree", description: "Alias of /rewind", group: "session" },
62
+ { name: "export", description: "Save this session as markdown: /export [--json] [path] [--force]", group: "session" },
63
+ MODEL_COMMAND, // providers-cmd.ts: /model <provider/model | model> [--save]
64
+ ...PROVIDER_COMMANDS, // /models · /provider — providers-cmd.ts (live registry: no restart after add/key/use)
65
+ { name: "yolo", description: "Toggle ask first / auto (never asks)", group: "modes & safety" },
66
+ { name: "accept-edits", description: "Stop asking for writes inside this folder; shell, subagents and writes outside it still ask", group: "modes & safety" },
67
+ { name: "effort", description: "How hard I think before answering: /effort auto | off | low | medium | high — the note says what the current model actually receives", group: "model & provider", choices: THINKING_EFFORTS },
68
+ { name: "plan", description: "Plan mode: I only read and plan, nothing changes", group: "modes & safety" },
69
+ { name: "act", description: "Act mode: I can edit and run again", group: "modes & safety" },
70
+ { name: "checkpoints", description: "Snapshots I took before each change (shadow git)", group: "files & history" },
71
+ { name: "restore", description: "Go back to a snapshot: /restore <ref> [files|conversation|both]", group: "files & history" },
72
+ { name: "commit", description: "Commit the staged changes with a model-drafted conventional message (COMMIT role): /commit [message] — `git commit -m` runs through the bash tool's approval card", group: "files & history" }, // port #65 — git-cmds.ts
73
+ { name: "undo", description: "Undo the agent's last change: restore the previous checkpoint's files (a drifted workspace goes back to the last checkpoint; confirmation card; the conversation is untouched)", group: "files & history" }, // port #65 — git-cmds.ts
74
+ { ...ATTACH_COMMAND, group: "files & history" }, // port #34: /attach <path> · /attach (list) · /attach clear — attach.ts
75
+ { ...PASTE_COMMAND, group: "files & history" }, // /paste: the clipboard image as an attachment (⌃v in sextant) — attach.ts
76
+ TRUST_COMMAND, // trust-card.ts: /trust — the gated project files with what they carry, then a per-file approval card (no default yes)
77
+ { name: "agents", description: "My subagent definitions: /agents list (the bare /agents is the crew board)", group: "start here", choices: ["list"] },
78
+ { name: "config", description: "The settings this session actually loaded: /config [all] — files, set keys, ROVECODE_* env", group: "start here", choices: ["all"] },
79
+ MCP_COMMAND, // mcp-cmd.ts: /mcp [query] — pick a server in the palette, approve the exact plan on the card, it lands in mcp.json
80
+ { name: "status", description: "Provider, model, turns, tokens, sandbox", group: "info" },
81
+ { name: "cost", description: "Tokens, cache hits and the USD estimate (/cost refresh updates prices)", group: "info" },
82
+ { name: "todos", description: "My step list for the current task", group: "info" },
83
+ { name: "tasks", description: "Background subagents: /tasks [cancel <id>|cancel all]", group: "info" },
84
+ { name: "skills", description: "Installed skills", group: "info" },
85
+ { name: "memory", description: "What I remember across turns: /memory · /memory --user · /memory [--user] <text> to add a line", group: "info" },
86
+ ...CONTEXT_COMMANDS, // port #53: /compact [focus] · /clear · /init · /copy [n] — context-cmds.ts
87
+ ];
package/tsconfig.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "compilerOptions": {
3
+ // ES2024: vendored pi-tui uses /v regex flags (vendor/pi-tui/src/utils.ts:40-48)
4
+ "target": "ES2024",
5
+ "module": "ESNext",
6
+ "moduleResolution": "bundler",
7
+ // package.json import in src/cli/main.ts (--version, port #36)
8
+ "resolveJsonModule": true,
9
+ "strict": true,
10
+ "noUncheckedIndexedAccess": true,
11
+ "noImplicitOverride": true,
12
+ "skipLibCheck": true,
13
+ "types": ["bun-types"],
14
+ "allowImportingTsExtensions": true,
15
+ // compiler-setting parity with upstream pi-tui (their tsconfig.base.json) for
16
+ // the vendored source. Typecheck-only: Bun's runtime transpiler does NOT read
17
+ // this flag (bun 1.3.14 — output is byte-identical with it flipped or this
18
+ // file absent), and tsc passes either way today. tsconfig ships in files[]
19
+ // so the installed source stays typecheckable in place (`bun x tsc --noEmit`).
20
+ "useDefineForClassFields": false,
21
+ "noEmit": true
22
+ },
23
+ "include": ["src", "test", "scripts"],
24
+ // test/fixtures/design-site is INPUT to design_audit, not project code: a synthetic Next.js app-router
25
+ // tree whose .tsx files exist to be read as text (the audit matches route files by path, so they have to
26
+ // keep their real names). They are never imported and never run, and compiling them would only demand a
27
+ // React/JSX setup for files nothing renders. Every other fixture stays in: fixtures/images.ts and
28
+ // fixtures/fake-lsp.ts are real modules that tests import.
29
+ "exclude": ["test/fixtures/design-site"]
30
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Mario Zechner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,12 @@
1
+ # Local patches to vendored pi-tui
2
+
3
+ Every deviation from upstream `853a80d2` is listed here with a reason. Keep this list short;
4
+ prefer adapting on the rovecode side of the seam (src/tui/) over patching vendor code.
5
+
6
+ 1. **All `src/**/*.ts`: prepended one `// @ts-nocheck` header line** (2026-09-01, port #1).
7
+ Reason: rovecode's house tsconfig enables `noUncheckedIndexedAccess`, which upstream does not
8
+ compile under; per-file compiler flags don't exist in tsc. The header mutes diagnostics
9
+ for vendor internals only — exported types still flow fully typed across the seam to
10
+ `rovecode/src/tui/*`. Vendor internals remain checked upstream at the pinned SHA. Mechanical,
11
+ reversible: re-vendor = re-run the header loop (see git history of this port).
12
+ No other source lines were modified.
@@ -0,0 +1,12 @@
1
+ # Vendored: @earendil-works/pi-tui
2
+
3
+ - Upstream: https://github.com/earendil-works/pi (packages/tui)
4
+ - Version: 0.84.4 · License: MIT © 2025 Mario Zechner (see ./LICENSE)
5
+ - Vendored from local snapshot `research/source_snapshots/earendil-works-pi`
6
+ at commit `853a80d26c90a14c1886f0ebb8ffaae133ca2185` on 2026-09-01 (rovecode port #1).
7
+ - Contents: `src/` (unmodified except patches logged in ./PATCHES.md),
8
+ `native/win32/prebuilds/` (optional modifier-key addon; absence degrades gracefully,
9
+ see src/native-modifiers.ts), upstream README as README.upstream.md.
10
+ - House rule: only `rovecode/src/tui/*` may import from this tree. Vendored files are exempt
11
+ from the ≤400-line module budget (ADR-002 applies to house code).
12
+ - To update: re-snapshot upstream, diff against this tree, reapply PATCHES.md.