soraacode 0.1.7 → 0.2.1

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 (352) hide show
  1. package/LICENSE +21 -0
  2. package/bin/soraacode.exe +10 -0
  3. package/package.json +17 -114
  4. package/{script/postinstall.mjs → postinstall.mjs} +5 -5
  5. package/AGENTS.md +0 -131
  6. package/Dockerfile +0 -18
  7. package/README.md +0 -15
  8. package/bin/opencode +0 -199
  9. package/bin/soraacode +0 -199
  10. package/bunfig.toml +0 -7
  11. package/git +0 -0
  12. package/migration/20260511173437_session-metadata/migration.sql +0 -1
  13. package/migration/20260511173437_session-metadata/snapshot.json +0 -1500
  14. package/parsers-config.ts +0 -1
  15. package/script/bench-search.ts +0 -94
  16. package/script/bench-test-suite.ts +0 -52
  17. package/script/build-headless.ts +0 -51
  18. package/script/build.ts +0 -245
  19. package/script/generate.ts +0 -14
  20. package/script/httpapi-exercise.ts +0 -1
  21. package/script/profile-test-files.ts +0 -42
  22. package/script/publish.ts +0 -213
  23. package/script/run-workspace-server +0 -106
  24. package/script/schema.ts +0 -77
  25. package/script/time.ts +0 -6
  26. package/script/trace-imports.ts +0 -153
  27. package/specs/effect/error-boundaries-plan.md +0 -235
  28. package/specs/effect/errors.md +0 -207
  29. package/specs/effect/facades.md +0 -218
  30. package/specs/effect/guide.md +0 -247
  31. package/specs/effect/instance-context.md +0 -13
  32. package/specs/effect/loose-ends.md +0 -30
  33. package/specs/effect/migration.md +0 -62
  34. package/specs/effect/routes.md +0 -61
  35. package/specs/effect/schema.md +0 -88
  36. package/specs/effect/server-package.md +0 -58
  37. package/specs/effect/todo.md +0 -241
  38. package/specs/effect/tools.md +0 -88
  39. package/specs/openapi-translation-cleanup.md +0 -204
  40. package/specs/tui-plugins.md +0 -544
  41. package/specs/v2/api.ts +0 -67
  42. package/specs/v2/message-shape.md +0 -136
  43. package/specs/v2/notifications.md +0 -13
  44. package/specs/v2/tui-command-shim.md +0 -67
  45. package/src/account/account.ts +0 -481
  46. package/src/account/repo.ts +0 -171
  47. package/src/account/schema.ts +0 -99
  48. package/src/account/url.ts +0 -8
  49. package/src/acp/agent.ts +0 -95
  50. package/src/acp/config-option.ts +0 -206
  51. package/src/acp/content.ts +0 -269
  52. package/src/acp/directory.ts +0 -212
  53. package/src/acp/error.ts +0 -97
  54. package/src/acp/event.ts +0 -421
  55. package/src/acp/permission.ts +0 -254
  56. package/src/acp/profile.ts +0 -42
  57. package/src/acp/service.ts +0 -1226
  58. package/src/acp/session.ts +0 -232
  59. package/src/acp/tool.ts +0 -364
  60. package/src/acp/usage.ts +0 -243
  61. package/src/agent/agent.ts +0 -450
  62. package/src/agent/generate.txt +0 -75
  63. package/src/agent/prompt/compaction.txt +0 -5
  64. package/src/agent/prompt/explore.txt +0 -18
  65. package/src/agent/prompt/summary.txt +0 -11
  66. package/src/agent/prompt/title.txt +0 -44
  67. package/src/agent/subagent-permissions.ts +0 -27
  68. package/src/audio.d.ts +0 -14
  69. package/src/auth/index.ts +0 -97
  70. package/src/background/job.ts +0 -37
  71. package/src/bus/global.ts +0 -22
  72. package/src/cli/bootstrap.ts +0 -11
  73. package/src/cli/cmd/cmd.ts +0 -7
  74. package/src/cli/cmd/serve.ts +0 -24
  75. package/src/cli/effect/prompt.ts +0 -37
  76. package/src/cli/effect-cmd.ts +0 -96
  77. package/src/cli/error.ts +0 -130
  78. package/src/cli/heap.ts +0 -45
  79. package/src/cli/logo.ts +0 -2
  80. package/src/cli/network.ts +0 -80
  81. package/src/cli/ui.ts +0 -132
  82. package/src/command/index.ts +0 -177
  83. package/src/command/template/initialize.txt +0 -66
  84. package/src/command/template/review.txt +0 -101
  85. package/src/config/agent.ts +0 -59
  86. package/src/config/command.ts +0 -39
  87. package/src/config/config.ts +0 -707
  88. package/src/config/entry-name.ts +0 -19
  89. package/src/config/managed.ts +0 -69
  90. package/src/config/markdown.ts +0 -36
  91. package/src/config/parse.ts +0 -61
  92. package/src/config/paths.ts +0 -45
  93. package/src/config/plugin.ts +0 -79
  94. package/src/config/v2-compat.ts +0 -449
  95. package/src/config/variable.ts +0 -91
  96. package/src/control-plane/adapters/index.ts +0 -41
  97. package/src/control-plane/adapters/worktree.ts +0 -96
  98. package/src/control-plane/dev/README.md +0 -19
  99. package/src/control-plane/dev/debug-workspace-plugin.ts +0 -73
  100. package/src/control-plane/types.ts +0 -59
  101. package/src/control-plane/util.ts +0 -39
  102. package/src/control-plane/workspace-adapter-runtime.ts +0 -51
  103. package/src/control-plane/workspace-context.ts +0 -26
  104. package/src/control-plane/workspace.ts +0 -966
  105. package/src/effect/app-node-builder-v1.ts +0 -12
  106. package/src/effect/app-runtime.ts +0 -135
  107. package/src/effect/bootstrap-runtime.ts +0 -19
  108. package/src/effect/bridge.ts +0 -84
  109. package/src/effect/config-service.ts +0 -67
  110. package/src/effect/instance-ref.ts +0 -11
  111. package/src/effect/instance-registry.ts +0 -12
  112. package/src/effect/instance-state.ts +0 -69
  113. package/src/effect/promise.ts +0 -17
  114. package/src/effect/run-service.ts +0 -47
  115. package/src/effect/runner.ts +0 -217
  116. package/src/effect/runtime-flags.ts +0 -78
  117. package/src/env/index.ts +0 -41
  118. package/src/event-manifest.ts +0 -3
  119. package/src/event-v2-bridge.ts +0 -71
  120. package/src/format/formatter.ts +0 -404
  121. package/src/format/index.ts +0 -203
  122. package/src/git/index.ts +0 -348
  123. package/src/id/id.ts +0 -80
  124. package/src/ide/index.ts +0 -54
  125. package/src/image/image.ts +0 -172
  126. package/src/index-headless.ts +0 -89
  127. package/src/index.ts +0 -93
  128. package/src/installation/index.ts +0 -336
  129. package/src/lsp/client.ts +0 -650
  130. package/src/lsp/diagnostic.ts +0 -29
  131. package/src/lsp/language.ts +0 -121
  132. package/src/lsp/launch.ts +0 -21
  133. package/src/lsp/lsp.ts +0 -507
  134. package/src/lsp/server.ts +0 -1983
  135. package/src/markdown.d.ts +0 -4
  136. package/src/mcp/auth.ts +0 -163
  137. package/src/mcp/browser.ts +0 -37
  138. package/src/mcp/catalog.ts +0 -170
  139. package/src/mcp/index.ts +0 -1004
  140. package/src/mcp/oauth-callback.ts +0 -194
  141. package/src/mcp/oauth-provider.ts +0 -259
  142. package/src/node.ts +0 -4
  143. package/src/patch/index.ts +0 -686
  144. package/src/permission/arity.ts +0 -163
  145. package/src/permission/evaluate.ts +0 -1
  146. package/src/permission/index.ts +0 -223
  147. package/src/plugin/github-copilot/copilot.ts +0 -415
  148. package/src/plugin/github-copilot/models.ts +0 -261
  149. package/src/plugin/index.ts +0 -298
  150. package/src/plugin/install.ts +0 -439
  151. package/src/plugin/loader.ts +0 -237
  152. package/src/plugin/meta.ts +0 -188
  153. package/src/plugin/openai/README.md +0 -31
  154. package/src/plugin/openai/codex.ts +0 -575
  155. package/src/plugin/openai/ws-pool.ts +0 -271
  156. package/src/plugin/openai/ws.ts +0 -383
  157. package/src/plugin/pty-environment.ts +0 -24
  158. package/src/plugin/shared.ts +0 -323
  159. package/src/project/bootstrap-service.ts +0 -9
  160. package/src/project/bootstrap.ts +0 -58
  161. package/src/project/instance-context.ts +0 -24
  162. package/src/project/instance-runtime.ts +0 -16
  163. package/src/project/instance-store.ts +0 -213
  164. package/src/project/project.ts +0 -483
  165. package/src/project/vcs.ts +0 -423
  166. package/src/provider/auth.ts +0 -229
  167. package/src/provider/error.ts +0 -195
  168. package/src/provider/model-status.ts +0 -8
  169. package/src/provider/provider.ts +0 -1955
  170. package/src/provider/transform.ts +0 -1923
  171. package/src/question/index.ts +0 -161
  172. package/src/question/schema.ts +0 -4
  173. package/src/server/auth.ts +0 -48
  174. package/src/server/event.ts +0 -10
  175. package/src/server/global-lifecycle.ts +0 -28
  176. package/src/server/mdns.ts +0 -47
  177. package/src/server/proxy-util.ts +0 -48
  178. package/src/server/routes/instance/httpapi/AGENTS.md +0 -39
  179. package/src/server/routes/instance/httpapi/api.ts +0 -97
  180. package/src/server/routes/instance/httpapi/errors.ts +0 -193
  181. package/src/server/routes/instance/httpapi/groups/config.ts +0 -65
  182. package/src/server/routes/instance/httpapi/groups/control-plane.ts +0 -35
  183. package/src/server/routes/instance/httpapi/groups/control.ts +0 -76
  184. package/src/server/routes/instance/httpapi/groups/event.ts +0 -29
  185. package/src/server/routes/instance/httpapi/groups/experimental.ts +0 -275
  186. package/src/server/routes/instance/httpapi/groups/file.ts +0 -185
  187. package/src/server/routes/instance/httpapi/groups/global.ts +0 -139
  188. package/src/server/routes/instance/httpapi/groups/instance.ts +0 -206
  189. package/src/server/routes/instance/httpapi/groups/mcp.ts +0 -156
  190. package/src/server/routes/instance/httpapi/groups/metadata.ts +0 -18
  191. package/src/server/routes/instance/httpapi/groups/permission.ts +0 -61
  192. package/src/server/routes/instance/httpapi/groups/project-copy.ts +0 -32
  193. package/src/server/routes/instance/httpapi/groups/project.ts +0 -93
  194. package/src/server/routes/instance/httpapi/groups/provider.ts +0 -101
  195. package/src/server/routes/instance/httpapi/groups/pty.ts +0 -172
  196. package/src/server/routes/instance/httpapi/groups/query.ts +0 -12
  197. package/src/server/routes/instance/httpapi/groups/question.ts +0 -74
  198. package/src/server/routes/instance/httpapi/groups/session.ts +0 -462
  199. package/src/server/routes/instance/httpapi/groups/sync.ts +0 -113
  200. package/src/server/routes/instance/httpapi/groups/tui.ts +0 -208
  201. package/src/server/routes/instance/httpapi/groups/workspace.ts +0 -141
  202. package/src/server/routes/instance/httpapi/handlers/config.ts +0 -34
  203. package/src/server/routes/instance/httpapi/handlers/control-plane.ts +0 -37
  204. package/src/server/routes/instance/httpapi/handlers/control.ts +0 -43
  205. package/src/server/routes/instance/httpapi/handlers/event.ts +0 -99
  206. package/src/server/routes/instance/httpapi/handlers/experimental.ts +0 -193
  207. package/src/server/routes/instance/httpapi/handlers/file.ts +0 -139
  208. package/src/server/routes/instance/httpapi/handlers/global.ts +0 -126
  209. package/src/server/routes/instance/httpapi/handlers/instance.ts +0 -110
  210. package/src/server/routes/instance/httpapi/handlers/mcp.ts +0 -111
  211. package/src/server/routes/instance/httpapi/handlers/permission.ts +0 -41
  212. package/src/server/routes/instance/httpapi/handlers/project-copy.ts +0 -83
  213. package/src/server/routes/instance/httpapi/handlers/project.ts +0 -63
  214. package/src/server/routes/instance/httpapi/handlers/provider.ts +0 -116
  215. package/src/server/routes/instance/httpapi/handlers/pty.ts +0 -273
  216. package/src/server/routes/instance/httpapi/handlers/question.ts +0 -54
  217. package/src/server/routes/instance/httpapi/handlers/session-errors.ts +0 -21
  218. package/src/server/routes/instance/httpapi/handlers/session.ts +0 -442
  219. package/src/server/routes/instance/httpapi/handlers/sync.ts +0 -89
  220. package/src/server/routes/instance/httpapi/handlers/tui.ts +0 -131
  221. package/src/server/routes/instance/httpapi/handlers/workspace.ts +0 -102
  222. package/src/server/routes/instance/httpapi/lifecycle.ts +0 -54
  223. package/src/server/routes/instance/httpapi/middleware/authorization.ts +0 -150
  224. package/src/server/routes/instance/httpapi/middleware/compression.ts +0 -64
  225. package/src/server/routes/instance/httpapi/middleware/cors-vary.ts +0 -29
  226. package/src/server/routes/instance/httpapi/middleware/error.ts +0 -44
  227. package/src/server/routes/instance/httpapi/middleware/fence.ts +0 -25
  228. package/src/server/routes/instance/httpapi/middleware/instance-context.ts +0 -43
  229. package/src/server/routes/instance/httpapi/middleware/proxy.ts +0 -131
  230. package/src/server/routes/instance/httpapi/middleware/schema-error.ts +0 -41
  231. package/src/server/routes/instance/httpapi/middleware/workspace-routing.ts +0 -250
  232. package/src/server/routes/instance/httpapi/public.ts +0 -537
  233. package/src/server/routes/instance/httpapi/server.ts +0 -325
  234. package/src/server/routes/instance/httpapi/websocket-tracker.ts +0 -60
  235. package/src/server/server.ts +0 -224
  236. package/src/server/shared/fence.ts +0 -60
  237. package/src/server/shared/pty-ticket.ts +0 -15
  238. package/src/server/shared/public-ui.ts +0 -12
  239. package/src/server/shared/tui-control.ts +0 -28
  240. package/src/server/shared/ui.ts +0 -108
  241. package/src/server/shared/workspace-routing.ts +0 -45
  242. package/src/server/tui-event.ts +0 -1
  243. package/src/session/compaction.ts +0 -608
  244. package/src/session/instruction.ts +0 -237
  245. package/src/session/llm/AGENTS.md +0 -90
  246. package/src/session/llm/ai-sdk.ts +0 -291
  247. package/src/session/llm/native-request.ts +0 -196
  248. package/src/session/llm/native-runtime.ts +0 -195
  249. package/src/session/llm/request.ts +0 -226
  250. package/src/session/llm.ts +0 -390
  251. package/src/session/message-error.ts +0 -14
  252. package/src/session/message-v2.ts +0 -742
  253. package/src/session/message.ts +0 -148
  254. package/src/session/overflow.ts +0 -34
  255. package/src/session/processor.ts +0 -732
  256. package/src/session/prompt/build-switch.txt +0 -5
  257. package/src/session/prompt/default.txt +0 -35
  258. package/src/session/prompt/plan-mode.txt +0 -70
  259. package/src/session/prompt/plan.txt +0 -26
  260. package/src/session/prompt.ts +0 -1631
  261. package/src/session/reminders.ts +0 -92
  262. package/src/session/retry.ts +0 -209
  263. package/src/session/revert.ts +0 -136
  264. package/src/session/run-state.ts +0 -151
  265. package/src/session/schema.ts +0 -26
  266. package/src/session/session.ts +0 -1016
  267. package/src/session/status.ts +0 -56
  268. package/src/session/summary.ts +0 -160
  269. package/src/session/system.ts +0 -123
  270. package/src/session/todo.ts +0 -74
  271. package/src/session/tools.ts +0 -590
  272. package/src/share/session.ts +0 -58
  273. package/src/share/share-next.ts +0 -371
  274. package/src/skill/discovery.ts +0 -140
  275. package/src/skill/index.ts +0 -354
  276. package/src/snapshot/index.ts +0 -807
  277. package/src/sql.d.ts +0 -4
  278. package/src/storage/schema.ts +0 -5
  279. package/src/storage/storage.ts +0 -327
  280. package/src/sync/README.md +0 -179
  281. package/src/sync/schema.ts +0 -11
  282. package/src/temporary.ts +0 -31
  283. package/src/tool/apply_patch.ts +0 -313
  284. package/src/tool/apply_patch.txt +0 -14
  285. package/src/tool/code-mode.ts +0 -310
  286. package/src/tool/edit.ts +0 -737
  287. package/src/tool/edit.txt +0 -13
  288. package/src/tool/external-directory.ts +0 -49
  289. package/src/tool/glob.ts +0 -76
  290. package/src/tool/glob.txt +0 -7
  291. package/src/tool/grep.ts +0 -115
  292. package/src/tool/grep.txt +0 -7
  293. package/src/tool/invalid.ts +0 -21
  294. package/src/tool/json-schema.ts +0 -164
  295. package/src/tool/lsp.ts +0 -113
  296. package/src/tool/lsp.txt +0 -1
  297. package/src/tool/mcp-websearch.ts +0 -96
  298. package/src/tool/plan-enter.txt +0 -1
  299. package/src/tool/plan-exit.txt +0 -1
  300. package/src/tool/plan.ts +0 -79
  301. package/src/tool/question.ts +0 -44
  302. package/src/tool/question.txt +0 -1
  303. package/src/tool/read.ts +0 -386
  304. package/src/tool/read.txt +0 -13
  305. package/src/tool/registry.ts +0 -455
  306. package/src/tool/schema.ts +0 -14
  307. package/src/tool/shell/id.ts +0 -19
  308. package/src/tool/shell/prompt.ts +0 -293
  309. package/src/tool/shell/shell.txt +0 -21
  310. package/src/tool/shell.ts +0 -645
  311. package/src/tool/skill.ts +0 -70
  312. package/src/tool/skill.txt +0 -1
  313. package/src/tool/task.ts +0 -371
  314. package/src/tool/task.txt +0 -11
  315. package/src/tool/todo.ts +0 -46
  316. package/src/tool/todowrite.txt +0 -11
  317. package/src/tool/tool.ts +0 -183
  318. package/src/tool/truncate.ts +0 -156
  319. package/src/tool/truncation-dir.ts +0 -4
  320. package/src/tool/webfetch.ts +0 -192
  321. package/src/tool/webfetch.txt +0 -9
  322. package/src/tool/websearch.ts +0 -143
  323. package/src/tool/websearch.txt +0 -9
  324. package/src/tool/write.ts +0 -104
  325. package/src/tool/write.txt +0 -11
  326. package/src/util/archive.ts +0 -17
  327. package/src/util/bom.ts +0 -27
  328. package/src/util/data-url.ts +0 -9
  329. package/src/util/defer.ts +0 -10
  330. package/src/util/effect-http-client.ts +0 -11
  331. package/src/util/error.ts +0 -16
  332. package/src/util/filesystem.ts +0 -251
  333. package/src/util/html.ts +0 -8
  334. package/src/util/iife.ts +0 -3
  335. package/src/util/lazy.ts +0 -20
  336. package/src/util/local-context.ts +0 -25
  337. package/src/util/locale.ts +0 -4
  338. package/src/util/media.ts +0 -26
  339. package/src/util/process.ts +0 -177
  340. package/src/util/proxy-env.ts +0 -72
  341. package/src/util/queue.ts +0 -32
  342. package/src/util/record.ts +0 -3
  343. package/src/util/repository.ts +0 -232
  344. package/src/util/rpc.ts +0 -66
  345. package/src/util/signal.ts +0 -12
  346. package/src/util/timeout.ts +0 -13
  347. package/src/util/token.ts +0 -1
  348. package/src/util/wildcard.ts +0 -59
  349. package/src/worktree/index.ts +0 -623
  350. package/sst-env.d.ts +0 -10
  351. package/tsconfig.headless.json +0 -13
  352. package/tsconfig.json +0 -16
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Soraacode
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,10 @@
1
+ echo "Error: soraacode's postinstall script was not run." >&2
2
+ echo "" >&2
3
+ echo "This occurs when using --ignore-scripts during installation, or when using a" >&2
4
+ echo "package manager like pnpm that does not run postinstall scripts by default." >&2
5
+ echo "" >&2
6
+ echo "To fix this, run the postinstall script manually:" >&2
7
+ echo " cd node_modules/soraacode && node postinstall.mjs" >&2
8
+ echo "" >&2
9
+ echo "Or reinstall soraacode without the --ignore-scripts flag." >&2
10
+ exit 1
package/package.json CHANGED
@@ -1,120 +1,23 @@
1
1
  {
2
- "$schema": "https://json.schemastore.org/package.json",
3
- "version": "0.1.7",
4
2
  "name": "soraacode",
5
- "type": "module",
6
- "license": "MIT",
7
- "private": false,
8
- "scripts": {
9
- "typecheck": "tsgo --noEmit",
10
- "test": "bun test --timeout 30000 --only-failures",
11
- "test:httpapi": "bun run script/httpapi-exercise.ts --mode coverage --fail-on-missing --fail-on-skip && bun run script/httpapi-exercise.ts --mode auth --fail-on-missing --fail-on-skip && bun run script/httpapi-exercise.ts --mode effect --fail-on-missing --fail-on-skip",
12
- "bench:test": "bun run script/bench-test-suite.ts",
13
- "profile:test": "bun run script/profile-test-files.ts",
14
- "build": "bun run script/build.ts",
15
- "dev": "bun run ./src/index.ts",
16
- "dev:temporary": "bun run ./src/temporary.ts"
17
- },
18
3
  "bin": {
19
- "soraacode": "./bin/soraacode"
20
- },
21
- "exports": {
22
- "./*": "./src/*.ts"
4
+ "soraacode": "./bin/soraacode.exe"
23
5
  },
24
- "imports": {
25
- "#db": {
26
- "bun": "./src/storage/db.bun.ts",
27
- "node": "./src/storage/db.node.ts",
28
- "default": "./src/storage/db.bun.ts"
29
- }
30
- },
31
- "devDependencies": {
32
- "@soraacode/core": "workspace:*",
33
- "@soraacode/http-recorder": "workspace:*",
34
- "@soraacode/script": "workspace:*",
35
- "@tsconfig/bun": "catalog:",
36
- "@types/bun": "catalog:",
37
- "@types/cross-spawn": "catalog:",
38
- "@types/mime-types": "3.0.1",
39
- "@types/npm-package-arg": "6.1.4",
40
- "@types/semver": "^7.5.8",
41
- "@types/turndown": "5.0.5",
42
- "@types/yargs": "17.0.33",
43
- "@typescript/native-preview": "catalog:",
44
- "drizzle-orm": "catalog:",
45
- "typescript": "catalog:",
46
- "vscode-languageserver-types": "3.17.5"
47
- },
48
- "dependencies": {
49
- "@ai-sdk/alibaba": "2.0.52",
50
- "@ai-sdk/amazon-bedrock": "5.0.90",
51
- "@ai-sdk/anthropic": "4.0.59",
52
- "@ai-sdk/azure": "4.0.76",
53
- "@ai-sdk/cerebras": "3.0.53",
54
- "@ai-sdk/cohere": "4.0.46",
55
- "@ai-sdk/deepinfra": "3.0.53",
56
- "@ai-sdk/gateway": "4.0.88",
57
- "@ai-sdk/google": "4.0.76",
58
- "@ai-sdk/google-vertex": "5.0.89",
59
- "@ai-sdk/groq": "4.0.46",
60
- "@ai-sdk/mistral": "4.0.48",
61
- "@ai-sdk/openai": "4.0.72",
62
- "@ai-sdk/openai-compatible": "3.0.53",
63
- "@ai-sdk/perplexity": "4.0.48",
64
- "@ai-sdk/provider": "3.0.16",
65
- "@ai-sdk/togetherai": "3.0.54",
66
- "@ai-sdk/vercel": "3.0.30",
67
- "@ai-sdk/xai": "5.0.5",
68
- "@clack/prompts": "1.0.0-alpha.1",
69
- "@effect/platform-node": "catalog:",
70
- "@modelcontextprotocol/sdk": "1.30.0",
71
- "@openrouter/ai-sdk-provider": "3.1.0",
72
- "@silvia-odwyer/photon-node": "0.3.4",
73
- "@soraacode/codemode": "workspace:*",
74
- "@soraacode/llm": "workspace:*",
75
- "@soraacode/plugin": "workspace:*",
76
- "@soraacode/protocol": "workspace:*",
77
- "@soraacode/schema": "workspace:*",
78
- "@soraacode/script": "workspace:*",
79
- "@soraacode/sdk": "workspace:*",
80
- "@soraacode/server": "workspace:*",
81
- "@types/ws": "8.18.1",
82
- "ai": "catalog:",
83
- "ai-gateway-provider": "4.0.1",
84
- "bonjour-service": "1.4.4",
85
- "cross-spawn": "catalog:",
86
- "decimal.js": "10.5.0",
87
- "diff": "catalog:",
88
- "drizzle-orm": "catalog:",
89
- "effect": "catalog:",
90
- "fuzzysort": "3.1.0",
91
- "gitlab-ai-provider": "6.15.1",
92
- "glob": "13.0.5",
93
- "google-auth-library": "11.1.0",
94
- "htmlparser2": "8.0.2",
95
- "ignore": "7.0.5",
96
- "immer": "11.1.4",
97
- "jsonc-parser": "3.3.1",
98
- "mime-types": "3.0.2",
99
- "minimatch": "10.0.3",
100
- "npm-package-arg": "13.0.2",
101
- "open": "10.1.2",
102
- "remeda": "catalog:",
103
- "semver": "^7.6.3",
104
- "strip-ansi": "7.1.2",
105
- "tree-sitter-bash": "0.25.0",
106
- "tree-sitter-powershell": "0.25.10",
107
- "turndown": "7.2.0",
108
- "ulid": "catalog:",
109
- "venice-ai-sdk-provider": "2.1.1",
110
- "vscode-jsonrpc": "9.0.2",
111
- "web-tree-sitter": "0.25.10",
112
- "ws": "8.21.0",
113
- "xdg-basedir": "5.1.0",
114
- "yargs": "18.0.0",
115
- "zod": "catalog:"
6
+ "scripts": {
7
+ "postinstall": "node ./postinstall.mjs"
116
8
  },
117
- "overrides": {
118
- "drizzle-orm": "catalog:"
9
+ "version": "0.2.1",
10
+ "license": "MIT",
11
+ "os": [
12
+ "darwin",
13
+ "linux",
14
+ "win32"
15
+ ],
16
+ "cpu": [
17
+ "arm64",
18
+ "x64"
19
+ ],
20
+ "optionalDependencies": {
21
+ "soraacode-linux-x64": "0.2.1"
119
22
  }
120
- }
23
+ }
@@ -24,9 +24,9 @@ const archMap = {
24
24
 
25
25
  const platform = platformMap[os.platform()] ?? os.platform()
26
26
  const arch = archMap[os.arch()] ?? os.arch()
27
- const base = `opencode-${platform}-${arch}`
28
- const sourceBinary = platform === "windows" ? "opencode.exe" : "opencode"
29
- const targetBinary = path.join(__dirname, "bin", "opencode.exe")
27
+ const base = `soraacode-${platform}-${arch}`
28
+ const sourceBinary = platform === "windows" ? "soraacode.exe" : "soraacode"
29
+ const targetBinary = path.join(__dirname, "bin", "soraacode.exe")
30
30
 
31
31
  function supportsAvx2() {
32
32
  if (arch !== "x64") return false
@@ -127,7 +127,7 @@ function installPackage(name) {
127
127
  const version = packageJson.optionalDependencies?.[name]
128
128
  if (!version) return
129
129
 
130
- const temp = fs.mkdtempSync(path.join(os.tmpdir(), "opencode-install-"))
130
+ const temp = fs.mkdtempSync(path.join(os.tmpdir(), "soraacode-install-"))
131
131
  try {
132
132
  const result = childProcess.spawnSync(
133
133
  "npm",
@@ -175,7 +175,7 @@ function main() {
175
175
  }
176
176
 
177
177
  throw new Error(
178
- `It seems your package manager failed to install the right opencode CLI package. Try manually installing ${packageNames()
178
+ `It seems your package manager failed to install the right soraacode CLI package. Try manually installing ${packageNames()
179
179
  .map((name) => JSON.stringify(name))
180
180
  .join(" or ")}.`,
181
181
  )
package/AGENTS.md DELETED
@@ -1,131 +0,0 @@
1
- # opencode database guide
2
-
3
- ## Database
4
-
5
- - **Schema**: Drizzle schema lives in `packages/core/src/**/*.sql.ts`.
6
- - **Migrations**: database migrations live in `packages/core` and are applied by core.
7
-
8
- ## Development server
9
-
10
- - Running `bun dev` from `packages/opencode` starts the live interactive TUI. Do not run it as a blocking foreground command when you need to inspect the result.
11
- - Start it in `tmux` instead: `tmux new-session -d -s opencode-dev 'bun dev'`.
12
- - Capture the current TUI output with: `tmux capture-pane -pt opencode-dev`.
13
- - Stop the session explicitly when done: `tmux kill-session -t opencode-dev`.
14
-
15
- # Module shape
16
-
17
- Do not use `export namespace Foo { ... }` for module organization. It is not
18
- standard ESM, it prevents tree-shaking, and it breaks Node's native TypeScript
19
- runner. Use flat top-level exports combined with a self-reexport at the bottom
20
- of the file:
21
-
22
- ```ts
23
- // src/foo/foo.ts
24
- export interface Interface { ... }
25
- export class Service extends Context.Service<Service, Interface>()("@opencode/Foo") {}
26
- export const layer = Layer.effect(Service, ...)
27
- export const defaultLayer = layer.pipe(...)
28
-
29
- export * as Foo from "./foo"
30
- ```
31
-
32
- Consumers import the namespace projection:
33
-
34
- ```ts
35
- import { Foo } from "@/foo/foo"
36
-
37
- yield * Foo.Service
38
- Foo.layer
39
- Foo.defaultLayer
40
- ```
41
-
42
- Namespace-private helpers stay as non-exported top-level declarations in the
43
- same file — they remain inaccessible to consumers (they are not projected by
44
- `export * as`) but are usable by the file's own code.
45
-
46
- ## When the file is an `index.ts`
47
-
48
- If the module is `foo/index.ts` (single-namespace directory), use `"."` for
49
- the self-reexport source rather than `"./index"`:
50
-
51
- ```ts
52
- // src/foo/index.ts
53
- export const thing = ...
54
-
55
- export * as Foo from "."
56
- ```
57
-
58
- ## Multi-sibling directories
59
-
60
- For directories with several independent modules (e.g. `src/session/`,
61
- `src/config/`), keep each sibling as its own file with its own self-reexport,
62
- and do not add a barrel `index.ts`. Consumers import the specific sibling:
63
-
64
- ```ts
65
- import { SessionRetry } from "@/session/retry"
66
- import { SessionStatus } from "@/session/status"
67
- ```
68
-
69
- Barrels in multi-sibling directories force every import through the barrel to
70
- evaluate every sibling, which defeats tree-shaking and slows module load.
71
-
72
- # opencode Effect rules
73
-
74
- Use these rules when writing or migrating Effect code.
75
-
76
- See `specs/effect/migration.md` for the compact pattern reference and examples.
77
-
78
- ## Core
79
-
80
- - Use `Effect.gen(function* () { ... })` for composition.
81
- - Use `Effect.fn("Domain.method")` for named/traced effects and `Effect.fnUntraced` for internal helpers.
82
- - `Effect.fn` / `Effect.fnUntraced` accept pipeable operators as extra arguments, so avoid unnecessary outer `.pipe()` wrappers.
83
- - Use `Effect.callback` for callback-based APIs.
84
- - Use `Effect.void` instead of `Effect.succeed(undefined)` or `Effect.succeed(void 0)`.
85
- - Prefer `DateTime.nowAsDate` over `new Date(yield* Clock.currentTimeMillis)` when you need a `Date`.
86
-
87
- ## Module conventions
88
-
89
- - In `src/config`, follow the existing self-export pattern at the top of the file (for example `export * as ConfigAgent from "./agent"`) when adding a new config module.
90
-
91
- ## Schemas and errors
92
-
93
- - Use `Schema.Class` for multi-field data.
94
- - Use branded schemas (`Schema.brand`) for single-value types.
95
- - Use `Schema.TaggedErrorClass` for typed errors.
96
- - Use `Schema.Defect` instead of `unknown` for defect-like causes.
97
- - In `Effect.gen` / `Effect.fn`, prefer `yield* new MyError(...)` over `yield* Effect.fail(new MyError(...))` for direct early-failure branches.
98
-
99
- ## Runtime vs InstanceState
100
-
101
- - Use `makeRuntime` (from `src/effect/run-service.ts`) for all services. It returns `{ runPromise, runFork, runCallback }` backed by a shared `memoMap` that deduplicates layers.
102
- - Use `InstanceState` (from `src/effect/instance-state.ts`) for per-directory or per-project state that needs per-instance cleanup. It uses `ScopedCache` keyed by directory — each open project gets its own state, automatically cleaned up on disposal.
103
- - If two open directories should not share one copy of the service, it needs `InstanceState`.
104
- - Do the work directly in the `InstanceState.make` closure — `ScopedCache` handles run-once semantics. Don't add fibers, `ensure()` callbacks, or `started` flags on top.
105
- - Use `Effect.addFinalizer` or `Effect.acquireRelease` inside the `InstanceState.make` closure for cleanup (subscriptions, process teardown, etc.).
106
- - Use `Effect.forkScoped` inside the closure for background stream consumers — the fiber is interrupted when the instance is disposed.
107
- - To make a service's `init()` non-blocking, fork `InstanceState.get(state)` at the `init()` call site (e.g. `Effect.forkIn(scope)`), not by forking work inside the `InstanceState.make` closure. Forking inside the closure leaves state incomplete for other methods that read it.
108
- - `src/project/bootstrap.ts` already wraps every service `init()` in `Effect.forkDetach`, so `init()` is fire-and-forget in production. Keep `init()` methods synchronous internally; the caller controls concurrency.
109
-
110
- ## Effect v4 beta API
111
-
112
- - `Effect.fork` and `Effect.forkDaemon` do not exist. Use `Effect.forkIn(scope)` to fork a fiber into a specific scope.
113
-
114
- ## Preferred Effect services
115
-
116
- - In effectified services, prefer yielding existing Effect services over dropping down to ad hoc platform APIs.
117
- - Prefer `FileSystem.FileSystem` instead of raw `fs/promises` for effectful file I/O.
118
- - Prefer `ChildProcessSpawner.ChildProcessSpawner` with `ChildProcess.make(...)` instead of custom process wrappers.
119
- - Prefer `HttpClient.HttpClient` instead of raw `fetch`.
120
- - Prefer `Path.Path`, `Config`, `Clock`, and `DateTime` when those concerns are already inside Effect code.
121
- - For background loops or scheduled tasks, use `Effect.repeat` or `Effect.schedule` with `Effect.forkScoped` in the layer definition.
122
-
123
- ## Effect.cached for deduplication
124
-
125
- Use `Effect.cached` when multiple concurrent callers should share a single in-flight computation rather than storing `Fiber | undefined` or `Promise | undefined` manually. See `specs/effect/migration.md` for the full pattern.
126
-
127
- ## Callback boundaries
128
-
129
- Use `EffectBridge` for native or external callbacks (`@parcel/watcher`, `node-pty`, native `fs.watch`, plugin callbacks, etc.) that need to re-enter Effect services with instance/workspace context.
130
-
131
- Plain async code should pass explicit context or stay inside an Effect fiber; do not add ambient instance context shims.
package/Dockerfile DELETED
@@ -1,18 +0,0 @@
1
- FROM alpine AS base
2
-
3
- # Disable the runtime transpiler cache by default inside Docker containers.
4
- # On ephemeral containers, the cache is not useful
5
- ARG BUN_RUNTIME_TRANSPILER_CACHE_PATH=0
6
- ENV BUN_RUNTIME_TRANSPILER_CACHE_PATH=${BUN_RUNTIME_TRANSPILER_CACHE_PATH}
7
- RUN apk add libgcc libstdc++ ripgrep
8
-
9
- FROM base AS build-amd64
10
- COPY dist/opencode-linux-x64-baseline-musl/bin/opencode /usr/local/bin/opencode
11
-
12
- FROM base AS build-arm64
13
- COPY dist/opencode-linux-arm64-musl/bin/opencode /usr/local/bin/opencode
14
-
15
- ARG TARGETARCH
16
- FROM build-${TARGETARCH}
17
- RUN opencode --version
18
- ENTRYPOINT ["opencode"]
package/README.md DELETED
@@ -1,15 +0,0 @@
1
- # js
2
-
3
- To install dependencies:
4
-
5
- ```bash
6
- bun install
7
- ```
8
-
9
- To run:
10
-
11
- ```bash
12
- bun run index.ts
13
- ```
14
-
15
- This project was created using `bun init` in bun v1.2.12. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
package/bin/opencode DELETED
@@ -1,199 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const childProcess = require("child_process")
4
- const fs = require("fs")
5
- const path = require("path")
6
- const os = require("os")
7
-
8
- const forwardedSignals = ["SIGINT", "SIGTERM", "SIGHUP"]
9
-
10
- function run(target) {
11
- const child = childProcess.spawn(target, process.argv.slice(2), {
12
- stdio: "inherit",
13
- })
14
-
15
- child.on("error", (error) => {
16
- console.error(error.message)
17
- process.exit(1)
18
- })
19
-
20
- const forwarders = {}
21
- for (const signal of forwardedSignals) {
22
- forwarders[signal] = () => {
23
- try {
24
- child.kill(signal)
25
- } catch {
26
- // The child may have already exited.
27
- }
28
- }
29
- process.on(signal, forwarders[signal])
30
- }
31
-
32
- child.on("exit", (code, signal) => {
33
- for (const forwardedSignal of forwardedSignals) {
34
- process.removeListener(forwardedSignal, forwarders[forwardedSignal])
35
- }
36
-
37
- if (signal) {
38
- process.kill(process.pid, signal)
39
- return
40
- }
41
-
42
- process.exit(typeof code === "number" ? code : 0)
43
- })
44
- }
45
-
46
- const envPath = process.env.OPENCODE_BIN_PATH
47
-
48
- const scriptPath = fs.realpathSync(__filename)
49
- const scriptDir = path.dirname(scriptPath)
50
-
51
- //
52
- const cached = path.join(scriptDir, ".opencode")
53
-
54
- const platformMap = {
55
- darwin: "darwin",
56
- linux: "linux",
57
- win32: "windows",
58
- }
59
- const archMap = {
60
- x64: "x64",
61
- arm64: "arm64",
62
- arm: "arm",
63
- }
64
-
65
- let platform = platformMap[os.platform()]
66
- if (!platform) {
67
- platform = os.platform()
68
- }
69
- let arch = archMap[os.arch()]
70
- if (!arch) {
71
- arch = os.arch()
72
- }
73
- const base = "opencode-" + platform + "-" + arch
74
- const binary = platform === "windows" ? "opencode.exe" : "opencode"
75
-
76
- function supportsAvx2() {
77
- if (arch !== "x64") return false
78
-
79
- if (platform === "linux") {
80
- try {
81
- return /(^|\s)avx2(\s|$)/i.test(fs.readFileSync("/proc/cpuinfo", "utf8"))
82
- } catch {
83
- return false
84
- }
85
- }
86
-
87
- if (platform === "darwin") {
88
- try {
89
- const result = childProcess.spawnSync("sysctl", ["-n", "hw.optional.avx2_0"], {
90
- encoding: "utf8",
91
- timeout: 1500,
92
- })
93
- if (result.status !== 0) return false
94
- return (result.stdout || "").trim() === "1"
95
- } catch {
96
- return false
97
- }
98
- }
99
-
100
- if (platform === "windows") {
101
- const cmd =
102
- '(Add-Type -MemberDefinition "[DllImport(""kernel32.dll"")] public static extern bool IsProcessorFeaturePresent(int ProcessorFeature);" -Name Kernel32 -Namespace Win32 -PassThru)::IsProcessorFeaturePresent(40)'
103
-
104
- for (const exe of ["powershell.exe", "pwsh.exe", "pwsh", "powershell"]) {
105
- try {
106
- const result = childProcess.spawnSync(exe, ["-NoProfile", "-NonInteractive", "-Command", cmd], {
107
- encoding: "utf8",
108
- timeout: 3000,
109
- windowsHide: true,
110
- })
111
- if (result.status !== 0) continue
112
- const out = (result.stdout || "").trim().toLowerCase()
113
- if (out === "true" || out === "1") return true
114
- if (out === "false" || out === "0") return false
115
- } catch {
116
- continue
117
- }
118
- }
119
-
120
- return false
121
- }
122
-
123
- return false
124
- }
125
-
126
- const names = (() => {
127
- const avx2 = supportsAvx2()
128
- const baseline = arch === "x64" && !avx2
129
-
130
- if (platform === "linux") {
131
- const musl = (() => {
132
- try {
133
- if (fs.existsSync("/etc/alpine-release")) return true
134
- } catch {
135
- // ignore
136
- }
137
-
138
- try {
139
- const result = childProcess.spawnSync("ldd", ["--version"], { encoding: "utf8" })
140
- const text = ((result.stdout || "") + (result.stderr || "")).toLowerCase()
141
- if (text.includes("musl")) return true
142
- } catch {
143
- // ignore
144
- }
145
-
146
- return false
147
- })()
148
-
149
- if (musl) {
150
- if (arch === "x64") {
151
- if (baseline) return [`${base}-baseline-musl`, `${base}-musl`, `${base}-baseline`, base]
152
- return [`${base}-musl`, `${base}-baseline-musl`, base, `${base}-baseline`]
153
- }
154
- return [`${base}-musl`, base]
155
- }
156
-
157
- if (arch === "x64") {
158
- if (baseline) return [`${base}-baseline`, base, `${base}-baseline-musl`, `${base}-musl`]
159
- return [base, `${base}-baseline`, `${base}-musl`, `${base}-baseline-musl`]
160
- }
161
- return [base, `${base}-musl`]
162
- }
163
-
164
- if (arch === "x64") {
165
- if (baseline) return [`${base}-baseline`, base]
166
- return [base, `${base}-baseline`]
167
- }
168
- return [base]
169
- })()
170
-
171
- function findBinary(startDir) {
172
- let current = startDir
173
- for (;;) {
174
- const modules = path.join(current, "node_modules")
175
- if (fs.existsSync(modules)) {
176
- for (const name of names) {
177
- const candidate = path.join(modules, name, "bin", binary)
178
- if (fs.existsSync(candidate)) return candidate
179
- }
180
- }
181
- const parent = path.dirname(current)
182
- if (parent === current) {
183
- return
184
- }
185
- current = parent
186
- }
187
- }
188
-
189
- const resolved = envPath || (fs.existsSync(cached) ? cached : findBinary(scriptDir))
190
- if (!resolved) {
191
- console.error(
192
- "It seems that your package manager failed to install the right version of the opencode CLI for your platform. You can try manually installing " +
193
- names.map((n) => `\"${n}\"`).join(" or ") +
194
- " package",
195
- )
196
- process.exit(1)
197
- }
198
-
199
- run(resolved)