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,233 +0,0 @@
1
- import { createConnection } from "net"
2
- import { createServer } from "http"
3
- import { escapeHtml } from "@/util/html"
4
- import { OAUTH_CALLBACK_PORT, OAUTH_CALLBACK_PATH, parseRedirectUri } from "./oauth-provider"
5
-
6
- // Current callback server configuration (may differ from defaults if custom redirectUri is used)
7
- let currentPort = OAUTH_CALLBACK_PORT
8
- let currentPath = OAUTH_CALLBACK_PATH
9
-
10
- const HTML_SUCCESS = `<!DOCTYPE html>
11
- <html>
12
- <head>
13
- <title>OnlyCode - Authorization Successful</title>
14
- <style>
15
- body { font-family: system-ui, -apple-system, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #1a1a2e; color: #eee; }
16
- .container { text-align: center; padding: 2rem; }
17
- h1 { color: #4ade80; margin-bottom: 1rem; }
18
- p { color: #aaa; }
19
- </style>
20
- </head>
21
- <body>
22
- <div class="container">
23
- <h1>Authorization Successful</h1>
24
- <p>You can close this window and return to OnlyCode.</p>
25
- </div>
26
- <script>setTimeout(() => window.close(), 2000);</script>
27
- </body>
28
- </html>`
29
-
30
- const HTML_ERROR = (error: string) => `<!DOCTYPE html>
31
- <html>
32
- <head>
33
- <title>OnlyCode - Authorization Failed</title>
34
- <style>
35
- body { font-family: system-ui, -apple-system, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: #1a1a2e; color: #eee; }
36
- .container { text-align: center; padding: 2rem; }
37
- h1 { color: #f87171; margin-bottom: 1rem; }
38
- p { color: #aaa; }
39
- .error { color: #fca5a5; font-family: monospace; margin-top: 1rem; padding: 1rem; background: rgba(248,113,113,0.1); border-radius: 0.5rem; }
40
- </style>
41
- </head>
42
- <body>
43
- <div class="container">
44
- <h1>Authorization Failed</h1>
45
- <p>An error occurred during authorization.</p>
46
- <div class="error">${escapeHtml(error)}</div>
47
- </div>
48
- </body>
49
- </html>`
50
-
51
- interface PendingAuth {
52
- resolve: (code: string) => void
53
- reject: (error: Error) => void
54
- timeout: ReturnType<typeof setTimeout>
55
- }
56
-
57
- let server: ReturnType<typeof createServer> | undefined
58
- const pendingAuths = new Map<string, PendingAuth>()
59
- // Reverse index: mcpName → oauthState, so cancelPending(mcpName) can
60
- // find the right entry in pendingAuths (which is keyed by oauthState).
61
- const mcpNameToState = new Map<string, string>()
62
-
63
- const CALLBACK_TIMEOUT_MS = 5 * 60 * 1000 // 5 minutes
64
-
65
- function cleanupStateIndex(oauthState: string) {
66
- for (const [name, state] of mcpNameToState) {
67
- if (state === oauthState) {
68
- mcpNameToState.delete(name)
69
- break
70
- }
71
- }
72
- }
73
-
74
- function stopIfIdle() {
75
- if (pendingAuths.size > 0 || !server) return
76
-
77
- server.close()
78
- server = undefined
79
- }
80
-
81
- function handleRequest(req: import("http").IncomingMessage, res: import("http").ServerResponse) {
82
- const url = new URL(req.url || "/", `http://localhost:${currentPort}`)
83
-
84
- if (url.pathname !== currentPath) {
85
- res.writeHead(404)
86
- res.end("Not found")
87
- return
88
- }
89
-
90
- const code = url.searchParams.get("code")
91
- const state = url.searchParams.get("state")
92
- const error = url.searchParams.get("error")
93
- const errorDescription = url.searchParams.get("error_description")
94
-
95
- // Enforce state parameter presence
96
- if (!state) {
97
- const errorMsg = "Missing required state parameter - potential CSRF attack"
98
- res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" })
99
- res.end(HTML_ERROR(errorMsg))
100
- return
101
- }
102
-
103
- if (error) {
104
- const errorMsg = errorDescription || error
105
- if (pendingAuths.has(state)) {
106
- const pending = pendingAuths.get(state)!
107
- clearTimeout(pending.timeout)
108
- pendingAuths.delete(state)
109
- cleanupStateIndex(state)
110
- pending.reject(new Error(errorMsg))
111
- }
112
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" })
113
- res.end(HTML_ERROR(errorMsg))
114
- stopIfIdle()
115
- return
116
- }
117
-
118
- if (!code) {
119
- res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" })
120
- res.end(HTML_ERROR("No authorization code provided"))
121
- return
122
- }
123
-
124
- // Validate state parameter
125
- if (!pendingAuths.has(state)) {
126
- const errorMsg = "Invalid or expired state parameter - potential CSRF attack"
127
- res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" })
128
- res.end(HTML_ERROR(errorMsg))
129
- return
130
- }
131
-
132
- const pending = pendingAuths.get(state)!
133
-
134
- clearTimeout(pending.timeout)
135
- pendingAuths.delete(state)
136
- cleanupStateIndex(state)
137
- pending.resolve(code)
138
-
139
- res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" })
140
- res.end(HTML_SUCCESS)
141
- stopIfIdle()
142
- }
143
-
144
- export async function ensureRunning(redirectUri?: string): Promise<void> {
145
- // Parse the redirect URI to get port and path (uses defaults if not provided)
146
- const { port, path } = parseRedirectUri(redirectUri)
147
-
148
- // If server is running on a different port/path, stop it first
149
- if (server && (currentPort !== port || currentPath !== path)) {
150
- await stop()
151
- }
152
-
153
- if (server) return
154
-
155
- const running = await isPortInUse(port)
156
- if (running) {
157
- return
158
- }
159
-
160
- currentPort = port
161
- currentPath = path
162
-
163
- server = createServer(handleRequest)
164
- await new Promise<void>((resolve, reject) => {
165
- server!.listen(currentPort, () => {
166
- resolve()
167
- })
168
- server!.on("error", reject)
169
- })
170
- }
171
-
172
- export function waitForCallback(oauthState: string, mcpName?: string): Promise<string> {
173
- if (mcpName) mcpNameToState.set(mcpName, oauthState)
174
- return new Promise((resolve, reject) => {
175
- const timeout = setTimeout(() => {
176
- if (pendingAuths.has(oauthState)) {
177
- pendingAuths.delete(oauthState)
178
- if (mcpName) mcpNameToState.delete(mcpName)
179
- reject(new Error("OAuth callback timeout - authorization took too long"))
180
- stopIfIdle()
181
- }
182
- }, CALLBACK_TIMEOUT_MS)
183
-
184
- pendingAuths.set(oauthState, { resolve, reject, timeout })
185
- })
186
- }
187
-
188
- export function cancelPending(mcpName: string): void {
189
- // Look up the oauthState for this mcpName via the reverse index
190
- const oauthState = mcpNameToState.get(mcpName)
191
- const key = oauthState ?? mcpName
192
- const pending = pendingAuths.get(key)
193
- if (pending) {
194
- clearTimeout(pending.timeout)
195
- pendingAuths.delete(key)
196
- mcpNameToState.delete(mcpName)
197
- pending.reject(new Error("Authorization cancelled"))
198
- stopIfIdle()
199
- }
200
- }
201
-
202
- export async function isPortInUse(port: number = OAUTH_CALLBACK_PORT): Promise<boolean> {
203
- return new Promise((resolve) => {
204
- const socket = createConnection(port, "127.0.0.1")
205
- socket.on("connect", () => {
206
- socket.destroy()
207
- resolve(true)
208
- })
209
- socket.on("error", () => {
210
- resolve(false)
211
- })
212
- })
213
- }
214
-
215
- export async function stop(): Promise<void> {
216
- if (server) {
217
- await new Promise<void>((resolve) => server!.close(() => resolve()))
218
- server = undefined
219
- }
220
-
221
- for (const [_name, pending] of pendingAuths) {
222
- clearTimeout(pending.timeout)
223
- pending.reject(new Error("OAuth callback server stopped"))
224
- }
225
- pendingAuths.clear()
226
- mcpNameToState.clear()
227
- }
228
-
229
- export function isRunning(): boolean {
230
- return server !== undefined
231
- }
232
-
233
- export * as McpOAuthCallback from "./oauth-callback"
@@ -1,206 +0,0 @@
1
- import type { OAuthClientProvider } from "@modelcontextprotocol/sdk/client/auth.js"
2
- import type {
3
- OAuthClientMetadata,
4
- OAuthTokens,
5
- OAuthClientInformation,
6
- OAuthClientInformationFull,
7
- } from "@modelcontextprotocol/sdk/shared/auth.js"
8
- import { Effect } from "effect"
9
- import { McpAuth } from "./auth"
10
-
11
- const OAUTH_CALLBACK_PORT = 19876
12
- const OAUTH_CALLBACK_PATH = "/mcp/oauth/callback"
13
-
14
- export interface McpOAuthConfig {
15
- clientId?: string
16
- clientSecret?: string
17
- scope?: string
18
- callbackPort?: number
19
- redirectUri?: string
20
- }
21
-
22
- export interface McpOAuthCallbacks {
23
- onRedirect: (url: URL) => void | Promise<void>
24
- }
25
-
26
- export class McpOAuthProvider implements OAuthClientProvider {
27
- constructor(
28
- private mcpName: string,
29
- private serverUrl: string,
30
- private config: McpOAuthConfig,
31
- private callbacks: McpOAuthCallbacks,
32
- private auth: McpAuth.Interface,
33
- ) {}
34
-
35
- get redirectUrl(): string {
36
- if (this.config.redirectUri) {
37
- return this.config.redirectUri
38
- }
39
- const port = this.config.callbackPort ?? OAUTH_CALLBACK_PORT
40
- return `http://127.0.0.1:${port}${OAUTH_CALLBACK_PATH}`
41
- }
42
-
43
- get clientMetadata(): OAuthClientMetadata {
44
- return {
45
- redirect_uris: [this.redirectUrl],
46
- client_name: "OnlyCode",
47
- client_uri: "https://ai.huamp.com",
48
- grant_types: ["authorization_code", "refresh_token"],
49
- response_types: ["code"],
50
- token_endpoint_auth_method: this.config.clientSecret ? "client_secret_post" : "none",
51
- ...(this.config.scope ? { scope: this.config.scope } : {}),
52
- }
53
- }
54
-
55
- async clientInformation(): Promise<OAuthClientInformation | undefined> {
56
- // Check config first (pre-registered client)
57
- if (this.config.clientId) {
58
- return {
59
- client_id: this.config.clientId,
60
- client_secret: this.config.clientSecret,
61
- }
62
- }
63
-
64
- // Check stored client info (from dynamic registration)
65
- // Use getForUrl to validate credentials are for the current server URL
66
- const entry = await Effect.runPromise(this.auth.getForUrl(this.mcpName, this.serverUrl))
67
- if (entry?.clientInfo) {
68
- // Check if client secret has expired
69
- if (entry.clientInfo.clientSecretExpiresAt && entry.clientInfo.clientSecretExpiresAt < Date.now() / 1000) {
70
- return undefined
71
- }
72
- return {
73
- client_id: entry.clientInfo.clientId,
74
- client_secret: entry.clientInfo.clientSecret,
75
- }
76
- }
77
-
78
- // No client info or URL changed - will trigger dynamic registration
79
- return undefined
80
- }
81
-
82
- async saveClientInformation(info: OAuthClientInformationFull): Promise<void> {
83
- await Effect.runPromise(
84
- this.auth.updateClientInfo(
85
- this.mcpName,
86
- {
87
- clientId: info.client_id,
88
- clientSecret: info.client_secret,
89
- clientIdIssuedAt: info.client_id_issued_at,
90
- clientSecretExpiresAt: info.client_secret_expires_at,
91
- },
92
- this.serverUrl,
93
- ),
94
- )
95
- }
96
-
97
- async tokens(): Promise<OAuthTokens | undefined> {
98
- // Use getForUrl to validate tokens are for the current server URL
99
- const entry = await Effect.runPromise(this.auth.getForUrl(this.mcpName, this.serverUrl))
100
- if (!entry?.tokens) return undefined
101
-
102
- return {
103
- access_token: entry.tokens.accessToken,
104
- token_type: "Bearer",
105
- refresh_token: entry.tokens.refreshToken,
106
- expires_in: entry.tokens.expiresAt
107
- ? Math.max(0, Math.floor(entry.tokens.expiresAt - Date.now() / 1000))
108
- : undefined,
109
- scope: entry.tokens.scope,
110
- }
111
- }
112
-
113
- async saveTokens(tokens: OAuthTokens): Promise<void> {
114
- await Effect.runPromise(
115
- this.auth.updateTokens(
116
- this.mcpName,
117
- {
118
- accessToken: tokens.access_token,
119
- refreshToken: tokens.refresh_token,
120
- expiresAt: tokens.expires_in ? Date.now() / 1000 + tokens.expires_in : undefined,
121
- scope: tokens.scope,
122
- },
123
- this.serverUrl,
124
- ),
125
- )
126
- }
127
-
128
- async redirectToAuthorization(authorizationUrl: URL): Promise<void> {
129
- await this.callbacks.onRedirect(authorizationUrl)
130
- }
131
-
132
- async saveCodeVerifier(codeVerifier: string): Promise<void> {
133
- await Effect.runPromise(this.auth.updateCodeVerifier(this.mcpName, codeVerifier))
134
- }
135
-
136
- async codeVerifier(): Promise<string> {
137
- const entry = await Effect.runPromise(this.auth.get(this.mcpName))
138
- if (!entry?.codeVerifier) {
139
- throw new Error(`No code verifier saved for MCP server: ${this.mcpName}`)
140
- }
141
- return entry.codeVerifier
142
- }
143
-
144
- async saveState(state: string): Promise<void> {
145
- await Effect.runPromise(this.auth.updateOAuthState(this.mcpName, state))
146
- }
147
-
148
- async state(): Promise<string> {
149
- const entry = await Effect.runPromise(this.auth.get(this.mcpName))
150
- if (entry?.oauthState) {
151
- return entry.oauthState
152
- }
153
-
154
- // Generate a new state if none exists — the SDK calls state() as a
155
- // generator, not just a reader, so we need to produce a value even when
156
- // startAuth() hasn't pre-saved one (e.g. during automatic auth on first
157
- // connect).
158
- const newState = Array.from(crypto.getRandomValues(new Uint8Array(32)))
159
- .map((b) => b.toString(16).padStart(2, "0"))
160
- .join("")
161
- await Effect.runPromise(this.auth.updateOAuthState(this.mcpName, newState))
162
- return newState
163
- }
164
-
165
- async invalidateCredentials(type: "all" | "client" | "tokens"): Promise<void> {
166
- const entry = await Effect.runPromise(this.auth.get(this.mcpName))
167
- if (!entry) {
168
- return
169
- }
170
-
171
- switch (type) {
172
- case "all":
173
- await Effect.runPromise(this.auth.remove(this.mcpName))
174
- break
175
- case "client":
176
- delete entry.clientInfo
177
- await Effect.runPromise(this.auth.set(this.mcpName, entry))
178
- break
179
- case "tokens":
180
- delete entry.tokens
181
- await Effect.runPromise(this.auth.set(this.mcpName, entry))
182
- break
183
- }
184
- }
185
- }
186
-
187
- export { OAUTH_CALLBACK_PORT, OAUTH_CALLBACK_PATH }
188
-
189
- /**
190
- * Parse a redirect URI to extract port and path for the callback server.
191
- * Returns defaults if the URI can't be parsed.
192
- */
193
- export function parseRedirectUri(redirectUri?: string): { port: number; path: string } {
194
- if (!redirectUri) {
195
- return { port: OAUTH_CALLBACK_PORT, path: OAUTH_CALLBACK_PATH }
196
- }
197
-
198
- try {
199
- const url = new URL(redirectUri)
200
- const port = url.port ? parseInt(url.port, 10) : url.protocol === "https:" ? 443 : 80
201
- const path = url.pathname || OAUTH_CALLBACK_PATH
202
- return { port, path }
203
- } catch {
204
- return { port: OAUTH_CALLBACK_PORT, path: OAUTH_CALLBACK_PATH }
205
- }
206
- }
package/src/node.ts DELETED
@@ -1,4 +0,0 @@
1
- export { Config } from "@/config/config"
2
- export { Server } from "./server/server"
3
- export { bootstrap } from "./cli/bootstrap"
4
- export { Database } from "@opencode-ai/core/database/database"