onlycode 1.18.0 → 1.20.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 (418) hide show
  1. package/bin/{opencode.cjs → onlycode.cjs} +8 -42
  2. package/package.json +12 -147
  3. package/src/account/account.ts +0 -463
  4. package/src/account/repo.ts +0 -173
  5. package/src/account/schema.ts +0 -99
  6. package/src/account/url.ts +0 -8
  7. package/src/acp/agent.ts +0 -95
  8. package/src/acp/config-option.ts +0 -203
  9. package/src/acp/content.ts +0 -250
  10. package/src/acp/directory.ts +0 -210
  11. package/src/acp/error.ts +0 -90
  12. package/src/acp/event.ts +0 -342
  13. package/src/acp/permission.ts +0 -124
  14. package/src/acp/profile.ts +0 -42
  15. package/src/acp/service.ts +0 -1048
  16. package/src/acp/session.ts +0 -231
  17. package/src/acp/tool.ts +0 -367
  18. package/src/acp/usage.ts +0 -232
  19. package/src/agent/agent.ts +0 -459
  20. package/src/agent/generate.txt +0 -75
  21. package/src/agent/prompt/compaction.txt +0 -9
  22. package/src/agent/prompt/explore.txt +0 -18
  23. package/src/agent/prompt/summary.txt +0 -11
  24. package/src/agent/prompt/title.txt +0 -44
  25. package/src/agent/subagent-permissions.ts +0 -27
  26. package/src/audio.d.ts +0 -14
  27. package/src/auth/index.ts +0 -99
  28. package/src/background/job.ts +0 -39
  29. package/src/bus/global.ts +0 -22
  30. package/src/cli/bootstrap.ts +0 -11
  31. package/src/cli/cmd/account.ts +0 -264
  32. package/src/cli/cmd/acp.ts +0 -73
  33. package/src/cli/cmd/agent.ts +0 -259
  34. package/src/cli/cmd/attach.ts +0 -97
  35. package/src/cli/cmd/cmd.ts +0 -7
  36. package/src/cli/cmd/db.ts +0 -62
  37. package/src/cli/cmd/debug/agent.handler.ts +0 -193
  38. package/src/cli/cmd/debug/agent.ts +0 -27
  39. package/src/cli/cmd/debug/config.ts +0 -14
  40. package/src/cli/cmd/debug/file.ts +0 -73
  41. package/src/cli/cmd/debug/index.ts +0 -87
  42. package/src/cli/cmd/debug/lsp.ts +0 -50
  43. package/src/cli/cmd/debug/ripgrep.ts +0 -79
  44. package/src/cli/cmd/debug/scrap.ts +0 -15
  45. package/src/cli/cmd/debug/skill.ts +0 -15
  46. package/src/cli/cmd/debug/snapshot.ts +0 -50
  47. package/src/cli/cmd/debug/startup.ts +0 -11
  48. package/src/cli/cmd/debug/v2.ts +0 -44
  49. package/src/cli/cmd/export.ts +0 -292
  50. package/src/cli/cmd/generate.ts +0 -54
  51. package/src/cli/cmd/github.handler.ts +0 -1593
  52. package/src/cli/cmd/github.shared.ts +0 -30
  53. package/src/cli/cmd/github.ts +0 -42
  54. package/src/cli/cmd/import.ts +0 -224
  55. package/src/cli/cmd/mcp.ts +0 -849
  56. package/src/cli/cmd/models.ts +0 -66
  57. package/src/cli/cmd/plug.ts +0 -230
  58. package/src/cli/cmd/pr.ts +0 -115
  59. package/src/cli/cmd/prompt-display.ts +0 -1
  60. package/src/cli/cmd/providers.ts +0 -534
  61. package/src/cli/cmd/run/demo.ts +0 -1274
  62. package/src/cli/cmd/run/entry.body.ts +0 -205
  63. package/src/cli/cmd/run/footer.command.tsx +0 -1064
  64. package/src/cli/cmd/run/footer.menu.tsx +0 -351
  65. package/src/cli/cmd/run/footer.permission.tsx +0 -472
  66. package/src/cli/cmd/run/footer.prompt.tsx +0 -1306
  67. package/src/cli/cmd/run/footer.question.tsx +0 -573
  68. package/src/cli/cmd/run/footer.subagent.tsx +0 -173
  69. package/src/cli/cmd/run/footer.ts +0 -1129
  70. package/src/cli/cmd/run/footer.view.tsx +0 -943
  71. package/src/cli/cmd/run/footer.width.ts +0 -27
  72. package/src/cli/cmd/run/permission.shared.ts +0 -256
  73. package/src/cli/cmd/run/prompt.editor.ts +0 -157
  74. package/src/cli/cmd/run/prompt.shared.ts +0 -153
  75. package/src/cli/cmd/run/question.shared.ts +0 -340
  76. package/src/cli/cmd/run/runtime.boot.ts +0 -202
  77. package/src/cli/cmd/run/runtime.lifecycle.ts +0 -406
  78. package/src/cli/cmd/run/runtime.queue.ts +0 -349
  79. package/src/cli/cmd/run/runtime.shared.ts +0 -17
  80. package/src/cli/cmd/run/runtime.stdin.ts +0 -37
  81. package/src/cli/cmd/run/runtime.ts +0 -814
  82. package/src/cli/cmd/run/scrollback.shared.ts +0 -92
  83. package/src/cli/cmd/run/scrollback.surface.ts +0 -431
  84. package/src/cli/cmd/run/scrollback.writer.tsx +0 -352
  85. package/src/cli/cmd/run/session-data.ts +0 -1113
  86. package/src/cli/cmd/run/session-replay.ts +0 -374
  87. package/src/cli/cmd/run/session.shared.ts +0 -196
  88. package/src/cli/cmd/run/splash.ts +0 -275
  89. package/src/cli/cmd/run/stream.transport.ts +0 -1462
  90. package/src/cli/cmd/run/stream.ts +0 -175
  91. package/src/cli/cmd/run/subagent-data.ts +0 -876
  92. package/src/cli/cmd/run/theme.ts +0 -690
  93. package/src/cli/cmd/run/tool.ts +0 -1489
  94. package/src/cli/cmd/run/trace.ts +0 -94
  95. package/src/cli/cmd/run/turn-summary.ts +0 -47
  96. package/src/cli/cmd/run/types.ts +0 -350
  97. package/src/cli/cmd/run/variant.shared.ts +0 -215
  98. package/src/cli/cmd/run.ts +0 -894
  99. package/src/cli/cmd/serve.ts +0 -24
  100. package/src/cli/cmd/session.ts +0 -147
  101. package/src/cli/cmd/stats.ts +0 -393
  102. package/src/cli/cmd/tui.ts +0 -224
  103. package/src/cli/cmd/uninstall.ts +0 -353
  104. package/src/cli/cmd/upgrade.ts +0 -74
  105. package/src/cli/cmd/web.ts +0 -84
  106. package/src/cli/effect/prompt.ts +0 -37
  107. package/src/cli/effect-cmd.ts +0 -96
  108. package/src/cli/error.ts +0 -130
  109. package/src/cli/heap.ts +0 -45
  110. package/src/cli/logo-pixel.ts +0 -35
  111. package/src/cli/logo.ts +0 -1
  112. package/src/cli/network.ts +0 -64
  113. package/src/cli/tui/layer.ts +0 -7
  114. package/src/cli/tui/validate-session.ts +0 -29
  115. package/src/cli/tui/worker.ts +0 -71
  116. package/src/cli/ui.ts +0 -148
  117. package/src/cli/upgrade.ts +0 -53
  118. package/src/command/index.ts +0 -184
  119. package/src/command/template/initialize.txt +0 -66
  120. package/src/command/template/review.txt +0 -101
  121. package/src/config/agent.ts +0 -59
  122. package/src/config/command.ts +0 -39
  123. package/src/config/config.ts +0 -686
  124. package/src/config/entry-name.ts +0 -19
  125. package/src/config/managed.ts +0 -69
  126. package/src/config/markdown.ts +0 -36
  127. package/src/config/parse.ts +0 -79
  128. package/src/config/paths.ts +0 -45
  129. package/src/config/plugin.ts +0 -79
  130. package/src/config/tui-cwd.ts +0 -5
  131. package/src/config/tui-host-attention.ts +0 -21
  132. package/src/config/tui-migrate.ts +0 -132
  133. package/src/config/tui.ts +0 -274
  134. package/src/config/variable.ts +0 -91
  135. package/src/control-plane/adapters/index.ts +0 -41
  136. package/src/control-plane/adapters/worktree.ts +0 -96
  137. package/src/control-plane/dev/README.md +0 -19
  138. package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
  139. package/src/control-plane/types.ts +0 -59
  140. package/src/control-plane/util.ts +0 -39
  141. package/src/control-plane/workspace-adapter-runtime.ts +0 -51
  142. package/src/control-plane/workspace-context.ts +0 -26
  143. package/src/control-plane/workspace.ts +0 -989
  144. package/src/effect/app-runtime.ts +0 -132
  145. package/src/effect/bootstrap-runtime.ts +0 -23
  146. package/src/effect/bridge.ts +0 -84
  147. package/src/effect/config-service.ts +0 -67
  148. package/src/effect/instance-ref.ts +0 -11
  149. package/src/effect/instance-registry.ts +0 -12
  150. package/src/effect/instance-state.ts +0 -69
  151. package/src/effect/promise.ts +0 -17
  152. package/src/effect/run-service.ts +0 -47
  153. package/src/effect/runner.ts +0 -217
  154. package/src/effect/runtime-flags.ts +0 -79
  155. package/src/env/index.ts +0 -43
  156. package/src/event-v2-bridge.ts +0 -79
  157. package/src/format/formatter.ts +0 -404
  158. package/src/format/index.ts +0 -205
  159. package/src/git/index.ts +0 -350
  160. package/src/id/id.ts +0 -80
  161. package/src/ide/index.ts +0 -61
  162. package/src/image/image.ts +0 -174
  163. package/src/index.ts +0 -142
  164. package/src/installation/index.ts +0 -350
  165. package/src/lsp/client.ts +0 -650
  166. package/src/lsp/diagnostic.ts +0 -29
  167. package/src/lsp/language.ts +0 -121
  168. package/src/lsp/launch.ts +0 -21
  169. package/src/lsp/lsp.ts +0 -511
  170. package/src/lsp/server.ts +0 -1983
  171. package/src/markdown.d.ts +0 -4
  172. package/src/mcp/auth.ts +0 -174
  173. package/src/mcp/catalog.ts +0 -153
  174. package/src/mcp/index.ts +0 -953
  175. package/src/mcp/oauth-callback.ts +0 -233
  176. package/src/mcp/oauth-provider.ts +0 -206
  177. package/src/node.ts +0 -4
  178. package/src/patch/index.ts +0 -686
  179. package/src/permission/arity.ts +0 -163
  180. package/src/permission/evaluate.ts +0 -1
  181. package/src/permission/index.ts +0 -230
  182. package/src/plugin/azure.ts +0 -26
  183. package/src/plugin/cloudflare.ts +0 -76
  184. package/src/plugin/digitalocean.ts +0 -383
  185. package/src/plugin/github-copilot/copilot.ts +0 -414
  186. package/src/plugin/github-copilot/models.ts +0 -246
  187. package/src/plugin/index.ts +0 -316
  188. package/src/plugin/install.ts +0 -439
  189. package/src/plugin/loader.ts +0 -237
  190. package/src/plugin/meta.ts +0 -188
  191. package/src/plugin/openai/README.md +0 -31
  192. package/src/plugin/openai/codex.ts +0 -641
  193. package/src/plugin/openai/ws-pool.ts +0 -270
  194. package/src/plugin/openai/ws.ts +0 -381
  195. package/src/plugin/pty-environment.ts +0 -24
  196. package/src/plugin/shared.ts +0 -323
  197. package/src/plugin/snowflake-cortex.ts +0 -529
  198. package/src/plugin/tui/internal.ts +0 -10
  199. package/src/plugin/tui/runtime.ts +0 -1130
  200. package/src/plugin/xai.ts +0 -716
  201. package/src/project/bootstrap-service.ts +0 -9
  202. package/src/project/bootstrap.ts +0 -76
  203. package/src/project/instance-context.ts +0 -24
  204. package/src/project/instance-layer.ts +0 -11
  205. package/src/project/instance-runtime.ts +0 -16
  206. package/src/project/instance-store.ts +0 -209
  207. package/src/project/project.ts +0 -519
  208. package/src/project/vcs.ts +0 -431
  209. package/src/provider/auth.ts +0 -233
  210. package/src/provider/error.ts +0 -188
  211. package/src/provider/model-status.ts +0 -8
  212. package/src/provider/provider.ts +0 -1975
  213. package/src/provider/transform.ts +0 -1543
  214. package/src/question/index.ts +0 -229
  215. package/src/question/schema.ts +0 -10
  216. package/src/server/auth.ts +0 -48
  217. package/src/server/event.ts +0 -13
  218. package/src/server/global-lifecycle.ts +0 -28
  219. package/src/server/init-projectors.ts +0 -3
  220. package/src/server/mdns.ts +0 -47
  221. package/src/server/projectors.ts +0 -1
  222. package/src/server/proxy-util.ts +0 -48
  223. package/src/server/routes/instance/httpapi/AGENTS.md +0 -39
  224. package/src/server/routes/instance/httpapi/api.ts +0 -78
  225. package/src/server/routes/instance/httpapi/errors.ts +0 -193
  226. package/src/server/routes/instance/httpapi/groups/config.ts +0 -65
  227. package/src/server/routes/instance/httpapi/groups/control-plane.ts +0 -35
  228. package/src/server/routes/instance/httpapi/groups/control.ts +0 -76
  229. package/src/server/routes/instance/httpapi/groups/event.ts +0 -29
  230. package/src/server/routes/instance/httpapi/groups/experimental.ts +0 -275
  231. package/src/server/routes/instance/httpapi/groups/file.ts +0 -185
  232. package/src/server/routes/instance/httpapi/groups/global.ts +0 -138
  233. package/src/server/routes/instance/httpapi/groups/instance.ts +0 -206
  234. package/src/server/routes/instance/httpapi/groups/mcp.ts +0 -156
  235. package/src/server/routes/instance/httpapi/groups/metadata.ts +0 -18
  236. package/src/server/routes/instance/httpapi/groups/permission.ts +0 -61
  237. package/src/server/routes/instance/httpapi/groups/project-copy.ts +0 -32
  238. package/src/server/routes/instance/httpapi/groups/project.ts +0 -93
  239. package/src/server/routes/instance/httpapi/groups/provider.ts +0 -101
  240. package/src/server/routes/instance/httpapi/groups/pty.ts +0 -172
  241. package/src/server/routes/instance/httpapi/groups/query.ts +0 -12
  242. package/src/server/routes/instance/httpapi/groups/question.ts +0 -74
  243. package/src/server/routes/instance/httpapi/groups/session.ts +0 -462
  244. package/src/server/routes/instance/httpapi/groups/sync.ts +0 -113
  245. package/src/server/routes/instance/httpapi/groups/tui.ts +0 -208
  246. package/src/server/routes/instance/httpapi/groups/workspace.ts +0 -141
  247. package/src/server/routes/instance/httpapi/handlers/config.ts +0 -34
  248. package/src/server/routes/instance/httpapi/handlers/control-plane.ts +0 -37
  249. package/src/server/routes/instance/httpapi/handlers/control.ts +0 -43
  250. package/src/server/routes/instance/httpapi/handlers/event.ts +0 -99
  251. package/src/server/routes/instance/httpapi/handlers/experimental.ts +0 -192
  252. package/src/server/routes/instance/httpapi/handlers/file.ts +0 -139
  253. package/src/server/routes/instance/httpapi/handlers/global.ts +0 -156
  254. package/src/server/routes/instance/httpapi/handlers/instance.ts +0 -110
  255. package/src/server/routes/instance/httpapi/handlers/mcp.ts +0 -111
  256. package/src/server/routes/instance/httpapi/handlers/permission.ts +0 -41
  257. package/src/server/routes/instance/httpapi/handlers/project-copy.ts +0 -83
  258. package/src/server/routes/instance/httpapi/handlers/project.ts +0 -63
  259. package/src/server/routes/instance/httpapi/handlers/provider.ts +0 -113
  260. package/src/server/routes/instance/httpapi/handlers/pty.ts +0 -273
  261. package/src/server/routes/instance/httpapi/handlers/question.ts +0 -54
  262. package/src/server/routes/instance/httpapi/handlers/session-errors.ts +0 -21
  263. package/src/server/routes/instance/httpapi/handlers/session.ts +0 -440
  264. package/src/server/routes/instance/httpapi/handlers/sync.ts +0 -89
  265. package/src/server/routes/instance/httpapi/handlers/tui.ts +0 -131
  266. package/src/server/routes/instance/httpapi/handlers/workspace.ts +0 -102
  267. package/src/server/routes/instance/httpapi/lifecycle.ts +0 -54
  268. package/src/server/routes/instance/httpapi/middleware/authorization.ts +0 -150
  269. package/src/server/routes/instance/httpapi/middleware/compression.ts +0 -64
  270. package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +0 -29
  271. package/src/server/routes/instance/httpapi/middleware/error.ts +0 -43
  272. package/src/server/routes/instance/httpapi/middleware/fence.ts +0 -25
  273. package/src/server/routes/instance/httpapi/middleware/instance-context.ts +0 -43
  274. package/src/server/routes/instance/httpapi/middleware/proxy.ts +0 -108
  275. package/src/server/routes/instance/httpapi/middleware/schema-error.ts +0 -41
  276. package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +0 -250
  277. package/src/server/routes/instance/httpapi/public.ts +0 -535
  278. package/src/server/routes/instance/httpapi/server.ts +0 -298
  279. package/src/server/routes/instance/httpapi/websocket-tracker.ts +0 -57
  280. package/src/server/server.ts +0 -225
  281. package/src/server/shared/fence.ts +0 -60
  282. package/src/server/shared/pty-ticket.ts +0 -15
  283. package/src/server/shared/public-ui.ts +0 -12
  284. package/src/server/shared/tui-control.ts +0 -28
  285. package/src/server/shared/ui.ts +0 -108
  286. package/src/server/shared/workspace-routing.ts +0 -38
  287. package/src/server/tui-event.ts +0 -53
  288. package/src/session/compaction.ts +0 -620
  289. package/src/session/instruction.ts +0 -241
  290. package/src/session/llm/AGENTS.md +0 -90
  291. package/src/session/llm/ai-sdk.ts +0 -288
  292. package/src/session/llm/native-request.ts +0 -196
  293. package/src/session/llm/native-runtime.ts +0 -195
  294. package/src/session/llm/request.ts +0 -216
  295. package/src/session/llm.ts +0 -415
  296. package/src/session/message-error.ts +0 -14
  297. package/src/session/message-v2.ts +0 -747
  298. package/src/session/message.ts +0 -148
  299. package/src/session/overflow.ts +0 -34
  300. package/src/session/processor.ts +0 -1084
  301. package/src/session/prompt/anthropic.txt +0 -109
  302. package/src/session/prompt/beast.txt +0 -151
  303. package/src/session/prompt/build-switch.txt +0 -9
  304. package/src/session/prompt/codex.txt +0 -83
  305. package/src/session/prompt/copilot-gpt-5.txt +0 -147
  306. package/src/session/prompt/default.txt +0 -99
  307. package/src/session/prompt/gemini.txt +0 -159
  308. package/src/session/prompt/gpt.txt +0 -111
  309. package/src/session/prompt/kimi.txt +0 -99
  310. package/src/session/prompt/plan-mode.txt +0 -74
  311. package/src/session/prompt/plan-reminder-anthropic.txt +0 -71
  312. package/src/session/prompt/plan.txt +0 -30
  313. package/src/session/prompt/trinity.txt +0 -101
  314. package/src/session/prompt.ts +0 -1707
  315. package/src/session/reminders.ts +0 -92
  316. package/src/session/retry.ts +0 -201
  317. package/src/session/revert.ts +0 -160
  318. package/src/session/run-state.ts +0 -156
  319. package/src/session/schema.ts +0 -26
  320. package/src/session/session.ts +0 -1119
  321. package/src/session/status.ts +0 -97
  322. package/src/session/summary.ts +0 -165
  323. package/src/session/system.ts +0 -117
  324. package/src/session/todo.ts +0 -90
  325. package/src/session/tools.ts +0 -207
  326. package/src/share/session.ts +0 -61
  327. package/src/share/share-next.ts +0 -385
  328. package/src/skill/discovery.ts +0 -109
  329. package/src/skill/index.ts +0 -366
  330. package/src/snapshot/index.ts +0 -808
  331. package/src/sql.d.ts +0 -4
  332. package/src/storage/schema.ts +0 -5
  333. package/src/storage/storage.ts +0 -329
  334. package/src/sync/README.md +0 -179
  335. package/src/sync/schema.ts +0 -11
  336. package/src/temporary.ts +0 -31
  337. package/src/tool/apply_patch.ts +0 -315
  338. package/src/tool/apply_patch.txt +0 -33
  339. package/src/tool/apply_patch.zh.txt +0 -33
  340. package/src/tool/description.ts +0 -100
  341. package/src/tool/edit.ts +0 -739
  342. package/src/tool/edit.txt +0 -10
  343. package/src/tool/edit.zh.txt +0 -10
  344. package/src/tool/external-directory.ts +0 -49
  345. package/src/tool/glob.ts +0 -78
  346. package/src/tool/glob.txt +0 -6
  347. package/src/tool/glob.zh.txt +0 -6
  348. package/src/tool/grep.ts +0 -114
  349. package/src/tool/grep.txt +0 -8
  350. package/src/tool/grep.zh.txt +0 -8
  351. package/src/tool/invalid.ts +0 -21
  352. package/src/tool/json-schema.ts +0 -164
  353. package/src/tool/lsp.ts +0 -115
  354. package/src/tool/lsp.txt +0 -24
  355. package/src/tool/lsp.zh.txt +0 -24
  356. package/src/tool/mcp-websearch.ts +0 -96
  357. package/src/tool/plan-enter.txt +0 -14
  358. package/src/tool/plan-enter.zh.txt +0 -14
  359. package/src/tool/plan-exit.txt +0 -13
  360. package/src/tool/plan-exit.zh.txt +0 -13
  361. package/src/tool/plan.ts +0 -81
  362. package/src/tool/question.ts +0 -46
  363. package/src/tool/question.txt +0 -10
  364. package/src/tool/question.zh.txt +0 -10
  365. package/src/tool/read.ts +0 -388
  366. package/src/tool/read.txt +0 -14
  367. package/src/tool/read.zh.txt +0 -14
  368. package/src/tool/registry.ts +0 -440
  369. package/src/tool/schema.ts +0 -14
  370. package/src/tool/shell/id.ts +0 -19
  371. package/src/tool/shell/prompt.ts +0 -307
  372. package/src/tool/shell/shell.txt +0 -21
  373. package/src/tool/shell.ts +0 -657
  374. package/src/tool/skill.ts +0 -73
  375. package/src/tool/skill.txt +0 -5
  376. package/src/tool/skill.zh.txt +0 -5
  377. package/src/tool/task.ts +0 -348
  378. package/src/tool/task.txt +0 -19
  379. package/src/tool/task.zh.txt +0 -19
  380. package/src/tool/todo.ts +0 -59
  381. package/src/tool/todowrite.txt +0 -44
  382. package/src/tool/todowrite.zh.txt +0 -44
  383. package/src/tool/tool.ts +0 -183
  384. package/src/tool/truncate.ts +0 -158
  385. package/src/tool/truncation-dir.ts +0 -4
  386. package/src/tool/webfetch.ts +0 -194
  387. package/src/tool/webfetch.txt +0 -13
  388. package/src/tool/webfetch.zh.txt +0 -13
  389. package/src/tool/websearch.ts +0 -145
  390. package/src/tool/websearch.txt +0 -14
  391. package/src/tool/websearch.zh.txt +0 -14
  392. package/src/tool/write.ts +0 -106
  393. package/src/tool/write.txt +0 -8
  394. package/src/tool/write.zh.txt +0 -8
  395. package/src/util/archive.ts +0 -17
  396. package/src/util/bom.ts +0 -27
  397. package/src/util/data-url.ts +0 -9
  398. package/src/util/defer.ts +0 -10
  399. package/src/util/effect-http-client.ts +0 -11
  400. package/src/util/error.ts +0 -1
  401. package/src/util/filesystem.ts +0 -251
  402. package/src/util/html.ts +0 -8
  403. package/src/util/iife.ts +0 -3
  404. package/src/util/lazy.ts +0 -20
  405. package/src/util/local-context.ts +0 -25
  406. package/src/util/locale.ts +0 -2
  407. package/src/util/media.ts +0 -26
  408. package/src/util/process.ts +0 -177
  409. package/src/util/proxy-env.ts +0 -72
  410. package/src/util/queue.ts +0 -32
  411. package/src/util/record.ts +0 -1
  412. package/src/util/repository.ts +0 -232
  413. package/src/util/rpc.ts +0 -66
  414. package/src/util/signal.ts +0 -12
  415. package/src/util/timeout.ts +0 -13
  416. package/src/util/token.ts +0 -1
  417. package/src/util/wildcard.ts +0 -59
  418. package/src/worktree/index.ts +0 -654
