alchemylab-opencode 1.0.25 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/NODE_COMPAT.md +23 -174
  2. package/dist/20260127222353_familiar_lady_ursula-KV747FJX.js +14 -0
  3. package/dist/{chunk-LTCXIXYM.js → 20260211171708_add_project_commands-GDOHPDPF.js} +3 -1
  4. package/dist/20260213144116_wakeful_the_professor-ZVDD54AK.js +14 -0
  5. package/dist/20260225215848_workspace-ZMSOZSPA.js +14 -0
  6. package/dist/20260227213759_add_session_workspace_id-ROENWPKA.js +14 -0
  7. package/dist/20260228203230_blue_harpoon-IW3Z4TQZ.js +14 -0
  8. package/dist/20260303231226_add_workspace_fields-OUVZMNAG.js +14 -0
  9. package/dist/20260309230000_move_org_to_state-NOXAPU5V.js +14 -0
  10. package/dist/20260312043431_session_message_cursor-DJ4T3T4R.js +14 -0
  11. package/dist/20260323234822_events-72GIKJ2A.js +14 -0
  12. package/dist/20260410174513_workspace-name-JXSWFBJN.js +14 -0
  13. package/dist/20260413175956_chief_energizer-4HEWZ6U3.js +14 -0
  14. package/dist/20260423070820_add_icon_url_override-X5SHFGTI.js +14 -0
  15. package/dist/20260427172553_slow_nightmare-PS5T2AH2.js +14 -0
  16. package/dist/{chunk-YRY5Y3QL.js → 20260428004200_add_session_path-LGW75WYA.js} +3 -1
  17. package/dist/{valibot--1zFm7rT-FSYJNYJ6.js → 20260501142318_next_venus-J3TLVXZ6.js} +3 -1
  18. package/dist/20260504145000_add_sync_owner-3R52GB4C.js +14 -0
  19. package/dist/20260507164347_add_workspace_time-JHDRCZAR.js +14 -0
  20. package/dist/20260510033149_session_usage-UGBVOXZB.js +53 -0
  21. package/dist/20260511000411_data_migration_state-FB4LBFSE.js +14 -0
  22. package/dist/20260511173437_session-metadata-T2XHGWHS.js +14 -0
  23. package/dist/20260601010001_normalize_storage_paths-5MAY5GT3.js +14 -0
  24. package/dist/{chunk-PWFRMDDF.js → 20260601202201_amazing_prowler-PET224YG.js} +3 -0
  25. package/dist/20260602002951_lowly_union_jack-PG6XDMGL.js +14 -0
  26. package/dist/20260602182828_add_project_directories-ZCH2ACGG.js +14 -0
  27. package/dist/20260603001617_session_message_projection_indexes-XVLJTUF2.js +14 -0
  28. package/dist/20260603040000_session_message_projection_order-XG6RACZQ.js +14 -0
  29. package/dist/20260603141458_session_input_inbox-K2VQ7V6E.js +14 -0
  30. package/dist/20260603160727_jittery_ezekiel_stane-WKJLRDO7.js +14 -0
  31. package/dist/20260604172448_event_sourced_session_input-NTXOECR7.js +14 -0
  32. package/dist/20260605003541_add_session_context_snapshot-DXMQEXMT.js +14 -0
  33. package/dist/{zod-Bwrt9trS-HVDOFWRP.js → 20260605042240_add_context_epoch_agent-W6IQYZXE.js} +3 -1
  34. package/dist/20260611035744_credential-XTMSYTJD.js +14 -0
  35. package/dist/20260611192811_lush_chimera-XPLIQMJD.js +14 -0
  36. package/dist/20260612174303_project_dir_strategy-FR2NGQKK.js +14 -0
  37. package/dist/20260622142730_simplify_session_context_epoch-NTQZR3RE.js +14 -0
  38. package/dist/20260622170816_reset_v2_session_state-5JPHJTZG.js +14 -0
  39. package/dist/20260622202450_simplify_session_input-2EXF2HMV.js +14 -0
  40. package/dist/app-runtime-6NGO2HRS.js +14 -0
  41. package/dist/chunk-4K2RXRZL.js +14 -0
  42. package/dist/chunk-BM2C7NHL.js +41 -0
  43. package/dist/chunk-E47SMIVL.js +186 -0
  44. package/dist/chunk-OMDJ6ZZ2.js +684 -0
  45. package/dist/chunk-PLQOF3WF.js +393 -0
  46. package/dist/chunk-QRABYJKL.js +14 -0
  47. package/dist/chunk-RHIWAYN5.js +14 -0
  48. package/dist/{arktype-aI7TBD0R-TFNARRIP.js → chunk-VURLSDCB.js} +3 -1
  49. package/dist/chunk-Z5TLIUAI.js +28 -0
  50. package/dist/chunk-ZMHNE2MU.js +865 -0
  51. package/dist/chunk-ZWLTE2TM.js +1455 -0
  52. package/dist/code-mode-YFX4N2VN.js +40 -0
  53. package/dist/copilot-provider-TX4YFKJZ.js +14 -0
  54. package/dist/photon-VQS5F5BI.js +14 -0
  55. package/dist/pty.node-Y3N2XKYG.js +14 -0
  56. package/dist/run.js +3 -1
  57. package/dist/serve.js +3 -1
  58. package/dist/server-TI57TGPO.js +17 -0
  59. package/dist/session-6RNXZNG6.js +14 -0
  60. package/dist/{chunk-2ANK3QEN.js → worktree-3RZQEGVC.js} +3 -1
  61. package/package.json +83 -50
  62. package/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch +164 -0
  63. package/patches/@ai-sdk%2Fanthropic@3.0.111.patch +528 -0
  64. package/patches/@ai-sdk%2Fgoogle@3.0.73.patch +69 -0
  65. package/patches/@ai-sdk%2Fgroq@3.0.31.patch +79 -0
  66. package/patches/@ai-sdk%2Fmistral@3.0.51.patch +714 -0
  67. package/patches/@ai-sdk%2Fopenai-compatible@2.0.41.patch +39 -0
  68. package/patches/@ai-sdk%2Fopenai@3.0.88.patch +280 -0
  69. package/patches/@ai-sdk%2Fxai@3.0.139.patch +296 -0
  70. package/patches/@modelcontextprotocol%2Fsdk@1.29.0.patch +647 -0
  71. package/patches/@npmcli%2Fagent@4.0.2.patch +13 -0
  72. package/patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch +285 -0
  73. package/patches/effect@4.0.0-beta.83.patch +57 -0
  74. package/patches/gcp-metadata@8.1.2.patch +14 -0
  75. package/patches/pacote@21.5.0.patch +18 -0
  76. package/postinstall.cjs +146 -0
  77. package/dist/chunk-26PYOYAY.js +0 -13
  78. package/dist/chunk-7KKA6WBY.js +0 -12
  79. package/dist/chunk-CZVKIDQZ.js +0 -12
  80. package/dist/chunk-FXLFZ5DL.js +0 -12
  81. package/dist/chunk-GXWCFXGG.js +0 -12
  82. package/dist/chunk-M4CB72HE.js +0 -13
  83. package/dist/chunk-MBZTOEAD.js +0 -12
  84. package/dist/chunk-NLFNI3VW.js +0 -18
  85. package/dist/chunk-XJGIPERR.js +0 -2187
  86. package/dist/chunk-YDTJPTBK.js +0 -18
  87. package/dist/default-u_dwuiYb-652AQZKX.js +0 -12
  88. package/dist/effect-QlVUlMFu-JVYEXAZL.js +0 -12
  89. package/dist/log-MVJ7H4K5.js +0 -12
  90. package/dist/pty.node-X2EITEZ4.js +0 -12
  91. package/dist/registry-4BBWPCYV.js +0 -12
  92. package/dist/run-XDEC53H6.js +0 -20
  93. package/dist/run-service-6DJSRAIA.js +0 -12
  94. package/dist/schema-YWIVP7UR.js +0 -12
  95. package/dist/server-IT7ZVNR2.js +0 -12
  96. package/dist/session-HPEX3PLB.js +0 -12
  97. package/dist/share-next-3FDGRL3C.js +0 -12
  98. package/dist/sury-CWZTCd75-3YHH6KVI.js +0 -12
  99. package/dist/typebox-Dei93FPO-GLI7OCTY.js +0 -12
  100. package/dist/valibot-D_HTw1Gn-E5NKVIOV.js +0 -12
  101. package/dist/worktree-INBHVVO4.js +0 -12
  102. package/dist/zod-DSgpEGAE-DSH6V7MG.js +0 -12
  103. package/packages/opencode/migration/20260127222353_familiar_lady_ursula/migration.sql +0 -90
  104. package/packages/opencode/migration/20260127222353_familiar_lady_ursula/snapshot.json +0 -796
  105. package/packages/opencode/migration/20260211171708_add_project_commands/migration.sql +0 -1
  106. package/packages/opencode/migration/20260211171708_add_project_commands/snapshot.json +0 -806
  107. package/packages/opencode/migration/20260213144116_wakeful_the_professor/migration.sql +0 -11
  108. package/packages/opencode/migration/20260213144116_wakeful_the_professor/snapshot.json +0 -897
  109. package/packages/opencode/migration/20260225215848_workspace/migration.sql +0 -7
  110. package/packages/opencode/migration/20260225215848_workspace/snapshot.json +0 -959
  111. package/packages/opencode/migration/20260227213759_add_session_workspace_id/migration.sql +0 -2
  112. package/packages/opencode/migration/20260227213759_add_session_workspace_id/snapshot.json +0 -983
  113. package/packages/opencode/migration/20260228203230_blue_harpoon/migration.sql +0 -17
  114. package/packages/opencode/migration/20260228203230_blue_harpoon/snapshot.json +0 -1102
  115. package/packages/opencode/migration/20260303231226_add_workspace_fields/migration.sql +0 -5
  116. package/packages/opencode/migration/20260303231226_add_workspace_fields/snapshot.json +0 -1013
  117. package/packages/opencode/migration/20260309230000_move_org_to_state/migration.sql +0 -3
  118. package/packages/opencode/migration/20260309230000_move_org_to_state/snapshot.json +0 -1156
  119. package/packages/opencode/migration/20260312043431_session_message_cursor/migration.sql +0 -4
  120. package/packages/opencode/migration/20260312043431_session_message_cursor/snapshot.json +0 -1168
  121. package/packages/opencode/migration/20260323234822_events/migration.sql +0 -13
  122. package/packages/opencode/migration/20260323234822_events/snapshot.json +0 -1271
  123. package/packages/opencode/migration/20260409000000_add_session_metadata/migration.sql +0 -1
