onlycode 1.18.0 → 1.19.0

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 (417) hide show
  1. package/package.json +11 -146
  2. package/src/account/account.ts +0 -463
  3. package/src/account/repo.ts +0 -173
  4. package/src/account/schema.ts +0 -99
  5. package/src/account/url.ts +0 -8
  6. package/src/acp/agent.ts +0 -95
  7. package/src/acp/config-option.ts +0 -203
  8. package/src/acp/content.ts +0 -250
  9. package/src/acp/directory.ts +0 -210
  10. package/src/acp/error.ts +0 -90
  11. package/src/acp/event.ts +0 -342
  12. package/src/acp/permission.ts +0 -124
  13. package/src/acp/profile.ts +0 -42
  14. package/src/acp/service.ts +0 -1048
  15. package/src/acp/session.ts +0 -231
  16. package/src/acp/tool.ts +0 -367
  17. package/src/acp/usage.ts +0 -232
  18. package/src/agent/agent.ts +0 -459
  19. package/src/agent/generate.txt +0 -75
  20. package/src/agent/prompt/compaction.txt +0 -9
  21. package/src/agent/prompt/explore.txt +0 -18
  22. package/src/agent/prompt/summary.txt +0 -11
  23. package/src/agent/prompt/title.txt +0 -44
  24. package/src/agent/subagent-permissions.ts +0 -27
  25. package/src/audio.d.ts +0 -14
  26. package/src/auth/index.ts +0 -99
  27. package/src/background/job.ts +0 -39
  28. package/src/bus/global.ts +0 -22
  29. package/src/cli/bootstrap.ts +0 -11
  30. package/src/cli/cmd/account.ts +0 -264
  31. package/src/cli/cmd/acp.ts +0 -73
  32. package/src/cli/cmd/agent.ts +0 -259
  33. package/src/cli/cmd/attach.ts +0 -97
  34. package/src/cli/cmd/cmd.ts +0 -7
  35. package/src/cli/cmd/db.ts +0 -62
  36. package/src/cli/cmd/debug/agent.handler.ts +0 -193
  37. package/src/cli/cmd/debug/agent.ts +0 -27
  38. package/src/cli/cmd/debug/config.ts +0 -14
  39. package/src/cli/cmd/debug/file.ts +0 -73
  40. package/src/cli/cmd/debug/index.ts +0 -87
  41. package/src/cli/cmd/debug/lsp.ts +0 -50
  42. package/src/cli/cmd/debug/ripgrep.ts +0 -79
  43. package/src/cli/cmd/debug/scrap.ts +0 -15
  44. package/src/cli/cmd/debug/skill.ts +0 -15
  45. package/src/cli/cmd/debug/snapshot.ts +0 -50
  46. package/src/cli/cmd/debug/startup.ts +0 -11
  47. package/src/cli/cmd/debug/v2.ts +0 -44
  48. package/src/cli/cmd/export.ts +0 -292
  49. package/src/cli/cmd/generate.ts +0 -54
  50. package/src/cli/cmd/github.handler.ts +0 -1593
  51. package/src/cli/cmd/github.shared.ts +0 -30
  52. package/src/cli/cmd/github.ts +0 -42
  53. package/src/cli/cmd/import.ts +0 -224
  54. package/src/cli/cmd/mcp.ts +0 -849
  55. package/src/cli/cmd/models.ts +0 -66
  56. package/src/cli/cmd/plug.ts +0 -230
  57. package/src/cli/cmd/pr.ts +0 -115
  58. package/src/cli/cmd/prompt-display.ts +0 -1
  59. package/src/cli/cmd/providers.ts +0 -534
  60. package/src/cli/cmd/run/demo.ts +0 -1274
  61. package/src/cli/cmd/run/entry.body.ts +0 -205
  62. package/src/cli/cmd/run/footer.command.tsx +0 -1064
  63. package/src/cli/cmd/run/footer.menu.tsx +0 -351
  64. package/src/cli/cmd/run/footer.permission.tsx +0 -472
  65. package/src/cli/cmd/run/footer.prompt.tsx +0 -1306
  66. package/src/cli/cmd/run/footer.question.tsx +0 -573
  67. package/src/cli/cmd/run/footer.subagent.tsx +0 -173
  68. package/src/cli/cmd/run/footer.ts +0 -1129
  69. package/src/cli/cmd/run/footer.view.tsx +0 -943
  70. package/src/cli/cmd/run/footer.width.ts +0 -27
  71. package/src/cli/cmd/run/permission.shared.ts +0 -256
  72. package/src/cli/cmd/run/prompt.editor.ts +0 -157
  73. package/src/cli/cmd/run/prompt.shared.ts +0 -153
  74. package/src/cli/cmd/run/question.shared.ts +0 -340
  75. package/src/cli/cmd/run/runtime.boot.ts +0 -202
  76. package/src/cli/cmd/run/runtime.lifecycle.ts +0 -406
  77. package/src/cli/cmd/run/runtime.queue.ts +0 -349
  78. package/src/cli/cmd/run/runtime.shared.ts +0 -17
  79. package/src/cli/cmd/run/runtime.stdin.ts +0 -37
  80. package/src/cli/cmd/run/runtime.ts +0 -814
  81. package/src/cli/cmd/run/scrollback.shared.ts +0 -92
  82. package/src/cli/cmd/run/scrollback.surface.ts +0 -431
  83. package/src/cli/cmd/run/scrollback.writer.tsx +0 -352
  84. package/src/cli/cmd/run/session-data.ts +0 -1113
  85. package/src/cli/cmd/run/session-replay.ts +0 -374
  86. package/src/cli/cmd/run/session.shared.ts +0 -196
  87. package/src/cli/cmd/run/splash.ts +0 -275
  88. package/src/cli/cmd/run/stream.transport.ts +0 -1462
  89. package/src/cli/cmd/run/stream.ts +0 -175
  90. package/src/cli/cmd/run/subagent-data.ts +0 -876
  91. package/src/cli/cmd/run/theme.ts +0 -690
  92. package/src/cli/cmd/run/tool.ts +0 -1489
  93. package/src/cli/cmd/run/trace.ts +0 -94
  94. package/src/cli/cmd/run/turn-summary.ts +0 -47
  95. package/src/cli/cmd/run/types.ts +0 -350
  96. package/src/cli/cmd/run/variant.shared.ts +0 -215
  97. package/src/cli/cmd/run.ts +0 -894
  98. package/src/cli/cmd/serve.ts +0 -24
  99. package/src/cli/cmd/session.ts +0 -147
  100. package/src/cli/cmd/stats.ts +0 -393
  101. package/src/cli/cmd/tui.ts +0 -224
  102. package/src/cli/cmd/uninstall.ts +0 -353
  103. package/src/cli/cmd/upgrade.ts +0 -74
  104. package/src/cli/cmd/web.ts +0 -84
  105. package/src/cli/effect/prompt.ts +0 -37
  106. package/src/cli/effect-cmd.ts +0 -96
  107. package/src/cli/error.ts +0 -130
  108. package/src/cli/heap.ts +0 -45
  109. package/src/cli/logo-pixel.ts +0 -35
  110. package/src/cli/logo.ts +0 -1
  111. package/src/cli/network.ts +0 -64
  112. package/src/cli/tui/layer.ts +0 -7
  113. package/src/cli/tui/validate-session.ts +0 -29
  114. package/src/cli/tui/worker.ts +0 -71
  115. package/src/cli/ui.ts +0 -148
  116. package/src/cli/upgrade.ts +0 -53
  117. package/src/command/index.ts +0 -184
  118. package/src/command/template/initialize.txt +0 -66
  119. package/src/command/template/review.txt +0 -101
  120. package/src/config/agent.ts +0 -59
  121. package/src/config/command.ts +0 -39
  122. package/src/config/config.ts +0 -686
  123. package/src/config/entry-name.ts +0 -19
  124. package/src/config/managed.ts +0 -69
  125. package/src/config/markdown.ts +0 -36
  126. package/src/config/parse.ts +0 -79
  127. package/src/config/paths.ts +0 -45
  128. package/src/config/plugin.ts +0 -79
  129. package/src/config/tui-cwd.ts +0 -5
  130. package/src/config/tui-host-attention.ts +0 -21
  131. package/src/config/tui-migrate.ts +0 -132
  132. package/src/config/tui.ts +0 -274
  133. package/src/config/variable.ts +0 -91
  134. package/src/control-plane/adapters/index.ts +0 -41
  135. package/src/control-plane/adapters/worktree.ts +0 -96
  136. package/src/control-plane/dev/README.md +0 -19
  137. package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
  138. package/src/control-plane/types.ts +0 -59
  139. package/src/control-plane/util.ts +0 -39
  140. package/src/control-plane/workspace-adapter-runtime.ts +0 -51
  141. package/src/control-plane/workspace-context.ts +0 -26
  142. package/src/control-plane/workspace.ts +0 -989
  143. package/src/effect/app-runtime.ts +0 -132
  144. package/src/effect/bootstrap-runtime.ts +0 -23
  145. package/src/effect/bridge.ts +0 -84
  146. package/src/effect/config-service.ts +0 -67
  147. package/src/effect/instance-ref.ts +0 -11
  148. package/src/effect/instance-registry.ts +0 -12
  149. package/src/effect/instance-state.ts +0 -69
  150. package/src/effect/promise.ts +0 -17
  151. package/src/effect/run-service.ts +0 -47
  152. package/src/effect/runner.ts +0 -217
  153. package/src/effect/runtime-flags.ts +0 -79
  154. package/src/env/index.ts +0 -43
  155. package/src/event-v2-bridge.ts +0 -79
  156. package/src/format/formatter.ts +0 -404
  157. package/src/format/index.ts +0 -205
  158. package/src/git/index.ts +0 -350
  159. package/src/id/id.ts +0 -80
  160. package/src/ide/index.ts +0 -61
  161. package/src/image/image.ts +0 -174
  162. package/src/index.ts +0 -142
  163. package/src/installation/index.ts +0 -350
  164. package/src/lsp/client.ts +0 -650
  165. package/src/lsp/diagnostic.ts +0 -29
  166. package/src/lsp/language.ts +0 -121
  167. package/src/lsp/launch.ts +0 -21
  168. package/src/lsp/lsp.ts +0 -511
  169. package/src/lsp/server.ts +0 -1983
  170. package/src/markdown.d.ts +0 -4
  171. package/src/mcp/auth.ts +0 -174
  172. package/src/mcp/catalog.ts +0 -153
  173. package/src/mcp/index.ts +0 -953
  174. package/src/mcp/oauth-callback.ts +0 -233
  175. package/src/mcp/oauth-provider.ts +0 -206
  176. package/src/node.ts +0 -4
  177. package/src/patch/index.ts +0 -686
  178. package/src/permission/arity.ts +0 -163
  179. package/src/permission/evaluate.ts +0 -1
  180. package/src/permission/index.ts +0 -230
  181. package/src/plugin/azure.ts +0 -26
  182. package/src/plugin/cloudflare.ts +0 -76
  183. package/src/plugin/digitalocean.ts +0 -383
  184. package/src/plugin/github-copilot/copilot.ts +0 -414
  185. package/src/plugin/github-copilot/models.ts +0 -246
  186. package/src/plugin/index.ts +0 -316
  187. package/src/plugin/install.ts +0 -439
  188. package/src/plugin/loader.ts +0 -237
  189. package/src/plugin/meta.ts +0 -188
  190. package/src/plugin/openai/README.md +0 -31
  191. package/src/plugin/openai/codex.ts +0 -641
  192. package/src/plugin/openai/ws-pool.ts +0 -270
  193. package/src/plugin/openai/ws.ts +0 -381
  194. package/src/plugin/pty-environment.ts +0 -24
  195. package/src/plugin/shared.ts +0 -323
  196. package/src/plugin/snowflake-cortex.ts +0 -529
  197. package/src/plugin/tui/internal.ts +0 -10
  198. package/src/plugin/tui/runtime.ts +0 -1130
  199. package/src/plugin/xai.ts +0 -716
  200. package/src/project/bootstrap-service.ts +0 -9
  201. package/src/project/bootstrap.ts +0 -76
  202. package/src/project/instance-context.ts +0 -24
  203. package/src/project/instance-layer.ts +0 -11
  204. package/src/project/instance-runtime.ts +0 -16
  205. package/src/project/instance-store.ts +0 -209
  206. package/src/project/project.ts +0 -519
  207. package/src/project/vcs.ts +0 -431
  208. package/src/provider/auth.ts +0 -233
  209. package/src/provider/error.ts +0 -188
  210. package/src/provider/model-status.ts +0 -8
  211. package/src/provider/provider.ts +0 -1975
  212. package/src/provider/transform.ts +0 -1543
  213. package/src/question/index.ts +0 -229
  214. package/src/question/schema.ts +0 -10
  215. package/src/server/auth.ts +0 -48
  216. package/src/server/event.ts +0 -13
  217. package/src/server/global-lifecycle.ts +0 -28
  218. package/src/server/init-projectors.ts +0 -3
  219. package/src/server/mdns.ts +0 -47
  220. package/src/server/projectors.ts +0 -1
  221. package/src/server/proxy-util.ts +0 -48
  222. package/src/server/routes/instance/httpapi/AGENTS.md +0 -39
  223. package/src/server/routes/instance/httpapi/api.ts +0 -78
  224. package/src/server/routes/instance/httpapi/errors.ts +0 -193
  225. package/src/server/routes/instance/httpapi/groups/config.ts +0 -65
  226. package/src/server/routes/instance/httpapi/groups/control-plane.ts +0 -35
  227. package/src/server/routes/instance/httpapi/groups/control.ts +0 -76
  228. package/src/server/routes/instance/httpapi/groups/event.ts +0 -29
  229. package/src/server/routes/instance/httpapi/groups/experimental.ts +0 -275
  230. package/src/server/routes/instance/httpapi/groups/file.ts +0 -185
  231. package/src/server/routes/instance/httpapi/groups/global.ts +0 -138
  232. package/src/server/routes/instance/httpapi/groups/instance.ts +0 -206
  233. package/src/server/routes/instance/httpapi/groups/mcp.ts +0 -156
  234. package/src/server/routes/instance/httpapi/groups/metadata.ts +0 -18
  235. package/src/server/routes/instance/httpapi/groups/permission.ts +0 -61
  236. package/src/server/routes/instance/httpapi/groups/project-copy.ts +0 -32
  237. package/src/server/routes/instance/httpapi/groups/project.ts +0 -93
  238. package/src/server/routes/instance/httpapi/groups/provider.ts +0 -101
  239. package/src/server/routes/instance/httpapi/groups/pty.ts +0 -172
  240. package/src/server/routes/instance/httpapi/groups/query.ts +0 -12
  241. package/src/server/routes/instance/httpapi/groups/question.ts +0 -74
  242. package/src/server/routes/instance/httpapi/groups/session.ts +0 -462
  243. package/src/server/routes/instance/httpapi/groups/sync.ts +0 -113
  244. package/src/server/routes/instance/httpapi/groups/tui.ts +0 -208
  245. package/src/server/routes/instance/httpapi/groups/workspace.ts +0 -141
  246. package/src/server/routes/instance/httpapi/handlers/config.ts +0 -34
  247. package/src/server/routes/instance/httpapi/handlers/control-plane.ts +0 -37
  248. package/src/server/routes/instance/httpapi/handlers/control.ts +0 -43
  249. package/src/server/routes/instance/httpapi/handlers/event.ts +0 -99
  250. package/src/server/routes/instance/httpapi/handlers/experimental.ts +0 -192
  251. package/src/server/routes/instance/httpapi/handlers/file.ts +0 -139
  252. package/src/server/routes/instance/httpapi/handlers/global.ts +0 -156
  253. package/src/server/routes/instance/httpapi/handlers/instance.ts +0 -110
  254. package/src/server/routes/instance/httpapi/handlers/mcp.ts +0 -111
  255. package/src/server/routes/instance/httpapi/handlers/permission.ts +0 -41
  256. package/src/server/routes/instance/httpapi/handlers/project-copy.ts +0 -83
  257. package/src/server/routes/instance/httpapi/handlers/project.ts +0 -63
  258. package/src/server/routes/instance/httpapi/handlers/provider.ts +0 -113
  259. package/src/server/routes/instance/httpapi/handlers/pty.ts +0 -273
  260. package/src/server/routes/instance/httpapi/handlers/question.ts +0 -54
  261. package/src/server/routes/instance/httpapi/handlers/session-errors.ts +0 -21
  262. package/src/server/routes/instance/httpapi/handlers/session.ts +0 -440
  263. package/src/server/routes/instance/httpapi/handlers/sync.ts +0 -89
  264. package/src/server/routes/instance/httpapi/handlers/tui.ts +0 -131
  265. package/src/server/routes/instance/httpapi/handlers/workspace.ts +0 -102
  266. package/src/server/routes/instance/httpapi/lifecycle.ts +0 -54
  267. package/src/server/routes/instance/httpapi/middleware/authorization.ts +0 -150
  268. package/src/server/routes/instance/httpapi/middleware/compression.ts +0 -64
  269. package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +0 -29
  270. package/src/server/routes/instance/httpapi/middleware/error.ts +0 -43
  271. package/src/server/routes/instance/httpapi/middleware/fence.ts +0 -25
  272. package/src/server/routes/instance/httpapi/middleware/instance-context.ts +0 -43
  273. package/src/server/routes/instance/httpapi/middleware/proxy.ts +0 -108
  274. package/src/server/routes/instance/httpapi/middleware/schema-error.ts +0 -41
  275. package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +0 -250
  276. package/src/server/routes/instance/httpapi/public.ts +0 -535
  277. package/src/server/routes/instance/httpapi/server.ts +0 -298
  278. package/src/server/routes/instance/httpapi/websocket-tracker.ts +0 -57
  279. package/src/server/server.ts +0 -225
  280. package/src/server/shared/fence.ts +0 -60
  281. package/src/server/shared/pty-ticket.ts +0 -15
  282. package/src/server/shared/public-ui.ts +0 -12
  283. package/src/server/shared/tui-control.ts +0 -28
  284. package/src/server/shared/ui.ts +0 -108
  285. package/src/server/shared/workspace-routing.ts +0 -38
  286. package/src/server/tui-event.ts +0 -53
  287. package/src/session/compaction.ts +0 -620
  288. package/src/session/instruction.ts +0 -241
  289. package/src/session/llm/AGENTS.md +0 -90
  290. package/src/session/llm/ai-sdk.ts +0 -288
  291. package/src/session/llm/native-request.ts +0 -196
  292. package/src/session/llm/native-runtime.ts +0 -195
  293. package/src/session/llm/request.ts +0 -216
  294. package/src/session/llm.ts +0 -415
  295. package/src/session/message-error.ts +0 -14
  296. package/src/session/message-v2.ts +0 -747
  297. package/src/session/message.ts +0 -148
  298. package/src/session/overflow.ts +0 -34
  299. package/src/session/processor.ts +0 -1084
  300. package/src/session/prompt/anthropic.txt +0 -109
  301. package/src/session/prompt/beast.txt +0 -151
  302. package/src/session/prompt/build-switch.txt +0 -9
  303. package/src/session/prompt/codex.txt +0 -83
  304. package/src/session/prompt/copilot-gpt-5.txt +0 -147
  305. package/src/session/prompt/default.txt +0 -99
  306. package/src/session/prompt/gemini.txt +0 -159
  307. package/src/session/prompt/gpt.txt +0 -111
  308. package/src/session/prompt/kimi.txt +0 -99
  309. package/src/session/prompt/plan-mode.txt +0 -74
  310. package/src/session/prompt/plan-reminder-anthropic.txt +0 -71
  311. package/src/session/prompt/plan.txt +0 -30
  312. package/src/session/prompt/trinity.txt +0 -101
  313. package/src/session/prompt.ts +0 -1707
  314. package/src/session/reminders.ts +0 -92
  315. package/src/session/retry.ts +0 -201
  316. package/src/session/revert.ts +0 -160
  317. package/src/session/run-state.ts +0 -156
  318. package/src/session/schema.ts +0 -26
  319. package/src/session/session.ts +0 -1119
  320. package/src/session/status.ts +0 -97
  321. package/src/session/summary.ts +0 -165
  322. package/src/session/system.ts +0 -117
  323. package/src/session/todo.ts +0 -90
  324. package/src/session/tools.ts +0 -207
  325. package/src/share/session.ts +0 -61
  326. package/src/share/share-next.ts +0 -385
  327. package/src/skill/discovery.ts +0 -109
  328. package/src/skill/index.ts +0 -366
  329. package/src/snapshot/index.ts +0 -808
  330. package/src/sql.d.ts +0 -4
  331. package/src/storage/schema.ts +0 -5
  332. package/src/storage/storage.ts +0 -329
  333. package/src/sync/README.md +0 -179
  334. package/src/sync/schema.ts +0 -11
  335. package/src/temporary.ts +0 -31
  336. package/src/tool/apply_patch.ts +0 -315
  337. package/src/tool/apply_patch.txt +0 -33
  338. package/src/tool/apply_patch.zh.txt +0 -33
  339. package/src/tool/description.ts +0 -100
  340. package/src/tool/edit.ts +0 -739
  341. package/src/tool/edit.txt +0 -10
  342. package/src/tool/edit.zh.txt +0 -10
  343. package/src/tool/external-directory.ts +0 -49
  344. package/src/tool/glob.ts +0 -78
  345. package/src/tool/glob.txt +0 -6
  346. package/src/tool/glob.zh.txt +0 -6
  347. package/src/tool/grep.ts +0 -114
  348. package/src/tool/grep.txt +0 -8
  349. package/src/tool/grep.zh.txt +0 -8
  350. package/src/tool/invalid.ts +0 -21
  351. package/src/tool/json-schema.ts +0 -164
  352. package/src/tool/lsp.ts +0 -115
  353. package/src/tool/lsp.txt +0 -24
  354. package/src/tool/lsp.zh.txt +0 -24
  355. package/src/tool/mcp-websearch.ts +0 -96
  356. package/src/tool/plan-enter.txt +0 -14
  357. package/src/tool/plan-enter.zh.txt +0 -14
  358. package/src/tool/plan-exit.txt +0 -13
  359. package/src/tool/plan-exit.zh.txt +0 -13
  360. package/src/tool/plan.ts +0 -81
  361. package/src/tool/question.ts +0 -46
  362. package/src/tool/question.txt +0 -10
  363. package/src/tool/question.zh.txt +0 -10
  364. package/src/tool/read.ts +0 -388
  365. package/src/tool/read.txt +0 -14
  366. package/src/tool/read.zh.txt +0 -14
  367. package/src/tool/registry.ts +0 -440
  368. package/src/tool/schema.ts +0 -14
  369. package/src/tool/shell/id.ts +0 -19
  370. package/src/tool/shell/prompt.ts +0 -307
  371. package/src/tool/shell/shell.txt +0 -21
  372. package/src/tool/shell.ts +0 -657
  373. package/src/tool/skill.ts +0 -73
  374. package/src/tool/skill.txt +0 -5
  375. package/src/tool/skill.zh.txt +0 -5
  376. package/src/tool/task.ts +0 -348
  377. package/src/tool/task.txt +0 -19
  378. package/src/tool/task.zh.txt +0 -19
  379. package/src/tool/todo.ts +0 -59
  380. package/src/tool/todowrite.txt +0 -44
  381. package/src/tool/todowrite.zh.txt +0 -44
  382. package/src/tool/tool.ts +0 -183
  383. package/src/tool/truncate.ts +0 -158
  384. package/src/tool/truncation-dir.ts +0 -4
  385. package/src/tool/webfetch.ts +0 -194
  386. package/src/tool/webfetch.txt +0 -13
  387. package/src/tool/webfetch.zh.txt +0 -13
  388. package/src/tool/websearch.ts +0 -145
  389. package/src/tool/websearch.txt +0 -14
  390. package/src/tool/websearch.zh.txt +0 -14
  391. package/src/tool/write.ts +0 -106
  392. package/src/tool/write.txt +0 -8
  393. package/src/tool/write.zh.txt +0 -8
  394. package/src/util/archive.ts +0 -17
  395. package/src/util/bom.ts +0 -27
  396. package/src/util/data-url.ts +0 -9
  397. package/src/util/defer.ts +0 -10
  398. package/src/util/effect-http-client.ts +0 -11
  399. package/src/util/error.ts +0 -1
  400. package/src/util/filesystem.ts +0 -251
  401. package/src/util/html.ts +0 -8
  402. package/src/util/iife.ts +0 -3
  403. package/src/util/lazy.ts +0 -20
  404. package/src/util/local-context.ts +0 -25
  405. package/src/util/locale.ts +0 -2
  406. package/src/util/media.ts +0 -26
  407. package/src/util/process.ts +0 -177
  408. package/src/util/proxy-env.ts +0 -72
  409. package/src/util/queue.ts +0 -32
  410. package/src/util/record.ts +0 -1
  411. package/src/util/repository.ts +0 -232
  412. package/src/util/rpc.ts +0 -66
  413. package/src/util/signal.ts +0 -12
  414. package/src/util/timeout.ts +0 -13
  415. package/src/util/token.ts +0 -1
  416. package/src/util/wildcard.ts +0 -59
  417. package/src/worktree/index.ts +0 -654