@@ -1,315 +0,0 @@
1
- import * as path from "path"
2
- import { Effect, Schema } from "effect"
3
- import * as Tool from "./tool"
4
- import { EventV2Bridge } from "@/event-v2-bridge"
5
- import { Watcher } from "@opencode-ai/core/filesystem/watcher"
6
- import { InstanceState } from "@/effect/instance-state"
7
- import { Patch } from "../patch"
8
- import { createTwoFilesPatch, diffLines } from "diff"
9
- import { assertExternalDirectoryEffect } from "./external-directory"
10
- import { trimDiff } from "./edit"
11
- import { LSP } from "@/lsp/lsp"
12
- import { FSUtil } from "@opencode-ai/core/fs-util"
13
- import DESCRIPTION from "./apply_patch.txt"
14
- import DESCRIPTION_ZH from "./apply_patch.zh.txt"
15
- import { FileSystem } from "@opencode-ai/core/filesystem"
16
- import { Format } from "../format"
17
- import * as Bom from "@/util/bom"
18
- import { loadDescription } from "./description"
19
-
20
- export const Parameters = Schema.Struct({
21
- patchText: Schema.String.annotate({ description: "The full patch text that describes all changes to be made" }),
22
- })
23
-
24
- export const ApplyPatchTool = Tool.define(
25
- "apply_patch",
26
- Effect.gen(function* () {
27
- const lsp = yield* LSP.Service
28
- const afs = yield* FSUtil.Service
29
- const format = yield* Format.Service
30
- const events = yield* EventV2Bridge.Service
31
-
32
- const run = Effect.fn("ApplyPatchTool.execute")(function* (
33
- params: Schema.Schema.Type<typeof Parameters>,
34
- ctx: Tool.Context,
35
- ) {
36
- if (!params.patchText) {
37
- return yield* Effect.fail(new Error("patchText is required"))
38
- }
39
-
40
- // Parse the patch to get hunks
41
- let hunks: Patch.Hunk[]
42
- try {
43
- const parseResult = Patch.parsePatch(params.patchText)
44
- hunks = parseResult.hunks
45
- } catch (error) {
46
- return yield* Effect.fail(new Error(`apply_patch verification failed: ${error}`))
47
- }
48
-
49
- if (hunks.length === 0) {
50
- const normalized = params.patchText.replace(/\r\n/g, "\n").replace(/\r/g, "\n").trim()
51
- if (normalized === "*** Begin Patch\n*** End Patch") {
52
- return yield* Effect.fail(new Error("patch rejected: empty patch"))
53
- }
54
- return yield* Effect.fail(new Error("apply_patch verification failed: no hunks found"))
55
- }
56
-
57
- const instance = yield* InstanceState.context
58
-
59
- // Validate file paths and check permissions
60
- const fileChanges: Array<{
61
- filePath: string
62
- oldContent: string
63
- newContent: string
64
- type: "add" | "update" | "delete" | "move"
65
- movePath?: string
66
- diff: string
67
- additions: number
68
- deletions: number
69
- bom: boolean
70
- }> = []
71
-
72
- let totalDiff = ""
73
-
74
- for (const hunk of hunks) {
75
- const filePath = path.resolve(instance.directory, hunk.path)
76
- yield* assertExternalDirectoryEffect(ctx, filePath)
77
-
78
- switch (hunk.type) {
79
- case "add": {
80
- const oldContent = ""
81
- const newContent =
82
- hunk.contents.length === 0 || hunk.contents.endsWith("\n") ? hunk.contents : `${hunk.contents}\n`
83
- const next = Bom.split(newContent)
84
- const diff = trimDiff(createTwoFilesPatch(filePath, filePath, oldContent, next.text))
85
-
86
- let additions = 0
87
- let deletions = 0
88
- for (const change of diffLines(oldContent, next.text)) {
89
- if (change.added) additions += change.count || 0
90
- if (change.removed) deletions += change.count || 0
91
- }
92
-
93
- fileChanges.push({
94
- filePath,
95
- oldContent,
96
- newContent: next.text,
97
- type: "add",
98
- diff,
99
- additions,
100
- deletions,
101
- bom: next.bom,
102
- })
103
-
104
- totalDiff += diff + "\n"
105
- break
106
- }
107
-
108
- case "update": {
109
- // Check if file exists for update
110
- const stats = yield* afs.stat(filePath).pipe(Effect.catch(() => Effect.succeed(undefined)))
111
- if (!stats || stats.type === "Directory") {
112
- return yield* Effect.fail(
113
- new Error(`apply_patch verification failed: Failed to read file to update: ${filePath}`),
114
- )
115
- }
116
-
117
- const source = yield* Bom.readFile(afs, filePath)
118
- const oldContent = source.text
119
- let newContent = oldContent
120
- let bom = source.bom
121
-
122
- // Apply the update chunks to get new content
123
- try {
124
- const fileUpdate = Patch.deriveNewContentsFromChunks(
125
- filePath,
126
- hunk.chunks,
127
- Bom.join(source.text, source.bom),
128
- )
129
- newContent = fileUpdate.content
130
- bom = fileUpdate.bom
131
- } catch (error) {
132
- return yield* Effect.fail(new Error(`apply_patch verification failed: ${error}`))
133
- }
134
-
135
- const diff = trimDiff(createTwoFilesPatch(filePath, filePath, oldContent, newContent))
136
-
137
- let additions = 0
138
- let deletions = 0
139
- for (const change of diffLines(oldContent, newContent)) {
140
- if (change.added) additions += change.count || 0
141
- if (change.removed) deletions += change.count || 0
142
- }
143
-
144
- const movePath = hunk.move_path ? path.resolve(instance.directory, hunk.move_path) : undefined
145
- yield* assertExternalDirectoryEffect(ctx, movePath)
146
-
147
- fileChanges.push({
148
- filePath,
149
- oldContent,
150
- newContent,
151
- type: hunk.move_path ? "move" : "update",
152
- movePath,
153
- diff,
154
- additions,
155
- deletions,
156
- bom,
157
- })
158
-
159
- totalDiff += diff + "\n"
160
- break
161
- }
162
-
163
- case "delete": {
164
- const source = yield* Bom.readFile(afs, filePath).pipe(
165
- Effect.catch((error) =>
166
- Effect.fail(
167
- new Error(
168
- `apply_patch verification failed: ${error instanceof Error ? error.message : String(error)}`,
169
- ),
170
- ),
171
- ),
172
- )
173
- const contentToDelete = source.text
174
- const deleteDiff = trimDiff(createTwoFilesPatch(filePath, filePath, contentToDelete, ""))
175
-
176
- const deletions = contentToDelete.split("\n").length
177
-
178
- fileChanges.push({
179
- filePath,
180
- oldContent: contentToDelete,
181
- newContent: "",
182
- type: "delete",
183
- diff: deleteDiff,
184
- additions: 0,
185
- deletions,
186
- bom: source.bom,
187
- })
188
-
189
- totalDiff += deleteDiff + "\n"
190
- break
191
- }
192
- }
193
- }
194
-
195
- // Build per-file metadata for UI rendering (used for both permission and result)
196
- const files = fileChanges.map((change) => ({
197
- filePath: change.filePath,
198
- relativePath: path.relative(instance.worktree, change.movePath ?? change.filePath).replaceAll("\\", "/"),
199
- type: change.type,
200
- patch: change.diff,
201
- additions: change.additions,
202
- deletions: change.deletions,
203
- movePath: change.movePath,
204
- }))
205
-
206
- // Check permissions if needed
207
- const relativePaths = fileChanges.map((c) => path.relative(instance.worktree, c.filePath).replaceAll("\\", "/"))
208
- yield* ctx.ask({
209
- permission: "edit",
210
- patterns: relativePaths,
211
- always: ["*"],
212
- metadata: {
213
- filepath: relativePaths.join(", "),
214
- diff: totalDiff,
215
- files,
216
- },
217
- })
218
-
219
- // Apply the changes
220
- const updates: Array<{ file: string; event: "add" | "change" | "unlink" }> = []
221
-
222
- for (const change of fileChanges) {
223
- const edited = change.type === "delete" ? undefined : (change.movePath ?? change.filePath)
224
- switch (change.type) {
225
- case "add":
226
- // Create parent directories (recursive: true is safe on existing/root dirs)
227
-
228
- yield* afs.writeWithDirs(change.filePath, Bom.join(change.newContent, change.bom))
229
- updates.push({ file: change.filePath, event: "add" })
230
- break
231
-
232
- case "update":
233
- yield* afs.writeWithDirs(change.filePath, Bom.join(change.newContent, change.bom))
234
- updates.push({ file: change.filePath, event: "change" })
235
- break
236
-
237
- case "move":
238
- if (change.movePath) {
239
- // Create parent directories (recursive: true is safe on existing/root dirs)
240
-
241
- yield* afs.writeWithDirs(change.movePath!, Bom.join(change.newContent, change.bom))
242
- yield* afs.remove(change.filePath)
243
- updates.push({ file: change.filePath, event: "unlink" })
244
- updates.push({ file: change.movePath, event: "add" })
245
- }
246
- break
247
-
248
- case "delete":
249
- yield* afs.remove(change.filePath)
250
- updates.push({ file: change.filePath, event: "unlink" })
251
- break
252
- }
253
-
254
- if (edited) {
255
- if (yield* format.file(edited)) {
256
- yield* Bom.syncFile(afs, edited, change.bom)
257
- }
258
- yield* events.publish(FileSystem.Event.Edited, { file: edited })
259
- }
260
- }
261
-
262
- // Publish file change events
263
- for (const update of updates) {
264
- yield* events.publish(Watcher.Event.Updated, update)
265
- }
266
-
267
- // Notify LSP of file changes and collect diagnostics
268
- for (const change of fileChanges) {
269
- if (change.type === "delete") continue
270
- const target = change.movePath ?? change.filePath
271
- yield* lsp.touchFile(target, "document")
272
- }
273
- const diagnostics = yield* lsp.diagnostics()
274
-
275
- // Generate output summary
276
- const summaryLines = fileChanges.map((change) => {
277
- if (change.type === "add") {
278
- return `A ${path.relative(instance.worktree, change.filePath).replaceAll("\\", "/")}`
279
- }
280
- if (change.type === "delete") {
281
- return `D ${path.relative(instance.worktree, change.filePath).replaceAll("\\", "/")}`
282
- }
283
- const target = change.movePath ?? change.filePath
284
- return `M ${path.relative(instance.worktree, target).replaceAll("\\", "/")}`
285
- })
286
- let output = `Success. Updated the following files:\n${summaryLines.join("\n")}`
287
-
288
- for (const change of fileChanges) {
289
- if (change.type === "delete") continue
290
- const target = change.movePath ?? change.filePath
291
- const block = LSP.Diagnostic.report(target, diagnostics[FSUtil.normalizePath(target)] ?? [])
292
- if (!block) continue
293
- const rel = path.relative(instance.worktree, target).replaceAll("\\", "/")
294
- output += `\n\nLSP errors detected in ${rel}, please fix:\n${block}`
295
- }
296
-
297
- return {
298
- title: output,
299
- metadata: {
300
- diff: totalDiff,
301
- files,
302
- diagnostics,
303
- },
304
- output,
305
- }
306
- })
307
-
308
- return {
309
- description: loadDescription(DESCRIPTION, DESCRIPTION_ZH),
310
- parameters: Parameters,
311
- execute: (params: Schema.Schema.Type<typeof Parameters>, ctx: Tool.Context) =>
312
- run(params, ctx).pipe(Effect.orDie),
313
- }
314
- }),
315
- )
@@ -1,33 +0,0 @@
1
- Use the `apply_patch` tool to edit files. Your patch language is a stripped‑down, file‑oriented diff format designed to be easy to parse and safe to apply. You can think of it as a high‑level envelope:
2
-
3
- *** Begin Patch
4
- [ one or more file sections ]
5
- *** End Patch
6
-
7
- Within that envelope, you get a sequence of file operations.
8
- You MUST include a header to specify the action you are taking.
9
- Each operation starts with one of three headers:
10
-
11
- *** Add File: <path> - create a new file. Every following line is a + line (the initial contents).
12
- *** Delete File: <path> - remove an existing file. Nothing follows.
13
- *** Update File: <path> - patch an existing file in place (optionally with a rename).
14
-
15
- Example patch:
16
-
17
- ```
18
- *** Begin Patch
19
- *** Add File: hello.txt
20
- +Hello world
21
- *** Update File: src/app.py
22
- *** Move to: src/main.py
23
- @@ def greet():
24
- -print("Hi")
25
- +print("Hello, world!")
26
- *** Delete File: obsolete.txt
27
- *** End Patch
28
- ```
29
-
30
- It is important to remember:
31
-
32
- - You must include a header with your intended action (Add/Delete/Update)
33
- - You must prefix new lines with `+` even when creating a new file
@@ -1,33 +0,0 @@
1
- 使用 `apply_patch` 工具编辑文件。您的补丁语言是一种简化的、面向文件的 diff 格式,旨在易于解析和安全应用。您可以将其视为一个高级信封:
2
-
3
- *** Begin Patch
4
- [ 一个或多个文件部分 ]
5
- *** End Patch
6
-
7
- 在该信封内,您会得到一系列文件操作。
8
- 您必须包含一个头部来指定您正在执行的操作。
9
- 每个操作以三个头部之一开始:
10
-
11
- *** Add File: <路径> - 创建新文件。后面的每一行都是 + 行(初始内容)。
12
- *** Delete File: <路径> - 删除现有文件。后面没有内容。
13
- *** Update File: <路径> - 就地修补现有文件(可选地进行重命名)。
14
-
15
- 示例补丁:
16
-
17
- ```
18
- *** Begin Patch
19
- *** Add File: hello.txt
20
- +Hello world
21
- *** Update File: src/app.py
22
- *** Move to: src/main.py
23
- @@ def greet():
24
- -print("Hi")
25
- +print("Hello, world!")
26
- *** Delete File: obsolete.txt
27
- *** End Patch
28
- ```
29
-
30
- 请记住以下要点:
31
-
32
- - 您必须包含带有预期操作(Add/Delete/Update)的头部
33
- - 即使创建新文件,也必须在新行前加上 `+` 前缀
@@ -1,100 +0,0 @@
1
- import { Effect } from "effect"
2
-
3
- export type Locale = "en" | "zh" | "zht" | "ko" | "de" | "es" | "fr" | "da" | "ja" | "pl" | "ru" | "uk" | "ar" | "no" | "br" | "th" | "bs" | "tr"
4
-
5
- const LOCALES: readonly Locale[] = [
6
- "en",
7
- "zh",
8
- "zht",
9
- "ko",
10
- "de",
11
- "es",
12
- "fr",
13
- "da",
14
- "ja",
15
- "pl",
16
- "ru",
17
- "uk",
18
- "bs",
19
- "ar",
20
- "no",
21
- "br",
22
- "th",
23
- "tr",
24
- ]
25
-
26
- function detectLocale(): Locale {
27
- // Check environment variable first
28
- const envLang = process.env.OPENCODE_LANGUAGE || process.env.LANG || process.env.LANGUAGE
29
- if (envLang) {
30
- const normalized = envLang.toLowerCase()
31
- if (normalized.startsWith("zh") && normalized.includes("hant")) return "zht"
32
- if (normalized.startsWith("zh")) return "zh"
33
- if (normalized.startsWith("ko")) return "ko"
34
- if (normalized.startsWith("de")) return "de"
35
- if (normalized.startsWith("es")) return "es"
36
- if (normalized.startsWith("fr")) return "fr"
37
- if (normalized.startsWith("da")) return "da"
38
- if (normalized.startsWith("ja")) return "ja"
39
- if (normalized.startsWith("pl")) return "pl"
40
- if (normalized.startsWith("ru")) return "ru"
41
- if (normalized.startsWith("uk")) return "uk"
42
- if (normalized.startsWith("ar")) return "ar"
43
- if (normalized.startsWith("no") || normalized.startsWith("nb") || normalized.startsWith("nn")) return "no"
44
- if (normalized.startsWith("pt")) return "br"
45
- if (normalized.startsWith("th")) return "th"
46
- if (normalized.startsWith("bs")) return "bs"
47
- if (normalized.startsWith("tr")) return "tr"
48
- }
49
- return "en"
50
- }
51
-
52
- let currentLocale: Locale | null = null
53
-
54
- export function getLocale(): Locale {
55
- if (currentLocale === null) {
56
- currentLocale = detectLocale()
57
- }
58
- return currentLocale
59
- }
60
-
61
- export function setLocale(locale: Locale): void {
62
- currentLocale = locale
63
- }
64
-
65
- export function loadDescription(enDescription: string, zhDescription: string, locale?: Locale): string {
66
- const resolvedLocale = locale ?? getLocale()
67
- if (resolvedLocale === "zh") {
68
- return zhDescription
69
- }
70
- return enDescription
71
- }
72
-
73
- // Dynamic import versions for .txt files
74
- export async function loadDescriptionFile(
75
- enPath: string,
76
- zhPath: string,
77
- locale?: Locale,
78
- ): Promise<string> {
79
- const resolvedLocale = locale ?? getLocale()
80
- if (resolvedLocale === "zh") {
81
- try {
82
- const module = await import(zhPath)
83
- return module.default
84
- } catch {
85
- // Fallback to English if Chinese version not found
86
- const module = await import(enPath)
87
- return module.default
88
- }
89
- }
90
- const module = await import(enPath)
91
- return module.default
92
- }
93
-
94
- // Helper to create a description loader for a tool
95
- export function createDescriptionLoader(
96
- enDescription: string,
97
- zhDescription: string,
98
- ): () => string {
99
- return () => loadDescription(enDescription, zhDescription)
100
- }