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,25 +0,0 @@
1
- import { AsyncLocalStorage } from "async_hooks"
2
-
3
- export class NotFound extends Error {
4
- constructor(public override readonly name: string) {
5
- super(`No context found for ${name}`)
6
- }
7
- }
8
-
9
- export function create<T>(name: string) {
10
- const storage = new AsyncLocalStorage<T>()
11
- return {
12
- use() {
13
- const result = storage.getStore()
14
- if (!result) {
15
- throw new NotFound(name)
16
- }
17
- return result
18
- },
19
- provide<R>(value: T, fn: () => R) {
20
- return storage.run(value, fn)
21
- },
22
- }
23
- }
24
-
25
- export * as LocalContext from "./local-context"
@@ -1,2 +0,0 @@
1
- export * from "@opencode-ai/tui/util/locale"
2
- export { Locale } from "@opencode-ai/tui/util/locale"
package/src/util/media.ts DELETED
@@ -1,26 +0,0 @@
1
- const startsWith = (bytes: Uint8Array, prefix: number[]) => prefix.every((value, index) => bytes[index] === value)
2
-
3
- export function isPdfAttachment(mime: string) {
4
- return mime === "application/pdf"
5
- }
6
-
7
- export function isMedia(mime: string) {
8
- return mime.startsWith("image/") || isPdfAttachment(mime)
9
- }
10
-
11
- export function isImageAttachment(mime: string) {
12
- return mime.startsWith("image/") && mime !== "image/svg+xml" && mime !== "image/vnd.fastbidsheet"
13
- }
14
-
15
- export function sniffAttachmentMime(bytes: Uint8Array, fallback: string) {
16
- if (startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])) return "image/png"
17
- if (startsWith(bytes, [0xff, 0xd8, 0xff])) return "image/jpeg"
18
- if (startsWith(bytes, [0x47, 0x49, 0x46, 0x38])) return "image/gif"
19
- if (startsWith(bytes, [0x42, 0x4d])) return "image/bmp"
20
- if (startsWith(bytes, [0x25, 0x50, 0x44, 0x46, 0x2d])) return "application/pdf"
21
- if (startsWith(bytes, [0x52, 0x49, 0x46, 0x46]) && startsWith(bytes.subarray(8), [0x57, 0x45, 0x42, 0x50])) {
22
- return "image/webp"
23
- }
24
-
25
- return fallback
26
- }
@@ -1,177 +0,0 @@
1
- import { type ChildProcess } from "child_process"
2
- import type { Stream } from "node:stream"
3
- import launch from "cross-spawn"
4
- import { buffer } from "node:stream/consumers"
5
- import { errorMessage } from "./error"
6
-
7
- export type Stdio = "inherit" | "pipe" | "ignore" | number | Stream
8
- export type Shell = boolean | string
9
-
10
- export interface Options {
11
- cwd?: string
12
- env?: NodeJS.ProcessEnv | null
13
- stdin?: Stdio
14
- stdout?: Stdio
15
- stderr?: Stdio
16
- shell?: Shell
17
- abort?: AbortSignal
18
- kill?: NodeJS.Signals | number
19
- timeout?: number
20
- }
21
-
22
- export interface RunOptions extends Omit<Options, "stdout" | "stderr"> {
23
- nothrow?: boolean
24
- }
25
-
26
- export interface Result {
27
- code: number
28
- stdout: Buffer
29
- stderr: Buffer
30
- }
31
-
32
- export interface TextResult extends Result {
33
- text: string
34
- }
35
-
36
- export class RunFailedError extends Error {
37
- readonly cmd: string[]
38
- readonly code: number
39
- readonly stdout: Buffer
40
- readonly stderr: Buffer
41
-
42
- constructor(cmd: string[], code: number, stdout: Buffer, stderr: Buffer) {
43
- const text = stderr.toString().trim()
44
- super(
45
- text
46
- ? `Command failed with code ${code}: ${cmd.join(" ")}\n${text}`
47
- : `Command failed with code ${code}: ${cmd.join(" ")}`,
48
- )
49
- this.name = "ProcessRunFailedError"
50
- this.cmd = [...cmd]
51
- this.code = code
52
- this.stdout = stdout
53
- this.stderr = stderr
54
- }
55
- }
56
-
57
- export type Child = ChildProcess & { exited: Promise<number> }
58
-
59
- export function spawn(cmd: string[], opts: Options = {}): Child {
60
- if (cmd.length === 0) throw new Error("Command is required")
61
- opts.abort?.throwIfAborted()
62
-
63
- const proc = launch(cmd[0], cmd.slice(1), {
64
- cwd: opts.cwd,
65
- shell: opts.shell,
66
- env: opts.env === null ? {} : opts.env ? { ...process.env, ...opts.env } : undefined,
67
- stdio: [opts.stdin ?? "ignore", opts.stdout ?? "ignore", opts.stderr ?? "ignore"],
68
- windowsHide: process.platform === "win32",
69
- })
70
-
71
- let closed = false
72
- let timer: ReturnType<typeof setTimeout> | undefined
73
-
74
- const abort = () => {
75
- if (closed) return
76
- if (proc.exitCode !== null || proc.signalCode !== null) return
77
- closed = true
78
-
79
- proc.kill(opts.kill ?? "SIGTERM")
80
-
81
- const ms = opts.timeout ?? 5_000
82
- if (ms <= 0) return
83
- timer = setTimeout(() => proc.kill("SIGKILL"), ms)
84
- }
85
-
86
- const exited = new Promise<number>((resolve, reject) => {
87
- const done = () => {
88
- opts.abort?.removeEventListener("abort", abort)
89
- if (timer) clearTimeout(timer)
90
- }
91
-
92
- proc.once("exit", (code, signal) => {
93
- done()
94
- resolve(code ?? (signal ? 1 : 0))
95
- })
96
-
97
- proc.once("error", (error) => {
98
- done()
99
- reject(error)
100
- })
101
- })
102
- void exited.catch(() => undefined)
103
-
104
- if (opts.abort) {
105
- opts.abort.addEventListener("abort", abort, { once: true })
106
- if (opts.abort.aborted) abort()
107
- }
108
-
109
- const child = proc as Child
110
- child.exited = exited
111
- return child
112
- }
113
-
114
- export async function run(cmd: string[], opts: RunOptions = {}): Promise<Result> {
115
- const proc = spawn(cmd, {
116
- cwd: opts.cwd,
117
- env: opts.env,
118
- stdin: opts.stdin,
119
- shell: opts.shell,
120
- abort: opts.abort,
121
- kill: opts.kill,
122
- timeout: opts.timeout,
123
- stdout: "pipe",
124
- stderr: "pipe",
125
- })
126
-
127
- if (!proc.stdout || !proc.stderr) throw new Error("Process output not available")
128
-
129
- const out = await Promise.all([proc.exited, buffer(proc.stdout), buffer(proc.stderr)])
130
- .then(([code, stdout, stderr]) => ({
131
- code,
132
- stdout,
133
- stderr,
134
- }))
135
- .catch((err: unknown) => {
136
- if (!opts.nothrow) throw err
137
- return {
138
- code: 1,
139
- stdout: Buffer.alloc(0),
140
- stderr: Buffer.from(errorMessage(err)),
141
- }
142
- })
143
- if (out.code === 0 || opts.nothrow) return out
144
- throw new RunFailedError(cmd, out.code, out.stdout, out.stderr)
145
- }
146
-
147
- // Duplicated in `packages/sdk/js/src/process.ts` because the SDK cannot import
148
- // `opencode` without creating a cycle. Keep both copies in sync.
149
- export async function stop(proc: ChildProcess) {
150
- if (proc.exitCode !== null || proc.signalCode !== null) return
151
-
152
- if (process.platform !== "win32" || !proc.pid) {
153
- proc.kill()
154
- return
155
- }
156
-
157
- const out = await run(["taskkill", "/pid", String(proc.pid), "/T", "/F"], {
158
- nothrow: true,
159
- })
160
-
161
- if (out.code === 0) return
162
- proc.kill()
163
- }
164
-
165
- export async function text(cmd: string[], opts: RunOptions = {}): Promise<TextResult> {
166
- const out = await run(cmd, opts)
167
- return {
168
- ...out,
169
- text: out.stdout.toString(),
170
- }
171
- }
172
-
173
- export async function lines(cmd: string[], opts: RunOptions = {}): Promise<string[]> {
174
- return (await text(cmd, opts)).text.split(/\r?\n/).filter(Boolean)
175
- }
176
-
177
- export * as Process from "./process"
@@ -1,72 +0,0 @@
1
- /*
2
- * Adapted from proxy-from-env: https://github.com/Rob--W/proxy-from-env
3
- *
4
- * The MIT License
5
- *
6
- * Copyright (C) 2016-2018 Rob Wu <rob@robwu.nl>
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
9
- * this software and associated documentation files (the "Software"), to deal in
10
- * the Software without restriction, including without limitation the rights to
11
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
12
- * of the Software, and to permit persons to whom the Software is furnished to do
13
- * so, subject to the following conditions:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
- * SOFTWARE.
25
- */
26
-
27
- const DEFAULT_PORTS: Record<string, number> = {
28
- ftp: 21,
29
- gopher: 70,
30
- http: 80,
31
- https: 443,
32
- ws: 80,
33
- wss: 443,
34
- }
35
-
36
- export function getProxyForUrl(input: string | URL) {
37
- const url = typeof input === "string" ? (URL.canParse(input) ? new URL(input) : undefined) : input
38
- if (!url) return
39
-
40
- const protocol = url.protocol.split(":", 1)[0]
41
- const hostname = url.host.replace(/:\d*$/, "")
42
- const port = Number.parseInt(url.port) || DEFAULT_PORTS[protocol] || 0
43
- if (!shouldProxy(hostname, port)) return
44
-
45
- const proxy = env(`${protocol}_proxy`) || env("all_proxy")
46
- if (!proxy) return
47
- return proxy.includes("://") ? proxy : `${protocol}://${proxy}`
48
- }
49
-
50
- function shouldProxy(hostname: string, port: number) {
51
- const noProxy = env("no_proxy").toLowerCase()
52
- if (!noProxy) return true
53
- if (noProxy === "*") return false
54
-
55
- return noProxy.split(/[,\s]/).every((proxy) => {
56
- if (!proxy) return true
57
-
58
- const parsed = proxy.match(/^(.+):(\d+)$/)
59
- const proxyHostname = parsed ? parsed[1] : proxy
60
- const proxyPort = parsed ? Number.parseInt(parsed[2]) : 0
61
- if (proxyPort && proxyPort !== port) return true
62
-
63
- if (!/^[.*]/.test(proxyHostname)) return hostname !== proxyHostname
64
- return !hostname.endsWith(proxyHostname.startsWith("*") ? proxyHostname.slice(1) : proxyHostname)
65
- })
66
- }
67
-
68
- function env(key: string) {
69
- return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ""
70
- }
71
-
72
- export * as ProxyEnv from "./proxy-env"
package/src/util/queue.ts DELETED
@@ -1,32 +0,0 @@
1
- export class AsyncQueue<T> implements AsyncIterable<T> {
2
- private queue: T[] = []
3
- private resolvers: ((value: T) => void)[] = []
4
-
5
- push(item: T) {
6
- const resolve = this.resolvers.shift()
7
- if (resolve) resolve(item)
8
- else this.queue.push(item)
9
- }
10
-
11
- async next(): Promise<T> {
12
- if (this.queue.length > 0) return this.queue.shift()!
13
- return new Promise((resolve) => this.resolvers.push(resolve))
14
- }
15
-
16
- async *[Symbol.asyncIterator]() {
17
- while (true) yield await this.next()
18
- }
19
- }
20
-
21
- export async function work<T>(concurrency: number, items: T[], fn: (item: T) => Promise<void>) {
22
- const pending = [...items]
23
- await Promise.all(
24
- Array.from({ length: concurrency }, async () => {
25
- while (true) {
26
- const item = pending.pop()
27
- if (item === undefined) return
28
- await fn(item)
29
- }
30
- }),
31
- )
32
- }
@@ -1 +0,0 @@
1
- export * from "@opencode-ai/tui/util/record"
@@ -1,232 +0,0 @@
1
- import path from "path"
2
- import { fileURLToPath } from "url"
3
- import { Schema } from "effect"
4
- import { Global } from "@opencode-ai/core/global"
5
-
6
- type BaseReference = {
7
- host: string
8
- path: string
9
- segments: string[]
10
- owner?: string
11
- repo: string
12
- remote: string
13
- label: string
14
- }
15
-
16
- export type RemoteReference = BaseReference & {
17
- protocol?: string
18
- }
19
-
20
- export type FileReference = BaseReference & {
21
- host: "file"
22
- protocol: "file:"
23
- }
24
-
25
- export type Reference = RemoteReference | FileReference
26
-
27
- export class InvalidRepositoryReferenceError extends Schema.TaggedErrorClass<InvalidRepositoryReferenceError>()(
28
- "RepositoryInvalidReferenceError",
29
- {
30
- repository: Schema.String,
31
- message: Schema.String,
32
- },
33
- ) {}
34
-
35
- export class UnsupportedLocalRepositoryError extends Schema.TaggedErrorClass<UnsupportedLocalRepositoryError>()(
36
- "RepositoryUnsupportedLocalRepositoryError",
37
- {
38
- repository: Schema.String,
39
- message: Schema.String,
40
- },
41
- ) {}
42
-
43
- export class InvalidRepositoryBranchError extends Schema.TaggedErrorClass<InvalidRepositoryBranchError>()(
44
- "RepositoryInvalidBranchError",
45
- {
46
- branch: Schema.String,
47
- message: Schema.String,
48
- },
49
- ) {}
50
-
51
- export type RepositoryError =
52
- | InvalidRepositoryReferenceError
53
- | UnsupportedLocalRepositoryError
54
- | InvalidRepositoryBranchError
55
-
56
- export function isRepositoryError(error: unknown): error is RepositoryError {
57
- return (
58
- error instanceof InvalidRepositoryReferenceError ||
59
- error instanceof UnsupportedLocalRepositoryError ||
60
- error instanceof InvalidRepositoryBranchError
61
- )
62
- }
63
-
64
- function normalizeRepositoryInput(input: string) {
65
- return input
66
- .trim()
67
- .replace(/^git\+/, "")
68
- .replace(/#.*$/, "")
69
- .replace(/\/+$/, "")
70
- }
71
-
72
- function trimGitSuffix(input: string) {
73
- return input.replace(/\.git$/, "")
74
- }
75
-
76
- function parts(input: string) {
77
- return input
78
- .split("/")
79
- .map((item) => trimGitSuffix(item.trim()))
80
- .filter(Boolean)
81
- }
82
-
83
- function safeHost(input: string) {
84
- return Boolean(input) && !input.startsWith("-") && !/[\s/\\]/.test(input)
85
- }
86
-
87
- function safeSegment(input: string) {
88
- return input !== "." && input !== ".." && !input.includes(":") && !/[\s/\\]/.test(input)
89
- }
90
-
91
- function hostLike(input: string) {
92
- return input.includes(".") || input.includes(":") || input === "localhost"
93
- }
94
-
95
- function withSlash(input: string) {
96
- return input.endsWith("/") ? input : `${input}/`
97
- }
98
-
99
- function githubRemote(pathname: string) {
100
- const base = process.env.OPENCODE_REPO_CLONE_GITHUB_BASE_URL
101
- if (!base) return `https://github.com/${pathname}.git`
102
- return new URL(`${pathname}.git`, withSlash(base)).href
103
- }
104
-
105
- function buildRemoteReference(input: { host: string; segments: string[]; remote?: string; protocol?: string }) {
106
- const segments = input.segments.map(trimGitSuffix).filter(Boolean)
107
- if (!safeHost(input.host) || !segments.length || segments.some((segment) => !safeSegment(segment))) return null
108
- const pathname = segments.join("/")
109
- const repo = segments[segments.length - 1]
110
- const host = input.host.toLowerCase()
111
- return {
112
- host,
113
- path: pathname,
114
- segments,
115
- owner: segments.length === 2 ? segments[0] : undefined,
116
- repo,
117
- remote: input.remote ?? (host === "github.com" ? githubRemote(pathname) : `https://${host}/${pathname}.git`),
118
- label: host === "github.com" && segments.length === 2 ? pathname : `${host}/${pathname}`,
119
- protocol: input.protocol,
120
- } satisfies RemoteReference
121
- }
122
-
123
- function buildFileReference(input: { url: URL; remote: string }) {
124
- const filePath = path.normalize(fileURLToPath(input.url))
125
- const segments = filePath.split(/[\\/]+/).filter(Boolean)
126
- if (!segments.length) return null
127
- return {
128
- host: "file",
129
- path: filePath,
130
- segments: segments.map((segment) => segment.replace(/:$/, "")),
131
- owner: undefined,
132
- repo: trimGitSuffix(segments[segments.length - 1]),
133
- remote: input.remote,
134
- label: filePath,
135
- protocol: "file:",
136
- } satisfies FileReference
137
- }
138
-
139
- export function parseRepositoryReference(input: string) {
140
- const cleaned = normalizeRepositoryInput(input)
141
- if (!cleaned) return null
142
-
143
- const githubPrefixed = cleaned.match(/^github:([^/\s]+)\/([^/\s]+)$/)
144
- if (githubPrefixed) {
145
- return buildRemoteReference({ host: "github.com", segments: [githubPrefixed[1], githubPrefixed[2]] })
146
- }
147
-
148
- if (!cleaned.includes("://")) {
149
- const scp = cleaned.match(/^(?:[^@/\s]+@)?([^:/\s]+):(.+)$/)
150
- if (scp) return buildRemoteReference({ host: scp[1], segments: parts(scp[2]), remote: cleaned })
151
-
152
- const direct = parts(cleaned)
153
- if (direct.length >= 2 && hostLike(direct[0])) {
154
- return buildRemoteReference({ host: direct[0], segments: direct.slice(1) })
155
- }
156
-
157
- if (direct.length === 2) {
158
- return buildRemoteReference({ host: "github.com", segments: direct })
159
- }
160
- }
161
-
162
- try {
163
- const url = new URL(cleaned)
164
- if (url.protocol === "file:") return buildFileReference({ url, remote: cleaned })
165
- const pathname = parts(url.pathname)
166
- const host = url.host
167
- return buildRemoteReference({
168
- host,
169
- segments: pathname,
170
- remote: host === "github.com" ? githubRemote(pathname.join("/")) : cleaned,
171
- protocol: url.protocol,
172
- })
173
- } catch {
174
- return null
175
- }
176
- }
177
-
178
- export function isFileRepositoryReference(reference: Reference): reference is FileReference {
179
- return reference.protocol === "file:"
180
- }
181
-
182
- export function isRemoteRepositoryReference(reference: Reference): reference is RemoteReference {
183
- return !isFileRepositoryReference(reference)
184
- }
185
-
186
- export function parseRemoteRepositoryReference(input: string) {
187
- const reference = parseRepositoryReference(input)
188
- if (!reference) {
189
- throw new InvalidRepositoryReferenceError({
190
- repository: input,
191
- message: "Repository must be a git URL, host/path reference, or GitHub owner/repo shorthand",
192
- })
193
- }
194
- if (!isRemoteRepositoryReference(reference)) {
195
- throw new UnsupportedLocalRepositoryError({
196
- repository: input,
197
- message: "Local file repositories are not supported",
198
- })
199
- }
200
- return reference
201
- }
202
-
203
- export function validateRepositoryBranch(branch: string) {
204
- if (!/^[A-Za-z0-9/_.-]+$/.test(branch) || branch.startsWith("-") || branch.includes("..")) {
205
- throw new InvalidRepositoryBranchError({
206
- branch,
207
- message:
208
- "Branch must contain only alphanumeric characters, /, _, ., and -, and cannot start with - or contain ..",
209
- })
210
- }
211
- }
212
-
213
- export function parseGitHubRemote(input: string) {
214
- const cleaned = normalizeRepositoryInput(input)
215
- if (!cleaned.includes("://") && !cleaned.match(/^(?:[^@/\s]+@)?github\.com:/)) return null
216
-
217
- const parsed = parseRepositoryReference(cleaned)
218
- if (!parsed || parsed.host !== "github.com" || !parsed.owner || parsed.segments.length !== 2) return null
219
- return { owner: parsed.owner, repo: parsed.repo }
220
- }
221
-
222
- export function repositoryCachePath(input: Reference) {
223
- return path.join(Global.Path.repos, ...input.host.split(":"), ...input.segments)
224
- }
225
-
226
- export function repositoryCacheIdentity(input: Reference) {
227
- return `${input.host}/${input.path}`
228
- }
229
-
230
- export function sameRepositoryReference(left: Reference, right: Reference) {
231
- return repositoryCacheIdentity(left) === repositoryCacheIdentity(right)
232
- }
package/src/util/rpc.ts DELETED
@@ -1,66 +0,0 @@
1
- type Definition = {
2
- [method: string]: (input: any) => any
3
- }
4
-
5
- export function listen(rpc: Definition) {
6
- onmessage = async (evt) => {
7
- const parsed = JSON.parse(evt.data)
8
- if (parsed.type === "rpc.request") {
9
- const result = await rpc[parsed.method](parsed.input)
10
- postMessage(JSON.stringify({ type: "rpc.result", result, id: parsed.id }))
11
- }
12
- }
13
- }
14
-
15
- export function emit(event: string, data: unknown) {
16
- postMessage(JSON.stringify({ type: "rpc.event", event, data }))
17
- }
18
-
19
- export function client<T extends Definition>(target: {
20
- postMessage: (data: string) => void | null
21
- onmessage: ((this: Worker, ev: MessageEvent<any>) => any) | null
22
- }) {
23
- const pending = new Map<number, (result: any) => void>()
24
- const listeners = new Map<string, Set<(data: any) => void>>()
25
- let id = 0
26
- target.onmessage = async (evt) => {
27
- const parsed = JSON.parse(evt.data)
28
- if (parsed.type === "rpc.result") {
29
- const resolve = pending.get(parsed.id)
30
- if (resolve) {
31
- resolve(parsed.result)
32
- pending.delete(parsed.id)
33
- }
34
- }
35
- if (parsed.type === "rpc.event") {
36
- const handlers = listeners.get(parsed.event)
37
- if (handlers) {
38
- for (const handler of handlers) {
39
- handler(parsed.data)
40
- }
41
- }
42
- }
43
- }
44
- return {
45
- call<Method extends keyof T>(method: Method, input: Parameters<T[Method]>[0]): Promise<ReturnType<T[Method]>> {
46
- const requestId = id++
47
- return new Promise((resolve) => {
48
- pending.set(requestId, resolve)
49
- target.postMessage(JSON.stringify({ type: "rpc.request", method, input, id: requestId }))
50
- })
51
- },
52
- on<Data>(event: string, handler: (data: Data) => void) {
53
- let handlers = listeners.get(event)
54
- if (!handlers) {
55
- handlers = new Set()
56
- listeners.set(event, handlers)
57
- }
58
- handlers.add(handler)
59
- return () => {
60
- handlers!.delete(handler)
61
- }
62
- },
63
- }
64
- }
65
-
66
- export * as Rpc from "./rpc"
@@ -1,12 +0,0 @@
1
- export function signal() {
2
- let resolve: any
3
- const promise = new Promise((r) => (resolve = r))
4
- return {
5
- trigger() {
6
- return resolve()
7
- },
8
- wait() {
9
- return promise
10
- },
11
- }
12
- }
@@ -1,13 +0,0 @@
1
- export function withTimeout<T>(promise: Promise<T>, ms: number, label?: string): Promise<T> {
2
- let timeout: NodeJS.Timeout
3
- return Promise.race([
4
- promise.finally(() => {
5
- clearTimeout(timeout)
6
- }),
7
- new Promise<never>((_, reject) => {
8
- timeout = setTimeout(() => {
9
- reject(new Error(label ?? `Operation timed out after ${ms}ms`))
10
- }, ms)
11
- }),
12
- ])
13
- }
package/src/util/token.ts DELETED
@@ -1 +0,0 @@
1
- export { Token, estimate } from "@opencode-ai/core/util/token"