alchemylab-opencode 1.0.7 → 1.0.9

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 (391) hide show
  1. package/dist/{chunk-B3FN2B2N.js → chunk-3PZZ2D23.js} +7 -3
  2. package/dist/chunk-3PZZ2D23.js.map +7 -0
  3. package/dist/{chunk-LU5XVQUD.js → chunk-EGZMJTLE.js} +7 -7
  4. package/dist/{chunk-LU5XVQUD.js.map → chunk-EGZMJTLE.js.map} +2 -2
  5. package/dist/{chunk-23UYOGZG.js → chunk-ORHZOVWK.js} +6 -6
  6. package/dist/{chunk-TASPMBUL.js → chunk-SV5NEV33.js} +5 -5
  7. package/dist/{chunk-SM6WZDN6.js → chunk-UKQIL5XA.js} +18 -12
  8. package/dist/chunk-UKQIL5XA.js.map +7 -0
  9. package/dist/{chunk-GSE2T5UY.js → chunk-ZFHDPNFZ.js} +4 -4
  10. package/dist/{mcp-XFGN3FWW.js → mcp-66BBNSWA.js} +3 -3
  11. package/dist/{registry-W4MBVBYD.js → registry-YVL3V6Z6.js} +4 -4
  12. package/dist/{run-73HUV4H3.js → run-65PIGE2A.js} +7 -7
  13. package/dist/{run-service-LHEVFBIU.js → run-service-AYATGPA6.js} +2 -2
  14. package/dist/run.js +1 -1
  15. package/dist/serve.js +1 -1
  16. package/dist/{server-2CPOG3LS.js → server-KCG3B4WQ.js} +7 -7
  17. package/dist/{session-M6HOZ56B.js → session-BR5MTI3X.js} +4 -4
  18. package/dist/{share-next-QRBVSD37.js → share-next-EPYQDJ32.js} +5 -5
  19. package/dist/{worktree-3GUHT2P7.js → worktree-PIVTZBUE.js} +6 -6
  20. package/package.json +2 -15
  21. package/packages/opencode/migration/20260409000000_add_session_metadata/migration.sql +1 -0
  22. package/build.mjs +0 -192
  23. package/dist/chunk-B3FN2B2N.js.map +0 -7
  24. package/dist/chunk-SM6WZDN6.js.map +0 -7
  25. package/packages/opencode/package.json +0 -138
  26. package/packages/opencode/src/account/account.sql.ts +0 -39
  27. package/packages/opencode/src/account/index.ts +0 -463
  28. package/packages/opencode/src/account/repo.ts +0 -163
  29. package/packages/opencode/src/account/schema.ts +0 -91
  30. package/packages/opencode/src/acp/README.md +0 -174
  31. package/packages/opencode/src/acp/agent.ts +0 -1847
  32. package/packages/opencode/src/acp/session.ts +0 -116
  33. package/packages/opencode/src/acp/types.ts +0 -24
  34. package/packages/opencode/src/agent/agent.ts +0 -420
  35. package/packages/opencode/src/agent/generate.txt +0 -75
  36. package/packages/opencode/src/agent/prompt/compaction.txt +0 -15
  37. package/packages/opencode/src/agent/prompt/explore.txt +0 -18
  38. package/packages/opencode/src/agent/prompt/summary.txt +0 -11
  39. package/packages/opencode/src/agent/prompt/title.txt +0 -44
  40. package/packages/opencode/src/auth/index.ts +0 -110
  41. package/packages/opencode/src/bus/bus-event.ts +0 -40
  42. package/packages/opencode/src/bus/global.ts +0 -10
  43. package/packages/opencode/src/bus/index.ts +0 -185
  44. package/packages/opencode/src/cli/bootstrap.ts +0 -17
  45. package/packages/opencode/src/cli/cmd/cmd.ts +0 -7
  46. package/packages/opencode/src/cli/cmd/run.ts +0 -689
  47. package/packages/opencode/src/cli/cmd/serve.ts +0 -24
  48. package/packages/opencode/src/cli/cmd/tui/event.ts +0 -49
  49. package/packages/opencode/src/cli/effect/prompt.ts +0 -25
  50. package/packages/opencode/src/cli/error.ts +0 -46
  51. package/packages/opencode/src/cli/heap.ts +0 -59
  52. package/packages/opencode/src/cli/logo.ts +0 -6
  53. package/packages/opencode/src/cli/network.ts +0 -60
  54. package/packages/opencode/src/cli/ui.ts +0 -133
  55. package/packages/opencode/src/cli/upgrade.ts +0 -31
  56. package/packages/opencode/src/command/index.ts +0 -195
  57. package/packages/opencode/src/command/template/initialize.txt +0 -66
  58. package/packages/opencode/src/command/template/review.txt +0 -101
  59. package/packages/opencode/src/config/config.ts +0 -1599
  60. package/packages/opencode/src/config/console-state.ts +0 -15
  61. package/packages/opencode/src/config/markdown.ts +0 -99
  62. package/packages/opencode/src/config/paths.ts +0 -167
  63. package/packages/opencode/src/config/tui-migrate.ts +0 -155
  64. package/packages/opencode/src/config/tui-schema.ts +0 -37
  65. package/packages/opencode/src/config/tui.ts +0 -179
  66. package/packages/opencode/src/control-plane/adaptors/index.ts +0 -20
  67. package/packages/opencode/src/control-plane/adaptors/worktree.ts +0 -42
  68. package/packages/opencode/src/control-plane/schema.ts +0 -17
  69. package/packages/opencode/src/control-plane/sse.ts +0 -66
  70. package/packages/opencode/src/control-plane/types.ts +0 -32
  71. package/packages/opencode/src/control-plane/workspace.sql.ts +0 -17
  72. package/packages/opencode/src/control-plane/workspace.ts +0 -168
  73. package/packages/opencode/src/effect/cross-spawn-spawner.ts +0 -502
  74. package/packages/opencode/src/effect/instance-ref.ts +0 -6
  75. package/packages/opencode/src/effect/instance-registry.ts +0 -12
  76. package/packages/opencode/src/effect/instance-state.ts +0 -82
  77. package/packages/opencode/src/effect/run-service.ts +0 -33
  78. package/packages/opencode/src/effect/runner.ts +0 -216
  79. package/packages/opencode/src/env/index.ts +0 -28
  80. package/packages/opencode/src/file/ignore.ts +0 -82
  81. package/packages/opencode/src/file/index.ts +0 -686
  82. package/packages/opencode/src/file/protected.ts +0 -59
  83. package/packages/opencode/src/file/ripgrep.ts +0 -376
  84. package/packages/opencode/src/file/time.ts +0 -133
  85. package/packages/opencode/src/file/watcher.ts +0 -173
  86. package/packages/opencode/src/filesystem/index.ts +0 -236
  87. package/packages/opencode/src/flag/flag.ts +0 -156
  88. package/packages/opencode/src/format/formatter.ts +0 -413
  89. package/packages/opencode/src/format/index.ts +0 -203
  90. package/packages/opencode/src/git/index.ts +0 -303
  91. package/packages/opencode/src/global/index.ts +0 -56
  92. package/packages/opencode/src/id/id.ts +0 -85
  93. package/packages/opencode/src/ide/index.ts +0 -74
  94. package/packages/opencode/src/installation/index.ts +0 -355
  95. package/packages/opencode/src/installation/meta.ts +0 -7
  96. package/packages/opencode/src/lsp/client.ts +0 -252
  97. package/packages/opencode/src/lsp/index.ts +0 -558
  98. package/packages/opencode/src/lsp/language.ts +0 -120
  99. package/packages/opencode/src/lsp/launch.ts +0 -21
  100. package/packages/opencode/src/lsp/server.ts +0 -1968
  101. package/packages/opencode/src/mcp/auth.ts +0 -173
  102. package/packages/opencode/src/mcp/index.ts +0 -931
  103. package/packages/opencode/src/mcp/oauth-callback.ts +0 -216
  104. package/packages/opencode/src/mcp/oauth-provider.ts +0 -185
  105. package/packages/opencode/src/node-loader.mjs +0 -104
  106. package/packages/opencode/src/node-preload.mjs +0 -39
  107. package/packages/opencode/src/node.ts +0 -1
  108. package/packages/opencode/src/npm/index.ts +0 -188
  109. package/packages/opencode/src/patch/index.ts +0 -680
  110. package/packages/opencode/src/permission/arity.ts +0 -163
  111. package/packages/opencode/src/permission/evaluate.ts +0 -15
  112. package/packages/opencode/src/permission/index.ts +0 -325
  113. package/packages/opencode/src/permission/schema.ts +0 -17
  114. package/packages/opencode/src/plugin/cloudflare.ts +0 -67
  115. package/packages/opencode/src/plugin/codex.ts +0 -608
  116. package/packages/opencode/src/plugin/github-copilot/copilot.ts +0 -361
  117. package/packages/opencode/src/plugin/github-copilot/models.ts +0 -144
  118. package/packages/opencode/src/plugin/index.ts +0 -299
  119. package/packages/opencode/src/plugin/install.ts +0 -439
  120. package/packages/opencode/src/plugin/loader.ts +0 -174
  121. package/packages/opencode/src/plugin/meta.ts +0 -188
  122. package/packages/opencode/src/plugin/shared.ts +0 -323
  123. package/packages/opencode/src/project/bootstrap.ts +0 -31
  124. package/packages/opencode/src/project/instance.ts +0 -175
  125. package/packages/opencode/src/project/project.sql.ts +0 -16
  126. package/packages/opencode/src/project/project.ts +0 -519
  127. package/packages/opencode/src/project/schema.ts +0 -16
  128. package/packages/opencode/src/project/state.ts +0 -70
  129. package/packages/opencode/src/project/vcs.ts +0 -240
  130. package/packages/opencode/src/provider/auth.ts +0 -253
  131. package/packages/opencode/src/provider/error.ts +0 -197
  132. package/packages/opencode/src/provider/models.ts +0 -162
  133. package/packages/opencode/src/provider/provider.ts +0 -1709
  134. package/packages/opencode/src/provider/schema.ts +0 -38
  135. package/packages/opencode/src/provider/sdk/copilot/README.md +0 -5
  136. package/packages/opencode/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -170
  137. package/packages/opencode/src/provider/sdk/copilot/chat/get-response-metadata.ts +0 -15
  138. package/packages/opencode/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -19
  139. package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +0 -64
  140. package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +0 -815
  141. package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +0 -28
  142. package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -44
  143. package/packages/opencode/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -83
  144. package/packages/opencode/src/provider/sdk/copilot/copilot-provider.ts +0 -100
  145. package/packages/opencode/src/provider/sdk/copilot/index.ts +0 -2
  146. package/packages/opencode/src/provider/sdk/copilot/openai-compatible-error.ts +0 -27
  147. package/packages/opencode/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +0 -335
  148. package/packages/opencode/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +0 -22
  149. package/packages/opencode/src/provider/sdk/copilot/responses/openai-config.ts +0 -18
  150. package/packages/opencode/src/provider/sdk/copilot/responses/openai-error.ts +0 -22
  151. package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +0 -214
  152. package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +0 -1769
  153. package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +0 -173
  154. package/packages/opencode/src/provider/sdk/copilot/responses/openai-responses-settings.ts +0 -1
  155. package/packages/opencode/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +0 -87
  156. package/packages/opencode/src/provider/sdk/copilot/responses/tool/file-search.ts +0 -127
  157. package/packages/opencode/src/provider/sdk/copilot/responses/tool/image-generation.ts +0 -114
  158. package/packages/opencode/src/provider/sdk/copilot/responses/tool/local-shell.ts +0 -64
  159. package/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +0 -103
  160. package/packages/opencode/src/provider/sdk/copilot/responses/tool/web-search.ts +0 -102
  161. package/packages/opencode/src/provider/transform.ts +0 -1050
  162. package/packages/opencode/src/pty/index.ts +0 -397
  163. package/packages/opencode/src/pty/pty.node.ts +0 -27
  164. package/packages/opencode/src/pty/pty.ts +0 -25
  165. package/packages/opencode/src/pty/schema.ts +0 -17
  166. package/packages/opencode/src/question/index.ts +0 -224
  167. package/packages/opencode/src/question/schema.ts +0 -17
  168. package/packages/opencode/src/run.ts +0 -28
  169. package/packages/opencode/src/serve.ts +0 -45
  170. package/packages/opencode/src/server/error.ts +0 -36
  171. package/packages/opencode/src/server/event.ts +0 -7
  172. package/packages/opencode/src/server/instance.ts +0 -324
  173. package/packages/opencode/src/server/mdns.ts +0 -60
  174. package/packages/opencode/src/server/middleware.ts +0 -33
  175. package/packages/opencode/src/server/projectors.ts +0 -28
  176. package/packages/opencode/src/server/proxy.ts +0 -131
  177. package/packages/opencode/src/server/router.ts +0 -105
  178. package/packages/opencode/src/server/routes/config.ts +0 -92
  179. package/packages/opencode/src/server/routes/event.ts +0 -83
  180. package/packages/opencode/src/server/routes/experimental.ts +0 -374
  181. package/packages/opencode/src/server/routes/file.ts +0 -197
  182. package/packages/opencode/src/server/routes/global.ts +0 -312
  183. package/packages/opencode/src/server/routes/mcp.ts +0 -225
  184. package/packages/opencode/src/server/routes/permission.ts +0 -69
  185. package/packages/opencode/src/server/routes/project.ts +0 -118
  186. package/packages/opencode/src/server/routes/provider.ts +0 -171
  187. package/packages/opencode/src/server/routes/pty.ts +0 -210
  188. package/packages/opencode/src/server/routes/question.ts +0 -99
  189. package/packages/opencode/src/server/routes/session.ts +0 -1030
  190. package/packages/opencode/src/server/routes/tui.ts +0 -379
  191. package/packages/opencode/src/server/routes/workspace.ts +0 -94
  192. package/packages/opencode/src/server/server.ts +0 -353
  193. package/packages/opencode/src/session/compaction.ts +0 -428
  194. package/packages/opencode/src/session/index.ts +0 -887
  195. package/packages/opencode/src/session/instruction.ts +0 -258
  196. package/packages/opencode/src/session/llm.ts +0 -354
  197. package/packages/opencode/src/session/message-v2.ts +0 -1031
  198. package/packages/opencode/src/session/message.ts +0 -191
  199. package/packages/opencode/src/session/overflow.ts +0 -22
  200. package/packages/opencode/src/session/processor.ts +0 -523
  201. package/packages/opencode/src/session/projectors.ts +0 -135
  202. package/packages/opencode/src/session/prompt/anthropic.txt +0 -105
  203. package/packages/opencode/src/session/prompt/beast.txt +0 -147
  204. package/packages/opencode/src/session/prompt/build-switch.txt +0 -5
  205. package/packages/opencode/src/session/prompt/codex.txt +0 -79
  206. package/packages/opencode/src/session/prompt/copilot-gpt-5.txt +0 -143
  207. package/packages/opencode/src/session/prompt/default.txt +0 -105
  208. package/packages/opencode/src/session/prompt/gemini.txt +0 -155
  209. package/packages/opencode/src/session/prompt/gpt.txt +0 -107
  210. package/packages/opencode/src/session/prompt/kimi.txt +0 -95
  211. package/packages/opencode/src/session/prompt/max-steps.txt +0 -16
  212. package/packages/opencode/src/session/prompt/plan-reminder-anthropic.txt +0 -67
  213. package/packages/opencode/src/session/prompt/plan.txt +0 -26
  214. package/packages/opencode/src/session/prompt/trinity.txt +0 -97
  215. package/packages/opencode/src/session/prompt.ts +0 -1911
  216. package/packages/opencode/src/session/retry.ts +0 -106
  217. package/packages/opencode/src/session/revert.ts +0 -176
  218. package/packages/opencode/src/session/schema.ts +0 -38
  219. package/packages/opencode/src/session/session.sql.ts +0 -103
  220. package/packages/opencode/src/session/status.ts +0 -102
  221. package/packages/opencode/src/session/summary.ts +0 -177
  222. package/packages/opencode/src/session/system.ts +0 -76
  223. package/packages/opencode/src/session/todo.ts +0 -95
  224. package/packages/opencode/src/share/share-next.ts +0 -369
  225. package/packages/opencode/src/share/share.sql.ts +0 -13
  226. package/packages/opencode/src/shell/shell.ts +0 -110
  227. package/packages/opencode/src/skill/discovery.ts +0 -116
  228. package/packages/opencode/src/skill/index.ts +0 -277
  229. package/packages/opencode/src/snapshot/index.ts +0 -726
  230. package/packages/opencode/src/sql.d.ts +0 -4
  231. package/packages/opencode/src/storage/db.node.ts +0 -8
  232. package/packages/opencode/src/storage/db.ts +0 -177
  233. package/packages/opencode/src/storage/json-migration.ts +0 -425
  234. package/packages/opencode/src/storage/schema.sql.ts +0 -10
  235. package/packages/opencode/src/storage/schema.ts +0 -5
  236. package/packages/opencode/src/storage/storage.ts +0 -353
  237. package/packages/opencode/src/sync/README.md +0 -179
  238. package/packages/opencode/src/sync/event.sql.ts +0 -16
  239. package/packages/opencode/src/sync/index.ts +0 -263
  240. package/packages/opencode/src/sync/schema.ts +0 -14
  241. package/packages/opencode/src/tool/apply_patch.ts +0 -281
  242. package/packages/opencode/src/tool/apply_patch.txt +0 -33
  243. package/packages/opencode/src/tool/bash.ts +0 -496
  244. package/packages/opencode/src/tool/bash.txt +0 -117
  245. package/packages/opencode/src/tool/batch.ts +0 -183
  246. package/packages/opencode/src/tool/batch.txt +0 -24
  247. package/packages/opencode/src/tool/codesearch.ts +0 -132
  248. package/packages/opencode/src/tool/codesearch.txt +0 -12
  249. package/packages/opencode/src/tool/edit.ts +0 -667
  250. package/packages/opencode/src/tool/edit.txt +0 -10
  251. package/packages/opencode/src/tool/external-directory.ts +0 -46
  252. package/packages/opencode/src/tool/glob.ts +0 -78
  253. package/packages/opencode/src/tool/glob.txt +0 -6
  254. package/packages/opencode/src/tool/grep.ts +0 -156
  255. package/packages/opencode/src/tool/grep.txt +0 -8
  256. package/packages/opencode/src/tool/invalid.ts +0 -17
  257. package/packages/opencode/src/tool/ls.ts +0 -121
  258. package/packages/opencode/src/tool/ls.txt +0 -1
  259. package/packages/opencode/src/tool/lsp.ts +0 -97
  260. package/packages/opencode/src/tool/lsp.txt +0 -19
  261. package/packages/opencode/src/tool/multiedit.ts +0 -46
  262. package/packages/opencode/src/tool/multiedit.txt +0 -41
  263. package/packages/opencode/src/tool/plan-enter.txt +0 -14
  264. package/packages/opencode/src/tool/plan-exit.txt +0 -13
  265. package/packages/opencode/src/tool/plan.ts +0 -131
  266. package/packages/opencode/src/tool/question.ts +0 -46
  267. package/packages/opencode/src/tool/question.txt +0 -10
  268. package/packages/opencode/src/tool/read.ts +0 -332
  269. package/packages/opencode/src/tool/read.txt +0 -14
  270. package/packages/opencode/src/tool/registry.ts +0 -265
  271. package/packages/opencode/src/tool/schema.ts +0 -17
  272. package/packages/opencode/src/tool/skill.ts +0 -105
  273. package/packages/opencode/src/tool/task.ts +0 -166
  274. package/packages/opencode/src/tool/task.txt +0 -60
  275. package/packages/opencode/src/tool/todo.ts +0 -48
  276. package/packages/opencode/src/tool/todowrite.txt +0 -167
  277. package/packages/opencode/src/tool/tool.ts +0 -112
  278. package/packages/opencode/src/tool/truncate.ts +0 -144
  279. package/packages/opencode/src/tool/truncation-dir.ts +0 -4
  280. package/packages/opencode/src/tool/webfetch.ts +0 -206
  281. package/packages/opencode/src/tool/webfetch.txt +0 -13
  282. package/packages/opencode/src/tool/websearch.ts +0 -150
  283. package/packages/opencode/src/tool/websearch.txt +0 -14
  284. package/packages/opencode/src/tool/write.ts +0 -84
  285. package/packages/opencode/src/tool/write.txt +0 -8
  286. package/packages/opencode/src/util/abort.ts +0 -35
  287. package/packages/opencode/src/util/archive.ts +0 -17
  288. package/packages/opencode/src/util/color.ts +0 -19
  289. package/packages/opencode/src/util/context.ts +0 -25
  290. package/packages/opencode/src/util/data-url.ts +0 -9
  291. package/packages/opencode/src/util/defer.ts +0 -12
  292. package/packages/opencode/src/util/effect-http-client.ts +0 -11
  293. package/packages/opencode/src/util/effect-zod.ts +0 -98
  294. package/packages/opencode/src/util/error.ts +0 -77
  295. package/packages/opencode/src/util/filesystem.ts +0 -245
  296. package/packages/opencode/src/util/flock.ts +0 -333
  297. package/packages/opencode/src/util/fn.ts +0 -21
  298. package/packages/opencode/src/util/format.ts +0 -20
  299. package/packages/opencode/src/util/glob.ts +0 -34
  300. package/packages/opencode/src/util/hash.ts +0 -7
  301. package/packages/opencode/src/util/iife.ts +0 -3
  302. package/packages/opencode/src/util/keybind.ts +0 -103
  303. package/packages/opencode/src/util/lazy.ts +0 -23
  304. package/packages/opencode/src/util/locale.ts +0 -81
  305. package/packages/opencode/src/util/lock.ts +0 -98
  306. package/packages/opencode/src/util/log.ts +0 -182
  307. package/packages/opencode/src/util/network.ts +0 -9
  308. package/packages/opencode/src/util/process.ts +0 -176
  309. package/packages/opencode/src/util/queue.ts +0 -32
  310. package/packages/opencode/src/util/record.ts +0 -3
  311. package/packages/opencode/src/util/rpc.ts +0 -66
  312. package/packages/opencode/src/util/schema.ts +0 -53
  313. package/packages/opencode/src/util/scrap.ts +0 -10
  314. package/packages/opencode/src/util/signal.ts +0 -12
  315. package/packages/opencode/src/util/timeout.ts +0 -14
  316. package/packages/opencode/src/util/token.ts +0 -7
  317. package/packages/opencode/src/util/update-schema.ts +0 -13
  318. package/packages/opencode/src/util/which.ts +0 -14
  319. package/packages/opencode/src/util/wildcard.ts +0 -59
  320. package/packages/opencode/src/worktree/index.ts +0 -612
  321. package/packages/plugin/package.json +0 -38
  322. package/packages/plugin/src/example.ts +0 -18
  323. package/packages/plugin/src/index.ts +0 -282
  324. package/packages/plugin/src/shell.ts +0 -136
  325. package/packages/plugin/src/tool.ts +0 -38
  326. package/packages/plugin/src/tui.ts +0 -508
  327. package/packages/script/package.json +0 -16
  328. package/packages/script/src/index.ts +0 -77
  329. package/packages/sdk/package.json +0 -33
  330. package/packages/sdk/src/client.ts +0 -55
  331. package/packages/sdk/src/gen/client/client.gen.ts +0 -212
  332. package/packages/sdk/src/gen/client/index.ts +0 -25
  333. package/packages/sdk/src/gen/client/types.gen.ts +0 -222
  334. package/packages/sdk/src/gen/client/utils.gen.ts +0 -287
  335. package/packages/sdk/src/gen/client.gen.ts +0 -22
  336. package/packages/sdk/src/gen/core/auth.gen.ts +0 -41
  337. package/packages/sdk/src/gen/core/bodySerializer.gen.ts +0 -74
  338. package/packages/sdk/src/gen/core/params.gen.ts +0 -144
  339. package/packages/sdk/src/gen/core/pathSerializer.gen.ts +0 -167
  340. package/packages/sdk/src/gen/core/queryKeySerializer.gen.ts +0 -111
  341. package/packages/sdk/src/gen/core/serverSentEvents.gen.ts +0 -210
  342. package/packages/sdk/src/gen/core/types.gen.ts +0 -91
  343. package/packages/sdk/src/gen/core/utils.gen.ts +0 -109
  344. package/packages/sdk/src/gen/sdk.gen.ts +0 -1197
  345. package/packages/sdk/src/gen/types.gen.ts +0 -3904
  346. package/packages/sdk/src/index.ts +0 -21
  347. package/packages/sdk/src/process.ts +0 -31
  348. package/packages/sdk/src/server.ts +0 -134
  349. package/packages/sdk/src/v2/client.ts +0 -81
  350. package/packages/sdk/src/v2/gen/client/client.gen.ts +0 -285
  351. package/packages/sdk/src/v2/gen/client/index.ts +0 -25
  352. package/packages/sdk/src/v2/gen/client/types.gen.ts +0 -202
  353. package/packages/sdk/src/v2/gen/client/utils.gen.ts +0 -289
  354. package/packages/sdk/src/v2/gen/client.gen.ts +0 -18
  355. package/packages/sdk/src/v2/gen/core/auth.gen.ts +0 -41
  356. package/packages/sdk/src/v2/gen/core/bodySerializer.gen.ts +0 -82
  357. package/packages/sdk/src/v2/gen/core/params.gen.ts +0 -169
  358. package/packages/sdk/src/v2/gen/core/pathSerializer.gen.ts +0 -167
  359. package/packages/sdk/src/v2/gen/core/queryKeySerializer.gen.ts +0 -111
  360. package/packages/sdk/src/v2/gen/core/serverSentEvents.gen.ts +0 -239
  361. package/packages/sdk/src/v2/gen/core/types.gen.ts +0 -86
  362. package/packages/sdk/src/v2/gen/core/utils.gen.ts +0 -137
  363. package/packages/sdk/src/v2/gen/sdk.gen.ts +0 -4223
  364. package/packages/sdk/src/v2/gen/types.gen.ts +0 -5265
  365. package/packages/sdk/src/v2/index.ts +0 -21
  366. package/packages/sdk/src/v2/server.ts +0 -134
  367. package/packages/util/package.json +0 -20
  368. package/packages/util/src/array.ts +0 -10
  369. package/packages/util/src/binary.ts +0 -41
  370. package/packages/util/src/encode.ts +0 -51
  371. package/packages/util/src/error.ts +0 -54
  372. package/packages/util/src/fn.ts +0 -11
  373. package/packages/util/src/identifier.ts +0 -48
  374. package/packages/util/src/iife.ts +0 -3
  375. package/packages/util/src/lazy.ts +0 -11
  376. package/packages/util/src/module.ts +0 -10
  377. package/packages/util/src/path.ts +0 -37
  378. package/packages/util/src/retry.ts +0 -41
  379. package/packages/util/src/slug.ts +0 -74
  380. package/postinstall.cjs +0 -55
  381. /package/dist/{chunk-23UYOGZG.js.map → chunk-ORHZOVWK.js.map} +0 -0
  382. /package/dist/{chunk-TASPMBUL.js.map → chunk-SV5NEV33.js.map} +0 -0
  383. /package/dist/{chunk-GSE2T5UY.js.map → chunk-ZFHDPNFZ.js.map} +0 -0
  384. /package/dist/{mcp-XFGN3FWW.js.map → mcp-66BBNSWA.js.map} +0 -0
  385. /package/dist/{registry-W4MBVBYD.js.map → registry-YVL3V6Z6.js.map} +0 -0
  386. /package/dist/{run-73HUV4H3.js.map → run-65PIGE2A.js.map} +0 -0
  387. /package/dist/{run-service-LHEVFBIU.js.map → run-service-AYATGPA6.js.map} +0 -0
  388. /package/dist/{server-2CPOG3LS.js.map → server-KCG3B4WQ.js.map} +0 -0
  389. /package/dist/{session-M6HOZ56B.js.map → session-BR5MTI3X.js.map} +0 -0
  390. /package/dist/{share-next-QRBVSD37.js.map → share-next-EPYQDJ32.js.map} +0 -0
  391. /package/dist/{worktree-3GUHT2P7.js.map → worktree-PIVTZBUE.js.map} +0 -0