@@ -0,0 +1,285 @@
1
+ diff --git a/photon_rs.js b/photon_rs.js
2
+ index 8f4144d..29a964a 100644
3
+ --- a/photon_rs.js
4
+ +++ b/photon_rs.js
5
+ @@ -1,6 +1,7 @@
6
+
7
+ let imports = {};
8
+ -imports['__wbindgen_placeholder__'] = module.exports;
9
+ +const __wbindgen_placeholder__ = {};
10
+ +imports['__wbindgen_placeholder__'] = __wbindgen_placeholder__;
11
+ let wasm;
12
+ const { TextEncoder, TextDecoder } = require(`util`);
13
+
14
+ @@ -4272,12 +4273,12 @@ class Rgba {
15
+ }
16
+ module.exports.Rgba = Rgba;
17
+
18
+ -module.exports.__wbg_new_abda76e883ba8a5f = function() {
19
+ +__wbindgen_placeholder__.__wbg_new_abda76e883ba8a5f = function() {
20
+ const ret = new Error();
21
+ return ret;
22
+ };
23
+
24
+ -module.exports.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {
25
+ +__wbindgen_placeholder__.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {
26
+ const ret = arg1.stack;
27
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
28
+ const len1 = WASM_VECTOR_LEN;
29
+ @@ -4285,7 +4286,7 @@ module.exports.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {
30
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
31
+ };
32
+
33
+ -module.exports.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
34
+ +__wbindgen_placeholder__.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
35
+ let deferred0_0;
36
+ let deferred0_1;
37
+ try {
38
+ @@ -4297,7 +4298,7 @@ module.exports.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {
39
+ }
40
+ };
41
+
42
+ -module.exports.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) {
43
+ +__wbindgen_placeholder__.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) {
44
+ let result;
45
+ try {
46
+ result = arg0 instanceof Window;
47
+ @@ -4308,42 +4309,42 @@ module.exports.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) {
48
+ return ret;
49
+ };
50
+
51
+ -module.exports.__wbg_document_e5c1786dea6542e4 = function(arg0) {
52
+ +__wbindgen_placeholder__.__wbg_document_e5c1786dea6542e4 = function(arg0) {
53
+ const ret = arg0.document;
54
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
55
+ };
56
+
57
+ -module.exports.__wbg_body_e70ae6abd01ae584 = function(arg0) {
58
+ +__wbindgen_placeholder__.__wbg_body_e70ae6abd01ae584 = function(arg0) {
59
+ const ret = arg0.body;
60
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
61
+ };
62
+
63
+ -module.exports.__wbg_createElement_5d4c76f218b78145 = function() { return handleError(function (arg0, arg1, arg2) {
64
+ +__wbindgen_placeholder__.__wbg_createElement_5d4c76f218b78145 = function() { return handleError(function (arg0, arg1, arg2) {
65
+ const ret = arg0.createElement(getStringFromWasm0(arg1, arg2));
66
+ return ret;
67
+ }, arguments) };
68
+
69
+ -module.exports.__wbg_width_4c6f0048d64cf86b = function(arg0) {
70
+ +__wbindgen_placeholder__.__wbg_width_4c6f0048d64cf86b = function(arg0) {
71
+ const ret = arg0.width;
72
+ return ret;
73
+ };
74
+
75
+ -module.exports.__wbg_height_21f0d3fd8f753394 = function(arg0) {
76
+ +__wbindgen_placeholder__.__wbg_height_21f0d3fd8f753394 = function(arg0) {
77
+ const ret = arg0.height;
78
+ return ret;
79
+ };
80
+
81
+ -module.exports.__wbg_width_79e0847ed5883b03 = function(arg0) {
82
+ +__wbindgen_placeholder__.__wbg_width_79e0847ed5883b03 = function(arg0) {
83
+ const ret = arg0.width;
84
+ return ret;
85
+ };
86
+
87
+ -module.exports.__wbg_height_e4e4e4779f8feac0 = function(arg0) {
88
+ +__wbindgen_placeholder__.__wbg_height_e4e4e4779f8feac0 = function(arg0) {
89
+ const ret = arg0.height;
90
+ return ret;
91
+ };
92
+
93
+ -module.exports.__wbg_data_fda507064d127f5b = function(arg0, arg1) {
94
+ +__wbindgen_placeholder__.__wbg_data_fda507064d127f5b = function(arg0, arg1) {
95
+ const ret = arg1.data;
96
+ const ptr1 = passArray8ToWasm0(ret, wasm.__wbindgen_malloc);
97
+ const len1 = WASM_VECTOR_LEN;
98
+ @@ -4351,12 +4352,12 @@ module.exports.__wbg_data_fda507064d127f5b = function(arg0, arg1) {
99
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
100
+ };
101
+
102
+ -module.exports.__wbg_newwithu8clampedarrayandsh_1fddccb3a94a5e05 = function() { return handleError(function (arg0, arg1, arg2, arg3) {
103
+ +__wbindgen_placeholder__.__wbg_newwithu8clampedarrayandsh_1fddccb3a94a5e05 = function() { return handleError(function (arg0, arg1, arg2, arg3) {
104
+ const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);
105
+ return ret;
106
+ }, arguments) };
107
+
108
+ -module.exports.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae = function(arg0) {
109
+ +__wbindgen_placeholder__.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae = function(arg0) {
110
+ let result;
111
+ try {
112
+ result = arg0 instanceof CanvasRenderingContext2D;
113
+ @@ -4367,24 +4368,24 @@ module.exports.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae = fun
114
+ return ret;
115
+ };
116
+
117
+ -module.exports.__wbg_drawImage_fede06db74e39a60 = function() { return handleError(function (arg0, arg1, arg2, arg3) {
118
+ +__wbindgen_placeholder__.__wbg_drawImage_fede06db74e39a60 = function() { return handleError(function (arg0, arg1, arg2, arg3) {
119
+ arg0.drawImage(arg1, arg2, arg3);
120
+ }, arguments) };
121
+
122
+ -module.exports.__wbg_drawImage_f395c8e43c79a909 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
123
+ +__wbindgen_placeholder__.__wbg_drawImage_f395c8e43c79a909 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {
124
+ arg0.drawImage(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
125
+ }, arguments) };
126
+
127
+ -module.exports.__wbg_getImageData_5e1c242046e6b59e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
128
+ +__wbindgen_placeholder__.__wbg_getImageData_5e1c242046e6b59e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
129
+ const ret = arg0.getImageData(arg1, arg2, arg3, arg4);
130
+ return ret;
131
+ }, arguments) };
132
+
133
+ -module.exports.__wbg_putImageData_a8b3e177ee06d521 = function() { return handleError(function (arg0, arg1, arg2, arg3) {
134
+ +__wbindgen_placeholder__.__wbg_putImageData_a8b3e177ee06d521 = function() { return handleError(function (arg0, arg1, arg2, arg3) {
135
+ arg0.putImageData(arg1, arg2, arg3);
136
+ }, arguments) };
137
+
138
+ -module.exports.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(arg0) {
139
+ +__wbindgen_placeholder__.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(arg0) {
140
+ let result;
141
+ try {
142
+ result = arg0 instanceof HTMLCanvasElement;
143
+ @@ -4395,93 +4396,93 @@ module.exports.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(a
144
+ return ret;
145
+ };
146
+
147
+ -module.exports.__wbg_width_dc225e55343b745e = function(arg0) {
148
+ +__wbindgen_placeholder__.__wbg_width_dc225e55343b745e = function(arg0) {
149
+ const ret = arg0.width;
150
+ return ret;
151
+ };
152
+
153
+ -module.exports.__wbg_setwidth_488780db69b08846 = function(arg0, arg1) {
154
+ +__wbindgen_placeholder__.__wbg_setwidth_488780db69b08846 = function(arg0, arg1) {
155
+ arg0.width = arg1 >>> 0;
156
+ };
157
+
158
+ -module.exports.__wbg_height_3a8bec2f3fe71b26 = function(arg0) {
159
+ +__wbindgen_placeholder__.__wbg_height_3a8bec2f3fe71b26 = function(arg0) {
160
+ const ret = arg0.height;
161
+ return ret;
162
+ };
163
+
164
+ -module.exports.__wbg_setheight_1761808c18403921 = function(arg0, arg1) {
165
+ +__wbindgen_placeholder__.__wbg_setheight_1761808c18403921 = function(arg0, arg1) {
166
+ arg0.height = arg1 >>> 0;
167
+ };
168
+
169
+ -module.exports.__wbg_getContext_fc99dbd3a9a7e318 = function() { return handleError(function (arg0, arg1, arg2) {
170
+ +__wbindgen_placeholder__.__wbg_getContext_fc99dbd3a9a7e318 = function() { return handleError(function (arg0, arg1, arg2) {
171
+ const ret = arg0.getContext(getStringFromWasm0(arg1, arg2));
172
+ return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);
173
+ }, arguments) };
174
+
175
+ -module.exports.__wbg_settextContent_f82a86a8df347e1c = function(arg0, arg1, arg2) {
176
+ +__wbindgen_placeholder__.__wbg_settextContent_f82a86a8df347e1c = function(arg0, arg1, arg2) {
177
+ arg0.textContent = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);
178
+ };
179
+
180
+ -module.exports.__wbg_appendChild_fa3b00dade9fc4cf = function() { return handleError(function (arg0, arg1) {
181
+ +__wbindgen_placeholder__.__wbg_appendChild_fa3b00dade9fc4cf = function() { return handleError(function (arg0, arg1) {
182
+ const ret = arg0.appendChild(arg1);
183
+ return ret;
184
+ }, arguments) };
185
+
186
+ -module.exports.__wbg_newnoargs_e643855c6572a4a8 = function(arg0, arg1) {
187
+ +__wbindgen_placeholder__.__wbg_newnoargs_e643855c6572a4a8 = function(arg0, arg1) {
188
+ const ret = new Function(getStringFromWasm0(arg0, arg1));
189
+ return ret;
190
+ };
191
+
192
+ -module.exports.__wbg_call_f96b398515635514 = function() { return handleError(function (arg0, arg1) {
193
+ +__wbindgen_placeholder__.__wbg_call_f96b398515635514 = function() { return handleError(function (arg0, arg1) {
194
+ const ret = arg0.call(arg1);
195
+ return ret;
196
+ }, arguments) };
197
+
198
+ -module.exports.__wbg_self_b9aad7f1c618bfaf = function() { return handleError(function () {
199
+ +__wbindgen_placeholder__.__wbg_self_b9aad7f1c618bfaf = function() { return handleError(function () {
200
+ const ret = self.self;
201
+ return ret;
202
+ }, arguments) };
203
+
204
+ -module.exports.__wbg_window_55e469842c98b086 = function() { return handleError(function () {
205
+ +__wbindgen_placeholder__.__wbg_window_55e469842c98b086 = function() { return handleError(function () {
206
+ const ret = window.window;
207
+ return ret;
208
+ }, arguments) };
209
+
210
+ -module.exports.__wbg_globalThis_d0957e302752547e = function() { return handleError(function () {
211
+ +__wbindgen_placeholder__.__wbg_globalThis_d0957e302752547e = function() { return handleError(function () {
212
+ const ret = globalThis.globalThis;
213
+ return ret;
214
+ }, arguments) };
215
+
216
+ -module.exports.__wbg_global_ae2f87312b8987fb = function() { return handleError(function () {
217
+ +__wbindgen_placeholder__.__wbg_global_ae2f87312b8987fb = function() { return handleError(function () {
218
+ const ret = global.global;
219
+ return ret;
220
+ }, arguments) };
221
+
222
+ -module.exports.__wbindgen_is_undefined = function(arg0) {
223
+ +__wbindgen_placeholder__.__wbindgen_is_undefined = function(arg0) {
224
+ const ret = arg0 === undefined;
225
+ return ret;
226
+ };
227
+
228
+ -module.exports.__wbg_buffer_fcbfb6d88b2732e9 = function(arg0) {
229
+ +__wbindgen_placeholder__.__wbg_buffer_fcbfb6d88b2732e9 = function(arg0) {
230
+ const ret = arg0.buffer;
231
+ return ret;
232
+ };
233
+
234
+ -module.exports.__wbg_new_bc5d9aad3f9ac80e = function(arg0) {
235
+ +__wbindgen_placeholder__.__wbg_new_bc5d9aad3f9ac80e = function(arg0) {
236
+ const ret = new Uint8Array(arg0);
237
+ return ret;
238
+ };
239
+
240
+ -module.exports.__wbg_set_4b3aa8445ac1e91c = function(arg0, arg1, arg2) {
241
+ +__wbindgen_placeholder__.__wbg_set_4b3aa8445ac1e91c = function(arg0, arg1, arg2) {
242
+ arg0.set(arg1, arg2 >>> 0);
243
+ };
244
+
245
+ -module.exports.__wbg_length_d9c4ded7e708c6a1 = function(arg0) {
246
+ +__wbindgen_placeholder__.__wbg_length_d9c4ded7e708c6a1 = function(arg0) {
247
+ const ret = arg0.length;
248
+ return ret;
249
+ };
250
+
251
+ -module.exports.__wbindgen_debug_string = function(arg0, arg1) {
252
+ +__wbindgen_placeholder__.__wbindgen_debug_string = function(arg0, arg1) {
253
+ const ret = debugString(arg1);
254
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
255
+ const len1 = WASM_VECTOR_LEN;
256
+ @@ -4489,16 +4490,16 @@ module.exports.__wbindgen_debug_string = function(arg0, arg1) {
257
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
258
+ };
259
+
260
+ -module.exports.__wbindgen_throw = function(arg0, arg1) {
261
+ +__wbindgen_placeholder__.__wbindgen_throw = function(arg0, arg1) {
262
+ throw new Error(getStringFromWasm0(arg0, arg1));
263
+ };
264
+
265
+ -module.exports.__wbindgen_memory = function() {
266
+ +__wbindgen_placeholder__.__wbindgen_memory = function() {
267
+ const ret = wasm.memory;
268
+ return ret;
269
+ };
270
+
271
+ -module.exports.__wbindgen_init_externref_table = function() {
272
+ +__wbindgen_placeholder__.__wbindgen_init_externref_table = function() {
273
+ const table = wasm.__wbindgen_export_2;
274
+ const offset = table.grow(4);
275
+ table.set(0, undefined);
276
+ @@ -4509,7 +4510,8 @@ module.exports.__wbindgen_init_externref_table = function() {
277
+ ;
278
+ };
279
+
280
+ -const path = require('path').join(__dirname, 'photon_rs_bg.wasm');
281
+ +// Allow opencode's Bun compiled binary to point photon-node at its embedded wasm asset.
282
+ +const path = globalThis.__OPENCODE_PHOTON_WASM_PATH || require('path').join(__dirname, 'photon_rs_bg.wasm');
283
+ const bytes = require('fs').readFileSync(path);
284
+
285
+ const wasmModule = new WebAssembly.Module(bytes);
@@ -0,0 +1,57 @@
1
+ diff --git a/dist/unstable/httpapi/HttpApiSchema.js b/dist/unstable/httpapi/HttpApiSchema.js
2
+ index ecb6603d1ee4e89e92174b3a1100e8c9c720b3f3..08b832b6b3e9e4d10df156eca36b16f571f67f6e 100644
3
+ --- a/dist/unstable/httpapi/HttpApiSchema.js
4
+ +++ b/dist/unstable/httpapi/HttpApiSchema.js
5
+ @@ -151,7 +151,7 @@ export const StreamSse = options => {
6
+ const events = options.events ?? (options.data === undefined ? undefined : Schema.Struct({
7
+ id: Schema.UndefinedOr(Schema.String),
8
+ event: Schema.String,
9
+ - data: Schema.fromJsonString(options.data)
10
+ + data: sseDataJsonSchema(options.data)
11
+ }));
12
+ if (events === undefined) {
13
+ throw new Error("StreamSse requires either an events schema or a data schema");
14
+ @@ -166,6 +166,14 @@ export const StreamSse = options => {
15
+ error: options.error ?? Schema.Never
16
+ });
17
+ };
18
+ +const sseDataJsonSchema = data => {
19
+ + const identifier = SchemaAST.resolveIdentifier(data.ast);
20
+ + return identifier === undefined ? Schema.fromJsonString(data) : Schema.fromJsonString(data).annotate({
21
+ + // The SSE transport field is a JSON string. Give that wrapper its own
22
+ + // OpenAPI identifier so it does not claim the decoded data schema's name.
23
+ + identifier: `${identifier}Stream`
24
+ + });
25
+ +};
26
+ /**
27
+ * Creates a streaming `Uint8Array` success response schema.
28
+ *
29
+ diff --git a/src/unstable/httpapi/HttpApiSchema.ts b/src/unstable/httpapi/HttpApiSchema.ts
30
+ index f2920365cf0328146523ce2e2dba04d6a8809a4a..5482d635cdf01a72063ff683d244fab891910211 100644
31
+ --- a/src/unstable/httpapi/HttpApiSchema.ts
32
+ +++ b/src/unstable/httpapi/HttpApiSchema.ts
33
+ @@ -433,7 +433,7 @@ export const StreamSse: {
34
+ const events = options.events ?? (options.data === undefined ? undefined : Schema.Struct({
35
+ id: Schema.UndefinedOr(Schema.String),
36
+ event: Schema.String,
37
+ - data: Schema.fromJsonString(options.data)
38
+ + data: sseDataJsonSchema(options.data)
39
+ }))
40
+ if (events === undefined) {
41
+ throw new Error("StreamSse requires either an events schema or a data schema")
42
+ @@ -449,6 +449,15 @@ export const StreamSse: {
43
+ })
44
+ }
45
+
46
+ +const sseDataJsonSchema = (data: Schema.Constraint) => {
47
+ + const identifier = SchemaAST.resolveIdentifier(data.ast)
48
+ + return identifier === undefined ? Schema.fromJsonString(data) : Schema.fromJsonString(data).annotate({
49
+ + // The SSE transport field is a JSON string. Give that wrapper its own
50
+ + // OpenAPI identifier so it does not claim the decoded data schema's name.
51
+ + identifier: `${identifier}Stream`
52
+ + })
53
+ +}
54
+ +
55
+ /**
56
+ * Creates a streaming `Uint8Array` success response schema.
57
+ *
@@ -0,0 +1,14 @@
1
+ diff --git a/build/src/index.js b/build/src/index.js
2
+ --- a/build/src/index.js
3
+ +++ b/build/src/index.js
4
+ @@ -323,6 +323,10 @@ async function isAvailable() {
5
+ if (process.env.DEBUG_AUTH) {
6
+ console.info(err);
7
+ }
8
+ + // Promise.any() rejects with AggregateError when neither metadata host
9
+ + // is available. This is expected outside GCP, not a warning condition.
10
+ + if (err instanceof AggregateError)
11
+ + return false;
12
+ if (err.type === 'request-timeout') {
13
+ // If running in a GCP environment, metadata endpoint should return
14
+ // within ms.
@@ -0,0 +1,18 @@
1
+ diff --git a/lib/git.js b/lib/git.js
2
+ index 000ee9fc..a2a6cbb7 100644
3
+ --- a/lib/git.js
4
+ +++ b/lib/git.js
5
+ @@ -254,8 +254,11 @@ class GitFetcher extends Fetcher {
6
+ resolved: this.resolved,
7
+ integrity: null, // it'll always be different, if we have one
8
+ }).extract(tmp).then(() => handler(`${tmp}${this.spec.gitSubdir || ''}`), er => {
9
+ - // fall back to ssh download if tarball fails
10
+ - if (er.constructor.name.match(/^Http/)) {
11
+ + // fall back to clone if the tarball download fails due to an
12
+ + // HTTP error or if the response is not a valid tarball (e.g.
13
+ + // a hosted provider returning an HTML sign-in page with 200)
14
+ + if ((typeof er.statusCode === 'number' && er.statusCode >= 400) ||
15
+ + /^TAR_/.test(er.code)) {
16
+ return this.#clone(handler, false)
17
+ } else {
18
+ throw er
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env node
2
+ // Runs after npm install, in development and where the package is installed.
3
+ //
4
+ // 1. Dependency patches (alchemy fork, since 1.18). Upstream OpenCode patches
5
+ // several dependencies through bun's patchedDependencies (patches/*.patch,
6
+ // git diffs relative to the package root: the AI SDK providers, the MCP SDK,
7
+ // effect, gcp-metadata, pacote, @npmcli/agent, photon-node). The bundle keeps
8
+ // those packages external, so the same patches are applied here, with the
9
+ // `diff` package's applyPatch, to every installed copy of the package under
10
+ // the install's node_modules (a user's install has no lock, so a provider
11
+ // can carry its own nested copy, at another version). A copy at another
12
+ // version than the patch's gets the patch when it applies cleanly, or counts
13
+ // as patched when it already has the change (the patch undoes cleanly); when
14
+ // neither, one line on stderr says so and the copy is left as it is (the
15
+ // install never fails over a patch). A patched copy keeps a stamp file, so
16
+ // a second run changes nothing.
17
+ // 2. @opencode-ai/* symlinks to packages/*, so bun tests and the TypeScript
18
+ // sources resolve the workspace packages (only when packages/ has them).
19
+
20
+ const fs = require('fs');
21
+ const path = require('path');
22
+
23
+ const root = __dirname;
24
+
25
+ // Where this install's packages live: the node_modules this package sits in
26
+ // (installed as a dependency), else its own (development).
27
+ function installNodeModules() {
28
+ const parent = path.dirname(root);
29
+ return path.basename(parent) === 'node_modules' ? parent : path.join(root, 'node_modules');
30
+ }
31
+
32
+ // Every installed copy of the named packages: { name: [dir, ...] }. Walks
33
+ // node_modules folders and the nested node_modules inside packages; symlinks
34
+ // (workspace links) are not followed.
35
+ function findCopies(nodeModules, names) {
36
+ const found = {};
37
+ const walk = (dir) => {
38
+ let entries;
39
+ try {
40
+ entries = fs.readdirSync(dir, { withFileTypes: true });
41
+ } catch {
42
+ return;
43
+ }
44
+ for (const entry of entries) {
45
+ if (!entry.isDirectory() || entry.name.startsWith('.')) continue;
46
+ const scoped = entry.name.startsWith('@');
47
+ const dirs = scoped
48
+ ? fs.readdirSync(path.join(dir, entry.name), { withFileTypes: true })
49
+ .filter((e) => e.isDirectory())
50
+ .map((e) => [`${entry.name}/${e.name}`, path.join(dir, entry.name, e.name)])
51
+ : [[entry.name, path.join(dir, entry.name)]];
52
+ for (const [name, pkgDir] of dirs) {
53
+ if (names.has(name) && fs.existsSync(path.join(pkgDir, 'package.json'))) (found[name] ||= []).push(pkgDir);
54
+ walk(path.join(pkgDir, 'node_modules'));
55
+ }
56
+ }
57
+ };
58
+ walk(nodeModules);
59
+ return found;
60
+ }
61
+
62
+ function applyPatches() {
63
+ const dir = path.join(root, 'patches');
64
+ if (!fs.existsSync(dir)) return;
65
+ let Diff;
66
+ try {
67
+ Diff = require('diff');
68
+ } catch {
69
+ process.stderr.write('alchemylab-opencode postinstall: the diff package is missing, dependency patches not applied\n');
70
+ return;
71
+ }
72
+ const patchFiles = fs.readdirSync(dir).filter((f) => f.endsWith('.patch')).sort();
73
+ const nameOf = (file) => {
74
+ const spec = decodeURIComponent(file.slice(0, -'.patch'.length));
75
+ return spec.slice(0, spec.lastIndexOf('@'));
76
+ };
77
+ const nodeModules = installNodeModules();
78
+ const copies = findCopies(nodeModules, new Set(patchFiles.map(nameOf)));
79
+ let patched = 0;
80
+ let skipped = 0;
81
+ for (const file of patchFiles) {
82
+ const patches = Diff.parsePatch(fs.readFileSync(path.join(dir, file), 'utf8'));
83
+ for (const pkgDir of copies[nameOf(file)] || []) {
84
+ const stamp = path.join(pkgDir, '.alchemylab-patched');
85
+ if (fs.existsSync(stamp) && fs.readFileSync(stamp, 'utf8') === file) {
86
+ patched++;
87
+ continue;
88
+ }
89
+ const version = JSON.parse(fs.readFileSync(path.join(pkgDir, 'package.json'), 'utf8')).version;
90
+ // Every file first, then write: a copy is patched whole or not at all.
91
+ const writes = [];
92
+ let miss = '';
93
+ for (const p of patches) {
94
+ const rel = (p.newFileName || p.oldFileName || '').replace(/^[ab]\//, '');
95
+ if (!rel || rel === '/dev/null') continue;
96
+ const target = path.join(pkgDir, rel);
97
+ const before = fs.existsSync(target) ? fs.readFileSync(target, 'utf8') : '';
98
+ const after = Diff.applyPatch(before, p);
99
+ if (after !== false) writes.push([target, after]);
100
+ // A newer version can already carry the change (the patch undoes cleanly).
101
+ else if (Diff.applyPatch(before, Diff.reversePatch(p)) === false) {
102
+ miss = rel;
103
+ break;
104
+ }
105
+ }
106
+ const where = path.relative(nodeModules, pkgDir);
107
+ if (miss) {
108
+ skipped++;
109
+ process.stderr.write(`alchemylab-opencode postinstall: ${file} does not apply to ${where} (version ${version}, ${miss}); left unpatched\n`);
110
+ continue;
111
+ }
112
+ for (const [target, after] of writes) {
113
+ fs.mkdirSync(path.dirname(target), { recursive: true });
114
+ fs.writeFileSync(target, after);
115
+ }
116
+ fs.writeFileSync(stamp, file);
117
+ patched++;
118
+ }
119
+ }
120
+ if (patched || skipped) {
121
+ process.stderr.write(`alchemylab-opencode postinstall: ${patched} package copies patched${skipped ? `, ${skipped} left unpatched` : ''}\n`);
122
+ }
123
+ }
124
+
125
+ function linkWorkspacePackages() {
126
+ const packages = path.join(root, 'packages');
127
+ if (!fs.existsSync(packages)) return;
128
+ const scopeDir = path.join(root, 'node_modules', '@opencode-ai');
129
+ fs.mkdirSync(scopeDir, { recursive: true });
130
+ for (const name of fs.readdirSync(packages)) {
131
+ const target = path.join(packages, name);
132
+ if (!fs.existsSync(path.join(target, 'package.json'))) continue;
133
+ const linkPath = path.join(scopeDir, name);
134
+ try {
135
+ const stat = fs.lstatSync(linkPath);
136
+ if (stat.isSymbolicLink() || stat.isFile()) fs.unlinkSync(linkPath);
137
+ else if (stat.isDirectory()) fs.rmSync(linkPath, { recursive: true });
138
+ } catch {
139
+ // Not there yet.
140
+ }
141
+ fs.symlinkSync(path.relative(scopeDir, target), linkPath);
142
+ }
143
+ }
144
+
145
+ applyPatches();
146
+ linkWorkspacePackages();
@@ -1,13 +0,0 @@
1
- // Built by esbuild from opencode-server source
2
- if (typeof globalThis.Bun === 'undefined') {
3
- globalThis.Bun = {
4
- version: '0.0.0-node-compat',
5
- stdin: { async text() { const chunks = []; for await (const c of process.stdin) chunks.push(c); return Buffer.concat(chunks).toString(); } },
6
- which(cmd) { try { return require('child_process').execFileSync('which', [cmd], { encoding: 'utf8' }).trim(); } catch { return null; } },
7
- };
8
- }
9
- if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
10
- if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
11
-
12
- import{a as Pt}from"./chunk-LTCXIXYM.js";import{a as tt,c as Te,d as Oe,e as ee}from"./chunk-M4CB72HE.js";import{a as e,c as zt,d as z}from"./chunk-MBZTOEAD.js";import{Effect as br,Layer as wr,ManagedRuntime as vr}from"effect";import{EventEmitter as Ht}from"events";var $e=new Ht;var rt=new Set;function Ot(t){return rt.add(t),()=>{rt.delete(t)}}e(Ot,"registerDisposer");async function ot(t){await Promise.allSettled([...rt].map(r=>r(t)))}e(ot,"disposeInstance");function be(t){return t()}e(be,"iife");import{AsyncLocalStorage as Xt}from"async_hooks";var te;(l=>{class t extends Error{constructor(g){super(`No context found for ${g}`);this.name=g}name;static{e(this,"NotFound")}}l.NotFound=t;function r(u){let _=new Xt;return{use(){let g=_.getStore();if(!g)throw new t(u);return g},provide(g,T){return _.run(g,T)}}}l.create=r,e(r,"create")})(te||={});import K from"zod";var A={};zt(A,{Database:()=>_e,NotFoundError:()=>tr});z(A,bo);import{migrate as Dt}from"drizzle-orm/node-sqlite/migrator";import*as bo from"drizzle-orm";function ze(t){let r,l=!1,u=e(()=>{if(l)return r;try{return r=t(),l=!0,r}catch(_){throw _}},"result");return u.reset=()=>{l=!1,r=void 0},u}e(ze,"lazy");import He from"zod";var Xe=class t extends Error{static{e(this,"NamedError")}static create(r,l){let u=He.object({name:He.literal(r),data:l}).meta({ref:r}),_=class extends t{constructor(T,J){super(r,J);this.data=T;this.name=r}data;static{e(this,"result")}static Schema=u;name=r;static isInstance(T){return typeof T=="object"&&"name"in T&&T.name===r}schema(){return u}toObject(){return{name:r,data:this.data}}};return Object.defineProperty(_,"name",{value:r}),_}static Unknown=t.create("UnknownError",He.object({message:He.string()}))};import gt from"zod";import Ce from"path";import{readFileSync as Zt,readdirSync as Qt,existsSync as er}from"fs";import{Config as ge}from"effect";function b(t){let r=process.env[t]?.toLowerCase();return r==="true"||r==="1"}e(b,"truthy");function Kt(t){let r=process.env[t]?.toLowerCase();return r==="false"||r==="0"}e(Kt,"falsy");var H;(f=>{f.OPENCODE_AUTO_SHARE=b("OPENCODE_AUTO_SHARE"),f.OPENCODE_AUTO_HEAP_SNAPSHOT=b("OPENCODE_AUTO_HEAP_SNAPSHOT"),f.OPENCODE_GIT_BASH_PATH=process.env.OPENCODE_GIT_BASH_PATH,f.OPENCODE_CONFIG=process.env.OPENCODE_CONFIG,f.OPENCODE_CONFIG_CONTENT=process.env.OPENCODE_CONFIG_CONTENT,f.OPENCODE_DISABLE_AUTOUPDATE=b("OPENCODE_DISABLE_AUTOUPDATE"),f.OPENCODE_ALWAYS_NOTIFY_UPDATE=b("OPENCODE_ALWAYS_NOTIFY_UPDATE"),f.OPENCODE_DISABLE_PRUNE=b("OPENCODE_DISABLE_PRUNE"),f.OPENCODE_DISABLE_TERMINAL_TITLE=b("OPENCODE_DISABLE_TERMINAL_TITLE"),f.OPENCODE_SHOW_TTFD=b("OPENCODE_SHOW_TTFD"),f.OPENCODE_PERMISSION=process.env.OPENCODE_PERMISSION,f.OPENCODE_DISABLE_DEFAULT_PLUGINS=b("OPENCODE_DISABLE_DEFAULT_PLUGINS"),f.OPENCODE_DISABLE_LSP_DOWNLOAD=b("OPENCODE_DISABLE_LSP_DOWNLOAD"),f.OPENCODE_ENABLE_EXPERIMENTAL_MODELS=b("OPENCODE_ENABLE_EXPERIMENTAL_MODELS"),f.OPENCODE_DISABLE_AUTOCOMPACT=b("OPENCODE_DISABLE_AUTOCOMPACT"),f.OPENCODE_DISABLE_MODELS_FETCH=b("OPENCODE_DISABLE_MODELS_FETCH"),f.OPENCODE_DISABLE_MOUSE=b("OPENCODE_DISABLE_MOUSE"),f.OPENCODE_DISABLE_CLAUDE_CODE=b("OPENCODE_DISABLE_CLAUDE_CODE"),f.OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=f.OPENCODE_DISABLE_CLAUDE_CODE||b("OPENCODE_DISABLE_CLAUDE_CODE_PROMPT"),f.OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=f.OPENCODE_DISABLE_CLAUDE_CODE||b("OPENCODE_DISABLE_CLAUDE_CODE_SKILLS"),f.OPENCODE_DISABLE_EXTERNAL_SKILLS=f.OPENCODE_DISABLE_CLAUDE_CODE_SKILLS||b("OPENCODE_DISABLE_EXTERNAL_SKILLS"),f.OPENCODE_FAKE_VCS=process.env.OPENCODE_FAKE_VCS,f.OPENCODE_SERVER_PASSWORD=process.env.OPENCODE_SERVER_PASSWORD,f.OPENCODE_SERVER_USERNAME=process.env.OPENCODE_SERVER_USERNAME,f.OPENCODE_ENABLE_QUESTION_TOOL=b("OPENCODE_ENABLE_QUESTION_TOOL"),f.OPENCODE_EXPERIMENTAL=b("OPENCODE_EXPERIMENTAL"),f.OPENCODE_EXPERIMENTAL_FILEWATCHER=ge.boolean("OPENCODE_EXPERIMENTAL_FILEWATCHER").pipe(ge.withDefault(!1)),f.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER=ge.boolean("OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe(ge.withDefault(!1)),f.OPENCODE_EXPERIMENTAL_ICON_DISCOVERY=f.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_ICON_DISCOVERY");let De=process.env.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT;f.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT=De===void 0?process.platform==="win32":b("OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"),f.OPENCODE_ENABLE_EXA=b("OPENCODE_ENABLE_EXA")||f.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_EXA"),f.OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS=Ae("OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS"),f.OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX=Ae("OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX"),f.OPENCODE_EXPERIMENTAL_OXFMT=f.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_OXFMT"),f.OPENCODE_EXPERIMENTAL_LSP_TY=b("OPENCODE_EXPERIMENTAL_LSP_TY"),f.OPENCODE_EXPERIMENTAL_LSP_TOOL=f.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_LSP_TOOL"),f.OPENCODE_DISABLE_FILETIME_CHECK=ge.boolean("OPENCODE_DISABLE_FILETIME_CHECK").pipe(ge.withDefault(!1)),f.OPENCODE_EXPERIMENTAL_PLAN_MODE=f.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_PLAN_MODE"),f.OPENCODE_EXPERIMENTAL_WORKSPACES=f.OPENCODE_EXPERIMENTAL||b("OPENCODE_EXPERIMENTAL_WORKSPACES"),f.OPENCODE_EXPERIMENTAL_MARKDOWN=!Kt("OPENCODE_EXPERIMENTAL_MARKDOWN"),f.OPENCODE_MODELS_URL=process.env.OPENCODE_MODELS_URL,f.OPENCODE_MODELS_PATH=process.env.OPENCODE_MODELS_PATH,f.OPENCODE_DISABLE_EMBEDDED_WEB_UI=b("OPENCODE_DISABLE_EMBEDDED_WEB_UI"),f.OPENCODE_DB=process.env.OPENCODE_DB,f.OPENCODE_DISABLE_CHANNEL_DB=b("OPENCODE_DISABLE_CHANNEL_DB"),f.OPENCODE_SKIP_MIGRATIONS=b("OPENCODE_SKIP_MIGRATIONS"),f.OPENCODE_STRICT_CONFIG_DEPS=b("OPENCODE_STRICT_CONFIG_DEPS");function Ae($t){let yt=process.env[$t];if(!yt)return;let et=Number(yt);return Number.isInteger(et)&&et>0?et:void 0}e(Ae,"number")})(H||={});Object.defineProperty(H,"OPENCODE_DISABLE_PROJECT_CONFIG",{get(){return b("OPENCODE_DISABLE_PROJECT_CONFIG")},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_TUI_CONFIG",{get(){return process.env.OPENCODE_TUI_CONFIG},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_CONFIG_DIR",{get(){return process.env.OPENCODE_CONFIG_DIR},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_PURE",{get(){return b("OPENCODE_PURE")},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_PLUGIN_META_FILE",{get(){return process.env.OPENCODE_PLUGIN_META_FILE},enumerable:!0,configurable:!1});Object.defineProperty(H,"OPENCODE_CLIENT",{get(){return process.env.OPENCODE_CLIENT??"cli"},enumerable:!0,configurable:!1});var Zr=typeof OPENCODE_VERSION=="string"?OPENCODE_VERSION:"local",nt=typeof OPENCODE_CHANNEL=="string"?OPENCODE_CHANNEL:"local";import{Effect as q,Fiber as Jt,ScopedCache as ve,ServiceMap as Vt}from"effect";import{ServiceMap as Wt}from"effect";var we=Wt.Reference("~opencode/InstanceRef",{defaultValue:e(()=>{},"defaultValue")});var _t="~opencode/InstanceState",Ke;(N=>(N.bind=e(p=>{try{return Z.bind(p)}catch(S){if(!(S instanceof te.NotFound))throw S}let s=Jt.getCurrent(),y=s?Vt.getReferenceUnsafe(s.services,we):void 0;return y?((...S)=>Z.restore(y,()=>p(...S))):p},"bind"),N.context=q.gen(function*(){return(yield*we)??Z.current}),N.directory=q.map(N.context,p=>p.directory),N.make=e(p=>q.gen(function*(){let s=yield*ve.make({capacity:Number.POSITIVE_INFINITY,lookup:e(()=>q.gen(function*(){return yield*p(yield*N.context)}),"lookup")}),y=Ot(S=>q.runPromise(ve.invalidate(s,S)));return yield*q.addFinalizer(()=>q.sync(y)),{[_t]:_t,cache:s}}),"make"),N.get=e(p=>q.gen(function*(){return yield*ve.get(p.cache,yield*N.directory)}),"get"),N.use=e((p,s)=>q.map((0,N.get)(p),s),"use"),N.useEffect=e((p,s)=>q.flatMap((0,N.get)(p),s),"useEffect"),N.has=e(p=>q.gen(function*(){return yield*ve.has(p.cache,yield*N.directory)}),"has"),N.invalidate=e(p=>q.gen(function*(){return yield*ve.invalidate(p.cache,yield*N.directory)}),"invalidate"),N.withALS=e(p=>q.map(N.context,s=>Z.restore(s,p)),"withALS")))(Ke||={});import{DatabaseSync as Yt}from"node:sqlite";import{drizzle as qt}from"drizzle-orm/node-sqlite";function St(t){let r=new Yt(t);return qt({client:r})}e(St,"init");var tr=Xe.create("NotFoundError",gt.object({message:gt.string()})),it=ee.create({service:"db"}),_e;(N=>{function t(){if(["latest","beta"].includes(nt)||H.OPENCODE_DISABLE_CHANNEL_DB)return Ce.join(Oe.Path.data,"opencode.db");let p=nt.replace(/[^a-zA-Z0-9._-]/g,"-");return Ce.join(Oe.Path.data,`opencode-${p}.db`)}N.getChannelPath=t,e(t,"getChannelPath"),N.Path=be(()=>H.OPENCODE_DB?H.OPENCODE_DB===":memory:"||Ce.isAbsolute(H.OPENCODE_DB)?H.OPENCODE_DB:Ce.join(Oe.Path.data,H.OPENCODE_DB):t());function l(p){let s=/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/.exec(p);return s?Date.UTC(Number(s[1]),Number(s[2])-1,Number(s[3]),Number(s[4]),Number(s[5]),Number(s[6])):0}e(l,"time");function u(p){return Qt(p,{withFileTypes:!0}).filter(S=>S.isDirectory()).map(S=>S.name).map(S=>{let X=Ce.join(p,S,"migration.sql");if(er(X))return{sql:Zt(X,"utf-8"),timestamp:l(S),name:S}}).filter(Boolean).sort((S,X)=>S.timestamp-X.timestamp)}e(u,"migrations"),N.Client=ze(()=>{it.info("opening database",{path:N.Path});let p=St(N.Path);p.run("PRAGMA journal_mode = WAL"),p.run("PRAGMA synchronous = NORMAL"),p.run("PRAGMA busy_timeout = 5000"),p.run("PRAGMA cache_size = -64000"),p.run("PRAGMA foreign_keys = ON"),p.run("PRAGMA wal_checkpoint(PASSIVE)");let s=Ce.join(import.meta.dirname,"../packages/opencode/migration");if(typeof OPENCODE_MIGRATIONS<"u"){let y=OPENCODE_MIGRATIONS;if(y.length>0){if(it.info("applying migrations",{count:y.length,mode:"bundled"}),H.OPENCODE_SKIP_MIGRATIONS)for(let S of y)S.sql="select 1;";Dt(p,y)}}else{let y=u(s);it.info("applying migrations",{count:y.length,mode:"dev"}),!H.OPENCODE_SKIP_MIGRATIONS&&y.length>0&&Dt(p,{migrationsFolder:s})}return p});function g(){(0,N.Client)().$client.close(),N.Client.reset()}N.close=g,e(g,"close");let T=te.create("database");function J(p){try{return p(T.use().tx)}catch(s){if(s instanceof te.NotFound){let y=[],S=T.provide({effects:y,tx:(0,N.Client)()},()=>p((0,N.Client)()));for(let X of y)X();return S}throw s}}N.use=J,e(J,"use");function F(p){let s=Ke.bind(p);try{T.use().effects.push(s)}catch{s()}}N.effect=F,e(F,"effect");function W(p,s){try{return p(T.use().tx)}catch(y){if(y instanceof te.NotFound){let S=[],X=Ke.bind(ne=>T.provide({tx:ne,effects:S},()=>p(ne))),ye=(0,N.Client)().transaction(X,{behavior:s?.behavior});for(let ne of S)ne();return ye}throw y}}N.transaction=W,e(W,"transaction")})(_e||={});import{sqliteTable as rr,text as ue,integer as or}from"drizzle-orm/sqlite-core";import{integer as Ct}from"drizzle-orm/sqlite-core";var Ee={time_created:Ct().notNull().$default(()=>Date.now()),time_updated:Ct().notNull().$onUpdate(()=>Date.now())};var w=rr("project",{id:ue().$type().primaryKey(),worktree:ue().notNull(),vcs:ue(),name:ue(),icon_url:ue(),icon_color:ue(),...Ee,time_initialized:or(),sandboxes:ue({mode:"json"}).notNull().$type(),commands:ue({mode:"json"}).$type()});import{sqliteTable as Le,text as R,integer as Ne,index as Se,primaryKey as nr}from"drizzle-orm/sqlite-core";var he=Le("session",{id:R().$type().primaryKey(),project_id:R().$type().notNull().references(()=>w.id,{onDelete:"cascade"}),workspace_id:R().$type(),parent_id:R().$type(),slug:R().notNull(),directory:R().notNull(),title:R().notNull(),version:R().notNull(),share_url:R(),summary_additions:Ne(),summary_deletions:Ne(),summary_files:Ne(),summary_diffs:R({mode:"json"}).$type(),revert:R({mode:"json"}).$type(),permission:R({mode:"json"}).$type(),...Ee,metadata:R({mode:"json"}).$type(),time_compacting:Ne(),time_archived:Ne()},t=>[Se("session_project_idx").on(t.project_id),Se("session_workspace_idx").on(t.workspace_id),Se("session_parent_idx").on(t.parent_id)]),ir=Le("message",{id:R().$type().primaryKey(),session_id:R().$type().notNull().references(()=>he.id,{onDelete:"cascade"}),...Ee,data:R({mode:"json"}).notNull().$type()},t=>[Se("message_session_time_created_id_idx").on(t.session_id,t.time_created,t.id)]),Fo=Le("part",{id:R().$type().primaryKey(),message_id:R().$type().notNull().references(()=>ir.id,{onDelete:"cascade"}),session_id:R().$type().notNull(),...Ee,data:R({mode:"json"}).notNull().$type()},t=>[Se("part_message_id_id_idx").on(t.message_id,t.id),Se("part_session_idx").on(t.session_id)]),Go=Le("todo",{session_id:R().$type().notNull().references(()=>he.id,{onDelete:"cascade"}),content:R().notNull(),status:R().notNull(),priority:R().notNull(),position:Ne().notNull(),...Ee},t=>[nr({columns:[t.session_id,t.position]}),Se("todo_session_idx").on(t.session_id)]),$o=Le("permission",{project_id:R().primaryKey().references(()=>w.id,{onDelete:"cascade"}),...Ee,data:R({mode:"json"}).notNull().$type()});import st from"zod";var ct;(u=>{let t=new Map;function r(_,g){let T={type:_,properties:g};return t.set(_,T),T}u.define=r,e(r,"define");function l(){return st.discriminatedUnion("type",t.entries().map(([_,g])=>st.object({type:st.literal(_),properties:g.properties}).meta({ref:"Event."+g.type})).toArray()).meta({ref:"Event"})}u.payloads=l,e(l,"payloads")})(ct||={});import sr from"which";import cr from"path";function at(t,r){let l=r?.PATH??r?.Path??process.env.PATH??process.env.Path??"",u=l?l+cr.delimiter+Oe.Path.bin:Oe.Path.bin,_=sr.sync(t,{nothrow:!0,path:u,pathExt:r?.PATHEXT??r?.PathExt??process.env.PATHEXT??process.env.PathExt});return typeof _=="string"?_:null}e(at,"which");import{Schema as Nt}from"effect";import ht from"zod";var ar=Nt.String.pipe(Nt.brand("ProjectID")),re=ar.pipe(Pt(t=>({global:t.makeUnsafe("global"),make:e(r=>t.makeUnsafe(r),"make"),zod:ht.string().pipe(ht.custom())})));import{Effect as I,Layer as Ye,Path as Nr,Scope as hr,ServiceMap as Ir,Stream as qe}from"effect";import{ChildProcess as xr,ChildProcessSpawner as Ar}from"effect/unstable/process";import{NodePath as Tr}from"@effect/platform-node";import{NodeFileSystem as dr}from"@effect/platform-node";import{dirname as We,join as dt,relative as ft,resolve as It}from"path";import{realpathSync as xt}from"fs";import*as Ve from"fs/promises";import{lookup as fr}from"mime-types";import{Effect as M,FileSystem as pr,Layer as At,Schema as Je,ServiceMap as lr}from"effect";var Ie;(p=>{class t extends Je.TaggedErrorClass()("FileSystemError",{method:Je.String,cause:Je.optional(Je.Defect)}){static{e(this,"FileSystemError")}}p.FileSystemError=t;class r extends lr.Service()("@opencode/FileSystem"){static{e(this,"Service")}}p.Service=r,p.layer=At.effect(r,M.gen(function*(){let s=yield*pr.FileSystem,y=M.fn("FileSystem.existsSafe")(function*(c){return yield*s.exists(c).pipe(M.orElseSucceed(()=>!1))}),S=M.fn("FileSystem.isDir")(function*(c){return(yield*s.stat(c).pipe(M.catch(()=>M.void)))?.type==="Directory"}),X=M.fn("FileSystem.isFile")(function*(c){return(yield*s.stat(c).pipe(M.catch(()=>M.void)))?.type==="File"}),ye=M.fn("FileSystem.readDirectoryEntries")(function*(c){return yield*M.tryPromise({try:e(async()=>(await Ve.readdir(c,{withFileTypes:!0})).map(h=>({name:h.name,type:h.isDirectory()?"directory":h.isSymbolicLink()?"symlink":h.isFile()?"file":"other"})),"try"),catch:e(d=>new t({method:"readDirectoryEntries",cause:d}),"catch")})}),ne=M.fn("FileSystem.readJson")(function*(c){let d=yield*s.readFileString(c);return JSON.parse(d)}),fe=M.fn("FileSystem.writeJson")(function*(c,d,h){let v=JSON.stringify(d,null,2),x=`${c}.tmp-${process.pid}-${Math.random().toString(36).slice(2,8)}`;yield*s.writeFileString(x,v),h&&(yield*s.chmod(x,h)),yield*M.tryPromise({try:e(()=>Ve.rename(x,c),"try"),catch:e(k=>new t({method:"writeJson.rename",cause:k}),"catch")})}),o=M.fn("FileSystem.ensureDir")(function*(c){yield*s.makeDirectory(c,{recursive:!0})}),n=M.fn("FileSystem.writeWithDirs")(function*(c,d,h){let v=typeof d=="string"?s.writeFileString(c,d):s.writeFile(c,d);yield*v.pipe(M.catchIf(x=>x.reason._tag==="NotFound",()=>M.gen(function*(){yield*s.makeDirectory(We(c),{recursive:!0}),yield*v}))),h&&(yield*s.chmod(c,h))}),i=M.fn("FileSystem.glob")(function*(c,d){return yield*M.tryPromise({try:e(()=>tt.scan(c,d),"try"),catch:e(h=>new t({method:"glob",cause:h}),"catch")})}),P=M.fn("FileSystem.findUp")(function*(c,d,h){let v=[],x=d;for(;;){let k=dt(x,c);if((yield*s.exists(k))&&v.push(k),h===x)break;let B=We(x);if(B===x)break;x=B}return v}),D=M.fn("FileSystem.up")(function*(c){let d=[],h=c.start;for(;;){for(let x of c.targets){let k=dt(h,x);(yield*s.exists(k))&&d.push(k)}if(c.stop===h)break;let v=We(h);if(v===h)break;h=v}return d}),m=M.fn("FileSystem.globUp")(function*(c,d,h){let v=[],x=d;for(;;){let k=yield*i(c,{cwd:x,absolute:!0,include:"file",dot:!0}).pipe(M.catch(()=>M.succeed([])));if(v.push(...k),h===x)break;let B=We(x);if(B===x)break;x=B}return v});return r.of({...s,existsSafe:y,isDir:S,isFile:X,readDirectoryEntries:ye,readJson:ne,writeJson:fe,ensureDir:o,writeWithDirs:n,findUp:P,up:D,globUp:m,glob:i,globMatch:tt.match})})),p.defaultLayer=p.layer.pipe(At.provide(dr.layer));function _(s){return fr(s)||"application/octet-stream"}p.mimeType=_,e(_,"mimeType");function g(s){if(process.platform!=="win32")return s;let y=It(F(s));try{return xt.native(y)}catch{return y}}p.normalizePath=g,e(g,"normalizePath");function T(s){if(process.platform!=="win32"||s==="*")return s;let y=s.match(/^(.*)[\\/]\*$/);if(!y)return g(s);let S=/^[A-Za-z]:$/.test(y[1])?y[1]+"\\":y[1];return dt(g(S),"*")}p.normalizePathPattern=T,e(T,"normalizePathPattern");function J(s){let y=It(F(s));try{return g(xt(y))}catch(S){if(S?.code==="ENOENT")return g(y);throw S}}p.resolve=J,e(J,"resolve");function F(s){return process.platform!=="win32"?s:s.replace(/^\/([a-zA-Z]):(?:[\\/]|$)/,(y,S)=>`${S.toUpperCase()}:/`).replace(/^\/([a-zA-Z])(?:\/|$)/,(y,S)=>`${S.toUpperCase()}:/`).replace(/^\/cygdrive\/([a-zA-Z])(?:\/|$)/,(y,S)=>`${S.toUpperCase()}:/`).replace(/^\/mnt\/([a-zA-Z])(?:\/|$)/,(y,S)=>`${S.toUpperCase()}:/`)}p.windowsPath=F,e(F,"windowsPath");function W(s,y){let S=ft(s,y),X=ft(y,s);return!S||!S.startsWith("..")||!X||!X.startsWith("..")}p.overlaps=W,e(W,"overlaps");function N(s,y){return!ft(s,y).startsWith("..")}p.contains=N,e(N,"contains")})(Ie||={});import{NodeFileSystem as Er,NodeSink as Tt,NodeStream as pt}from"@effect/platform-node";import*as bt from"@effect/platform-node/NodePath";import*as Y from"effect/Deferred";import*as a from"effect/Effect";import*as wt from"effect/Exit";import*as vt from"effect/FileSystem";import*as Re from"effect/Layer";import*as Lt from"effect/Path";import*as Rt from"effect/PlatformError";import*as V from"effect/Predicate";import*as ce from"effect/Sink";import*as G from"effect/Stream";import*as ae from"effect/unstable/process/ChildProcess";import{ChildProcessSpawner as kt,ExitCode as ur,make as mr,makeHandle as yr,ProcessId as Pr}from"effect/unstable/process/ChildProcessSpawner";import*as Mt from"node:child_process";import{PassThrough as Or}from"node:stream";import _r from"cross-spawn";var me=e(t=>t instanceof globalThis.Error?t:new globalThis.Error(String(t)),"toError"),Sr=e(t=>{switch(t.code){case"ENOENT":return"NotFound";case"EACCES":return"PermissionDenied";case"EEXIST":return"AlreadyExists";case"EISDIR":return"BadResource";case"ENOTDIR":return"BadResource";case"EBUSY":return"Busy";case"ELOOP":return"BadResource";default:return"Unknown"}},"toTag"),jt=e(t=>{let r=[],l=[],u=e(T=>{switch(T._tag){case"StandardCommand":r.push(T);return;case"PipedCommand":u(T.left),l.push(T.options),u(T.right);return}},"walk");if(u(t),r.length===0)throw new Error("flatten produced empty commands array");let[_,...g]=r;return{commands:[_,...g],opts:l}},"flatten"),se=e((t,r,l)=>{let u=jt(l).commands.map(_=>`${_.command} ${_.args.join(" ")}`).join(" | ");return Rt.systemError({_tag:Sr(r),module:"ChildProcess",method:t,pathOrDescriptor:u,syscall:r.syscall,cause:r})},"toPlatformError"),Dr=a.gen(function*(){let t=yield*vt.FileSystem,r=yield*Lt.Path,l=a.fnUntraced(function*(o){if(!V.isUndefined(o.cwd))return yield*t.access(o.cwd),r.resolve(o.cwd)}),u=e(o=>o.extendEnv?{...globalThis.process.env,...o.env}:o.env,"env"),_=e(o=>G.isStream(o)?"pipe":o,"input"),g=e(o=>ce.isSink(o)?"pipe":o,"output"),T=e(o=>{let n={stream:"pipe",encoding:"utf-8",endOnDone:!0};return V.isUndefined(o.stdin)?n:typeof o.stdin=="string"?{...n,stream:o.stdin}:G.isStream(o.stdin)?{...n,stream:o.stdin}:{stream:o.stdin.stream,encoding:o.stdin.encoding??n.encoding,endOnDone:o.stdin.endOnDone??n.endOnDone}},"stdin"),J=e((o,n)=>{let i=o[n];return V.isUndefined(i)?{stream:"pipe"}:typeof i=="string"?{stream:i}:ce.isSink(i)?{stream:i}:{stream:i.stream}},"stdio"),F=e(o=>V.isUndefined(o.additionalFds)?[]:Object.entries(o.additionalFds).flatMap(([n,i])=>{let P=ae.parseFdName(n);return V.isUndefined(P)?[]:[{fd:P,config:i}]}).toSorted((n,i)=>n.fd-i.fd),"fds"),W=e((o,n,i,P)=>{let D=e(d=>process.platform==="win32"&&d==="pipe"?"overlapped":d,"pipe"),m=[D(_(o.stream)),D(g(n.stream)),D(g(i.stream))];if(P.length===0)return m;let c=P.reduce((d,h)=>Math.max(d,h.fd),2);for(let d=3;d<=c;d++)m[d]="ignore";for(let d of P)m[d.fd]=D("pipe");return m},"stdios"),N=a.fnUntraced(function*(o,n,i){if(i.length===0)return{getInputFd:e(()=>ce.drain,"getInputFd"),getOutputFd:e(()=>G.empty,"getOutputFd")};let P=new Map,D=new Map;for(let m of i){let c=n.stdio[m.fd];switch(m.config.type){case"input":{let d=ce.drain;c&&"write"in c&&(d=Tt.fromWritable({evaluate:e(()=>c,"evaluate"),onError:e(h=>se(`fromWritable(fd${m.fd})`,me(h),o),"onError"),endOnDone:!0})),m.config.stream&&(yield*a.forkScoped(G.run(m.config.stream,d))),P.set(m.fd,d);break}case"output":{let d=G.empty;if(c&&"read"in c){let h=new Or;c.on("error",v=>h.destroy(me(v))),c.pipe(h),d=pt.fromReadable({evaluate:e(()=>h,"evaluate"),onError:e(v=>se(`fromReadable(fd${m.fd})`,me(v),o),"onError")})}m.config.sink&&(d=G.transduce(d,m.config.sink)),D.set(m.fd,d);break}}}return{getInputFd:e(m=>P.get(m)??ce.drain,"getInputFd"),getOutputFd:e(m=>D.get(m)??G.empty,"getOutputFd")}}),p=e((o,n,i)=>a.suspend(()=>{let P=ce.drain;return V.isNotNull(n.stdin)&&(P=Tt.fromWritable({evaluate:e(()=>n.stdin,"evaluate"),onError:e(D=>se("fromWritable(stdin)",me(D),o),"onError"),endOnDone:i.endOnDone,encoding:i.encoding})),G.isStream(i.stream)?a.as(a.forkScoped(G.run(i.stream,P)),P):a.succeed(P)}),"setupStdin"),s=e((o,n,i,P)=>{let D=n.stdout?pt.fromReadable({evaluate:e(()=>n.stdout,"evaluate"),onError:e(c=>se("fromReadable(stdout)",me(c),o),"onError")}):G.empty,m=n.stderr?pt.fromReadable({evaluate:e(()=>n.stderr,"evaluate"),onError:e(c=>se("fromReadable(stderr)",me(c),o),"onError")}):G.empty;return ce.isSink(i.stream)&&(D=G.transduce(D,i.stream)),ce.isSink(P.stream)&&(m=G.transduce(m,P.stream)),{stdout:D,stderr:m,all:G.merge(D,m)}},"setupOutput"),y=e((o,n)=>a.callback(i=>{let P=Y.makeUnsafe(),D=_r(o.command,o.args,n),m=!1,c;return D.on("error",d=>{i(a.fail(se("spawn",d,o)))}),D.on("exit",(...d)=>{c=d}),D.on("close",(...d)=>{m||(m=!0,Y.doneUnsafe(P,wt.succeed(c??d)))}),D.on("spawn",()=>{i(a.succeed([D,P]))}),a.sync(()=>{D.kill("SIGTERM")})}),"spawn"),S=e((o,n,i)=>globalThis.process.platform==="win32"?a.callback(P=>{Mt.exec(`taskkill /pid ${n.pid} /T /F`,{windowsHide:!0},D=>{if(D)return P(a.fail(se("kill",me(D),o)));P(a.void)})}):a.try({try:e(()=>{globalThis.process.kill(-n.pid,i)},"try"),catch:e(P=>se("kill",me(P),o),"catch")}),"killGroup"),X=e((o,n,i)=>a.suspend(()=>n.kill(i)?a.void:a.fail(se("kill",new Error("Failed to kill child process"),o))),"killOne"),ye=e((o,n,i)=>P=>{let D=i?.killSignal??"SIGTERM";return V.isUndefined(i?.forceKillAfter)?P(n,o,D):a.timeoutOrElse(P(n,o,D),{duration:i.forceKillAfter,orElse:e(()=>P(n,o,"SIGKILL"),"orElse")})},"timeout"),ne=e((o,n)=>{let i=n??"stdout";switch(i){case"stdout":return o.stdout;case"stderr":return o.stderr;case"all":return o.all;default:{let P=ae.parseFdName(i);return V.isNotUndefined(P)?o.getOutputFd(P):o.stdout}}},"source"),fe=a.fnUntraced(function*(o){switch(o._tag){case"StandardCommand":{let n=T(o.options),i=J(o.options,"stdout"),P=J(o.options,"stderr"),D=F(o.options),m=yield*l(o.options),[c,d]=yield*a.acquireRelease(y(o,{cwd:m,env:u(o.options),stdio:W(n,i,P,D),detached:o.options.detached??process.platform!=="win32",shell:o.options.shell,windowsHide:process.platform==="win32"}),a.fnUntraced(function*([x,k]){let B=yield*Y.isDone(k),Pe=ye(x,o,o.options);if(B){let[le]=yield*Y.await(k);return process.platform==="win32"?yield*a.void:le!==0&&V.isNotNull(le)?yield*a.ignore(Pe(S)):yield*a.void}let pe=e(le=>a.catch(S(o,x,le),()=>X(o,x,le)),"send"),xe=o.options.killSignal??"SIGTERM",De=pe(xe).pipe(a.andThen(Y.await(k)),a.asVoid),Ue=o.options.forceKillAfter?a.timeoutOrElse(De,{duration:o.options.forceKillAfter,orElse:e(()=>pe("SIGKILL").pipe(a.andThen(Y.await(k)),a.asVoid),"orElse")}):De;return yield*a.ignore(Ue)})),h=yield*N(o,c,D),v=s(o,c,i,P);return yr({pid:Pr(c.pid),stdin:yield*p(o,c,n),stdout:v.stdout,stderr:v.stderr,all:v.all,getInputFd:h.getInputFd,getOutputFd:h.getOutputFd,isRunning:a.map(Y.isDone(d),x=>!x),exitCode:a.flatMap(Y.await(d),([x,k])=>V.isNotNull(x)?a.succeed(ur(x)):a.fail(se("exitCode",new Error(`Process interrupted due to receipt of signal: '${k}'`),o))),kill:e(x=>{let k=x?.killSignal??"SIGTERM",B=e(pe=>a.catch(S(o,c,pe),()=>X(o,c,pe)),"send"),Pe=B(k).pipe(a.andThen(Y.await(d)),a.asVoid);return x?.forceKillAfter?a.timeoutOrElse(Pe,{duration:x.forceKillAfter,orElse:e(()=>B("SIGKILL").pipe(a.andThen(Y.await(d)),a.asVoid),"orElse")}):Pe},"kill")})}case"PipedCommand":{let n=jt(o),[i,...P]=n.commands,D=fe(i);for(let m=0;m<P.length;m++){let c=P[m],d=n.opts[m]??{},h=T(c.options),v=G.unwrap(a.map(D,B=>ne(B,d.from))),x=d.to??"stdin";if(x==="stdin"){D=fe(ae.make(c.command,c.args,{...c.options,stdin:{...h,stream:v}}));continue}let k=ae.parseFdName(x);if(V.isUndefined(k)){D=fe(ae.make(c.command,c.args,{...c.options,stdin:{...h,stream:v}}));continue}D=fe(ae.make(c.command,c.args,{...c.options,additionalFds:{...c.options.additionalFds,[ae.fdName(k)]:{type:"input",stream:v}}}))}return yield*D}}});return mr(fe)}),gr=Re.effect(kt,Dr),lt=gr.pipe(Re.provide(Er.layer),Re.provide(bt.layer)),Pn=ze(async()=>{let{makeRuntime:t}=await import("./run-service-6DJSRAIA.js");return t(kt,lt)});var Et;(o=>{let t=ee.create({service:"project"});o.Info=K.object({id:re.zod,worktree:K.string(),vcs:K.literal("git").optional(),name:K.string().optional(),icon:K.object({url:K.string().optional(),override:K.string().optional(),color:K.string().optional()}).optional(),commands:K.object({start:K.string().optional().describe("Startup script to run when creating a new workspace (worktree)")}).optional(),time:K.object({created:K.number(),updated:K.number(),initialized:K.number().optional()}),sandboxes:K.array(K.string())}).meta({ref:"Project"}),o.Event={Updated:ct.define("project.updated",o.Info)};function u(n){let i=n.icon_url||n.icon_color?{url:n.icon_url??void 0,color:n.icon_color??void 0}:void 0;return{id:n.id,worktree:n.worktree,vcs:n.vcs?o.Info.shape.vcs.parse(n.vcs):void 0,name:n.name??void 0,icon:i,time:{created:n.time_created,updated:n.time_updated,initialized:n.time_initialized??void 0},sandboxes:n.sandboxes,commands:n.commands??void 0}}o.fromRow=u,e(u,"fromRow"),o.UpdateInput=K.object({projectID:re.zod,name:K.string().optional(),icon:o.Info.shape.icon.optional(),commands:o.Info.shape.commands.optional()});class g extends Ir.Service()("@opencode/Project"){static{e(this,"Service")}}o.Service=g,o.layer=Ye.effect(g,I.gen(function*(){let n=yield*Ie.Service,i=yield*Nr.Path,P=yield*Ar.ChildProcessSpawner,D=I.fnUntraced(function*(E,O){let L=yield*P.spawn(xr.make("git",E,{cwd:O?.cwd,extendEnv:!0,stdin:"ignore"})),[U,C]=yield*I.all([qe.mkString(qe.decodeText(L.stdout)),qe.mkString(qe.decodeText(L.stderr))],{concurrency:2});return{code:yield*L.exitCode,text:U,stderr:C}},I.scoped,I.catch(()=>I.succeed({code:1,text:"",stderr:""}))),m=e(E=>I.sync(()=>_e.use(E)),"db"),c=e(E=>I.sync(()=>$e.emit("event",{payload:{type:o.Event.Updated.type,properties:E}})),"emitUpdated"),d=o.Info.shape.vcs.parse(H.OPENCODE_FAKE_VCS),h=e((E,O)=>!O||(O=O.replace(/[\r\n]+$/,""),!O)?E:(O=Ie.windowsPath(O),i.isAbsolute(O)?i.normalize(O):i.resolve(E,O)),"resolveGitPath"),v=yield*hr.Scope,x=I.fnUntraced(function*(E){return yield*n.readFileString(i.join(E,"opencode")).pipe(I.map(O=>O.trim()),I.map(re.make),I.catch(()=>I.succeed(void 0)))}),k=I.fn("Project.fromDirectory")(function*(E){t.info("fromDirectory",{directory:E});let O=yield*I.gen(function*(){let ie=(yield*n.up({targets:[".git"],start:E}).pipe(I.orDie))[0];if(!ie)return{id:re.global,worktree:"/",sandbox:"/",vcs:d};let $=i.dirname(ie),Be=yield*I.sync(()=>at("git")),Q=yield*x(ie);if(!Be)return{id:Q??re.global,worktree:$,sandbox:$,vcs:d};let Ze=yield*D(["rev-parse","--git-common-dir"],{cwd:$});if(Ze.code!==0)return{id:Q??re.global,worktree:$,sandbox:$,vcs:d};let Fe=(()=>{let Ge=h($,Ze.text.trim());return Ge===$?$:i.dirname(Ge)})();if(Q==null&&(Q=yield*x(i.join(Fe,".git"))),!Q){let Ae=(yield*D(["rev-list","--max-parents=0","HEAD"],{cwd:$})).text.split(`
13
- `).filter(Boolean).map(f=>f.trim()).toSorted();Q=Ae[0]?re.make(Ae[0]):void 0,Q&&(yield*n.writeFileString(i.join(Fe,".git","opencode"),Q).pipe(I.ignore))}if(!Q)return{id:re.global,worktree:$,sandbox:$,vcs:"git"};let Qe=yield*D(["rev-parse","--show-toplevel"],{cwd:$});return Qe.code!==0?{id:Q,worktree:$,sandbox:$,vcs:d}:($=h($,Qe.text.trim()),{id:Q,sandbox:$,worktree:Fe,vcs:"git"})}),L=yield*m(j=>j.select().from(w).where((0,A.eq)(w.id,O.id)).get()),U=L?u(L):{id:O.id,worktree:O.worktree,vcs:O.vcs,sandboxes:[],time:{created:Date.now(),updated:Date.now()}};H.OPENCODE_EXPERIMENTAL_ICON_DISCOVERY&&(yield*B(U).pipe(I.ignore,I.forkIn(v)));let C={...U,worktree:O.worktree,vcs:O.vcs,time:{...U.time,updated:Date.now()}};return O.sandbox!==C.worktree&&!C.sandboxes.includes(O.sandbox)&&C.sandboxes.push(O.sandbox),C.sandboxes=yield*I.forEach(C.sandboxes,j=>n.exists(j).pipe(I.orDie,I.map(ie=>ie?j:void 0)),{concurrency:"unbounded"}).pipe(I.map(j=>j.filter(ie=>ie!==void 0))),yield*m(j=>j.insert(w).values({id:C.id,worktree:C.worktree,vcs:C.vcs??null,name:C.name,icon_url:C.icon?.url,icon_color:C.icon?.color,time_created:C.time.created,time_updated:C.time.updated,time_initialized:C.time.initialized,sandboxes:C.sandboxes,commands:C.commands}).onConflictDoUpdate({target:w.id,set:{worktree:C.worktree,vcs:C.vcs??null,name:C.name,icon_url:C.icon?.url,icon_color:C.icon?.color,time_updated:C.time.updated,time_initialized:C.time.initialized,sandboxes:C.sandboxes,commands:C.commands}}).run()),O.id!==re.global&&(yield*m(j=>j.update(he).set({project_id:O.id}).where((0,A.and)((0,A.eq)(he.project_id,re.global),(0,A.eq)(he.directory,O.worktree))).run())),yield*c(C),{project:C,sandbox:O.sandbox}}),B=I.fn("Project.discover")(function*(E){if(E.vcs!=="git"||E.icon?.override||E.icon?.url)return;let L=(yield*n.glob("**/favicon.{ico,png,svg,jpg,jpeg,webp}",{cwd:E.worktree,absolute:!0,include:"file"}).pipe(I.orDie)).sort(($,Be)=>$.length-Be.length)[0];if(!L)return;let U=yield*n.readFile(L).pipe(I.orDie),C=Buffer.from(U).toString("base64"),ie=`data:${Ie.mimeType(L)};base64,${C}`;yield*xe({projectID:E.id,icon:{url:ie}})}),Pe=I.fn("Project.list")(function*(){return yield*m(E=>E.select().from(w).all().map(u))}),pe=I.fn("Project.get")(function*(E){let O=yield*m(L=>L.select().from(w).where((0,A.eq)(w.id,E)).get());return O?u(O):void 0}),xe=I.fn("Project.update")(function*(E){let O=yield*m(U=>U.update(w).set({name:E.name,icon_url:E.icon?.url,icon_color:E.icon?.color,commands:E.commands,time_updated:Date.now()}).where((0,A.eq)(w.id,E.projectID)).returning().get());if(!O)throw new Error(`Project not found: ${E.projectID}`);let L=u(O);return yield*c(L),L}),De=I.fn("Project.initGit")(function*(E){if(E.project.vcs==="git")return E.project;if(!(yield*I.sync(()=>at("git"))))throw new Error("Git is not installed");let O=yield*D(["init","--quiet"],{cwd:E.directory});if(O.code!==0)throw new Error(O.stderr.trim()||O.text.trim()||"Failed to initialize git repository");let{project:L}=yield*k(E.directory);return L}),Ue=I.fn("Project.setInitialized")(function*(E){yield*m(O=>O.update(w).set({time_initialized:Date.now()}).where((0,A.eq)(w.id,E)).run())}),le=I.fn("Project.sandboxes")(function*(E){let O=yield*m(U=>U.select().from(w).where((0,A.eq)(w.id,E)).get());if(!O)return[];let L=u(O);return yield*I.forEach(L.sandboxes,U=>n.isDir(U).pipe(I.orDie,I.map(C=>C?U:void 0)),{concurrency:"unbounded"}).pipe(I.map(U=>U.filter(C=>C!==void 0)))}),ut=I.fn("Project.addSandbox")(function*(E,O){let L=yield*m(j=>j.select().from(w).where((0,A.eq)(w.id,E)).get());if(!L)throw new Error(`Project not found: ${E}`);let U=[...L.sandboxes];U.includes(O)||U.push(O);let C=yield*m(j=>j.update(w).set({sandboxes:U,time_updated:Date.now()}).where((0,A.eq)(w.id,E)).returning().get());if(!C)throw new Error(`Project not found: ${E}`);yield*c(u(C))}),mt=I.fn("Project.removeSandbox")(function*(E,O){let L=yield*m(j=>j.select().from(w).where((0,A.eq)(w.id,E)).get());if(!L)throw new Error(`Project not found: ${E}`);let U=L.sandboxes.filter(j=>j!==O),C=yield*m(j=>j.update(w).set({sandboxes:U,time_updated:Date.now()}).where((0,A.eq)(w.id,E)).returning().get());if(!C)throw new Error(`Project not found: ${E}`);yield*c(u(C))});return g.of({fromDirectory:k,discover:B,list:Pe,get:pe,update:xe,initGit:De,setInitialized:Ue,sandboxes:le,addSandbox:ut,removeSandbox:mt})})),o.defaultLayer=o.layer.pipe(Ye.provide(lt),Ye.provide(Ie.defaultLayer),Ye.provide(Tr.layer));let{runPromise:F}=Ut(g,o.defaultLayer);function W(n){return F(i=>i.fromDirectory(n))}o.fromDirectory=W,e(W,"fromDirectory");function N(n){return F(i=>i.discover(n))}o.discover=N,e(N,"discover");function p(){return _e.use(n=>n.select().from(w).all().map(i=>u(i)))}o.list=p,e(p,"list");function s(n){let i=_e.use(P=>P.select().from(w).where((0,A.eq)(w.id,n)).get());if(i)return u(i)}o.get=s,e(s,"get");function y(n){_e.use(i=>i.update(w).set({time_initialized:Date.now()}).where((0,A.eq)(w.id,n)).run())}o.setInitialized=y,e(y,"setInitialized");function S(n){return F(i=>i.initGit(n))}o.initGit=S,e(S,"initGit");function X(n){return F(i=>i.update(n))}o.update=X,e(X,"update");function ye(n){return F(i=>i.sandboxes(n))}o.sandboxes=ye,e(ye,"sandboxes");function ne(n,i){return F(P=>P.addSandbox(n,i))}o.addSandbox=ne,e(ne,"addSandbox");function fe(n,i){return F(P=>P.removeSandbox(n,i))}o.removeSandbox=fe,e(fe,"removeSandbox")})(Et||={});var ke;(_=>{let t=ee.create({service:"state"}),r=new Map;function l(g,T,J){return()=>{let F=g(),W=r.get(F);W||(W=new Map,r.set(F,W));let N=W.get(T);if(N)return N.state;let p=T();return W.set(T,{state:p,dispose:J}),p}}_.create=l,e(l,"create");async function u(g){let T=r.get(g);if(!T)return;t.info("waiting for state disposal to complete",{key:g});let J=!1;setTimeout(()=>{J||t.warn("state disposal is taking an unusually long time - if it does not complete in a reasonable time, please report this as a bug",{key:g})},1e4).unref();let F=[];for(let[W,N]of T){if(!N.dispose)continue;let p=typeof W=="function"?W.name:String(W),s=Promise.resolve(N.state).then(y=>N.dispose(y)).catch(y=>{t.error("Error while disposing state:",{error:y,key:g,init:p})});F.push(s)}await Promise.all(F),T.clear(),r.delete(g),J=!0,t.info("state disposal completed",{key:g})}_.dispose=u,e(u,"dispose")})(ke||={});var de=te.create("instance"),oe=new Map,Me={all:void 0};function Bt(t){$e.emit("event",{directory:t,payload:{type:"server.instance.disposed",properties:{directory:t}}})}e(Bt,"emit");function Ft(t){return be(async()=>{let r=t.project&&t.worktree?{directory:t.directory,worktree:t.worktree,project:t.project}:await Et.fromDirectory(t.directory).then(({project:l,sandbox:u})=>({directory:t.directory,worktree:u,project:l}));return await de.provide(r,async()=>{await t.init?.()}),r})}e(Ft,"boot");function Gt(t,r){let l=r.catch(u=>{throw oe.get(t)===l&&oe.delete(t),u});return oe.set(t,l),l}e(Gt,"track");var Z={async provide(t){let r=Te.resolve(t.directory),l=oe.get(r);l||(ee.Default.info("creating instance",{directory:r}),l=Gt(r,Ft({directory:r,init:t.init})));let u=await l;return de.provide(u,async()=>t.fn())},get current(){return de.use()},get directory(){return de.use().directory},get worktree(){return de.use().worktree},get project(){return de.use().project},containsPath(t){return Te.contains(Z.directory,t)?!0:Z.worktree==="/"?!1:Te.contains(Z.worktree,t)},bind(t){let r=de.use();return((...l)=>de.provide(r,()=>t(...l)))},restore(t,r){return de.provide(t,r)},state(t,r){return ke.create(()=>Z.directory,t,r)},async reload(t){let r=Te.resolve(t.directory);ee.Default.info("reloading instance",{directory:r}),await Promise.all([ke.dispose(r),ot(r)]),oe.delete(r);let l=Gt(r,Ft({...t,directory:r}));return Bt(r),await l},async dispose(){let t=Z.directory;ee.Default.info("disposing instance",{directory:t}),await Promise.all([ke.dispose(t),ot(t)]),oe.delete(t),Bt(t)},async disposeAll(){return Me.all||(Me.all=be(async()=>{ee.Default.info("disposing all instances");let t=[...oe.entries()];for(let[r,l]of t){if(oe.get(r)!==l)continue;let u=await l.catch(_=>{ee.Default.warn("instance dispose failed",{key:r,error:_})});if(!u){oe.get(r)===l&&oe.delete(r);continue}oe.get(r)===l&&await de.provide(u,async()=>{await Z.dispose()})}}).finally(()=>{Me.all=void 0})),Me.all}};var Lr=wr.makeMemoMapUnsafe();function je(t){try{let r=Z.current;return br.provideService(t,we,r)}catch(r){if(!(r instanceof te.NotFound))throw r}return t}e(je,"attach");function Ut(t,r){let l,u=e(()=>l??=vr.make(r,{memoMap:Lr}),"getRuntime");return{runSync:e(_=>u().runSync(je(t.use(_))),"runSync"),runPromiseExit:e((_,g)=>u().runPromiseExit(je(t.use(_)),g),"runPromiseExit"),runPromise:e((_,g)=>u().runPromise(je(t.use(_)),g),"runPromise"),runFork:e(_=>u().runFork(je(t.use(_))),"runFork"),runCallback:e(_=>u().runCallback(je(t.use(_))),"runCallback")}}e(Ut,"makeRuntime");export{$e as a,be as b,ze as c,Xe as d,H as e,Zr as f,nt as g,Ke as h,tr as i,_e as j,A as k,Ee as l,w as m,he as n,ir as o,Fo as p,Go as q,$o as r,ct as s,at as t,re as u,Ie as v,lt as w,Et as x,Z as y,Lr as z,Ut as A};
@@ -1,12 +0,0 @@
1
- // Built by esbuild from opencode-server source
2
- if (typeof globalThis.Bun === 'undefined') {
3
- globalThis.Bun = {
4
- version: '0.0.0-node-compat',
5
- stdin: { async text() { const chunks = []; for await (const c of process.stdin) chunks.push(c); return Buffer.concat(chunks).toString(); } },
6
- which(cmd) { try { return require('child_process').execFileSync('which', [cmd], { encoding: 'utf8' }).trim(); } catch { return null; } },
7
- };
8
- }
9
- if (typeof globalThis.__name === 'undefined') { globalThis.__name = (t, n) => { Object.defineProperty(t, 'name', { value: n, configurable: true }); return t; }; }
10
- if (typeof globalThis.__export === 'undefined') { globalThis.__export = (t, a) => { for (const k in a) Object.defineProperty(t, k, { get: a[k], enumerable: true }); }; }
11
-
12
- import{a as g}from"./chunk-LTCXIXYM.js";import{a as n}from"./chunk-MBZTOEAD.js";import{Schema as m}from"effect";import y from"zod";import l from"zod";import{randomBytes as k}from"crypto";var c;(w=>{let r={event:"evt",session:"ses",message:"msg",permission:"per",question:"que",user:"usr",part:"prt",pty:"pty",tool:"tool",workspace:"wrk"};function o(e){return l.string().startsWith(r[e])}w.schema=o,n(o,"schema");let h=26,x=0,u=0;function D(e,t){return d(e,!1,t)}w.ascending=D,n(D,"ascending");function B(e,t){return d(e,!0,t)}w.descending=B,n(B,"descending");function d(e,t,s){if(!s)return S(e,t);if(!s.startsWith(r[e]))throw new Error(`ID ${s} does not start with ${r[e]}`);return s}n(d,"generateID");function I(e){let t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",s="",a=k(e);for(let i=0;i<e;i++)s+=t[a[i]%62];return s}n(I,"randomBase62");function S(e,t,s){let a=s??Date.now();a!==x&&(x=a,u=0),u++;let i=BigInt(a)*BigInt(4096)+BigInt(u);i=t?~i:i;let f=Buffer.alloc(6);for(let p=0;p<6;p++)f[p]=Number(i>>BigInt(40-8*p)&BigInt(255));return r[e]+"_"+f.toString("hex")+I(h-12)}w.create=S,n(S,"create");function b(e,t){if(e===t)return 0;try{let s=BigInt("0x"+e.slice(e.indexOf("_")+1,e.indexOf("_")+13)),a=BigInt("0x"+t.slice(t.indexOf("_")+1,t.indexOf("_")+13));if(s!==a){let i=1n<<48n,f=1n<<47n,p=(s-a)%i;return p<0n&&(p+=i),p<f?1:-1}}catch{}return e<t?-1:1}w.compareAscending=b,n(b,"compareAscending");function T(e){let t=e.split("_")[0],s=e.slice(t.length+1,t.length+13),a=BigInt("0x"+s);return Number(a/BigInt(4096))}w.timestamp=T,n(T,"timestamp")})(c||={});var A=m.String.pipe(m.brand("SessionID"),g(r=>({make:n(o=>r.makeUnsafe(o),"make"),descending:n(o=>r.makeUnsafe(c.descending("session",o)),"descending"),zod:c.schema("session").pipe(y.custom())}))),E=m.String.pipe(m.brand("MessageID"),g(r=>({make:n(o=>r.makeUnsafe(o),"make"),ascending:n(o=>r.makeUnsafe(c.ascending("message",o)),"ascending"),zod:c.schema("message").pipe(y.custom())}))),H=m.String.pipe(m.brand("PartID"),g(r=>({make:n(o=>r.makeUnsafe(o),"make"),ascending:n(o=>r.makeUnsafe(c.ascending("part",o)),"ascending"),zod:c.schema("part").pipe(y.custom())})));export{c as a,A as b,E as c,H as d};