@@ -1,224 +0,0 @@
1
- import { cmd } from "@/cli/cmd/cmd"
2
- import { Rpc } from "@/util/rpc"
3
- import { type rpc } from "../tui/worker"
4
- import path from "path"
5
- import { fileURLToPath } from "url"
6
- import { UI } from "@/cli/ui"
7
- import { errorMessage } from "@opencode-ai/tui/util/error"
8
- import { withTimeout } from "@/util/timeout"
9
- import { withNetworkOptions, resolveNetworkOptionsNoConfig } from "@/cli/network"
10
- import { Filesystem } from "@/util/filesystem"
11
- import type { GlobalEvent } from "@opencode-ai/sdk/v2"
12
- import type { EventSource } from "@opencode-ai/tui/context/sdk"
13
- import { writeHeapSnapshot } from "v8"
14
- import { validateSession } from "../tui/validate-session"
15
- import { win32InstallCtrlCGuard } from "@opencode-ai/tui/terminal-win32"
16
-
17
- declare global {
18
- const OPENCODE_WORKER_PATH: string
19
- }
20
-
21
- type RpcClient = ReturnType<typeof Rpc.client<typeof rpc>>
22
-
23
- function createWorkerFetch(client: RpcClient): typeof fetch {
24
- const fn = async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {
25
- const request = new Request(input, init)
26
- const body = request.body ? await request.text() : undefined
27
- const result = await client.call("fetch", {
28
- url: request.url,
29
- method: request.method,
30
- headers: Object.fromEntries(request.headers.entries()),
31
- body,
32
- })
33
- return new Response(result.body, {
34
- status: result.status,
35
- headers: result.headers,
36
- })
37
- }
38
- return fn as typeof fetch
39
- }
40
-
41
- function createEventSource(client: RpcClient): EventSource {
42
- return {
43
- subscribe: async (handler) => {
44
- return client.on<GlobalEvent>("global.event", (e) => {
45
- handler(e)
46
- })
47
- },
48
- }
49
- }
50
-
51
- async function target() {
52
- if (typeof OPENCODE_WORKER_PATH !== "undefined") return OPENCODE_WORKER_PATH
53
- const dist = new URL("./cli/tui/worker.js", import.meta.url)
54
- if (await Filesystem.exists(fileURLToPath(dist))) return dist
55
- return new URL("../tui/worker.ts", import.meta.url)
56
- }
57
-
58
- async function input(value?: string) {
59
- const piped = process.stdin.isTTY ? undefined : await Bun.stdin.text()
60
- if (!value) return piped
61
- if (!piped) return value
62
- return piped + "\n" + value
63
- }
64
-
65
- export function resolveThreadDirectory(project?: string, envPWD = process.env.PWD, cwd = process.cwd()) {
66
- const root = Filesystem.resolve(envPWD ?? cwd)
67
- if (project) return Filesystem.resolve(path.isAbsolute(project) ? project : path.join(root, project))
68
- return Filesystem.resolve(cwd)
69
- }
70
-
71
- export const TuiThreadCommand = cmd({
72
- command: "$0 [project]",
73
- describe: "start opencode tui",
74
- builder: (yargs) =>
75
- withNetworkOptions(yargs)
76
- .positional("project", {
77
- type: "string",
78
- describe: "path to start opencode in",
79
- })
80
- .option("model", {
81
- type: "string",
82
- alias: ["m"],
83
- describe: "model to use in the format of provider/model",
84
- })
85
- .option("continue", {
86
- alias: ["c"],
87
- describe: "continue the last session",
88
- type: "boolean",
89
- })
90
- .option("session", {
91
- alias: ["s"],
92
- type: "string",
93
- describe: "session id to continue",
94
- })
95
- .option("fork", {
96
- type: "boolean",
97
- describe: "fork the session when continuing (use with --continue or --session)",
98
- })
99
- .option("prompt", {
100
- type: "string",
101
- describe: "prompt to use",
102
- })
103
- .option("agent", {
104
- type: "string",
105
- describe: "agent to use",
106
- }),
107
- handler: async (args) => {
108
- const unguard = win32InstallCtrlCGuard()
109
- try {
110
- const { TuiConfig } = await import("@/config/tui")
111
- if (args.fork && !args.continue && !args.session) {
112
- UI.error("--fork requires --continue or --session")
113
- process.exitCode = 1
114
- return
115
- }
116
-
117
- // Resolve relative --project paths from PWD, then use the real cwd after
118
- // chdir so the thread and worker share the same directory key.
119
- const next = resolveThreadDirectory(args.project)
120
- const file = await target()
121
- try {
122
- process.chdir(next)
123
- } catch {
124
- UI.error("Failed to change directory to " + next)
125
- return
126
- }
127
- const cwd = Filesystem.resolve(process.cwd())
128
-
129
- const worker = new Worker(file)
130
- const client = Rpc.client<typeof rpc>(worker)
131
- const reload = () => {
132
- client.call("reload", undefined).catch(() => {})
133
- }
134
- process.on("SIGUSR2", reload)
135
-
136
- let stopped = false
137
- const stop = async () => {
138
- if (stopped) return
139
- stopped = true
140
- process.off("SIGUSR2", reload)
141
- await withTimeout(client.call("shutdown", undefined), 5000).catch(() => {})
142
- worker.terminate()
143
- }
144
-
145
- const prompt = await input(args.prompt)
146
- const config = await TuiConfig.get()
147
-
148
- const network = resolveNetworkOptionsNoConfig(args)
149
- const external =
150
- process.argv.includes("--port") ||
151
- process.argv.includes("--hostname") ||
152
- process.argv.includes("--mdns") ||
153
- network.mdns ||
154
- network.port !== 0 ||
155
- network.hostname !== "127.0.0.1"
156
-
157
- const transport = external
158
- ? {
159
- url: (await client.call("server", network)).url,
160
- fetch: undefined,
161
- events: undefined,
162
- }
163
- : {
164
- url: "http://opencode.internal",
165
- fetch: createWorkerFetch(client),
166
- events: createEventSource(client),
167
- }
168
-
169
- try {
170
- await validateSession({
171
- url: transport.url,
172
- sessionID: args.session,
173
- directory: cwd,
174
- fetch: transport.fetch,
175
- })
176
- } catch (error) {
177
- UI.error(errorMessage(error))
178
- process.exitCode = 1
179
- return
180
- }
181
-
182
- setTimeout(() => {
183
- client.call("checkUpgrade", { directory: cwd }).catch(() => {})
184
- }, 1000).unref?.()
185
-
186
- try {
187
- const { Effect } = await import("effect")
188
- const { run } = await import("../tui/layer")
189
- const { createLegacyTuiPluginHost } = await import("@/plugin/tui/runtime")
190
- await Effect.runPromise(
191
- run({
192
- url: transport.url,
193
- async onSnapshot() {
194
- const tui = writeHeapSnapshot("tui.heapsnapshot")
195
- const server = await client.call("snapshot", undefined)
196
- return [tui, server]
197
- },
198
- config,
199
- pluginHost: createLegacyTuiPluginHost(),
200
- directory: cwd,
201
- fetch: transport.fetch,
202
- events: transport.events,
203
- args: {
204
- continue: args.continue,
205
- sessionID: args.session,
206
- agent: args.agent,
207
- model: args.model,
208
- prompt,
209
- fork: args.fork,
210
- },
211
- }),
212
- )
213
- } finally {
214
- await stop()
215
- }
216
- } finally {
217
- try {
218
- unguard?.()
219
- } catch {}
220
- }
221
- process.exit(0)
222
- },
223
- })
224
- // scratch
@@ -1,353 +0,0 @@
1
- import type { Argv } from "yargs"
2
- import { UI } from "../ui"
3
- import * as prompts from "@clack/prompts"
4
- import { Installation } from "../../installation"
5
- import { Global } from "@opencode-ai/core/global"
6
- import fs from "fs/promises"
7
- import path from "path"
8
- import os from "os"
9
- import { Filesystem } from "@/util/filesystem"
10
- import { Process } from "@/util/process"
11
-
12
- interface UninstallArgs {
13
- keepConfig: boolean
14
- keepData: boolean
15
- dryRun: boolean
16
- force: boolean
17
- }
18
-
19
- interface RemovalTargets {
20
- directories: Array<{ path: string; label: string; keep: boolean }>
21
- shellConfig: string | null
22
- binary: string | null
23
- }
24
-
25
- export const UninstallCommand = {
26
- command: "uninstall",
27
- describe: "uninstall opencode and remove all related files",
28
- builder: (yargs: Argv) =>
29
- yargs
30
- .option("keep-config", {
31
- alias: "c",
32
- type: "boolean",
33
- describe: "keep configuration files",
34
- default: false,
35
- })
36
- .option("keep-data", {
37
- alias: "d",
38
- type: "boolean",
39
- describe: "keep session data and snapshots",
40
- default: false,
41
- })
42
- .option("dry-run", {
43
- type: "boolean",
44
- describe: "show what would be removed without removing",
45
- default: false,
46
- })
47
- .option("force", {
48
- alias: "f",
49
- type: "boolean",
50
- describe: "skip confirmation prompts",
51
- default: false,
52
- }),
53
-
54
- handler: async (args: UninstallArgs) => {
55
- UI.empty()
56
- UI.println(UI.logo(" "))
57
- UI.empty()
58
- prompts.intro("Uninstall OnlyCode")
59
-
60
- const method = await Installation.method()
61
- prompts.log.info(`Installation method: ${method}`)
62
-
63
- const targets = await collectRemovalTargets(args, method)
64
-
65
- await showRemovalSummary(targets, method)
66
-
67
- if (!args.force && !args.dryRun) {
68
- const confirm = await prompts.confirm({
69
- message: "Are you sure you want to uninstall?",
70
- initialValue: false,
71
- })
72
- if (!confirm || prompts.isCancel(confirm)) {
73
- prompts.outro("Cancelled")
74
- return
75
- }
76
- }
77
-
78
- if (args.dryRun) {
79
- prompts.log.warn("Dry run - no changes made")
80
- prompts.outro("Done")
81
- return
82
- }
83
-
84
- await executeUninstall(method, targets)
85
-
86
- prompts.outro("Done")
87
- },
88
- }
89
-
90
- async function collectRemovalTargets(args: UninstallArgs, method: Installation.Method): Promise<RemovalTargets> {
91
- const directories: RemovalTargets["directories"] = [
92
- { path: Global.Path.data, label: "Data", keep: args.keepData },
93
- { path: Global.Path.cache, label: "Cache", keep: false },
94
- { path: Global.Path.config, label: "Config", keep: args.keepConfig },
95
- { path: Global.Path.state, label: "State", keep: false },
96
- ]
97
-
98
- const shellConfig = method === "curl" ? await getShellConfigFile() : null
99
- const binary = method === "curl" ? process.execPath : null
100
-
101
- return { directories, shellConfig, binary }
102
- }
103
-
104
- async function showRemovalSummary(targets: RemovalTargets, method: Installation.Method) {
105
- prompts.log.message("The following will be removed:")
106
-
107
- for (const dir of targets.directories) {
108
- const exists = await fs
109
- .access(dir.path)
110
- .then(() => true)
111
- .catch(() => false)
112
- if (!exists) continue
113
-
114
- const size = await getDirectorySize(dir.path)
115
- const sizeStr = formatSize(size)
116
- const status = dir.keep ? UI.Style.TEXT_DIM + "(keeping)" : ""
117
- const prefix = dir.keep ? "○" : "✓"
118
-
119
- prompts.log.info(` ${prefix} ${dir.label}: ${shortenPath(dir.path)} ${UI.Style.TEXT_DIM}(${sizeStr})${status}`)
120
- }
121
-
122
- if (targets.binary) {
123
- prompts.log.info(` ✓ Binary: ${shortenPath(targets.binary)}`)
124
- }
125
-
126
- if (targets.shellConfig) {
127
- prompts.log.info(` ✓ Shell PATH in ${shortenPath(targets.shellConfig)}`)
128
- }
129
-
130
- if (method !== "curl" && method !== "unknown") {
131
- const cmds: Record<string, string> = {
132
- npm: "npm uninstall -g opencode-ai",
133
- pnpm: "pnpm uninstall -g opencode-ai",
134
- bun: "bun remove -g opencode-ai",
135
- yarn: "yarn global remove opencode-ai",
136
- brew: "brew uninstall opencode",
137
- choco: "choco uninstall opencode",
138
- scoop: "scoop uninstall opencode",
139
- }
140
- prompts.log.info(` ✓ Package: ${cmds[method] || method}`)
141
- }
142
- }
143
-
144
- async function executeUninstall(method: Installation.Method, targets: RemovalTargets) {
145
- const spinner = prompts.spinner()
146
- const errors: string[] = []
147
-
148
- for (const dir of targets.directories) {
149
- if (dir.keep) {
150
- prompts.log.step(`Skipping ${dir.label} (--keep-${dir.label.toLowerCase()})`)
151
- continue
152
- }
153
-
154
- const exists = await fs
155
- .access(dir.path)
156
- .then(() => true)
157
- .catch(() => false)
158
- if (!exists) continue
159
-
160
- spinner.start(`Removing ${dir.label}...`)
161
- const err = await fs.rm(dir.path, { recursive: true, force: true }).catch((e) => e)
162
- if (err) {
163
- spinner.stop(`Failed to remove ${dir.label}`, 1)
164
- errors.push(`${dir.label}: ${err.message}`)
165
- continue
166
- }
167
- spinner.stop(`Removed ${dir.label}`)
168
- }
169
-
170
- if (targets.shellConfig) {
171
- spinner.start("Cleaning shell config...")
172
- const err = await cleanShellConfig(targets.shellConfig).catch((e) => e)
173
- if (err) {
174
- spinner.stop("Failed to clean shell config", 1)
175
- errors.push(`Shell config: ${err.message}`)
176
- } else {
177
- spinner.stop("Cleaned shell config")
178
- }
179
- }
180
-
181
- if (method !== "curl" && method !== "unknown") {
182
- const cmds: Record<string, string[]> = {
183
- npm: ["npm", "uninstall", "-g", "opencode-ai"],
184
- pnpm: ["pnpm", "uninstall", "-g", "opencode-ai"],
185
- bun: ["bun", "remove", "-g", "opencode-ai"],
186
- yarn: ["yarn", "global", "remove", "opencode-ai"],
187
- brew: ["brew", "uninstall", "opencode"],
188
- choco: ["choco", "uninstall", "opencode"],
189
- scoop: ["scoop", "uninstall", "opencode"],
190
- }
191
-
192
- const cmd = cmds[method]
193
- if (cmd) {
194
- spinner.start(`Running ${cmd.join(" ")}...`)
195
- const result = await Process.run(method === "choco" ? ["choco", "uninstall", "opencode", "-y", "-r"] : cmd, {
196
- nothrow: true,
197
- })
198
- if (result.code !== 0) {
199
- spinner.stop(`Package manager uninstall failed: exit code ${result.code}`, 1)
200
- const text = `${result.stdout.toString("utf8")}\n${result.stderr.toString("utf8")}`
201
- if (method === "choco" && text.includes("not running from an elevated command shell")) {
202
- prompts.log.warn(`You may need to run '${cmd.join(" ")}' from an elevated command shell`)
203
- } else {
204
- prompts.log.warn(`You may need to run manually: ${cmd.join(" ")}`)
205
- }
206
- } else {
207
- spinner.stop("Package removed")
208
- }
209
- }
210
- }
211
-
212
- if (method === "curl" && targets.binary) {
213
- UI.empty()
214
- prompts.log.message("To finish removing the binary, run:")
215
- prompts.log.info(` rm "${targets.binary}"`)
216
-
217
- const binDir = path.dirname(targets.binary)
218
- if (binDir.includes(".opencode")) {
219
- prompts.log.info(` rmdir "${binDir}" 2>/dev/null`)
220
- }
221
- }
222
-
223
- if (errors.length > 0) {
224
- UI.empty()
225
- prompts.log.warn("Some operations failed:")
226
- for (const err of errors) {
227
- prompts.log.error(` ${err}`)
228
- }
229
- }
230
-
231
- UI.empty()
232
- prompts.log.success("Thank you for using OnlyCode!")
233
- }
234
-
235
- async function getShellConfigFile(): Promise<string | null> {
236
- const shell = path.basename(process.env.SHELL || "bash")
237
- const home = os.homedir()
238
- const xdgConfig = process.env.XDG_CONFIG_HOME || path.join(home, ".config")
239
-
240
- const configFiles: Record<string, string[]> = {
241
- fish: [path.join(xdgConfig, "fish", "config.fish")],
242
- zsh: [
243
- path.join(home, ".zshrc"),
244
- path.join(home, ".zshenv"),
245
- path.join(xdgConfig, "zsh", ".zshrc"),
246
- path.join(xdgConfig, "zsh", ".zshenv"),
247
- ],
248
- bash: [
249
- path.join(home, ".bashrc"),
250
- path.join(home, ".bash_profile"),
251
- path.join(home, ".profile"),
252
- path.join(xdgConfig, "bash", ".bashrc"),
253
- path.join(xdgConfig, "bash", ".bash_profile"),
254
- ],
255
- ash: [path.join(home, ".ashrc"), path.join(home, ".profile")],
256
- sh: [path.join(home, ".profile")],
257
- }
258
-
259
- const candidates = configFiles[shell] || configFiles.bash
260
-
261
- for (const file of candidates) {
262
- const exists = await fs
263
- .access(file)
264
- .then(() => true)
265
- .catch(() => false)
266
- if (!exists) continue
267
-
268
- const content = await Filesystem.readText(file).catch(() => "")
269
- if (content.includes("# opencode") || content.includes(".opencode/bin")) {
270
- return file
271
- }
272
- }
273
-
274
- return null
275
- }
276
-
277
- async function cleanShellConfig(file: string) {
278
- const content = await Filesystem.readText(file)
279
- const lines = content.split("\n")
280
-
281
- const filtered: string[] = []
282
- let skip = false
283
-
284
- for (const line of lines) {
285
- const trimmed = line.trim()
286
-
287
- if (trimmed === "# opencode") {
288
- skip = true
289
- continue
290
- }
291
-
292
- if (skip) {
293
- skip = false
294
- if (trimmed.includes(".opencode/bin") || trimmed.includes("fish_add_path")) {
295
- continue
296
- }
297
- }
298
-
299
- if (
300
- (trimmed.startsWith("export PATH=") && trimmed.includes(".opencode/bin")) ||
301
- (trimmed.startsWith("fish_add_path") && trimmed.includes(".opencode"))
302
- ) {
303
- continue
304
- }
305
-
306
- filtered.push(line)
307
- }
308
-
309
- while (filtered.length > 0 && filtered[filtered.length - 1].trim() === "") {
310
- filtered.pop()
311
- }
312
-
313
- const output = filtered.join("\n") + "\n"
314
- await Filesystem.write(file, output)
315
- }
316
-
317
- async function getDirectorySize(dir: string): Promise<number> {
318
- let total = 0
319
-
320
- const walk = async (current: string) => {
321
- const entries = await fs.readdir(current, { withFileTypes: true }).catch(() => [])
322
-
323
- for (const entry of entries) {
324
- const full = path.join(current, entry.name)
325
- if (entry.isDirectory()) {
326
- await walk(full)
327
- continue
328
- }
329
- if (entry.isFile()) {
330
- const stat = await fs.stat(full).catch(() => null)
331
- if (stat) total += stat.size
332
- }
333
- }
334
- }
335
-
336
- await walk(dir)
337
- return total
338
- }
339
-
340
- function formatSize(bytes: number): string {
341
- if (bytes < 1024) return `${bytes} B`
342
- if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`
343
- if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`
344
- return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`
345
- }
346
-
347
- function shortenPath(p: string): string {
348
- const home = os.homedir()
349
- if (p.startsWith(home)) {
350
- return p.replace(home, "~")
351
- }
352
- return p
353
- }
@@ -1,74 +0,0 @@
1
- import type { Argv } from "yargs"
2
- import { UI } from "../ui"
3
- import * as prompts from "@clack/prompts"
4
- import { Installation } from "../../installation"
5
- import { InstallationVersion } from "@opencode-ai/core/installation/version"
6
-
7
- export const UpgradeCommand = {
8
- command: "upgrade [target]",
9
- describe: "upgrade opencode to the latest or a specific version",
10
- builder: (yargs: Argv) => {
11
- return yargs
12
- .positional("target", {
13
- describe: "version to upgrade to, for ex '0.1.48' or 'v0.1.48'",
14
- type: "string",
15
- })
16
- .option("method", {
17
- alias: "m",
18
- describe: "installation method to use",
19
- type: "string",
20
- choices: ["curl", "npm", "pnpm", "bun", "brew", "choco", "scoop"],
21
- })
22
- },
23
- handler: async (args: { target?: string; method?: string }) => {
24
- UI.empty()
25
- UI.println(UI.logo(" "))
26
- UI.empty()
27
- prompts.intro("Upgrade")
28
- const detectedMethod = await Installation.method()
29
- const method = (args.method as Installation.Method) ?? detectedMethod
30
- if (method === "unknown") {
31
- prompts.log.error(`opencode is installed to ${process.execPath} and may be managed by a package manager`)
32
- const install = await prompts.select({
33
- message: "Install anyways?",
34
- options: [
35
- { label: "Yes", value: true },
36
- { label: "No", value: false },
37
- ],
38
- initialValue: false,
39
- })
40
- if (!install) {
41
- prompts.outro("Done")
42
- return
43
- }
44
- }
45
- prompts.log.info("Using method: " + method)
46
- const target = args.target ? args.target.replace(/^v/, "") : await Installation.latest()
47
-
48
- if (InstallationVersion === target) {
49
- prompts.log.warn(`opencode upgrade skipped: ${target} is already installed`)
50
- prompts.outro("Done")
51
- return
52
- }
53
-
54
- prompts.log.info(`From ${InstallationVersion} → ${target}`)
55
- const spinner = prompts.spinner()
56
- spinner.start("Upgrading...")
57
- const err = await Installation.upgrade(method, target).catch((err) => err)
58
- if (err) {
59
- spinner.stop("Upgrade failed", 1)
60
- if (err instanceof Installation.UpgradeFailedError) {
61
- // necessary because choco only allows install/upgrade in elevated terminals
62
- if (method === "choco" && err.stderr.includes("not running from an elevated command shell")) {
63
- prompts.log.error("Please run the terminal as Administrator and try again")
64
- } else {
65
- prompts.log.error(err.stderr)
66
- }
67
- } else if (err instanceof Error) prompts.log.error(err.message)
68
- prompts.outro("Done")
69
- return
70
- }
71
- spinner.stop("Upgrade complete")
72
- prompts.outro("Done")
73
- },
74
- }