@@ -288,8 +288,9 @@ import os from "os";
288
288
  var app = "opencode";
289
289
  var customDataDir = process.env["OPENCODE_DATA_DIR"];
290
290
  var data = customDataDir || path.join(xdgData, app);
291
+ var globalData = path.join(xdgData, app);
291
292
  var cache = path.join(xdgCache, app);
292
- var config = customDataDir ? path.join(customDataDir, "config") : path.join(xdgConfig, app);
293
+ var config = path.join(xdgConfig, app);
293
294
  var state = customDataDir ? path.join(customDataDir, "state") : path.join(xdgState, app);
294
295
  var Global;
295
296
  ((Global2) => {
@@ -299,6 +300,8 @@ var Global;
299
300
  return process.env.OPENCODE_TEST_HOME || os.homedir();
300
301
  },
301
302
  data,
303
+ globalData,
304
+ // user-global data dir (for auth, credentials — not affected by OPENCODE_DATA_DIR)
302
305
  bin: path.join(cache, "bin"),
303
306
  log: path.join(data, "log"),
304
307
  cache,
@@ -937,6 +940,7 @@ var SessionTable = sqliteTable2(
937
940
  revert: text2({ mode: "json" }).$type(),
938
941
  permission: text2({ mode: "json" }).$type(),
939
942
  ...Timestamps,
943
+ metadata: text2({ mode: "json" }).$type(),
940
944
  time_compacting: integer3(),
941
945
  time_archived: integer3()
942
946
  },
@@ -1633,7 +1637,7 @@ var layer2 = Layer2.effect(
1633
1637
  );
1634
1638
  var defaultLayer = layer2.pipe(Layer2.provide(NodeFileSystem2.layer), Layer2.provide(NodePath.layer));
1635
1639
  var rt = lazy(async () => {
1636
- const { makeRuntime: makeRuntime2 } = await import("./run-service-LHEVFBIU.js");
1640
+ const { makeRuntime: makeRuntime2 } = await import("./run-service-AYATGPA6.js");
1637
1641
  return makeRuntime2(ChildProcessSpawner, defaultLayer);
1638
1642
  });
1639
1643
  var runPromiseExit = async (...args) => (await rt()).runPromiseExit(...args);
@@ -2277,4 +2281,4 @@ export {
2277
2281
  memoMap,
2278
2282
  makeRuntime
2279
2283
  };
2280
- //# sourceMappingURL=chunk-B3FN2B2N.js.map
2284
+ //# sourceMappingURL=chunk-3PZZ2D23.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../packages/opencode/src/effect/run-service.ts", "../packages/opencode/src/bus/global.ts", "../packages/opencode/src/effect/instance-registry.ts", "../packages/opencode/src/util/filesystem.ts", "../packages/opencode/src/util/glob.ts", "../packages/opencode/src/util/iife.ts", "../packages/opencode/src/util/log.ts", "../packages/opencode/src/global/index.ts", "../packages/opencode/src/util/context.ts", "../packages/opencode/src/project/project.ts", "../packages/opencode/src/storage/db.ts", "../packages/opencode/src/util/lazy.ts", "../packages/util/src/error.ts", "../packages/opencode/src/flag/flag.ts", "../packages/opencode/src/installation/meta.ts", "../packages/opencode/src/effect/instance-state.ts", "../packages/opencode/src/effect/instance-ref.ts", "../packages/opencode/src/storage/db.node.ts", "../packages/opencode/src/project/project.sql.ts", "../packages/opencode/src/storage/schema.sql.ts", "../packages/opencode/src/session/session.sql.ts", "../packages/opencode/src/bus/bus-event.ts", "../packages/opencode/src/util/which.ts", "../packages/opencode/src/project/schema.ts", "../packages/opencode/src/filesystem/index.ts", "../packages/opencode/src/effect/cross-spawn-spawner.ts", "../packages/opencode/src/project/state.ts", "../packages/opencode/src/project/instance.ts"],
4
+ "sourcesContent": ["import { Effect, Layer, ManagedRuntime } from \"effect\"\nimport * as ServiceMap from \"effect/ServiceMap\"\nimport { Instance } from \"@/project/instance\"\nimport { Context } from \"@/util/context\"\nimport { InstanceRef } from \"./instance-ref\"\n\nexport const memoMap = Layer.makeMemoMapUnsafe()\n\nfunction attach<A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> {\n try {\n const ctx = Instance.current\n return Effect.provideService(effect, InstanceRef, ctx)\n } catch (err) {\n if (!(err instanceof Context.NotFound)) throw err\n }\n return effect\n}\n\nexport function makeRuntime<I, S, E>(service: ServiceMap.Service<I, S>, layer: Layer.Layer<I, E>) {\n let rt: ManagedRuntime.ManagedRuntime<I, E> | undefined\n const getRuntime = () => (rt ??= ManagedRuntime.make(layer, { memoMap }))\n\n return {\n runSync: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>) => getRuntime().runSync(attach(service.use(fn))),\n runPromiseExit: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>, options?: Effect.RunOptions) =>\n getRuntime().runPromiseExit(attach(service.use(fn)), options),\n runPromise: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>, options?: Effect.RunOptions) =>\n getRuntime().runPromise(attach(service.use(fn)), options),\n runFork: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>) => getRuntime().runFork(attach(service.use(fn))),\n runCallback: <A, Err>(fn: (svc: S) => Effect.Effect<A, Err, I>) =>\n getRuntime().runCallback(attach(service.use(fn))),\n }\n}\n", "import { EventEmitter } from \"events\"\n\nexport const GlobalBus = new EventEmitter<{\n event: [\n {\n directory?: string\n payload: any\n },\n ]\n}>()\n", "const disposers = new Set<(directory: string) => Promise<void>>()\n\nexport function registerDisposer(disposer: (directory: string) => Promise<void>) {\n disposers.add(disposer)\n return () => {\n disposers.delete(disposer)\n }\n}\n\nexport async function disposeInstance(directory: string) {\n await Promise.allSettled([...disposers].map((disposer) => disposer(directory)))\n}\n", "import { chmod, mkdir, readFile, stat as statFile, writeFile } from \"fs/promises\"\nimport { createWriteStream, existsSync, statSync } from \"fs\"\nimport { lookup } from \"mime-types\"\nimport { realpathSync } from \"fs\"\nimport { dirname, join, relative, resolve as pathResolve, win32 } from \"path\"\nimport { Readable } from \"stream\"\nimport { pipeline } from \"stream/promises\"\nimport { Glob } from \"./glob\"\n\nexport namespace Filesystem {\n // Fast sync version for metadata checks\n export async function exists(p: string): Promise<boolean> {\n return existsSync(p)\n }\n\n export async function isDir(p: string): Promise<boolean> {\n try {\n return statSync(p).isDirectory()\n } catch {\n return false\n }\n }\n\n export function stat(p: string): ReturnType<typeof statSync> | undefined {\n return statSync(p, { throwIfNoEntry: false }) ?? undefined\n }\n\n export async function statAsync(p: string): Promise<ReturnType<typeof statSync> | undefined> {\n return statFile(p).catch((e) => {\n if (isEnoent(e)) return undefined\n throw e\n })\n }\n\n export async function size(p: string): Promise<number> {\n const s = stat(p)?.size ?? 0\n return typeof s === \"bigint\" ? Number(s) : s\n }\n\n export async function readText(p: string): Promise<string> {\n return readFile(p, \"utf-8\")\n }\n\n export async function readJson<T = any>(p: string): Promise<T> {\n return JSON.parse(await readFile(p, \"utf-8\"))\n }\n\n export async function readBytes(p: string): Promise<Buffer> {\n return readFile(p)\n }\n\n export async function readArrayBuffer(p: string): Promise<ArrayBuffer> {\n const buf = await readFile(p)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) as ArrayBuffer\n }\n\n function isEnoent(e: unknown): e is { code: \"ENOENT\" } {\n return typeof e === \"object\" && e !== null && \"code\" in e && (e as { code: string }).code === \"ENOENT\"\n }\n\n export async function write(p: string, content: string | Buffer | Uint8Array, mode?: number): Promise<void> {\n try {\n if (mode) {\n await writeFile(p, content, { mode })\n } else {\n await writeFile(p, content)\n }\n } catch (e) {\n if (isEnoent(e)) {\n await mkdir(dirname(p), { recursive: true })\n if (mode) {\n await writeFile(p, content, { mode })\n } else {\n await writeFile(p, content)\n }\n return\n }\n throw e\n }\n }\n\n export async function writeJson(p: string, data: unknown, mode?: number): Promise<void> {\n return write(p, JSON.stringify(data, null, 2), mode)\n }\n\n export async function writeStream(\n p: string,\n stream: ReadableStream<Uint8Array> | Readable,\n mode?: number,\n ): Promise<void> {\n const dir = dirname(p)\n if (!existsSync(dir)) {\n await mkdir(dir, { recursive: true })\n }\n\n const nodeStream = stream instanceof ReadableStream ? Readable.fromWeb(stream as any) : stream\n const writeStream = createWriteStream(p)\n await pipeline(nodeStream, writeStream)\n\n if (mode) {\n await chmod(p, mode)\n }\n }\n\n export function mimeType(p: string): string {\n return lookup(p) || \"application/octet-stream\"\n }\n\n /**\n * On Windows, normalize a path to its canonical casing using the filesystem.\n * This is needed because Windows paths are case-insensitive but LSP servers\n * may return paths with different casing than what we send them.\n */\n export function normalizePath(p: string): string {\n if (process.platform !== \"win32\") return p\n const resolved = win32.normalize(win32.resolve(windowsPath(p)))\n try {\n return realpathSync.native(resolved)\n } catch {\n return resolved\n }\n }\n\n export function normalizePathPattern(p: string): string {\n if (process.platform !== \"win32\") return p\n if (p === \"*\") return p\n const match = p.match(/^(.*)[\\\\/]\\*$/)\n if (!match) return normalizePath(p)\n const dir = /^[A-Za-z]:$/.test(match[1]) ? match[1] + \"\\\\\" : match[1]\n return join(normalizePath(dir), \"*\")\n }\n\n // We cannot rely on path.resolve() here because git.exe may come from Git Bash, Cygwin, or MSYS2, so we need to translate these paths at the boundary.\n // Also resolves symlinks so that callers using the result as a cache key\n // always get the same canonical path for a given physical directory.\n export function resolve(p: string): string {\n const resolved = pathResolve(windowsPath(p))\n try {\n return normalizePath(realpathSync(resolved))\n } catch (e) {\n if (isEnoent(e)) return normalizePath(resolved)\n throw e\n }\n }\n\n export function windowsPath(p: string): string {\n if (process.platform !== \"win32\") return p\n return (\n p\n .replace(/^\\/([a-zA-Z]):(?:[\\\\/]|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n // Git Bash for Windows paths are typically /<drive>/...\n .replace(/^\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n // Cygwin git paths are typically /cygdrive/<drive>/...\n .replace(/^\\/cygdrive\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n // WSL paths are typically /mnt/<drive>/...\n .replace(/^\\/mnt\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n )\n }\n export function overlaps(a: string, b: string) {\n const relA = relative(a, b)\n const relB = relative(b, a)\n return !relA || !relA.startsWith(\"..\") || !relB || !relB.startsWith(\"..\")\n }\n\n export function contains(parent: string, child: string) {\n return !relative(parent, child).startsWith(\"..\")\n }\n\n export async function findUp(\n target: string,\n start: string,\n stop?: string,\n options?: { rootFirst?: boolean },\n ): Promise<string[]>\n export async function findUp(\n target: string[],\n start: string,\n stop?: string,\n options?: { rootFirst?: boolean },\n ): Promise<string[]>\n export async function findUp(\n target: string | string[],\n start: string,\n stop?: string,\n options?: { rootFirst?: boolean },\n ) {\n const dirs = [start]\n let current = start\n while (true) {\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n dirs.push(parent)\n current = parent\n }\n\n const targets = Array.isArray(target) ? target : [target]\n const result = []\n for (const dir of options?.rootFirst ? dirs.toReversed() : dirs) {\n for (const item of targets) {\n const search = join(dir, item)\n if (await exists(search)) result.push(search)\n }\n }\n return result\n }\n\n export async function* up(options: { targets: string[]; start: string; stop?: string }) {\n const { targets, start, stop } = options\n let current = start\n while (true) {\n for (const target of targets) {\n const search = join(current, target)\n if (await exists(search)) yield search\n }\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n }\n\n export async function globUp(pattern: string, start: string, stop?: string) {\n let current = start\n const result = []\n while (true) {\n try {\n const matches = await Glob.scan(pattern, {\n cwd: current,\n absolute: true,\n include: \"file\",\n dot: true,\n })\n result.push(...matches)\n } catch {\n // Skip invalid glob patterns\n }\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n return result\n }\n}\n", "import { glob, globSync, type GlobOptions } from \"glob\"\nimport { minimatch } from \"minimatch\"\n\nexport namespace Glob {\n export interface Options {\n cwd?: string\n absolute?: boolean\n include?: \"file\" | \"all\"\n dot?: boolean\n symlink?: boolean\n }\n\n function toGlobOptions(options: Options): GlobOptions {\n return {\n cwd: options.cwd,\n absolute: options.absolute,\n dot: options.dot,\n follow: options.symlink ?? false,\n nodir: options.include !== \"all\",\n }\n }\n\n export async function scan(pattern: string, options: Options = {}): Promise<string[]> {\n return glob(pattern, toGlobOptions(options)) as Promise<string[]>\n }\n\n export function scanSync(pattern: string, options: Options = {}): string[] {\n return globSync(pattern, toGlobOptions(options)) as string[]\n }\n\n export function match(pattern: string, filepath: string): boolean {\n return minimatch(filepath, pattern, { dot: true })\n }\n}\n", "export function iife<T>(fn: () => T) {\n return fn()\n}\n", "import path from \"path\"\nimport fs from \"fs/promises\"\nimport { createWriteStream } from \"fs\"\nimport { Global } from \"../global\"\nimport z from \"zod\"\nimport { Glob } from \"./glob\"\n\nexport namespace Log {\n export const Level = z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]).meta({ ref: \"LogLevel\", description: \"Log level\" })\n export type Level = z.infer<typeof Level>\n\n const levelPriority: Record<Level, number> = {\n DEBUG: 0,\n INFO: 1,\n WARN: 2,\n ERROR: 3,\n }\n\n let level: Level = \"INFO\"\n\n function shouldLog(input: Level): boolean {\n return levelPriority[input] >= levelPriority[level]\n }\n\n export type Logger = {\n debug(message?: any, extra?: Record<string, any>): void\n info(message?: any, extra?: Record<string, any>): void\n error(message?: any, extra?: Record<string, any>): void\n warn(message?: any, extra?: Record<string, any>): void\n tag(key: string, value: string): Logger\n clone(): Logger\n time(\n message: string,\n extra?: Record<string, any>,\n ): {\n stop(): void\n [Symbol.dispose](): void\n }\n }\n\n const loggers = new Map<string, Logger>()\n\n export const Default = create({ service: \"default\" })\n\n export interface Options {\n print: boolean\n dev?: boolean\n level?: Level\n }\n\n let logpath = \"\"\n export function file() {\n return logpath\n }\n let write = (msg: any) => {\n process.stderr.write(msg)\n return msg.length\n }\n\n export async function init(options: Options) {\n if (options.level) level = options.level\n cleanup(Global.Path.log)\n if (options.print) return\n logpath = path.join(\n Global.Path.log,\n options.dev ? \"dev.log\" : new Date().toISOString().split(\".\")[0].replace(/:/g, \"\") + \".log\",\n )\n await fs.truncate(logpath).catch(() => {})\n const stream = createWriteStream(logpath, { flags: \"a\" })\n write = async (msg: any) => {\n return new Promise((resolve, reject) => {\n stream.write(msg, (err) => {\n if (err) reject(err)\n else resolve(msg.length)\n })\n })\n }\n }\n\n async function cleanup(dir: string) {\n const files = await Glob.scan(\"????-??-??T??????.log\", {\n cwd: dir,\n absolute: true,\n include: \"file\",\n })\n if (files.length <= 5) return\n\n const filesToDelete = files.slice(0, -10)\n await Promise.all(filesToDelete.map((file) => fs.unlink(file).catch(() => {})))\n }\n\n function formatError(error: Error, depth = 0): string {\n const result = error.message\n return error.cause instanceof Error && depth < 10\n ? result + \" Caused by: \" + formatError(error.cause, depth + 1)\n : result\n }\n\n let last = Date.now()\n export function create(tags?: Record<string, any>) {\n tags = tags || {}\n\n const service = tags[\"service\"]\n if (service && typeof service === \"string\") {\n const cached = loggers.get(service)\n if (cached) {\n return cached\n }\n }\n\n function build(message: any, extra?: Record<string, any>) {\n const prefix = Object.entries({\n ...tags,\n ...extra,\n })\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => {\n const prefix = `${key}=`\n if (value instanceof Error) return prefix + formatError(value)\n if (typeof value === \"object\") return prefix + JSON.stringify(value)\n return prefix + value\n })\n .join(\" \")\n const next = new Date()\n const diff = next.getTime() - last\n last = next.getTime()\n return [next.toISOString().split(\".\")[0], \"+\" + diff + \"ms\", prefix, message].filter(Boolean).join(\" \") + \"\\n\"\n }\n const result: Logger = {\n debug(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"DEBUG\")) {\n write(\"DEBUG \" + build(message, extra))\n }\n },\n info(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"INFO\")) {\n write(\"INFO \" + build(message, extra))\n }\n },\n error(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"ERROR\")) {\n write(\"ERROR \" + build(message, extra))\n }\n },\n warn(message?: any, extra?: Record<string, any>) {\n if (shouldLog(\"WARN\")) {\n write(\"WARN \" + build(message, extra))\n }\n },\n tag(key: string, value: string) {\n if (tags) tags[key] = value\n return result\n },\n clone() {\n return Log.create({ ...tags })\n },\n time(message: string, extra?: Record<string, any>) {\n const now = Date.now()\n result.info(message, { status: \"started\", ...extra })\n function stop() {\n result.info(message, {\n status: \"completed\",\n duration: Date.now() - now,\n ...extra,\n })\n }\n return {\n stop,\n [Symbol.dispose]() {\n stop()\n },\n }\n },\n }\n\n if (service && typeof service === \"string\") {\n loggers.set(service, result)\n }\n\n return result\n }\n}\n", "import fs from \"fs/promises\"\nimport { xdgData, xdgCache, xdgConfig, xdgState } from \"xdg-basedir\"\nimport path from \"path\"\nimport os from \"os\"\nimport { Filesystem } from \"../util/filesystem\"\n\nconst app = \"opencode\"\n\n// OPENCODE_DATA_DIR: override data/state/config/log to a custom directory (e.g. alchemylab isolation)\nconst customDataDir = process.env[\"OPENCODE_DATA_DIR\"]\nconst data = customDataDir || path.join(xdgData!, app)\nconst globalData = path.join(xdgData!, app) // always user-global, for auth/credentials\nconst cache = path.join(xdgCache!, app)\nconst config = path.join(xdgConfig!, app) // always user-global (plugins, provider config)\nconst state = customDataDir ? path.join(customDataDir, \"state\") : path.join(xdgState!, app)\n\nexport namespace Global {\n export const Path = {\n // Allow override via OPENCODE_TEST_HOME for test isolation\n get home() {\n return process.env.OPENCODE_TEST_HOME || os.homedir()\n },\n data,\n globalData, // user-global data dir (for auth, credentials \u2014 not affected by OPENCODE_DATA_DIR)\n bin: path.join(cache, \"bin\"),\n log: path.join(data, \"log\"),\n cache,\n config,\n state,\n }\n}\n\nawait Promise.all([\n fs.mkdir(Global.Path.data, { recursive: true }),\n fs.mkdir(Global.Path.config, { recursive: true }),\n fs.mkdir(Global.Path.state, { recursive: true }),\n fs.mkdir(Global.Path.log, { recursive: true }),\n fs.mkdir(Global.Path.bin, { recursive: true }),\n])\n\nconst CACHE_VERSION = \"21\"\n\nconst version = await Filesystem.readText(path.join(Global.Path.cache, \"version\")).catch(() => \"0\")\n\nif (version !== CACHE_VERSION) {\n try {\n const contents = await fs.readdir(Global.Path.cache)\n await Promise.all(\n contents.map((item) =>\n fs.rm(path.join(Global.Path.cache, item), {\n recursive: true,\n force: true,\n }),\n ),\n )\n } catch (e) {}\n await Filesystem.write(path.join(Global.Path.cache, \"version\"), CACHE_VERSION)\n}\n", "import { AsyncLocalStorage } from \"async_hooks\"\n\nexport namespace Context {\n export class NotFound extends Error {\n constructor(public override readonly name: string) {\n super(`No context found for ${name}`)\n }\n }\n\n export function create<T>(name: string) {\n const storage = new AsyncLocalStorage<T>()\n return {\n use() {\n const result = storage.getStore()\n if (!result) {\n throw new NotFound(name)\n }\n return result\n },\n provide<R>(value: T, fn: () => R) {\n return storage.run(value, fn)\n },\n }\n }\n}\n", "import z from \"zod\"\nimport { and, Database, eq } from \"../storage/db\"\nimport { ProjectTable } from \"./project.sql\"\nimport { SessionTable } from \"../session/session.sql\"\nimport { Log } from \"../util/log\"\nimport { Flag } from \"@/flag/flag\"\nimport { BusEvent } from \"@/bus/bus-event\"\nimport { GlobalBus } from \"@/bus/global\"\nimport { which } from \"../util/which\"\nimport { ProjectID } from \"./schema\"\nimport { Effect, Layer, Path, Scope, ServiceMap, Stream } from \"effect\"\nimport { ChildProcess, ChildProcessSpawner } from \"effect/unstable/process\"\nimport { NodeFileSystem, NodePath } from \"@effect/platform-node\"\nimport { makeRuntime } from \"@/effect/run-service\"\nimport { AppFileSystem } from \"@/filesystem\"\nimport * as CrossSpawnSpawner from \"@/effect/cross-spawn-spawner\"\n\nexport namespace Project {\n const log = Log.create({ service: \"project\" })\n\n export const Info = z\n .object({\n id: ProjectID.zod,\n worktree: z.string(),\n vcs: z.literal(\"git\").optional(),\n name: z.string().optional(),\n icon: z\n .object({\n url: z.string().optional(),\n override: z.string().optional(),\n color: z.string().optional(),\n })\n .optional(),\n commands: z\n .object({\n start: z.string().optional().describe(\"Startup script to run when creating a new workspace (worktree)\"),\n })\n .optional(),\n time: z.object({\n created: z.number(),\n updated: z.number(),\n initialized: z.number().optional(),\n }),\n sandboxes: z.array(z.string()),\n })\n .meta({\n ref: \"Project\",\n })\n export type Info = z.infer<typeof Info>\n\n export const Event = {\n Updated: BusEvent.define(\"project.updated\", Info),\n }\n\n type Row = typeof ProjectTable.$inferSelect\n\n export function fromRow(row: Row): Info {\n const icon =\n row.icon_url || row.icon_color\n ? { url: row.icon_url ?? undefined, color: row.icon_color ?? undefined }\n : undefined\n return {\n id: row.id,\n worktree: row.worktree,\n vcs: row.vcs ? Info.shape.vcs.parse(row.vcs) : undefined,\n name: row.name ?? undefined,\n icon,\n time: {\n created: row.time_created,\n updated: row.time_updated,\n initialized: row.time_initialized ?? undefined,\n },\n sandboxes: row.sandboxes,\n commands: row.commands ?? undefined,\n }\n }\n\n export const UpdateInput = z.object({\n projectID: ProjectID.zod,\n name: z.string().optional(),\n icon: Info.shape.icon.optional(),\n commands: Info.shape.commands.optional(),\n })\n export type UpdateInput = z.infer<typeof UpdateInput>\n\n // ---------------------------------------------------------------------------\n // Effect service\n // ---------------------------------------------------------------------------\n\n export interface Interface {\n readonly fromDirectory: (directory: string) => Effect.Effect<{ project: Info; sandbox: string }>\n readonly discover: (input: Info) => Effect.Effect<void>\n readonly list: () => Effect.Effect<Info[]>\n readonly get: (id: ProjectID) => Effect.Effect<Info | undefined>\n readonly update: (input: UpdateInput) => Effect.Effect<Info>\n readonly initGit: (input: { directory: string; project: Info }) => Effect.Effect<Info>\n readonly setInitialized: (id: ProjectID) => Effect.Effect<void>\n readonly sandboxes: (id: ProjectID) => Effect.Effect<string[]>\n readonly addSandbox: (id: ProjectID, directory: string) => Effect.Effect<void>\n readonly removeSandbox: (id: ProjectID, directory: string) => Effect.Effect<void>\n }\n\n export class Service extends ServiceMap.Service<Service, Interface>()(\"@opencode/Project\") {}\n\n type GitResult = { code: number; text: string; stderr: string }\n\n export const layer: Layer.Layer<\n Service,\n never,\n AppFileSystem.Service | Path.Path | ChildProcessSpawner.ChildProcessSpawner\n > = Layer.effect(\n Service,\n Effect.gen(function* () {\n const fs = yield* AppFileSystem.Service\n const pathSvc = yield* Path.Path\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner\n\n const git = Effect.fnUntraced(\n function* (args: string[], opts?: { cwd?: string }) {\n const handle = yield* spawner.spawn(\n ChildProcess.make(\"git\", args, { cwd: opts?.cwd, extendEnv: true, stdin: \"ignore\" }),\n )\n const [text, stderr] = yield* Effect.all(\n [Stream.mkString(Stream.decodeText(handle.stdout)), Stream.mkString(Stream.decodeText(handle.stderr))],\n { concurrency: 2 },\n )\n const code = yield* handle.exitCode\n return { code, text, stderr } satisfies GitResult\n },\n Effect.scoped,\n Effect.catch(() => Effect.succeed({ code: 1, text: \"\", stderr: \"\" } satisfies GitResult)),\n )\n\n const db = <T>(fn: (d: Parameters<typeof Database.use>[0] extends (trx: infer D) => any ? D : never) => T) =>\n Effect.sync(() => Database.use(fn))\n\n const emitUpdated = (data: Info) =>\n Effect.sync(() =>\n GlobalBus.emit(\"event\", {\n payload: { type: Event.Updated.type, properties: data },\n }),\n )\n\n const fakeVcs = Info.shape.vcs.parse(Flag.OPENCODE_FAKE_VCS)\n\n const resolveGitPath = (cwd: string, name: string) => {\n if (!name) return cwd\n name = name.replace(/[\\r\\n]+$/, \"\")\n if (!name) return cwd\n name = AppFileSystem.windowsPath(name)\n if (pathSvc.isAbsolute(name)) return pathSvc.normalize(name)\n return pathSvc.resolve(cwd, name)\n }\n\n const scope = yield* Scope.Scope\n\n const readCachedProjectId = Effect.fnUntraced(function* (dir: string) {\n return yield* fs.readFileString(pathSvc.join(dir, \"opencode\")).pipe(\n Effect.map((x) => x.trim()),\n Effect.map(ProjectID.make),\n Effect.catch(() => Effect.succeed(undefined)),\n )\n })\n\n const fromDirectory = Effect.fn(\"Project.fromDirectory\")(function* (directory: string) {\n log.info(\"fromDirectory\", { directory })\n\n // Phase 1: discover git info\n type DiscoveryResult = { id: ProjectID; worktree: string; sandbox: string; vcs: Info[\"vcs\"] }\n\n const data: DiscoveryResult = yield* Effect.gen(function* () {\n const dotgitMatches = yield* fs.up({ targets: [\".git\"], start: directory }).pipe(Effect.orDie)\n const dotgit = dotgitMatches[0]\n\n if (!dotgit) {\n return {\n id: ProjectID.global,\n worktree: \"/\",\n sandbox: \"/\",\n vcs: fakeVcs,\n }\n }\n\n let sandbox = pathSvc.dirname(dotgit)\n const gitBinary = yield* Effect.sync(() => which(\"git\"))\n let id = yield* readCachedProjectId(dotgit)\n\n if (!gitBinary) {\n return {\n id: id ?? ProjectID.global,\n worktree: sandbox,\n sandbox,\n vcs: fakeVcs,\n }\n }\n\n const commonDir = yield* git([\"rev-parse\", \"--git-common-dir\"], { cwd: sandbox })\n if (commonDir.code !== 0) {\n return {\n id: id ?? ProjectID.global,\n worktree: sandbox,\n sandbox,\n vcs: fakeVcs,\n }\n }\n const worktree = (() => {\n const common = resolveGitPath(sandbox, commonDir.text.trim())\n return common === sandbox ? sandbox : pathSvc.dirname(common)\n })()\n\n if (id == null) {\n id = yield* readCachedProjectId(pathSvc.join(worktree, \".git\"))\n }\n\n if (!id) {\n const revList = yield* git([\"rev-list\", \"--max-parents=0\", \"HEAD\"], { cwd: sandbox })\n const roots = revList.text\n .split(\"\\n\")\n .filter(Boolean)\n .map((x) => x.trim())\n .toSorted()\n\n id = roots[0] ? ProjectID.make(roots[0]) : undefined\n if (id) {\n yield* fs.writeFileString(pathSvc.join(worktree, \".git\", \"opencode\"), id).pipe(Effect.ignore)\n }\n }\n\n if (!id) {\n return { id: ProjectID.global, worktree: sandbox, sandbox, vcs: \"git\" as const }\n }\n\n const topLevel = yield* git([\"rev-parse\", \"--show-toplevel\"], { cwd: sandbox })\n if (topLevel.code !== 0) {\n return {\n id,\n worktree: sandbox,\n sandbox,\n vcs: fakeVcs,\n }\n }\n sandbox = resolveGitPath(sandbox, topLevel.text.trim())\n\n return { id, sandbox, worktree, vcs: \"git\" as const }\n })\n\n // Phase 2: upsert\n const row = yield* db((d) => d.select().from(ProjectTable).where(eq(ProjectTable.id, data.id)).get())\n const existing = row\n ? fromRow(row)\n : {\n id: data.id,\n worktree: data.worktree,\n vcs: data.vcs,\n sandboxes: [] as string[],\n time: { created: Date.now(), updated: Date.now() },\n }\n\n if (Flag.OPENCODE_EXPERIMENTAL_ICON_DISCOVERY)\n yield* discover(existing).pipe(Effect.ignore, Effect.forkIn(scope))\n\n const result: Info = {\n ...existing,\n worktree: data.worktree,\n vcs: data.vcs,\n time: { ...existing.time, updated: Date.now() },\n }\n if (data.sandbox !== result.worktree && !result.sandboxes.includes(data.sandbox))\n result.sandboxes.push(data.sandbox)\n result.sandboxes = yield* Effect.forEach(\n result.sandboxes,\n (s) =>\n fs.exists(s).pipe(\n Effect.orDie,\n Effect.map((exists) => (exists ? s : undefined)),\n ),\n { concurrency: \"unbounded\" },\n ).pipe(Effect.map((arr) => arr.filter((x): x is string => x !== undefined)))\n\n yield* db((d) =>\n d\n .insert(ProjectTable)\n .values({\n id: result.id,\n worktree: result.worktree,\n vcs: result.vcs ?? null,\n name: result.name,\n icon_url: result.icon?.url,\n icon_color: result.icon?.color,\n time_created: result.time.created,\n time_updated: result.time.updated,\n time_initialized: result.time.initialized,\n sandboxes: result.sandboxes,\n commands: result.commands,\n })\n .onConflictDoUpdate({\n target: ProjectTable.id,\n set: {\n worktree: result.worktree,\n vcs: result.vcs ?? null,\n name: result.name,\n icon_url: result.icon?.url,\n icon_color: result.icon?.color,\n time_updated: result.time.updated,\n time_initialized: result.time.initialized,\n sandboxes: result.sandboxes,\n commands: result.commands,\n },\n })\n .run(),\n )\n\n if (data.id !== ProjectID.global) {\n yield* db((d) =>\n d\n .update(SessionTable)\n .set({ project_id: data.id })\n .where(and(eq(SessionTable.project_id, ProjectID.global), eq(SessionTable.directory, data.worktree)))\n .run(),\n )\n }\n\n yield* emitUpdated(result)\n return { project: result, sandbox: data.sandbox }\n })\n\n const discover = Effect.fn(\"Project.discover\")(function* (input: Info) {\n if (input.vcs !== \"git\") return\n if (input.icon?.override) return\n if (input.icon?.url) return\n\n const matches = yield* fs\n .glob(\"**/favicon.{ico,png,svg,jpg,jpeg,webp}\", {\n cwd: input.worktree,\n absolute: true,\n include: \"file\",\n })\n .pipe(Effect.orDie)\n const shortest = matches.sort((a, b) => a.length - b.length)[0]\n if (!shortest) return\n\n const buffer = yield* fs.readFile(shortest).pipe(Effect.orDie)\n const base64 = Buffer.from(buffer).toString(\"base64\")\n const mime = AppFileSystem.mimeType(shortest)\n const url = `data:${mime};base64,${base64}`\n yield* update({ projectID: input.id, icon: { url } })\n })\n\n const list = Effect.fn(\"Project.list\")(function* () {\n return yield* db((d) => d.select().from(ProjectTable).all().map(fromRow))\n })\n\n const get = Effect.fn(\"Project.get\")(function* (id: ProjectID) {\n const row = yield* db((d) => d.select().from(ProjectTable).where(eq(ProjectTable.id, id)).get())\n return row ? fromRow(row) : undefined\n })\n\n const update = Effect.fn(\"Project.update\")(function* (input: UpdateInput) {\n const result = yield* db((d) =>\n d\n .update(ProjectTable)\n .set({\n name: input.name,\n icon_url: input.icon?.url,\n icon_color: input.icon?.color,\n commands: input.commands,\n time_updated: Date.now(),\n })\n .where(eq(ProjectTable.id, input.projectID))\n .returning()\n .get(),\n )\n if (!result) throw new Error(`Project not found: ${input.projectID}`)\n const data = fromRow(result)\n yield* emitUpdated(data)\n return data\n })\n\n const initGit = Effect.fn(\"Project.initGit\")(function* (input: { directory: string; project: Info }) {\n if (input.project.vcs === \"git\") return input.project\n if (!(yield* Effect.sync(() => which(\"git\")))) throw new Error(\"Git is not installed\")\n const result = yield* git([\"init\", \"--quiet\"], { cwd: input.directory })\n if (result.code !== 0) {\n throw new Error(result.stderr.trim() || result.text.trim() || \"Failed to initialize git repository\")\n }\n const { project } = yield* fromDirectory(input.directory)\n return project\n })\n\n const setInitialized = Effect.fn(\"Project.setInitialized\")(function* (id: ProjectID) {\n yield* db((d) =>\n d.update(ProjectTable).set({ time_initialized: Date.now() }).where(eq(ProjectTable.id, id)).run(),\n )\n })\n\n const sandboxes = Effect.fn(\"Project.sandboxes\")(function* (id: ProjectID) {\n const row = yield* db((d) => d.select().from(ProjectTable).where(eq(ProjectTable.id, id)).get())\n if (!row) return []\n const data = fromRow(row)\n return yield* Effect.forEach(\n data.sandboxes,\n (dir) =>\n fs.isDir(dir).pipe(\n Effect.orDie,\n Effect.map((ok) => (ok ? dir : undefined)),\n ),\n { concurrency: \"unbounded\" },\n ).pipe(Effect.map((arr) => arr.filter((x): x is string => x !== undefined)))\n })\n\n const addSandbox = Effect.fn(\"Project.addSandbox\")(function* (id: ProjectID, directory: string) {\n const row = yield* db((d) => d.select().from(ProjectTable).where(eq(ProjectTable.id, id)).get())\n if (!row) throw new Error(`Project not found: ${id}`)\n const sboxes = [...row.sandboxes]\n if (!sboxes.includes(directory)) sboxes.push(directory)\n const result = yield* db((d) =>\n d\n .update(ProjectTable)\n .set({ sandboxes: sboxes, time_updated: Date.now() })\n .where(eq(ProjectTable.id, id))\n .returning()\n .get(),\n )\n if (!result) throw new Error(`Project not found: ${id}`)\n yield* emitUpdated(fromRow(result))\n })\n\n const removeSandbox = Effect.fn(\"Project.removeSandbox\")(function* (id: ProjectID, directory: string) {\n const row = yield* db((d) => d.select().from(ProjectTable).where(eq(ProjectTable.id, id)).get())\n if (!row) throw new Error(`Project not found: ${id}`)\n const sboxes = row.sandboxes.filter((s) => s !== directory)\n const result = yield* db((d) =>\n d\n .update(ProjectTable)\n .set({ sandboxes: sboxes, time_updated: Date.now() })\n .where(eq(ProjectTable.id, id))\n .returning()\n .get(),\n )\n if (!result) throw new Error(`Project not found: ${id}`)\n yield* emitUpdated(fromRow(result))\n })\n\n return Service.of({\n fromDirectory,\n discover,\n list,\n get,\n update,\n initGit,\n setInitialized,\n sandboxes,\n addSandbox,\n removeSandbox,\n })\n }),\n )\n\n export const defaultLayer = layer.pipe(\n Layer.provide(CrossSpawnSpawner.defaultLayer),\n Layer.provide(AppFileSystem.defaultLayer),\n Layer.provide(NodePath.layer),\n )\n const { runPromise } = makeRuntime(Service, defaultLayer)\n\n // ---------------------------------------------------------------------------\n // Promise-based API (delegates to Effect service via runPromise)\n // ---------------------------------------------------------------------------\n\n export function fromDirectory(directory: string) {\n return runPromise((svc) => svc.fromDirectory(directory))\n }\n\n export function discover(input: Info) {\n return runPromise((svc) => svc.discover(input))\n }\n\n export function list() {\n return Database.use((db) =>\n db\n .select()\n .from(ProjectTable)\n .all()\n .map((row) => fromRow(row)),\n )\n }\n\n export function get(id: ProjectID): Info | undefined {\n const row = Database.use((db) => db.select().from(ProjectTable).where(eq(ProjectTable.id, id)).get())\n if (!row) return undefined\n return fromRow(row)\n }\n\n export function setInitialized(id: ProjectID) {\n Database.use((db) =>\n db.update(ProjectTable).set({ time_initialized: Date.now() }).where(eq(ProjectTable.id, id)).run(),\n )\n }\n\n export function initGit(input: { directory: string; project: Info }) {\n return runPromise((svc) => svc.initGit(input))\n }\n\n export function update(input: UpdateInput) {\n return runPromise((svc) => svc.update(input))\n }\n\n export function sandboxes(id: ProjectID) {\n return runPromise((svc) => svc.sandboxes(id))\n }\n\n export function addSandbox(id: ProjectID, directory: string) {\n return runPromise((svc) => svc.addSandbox(id, directory))\n }\n\n export function removeSandbox(id: ProjectID, directory: string) {\n return runPromise((svc) => svc.removeSandbox(id, directory))\n }\n}\n", "import { type NodeSQLiteDatabase } from \"drizzle-orm/node-sqlite\"\nimport { migrate } from \"drizzle-orm/node-sqlite/migrator\"\nimport { type SQLiteTransaction } from \"drizzle-orm/sqlite-core\"\nexport * from \"drizzle-orm\"\nimport { Context } from \"../util/context\"\nimport { lazy } from \"../util/lazy\"\nimport { Global } from \"../global\"\nimport { Log } from \"../util/log\"\nimport { NamedError } from \"@opencode-ai/util/error\"\nimport z from \"zod\"\nimport path from \"path\"\nimport { readFileSync, readdirSync, existsSync } from \"fs\"\nimport { Flag } from \"../flag/flag\"\nimport { CHANNEL } from \"../installation/meta\"\nimport { InstanceState } from \"@/effect/instance-state\"\nimport { iife } from \"@/util/iife\"\nimport { init } from \"#db\"\n\ndeclare const OPENCODE_MIGRATIONS: { sql: string; timestamp: number; name: string }[] | undefined\n\nexport const NotFoundError = NamedError.create(\n \"NotFoundError\",\n z.object({\n message: z.string(),\n }),\n)\n\nconst log = Log.create({ service: \"db\" })\n\nexport namespace Database {\n export function getChannelPath() {\n if ([\"latest\", \"beta\"].includes(CHANNEL) || Flag.OPENCODE_DISABLE_CHANNEL_DB)\n return path.join(Global.Path.data, \"opencode.db\")\n const safe = CHANNEL.replace(/[^a-zA-Z0-9._-]/g, \"-\")\n return path.join(Global.Path.data, `opencode-${safe}.db`)\n }\n\n export const Path = iife(() => {\n if (Flag.OPENCODE_DB) {\n if (Flag.OPENCODE_DB === \":memory:\" || path.isAbsolute(Flag.OPENCODE_DB)) return Flag.OPENCODE_DB\n return path.join(Global.Path.data, Flag.OPENCODE_DB)\n }\n return getChannelPath()\n })\n\n export type Transaction = SQLiteTransaction<\"sync\", void>\n\n type Client = NodeSQLiteDatabase\n\n type Journal = { sql: string; timestamp: number; name: string }[]\n\n function time(tag: string) {\n const match = /^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})/.exec(tag)\n if (!match) return 0\n return Date.UTC(\n Number(match[1]),\n Number(match[2]) - 1,\n Number(match[3]),\n Number(match[4]),\n Number(match[5]),\n Number(match[6]),\n )\n }\n\n function migrations(dir: string): Journal {\n const dirs = readdirSync(dir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n\n const sql = dirs\n .map((name) => {\n const file = path.join(dir, name, \"migration.sql\")\n if (!existsSync(file)) return\n return {\n sql: readFileSync(file, \"utf-8\"),\n timestamp: time(name),\n name,\n }\n })\n .filter(Boolean) as Journal\n\n return sql.sort((a, b) => a.timestamp - b.timestamp)\n }\n\n export const Client = lazy(() => {\n log.info(\"opening database\", { path: Path })\n\n const db = init(Path)\n\n db.run(\"PRAGMA journal_mode = WAL\")\n db.run(\"PRAGMA synchronous = NORMAL\")\n db.run(\"PRAGMA busy_timeout = 5000\")\n db.run(\"PRAGMA cache_size = -64000\")\n db.run(\"PRAGMA foreign_keys = ON\")\n db.run(\"PRAGMA wal_checkpoint(PASSIVE)\")\n\n // Apply schema migrations\n const migrationsDir = path.join(import.meta.dirname, \"../packages/opencode/migration\")\n if (typeof OPENCODE_MIGRATIONS !== \"undefined\") {\n // Bundled mode (bun build) \u2014 raw journal entries\n const entries = OPENCODE_MIGRATIONS\n if (entries.length > 0) {\n log.info(\"applying migrations\", { count: entries.length, mode: \"bundled\" })\n if (Flag.OPENCODE_SKIP_MIGRATIONS) {\n for (const item of entries) item.sql = \"select 1;\"\n }\n migrate(db, entries as any)\n }\n } else {\n // Dev mode \u2014 pass folder path (compatible with both bun-sqlite and node-sqlite migrators)\n const entries = migrations(migrationsDir)\n log.info(\"applying migrations\", { count: entries.length, mode: \"dev\" })\n if (!Flag.OPENCODE_SKIP_MIGRATIONS && entries.length > 0) {\n migrate(db, { migrationsFolder: migrationsDir } as any)\n }\n }\n\n return db\n })\n\n export function close() {\n Client().$client.close()\n Client.reset()\n }\n\n export type TxOrDb = Transaction | Client\n\n const ctx = Context.create<{\n tx: TxOrDb\n effects: (() => void | Promise<void>)[]\n }>(\"database\")\n\n export function use<T>(callback: (trx: TxOrDb) => T): T {\n try {\n return callback(ctx.use().tx)\n } catch (err) {\n if (err instanceof Context.NotFound) {\n const effects: (() => void | Promise<void>)[] = []\n const result = ctx.provide({ effects, tx: Client() }, () => callback(Client()))\n for (const effect of effects) effect()\n return result\n }\n throw err\n }\n }\n\n export function effect(fn: () => any | Promise<any>) {\n const bound = InstanceState.bind(fn)\n try {\n ctx.use().effects.push(bound)\n } catch {\n bound()\n }\n }\n\n type NotPromise<T> = T extends Promise<any> ? never : T\n\n export function transaction<T>(\n callback: (tx: TxOrDb) => NotPromise<T>,\n options?: {\n behavior?: \"deferred\" | \"immediate\" | \"exclusive\"\n },\n ): NotPromise<T> {\n try {\n return callback(ctx.use().tx)\n } catch (err) {\n if (err instanceof Context.NotFound) {\n const effects: (() => void | Promise<void>)[] = []\n const txCallback = InstanceState.bind((tx: TxOrDb) => ctx.provide({ tx, effects }, () => callback(tx)))\n const result = Client().transaction(txCallback, { behavior: options?.behavior })\n for (const effect of effects) effect()\n return result as NotPromise<T>\n }\n throw err\n }\n }\n}\n", "export function lazy<T>(fn: () => T) {\n let value: T | undefined\n let loaded = false\n\n const result = (): T => {\n if (loaded) return value as T\n try {\n value = fn()\n loaded = true\n return value as T\n } catch (e) {\n // Don't mark as loaded if initialization failed\n throw e\n }\n }\n\n result.reset = () => {\n loaded = false\n value = undefined\n }\n\n return result\n}\n", "import z from \"zod\"\n\nexport abstract class NamedError extends Error {\n abstract schema(): z.core.$ZodType\n abstract toObject(): { name: string; data: any }\n\n static create<Name extends string, Data extends z.core.$ZodType>(name: Name, data: Data) {\n const schema = z\n .object({\n name: z.literal(name),\n data,\n })\n .meta({\n ref: name,\n })\n const result = class extends NamedError {\n public static readonly Schema = schema\n\n public override readonly name = name as Name\n\n constructor(\n public readonly data: z.input<Data>,\n options?: ErrorOptions,\n ) {\n super(name, options)\n this.name = name\n }\n\n static isInstance(input: any): input is InstanceType<typeof result> {\n return typeof input === \"object\" && \"name\" in input && input.name === name\n }\n\n schema() {\n return schema\n }\n\n toObject() {\n return {\n name: name,\n data: this.data,\n }\n }\n }\n Object.defineProperty(result, \"name\", { value: name })\n return result\n }\n\n public static readonly Unknown = NamedError.create(\n \"UnknownError\",\n z.object({\n message: z.string(),\n }),\n )\n}\n", "import { Config } from \"effect\"\n\nfunction truthy(key: string) {\n const value = process.env[key]?.toLowerCase()\n return value === \"true\" || value === \"1\"\n}\n\nfunction falsy(key: string) {\n const value = process.env[key]?.toLowerCase()\n return value === \"false\" || value === \"0\"\n}\n\nexport namespace Flag {\n export const OPENCODE_AUTO_SHARE = truthy(\"OPENCODE_AUTO_SHARE\")\n export const OPENCODE_AUTO_HEAP_SNAPSHOT = truthy(\"OPENCODE_AUTO_HEAP_SNAPSHOT\")\n export const OPENCODE_GIT_BASH_PATH = process.env[\"OPENCODE_GIT_BASH_PATH\"]\n export const OPENCODE_CONFIG = process.env[\"OPENCODE_CONFIG\"]\n export declare const OPENCODE_PURE: boolean\n export declare const OPENCODE_TUI_CONFIG: string | undefined\n export declare const OPENCODE_CONFIG_DIR: string | undefined\n export declare const OPENCODE_PLUGIN_META_FILE: string | undefined\n export const OPENCODE_CONFIG_CONTENT = process.env[\"OPENCODE_CONFIG_CONTENT\"]\n export const OPENCODE_DISABLE_AUTOUPDATE = truthy(\"OPENCODE_DISABLE_AUTOUPDATE\")\n export const OPENCODE_ALWAYS_NOTIFY_UPDATE = truthy(\"OPENCODE_ALWAYS_NOTIFY_UPDATE\")\n export const OPENCODE_DISABLE_PRUNE = truthy(\"OPENCODE_DISABLE_PRUNE\")\n export const OPENCODE_DISABLE_TERMINAL_TITLE = truthy(\"OPENCODE_DISABLE_TERMINAL_TITLE\")\n export const OPENCODE_SHOW_TTFD = truthy(\"OPENCODE_SHOW_TTFD\")\n export const OPENCODE_PERMISSION = process.env[\"OPENCODE_PERMISSION\"]\n export const OPENCODE_DISABLE_DEFAULT_PLUGINS = truthy(\"OPENCODE_DISABLE_DEFAULT_PLUGINS\")\n export const OPENCODE_DISABLE_LSP_DOWNLOAD = truthy(\"OPENCODE_DISABLE_LSP_DOWNLOAD\")\n export const OPENCODE_ENABLE_EXPERIMENTAL_MODELS = truthy(\"OPENCODE_ENABLE_EXPERIMENTAL_MODELS\")\n export const OPENCODE_DISABLE_AUTOCOMPACT = truthy(\"OPENCODE_DISABLE_AUTOCOMPACT\")\n export const OPENCODE_DISABLE_MODELS_FETCH = truthy(\"OPENCODE_DISABLE_MODELS_FETCH\")\n export const OPENCODE_DISABLE_MOUSE = truthy(\"OPENCODE_DISABLE_MOUSE\")\n export const OPENCODE_DISABLE_CLAUDE_CODE = truthy(\"OPENCODE_DISABLE_CLAUDE_CODE\")\n export const OPENCODE_DISABLE_CLAUDE_CODE_PROMPT =\n OPENCODE_DISABLE_CLAUDE_CODE || truthy(\"OPENCODE_DISABLE_CLAUDE_CODE_PROMPT\")\n export const OPENCODE_DISABLE_CLAUDE_CODE_SKILLS =\n OPENCODE_DISABLE_CLAUDE_CODE || truthy(\"OPENCODE_DISABLE_CLAUDE_CODE_SKILLS\")\n export const OPENCODE_DISABLE_EXTERNAL_SKILLS =\n OPENCODE_DISABLE_CLAUDE_CODE_SKILLS || truthy(\"OPENCODE_DISABLE_EXTERNAL_SKILLS\")\n export declare const OPENCODE_DISABLE_PROJECT_CONFIG: boolean\n export const OPENCODE_FAKE_VCS = process.env[\"OPENCODE_FAKE_VCS\"]\n export declare const OPENCODE_CLIENT: string\n export const OPENCODE_SERVER_PASSWORD = process.env[\"OPENCODE_SERVER_PASSWORD\"]\n export const OPENCODE_SERVER_USERNAME = process.env[\"OPENCODE_SERVER_USERNAME\"]\n export const OPENCODE_ENABLE_QUESTION_TOOL = truthy(\"OPENCODE_ENABLE_QUESTION_TOOL\")\n\n // Experimental\n export const OPENCODE_EXPERIMENTAL = truthy(\"OPENCODE_EXPERIMENTAL\")\n export const OPENCODE_EXPERIMENTAL_FILEWATCHER = Config.boolean(\"OPENCODE_EXPERIMENTAL_FILEWATCHER\").pipe(\n Config.withDefault(false),\n )\n export const OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER = Config.boolean(\n \"OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER\",\n ).pipe(Config.withDefault(false))\n export const OPENCODE_EXPERIMENTAL_ICON_DISCOVERY =\n OPENCODE_EXPERIMENTAL || truthy(\"OPENCODE_EXPERIMENTAL_ICON_DISCOVERY\")\n\n const copy = process.env[\"OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT\"]\n export const OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT =\n copy === undefined ? process.platform === \"win32\" : truthy(\"OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT\")\n export const OPENCODE_ENABLE_EXA =\n truthy(\"OPENCODE_ENABLE_EXA\") || OPENCODE_EXPERIMENTAL || truthy(\"OPENCODE_EXPERIMENTAL_EXA\")\n export const OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS = number(\"OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS\")\n export const OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX = number(\"OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX\")\n export const OPENCODE_EXPERIMENTAL_OXFMT = OPENCODE_EXPERIMENTAL || truthy(\"OPENCODE_EXPERIMENTAL_OXFMT\")\n export const OPENCODE_EXPERIMENTAL_LSP_TY = truthy(\"OPENCODE_EXPERIMENTAL_LSP_TY\")\n export const OPENCODE_EXPERIMENTAL_LSP_TOOL = OPENCODE_EXPERIMENTAL || truthy(\"OPENCODE_EXPERIMENTAL_LSP_TOOL\")\n export const OPENCODE_DISABLE_FILETIME_CHECK = Config.boolean(\"OPENCODE_DISABLE_FILETIME_CHECK\").pipe(\n Config.withDefault(false),\n )\n export const OPENCODE_EXPERIMENTAL_PLAN_MODE = OPENCODE_EXPERIMENTAL || truthy(\"OPENCODE_EXPERIMENTAL_PLAN_MODE\")\n export const OPENCODE_EXPERIMENTAL_WORKSPACES = OPENCODE_EXPERIMENTAL || truthy(\"OPENCODE_EXPERIMENTAL_WORKSPACES\")\n export const OPENCODE_EXPERIMENTAL_MARKDOWN = !falsy(\"OPENCODE_EXPERIMENTAL_MARKDOWN\")\n export const OPENCODE_MODELS_URL = process.env[\"OPENCODE_MODELS_URL\"]\n export const OPENCODE_MODELS_PATH = process.env[\"OPENCODE_MODELS_PATH\"]\n export const OPENCODE_DISABLE_EMBEDDED_WEB_UI = truthy(\"OPENCODE_DISABLE_EMBEDDED_WEB_UI\")\n export const OPENCODE_DB = process.env[\"OPENCODE_DB\"]\n export const OPENCODE_DISABLE_CHANNEL_DB = truthy(\"OPENCODE_DISABLE_CHANNEL_DB\")\n export const OPENCODE_SKIP_MIGRATIONS = truthy(\"OPENCODE_SKIP_MIGRATIONS\")\n export const OPENCODE_STRICT_CONFIG_DEPS = truthy(\"OPENCODE_STRICT_CONFIG_DEPS\")\n\n function number(key: string) {\n const value = process.env[key]\n if (!value) return undefined\n const parsed = Number(value)\n return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined\n }\n}\n\n// Dynamic getter for OPENCODE_DISABLE_PROJECT_CONFIG\n// This must be evaluated at access time, not module load time,\n// because external tooling may set this env var at runtime\nObject.defineProperty(Flag, \"OPENCODE_DISABLE_PROJECT_CONFIG\", {\n get() {\n return truthy(\"OPENCODE_DISABLE_PROJECT_CONFIG\")\n },\n enumerable: true,\n configurable: false,\n})\n\n// Dynamic getter for OPENCODE_TUI_CONFIG\n// This must be evaluated at access time, not module load time,\n// because tests and external tooling may set this env var at runtime\nObject.defineProperty(Flag, \"OPENCODE_TUI_CONFIG\", {\n get() {\n return process.env[\"OPENCODE_TUI_CONFIG\"]\n },\n enumerable: true,\n configurable: false,\n})\n\n// Dynamic getter for OPENCODE_CONFIG_DIR\n// This must be evaluated at access time, not module load time,\n// because external tooling may set this env var at runtime\nObject.defineProperty(Flag, \"OPENCODE_CONFIG_DIR\", {\n get() {\n return process.env[\"OPENCODE_CONFIG_DIR\"]\n },\n enumerable: true,\n configurable: false,\n})\n\n// Dynamic getter for OPENCODE_PURE\n// This must be evaluated at access time, not module load time,\n// because the CLI can set this flag at runtime\nObject.defineProperty(Flag, \"OPENCODE_PURE\", {\n get() {\n return truthy(\"OPENCODE_PURE\")\n },\n enumerable: true,\n configurable: false,\n})\n\n// Dynamic getter for OPENCODE_PLUGIN_META_FILE\n// This must be evaluated at access time, not module load time,\n// because tests and external tooling may set this env var at runtime\nObject.defineProperty(Flag, \"OPENCODE_PLUGIN_META_FILE\", {\n get() {\n return process.env[\"OPENCODE_PLUGIN_META_FILE\"]\n },\n enumerable: true,\n configurable: false,\n})\n\n// Dynamic getter for OPENCODE_CLIENT\n// This must be evaluated at access time, not module load time,\n// because some commands override the client at runtime\nObject.defineProperty(Flag, \"OPENCODE_CLIENT\", {\n get() {\n return process.env[\"OPENCODE_CLIENT\"] ?? \"cli\"\n },\n enumerable: true,\n configurable: false,\n})\n", "declare global {\n const OPENCODE_VERSION: string\n const OPENCODE_CHANNEL: string\n}\n\nexport const VERSION = typeof OPENCODE_VERSION === \"string\" ? OPENCODE_VERSION : \"local\"\nexport const CHANNEL = typeof OPENCODE_CHANNEL === \"string\" ? OPENCODE_CHANNEL : \"local\"\n", "import { Effect, Fiber, ScopedCache, Scope, ServiceMap } from \"effect\"\nimport { Instance, type InstanceContext } from \"@/project/instance\"\nimport { Context } from \"@/util/context\"\nimport { InstanceRef } from \"./instance-ref\"\nimport { registerDisposer } from \"./instance-registry\"\n\nconst TypeId = \"~opencode/InstanceState\"\n\nexport interface InstanceState<A, E = never, R = never> {\n readonly [TypeId]: typeof TypeId\n readonly cache: ScopedCache.ScopedCache<string, A, E, R>\n}\n\nexport namespace InstanceState {\n export const bind = <F extends (...args: any[]) => any>(fn: F): F => {\n try {\n return Instance.bind(fn)\n } catch (err) {\n if (!(err instanceof Context.NotFound)) throw err\n }\n const fiber = Fiber.getCurrent()\n const ctx = fiber ? ServiceMap.getReferenceUnsafe(fiber.services, InstanceRef) : undefined\n if (!ctx) return fn\n return ((...args: any[]) => Instance.restore(ctx, () => fn(...args))) as F\n }\n\n export const context = Effect.gen(function* () {\n return (yield* InstanceRef) ?? Instance.current\n })\n\n export const directory = Effect.map(context, (ctx) => ctx.directory)\n\n export const make = <A, E = never, R = never>(\n init: (ctx: InstanceContext) => Effect.Effect<A, E, R | Scope.Scope>,\n ): Effect.Effect<InstanceState<A, E, Exclude<R, Scope.Scope>>, never, R | Scope.Scope> =>\n Effect.gen(function* () {\n const cache = yield* ScopedCache.make<string, A, E, R>({\n capacity: Number.POSITIVE_INFINITY,\n lookup: () =>\n Effect.gen(function* () {\n return yield* init(yield* context)\n }),\n })\n\n const off = registerDisposer((directory) => Effect.runPromise(ScopedCache.invalidate(cache, directory)))\n yield* Effect.addFinalizer(() => Effect.sync(off))\n\n return {\n [TypeId]: TypeId,\n cache,\n }\n })\n\n export const get = <A, E, R>(self: InstanceState<A, E, R>) =>\n Effect.gen(function* () {\n return yield* ScopedCache.get(self.cache, yield* directory)\n })\n\n export const use = <A, E, R, B>(self: InstanceState<A, E, R>, select: (value: A) => B) =>\n Effect.map(get(self), select)\n\n export const useEffect = <A, E, R, B, E2, R2>(\n self: InstanceState<A, E, R>,\n select: (value: A) => Effect.Effect<B, E2, R2>,\n ) => Effect.flatMap(get(self), select)\n\n export const has = <A, E, R>(self: InstanceState<A, E, R>) =>\n Effect.gen(function* () {\n return yield* ScopedCache.has(self.cache, yield* directory)\n })\n\n export const invalidate = <A, E, R>(self: InstanceState<A, E, R>) =>\n Effect.gen(function* () {\n return yield* ScopedCache.invalidate(self.cache, yield* directory)\n })\n\n /**\n * Effect finalizers run on the fiber scheduler after the original async\n * boundary, so ALS reads like Instance.directory can be gone by then.\n */\n export const withALS = <T>(fn: () => T) => Effect.map(context, (ctx) => Instance.restore(ctx, fn))\n}\n", "import { ServiceMap } from \"effect\"\nimport type { InstanceContext } from \"@/project/instance\"\n\nexport const InstanceRef = ServiceMap.Reference<InstanceContext | undefined>(\"~opencode/InstanceRef\", {\n defaultValue: () => undefined,\n})\n", "import { DatabaseSync } from \"node:sqlite\"\nimport { drizzle } from \"drizzle-orm/node-sqlite\"\n\nexport function init(path: string) {\n const sqlite = new DatabaseSync(path)\n const db = drizzle({ client: sqlite })\n return db\n}\n", "import { sqliteTable, text, integer } from \"drizzle-orm/sqlite-core\"\nimport { Timestamps } from \"../storage/schema.sql\"\nimport type { ProjectID } from \"./schema\"\n\nexport const ProjectTable = sqliteTable(\"project\", {\n id: text().$type<ProjectID>().primaryKey(),\n worktree: text().notNull(),\n vcs: text(),\n name: text(),\n icon_url: text(),\n icon_color: text(),\n ...Timestamps,\n time_initialized: integer(),\n sandboxes: text({ mode: \"json\" }).notNull().$type<string[]>(),\n commands: text({ mode: \"json\" }).$type<{ start?: string }>(),\n})\n", "import { integer } from \"drizzle-orm/sqlite-core\"\n\nexport const Timestamps = {\n time_created: integer()\n .notNull()\n .$default(() => Date.now()),\n time_updated: integer()\n .notNull()\n .$onUpdate(() => Date.now()),\n}\n", "import { sqliteTable, text, integer, index, primaryKey } from \"drizzle-orm/sqlite-core\"\nimport { ProjectTable } from \"../project/project.sql\"\nimport type { MessageV2 } from \"./message-v2\"\nimport type { Snapshot } from \"../snapshot\"\nimport type { Permission } from \"../permission\"\nimport type { ProjectID } from \"../project/schema\"\nimport type { SessionID, MessageID, PartID } from \"./schema\"\nimport type { WorkspaceID } from \"../control-plane/schema\"\nimport { Timestamps } from \"../storage/schema.sql\"\n\ntype PartData = Omit<MessageV2.Part, \"id\" | \"sessionID\" | \"messageID\">\ntype InfoData = Omit<MessageV2.Info, \"id\" | \"sessionID\">\n\nexport const SessionTable = sqliteTable(\n \"session\",\n {\n id: text().$type<SessionID>().primaryKey(),\n project_id: text()\n .$type<ProjectID>()\n .notNull()\n .references(() => ProjectTable.id, { onDelete: \"cascade\" }),\n workspace_id: text().$type<WorkspaceID>(),\n parent_id: text().$type<SessionID>(),\n slug: text().notNull(),\n directory: text().notNull(),\n title: text().notNull(),\n version: text().notNull(),\n share_url: text(),\n summary_additions: integer(),\n summary_deletions: integer(),\n summary_files: integer(),\n summary_diffs: text({ mode: \"json\" }).$type<Snapshot.FileDiff[]>(),\n revert: text({ mode: \"json\" }).$type<{ messageID: MessageID; partID?: PartID; snapshot?: string; diff?: string }>(),\n permission: text({ mode: \"json\" }).$type<Permission.Ruleset>(),\n ...Timestamps,\n metadata: text({ mode: \"json\" }).$type<Record<string, unknown>>(),\n time_compacting: integer(),\n time_archived: integer(),\n },\n (table) => [\n index(\"session_project_idx\").on(table.project_id),\n index(\"session_workspace_idx\").on(table.workspace_id),\n index(\"session_parent_idx\").on(table.parent_id),\n ],\n)\n\nexport const MessageTable = sqliteTable(\n \"message\",\n {\n id: text().$type<MessageID>().primaryKey(),\n session_id: text()\n .$type<SessionID>()\n .notNull()\n .references(() => SessionTable.id, { onDelete: \"cascade\" }),\n ...Timestamps,\n data: text({ mode: \"json\" }).notNull().$type<InfoData>(),\n },\n (table) => [index(\"message_session_time_created_id_idx\").on(table.session_id, table.time_created, table.id)],\n)\n\nexport const PartTable = sqliteTable(\n \"part\",\n {\n id: text().$type<PartID>().primaryKey(),\n message_id: text()\n .$type<MessageID>()\n .notNull()\n .references(() => MessageTable.id, { onDelete: \"cascade\" }),\n session_id: text().$type<SessionID>().notNull(),\n ...Timestamps,\n data: text({ mode: \"json\" }).notNull().$type<PartData>(),\n },\n (table) => [\n index(\"part_message_id_id_idx\").on(table.message_id, table.id),\n index(\"part_session_idx\").on(table.session_id),\n ],\n)\n\nexport const TodoTable = sqliteTable(\n \"todo\",\n {\n session_id: text()\n .$type<SessionID>()\n .notNull()\n .references(() => SessionTable.id, { onDelete: \"cascade\" }),\n content: text().notNull(),\n status: text().notNull(),\n priority: text().notNull(),\n position: integer().notNull(),\n ...Timestamps,\n },\n (table) => [\n primaryKey({ columns: [table.session_id, table.position] }),\n index(\"todo_session_idx\").on(table.session_id),\n ],\n)\n\nexport const PermissionTable = sqliteTable(\"permission\", {\n project_id: text()\n .primaryKey()\n .references(() => ProjectTable.id, { onDelete: \"cascade\" }),\n ...Timestamps,\n data: text({ mode: \"json\" }).notNull().$type<Permission.Ruleset>(),\n})\n", "import z from \"zod\"\nimport type { ZodType } from \"zod\"\n\nexport namespace BusEvent {\n export type Definition = ReturnType<typeof define>\n\n const registry = new Map<string, Definition>()\n\n export function define<Type extends string, Properties extends ZodType>(type: Type, properties: Properties) {\n const result = {\n type,\n properties,\n }\n registry.set(type, result)\n return result\n }\n\n export function payloads() {\n return z\n .discriminatedUnion(\n \"type\",\n registry\n .entries()\n .map(([type, def]) => {\n return z\n .object({\n type: z.literal(type),\n properties: def.properties,\n })\n .meta({\n ref: \"Event\" + \".\" + def.type,\n })\n })\n .toArray() as any,\n )\n .meta({\n ref: \"Event\",\n })\n }\n}\n", "import whichPkg from \"which\"\nimport path from \"path\"\nimport { Global } from \"../global\"\n\nexport function which(cmd: string, env?: NodeJS.ProcessEnv) {\n const base = env?.PATH ?? env?.Path ?? process.env.PATH ?? process.env.Path ?? \"\"\n const full = base ? base + path.delimiter + Global.Path.bin : Global.Path.bin\n const result = whichPkg.sync(cmd, {\n nothrow: true,\n path: full,\n pathExt: env?.PATHEXT ?? env?.PathExt ?? process.env.PATHEXT ?? process.env.PathExt,\n })\n return typeof result === \"string\" ? result : null\n}\n", "import { Schema } from \"effect\"\nimport z from \"zod\"\n\nimport { withStatics } from \"@/util/schema\"\n\nconst projectIdSchema = Schema.String.pipe(Schema.brand(\"ProjectID\"))\n\nexport type ProjectID = typeof projectIdSchema.Type\n\nexport const ProjectID = projectIdSchema.pipe(\n withStatics((schema: typeof projectIdSchema) => ({\n global: schema.makeUnsafe(\"global\"),\n make: (id: string) => schema.makeUnsafe(id),\n zod: z.string().pipe(z.custom<ProjectID>()),\n })),\n)\n", "import { NodeFileSystem } from \"@effect/platform-node\"\nimport { dirname, join, relative, resolve as pathResolve } from \"path\"\nimport { realpathSync } from \"fs\"\nimport * as NFS from \"fs/promises\"\nimport { lookup } from \"mime-types\"\nimport { Effect, FileSystem, Layer, Schema, ServiceMap } from \"effect\"\nimport type { PlatformError } from \"effect/PlatformError\"\nimport { Glob } from \"../util/glob\"\n\nexport namespace AppFileSystem {\n export class FileSystemError extends Schema.TaggedErrorClass<FileSystemError>()(\"FileSystemError\", {\n method: Schema.String,\n cause: Schema.optional(Schema.Defect),\n }) {}\n\n export type Error = PlatformError | FileSystemError\n\n export interface DirEntry {\n readonly name: string\n readonly type: \"file\" | \"directory\" | \"symlink\" | \"other\"\n }\n\n export interface Interface extends FileSystem.FileSystem {\n readonly isDir: (path: string) => Effect.Effect<boolean>\n readonly isFile: (path: string) => Effect.Effect<boolean>\n readonly existsSafe: (path: string) => Effect.Effect<boolean>\n readonly readJson: (path: string) => Effect.Effect<unknown, Error>\n readonly writeJson: (path: string, data: unknown, mode?: number) => Effect.Effect<void, Error>\n readonly ensureDir: (path: string) => Effect.Effect<void, Error>\n readonly writeWithDirs: (path: string, content: string | Uint8Array, mode?: number) => Effect.Effect<void, Error>\n readonly readDirectoryEntries: (path: string) => Effect.Effect<DirEntry[], Error>\n readonly findUp: (target: string, start: string, stop?: string) => Effect.Effect<string[], Error>\n readonly up: (options: { targets: string[]; start: string; stop?: string }) => Effect.Effect<string[], Error>\n readonly globUp: (pattern: string, start: string, stop?: string) => Effect.Effect<string[], Error>\n readonly glob: (pattern: string, options?: Glob.Options) => Effect.Effect<string[], Error>\n readonly globMatch: (pattern: string, filepath: string) => boolean\n }\n\n export class Service extends ServiceMap.Service<Service, Interface>()(\"@opencode/FileSystem\") {}\n\n export const layer = Layer.effect(\n Service,\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem\n\n const existsSafe = Effect.fn(\"FileSystem.existsSafe\")(function* (path: string) {\n return yield* fs.exists(path).pipe(Effect.orElseSucceed(() => false))\n })\n\n const isDir = Effect.fn(\"FileSystem.isDir\")(function* (path: string) {\n const info = yield* fs.stat(path).pipe(Effect.catch(() => Effect.void))\n return info?.type === \"Directory\"\n })\n\n const isFile = Effect.fn(\"FileSystem.isFile\")(function* (path: string) {\n const info = yield* fs.stat(path).pipe(Effect.catch(() => Effect.void))\n return info?.type === \"File\"\n })\n\n const readDirectoryEntries = Effect.fn(\"FileSystem.readDirectoryEntries\")(function* (dirPath: string) {\n return yield* Effect.tryPromise({\n try: async () => {\n const entries = await NFS.readdir(dirPath, { withFileTypes: true })\n return entries.map(\n (e): DirEntry => ({\n name: e.name,\n type: e.isDirectory() ? \"directory\" : e.isSymbolicLink() ? \"symlink\" : e.isFile() ? \"file\" : \"other\",\n }),\n )\n },\n catch: (cause) => new FileSystemError({ method: \"readDirectoryEntries\", cause }),\n })\n })\n\n const readJson = Effect.fn(\"FileSystem.readJson\")(function* (path: string) {\n const text = yield* fs.readFileString(path)\n return JSON.parse(text)\n })\n\n const writeJson = Effect.fn(\"FileSystem.writeJson\")(function* (path: string, data: unknown, mode?: number) {\n const content = JSON.stringify(data, null, 2)\n yield* fs.writeFileString(path, content)\n if (mode) yield* fs.chmod(path, mode)\n })\n\n const ensureDir = Effect.fn(\"FileSystem.ensureDir\")(function* (path: string) {\n yield* fs.makeDirectory(path, { recursive: true })\n })\n\n const writeWithDirs = Effect.fn(\"FileSystem.writeWithDirs\")(function* (\n path: string,\n content: string | Uint8Array,\n mode?: number,\n ) {\n const write = typeof content === \"string\" ? fs.writeFileString(path, content) : fs.writeFile(path, content)\n\n yield* write.pipe(\n Effect.catchIf(\n (e) => e.reason._tag === \"NotFound\",\n () =>\n Effect.gen(function* () {\n yield* fs.makeDirectory(dirname(path), { recursive: true })\n yield* write\n }),\n ),\n )\n if (mode) yield* fs.chmod(path, mode)\n })\n\n const glob = Effect.fn(\"FileSystem.glob\")(function* (pattern: string, options?: Glob.Options) {\n return yield* Effect.tryPromise({\n try: () => Glob.scan(pattern, options),\n catch: (cause) => new FileSystemError({ method: \"glob\", cause }),\n })\n })\n\n const findUp = Effect.fn(\"FileSystem.findUp\")(function* (target: string, start: string, stop?: string) {\n const result: string[] = []\n let current = start\n while (true) {\n const search = join(current, target)\n if (yield* fs.exists(search)) result.push(search)\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n return result\n })\n\n const up = Effect.fn(\"FileSystem.up\")(function* (options: { targets: string[]; start: string; stop?: string }) {\n const result: string[] = []\n let current = options.start\n while (true) {\n for (const target of options.targets) {\n const search = join(current, target)\n if (yield* fs.exists(search)) result.push(search)\n }\n if (options.stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n return result\n })\n\n const globUp = Effect.fn(\"FileSystem.globUp\")(function* (pattern: string, start: string, stop?: string) {\n const result: string[] = []\n let current = start\n while (true) {\n const matches = yield* glob(pattern, { cwd: current, absolute: true, include: \"file\", dot: true }).pipe(\n Effect.catch(() => Effect.succeed([] as string[])),\n )\n result.push(...matches)\n if (stop === current) break\n const parent = dirname(current)\n if (parent === current) break\n current = parent\n }\n return result\n })\n\n return Service.of({\n ...fs,\n existsSafe,\n isDir,\n isFile,\n readDirectoryEntries,\n readJson,\n writeJson,\n ensureDir,\n writeWithDirs,\n findUp,\n up,\n globUp,\n glob,\n globMatch: Glob.match,\n })\n }),\n )\n\n export const defaultLayer = layer.pipe(Layer.provide(NodeFileSystem.layer))\n\n // Pure helpers that don't need Effect (path manipulation, sync operations)\n export function mimeType(p: string): string {\n return lookup(p) || \"application/octet-stream\"\n }\n\n export function normalizePath(p: string): string {\n if (process.platform !== \"win32\") return p\n const resolved = pathResolve(windowsPath(p))\n try {\n return realpathSync.native(resolved)\n } catch {\n return resolved\n }\n }\n\n export function normalizePathPattern(p: string): string {\n if (process.platform !== \"win32\") return p\n if (p === \"*\") return p\n const match = p.match(/^(.*)[\\\\/]\\*$/)\n if (!match) return normalizePath(p)\n const dir = /^[A-Za-z]:$/.test(match[1]) ? match[1] + \"\\\\\" : match[1]\n return join(normalizePath(dir), \"*\")\n }\n\n export function resolve(p: string): string {\n const resolved = pathResolve(windowsPath(p))\n try {\n return normalizePath(realpathSync(resolved))\n } catch (e: any) {\n if (e?.code === \"ENOENT\") return normalizePath(resolved)\n throw e\n }\n }\n\n export function windowsPath(p: string): string {\n if (process.platform !== \"win32\") return p\n return p\n .replace(/^\\/([a-zA-Z]):(?:[\\\\/]|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n .replace(/^\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n .replace(/^\\/cygdrive\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n .replace(/^\\/mnt\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n }\n\n export function overlaps(a: string, b: string) {\n const relA = relative(a, b)\n const relB = relative(b, a)\n return !relA || !relA.startsWith(\"..\") || !relB || !relB.startsWith(\"..\")\n }\n\n export function contains(parent: string, child: string) {\n return !relative(parent, child).startsWith(\"..\")\n }\n}\n", "import type * as Arr from \"effect/Array\"\nimport { NodeFileSystem, NodeSink, NodeStream } from \"@effect/platform-node\"\nimport * as NodePath from \"@effect/platform-node/NodePath\"\nimport * as Deferred from \"effect/Deferred\"\nimport * as Effect from \"effect/Effect\"\nimport * as Exit from \"effect/Exit\"\nimport * as FileSystem from \"effect/FileSystem\"\nimport * as Layer from \"effect/Layer\"\nimport * as Path from \"effect/Path\"\nimport * as PlatformError from \"effect/PlatformError\"\nimport * as Predicate from \"effect/Predicate\"\nimport type * as Scope from \"effect/Scope\"\nimport * as Sink from \"effect/Sink\"\nimport * as Stream from \"effect/Stream\"\nimport * as ChildProcess from \"effect/unstable/process/ChildProcess\"\nimport type { ChildProcessHandle } from \"effect/unstable/process/ChildProcessSpawner\"\nimport {\n ChildProcessSpawner,\n ExitCode,\n make as makeSpawner,\n makeHandle,\n ProcessId,\n} from \"effect/unstable/process/ChildProcessSpawner\"\nimport * as NodeChildProcess from \"node:child_process\"\nimport { PassThrough } from \"node:stream\"\nimport launch from \"cross-spawn\"\n\nconst toError = (err: unknown): Error => (err instanceof globalThis.Error ? err : new globalThis.Error(String(err)))\n\nconst toTag = (err: NodeJS.ErrnoException): PlatformError.SystemErrorTag => {\n switch (err.code) {\n case \"ENOENT\":\n return \"NotFound\"\n case \"EACCES\":\n return \"PermissionDenied\"\n case \"EEXIST\":\n return \"AlreadyExists\"\n case \"EISDIR\":\n return \"BadResource\"\n case \"ENOTDIR\":\n return \"BadResource\"\n case \"EBUSY\":\n return \"Busy\"\n case \"ELOOP\":\n return \"BadResource\"\n default:\n return \"Unknown\"\n }\n}\n\nconst flatten = (command: ChildProcess.Command) => {\n const commands: Array<ChildProcess.StandardCommand> = []\n const opts: Array<ChildProcess.PipeOptions> = []\n\n const walk = (cmd: ChildProcess.Command): void => {\n switch (cmd._tag) {\n case \"StandardCommand\":\n commands.push(cmd)\n return\n case \"PipedCommand\":\n walk(cmd.left)\n opts.push(cmd.options)\n walk(cmd.right)\n return\n }\n }\n\n walk(command)\n if (commands.length === 0) throw new Error(\"flatten produced empty commands array\")\n const [head, ...tail] = commands\n return {\n commands: [head, ...tail] as Arr.NonEmptyReadonlyArray<ChildProcess.StandardCommand>,\n opts,\n }\n}\n\nconst toPlatformError = (\n method: string,\n err: NodeJS.ErrnoException,\n command: ChildProcess.Command,\n): PlatformError.PlatformError => {\n const cmd = flatten(command)\n .commands.map((x) => `${x.command} ${x.args.join(\" \")}`)\n .join(\" | \")\n return PlatformError.systemError({\n _tag: toTag(err),\n module: \"ChildProcess\",\n method,\n pathOrDescriptor: cmd,\n syscall: err.syscall,\n cause: err,\n })\n}\n\ntype ExitSignal = Deferred.Deferred<readonly [code: number | null, signal: NodeJS.Signals | null]>\n\nexport const make = Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n\n const cwd = Effect.fnUntraced(function* (opts: ChildProcess.CommandOptions) {\n if (Predicate.isUndefined(opts.cwd)) return undefined\n yield* fs.access(opts.cwd)\n return path.resolve(opts.cwd)\n })\n\n const env = (opts: ChildProcess.CommandOptions) =>\n opts.extendEnv ? { ...globalThis.process.env, ...opts.env } : opts.env\n\n const input = (x: ChildProcess.CommandInput | undefined): NodeChildProcess.IOType | undefined =>\n Stream.isStream(x) ? \"pipe\" : x\n\n const output = (x: ChildProcess.CommandOutput | undefined): NodeChildProcess.IOType | undefined =>\n Sink.isSink(x) ? \"pipe\" : x\n\n const stdin = (opts: ChildProcess.CommandOptions): ChildProcess.StdinConfig => {\n const cfg: ChildProcess.StdinConfig = { stream: \"pipe\", encoding: \"utf-8\", endOnDone: true }\n if (Predicate.isUndefined(opts.stdin)) return cfg\n if (typeof opts.stdin === \"string\") return { ...cfg, stream: opts.stdin }\n if (Stream.isStream(opts.stdin)) return { ...cfg, stream: opts.stdin }\n return {\n stream: opts.stdin.stream,\n encoding: opts.stdin.encoding ?? cfg.encoding,\n endOnDone: opts.stdin.endOnDone ?? cfg.endOnDone,\n }\n }\n\n const stdio = (opts: ChildProcess.CommandOptions, key: \"stdout\" | \"stderr\"): ChildProcess.StdoutConfig => {\n const cfg = opts[key]\n if (Predicate.isUndefined(cfg)) return { stream: \"pipe\" }\n if (typeof cfg === \"string\") return { stream: cfg }\n if (Sink.isSink(cfg)) return { stream: cfg }\n return { stream: cfg.stream }\n }\n\n const fds = (opts: ChildProcess.CommandOptions) => {\n if (Predicate.isUndefined(opts.additionalFds)) return []\n return Object.entries(opts.additionalFds)\n .flatMap(([name, config]) => {\n const fd = ChildProcess.parseFdName(name)\n return Predicate.isUndefined(fd) ? [] : [{ fd, config }]\n })\n .toSorted((a, b) => a.fd - b.fd)\n }\n\n const stdios = (\n sin: ChildProcess.StdinConfig,\n sout: ChildProcess.StdoutConfig,\n serr: ChildProcess.StderrConfig,\n extra: ReadonlyArray<{ fd: number; config: ChildProcess.AdditionalFdConfig }>,\n ): NodeChildProcess.StdioOptions => {\n const pipe = (x: NodeChildProcess.IOType | undefined) =>\n process.platform === \"win32\" && x === \"pipe\" ? \"overlapped\" : x\n const arr: Array<NodeChildProcess.IOType | undefined> = [\n pipe(input(sin.stream)),\n pipe(output(sout.stream)),\n pipe(output(serr.stream)),\n ]\n if (extra.length === 0) return arr as NodeChildProcess.StdioOptions\n const max = extra.reduce((acc, x) => Math.max(acc, x.fd), 2)\n for (let i = 3; i <= max; i++) arr[i] = \"ignore\"\n for (const x of extra) arr[x.fd] = pipe(\"pipe\")\n return arr as NodeChildProcess.StdioOptions\n }\n\n const setupFds = Effect.fnUntraced(function* (\n command: ChildProcess.StandardCommand,\n proc: NodeChildProcess.ChildProcess,\n extra: ReadonlyArray<{ fd: number; config: ChildProcess.AdditionalFdConfig }>,\n ) {\n if (extra.length === 0) {\n return {\n getInputFd: () => Sink.drain,\n getOutputFd: () => Stream.empty,\n }\n }\n\n const ins = new Map<number, Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>>()\n const outs = new Map<number, Stream.Stream<Uint8Array, PlatformError.PlatformError>>()\n\n for (const x of extra) {\n const node = proc.stdio[x.fd]\n switch (x.config.type) {\n case \"input\": {\n let sink: Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError> = Sink.drain\n if (node && \"write\" in node) {\n sink = NodeSink.fromWritable({\n evaluate: () => node,\n onError: (err) => toPlatformError(`fromWritable(fd${x.fd})`, toError(err), command),\n endOnDone: true,\n })\n }\n if (x.config.stream) yield* Effect.forkScoped(Stream.run(x.config.stream, sink))\n ins.set(x.fd, sink)\n break\n }\n case \"output\": {\n let stream: Stream.Stream<Uint8Array, PlatformError.PlatformError> = Stream.empty\n if (node && \"read\" in node) {\n const tap = new PassThrough()\n node.on(\"error\", (err) => tap.destroy(toError(err)))\n node.pipe(tap)\n stream = NodeStream.fromReadable({\n evaluate: () => tap,\n onError: (err) => toPlatformError(`fromReadable(fd${x.fd})`, toError(err), command),\n })\n }\n if (x.config.sink) stream = Stream.transduce(stream, x.config.sink)\n outs.set(x.fd, stream)\n break\n }\n }\n }\n\n return {\n getInputFd: (fd: number) => ins.get(fd) ?? Sink.drain,\n getOutputFd: (fd: number) => outs.get(fd) ?? Stream.empty,\n }\n })\n\n const setupStdin = (\n command: ChildProcess.StandardCommand,\n proc: NodeChildProcess.ChildProcess,\n cfg: ChildProcess.StdinConfig,\n ) =>\n Effect.suspend(() => {\n let sink: Sink.Sink<void, unknown, never, PlatformError.PlatformError> = Sink.drain\n if (Predicate.isNotNull(proc.stdin)) {\n sink = NodeSink.fromWritable({\n evaluate: () => proc.stdin!,\n onError: (err) => toPlatformError(\"fromWritable(stdin)\", toError(err), command),\n endOnDone: cfg.endOnDone,\n encoding: cfg.encoding,\n })\n }\n if (Stream.isStream(cfg.stream)) return Effect.as(Effect.forkScoped(Stream.run(cfg.stream, sink)), sink)\n return Effect.succeed(sink)\n })\n\n const setupOutput = (\n command: ChildProcess.StandardCommand,\n proc: NodeChildProcess.ChildProcess,\n out: ChildProcess.StdoutConfig,\n err: ChildProcess.StderrConfig,\n ) => {\n let stdout = proc.stdout\n ? NodeStream.fromReadable({\n evaluate: () => proc.stdout!,\n onError: (cause) => toPlatformError(\"fromReadable(stdout)\", toError(cause), command),\n })\n : Stream.empty\n let stderr = proc.stderr\n ? NodeStream.fromReadable({\n evaluate: () => proc.stderr!,\n onError: (cause) => toPlatformError(\"fromReadable(stderr)\", toError(cause), command),\n })\n : Stream.empty\n\n if (Sink.isSink(out.stream)) stdout = Stream.transduce(stdout, out.stream)\n if (Sink.isSink(err.stream)) stderr = Stream.transduce(stderr, err.stream)\n\n return { stdout, stderr, all: Stream.merge(stdout, stderr) }\n }\n\n const spawn = (command: ChildProcess.StandardCommand, opts: NodeChildProcess.SpawnOptions) =>\n Effect.callback<readonly [NodeChildProcess.ChildProcess, ExitSignal], PlatformError.PlatformError>((resume) => {\n const signal = Deferred.makeUnsafe<readonly [code: number | null, signal: NodeJS.Signals | null]>()\n const proc = launch(command.command, command.args, opts)\n let end = false\n let exit: readonly [code: number | null, signal: NodeJS.Signals | null] | undefined\n proc.on(\"error\", (err) => {\n resume(Effect.fail(toPlatformError(\"spawn\", err, command)))\n })\n proc.on(\"exit\", (...args) => {\n exit = args\n })\n proc.on(\"close\", (...args) => {\n if (end) return\n end = true\n Deferred.doneUnsafe(signal, Exit.succeed(exit ?? args))\n })\n proc.on(\"spawn\", () => {\n resume(Effect.succeed([proc, signal]))\n })\n return Effect.sync(() => {\n proc.kill(\"SIGTERM\")\n })\n })\n\n const killGroup = (\n command: ChildProcess.StandardCommand,\n proc: NodeChildProcess.ChildProcess,\n signal: NodeJS.Signals,\n ) => {\n if (globalThis.process.platform === \"win32\") {\n return Effect.callback<void, PlatformError.PlatformError>((resume) => {\n NodeChildProcess.exec(`taskkill /pid ${proc.pid} /T /F`, { windowsHide: true }, (err) => {\n if (err) return resume(Effect.fail(toPlatformError(\"kill\", toError(err), command)))\n resume(Effect.void)\n })\n })\n }\n\n return Effect.try({\n try: () => {\n globalThis.process.kill(-proc.pid!, signal)\n },\n catch: (err) => toPlatformError(\"kill\", toError(err), command),\n })\n }\n\n const killOne = (\n command: ChildProcess.StandardCommand,\n proc: NodeChildProcess.ChildProcess,\n signal: NodeJS.Signals,\n ) =>\n Effect.suspend(() => {\n if (proc.kill(signal)) return Effect.void\n return Effect.fail(toPlatformError(\"kill\", new Error(\"Failed to kill child process\"), command))\n })\n\n const timeout =\n (\n proc: NodeChildProcess.ChildProcess,\n command: ChildProcess.StandardCommand,\n opts: ChildProcess.KillOptions | undefined,\n ) =>\n <A, E, R>(\n f: (\n command: ChildProcess.StandardCommand,\n proc: NodeChildProcess.ChildProcess,\n signal: NodeJS.Signals,\n ) => Effect.Effect<A, E, R>,\n ) => {\n const signal = opts?.killSignal ?? \"SIGTERM\"\n if (Predicate.isUndefined(opts?.forceKillAfter)) return f(command, proc, signal)\n return Effect.timeoutOrElse(f(command, proc, signal), {\n duration: opts.forceKillAfter,\n orElse: () => f(command, proc, \"SIGKILL\"),\n })\n }\n\n const source = (handle: ChildProcessHandle, from: ChildProcess.PipeFromOption | undefined) => {\n const opt = from ?? \"stdout\"\n switch (opt) {\n case \"stdout\":\n return handle.stdout\n case \"stderr\":\n return handle.stderr\n case \"all\":\n return handle.all\n default: {\n const fd = ChildProcess.parseFdName(opt)\n return Predicate.isNotUndefined(fd) ? handle.getOutputFd(fd) : handle.stdout\n }\n }\n }\n\n const spawnCommand: (\n command: ChildProcess.Command,\n ) => Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, Scope.Scope> = Effect.fnUntraced(\n function* (command) {\n switch (command._tag) {\n case \"StandardCommand\": {\n const sin = stdin(command.options)\n const sout = stdio(command.options, \"stdout\")\n const serr = stdio(command.options, \"stderr\")\n const extra = fds(command.options)\n const dir = yield* cwd(command.options)\n\n const [proc, signal] = yield* Effect.acquireRelease(\n spawn(command, {\n cwd: dir,\n env: env(command.options),\n stdio: stdios(sin, sout, serr, extra),\n detached: command.options.detached ?? process.platform !== \"win32\",\n shell: command.options.shell,\n windowsHide: process.platform === \"win32\",\n }),\n Effect.fnUntraced(function* ([proc, signal]) {\n const done = yield* Deferred.isDone(signal)\n const kill = timeout(proc, command, command.options)\n if (done) {\n const [code] = yield* Deferred.await(signal)\n if (process.platform === \"win32\") return yield* Effect.void\n if (code !== 0 && Predicate.isNotNull(code)) return yield* Effect.ignore(kill(killGroup))\n return yield* Effect.void\n }\n const send = (s: NodeJS.Signals) =>\n Effect.catch(killGroup(command, proc, s), () => killOne(command, proc, s))\n const sig = command.options.killSignal ?? \"SIGTERM\"\n const attempt = send(sig).pipe(Effect.andThen(Deferred.await(signal)), Effect.asVoid)\n const escalated = command.options.forceKillAfter\n ? Effect.timeoutOrElse(attempt, {\n duration: command.options.forceKillAfter,\n orElse: () => send(\"SIGKILL\").pipe(Effect.andThen(Deferred.await(signal)), Effect.asVoid),\n })\n : attempt\n return yield* Effect.ignore(escalated)\n }),\n )\n\n const fd = yield* setupFds(command, proc, extra)\n const out = setupOutput(command, proc, sout, serr)\n return makeHandle({\n pid: ProcessId(proc.pid!),\n stdin: yield* setupStdin(command, proc, sin),\n stdout: out.stdout,\n stderr: out.stderr,\n all: out.all,\n getInputFd: fd.getInputFd,\n getOutputFd: fd.getOutputFd,\n isRunning: Effect.map(Deferred.isDone(signal), (done) => !done),\n exitCode: Effect.flatMap(Deferred.await(signal), ([code, signal]) => {\n if (Predicate.isNotNull(code)) return Effect.succeed(ExitCode(code))\n return Effect.fail(\n toPlatformError(\n \"exitCode\",\n new Error(`Process interrupted due to receipt of signal: '${signal}'`),\n command,\n ),\n )\n }),\n kill: (opts?: ChildProcess.KillOptions) => {\n const sig = opts?.killSignal ?? \"SIGTERM\"\n const send = (s: NodeJS.Signals) =>\n Effect.catch(killGroup(command, proc, s), () => killOne(command, proc, s))\n const attempt = send(sig).pipe(Effect.andThen(Deferred.await(signal)), Effect.asVoid)\n if (!opts?.forceKillAfter) return attempt\n return Effect.timeoutOrElse(attempt, {\n duration: opts.forceKillAfter,\n orElse: () => send(\"SIGKILL\").pipe(Effect.andThen(Deferred.await(signal)), Effect.asVoid),\n })\n },\n })\n }\n case \"PipedCommand\": {\n const flat = flatten(command)\n const [head, ...tail] = flat.commands\n let handle = spawnCommand(head)\n for (let i = 0; i < tail.length; i++) {\n const next = tail[i]\n const opts = flat.opts[i] ?? {}\n const sin = stdin(next.options)\n const stream = Stream.unwrap(Effect.map(handle, (x) => source(x, opts.from)))\n const to = opts.to ?? \"stdin\"\n if (to === \"stdin\") {\n handle = spawnCommand(\n ChildProcess.make(next.command, next.args, {\n ...next.options,\n stdin: { ...sin, stream },\n }),\n )\n continue\n }\n const fd = ChildProcess.parseFdName(to)\n if (Predicate.isUndefined(fd)) {\n handle = spawnCommand(\n ChildProcess.make(next.command, next.args, {\n ...next.options,\n stdin: { ...sin, stream },\n }),\n )\n continue\n }\n handle = spawnCommand(\n ChildProcess.make(next.command, next.args, {\n ...next.options,\n additionalFds: {\n ...next.options.additionalFds,\n [ChildProcess.fdName(fd) as `fd${number}`]: { type: \"input\", stream },\n },\n }),\n )\n }\n return yield* handle\n }\n }\n },\n )\n\n return makeSpawner(spawnCommand)\n})\n\nexport const layer: Layer.Layer<ChildProcessSpawner, never, FileSystem.FileSystem | Path.Path> = Layer.effect(\n ChildProcessSpawner,\n make,\n)\n\nexport const defaultLayer = layer.pipe(Layer.provide(NodeFileSystem.layer), Layer.provide(NodePath.layer))\n\nimport { lazy } from \"@/util/lazy\"\n\nconst rt = lazy(async () => {\n // Dynamic import to avoid circular dep: cross-spawn-spawner \u2192 run-service \u2192 Instance \u2192 project \u2192 cross-spawn-spawner\n const { makeRuntime } = await import(\"@/effect/run-service\")\n return makeRuntime(ChildProcessSpawner, defaultLayer)\n})\n\ntype RT = Awaited<ReturnType<typeof rt>>\nexport const runPromiseExit: RT[\"runPromiseExit\"] = async (...args) => (await rt()).runPromiseExit(...(args as [any]))\nexport const runPromise: RT[\"runPromise\"] = async (...args) => (await rt()).runPromise(...(args as [any]))\n", "import { Log } from \"@/util/log\"\n\nexport namespace State {\n interface Entry {\n state: any\n dispose?: (state: any) => Promise<void>\n }\n\n const log = Log.create({ service: \"state\" })\n const recordsByKey = new Map<string, Map<any, Entry>>()\n\n export function create<S>(root: () => string, init: () => S, dispose?: (state: Awaited<S>) => Promise<void>) {\n return () => {\n const key = root()\n let entries = recordsByKey.get(key)\n if (!entries) {\n entries = new Map<string, Entry>()\n recordsByKey.set(key, entries)\n }\n const exists = entries.get(init)\n if (exists) return exists.state as S\n const state = init()\n entries.set(init, {\n state,\n dispose,\n })\n return state\n }\n }\n\n export async function dispose(key: string) {\n const entries = recordsByKey.get(key)\n if (!entries) return\n\n log.info(\"waiting for state disposal to complete\", { key })\n\n let disposalFinished = false\n\n setTimeout(() => {\n if (!disposalFinished) {\n log.warn(\n \"state disposal is taking an unusually long time - if it does not complete in a reasonable time, please report this as a bug\",\n { key },\n )\n }\n }, 10000).unref()\n\n const tasks: Promise<void>[] = []\n for (const [init, entry] of entries) {\n if (!entry.dispose) continue\n\n const label = typeof init === \"function\" ? init.name : String(init)\n\n const task = Promise.resolve(entry.state)\n .then((state) => entry.dispose!(state))\n .catch((error) => {\n log.error(\"Error while disposing state:\", { error, key, init: label })\n })\n\n tasks.push(task)\n }\n await Promise.all(tasks)\n\n entries.clear()\n recordsByKey.delete(key)\n\n disposalFinished = true\n log.info(\"state disposal completed\", { key })\n }\n}\n", "import { GlobalBus } from \"@/bus/global\"\nimport { disposeInstance } from \"@/effect/instance-registry\"\nimport { Filesystem } from \"@/util/filesystem\"\nimport { iife } from \"@/util/iife\"\nimport { Log } from \"@/util/log\"\nimport { Context } from \"../util/context\"\nimport { Project } from \"./project\"\nimport { State } from \"./state\"\n\nexport interface InstanceContext {\n directory: string\n worktree: string\n project: Project.Info\n}\n\nconst context = Context.create<InstanceContext>(\"instance\")\nconst cache = new Map<string, Promise<InstanceContext>>()\n\nconst disposal = {\n all: undefined as Promise<void> | undefined,\n}\n\nfunction emit(directory: string) {\n GlobalBus.emit(\"event\", {\n directory,\n payload: {\n type: \"server.instance.disposed\",\n properties: {\n directory,\n },\n },\n })\n}\n\nfunction boot(input: { directory: string; init?: () => Promise<any>; project?: Project.Info; worktree?: string }) {\n return iife(async () => {\n const ctx =\n input.project && input.worktree\n ? {\n directory: input.directory,\n worktree: input.worktree,\n project: input.project,\n }\n : await Project.fromDirectory(input.directory).then(({ project, sandbox }) => ({\n directory: input.directory,\n worktree: sandbox,\n project,\n }))\n await context.provide(ctx, async () => {\n await input.init?.()\n })\n return ctx\n })\n}\n\nfunction track(directory: string, next: Promise<InstanceContext>) {\n const task = next.catch((error) => {\n if (cache.get(directory) === task) cache.delete(directory)\n throw error\n })\n cache.set(directory, task)\n return task\n}\n\nexport const Instance = {\n async provide<R>(input: { directory: string; init?: () => Promise<any>; fn: () => R }): Promise<R> {\n const directory = Filesystem.resolve(input.directory)\n let existing = cache.get(directory)\n if (!existing) {\n Log.Default.info(\"creating instance\", { directory })\n existing = track(\n directory,\n boot({\n directory,\n init: input.init,\n }),\n )\n }\n const ctx = await existing\n return context.provide(ctx, async () => {\n return input.fn()\n })\n },\n get current() {\n return context.use()\n },\n get directory() {\n return context.use().directory\n },\n get worktree() {\n return context.use().worktree\n },\n get project() {\n return context.use().project\n },\n /**\n * Check if a path is within the project boundary.\n * Returns true if path is inside Instance.directory OR Instance.worktree.\n * Paths within the worktree but outside the working directory should not trigger external_directory permission.\n */\n containsPath(filepath: string) {\n if (Filesystem.contains(Instance.directory, filepath)) return true\n // Non-git projects set worktree to \"/\" which would match ANY absolute path.\n // Skip worktree check in this case to preserve external_directory permissions.\n if (Instance.worktree === \"/\") return false\n return Filesystem.contains(Instance.worktree, filepath)\n },\n /**\n * Captures the current instance ALS context and returns a wrapper that\n * restores it when called. Use this for callbacks that fire outside the\n * instance async context (native addons, event emitters, timers, etc.).\n */\n bind<F extends (...args: any[]) => any>(fn: F): F {\n const ctx = context.use()\n return ((...args: any[]) => context.provide(ctx, () => fn(...args))) as F\n },\n /**\n * Run a synchronous function within the given instance context ALS.\n * Use this to bridge from Effect (where InstanceRef carries context)\n * back to sync code that reads Instance.directory from ALS.\n */\n restore<R>(ctx: InstanceContext, fn: () => R): R {\n return context.provide(ctx, fn)\n },\n state<S>(init: () => S, dispose?: (state: Awaited<S>) => Promise<void>): () => S {\n return State.create(() => Instance.directory, init, dispose)\n },\n async reload(input: { directory: string; init?: () => Promise<any>; project?: Project.Info; worktree?: string }) {\n const directory = Filesystem.resolve(input.directory)\n Log.Default.info(\"reloading instance\", { directory })\n await Promise.all([State.dispose(directory), disposeInstance(directory)])\n cache.delete(directory)\n const next = track(directory, boot({ ...input, directory }))\n emit(directory)\n return await next\n },\n async dispose() {\n const directory = Instance.directory\n Log.Default.info(\"disposing instance\", { directory })\n await Promise.all([State.dispose(directory), disposeInstance(directory)])\n cache.delete(directory)\n emit(directory)\n },\n async disposeAll() {\n if (disposal.all) return disposal.all\n\n disposal.all = iife(async () => {\n Log.Default.info(\"disposing all instances\")\n const entries = [...cache.entries()]\n for (const [key, value] of entries) {\n if (cache.get(key) !== value) continue\n\n const ctx = await value.catch((error) => {\n Log.Default.warn(\"instance dispose failed\", { key, error })\n return undefined\n })\n\n if (!ctx) {\n if (cache.get(key) === value) cache.delete(key)\n continue\n }\n\n if (cache.get(key) !== value) continue\n\n await context.provide(ctx, async () => {\n await Instance.dispose()\n })\n }\n }).finally(() => {\n disposal.all = undefined\n })\n\n return disposal.all\n },\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Layer", "Glob", "Filesystem", "data", "writeStream", "path", "fs", "createWriteStream", "Global", "Log", "init", "path", "fs", "createWriteStream", "file", "prefix", "Context", "z", "z", "data", "z", "path", "existsSync", "Flag", "ServiceMap", "InstanceState", "ServiceMap", "init", "cache", "directory", "path", "z", "Database", "path", "existsSync", "callback", "effect", "integer", "integer", "sqliteTable", "text", "integer", "sqliteTable", "text", "integer", "z", "BusEvent", "path", "path", "z", "z", "Effect", "Layer", "Path", "Scope", "ServiceMap", "Stream", "ChildProcess", "ChildProcessSpawner", "NodePath", "dirname", "join", "relative", "pathResolve", "realpathSync", "lookup", "Effect", "Schema", "ServiceMap", "AppFileSystem", "Schema", "ServiceMap", "Effect", "fs", "path", "text", "data", "dirname", "glob", "join", "lookup", "pathResolve", "realpathSync", "relative", "NodeFileSystem", "Effect", "FileSystem", "Layer", "make", "fs", "path", "config", "proc", "signal", "layer", "NodeFileSystem", "makeRuntime", "Project", "log", "z", "ServiceMap", "Layer", "Effect", "fs", "Path", "ChildProcessSpawner", "ChildProcess", "text", "Stream", "data", "Scope", "fromDirectory", "discover", "update", "list", "get", "initGit", "setInitialized", "sandboxes", "addSandbox", "removeSandbox", "NodePath", "State", "log", "init", "dispose", "state", "cache", "init", "Layer", "effect", "Effect", "layer", "rt"]
7
+ }
@@ -31,7 +31,7 @@ import {
31
31
  lazy,
32
32
  makeRuntime,
33
33
  which
34
- } from "./chunk-B3FN2B2N.js";
34
+ } from "./chunk-3PZZ2D23.js";
35
35
  import {
36
36
  SessionID
37
37
  } from "./chunk-CR6IREZA.js";
@@ -1040,7 +1040,7 @@ function fail(ast) {
1040
1040
 
1041
1041
  // packages/opencode/src/auth/index.ts
1042
1042
  var OAUTH_DUMMY_KEY = "opencode-oauth-dummy-key";
1043
- var file = path4.join(Global.Path.data, "auth.json");
1043
+ var file = path4.join(Global.Path.globalData, "auth.json");
1044
1044
  var fail2 = (message) => (cause) => new Auth.AuthError({ message, cause });
1045
1045
  var Auth;
1046
1046
  ((Auth2) => {
@@ -4306,7 +4306,7 @@ var Config;
4306
4306
  })) {
4307
4307
  const md = await ConfigMarkdown.parse(item).catch(async (err) => {
4308
4308
  const message = ConfigMarkdown.FrontmatterError.isInstance(err) ? err.data.message : `Failed to parse command ${item}`;
4309
- const { Session } = await import("./session-M6HOZ56B.js");
4309
+ const { Session } = await import("./session-BR5MTI3X.js");
4310
4310
  Bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() });
4311
4311
  log3.error("failed to load command", { command: item, err });
4312
4312
  return void 0;
@@ -4339,7 +4339,7 @@ var Config;
4339
4339
  })) {
4340
4340
  const md = await ConfigMarkdown.parse(item).catch(async (err) => {
4341
4341
  const message = ConfigMarkdown.FrontmatterError.isInstance(err) ? err.data.message : `Failed to parse agent ${item}`;
4342
- const { Session } = await import("./session-M6HOZ56B.js");
4342
+ const { Session } = await import("./session-BR5MTI3X.js");
4343
4343
  Bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() });
4344
4344
  log3.error("failed to load agent", { agent: item, err });
4345
4345
  return void 0;
@@ -4372,7 +4372,7 @@ var Config;
4372
4372
  })) {
4373
4373
  const md = await ConfigMarkdown.parse(item).catch(async (err) => {
4374
4374
  const message = ConfigMarkdown.FrontmatterError.isInstance(err) ? err.data.message : `Failed to parse mode ${item}`;
4375
- const { Session } = await import("./session-M6HOZ56B.js");
4375
+ const { Session } = await import("./session-BR5MTI3X.js");
4376
4376
  Bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() });
4377
4377
  log3.error("failed to load mode", { mode: item, err });
4378
4378
  return void 0;
@@ -5365,7 +5365,7 @@ var McpAuth;
5365
5365
  oauthState: z10.string().optional(),
5366
5366
  serverUrl: z10.string().optional()
5367
5367
  });
5368
- const filepath = path12.join(Global.Path.data, "mcp-auth.json");
5368
+ const filepath = path12.join(Global.Path.globalData, "mcp-auth.json");
5369
5369
  class Service extends ServiceMap7.Service()("@opencode/McpAuth") {
5370
5370
  }
5371
5371
  McpAuth2.Service = Service;
@@ -6532,4 +6532,4 @@ export {
6532
6532
  MCP,
6533
6533
  Config
6534
6534
  };
6535
- //# sourceMappingURL=chunk-LU5XVQUD.js.map
6535
+ //# sourceMappingURL=chunk-EGZMJTLE.js.map