alchemylab-opencode 2.0.1 → 2.0.4
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.
- package/NODE_COMPAT.md +8 -1
- package/dist/20260127222353_familiar_lady_ursula-YYOFSQD5.js +18 -0
- package/dist/20260211171708_add_project_commands-3GKQTPBZ.js +18 -0
- package/dist/20260213144116_wakeful_the_professor-ROO7OAVL.js +18 -0
- package/dist/20260225215848_workspace-V2OZTNFF.js +18 -0
- package/dist/20260227213759_add_session_workspace_id-GVDWAXKM.js +18 -0
- package/dist/20260228203230_blue_harpoon-Z5QP2II5.js +18 -0
- package/dist/20260303231226_add_workspace_fields-QOVAFN7W.js +18 -0
- package/dist/20260309230000_move_org_to_state-RQURSDZD.js +18 -0
- package/dist/20260312043431_session_message_cursor-VBISKDXL.js +18 -0
- package/dist/20260323234822_events-PILJHLNA.js +18 -0
- package/dist/20260410174513_workspace-name-63YCZ5NS.js +18 -0
- package/dist/20260413175956_chief_energizer-NMAZYGDO.js +18 -0
- package/dist/20260423070820_add_icon_url_override-RAJCVNEP.js +18 -0
- package/dist/20260427172553_slow_nightmare-ULYYZLR4.js +18 -0
- package/dist/20260428004200_add_session_path-U4WO2TGE.js +18 -0
- package/dist/20260501142318_next_venus-6BCYATSC.js +18 -0
- package/dist/20260504145000_add_sync_owner-RGVHV6LN.js +18 -0
- package/dist/20260507164347_add_workspace_time-GE6UHNPM.js +18 -0
- package/dist/{20260510033149_session_usage-UGBVOXZB.js → 20260510033149_session_usage-7XHCFVKY.js} +5 -1
- package/dist/20260511000411_data_migration_state-2EGZKFLB.js +18 -0
- package/dist/20260511173437_session-metadata-K322YY33.js +18 -0
- package/dist/20260601010001_normalize_storage_paths-VZDTY366.js +18 -0
- package/dist/{20260225215848_workspace-ZMSOZSPA.js → 20260601202201_amazing_prowler-YT6PLK3L.js} +5 -1
- package/dist/{20260228203230_blue_harpoon-IW3Z4TQZ.js → 20260602002951_lowly_union_jack-6VLQTBVB.js} +5 -1
- package/dist/20260602182828_add_project_directories-TVSRD25A.js +18 -0
- package/dist/20260603001617_session_message_projection_indexes-PHKTF6HK.js +18 -0
- package/dist/{20260622170816_reset_v2_session_state-5JPHJTZG.js → 20260603040000_session_message_projection_order-7RTV2POG.js} +5 -1
- package/dist/20260603141458_session_input_inbox-RSBWABG7.js +18 -0
- package/dist/20260603160727_jittery_ezekiel_stane-DXBLLRVV.js +18 -0
- package/dist/20260604172448_event_sourced_session_input-H6Z3JEBD.js +18 -0
- package/dist/20260605003541_add_session_context_snapshot-6FDPM2TK.js +18 -0
- package/dist/20260605042240_add_context_epoch_agent-C2OF2UKR.js +18 -0
- package/dist/20260611035744_credential-YNZ47FSH.js +18 -0
- package/dist/20260611192811_lush_chimera-E357VI6P.js +18 -0
- package/dist/20260612174303_project_dir_strategy-VUGGK42O.js +18 -0
- package/dist/20260622142730_simplify_session_context_epoch-UYGXZ5BX.js +18 -0
- package/dist/20260622170816_reset_v2_session_state-EILLPCJQ.js +18 -0
- package/dist/20260622202450_simplify_session_input-Y65GDGBO.js +18 -0
- package/dist/NodeSdk-AGMQWBHH.js +18 -0
- package/dist/anthropic-45OFTLAW.js +18 -0
- package/dist/anthropic-FVULF7C3.js +18 -0
- package/dist/app-runtime-LDQWNGWP.js +18 -0
- package/dist/chunk-2JE3QYG6.js +18 -0
- package/dist/chunk-2MRHL4B2.js +18 -0
- package/dist/chunk-4GJE6OMN.js +190 -0
- package/dist/chunk-4MBUHJHY.js +22 -0
- package/dist/chunk-5BLZCAU6.js +55 -0
- package/dist/chunk-7XX6TY62.js +259 -0
- package/dist/chunk-ANF3QA3Z.js +48 -0
- package/dist/chunk-AZUMH3TO.js +18 -0
- package/dist/chunk-B74WSFN4.js +878 -0
- package/dist/chunk-BQ4IEPN3.js +19 -0
- package/dist/chunk-CYRZU5QM.js +33 -0
- package/dist/chunk-DADVNQTM.js +1490 -0
- package/dist/chunk-DO2UZ6NY.js +18 -0
- package/dist/chunk-DWEYXIQI.js +780 -0
- package/dist/chunk-EK6FQQHY.js +20 -0
- package/dist/chunk-ELPXQ32J.js +90 -0
- package/dist/chunk-FGLPSSRK.js +19 -0
- package/dist/chunk-FOHYZ7MJ.js +55 -0
- package/dist/chunk-FV7U6PVP.js +18 -0
- package/dist/chunk-FYYAOZPU.js +18 -0
- package/dist/chunk-G7PFO5HG.js +920 -0
- package/dist/chunk-GDWO6EXN.js +22 -0
- package/dist/chunk-GW3ZRKAI.js +20 -0
- package/dist/chunk-IYUSBBGY.js +35 -0
- package/dist/chunk-JPOFLMNH.js +18 -0
- package/dist/{chunk-VURLSDCB.js → chunk-K5LKDIVU.js} +4 -0
- package/dist/chunk-KS4WLVK5.js +19 -0
- package/dist/chunk-LIXP4TPL.js +18 -0
- package/dist/chunk-LSC4RT5V.js +36 -0
- package/dist/chunk-M5A6NFHQ.js +28 -0
- package/dist/chunk-M6E6KNLV.js +30 -0
- package/dist/chunk-MLFZXUGQ.js +18 -0
- package/dist/chunk-NDI67DRG.js +31 -0
- package/dist/chunk-NGT6LCW6.js +18 -0
- package/dist/chunk-OCWGUTZJ.js +36 -0
- package/dist/chunk-OGDRUXMJ.js +18 -0
- package/dist/chunk-OGJKLJC7.js +29 -0
- package/dist/chunk-OT2YNR56.js +19 -0
- package/dist/chunk-OUVSKG2H.js +19 -0
- package/dist/chunk-P5RLCJUV.js +18 -0
- package/dist/chunk-Q3WIUQXB.js +18 -0
- package/dist/{20260227213759_add_session_workspace_id-ROENWPKA.js → chunk-QCRIXKIC.js} +5 -1
- package/dist/chunk-QD24DLUD.js +18 -0
- package/dist/chunk-R2GWBJEP.js +18 -0
- package/dist/chunk-RPAXSOGH.js +18 -0
- package/dist/chunk-TK5R7QUN.js +18 -0
- package/dist/chunk-TNQWZFIZ.js +28 -0
- package/dist/chunk-UCLPBO4I.js +18 -0
- package/dist/chunk-UPEPL4I2.js +18 -0
- package/dist/chunk-V6FDDNGV.js +117 -0
- package/dist/chunk-V6HERYFV.js +18 -0
- package/dist/chunk-V7XKKJ7X.js +24 -0
- package/dist/chunk-VHDYUBBS.js +23 -0
- package/dist/chunk-VWLJXTZ5.js +18 -0
- package/dist/chunk-VXAPFOIL.js +22 -0
- package/dist/chunk-WKZYINC7.js +29 -0
- package/dist/chunk-WPMP2ZFE.js +40 -0
- package/dist/chunk-WRTNIOI3.js +18 -0
- package/dist/chunk-X5F46HR5.js +18 -0
- package/dist/chunk-XPS7TQZG.js +22 -0
- package/dist/chunk-YJPP6IQ3.js +23 -0
- package/dist/chunk-ZYQWFC55.js +22 -0
- package/dist/code-mode-YYOGD36U.js +502 -0
- package/dist/copilot-provider-QVMLQZZC.js +18 -0
- package/dist/dist-5NQOHNPL.js +18 -0
- package/dist/dist-7CT3XCNN.js +32 -0
- package/dist/dist-CL46WFZG.js +18 -0
- package/dist/{20260605042240_add_context_epoch_agent-W6IQYZXE.js → dist-CYBRID2F.js} +5 -1
- package/dist/dist-HXJTF22W.js +32 -0
- package/dist/dist-JFXI53ZF.js +22 -0
- package/dist/dist-KBYKWVT5.js +22 -0
- package/dist/dist-KM5HCPZX.js +35 -0
- package/dist/dist-KTNLTEHB.js +18 -0
- package/dist/dist-KZ5R5QM5.js +24 -0
- package/dist/dist-NLXUYBW7.js +32 -0
- package/dist/dist-O4DF72J2.js +22 -0
- package/dist/dist-PH4MEGVR.js +22 -0
- package/dist/{20260511000411_data_migration_state-FB4LBFSE.js → dist-QJPOJCLB.js} +5 -1
- package/dist/dist-QYH62TCJ.js +22 -0
- package/dist/{20260303231226_add_workspace_fields-OUVZMNAG.js → dist-RIC4WKHC.js} +5 -1
- package/dist/dist-T776XKTM.js +22 -0
- package/dist/dist-TCE5MKZQ.js +23 -0
- package/dist/dist-TH2Q44RX.js +50 -0
- package/dist/dist-VV5FV5RT.js +101 -0
- package/dist/dist-XAFENVUS.js +22 -0
- package/dist/dist-XPFB35TX.js +32 -0
- package/dist/dist-YUH4RKR5.js +28 -0
- package/dist/dist-es-43ZM44MP.js +18 -0
- package/dist/dist-es-6PLFRCS4.js +18 -0
- package/dist/dist-es-G5UIJOU7.js +26 -0
- package/dist/{20260428004200_add_session_path-LGW75WYA.js → dist-es-HYIIGUNX.js} +5 -1
- package/dist/dist-es-L2GU465G.js +18 -0
- package/dist/dist-es-LSR2QCFZ.js +18 -0
- package/dist/dist-es-RGEIM2BP.js +18 -0
- package/dist/dist-es-SITTNOGV.js +18 -0
- package/dist/dist-es-W5GYOX6F.js +18 -0
- package/dist/esm-NN5W7YCL.js +18 -0
- package/dist/esm-XWJSHYHG.js +18 -0
- package/dist/getMachineId-bsd-L5I5TZ5I.js +18 -0
- package/dist/getMachineId-darwin-YB7KG37W.js +19 -0
- package/dist/getMachineId-linux-EL47KXX7.js +18 -0
- package/dist/getMachineId-unsupported-QOWPEBPN.js +18 -0
- package/dist/getMachineId-win-HCRYRDFJ.js +18 -0
- package/dist/lib-ZP7Q6A3E.js +199 -0
- package/dist/loadCognitoIdentity-EWT55EI7.js +18 -0
- package/dist/loadSso-AGOUE6RL.js +18 -0
- package/dist/{20260213144116_wakeful_the_professor-ZVDD54AK.js → loadSts-RH5L3PIX.js} +5 -1
- package/dist/mantle-IJXDXT4M.js +25 -0
- package/dist/mime-types-46EO4HOZ.js +18 -0
- package/dist/multipart-parser-KZWMKXA4.js +19 -0
- package/dist/{20260211171708_add_project_commands-GDOHPDPF.js → open-7KXTRM37.js} +5 -1
- package/dist/openai-ZOJI6I5R.js +18 -0
- package/dist/p-map-CYL6ILJW.js +18 -0
- package/dist/photon-W56QZY4L.js +18 -0
- package/dist/{20260423070820_add_icon_url_override-X5SHFGTI.js → pkce-VT4ITJTB.js} +5 -1
- package/dist/{pty.node-Y3N2XKYG.js → pty.node-IWULXXG6.js} +5 -1
- package/dist/run.js +5 -1
- package/dist/serve.js +143 -1
- package/dist/server-LVIHYOCY.js +21 -0
- package/dist/session-6OPJNJMK.js +18 -0
- package/dist/signin-OCIW23YM.js +18 -0
- package/dist/src-3NCXEROI.js +18 -0
- package/dist/src-LXWGIUZH.js +18 -0
- package/dist/src-WDYKISPD.js +20 -0
- package/dist/src-YAAFIGTW.js +18 -0
- package/dist/sso-oidc-OMMKINFE.js +18 -0
- package/dist/sts-MWK22JIX.js +18 -0
- package/dist/token-QPO3OAGS.js +18 -0
- package/dist/token-util-YGPCEEPO.js +18 -0
- package/dist/unified-W3ZKZ4HG.js +18 -0
- package/dist/worktree-32M5MTFE.js +18 -0
- package/package.json +40 -40
- package/postinstall.cjs +4 -2
- package/dist/20260127222353_familiar_lady_ursula-KV747FJX.js +0 -14
- package/dist/20260309230000_move_org_to_state-NOXAPU5V.js +0 -14
- package/dist/20260312043431_session_message_cursor-DJ4T3T4R.js +0 -14
- package/dist/20260323234822_events-72GIKJ2A.js +0 -14
- package/dist/20260410174513_workspace-name-JXSWFBJN.js +0 -14
- package/dist/20260413175956_chief_energizer-4HEWZ6U3.js +0 -14
- package/dist/20260427172553_slow_nightmare-PS5T2AH2.js +0 -14
- package/dist/20260501142318_next_venus-J3TLVXZ6.js +0 -14
- package/dist/20260504145000_add_sync_owner-3R52GB4C.js +0 -14
- package/dist/20260507164347_add_workspace_time-JHDRCZAR.js +0 -14
- package/dist/20260511173437_session-metadata-T2XHGWHS.js +0 -14
- package/dist/20260601010001_normalize_storage_paths-5MAY5GT3.js +0 -14
- package/dist/20260601202201_amazing_prowler-PET224YG.js +0 -14
- package/dist/20260602002951_lowly_union_jack-PG6XDMGL.js +0 -14
- package/dist/20260602182828_add_project_directories-ZCH2ACGG.js +0 -14
- package/dist/20260603001617_session_message_projection_indexes-XVLJTUF2.js +0 -14
- package/dist/20260603040000_session_message_projection_order-XG6RACZQ.js +0 -14
- package/dist/20260603141458_session_input_inbox-K2VQ7V6E.js +0 -14
- package/dist/20260603160727_jittery_ezekiel_stane-WKJLRDO7.js +0 -14
- package/dist/20260604172448_event_sourced_session_input-NTXOECR7.js +0 -14
- package/dist/20260605003541_add_session_context_snapshot-DXMQEXMT.js +0 -14
- package/dist/20260611035744_credential-XTMSYTJD.js +0 -14
- package/dist/20260611192811_lush_chimera-XPLIQMJD.js +0 -14
- package/dist/20260612174303_project_dir_strategy-FR2NGQKK.js +0 -14
- package/dist/20260622142730_simplify_session_context_epoch-NTQZR3RE.js +0 -14
- package/dist/20260622202450_simplify_session_input-2EXF2HMV.js +0 -14
- package/dist/app-runtime-HQBOCDV5.js +0 -14
- package/dist/chunk-4FEBIOI5.js +0 -865
- package/dist/chunk-4K2RXRZL.js +0 -14
- package/dist/chunk-4RFMKEKM.js +0 -1455
- package/dist/chunk-BM2C7NHL.js +0 -41
- package/dist/chunk-MKEMZFJI.js +0 -393
- package/dist/chunk-OMDJ6ZZ2.js +0 -684
- package/dist/chunk-OWMG4NNF.js +0 -186
- package/dist/chunk-QRABYJKL.js +0 -14
- package/dist/chunk-RHIWAYN5.js +0 -14
- package/dist/chunk-Z5TLIUAI.js +0 -28
- package/dist/code-mode-7BQJUARW.js +0 -40
- package/dist/copilot-provider-TX4YFKJZ.js +0 -14
- package/dist/photon-VQS5F5BI.js +0 -14
- package/dist/server-BFUQR7MX.js +0 -17
- package/dist/session-6RNXZNG6.js +0 -14
- package/dist/worktree-QHQHX3SG.js +0 -14
- package/patches/@ai-sdk%2Famazon-bedrock@4.0.166.patch +0 -164
- package/patches/@ai-sdk%2Fanthropic@3.0.111.patch +0 -528
- package/patches/@ai-sdk%2Fgoogle@3.0.73.patch +0 -69
- package/patches/@ai-sdk%2Fgroq@3.0.31.patch +0 -79
- package/patches/@ai-sdk%2Fmistral@3.0.51.patch +0 -714
- package/patches/@ai-sdk%2Fopenai-compatible@2.0.41.patch +0 -39
- package/patches/@ai-sdk%2Fopenai@3.0.88.patch +0 -280
- package/patches/@ai-sdk%2Fxai@3.0.139.patch +0 -296
- package/patches/@modelcontextprotocol%2Fsdk@1.29.0.patch +0 -647
- package/patches/@npmcli%2Fagent@4.0.2.patch +0 -13
- package/patches/effect@4.0.0-beta.83.patch +0 -57
- package/patches/gcp-metadata@8.1.2.patch +0 -14
- package/patches/pacote@21.5.0.patch +0 -18
package/dist/chunk-BM2C7NHL.js
DELETED
|
@@ -1,41 +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
|
-
import { createRequire as __alchemyCreateRequire } from 'node:module';
|
|
12
|
-
const require = __alchemyCreateRequire(import.meta.url);
|
|
13
|
-
|
|
14
|
-
import{a as r,d as Q,f as bl,g as Rl}from"./chunk-RHIWAYN5.js";var mn={};Q(mn,{LayerNode:()=>mn,compile:()=>mg,group:()=>Js,hasUnbound:()=>yg,hoist:()=>ug,make:()=>Zs,tags:()=>dg,unbound:()=>cg});import{Brand as ag,Layer as Gs}from"effect";var sg=ag.nominal();function dg(e){let t=Object.keys(e),n=Object.fromEntries(t.map(o=>[o,sg(o)]));return{values:n,make:r((o=>i=>Zs({...i,tag:n[o]})),"make")}}r(dg,"tags");function Zs(e){return{kind:"layer",name:e.service!==void 0?e.service.key:e.name,service:e.service,implementation:e.layer,dependencies:e.deps,tag:e.tag}}r(Zs,"make");function cg(e,t){return{kind:"unbound",name:e.key,service:e,dependencies:[],tag:t}}r(cg,"unbound");function Js(e){return{kind:"group",name:"group",dependencies:e}}r(Js,"group");function lg(e,t){let n=fg(t)?t:Zs({...pg(e),layer:t,deps:[],tag:e.tag});if(e.name!==n.name)throw new Error(`Cannot replace ${e.name} with ${n.name}`);if(e.tag!==n.tag)throw new Error(`Cannot replace ${e.name} across tags`);return n}r(lg,"replacementNode");function pg(e){return e.service!==void 0?{service:e.service}:{name:e.name}}r(pg,"nodeMakeIdentity");function fg(e){return"kind"in e&&"dependencies"in e}r(fg,"isNode");function ed(e,t,n={}){let o=n.cache??new Map,i=new Set,s=[],d=r(p=>{let c=n.resolve?.(p)??p,y=o.get(c);if(y!==void 0||o.has(c))return y;if(n.detectCycles!==!1&&i.has(c)){let g=s.indexOf(c);throw new Error(`Cycle detected in layer tree: ${[...s.slice(g),c].map(m=>m.name).join(" -> ")}`)}i.add(c),s.push(c);try{let g=t(c,{cache:o,visit:d});return o.has(c)||o.set(c,g),g}finally{s.pop(),i.delete(c)}},"recur");return d(e)}r(ed,"walk");function ug(e,t,n){let o=new Map,i=Ll(n);return{node:ed(e,(d,p)=>{if(d.kind==="group")return{...d,dependencies:d.dependencies.map(p.visit)};if(d.tag===t){let c=o.get(d.name);if(c&&c!==d)throw new Error(`Tag ${t} has conflicting implementations for ${d.name}`);return o.set(d.name,Ys(d,i)),Js([])}return d.kind==="unbound"?d:{...d,dependencies:d.dependencies.map(p.visit)}},{resolve:r(d=>i.get(d.name)??d,"resolve")}),hoisted:Js(Array.from(o.values()))}}r(ug,"hoist");function mg(e,t){let n=Ll(t),o=new Map,i=r(p=>ed(p,(c,y)=>{if(c.kind==="unbound")throw new Error(`Unbound layer node: ${c.name}`);let g=c.dependencies.flatMap(Xs).map(y.visit),m=c.implementation;return g.length===0?m:m.pipe(Gs.provide(g))},{cache:o,resolve:r(c=>n.get(c.name)??c,"resolve")}),"compileNode");return Xs(e).map(p=>i(p)).reduce((p,c)=>c.pipe(Gs.provideMerge(p)),Gs.empty)}r(mg,"compile");function Ll(e){return e?.reduce((t,[n,o])=>{let i=Ys(lg(n,o),t),s=new Map([[n.name,i]]);for(let[d,p]of t)t.set(d,Ys(p,s));return t.set(n.name,i),t},new Map)??new Map}r(Ll,"replacementMapFrom");function Ys(e,t){if(t.size===0)return e;let n=new Map,o=new Set,i=[],s=r((d,p=!1)=>{let c=p?d:t.get(d.name)??d,y=n.get(c);if(y!==void 0||n.has(c))return y;if(o.has(c)){let g=i.indexOf(c);throw new Error(`Cycle detected in layer tree: ${[...i.slice(g),c].map(m=>m.name).join(" -> ")}`)}o.add(c),i.push(c);try{let g=c.dependencies.map(f=>s(f)),m=g.every((f,l)=>f===c.dependencies[l])?c:{...c,dependencies:g};return n.set(c,m),m}finally{i.pop(),o.delete(c)}},"recur");return s(e,!0)}r(Ys,"rewriteReplacementDependencies");function yg(e,t){if(t.kind!=="unbound")throw new Error(`Cannot check non-unbound layer node: ${t.name}`);return ed(e,(n,o)=>n===t?!0:n.dependencies.some(o.visit))}r(yg,"hasUnbound");function Xs(e){return e.kind==="group"?e.dependencies.flatMap(Xs):[e]}r(Xs,"flatten");import{DateTime as Il,Option as gg,Schema as it,SchemaGetter as Ea}from"effect";var le=it.Int.check(it.isGreaterThan(0)),J=it.Int.check(it.isGreaterThanOrEqualTo(0)),Lt=it.String.pipe(it.brand("RelativePath")),pe=it.String.pipe(it.brand("AbsolutePath")),b=r(e=>it.optionalKey(e).pipe(it.decodeTo(it.optional(it.toType(e)),{decode:Ea.passthrough({strict:!1}),encode:Ea.transformOptional(gg.filter(t=>t!==void 0))})),"optional"),me=r(e=>t=>Object.assign(t,e(t)),"statics"),at=it.Finite.pipe(it.decodeTo(it.DateTimeUtc,{decode:Ea.transform(e=>Il.makeUnsafe(e)),encode:Ea.transform(e=>Il.toEpochMillis(e))}));var st={};Q(st,{AISDK:()=>Ag,Api:()=>kg,ID:()=>wg,Info:()=>_g,Native:()=>Pg,ProviderV2:()=>st,Request:()=>Mg});import"effect";var _e={};Q(_e,{AISDK:()=>Wl,Api:()=>Jl,ID:()=>$l,Info:()=>Cg,Native:()=>Gl,Provider:()=>_e,Request:()=>Yl});import{Schema as xe}from"effect";var we={};Q(we,{Attempt:()=>dd,AttemptID:()=>Vl,AttemptStatus:()=>Dg,EnvMethod:()=>zl,Event:()=>Ig,ID:()=>La,Info:()=>sd,Inputs:()=>Lg,Integration:()=>we,KeyMethod:()=>Kl,Method:()=>jl,MethodID:()=>ql,OAuthMethod:()=>Hl,Prompt:()=>Ul,Ref:()=>vg,SelectPrompt:()=>Bl,TextPrompt:()=>Fl,When:()=>cd});import{Schema as W}from"effect";var ee={};Q(ee,{Event:()=>ee,ID:()=>Cl,define:()=>Ce,durable:()=>xg,inventory:()=>vt,latest:()=>Eg,versionedType:()=>wl});import{Schema as It}from"effect";var hg={};Q(hg,{ascending:()=>je,create:()=>nd,descending:()=>rd});var Sg="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",vl=0,td=0;function je(){return nd(!1)}r(je,"ascending");function rd(){return nd(!0)}r(rd,"descending");function nd(e,t=Date.now()){t!==vl&&(vl=t,td=0),td++;let n=BigInt(t)*0x1000n+BigInt(td),o=e?~n:n,i=Array.from({length:6},(d,p)=>Number(o>>BigInt(40-8*p)&0xffn).toString(16).padStart(2,"0")).join(""),s=crypto.getRandomValues(new Uint8Array(14));return i+Array.from(s,d=>Sg[d%62]).join("")}r(nd,"create");var yn={};Q(yn,{Info:()=>Xn,Location:()=>yn,Ref:()=>id,response:()=>ad});import{Schema as Ta}from"effect";import{Schema as Dl}from"effect";var xa=Dl.String.pipe(Dl.brand("Project.ID"),me(e=>({global:e.make("global")})));import{Schema as od}from"effect";var Ho=od.String.check(od.isStartsWith("wrk")).pipe(od.brand("WorkspaceV2.ID"),me(e=>{let t=r(()=>e.make("wrk_"+je()),"create");return{ascending:r(n=>{if(!n)return t();if(!n.startsWith("wrk"))throw new Error(`ID ${n} does not start with wrk`);return e.make(n)},"ascending"),create:t}}));var id=Ta.Struct({directory:pe,workspaceID:b(Ho)}).annotate({identifier:"Location.Ref"}),Xn=class extends Ta.Class("Location.Info")({directory:pe,workspaceID:b(Ho),project:Ta.Struct({id:xa,directory:pe})}){static{r(this,"Info")}};function ad(e){return Ta.Struct({location:Xn,data:e})}r(ad,"response");var Cl=It.String.check(It.isStartsWith("evt_")).pipe(It.brand("Event.ID"),me(e=>({create:r(()=>e.make("evt_"+je()),"create")})));function Ce(e){let t=It.Struct(e.schema);return It.Struct({id:Cl,metadata:b(It.Record(It.String,It.Unknown)),type:It.Literal(e.type),durable:b(It.Struct({aggregateID:It.String,seq:It.Int,version:It.Int})),location:b(yn.Ref),data:t}).annotate({identifier:e.type}).pipe(me(()=>({type:e.type,...e.durable===void 0?{}:{durable:e.durable},data:t})))}r(Ce,"define");function vt(...e){return Object.freeze(e)}r(vt,"inventory");function Eg(e){return Al(e.reduce((t,n)=>{let o=t.get(n.type);if(!o)return t.set(n.type,n),t;if(n.durable&&o.durable&&n.durable.version!==o.durable.version)return n.durable.version>o.durable.version&&t.set(n.type,n),t;if(n!==o)throw new Error(`Duplicate latest event definition for ${n.type}`);return t},new Map))}r(Eg,"latest");function wl(e,t){return`${e}.${t}`}r(wl,"versionedType");function xg(e){return Al(e.reduce((t,n)=>{if(!n.durable)return t;let o=wl(n.type,n.durable.version);if(t.has(o))throw new Error(`Duplicate durable event definition for ${o}`);return t.set(o,n),t},new Map))}r(xg,"durable");function Al(e){let t=Object.freeze({get size(){return e.size},entries:r(()=>e.entries(),"entries"),forEach:r((n,o)=>e.forEach((i,s)=>n.call(o,i,s,t)),"forEach"),get:r(n=>e.get(n),"get"),has:r(n=>e.has(n),"has"),keys:r(()=>e.keys(),"keys"),values:r(()=>e.values(),"values"),[Symbol.iterator]:()=>e[Symbol.iterator]()});return t}r(Al,"readonlyMap");var br={};Q(br,{Connection:()=>br,CredentialInfo:()=>_l,EnvInfo:()=>Ol,Info:()=>Rg});import{Schema as Nr}from"effect";var rr={};Q(rr,{Credential:()=>rr,ID:()=>Tg,Key:()=>Ml,OAuth:()=>kl,Value:()=>bg});import{Schema as We}from"effect";import{Schema as ba}from"effect";var Pl=ba.String.pipe(ba.brand("Integration.ID")),Ra=ba.String.pipe(ba.brand("Integration.MethodID"));var Tg=We.String.pipe(We.brand("Credential.ID"),me(e=>({create:r(()=>e.make("cred_"+je()),"create")}))),kl=We.Struct({type:We.Literal("oauth"),methodID:Ra,refresh:We.String,access:We.String,expires:J,metadata:b(We.Record(We.String,We.Unknown))}).annotate({identifier:"Credential.OAuth"}),Ml=We.Struct({type:We.Literal("key"),key:We.String,metadata:b(We.Record(We.String,We.Unknown))}).annotate({identifier:"Credential.Key"}),bg=We.Union([kl,Ml]).pipe(We.toTaggedUnion("type")).annotate({identifier:"Credential.Value"});var _l=Nr.Struct({type:Nr.Literal("credential"),id:rr.ID,label:Nr.String}).annotate({identifier:"Connection.CredentialInfo"}),Ol=Nr.Struct({type:Nr.Literal("env"),name:Nr.String}).annotate({identifier:"Connection.EnvInfo"}),Rg=Nr.Union([_l,Ol]).pipe(Nr.toTaggedUnion("type")).annotate({identifier:"Connection.Info"});var La=Pl,ql=Ra,cd=W.Struct({key:W.String,op:W.Literals(["eq","neq"]),value:W.String}).annotate({identifier:"Integration.When"}),Fl=W.Struct({type:W.Literal("text"),key:W.String,message:W.String,placeholder:b(W.String),when:b(cd)}).annotate({identifier:"Integration.TextPrompt"}),Bl=W.Struct({type:W.Literal("select"),key:W.String,message:W.String,options:W.Array(W.Struct({label:W.String,value:W.String,hint:b(W.String)})),when:b(cd)}).annotate({identifier:"Integration.SelectPrompt"}),Ul=W.Union([Fl,Bl]).pipe(W.toTaggedUnion("type")),Hl=W.Struct({id:ql,type:W.Literal("oauth"),label:W.String,prompts:b(W.Array(Ul))}).annotate({identifier:"Integration.OAuthMethod"}),Kl=W.Struct({type:W.Literal("key"),label:b(W.String)}).annotate({identifier:"Integration.KeyMethod"}),zl=W.Struct({type:W.Literal("env"),names:W.Array(W.String)}).annotate({identifier:"Integration.EnvMethod"}),jl=W.Union([Hl,Kl,zl]).pipe(W.toTaggedUnion("type")).annotate({identifier:"Integration.Method"}),Lg=W.Record(W.String,W.String).annotate({identifier:"Integration.Inputs"}),Ql=Ce({type:"integration.updated",schema:{}}),Nl=Ce({type:"integration.connection.updated",schema:{integrationID:La}}),Ig={Updated:Ql,ConnectionUpdated:Nl,Definitions:vt(Ql,Nl)},vg=W.Struct({id:La,name:W.String}).annotate({identifier:"Integration.Ref"}),sd=class extends W.Class("Integration.Info")({id:La,name:W.String,methods:W.Array(jl),connections:W.Array(br.Info)}){static{r(this,"Info")}},Vl=W.String.pipe(W.brand("Integration.AttemptID"),me(e=>({create:r(()=>e.make("con_"+je()),"create")}))),Ko=W.Struct({created:W.Number,expires:W.Number}),dd=class extends W.Class("Integration.Attempt")({attemptID:Vl,url:W.String,instructions:W.String,mode:W.Literals(["auto","code"]),time:Ko}){static{r(this,"Attempt")}},Dg=W.Union([W.Struct({status:W.Literal("pending"),time:Ko}),W.Struct({status:W.Literal("complete"),time:Ko}),W.Struct({status:W.Literal("failed"),message:W.String,time:Ko}),W.Struct({status:W.Literal("expired"),time:Ko})]).pipe(W.toTaggedUnion("status")).annotate({identifier:"Integration.AttemptStatus"});var $l=xe.String.pipe(xe.brand("ProviderV2.ID"),me(e=>({opencode:e.make("opencode"),anthropic:e.make("anthropic"),openai:e.make("openai"),google:e.make("google"),googleVertex:e.make("google-vertex"),githubCopilot:e.make("github-copilot"),amazonBedrock:e.make("amazon-bedrock"),azure:e.make("azure"),openrouter:e.make("openrouter"),mistral:e.make("mistral"),gitlab:e.make("gitlab")}))),Wl=xe.Struct({type:xe.Literal("aisdk"),package:xe.String,url:xe.String.pipe(b),settings:xe.Record(xe.String,xe.Unknown).pipe(b)}).annotate({identifier:"Provider.AISDK"}),Gl=xe.Struct({type:xe.Literal("native"),url:xe.String.pipe(b),settings:xe.Record(xe.String,xe.Unknown)}).annotate({identifier:"Provider.Native"}),Jl=xe.Union([Wl,Gl]).pipe(xe.toTaggedUnion("type")).annotate({identifier:"Provider.Api"}),Yl=xe.Struct({headers:xe.Record(xe.String,xe.String),body:xe.Record(xe.String,xe.Json)}).annotate({identifier:"Provider.Request"}),Cg=xe.Struct({id:$l,integrationID:we.ID.pipe(b),name:xe.String,disabled:xe.Boolean.pipe(b),api:Jl,request:Yl}).annotate({identifier:"ProviderV2.Info"}).pipe(me(e=>({empty:r(t=>e.make({id:t,name:t,api:{type:"native",settings:{}},request:{headers:{},body:{}}}),"empty")})));var wg=_e.ID,Ag=_e.AISDK,Pg=_e.Native,kg=_e.Api,Mg=_e.Request,_g=_e.Info;var gt={};Q(gt,{Api:()=>Hg,Capabilities:()=>Fg,Cost:()=>Bg,Family:()=>qg,ID:()=>rp,Info:()=>Kg,ModelV2:()=>gt,Ref:()=>Ug,VariantID:()=>Ng,parse:()=>zg});import"effect";var ke={};Q(ke,{Api:()=>tp,Capabilities:()=>Zl,Cost:()=>ep,Family:()=>Xl,ID:()=>zo,Info:()=>Qg,Model:()=>ke,Ref:()=>Og,VariantID:()=>ld});import{Schema as te}from"effect";var zo=te.String.pipe(te.brand("ModelV2.ID")),ld=te.String.pipe(te.brand("VariantID")),Og=te.Struct({id:zo,providerID:_e.ID,variant:ld.pipe(b)}).annotate({identifier:"Model.Ref"}),Xl=te.String.pipe(te.brand("Family")),Zl=te.Struct({tools:te.Boolean,input:te.Array(te.String),output:te.Array(te.String)}).annotate({identifier:"Model.Capabilities"}),ep=te.Struct({tier:te.Struct({type:te.Literal("context"),size:te.Int}).pipe(b),input:te.Finite,output:te.Finite,cache:te.Struct({read:te.Finite,write:te.Finite})}).annotate({identifier:"Model.Cost"}),tp=te.Union([te.Struct({id:zo,..._e.AISDK.fields}),te.Struct({id:zo,..._e.Native.fields})]).pipe(te.toTaggedUnion("type")).annotate({identifier:"Model.Api"}),Qg=te.Struct({id:zo,providerID:_e.ID,family:Xl.pipe(b),name:te.String,api:tp,capabilities:Zl,request:te.Struct({..._e.Request.fields,variant:te.String.pipe(b)}),variants:te.Struct({id:ld,..._e.Request.fields}).pipe(te.Array),time:te.Struct({released:te.Finite}),cost:te.Array(ep),status:te.Literals(["alpha","beta","deprecated","active"]),enabled:te.Boolean,limit:te.Struct({context:te.Int,input:te.Int.pipe(b),output:te.Int})}).annotate({identifier:"ModelV2.Info"}).pipe(me(e=>({empty:r((t,n)=>e.make({id:n,providerID:t,name:n,api:{id:n,type:"native",settings:{}},capabilities:{tools:!1,input:[],output:[]},request:{headers:{},body:{}},variants:[],time:{released:0},cost:[],status:"active",enabled:!0,limit:{context:0,output:0}}),"empty")})));var rp=ke.ID,Ng=ke.VariantID,qg=ke.Family,Fg=ke.Capabilities,Bg=ke.Cost,Ug=ke.Ref,Hg=ke.Api,Kg=ke.Info;function zg(e){let[t,...n]=e.split("/");return{providerID:st.ID.make(t),modelID:rp.make(n.join("/"))}}r(zg,"parse");var nr={};Q(nr,{Global:()=>nr,Path:()=>Je,Service:()=>Fr,layerWith:()=>cS,make:()=>yd,node:()=>dS});import Rr from"path";import Sn from"fs/promises";import{xdgData as Zg,xdgCache as eS,xdgConfig as tS,xdgState as rS}from"xdg-basedir";import sp from"os";import{Context as nS,Effect as dp,Layer as cp}from"effect";import Ia from"path";import jg from"os";import{randomBytes as Vg,randomUUID as $g}from"crypto";import{mkdir as va,readFile as Wg,rm as Zn,stat as Gg,utimes as Jg,writeFile as op}from"fs/promises";import{createHash as np}from"crypto";var jo;(n=>{function e(o){return np("sha1").update(o).digest("hex")}n.fast=e,r(e,"fast");function t(o){return np("sha256").update(o).digest("hex")}n.sha256=t,r(t,"sha256")})(jo||={});import{Effect as gn}from"effect";var pd;(U=>{let e;function t(A){e=A}U.setGlobal=t,r(t,"setGlobal");let n=r(()=>{if(!e)throw new Error("Flock global not set");return Ia.join(e.state,"locks")},"root"),o={staleMs:6e4,timeoutMs:5*6e4,baseDelayMs:100,maxDelayMs:2e3};function i(A){if(typeof A!="object"||A===null||!("code"in A))return;let _=A.code;if(typeof _=="string")return _}r(i,"code");function s(A,_){return new Promise((x,B)=>{if(_?.aborted){B(_.reason??new Error("Aborted"));return}let F,T=r(()=>{_?.removeEventListener("abort",R),x()},"done"),R=r(()=>{F&&clearTimeout(F),_?.removeEventListener("abort",R),B(_?.reason??new Error("Aborted"))},"abort");_?.addEventListener("abort",R,{once:!0}),F=setTimeout(T,A)})}r(s,"sleep");function d(A){let _=Math.floor(A*.3),x=Math.floor(Math.random()*(2*_+1))-_;return Math.max(0,A+x)}r(d,"jitter");function p(){return performance.now()}r(p,"mono");function c(){return performance.timeOrigin+p()}r(c,"wall");async function y(A){try{return await Gg(A)}catch(_){let x=i(_);if(x==="ENOENT"||x==="ENOTDIR")return;throw _}}r(y,"stats");async function g(A,_,x,B){let F=c(),T=await y(_);if(T)return F-T.mtimeMs>B;let R=await y(x);if(R)return F-R.mtimeMs>B;let C=await y(A);return C?F-C.mtimeMs>B:!1}r(g,"stale");async function m(A,_){let x=$g?.()??Vg(16).toString("hex"),B=Ia.join(A,"meta.json"),F=Ia.join(A,"heartbeat");try{await va(A,{mode:448})}catch(K){if(i(K)!=="EEXIST")throw K;if(!await g(A,F,B,_.staleMs))return{acquired:!1};let Y=A+".breaker";try{await va(Y,{mode:448})}catch(de){let qe=i(de);if(qe==="EEXIST"){let M=await y(Y);return M&&c()-M.mtimeMs>_.staleMs&&await Zn(Y,{recursive:!0,force:!0}).catch(()=>{}),{acquired:!1}}if(qe==="ENOENT"||qe==="ENOTDIR")return{acquired:!1};throw de}try{if(!await g(A,F,B,_.staleMs))return{acquired:!1};await Zn(A,{recursive:!0,force:!0});try{await va(A,{mode:448})}catch(de){let qe=i(de);if(qe==="EEXIST"||qe==="ENOTEMPTY")return{acquired:!1};throw de}}finally{await Zn(Y,{recursive:!0,force:!0}).catch(()=>{})}}let T={token:x,pid:process.pid,hostname:jg.hostname(),createdAt:new Date().toISOString()};await op(F,"",{flag:"wx"}).catch(async()=>{throw await Zn(A,{recursive:!0,force:!0}),new Error("Lock acquired but heartbeat already existed (possible compromise).")}),await op(B,JSON.stringify(T,null,2),{flag:"wx"}).catch(async()=>{throw await Zn(A,{recursive:!0,force:!0}),new Error("Lock acquired but meta.json already existed (possible compromise).")});let R;return{acquired:!0,startHeartbeat:r((K=Math.max(100,Math.floor(_.staleMs/3)))=>{R||(R=setInterval(()=>{let Y=new Date;Jg(F,Y,Y).catch(()=>{})},K),R.unref?.())},"startHeartbeat"),release:r(async()=>{if(R&&(clearInterval(R),R=void 0),(await Wg(B,"utf8").then(Y=>{let de=JSON.parse(Y);return!de||typeof de!="object"?{}:{token:"token"in de&&typeof de.token=="string"?de.token:void 0}}).catch(Y=>{let de=i(Y);throw de==="ENOENT"||de==="ENOTDIR"?new Error("Refusing to release: lock is compromised (metadata missing)."):Y instanceof SyntaxError?new Error("Refusing to release: lock is compromised (metadata invalid)."):Y})).token!==x)throw new Error("Refusing to release: lock token mismatch (not the owner).");await Zn(A,{recursive:!0,force:!0})},"release")}}r(m,"tryAcquireLockDir");async function f(A,_,x){let B=p()+x.timeoutMs,F=0,T=0,R=x.baseDelayMs;for(;;){_.signal?.throwIfAborted();let C=await m(A,x);if(C.acquired)return C;if(p()>B)throw new Error(`Timed out waiting for lock: ${_.key}`);F+=1;let k=d(R);await _.onWait?.({key:_.key,attempt:F,delay:k,waited:T}),await s(k,_.signal),T+=k,R=Math.min(x.maxDelayMs,Math.floor(R*1.7))}}r(f,"acquireLockDir");async function l(A,_={}){_.signal?.throwIfAborted();let x={staleMs:_.staleMs??o.staleMs,timeoutMs:_.timeoutMs??o.timeoutMs,baseDelayMs:_.baseDelayMs??o.baseDelayMs,maxDelayMs:_.maxDelayMs??o.maxDelayMs},B=_.dir??n();await va(B,{recursive:!0});let F=Ia.join(B,jo.fast(A)+".lock"),T=await f(F,{key:A,onWait:_.onWait,signal:_.signal},x);T.startHeartbeat();let R=r(()=>T.release(),"release");return{release:R,[Symbol.asyncDispose](){return R()}}}U.acquire=l,r(l,"acquire");async function L(A,_,x={}){var F=[];try{let B=bl(F,await l(A,x),!0);x.signal?.throwIfAborted();return await _()}catch(T){var R=T,C=!0}finally{var k=Rl(F,R,C);k&&await k}}U.withLock=L,r(L,"withLock"),U.effect=gn.fn("Flock.effect")(function*(A,_={}){return yield*gn.acquireRelease(gn.promise(x=>U.acquire(A,{..._,signal:x})).pipe(gn.withSpan("Flock.acquire",{attributes:{key:A}})),x=>gn.promise(()=>x.release()).pipe(gn.withSpan("Flock.release"))).pipe(gn.asVoid)})})(pd||={});import{Config as Da}from"effect";function Ge(e){let t=process.env[e]?.toLowerCase();return t==="true"||t==="1"}r(Ge,"truthy");var Yg=process.env.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT,Xg=process.env.OPENCODE_DISABLE_FFF;function ip(e){return process.env[e]===void 0?Ge("OPENCODE_EXPERIMENTAL"):Ge(e)}r(ip,"enabledByExperimental");var qr={OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_HEADERS:process.env.OTEL_EXPORTER_OTLP_HEADERS,OPENCODE_AUTO_HEAP_SNAPSHOT:Ge("OPENCODE_AUTO_HEAP_SNAPSHOT"),OPENCODE_GIT_BASH_PATH:process.env.OPENCODE_GIT_BASH_PATH,OPENCODE_CONFIG:process.env.OPENCODE_CONFIG,OPENCODE_CONFIG_CONTENT:process.env.OPENCODE_CONFIG_CONTENT,OPENCODE_DISABLE_AUTOUPDATE:Ge("OPENCODE_DISABLE_AUTOUPDATE"),OPENCODE_ALWAYS_NOTIFY_UPDATE:Ge("OPENCODE_ALWAYS_NOTIFY_UPDATE"),OPENCODE_DISABLE_PRUNE:Ge("OPENCODE_DISABLE_PRUNE"),OPENCODE_DISABLE_TERMINAL_TITLE:Ge("OPENCODE_DISABLE_TERMINAL_TITLE"),OPENCODE_SHOW_TTFD:Ge("OPENCODE_SHOW_TTFD"),OPENCODE_DISABLE_AUTOCOMPACT:Ge("OPENCODE_DISABLE_AUTOCOMPACT"),OPENCODE_DISABLE_MODELS_FETCH:Ge("OPENCODE_DISABLE_MODELS_FETCH"),OPENCODE_DISABLE_MOUSE:Ge("OPENCODE_DISABLE_MOUSE"),OPENCODE_FAKE_VCS:process.env.OPENCODE_FAKE_VCS,OPENCODE_SERVER_PASSWORD:process.env.OPENCODE_SERVER_PASSWORD,OPENCODE_SERVER_USERNAME:process.env.OPENCODE_SERVER_USERNAME,OPENCODE_DISABLE_FFF:Xg===void 0?process.platform==="win32":Ge("OPENCODE_DISABLE_FFF"),OPENCODE_EXPERIMENTAL_FILEWATCHER:Da.boolean("OPENCODE_EXPERIMENTAL_FILEWATCHER").pipe(Da.withDefault(!1)),OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER:Da.boolean("OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe(Da.withDefault(!1)),OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT:Yg===void 0?process.platform==="win32":Ge("OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"),OPENCODE_MODELS_URL:process.env.OPENCODE_MODELS_URL,OPENCODE_MODELS_PATH:process.env.OPENCODE_MODELS_PATH,OPENCODE_DB:process.env.OPENCODE_DB,OPENCODE_WORKSPACE_ID:process.env.OPENCODE_WORKSPACE_ID,OPENCODE_EXPERIMENTAL_WORKSPACES:ip("OPENCODE_EXPERIMENTAL_WORKSPACES"),get OPENCODE_DISABLE_PROJECT_CONFIG(){return Ge("OPENCODE_DISABLE_PROJECT_CONFIG")},get OPENCODE_EXPERIMENTAL_REFERENCES(){return ip("OPENCODE_EXPERIMENTAL_REFERENCES")},get OPENCODE_TUI_CONFIG(){return process.env.OPENCODE_TUI_CONFIG},get OPENCODE_CONFIG_DIR(){return process.env.OPENCODE_CONFIG_DIR},get OPENCODE_PURE(){return Ge("OPENCODE_PURE")},get OPENCODE_PERMISSION(){return process.env.OPENCODE_PERMISSION},get OPENCODE_PLUGIN_META_FILE(){return process.env.OPENCODE_PLUGIN_META_FILE},get OPENCODE_CLIENT(){return process.env.OPENCODE_CLIENT??"cli"},get ALCHEMYLAB(){return Ge("ALCHEMYLAB")},get ALCHEMYLAB_ANTHROPIC_COMPACTION(){return process.env.ALCHEMYLAB_ANTHROPIC_COMPACTION===void 0?void 0:Ge("ALCHEMYLAB_ANTHROPIC_COMPACTION")}};var fd={};Q(fd,{Node:()=>fd,makeGlobalNode:()=>Te,makeLocationNode:()=>$t,tags:()=>Vo});var Vo=mn.tags({location:["global"],global:[]}),Te=Vo.make("global"),$t=Vo.make("location");var $o="opencode",md=process.env.OPENCODE_DATA_DIR,lp=Rr.join(Zg,$o),ud=md||lp,ap=Rr.join(eS,$o),oS=Rr.join(tS,$o),pp=md?Rr.join(md,"state"):Rr.join(rS,$o),iS=Rr.join(sp.tmpdir(),$o),aS={get home(){return process.env.OPENCODE_TEST_HOME??sp.homedir()},data:ud,globalData:lp,bin:Rr.join(ap,"bin"),log:Rr.join(ud,"log"),repos:Rr.join(ud,"repos"),cache:ap,config:oS,state:pp,tmp:iS},Je=aS;pd.setGlobal({state:pp});await Promise.all([Sn.mkdir(Je.data,{recursive:!0}),Sn.mkdir(Je.config,{recursive:!0}),Sn.mkdir(Je.state,{recursive:!0}),Sn.mkdir(Je.tmp,{recursive:!0}),Sn.mkdir(Je.log,{recursive:!0}),Sn.mkdir(Je.bin,{recursive:!0}),Sn.mkdir(Je.repos,{recursive:!0})]);var Fr=class extends nS.Service()("@opencode/Global"){static{r(this,"Service")}};function yd(e={}){return{home:Je.home,data:Je.data,cache:Je.cache,config:qr.OPENCODE_CONFIG_DIR??Je.config,state:Je.state,tmp:Je.tmp,bin:Je.bin,log:Je.log,repos:Je.repos,...e}}r(yd,"make");var sS=cp.effect(Fr,dp.sync(()=>Fr.of(yd()))),dS=Te({service:Fr,layer:sS,deps:[]}),cS=r(e=>cp.effect(Fr,dp.sync(()=>Fr.of(yd(e)))),"layerWith");var Qv="1.18.35",Ca="latest",Nv=Ca==="local";var Qt={};Q(Qt,{Database:()=>Qt,Service:()=>di,layerFromPath:()=>Wp,node:()=>Ah,path:()=>Gp});var ii={};Q(ii,{DefaultServices:()=>_p,EffectDrizzleSqlite:()=>ii,EffectLogger:()=>uh,EffectSQLiteDatabase:()=>Ua,EffectSQLiteSession:()=>oi,EffectSQLiteTransaction:()=>qa,make:()=>Op,makeWithDefaults:()=>ph,migrate:()=>Qp});import{EffectLogger as uh}from"drizzle-orm/effect-core";import*as Ha from"effect/Effect";import*as Pp from"effect/Layer";import{SqlClient as dh}from"effect/unstable/sql/SqlClient";import{EffectCache as kp}from"drizzle-orm/cache/core/cache-effect";import{EffectLogger as Mp}from"drizzle-orm/effect-core";import{entityKind as ch}from"drizzle-orm/entity";import{SQLiteAsyncDialect as lh}from"drizzle-orm/sqlite-core/dialect";import{Effect as zS}from"effect";import{entityKind as jS}from"drizzle-orm/entity";import{SelectionProxyHandler as VS}from"drizzle-orm/selection-proxy";import{sql as $S}from"drizzle-orm/sql/sql";import{QueryBuilder as WS}from"drizzle-orm/sqlite-core/query-builders/query-builder";import{WithSubquery as GS}from"drizzle-orm/subquery";import{applyEffectWrapper as lS}from"drizzle-orm/effect-core/query-effect";import{entityKind as pS}from"drizzle-orm/entity";import{SQL as fS,sql as wa}from"drizzle-orm/sql/sql";function uS(e,t){return wa`(select count(*) from ${e}${wa.raw(" where ").if(t)}${t})`}r(uS,"buildSQLiteEmbeddedCount");function mS(e,t){return wa`select count(*) from ${e}${wa.raw(" where ").if(t)}${t}`}r(mS,"buildSQLiteCount");var Wo=class extends fS{static{r(this,"SQLiteEffectCountBuilder")}static[pS]="SQLiteEffectCountBuilder";sql;session;constructor(t){super(uS(t.source,t.filters).queryChunks),this.session=t.session,this.sql=mS(t.source,t.filters)}execute(t){return this.session.prepareQuery(this.session.dialect.sqlToQuery(this.sql),void 0,"all",n=>{let o=n[0]?.[0];return typeof o=="number"?o:o?Number(o):0}).execute(t)}};lS(Wo);import{applyEffectWrapper as xS}from"drizzle-orm/effect-core/query-effect";import{entityKind as TS}from"drizzle-orm/entity";import{SelectionProxyHandler as bS}from"drizzle-orm/selection-proxy";import"drizzle-orm/sqlite-core/table";import{extractUsedTable as RS}from"drizzle-orm/sqlite-core/utils";import"drizzle-orm/utils";import{Column as Pa,getColumnTable as yS}from"drizzle-orm/column";import{is as St}from"drizzle-orm/entity";import{Param as gS,SQL as Go}from"drizzle-orm/sql/sql";import{SQLiteViewBase as SS}from"drizzle-orm/sqlite-core/view-base";import{Subquery as gd}from"drizzle-orm/subquery";import{Table as fp,getTableName as hS}from"drizzle-orm/table";import{ViewBaseConfig as ES}from"drizzle-orm/view-common";var Aa=fp.Symbol;function Dt(e){return e[Aa.Columns]}r(Dt,"getTableColumnsRuntime");function Jo(e){return e[ES]}r(Jo,"getViewSelectedFieldsRuntime");function up(e){if(!e)return!1;try{return new Function("input",'"use strict"; return input;')(!0)===!0}catch{return!1}}r(up,"jitCompatCheck");function or(e,t){return Object.entries(e).flatMap(([n,o])=>{let i=t?[...t,n]:[n];return St(o,Pa)||St(o,Go)||St(o,Go.Aliased)||St(o,gd)?[{path:i,field:o}]:St(o,fp)?or(Dt(o),i):or(o,i)})}r(or,"orderSelectedFields");function ka(e,t){let n=Object.entries(t).filter(([,o])=>o!==void 0);if(n.length===0)throw new Error("No values to set");return Object.fromEntries(n.map(([o,i])=>[o,St(i,Go)||St(i,Pa)?i:new gS(i,Dt(e)[o])]))}r(ka,"mapUpdateSet");function Sd(e,t,n){let o={},i={};return e.forEach((s,d)=>{let p=St(s.field,Pa)?s.field:St(s.field,Go)?s.field.decoder:St(s.field,gd)?s.field._.sql.decoder:s.field.sql.decoder,c=t[d],y=c===null?null:p.mapFromDriverValue(c),g=s.path[0],m=i;if(s.path.forEach((f,l)=>{if(l===s.path.length-1){m[f]=y;return}m[f]=m[f]??{},m=m[f]}),n&&St(s.field,Pa)&&s.path.length===2&&g){let f=hS(yS(s.field));o[g]=!(g in o)&&y===null?f:typeof o[g]=="string"&&o[g]!==f?!1:o[g]}}),Object.entries(o).forEach(([s,d])=>{typeof d=="string"&&!n?.[d]&&(i[s]=null)}),i}r(Sd,"mapResultRow");function mp(e){if(St(e,gd))return e._.alias;if(St(e,SS))return Jo(e).name;if(!St(e,Go))return e[e[Aa.IsAlias]?Aa.Name:Aa.BaseName]}r(mp,"getTableLikeName");var eo=class{constructor(t,n,o,i){this.table=t;this.effectSession=n;this.effectDialect=o;this.config={table:t,withList:i}}table;effectSession;effectDialect;static{r(this,"SQLiteEffectDeleteBase")}static[TS]="SQLiteEffectDelete";config;where(t){return this.config.where=t,this}orderBy(...t){if(typeof t[0]=="function"){let n=t[0](new Proxy(Dt(this.config.table),new bS({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));return this.config.orderBy=Array.isArray(n)?n:[n],this}return this.config.orderBy=t,this}limit(t){return this.config.limit=t,this}returning(t=Dt(this.table)){return this.config.returning=or(t),this}getSQL(){return this.effectDialect.buildDeleteQuery(this.config)}toSQL(){return this.effectDialect.sqlToQuery(this.getSQL())}_prepare(t=!0){return this.effectSession[t?"prepareOneTimeQuery":"prepareQuery"](this.effectDialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",void 0,{type:"delete",tables:RS(this.config.table)})}prepare(){return this._prepare(!1)}run=r(t=>this._prepare().run(t),"run");all=r(t=>this._prepare().all(t),"all");get=r(t=>this._prepare().get(t),"get");values=r(t=>this._prepare().values(t),"values");execute=r(t=>this._prepare().execute(t),"execute");$dynamic(){return this}};xS(eo);import{applyEffectWrapper as LS}from"drizzle-orm/effect-core/query-effect";import{entityKind as Sp,is as yp}from"drizzle-orm/entity";import{Param as IS,SQL as gp,sql as _t}from"drizzle-orm/sql/sql";import"drizzle-orm/sqlite-core/table";import{extractUsedTable as vS}from"drizzle-orm/sqlite-core/utils";import{haveSameKeys as DS}from"drizzle-orm/utils";import{QueryBuilder as CS}from"drizzle-orm/sqlite-core/query-builders/query-builder";var Yo=class{constructor(t,n,o,i){this.table=t;this.session=n;this.dialect=o;this.withList=i}table;session;dialect;withList;static{r(this,"SQLiteEffectInsertBuilder")}static[Sp]="SQLiteEffectInsertBuilder";values(t){if(t=Array.isArray(t)?t:[t],t.length===0)throw new Error("values() must be called with at least one value");let n=t.map(o=>{let i={},s=Dt(this.table);for(let d of Object.keys(o)){let p=o[d];i[d]=yp(p,gp)?p:new IS(p,s[d])}return i});return new Xo(this.table,n,this.session,this.dialect,this.withList)}select(t){let n=typeof t=="function"?t(new CS):t;if(!yp(n,gp)&&!DS(Dt(this.table),n._.selectedFields))throw new Error("Insert select error: selected fields are not the same or are in a different order compared to the table definition");return new Xo(this.table,n,this.session,this.dialect,this.withList,!0)}},Xo=class{constructor(t,n,o,i,s,d){this.table=t;this.effectSession=o;this.effectDialect=i;this.config={table:t,values:n,withList:s,select:d}}table;effectSession;effectDialect;static{r(this,"SQLiteEffectInsertBase")}static[Sp]="SQLiteEffectInsert";config;returning(t=Dt(this.config.table)){return this.config.returning=or(t),this}onConflictDoNothing(t={}){if(this.config.onConflict||(this.config.onConflict=[]),t.target===void 0)return this.config.onConflict.push(_t` on conflict do nothing`),this;let n=Array.isArray(t.target)?_t`${t.target}`:_t`${[t.target]}`,o=t.where?_t` where ${t.where}`:_t``;return this.config.onConflict.push(_t` on conflict ${n} do nothing${o}`),this}onConflictDoUpdate(t){if(t.where&&(t.targetWhere||t.setWhere))throw new Error('You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.');this.config.onConflict||(this.config.onConflict=[]);let n=t.where?_t` where ${t.where}`:void 0,o=t.targetWhere?_t` where ${t.targetWhere}`:void 0,i=t.setWhere?_t` where ${t.setWhere}`:void 0,s=Array.isArray(t.target)?_t`${t.target}`:_t`${[t.target]}`,d=this.effectDialect.buildUpdateSet(this.config.table,ka(this.config.table,t.set));return this.config.onConflict.push(_t` on conflict ${s}${o} do update set ${d}${n}${i}`),this}getSQL(){return this.effectDialect.buildInsertQuery(this.config)}toSQL(){return this.effectDialect.sqlToQuery(this.getSQL())}_prepare(t=!0){return this.effectSession[t?"prepareOneTimeQuery":"prepareQuery"](this.effectDialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",void 0,{type:"insert",tables:vS(this.config.table)})}prepare(){return this._prepare(!1)}run=r(t=>this._prepare().run(t),"run");all=r(t=>this._prepare().all(t),"all");get=r(t=>this._prepare().get(t),"get");values=r(t=>this._prepare().values(t),"values");execute=r(t=>this._prepare().execute(t),"execute");$dynamic(){return this}};LS(Xo);import{applyEffectWrapper as wS}from"drizzle-orm/effect-core/query-effect";import{entityKind as hp}from"drizzle-orm/entity";import{makeDefaultRqbMapper as AS}from"drizzle-orm/relations";import{sql as Ot}from"drizzle-orm/sql/sql";var Ma=class{constructor(t,n,o,i,s,d,p){this.schema=t;this.table=n;this.tableConfig=o;this.dialect=i;this.session=s;this.rowMode=d;this.forbidJsonb=p}schema;table;tableConfig;dialect;session;rowMode;forbidJsonb;static{r(this,"SQLiteEffectRelationalQueryBuilder")}static[hp]="SQLiteEffectRelationalQueryBuilderV2";findMany(t){return new Zo(this.schema,this.table,this.tableConfig,this.dialect,this.session,t??!0,"many",this.rowMode,this.forbidJsonb)}findFirst(t){return new Zo(this.schema,this.table,this.tableConfig,this.dialect,this.session,t??!0,"first",this.rowMode,this.forbidJsonb)}},Zo=class{constructor(t,n,o,i,s,d,p,c,y){this.schema=t;this.tableConfig=o;this.dialect=i;this.session=s;this.config=d;this.rowMode=c;this.forbidJsonb=y;this.mode=p,this.table=n}schema;tableConfig;dialect;session;config;rowMode;forbidJsonb;static{r(this,"SQLiteEffectRelationalQuery")}static[hp]="SQLiteEffectRelationalQueryV2";mode;table;getSQL(){return this._getQuery().sql}_prepare(t=!0){let{query:n,builtQuery:o}=this._toSQL(),i={isFirst:this.mode==="first",parseJson:!this.rowMode,parseJsonIfString:!1,rootJsonMappers:!0,selection:n.selection};return this.session[t?"prepareOneTimeRelationalQuery":"prepareRelationalQuery"](o,void 0,this.mode==="first"?"get":"all",AS(i),i)}prepare(){return this._prepare(!1)}_getQuery(){let t=this.forbidJsonb?Ot`json`:Ot`jsonb`,n=this.dialect.buildRelationalQuery({schema:this.schema,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,mode:this.mode,isNested:this.rowMode,jsonb:t});if(this.rowMode){let o=Ot.join(n.selection.map(i=>Ot`${Ot.raw(this.dialect.escapeString(i.key))}, ${i.selection?Ot`${t}(${Ot.identifier(i.key)})`:Ot.identifier(i.key)}`),Ot`, `);n.sql=Ot`select json_object(${o}) as ${Ot.identifier("r")} from (${n.sql}) as ${Ot.identifier("t")}`}return n}_toSQL(){let t=this._getQuery(),n=this.dialect.sqlToQuery(t.sql);return{query:t,builtQuery:n}}toSQL(){return this._toSQL().builtQuery}execute(t){return this.mode==="first"?this._prepare().get(t):this._prepare().all(t)}};wS(Zo);import{applyEffectWrapper as PS}from"drizzle-orm/effect-core/query-effect";import{entityKind as kS}from"drizzle-orm/entity";var ei=class{constructor(t,n,o,i,s){this.execute=t;this.getSQL=n;this.action=o;this.dialect=i;this.mapBatchResult=s}execute;getSQL;action;dialect;mapBatchResult;static{r(this,"SQLiteEffectRaw")}static[kS]="SQLiteEffectRaw";getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.action}}mapResult(t,n){return n?this.mapBatchResult(t):t}_prepare(){return this}};PS(ei);import{applyEffectWrapper as MS}from"drizzle-orm/effect-core/query-effect";import{entityKind as Ep,is as hd}from"drizzle-orm/entity";import{SQL as _S}from"drizzle-orm/sql/sql";import{SQLiteSelectQueryBuilderBase as OS}from"drizzle-orm/sqlite-core/query-builders/select";import{SQLiteViewBase as QS}from"drizzle-orm/sqlite-core/view-base";import{Subquery as NS}from"drizzle-orm/subquery";import{getTableColumns as qS}from"drizzle-orm/utils";var hn=class{static{r(this,"SQLiteEffectSelectBuilder")}static[Ep]="SQLiteEffectSelectBuilder";fields;session;dialect;withList;distinct;constructor(t){this.fields=t.fields,this.session=t.session,this.dialect=t.dialect,this.withList=t.withList,this.distinct=t.distinct}from(t){let n=!!this.fields,o;return this.fields?o=this.fields:hd(t,NS)?o=Object.fromEntries(Object.keys(t._.selectedFields).map(i=>[i,t[i]])):hd(t,QS)?o=Jo(t).selectedFields:hd(t,_S)?o={}:o=qS(t),new _a({table:t,fields:o,isPartialSelect:n,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}},_a=class extends OS{static{r(this,"SQLiteEffectSelectBase")}static[Ep]="SQLiteEffectSelect";get effectConfig(){return this.config}getSQL(){return this.dialect.buildSelectQuery(this.effectConfig)}_prepare(t=!0){if(!this.session)throw new Error("Cannot execute a query on a query builder. Please use a database instance instead.");let o=this.session[t?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),or(this.effectConfig.fields),"all",void 0,{type:"select",tables:[...this.usedTables]},this.cacheConfig);return o.joinsNotNullableMap=this.joinsNotNullableMap,o}$withCache(t){return this.cacheConfig=t===void 0?{config:{},enabled:!0,autoInvalidate:!0}:t===!1?{enabled:!1}:{enabled:!0,autoInvalidate:!0,...t},this}prepare(){return this._prepare(!1)}run=r(t=>this._prepare().run(t),"run");all=r(t=>this._prepare().all(t),"all");get=r(t=>this._prepare().get(t),"get");values=r(t=>this._prepare().values(t),"values");execute=r(t=>this._prepare().execute(t),"execute")};MS(_a);import{applyEffectWrapper as FS}from"drizzle-orm/effect-core/query-effect";import{entityKind as xp,is as Ed}from"drizzle-orm/entity";import{SelectionProxyHandler as xd}from"drizzle-orm/selection-proxy";import{SQLiteTable as BS}from"drizzle-orm/sqlite-core/table";import{extractUsedTable as US}from"drizzle-orm/sqlite-core/utils";import{SQLiteViewBase as HS}from"drizzle-orm/sqlite-core/view-base";import{Subquery as KS}from"drizzle-orm/subquery";import"drizzle-orm/utils";var ti=class{constructor(t,n,o,i){this.table=t;this.session=n;this.dialect=o;this.withList=i}table;session;dialect;withList;static{r(this,"SQLiteEffectUpdateBuilder")}static[xp]="SQLiteEffectUpdateBuilder";set(t){return new Oa(this.table,ka(this.table,t),this.session,this.dialect,this.withList)}},Oa=class{constructor(t,n,o,i,s){this.effectSession=o;this.effectDialect=i;this.config={set:n,table:t,withList:s,joins:[]}}effectSession;effectDialect;static{r(this,"SQLiteEffectUpdateBase")}static[xp]="SQLiteEffectUpdate";config;from(t){return this.config.from=t,this}createJoin(t){return((n,o)=>{let i=mp(n);if(typeof i=="string"&&this.config.joins.some(s=>s.alias===i))throw new Error(`Alias "${i}" is already used in this query`);if(typeof o=="function"){let s=this.config.from?Ed(n,BS)?Dt(n):Ed(n,KS)?n._.selectedFields:Ed(n,HS)?Jo(n).selectedFields:void 0:void 0;o=o(new Proxy(this.config.table._.columns,new xd({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})),s&&new Proxy(s,new xd({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))}return this.config.joins.push({on:o,table:n,joinType:t,alias:i}),this})}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");where(t){return this.config.where=t,this}orderBy(...t){if(typeof t[0]=="function"){let n=t[0](new Proxy(Dt(this.config.table),new xd({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));return this.config.orderBy=Array.isArray(n)?n:[n],this}return this.config.orderBy=t,this}limit(t){return this.config.limit=t,this}returning(t=Dt(this.config.table)){return this.config.returning=or(t),this}getSQL(){return this.effectDialect.buildUpdateQuery(this.config)}toSQL(){return this.effectDialect.sqlToQuery(this.getSQL())}_prepare(t=!0){return this.effectSession[t?"prepareOneTimeQuery":"prepareQuery"](this.effectDialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",void 0,{type:"update",tables:US(this.config.table)})}prepare(){return this._prepare(!1)}run=r(t=>this._prepare().run(t),"run");all=r(t=>this._prepare().all(t),"all");get=r(t=>this._prepare().get(t),"get");values=r(t=>this._prepare().values(t),"values");execute=r(t=>this._prepare().execute(t),"execute");$dynamic(){return this}};FS(Oa);var to=class{constructor(t,n,o,i,s){this.dialect=t;this.session=n;this.rowModeRQB=i;this.forbidJsonb=s;this._={relations:o,session:n},this.query={};for(let[d,p]of Object.entries(o))this.query[d]=new Ma(o,o[p.name].table,p,t,n,i,s);this.$cache={invalidate:r(d=>zS.void,"invalidate")}}dialect;session;rowModeRQB;forbidJsonb;static{r(this,"SQLiteEffectDatabase")}static[jS]="SQLiteEffectDatabase";query;$with=r((t,n)=>{let o=this;return{as:r(s=>(typeof s=="function"&&(s=s(new WS(o.dialect))),new Proxy(new GS(s.getSQL(),n??("getSelectedFields"in s?s.getSelectedFields()??{}:{}),t,!0),new VS({alias:t,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))),"as")}},"$with");$cache;$count(t,n){return new Wo({source:t,filters:n,session:this.session})}with(...t){let n=this;function o(c){return new hn({fields:c??void 0,session:n.session,dialect:n.dialect,withList:t})}r(o,"select");function i(c){return new hn({fields:c??void 0,session:n.session,dialect:n.dialect,withList:t,distinct:!0})}r(i,"selectDistinct");function s(c){return new ti(c,n.session,n.dialect,t)}r(s,"update");function d(c){return new Yo(c,n.session,n.dialect,t)}r(d,"insert");function p(c){return new eo(c,n.session,n.dialect,t)}return r(p,"delete_"),{select:o,selectDistinct:i,update:s,insert:d,delete:p}}select(t){return new hn({fields:t??void 0,session:this.session,dialect:this.dialect})}selectDistinct(t){return new hn({fields:t??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(t){return new ti(t,this.session,this.dialect)}insert(t){return new Yo(t,this.session,this.dialect)}delete(t){return new eo(t,this.session,this.dialect)}raw(t,n,o){let i=typeof t=="string"?$S.raw(t):t.getSQL();return new ei(()=>o(i),()=>i,n,this.dialect,s=>s)}run(t){return this.raw(t,"run",n=>this.session.run(n))}all(t){return this.raw(t,"all",n=>this.session.all(n))}get(t){return this.raw(t,"get",n=>this.session.get(n))}values(t){return this.raw(t,"values",n=>this.session.values(n))}transaction=r((t,n)=>this.session.transaction(t,n),"transaction")};import*as Fa from"effect/Context";import*as re from"effect/Effect";import*as Ba from"effect/Exit";import*as xn from"effect/Scope";import{entityKind as Ap}from"drizzle-orm/entity";import*as Cp from"effect/Cause";import*as Be from"effect/Effect";import{NoopCache as eh,strategyFor as th}from"drizzle-orm/cache/core/cache";import{MigratorInitError as Ip}from"drizzle-orm/effect-core/errors";import{EffectDrizzleQueryError as rh,EffectTransactionRollbackError as nh}from"drizzle-orm/effect-core/errors";import{entityKind as Rd,is as oh}from"drizzle-orm/entity";import{getMigrationsToRun as ih}from"drizzle-orm/migrator.utils";import{makeJitRqbMapper as vp}from"drizzle-orm/relations";import{fillPlaceholders as ah,sql as Lr}from"drizzle-orm/sql/sql";import*as En from"effect/Effect";import{EffectDrizzleError as Rp}from"drizzle-orm/effect-core/errors";import{sql as ri}from"drizzle-orm/sql/sql";import{sql as Wt}from"drizzle-orm/sql/sql";var Td={sqlite:1,pg:1,effect:1,mysql:1,mssql:1,cockroach:1,singlestore:1},bd={mysql:r(e=>e.includes("name")?1:0,"mysql"),pg:r(e=>e.includes("name")?1:0,"pg"),effect:r(e=>e.includes("name")?1:0,"effect"),mssql:r(e=>e.includes("name")?1:0,"mssql"),cockroach:r(e=>e.includes("name")?1:0,"cockroach"),singlestore:r(e=>e.includes("name")?1:0,"singlestore"),sqlite:r(e=>e.includes("name")?1:0,"sqlite")};function JS(e){return new Error(`While upgrading your database migrations table we found ${e.length} (${e.map(t=>`[id: ${t.id}, created_at: ${t.created_at}]`).join(", ")}) migrations in the database that do not match any local migration. This means that some migrations were applied to the database but are missing from the local environment`)}r(JS,"unmatchedMigrationError");function Tp(e,t){let n=[...t].sort((p,c)=>p.folderMillis!==c.folderMillis?p.folderMillis-c.folderMillis:(p.name??"").localeCompare(c.name??"")),o=new Map,i=new Map;for(let p of n)o.has(p.folderMillis)||o.set(p.folderMillis,[]),o.get(p.folderMillis).push(p),i.set(p.hash,p);let s=[],d=[];for(let p of e){let c=String(p.created_at),y=+(c.substring(0,c.length-3)+"000"),g=o.get(y),m=g?.length===1?g[0]:void 0,f=g&&g.length>1?g.find(D=>D.hash&&p.hash&&D.hash===p.hash):void 0,l=m||f?void 0:i.get(p.hash),L=m??f??l;if(L){s.push({name:L.name,selector:p.id!==null?{column:"id",value:p.id}:m?{column:"created_at",value:p.created_at}:{column:"hash",value:p.hash}});continue}d.push(p)}if(d.length>0)throw JS(d);return s}r(Tp,"prepareSQLiteMigrationBackfill");function bp(e,t){let n=Wt`${Wt.identifier(e)}`,o=[Wt`ALTER TABLE ${n} ADD COLUMN ${Wt.identifier("name")} text`,Wt`ALTER TABLE ${n} ADD COLUMN ${Wt.identifier("applied_at")} TEXT`];for(let i of t){let s=Wt`UPDATE ${n} SET ${Wt.identifier("name")} = ${i.name}, ${Wt.identifier("applied_at")} = NULL WHERE`;s.append(Wt` ${Wt.identifier(i.selector.column)} = ${i.selector.value}`),o.push(s)}return o}r(bp,"buildSQLiteMigrationBackfillStatements");var YS=r(e=>new Rp({message:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:String(e),cause:e}),"migrationUpgradeError"),Lp=En.fn("upgradeIfNeeded")(function*(e,t,n){if((yield*t.all(ri`SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ${e}`)).length===0)return{newDb:!0};let i=yield*t.all(ri`SELECT name as column_name FROM pragma_table_info(${e})`),s=bd.sqlite(i.map(d=>d.column_name));for(let d=s;d<Td.sqlite;d++){let p=XS[d];if(!p)return yield*new Rp({message:`No upgrade path from migration table version ${d} to ${d+1}`,cause:{version:d}});yield*p(e,t,n)}return{newDb:!1}}),XS={0:ZS};function ZS(e,t,n){return En.gen(function*(){let o=ri`${ri.identifier(e)}`,i=yield*t.all(ri`SELECT id, hash, created_at FROM ${o} ORDER BY id ASC`),s=yield*En.try({try:r(()=>bp(e,Tp(i,n)),"try"),catch:YS});yield*t.transaction(d=>En.gen(function*(){for(let p of s)yield*d.run(p)}))})}r(ZS,"upgradeFromV0");import{assertUnreachable as sh,makeJitQueryMapper as Dp}from"drizzle-orm/utils";var ni=class{constructor(t,n,o,i,s,d,p,c,y,g,m,f,l=Be.succeed(!1)){this.executor=t;this.query=n;this.logger=o;this.cache=i;this.queryMetadata=s;this.fields=p;this.useJitMappers=y;this.customResultMapper=g;this.isRqbV2Query=m;this.rqbConfig=f;this.isInTransaction=l;this.effectExecuteMethod=c,this.cacheConfig=i.strategy()==="all"&&d===void 0?{enabled:!0,autoInvalidate:!0}:d,this.cacheConfig?.enabled||(this.cacheConfig=void 0)}executor;query;logger;cache;queryMetadata;fields;useJitMappers;customResultMapper;isRqbV2Query;rqbConfig;isInTransaction;static{r(this,"SQLiteEffectPreparedQuery")}static[Rd]="SQLiteEffectPreparedQuery";joinsNotNullableMap;jitMapper;cacheConfig;effectExecuteMethod;run(t){return this.executeWithCache(t,"run")}all(t){return this.isRqbV2Query?this.allRqbV2(t):!this.fields&&!this.customResultMapper?this.executeWithCache(t,"all"):this.executeWithCache(t,"values",n=>this.mapAllResult(n))}get(t){return this.isRqbV2Query?this.getRqbV2(t):!this.fields&&!this.customResultMapper?this.executeWithCache(t,"get"):this.executeWithCache(t,"values",n=>this.mapGetResult(n))}values(t){return this.executeWithCache(t,"values")}execute(t){return this[this.effectExecuteMethod](t)}mapRunResult(t,n){return t}mapAllResult(t,n){return n&&(t=Array.isArray(t)?t:[]),!this.fields&&!this.customResultMapper?t:this.isRqbV2Query?this.useJitMappers?(this.jitMapper=this.jitMapper??vp(this.rqbConfig))(t):this.customResultMapper(t):this.customResultMapper?this.customResultMapper(t):this.useJitMappers?(this.jitMapper=this.jitMapper??Dp(this.fields,this.joinsNotNullableMap))(t):t.map(o=>Sd(this.fields,o,this.joinsNotNullableMap))}mapGetResult(t,n){if(n&&(t=Array.isArray(t)?t:[]),!this.fields&&!this.customResultMapper)return Array.isArray(t)?t[0]:t;let o=Array.isArray(t)?t[0]:t;if(o)return this.isRqbV2Query?this.useJitMappers?(this.jitMapper=this.jitMapper??vp(this.rqbConfig))([o]):this.customResultMapper([o]):this.customResultMapper?this.customResultMapper([o]):this.useJitMappers?(this.jitMapper=this.jitMapper??Dp(this.fields,this.joinsNotNullableMap))([o])[0]:Sd(this.fields,o,this.joinsNotNullableMap)}allRqbV2(t){return this.executeWithCache(t,"all",n=>this.mapAllResult(n))}getRqbV2(t){return this.executeWithCache(t,"get",n=>n===void 0?void 0:this.mapGetResult(n))}executeWithCache(t,n,o){return Be.gen({self:this},function*(){let i=ah(this.query.params,t??{});return yield*this.logger.logQuery(this.query.sql,i),yield*this.queryWithCache(this.query.sql,i,Be.suspend(()=>this.executor(i,n)),o)})}mapCachedResult(t,n){return n?Be.try({try:r(()=>n(t),"try"),catch:r(o=>o,"catch")}):Be.succeed(t)}queryWithCache(t,n,o,i){return Be.gen({self:this},function*(){if(this.queryMetadata?.type==="select"&&this.cacheConfig?.enabled&&(yield*this.isInTransaction))return yield*this.mapCachedResult(yield*o,i);let s=oh(this.cache.cache,eh)?{type:"skip"}:yield*Be.tryPromise(()=>th(t,n,this.queryMetadata,this.cacheConfig));if(s.type==="skip")return yield*this.mapCachedResult(yield*o,i);if(s.type==="invalidate"){let d=yield*o;return yield*this.cache.onMutate({tables:s.tables}),yield*this.mapCachedResult(d,i)}if(s.type==="try"){if(yield*this.isInTransaction)return yield*this.mapCachedResult(yield*o,i);let{tables:d,key:p,isTag:c,autoInvalidate:y,config:g}=s,m=yield*this.cache.get(p,d,c,y);if(typeof m<"u")return yield*this.mapCachedResult(m,i);let f=yield*o;return yield*this.cache.put(p,f,y?d:[],c,g),yield*this.mapCachedResult(f,i)}sh(s)}).pipe(Be.catch(s=>Be.fail(new rh({query:t,params:n,cause:Cp.fail(s)}))))}getQuery(){return this.query}mapResult(t,n){switch(this.effectExecuteMethod){case"run":return this.mapRunResult(t,n);case"all":return this.mapAllResult(t,n);case"get":return this.mapGetResult(t,n)}}},Qa=class{constructor(t){this.dialect=t}dialect;static{r(this,"SQLiteEffectSession")}static[Rd]="SQLiteEffectSession";prepareOneTimeQuery(t,n,o,i,s,d){return this.prepareQuery(t,n,o,i,s,d)}prepareOneTimeRelationalQuery(t,n,o,i,s){return this.prepareRelationalQuery(t,n,o,i,s)}run(t){return this.prepareQuery(this.dialect.sqlToQuery(t),void 0,"run").run()}all(t){return this.prepareQuery(this.dialect.sqlToQuery(t),void 0,"all").all()}get(t){return this.prepareQuery(this.dialect.sqlToQuery(t),void 0,"get").get()}values(t){return this.prepareQuery(this.dialect.sqlToQuery(t),void 0,"all").values()}count(t){return this.values(t).pipe(Be.map(n=>n[0]?.[0]??0))}},Na=class extends to{constructor(n,o,i){super(n,o,i);this.relations=i}relations;static{r(this,"SQLiteEffectTransaction")}static[Rd]="SQLiteEffectTransaction";rollback(){return new nh}},wp=Be.fn("migrate")(function*(e,t,n){let o=typeof n=="string"?"__drizzle_migrations":n.migrationsTable??"__drizzle_migrations",{newDb:i}=yield*Lp(o,t,e);i&&(yield*t.run(Lr`
|
|
15
|
-
CREATE TABLE IF NOT EXISTS ${Lr.identifier(o)} (
|
|
16
|
-
id INTEGER PRIMARY KEY,
|
|
17
|
-
hash text NOT NULL,
|
|
18
|
-
created_at numeric,
|
|
19
|
-
name text,
|
|
20
|
-
applied_at TEXT
|
|
21
|
-
)
|
|
22
|
-
`));let s=yield*t.all(Lr`SELECT id, hash, created_at, name FROM ${Lr.identifier(o)}`);if(typeof n=="object"&&n.init){if(s.length)return yield*new Ip({exitCode:"databaseMigrations"});if(e.length>1)return yield*new Ip({exitCode:"localMigrations"});let[p]=e;if(!p)return;yield*t.run(Lr`insert into ${Lr.identifier(o)} ("hash", "created_at", "name", "applied_at") values(${p.hash}, ${p.folderMillis}, ${p.name}, ${new Date().toISOString()})`);return}let d=ih({localMigrations:e,dbMigrations:s});d.length!==0&&(yield*t.transaction(p=>Be.gen(function*(){for(let c of d){for(let y of c.sql)yield*p.run(Lr.raw(y));yield*p.run(Lr`insert into ${Lr.identifier(o)} ("hash", "created_at", "name", "applied_at") values(${c.hash}, ${c.folderMillis}, ${c.name}, ${new Date().toISOString()})`)}})))});var oi=class extends Qa{constructor(n,o,i,s){super(o);this.client=n;this.relations=i;this.options=s}client;relations;options;static{r(this,"EffectSQLiteSession")}static[Ap]="EffectSQLiteSession";prepareQuery(n,o,i,s,d,p){return new ni((c,y)=>this.execute(n,c,y),n,this.options.logger,this.options.cache,d,p,o,i,this.options.useJitMappers,s,void 0,void 0,this.isInTransaction())}prepareRelationalQuery(n,o,i,s,d){return new ni((p,c)=>this.execute(n,p,c),n,this.options.logger,this.options.cache,void 0,void 0,o,i,this.options.useJitMappers,s,!0,d,this.isInTransaction())}execute(n,o,i){let s=this.client.unsafe(n.sql,o);return i==="values"?s.values:i==="get"?s.withoutTransform.pipe(re.map(d=>d[0])):s.withoutTransform}isInTransaction(){return re.serviceOption(this.client.transactionService).pipe(re.map(n=>n._tag==="Some"))}executeTransactionStatement(n,o){return n.executeUnprepared(o,[],void 0).pipe(re.asVoid)}withTransaction(n,o){return re.uninterruptibleMask(i=>re.withFiber(s=>{let d=s.context,p=Fa.getOption(d,this.client.transactionService),c=p._tag==="Some"?re.succeed([void 0,p.value[0]]):xn.make().pipe(re.flatMap(g=>xn.provide(this.client.reserve,g).pipe(re.map(m=>[g,m]),re.catch(m=>xn.close(g,Ba.fail(m)).pipe(re.andThen(re.fail(m))))))),y=p._tag==="Some"?p.value[1]+1:0;return c.pipe(re.flatMap(([g,m])=>{let f=this.executeTransactionStatement(m,y===0?`begin ${o?.behavior??"deferred"}`:`savepoint effect_sql_${y}`).pipe(re.flatMap(()=>re.provideContext(i(n),Fa.add(d,this.client.transactionService,[m,y])).pipe(re.exit,re.flatMap(l=>(Ba.isSuccess(l)?y===0?this.executeTransactionStatement(m,"commit").pipe(re.catch(D=>this.executeTransactionStatement(m,"rollback").pipe(re.catch(()=>re.void),re.andThen(re.fail(D))))):this.executeTransactionStatement(m,`release savepoint effect_sql_${y}`):y===0?this.executeTransactionStatement(m,"rollback"):this.executeTransactionStatement(m,`rollback to savepoint effect_sql_${y}`).pipe(re.andThen(this.executeTransactionStatement(m,`release savepoint effect_sql_${y}`)))).pipe(re.flatMap(()=>l))))));return g===void 0?f:f.pipe(re.onExit(l=>xn.close(g,l)))}))}))}transaction(n,o){let{dialect:i,relations:s}=this;return this.withTransaction(re.gen({self:this},function*(){let d=new qa(i,this,s);return yield*n(d)}),o)}},qa=class extends Na{static{r(this,"EffectSQLiteTransaction")}static[Ap]="EffectSQLiteTransaction";transaction=r(t=>this.session.transaction(t),"transaction")};var Ua=class extends to{static{r(this,"EffectSQLiteDatabase")}static[ch]="EffectSQLiteDatabase"},_p=Pp.merge(kp.Default,Mp.Default),Op=Ha.fn("SQLiteDrizzle.make")(function*(e={}){let t=yield*dh,n=yield*kp,o=yield*Mp,i=new lh,s=e.relations??{},d=new oi(t,i,s,{logger:o,cache:n,useJitMappers:up(e.jit)}),p=new Ua(i,d,s);return p.$client=t,p.$cache.invalidate=n.onMutate,p}),ph=r((e={})=>Op(e).pipe(Ha.provide(_p)),"makeWithDefaults");import{readMigrationFiles as fh}from"drizzle-orm/migrator";function Qp(e,t){let n=fh(t);return wp(n,e.session,t)}r(Qp,"migrate");import{DatabaseSync as mh}from"node:sqlite";import{drizzle as yh}from"drizzle-orm/node-sqlite";import*as ai from"effect/Context";import*as ge from"effect/Effect";import*as Fp from"effect/Fiber";import{identity as gh}from"effect/Function";import*as ir from"effect/Layer";import*as Ka from"effect/Scope";import*as Bp from"effect/Semaphore";import*as Up from"effect/Stream";import*as Hp from"effect/unstable/reactivity/Reactivity";import*as Tn from"effect/unstable/sql/SqlClient";import{classifySqliteError as vd,SqlError as Dd}from"effect/unstable/sql/SqlError";import*as za from"effect/unstable/sql/Statement";var Br={};Q(Br,{Drizzle:()=>Id,Native:()=>Ld,Sqlite:()=>Br});import{Context as Np}from"effect";var Ld=class extends Np.Service()("@opencode-ai/core/database/SqliteNative"){static{r(this,"Native")}},Id=class extends Np.Service()("@opencode-ai/core/database/SqliteDrizzle"){static{r(this,"Drizzle")}};var Sh="db.system.name",qp="~@opencode-ai/core/database/SqliteNode",hh=r(e=>ge.gen(function*(){let t=yield*Br.Native,n=za.makeCompilerSqlite(e.transformQueryNames),o=e.transformResultNames?za.defaultTransforms(e.transformResultNames).array:void 0,i=r((m,f=[])=>ge.withFiber(l=>{let L=t.prepare(m);L.setReadBigInts(ai.get(l.context,Tn.SafeIntegers));try{return ge.succeed(L.all(...f))}catch(D){return ge.fail(new Dd({reason:vd(D,{message:"Failed to execute statement",operation:"execute"})}))}}),"run"),s=r((m,f=[])=>ge.withFiber(l=>{let L=t.prepare(m);L.setReadBigInts(ai.get(l.context,Tn.SafeIntegers)),L.setReturnArrays(!0);try{return ge.succeed(L.all(...f))}catch(D){return ge.fail(new Dd({reason:vd(D,{message:"Failed to execute statement",operation:"execute"})}))}}),"runValues"),d=gh({execute(m,f,l){return l?ge.map(i(m,f),l):i(m,f)},executeRaw(m,f){return i(m,f)},executeValues(m,f){return s(m,f)},executeUnprepared(m,f,l){return this.execute(m,f,l)},executeStream(){return Up.die("executeStream not implemented")},loadExtension:r(m=>ge.try({try:r(()=>t.loadExtension(m),"try"),catch:r(f=>new Dd({reason:vd(f,{message:"Failed to load extension",operation:"loadExtension"})}),"catch")}),"loadExtension")}),p=yield*Bp.make(1),c=p.withPermits(1)(ge.succeed(d)),y=ge.uninterruptibleMask(m=>{let f=Fp.getCurrent(),l=ai.getUnsafe(f.context,Ka.Scope);return ge.as(ge.tap(m(p.take(1)),()=>Ka.addFinalizer(l,p.release(1))),d)});return Object.assign(yield*Tn.make({acquirer:c,compiler:n,transactionAcquirer:y,spanAttributes:[...e.spanAttributes?Object.entries(e.spanAttributes):[],[Sh,"sqlite"]],transformRows:o}),{[qp]:qp,config:e,loadExtension:r(m=>ge.flatMap(c,f=>f.loadExtension(m)),"loadExtension")})}),"make"),Eh=r(e=>ir.effect(Br.Native,ge.gen(function*(){let t=new mh(e.filename,{readOnly:e.readonly,timeout:e.timeout,allowExtension:e.allowExtension,enableForeignKeyConstraints:!0,open:!0});return yield*ge.addFinalizer(()=>ge.sync(()=>t.close())),e.disableWAL!==!0&&e.readonly!==!0&&t.exec("PRAGMA journal_mode = WAL;"),t})),"nativeLayer"),xh=r(e=>ir.effect(Tn.SqlClient,hh(e)),"sqliteLayer"),Th=ir.effect(Br.Drizzle,ge.gen(function*(){return yh({client:yield*Br.Native})})),Kp=r(e=>{let t=Eh(e);return ir.merge(t,ir.merge(xh(e),Th).pipe(ir.provide(t))).pipe(ir.provide(Hp.layer))},"layer");import{Context as vh,Effect as Vp,Layer as $p}from"effect";import{isAbsolute as Dh,join as wd}from"path";var si={};Q(si,{DatabaseMigration:()=>si,apply:()=>Ih,applyOnly:()=>jp});import{sql as Fe}from"drizzle-orm";import{Effect as bn,Semaphore as Rh}from"effect";var Cd=(await Promise.all([import("./20260127222353_familiar_lady_ursula-KV747FJX.js"),import("./20260211171708_add_project_commands-GDOHPDPF.js"),import("./20260213144116_wakeful_the_professor-ZVDD54AK.js"),import("./20260225215848_workspace-ZMSOZSPA.js"),import("./20260227213759_add_session_workspace_id-ROENWPKA.js"),import("./20260228203230_blue_harpoon-IW3Z4TQZ.js"),import("./20260303231226_add_workspace_fields-OUVZMNAG.js"),import("./20260309230000_move_org_to_state-NOXAPU5V.js"),import("./20260312043431_session_message_cursor-DJ4T3T4R.js"),import("./20260323234822_events-72GIKJ2A.js"),import("./20260410174513_workspace-name-JXSWFBJN.js"),import("./20260413175956_chief_energizer-4HEWZ6U3.js"),import("./20260423070820_add_icon_url_override-X5SHFGTI.js"),import("./20260427172553_slow_nightmare-PS5T2AH2.js"),import("./20260428004200_add_session_path-LGW75WYA.js"),import("./20260501142318_next_venus-J3TLVXZ6.js"),import("./20260504145000_add_sync_owner-3R52GB4C.js"),import("./20260507164347_add_workspace_time-JHDRCZAR.js"),import("./20260510033149_session_usage-UGBVOXZB.js"),import("./20260511000411_data_migration_state-FB4LBFSE.js"),import("./20260511173437_session-metadata-T2XHGWHS.js"),import("./20260601010001_normalize_storage_paths-5MAY5GT3.js"),import("./20260601202201_amazing_prowler-PET224YG.js"),import("./20260602002951_lowly_union_jack-PG6XDMGL.js"),import("./20260602182828_add_project_directories-ZCH2ACGG.js"),import("./20260603001617_session_message_projection_indexes-XVLJTUF2.js"),import("./20260603040000_session_message_projection_order-XG6RACZQ.js"),import("./20260603141458_session_input_inbox-K2VQ7V6E.js"),import("./20260603160727_jittery_ezekiel_stane-WKJLRDO7.js"),import("./20260604172448_event_sourced_session_input-NTXOECR7.js"),import("./20260605003541_add_session_context_snapshot-DXMQEXMT.js"),import("./20260605042240_add_context_epoch_agent-W6IQYZXE.js"),import("./20260611035744_credential-XTMSYTJD.js"),import("./20260611192811_lush_chimera-XPLIQMJD.js"),import("./20260612174303_project_dir_strategy-FR2NGQKK.js"),import("./20260622142730_simplify_session_context_epoch-NTQZR3RE.js"),import("./20260622170816_reset_v2_session_state-5JPHJTZG.js"),import("./20260622202450_simplify_session_input-2EXF2HMV.js")])).map(e=>e.default);import{Effect as bh}from"effect";var zp={up(e){return bh.gen(function*(){yield*e.run("\n CREATE TABLE `workspace` (\n `id` text PRIMARY KEY,\n `type` text NOT NULL,\n `name` text DEFAULT '' NOT NULL,\n `branch` text,\n `directory` text,\n `extra` text,\n `project_id` text NOT NULL,\n `time_used` integer NOT NULL,\n CONSTRAINT `fk_workspace_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `data_migration` (\n `name` text PRIMARY KEY,\n `time_completed` integer NOT NULL\n );\n "),yield*e.run("\n CREATE TABLE `account_state` (\n `id` integer PRIMARY KEY,\n `active_account_id` text,\n `active_org_id` text,\n CONSTRAINT `fk_account_state_active_account_id_account_id_fk` FOREIGN KEY (`active_account_id`) REFERENCES `account`(`id`) ON DELETE SET NULL\n );\n "),yield*e.run("\n CREATE TABLE `account` (\n `id` text PRIMARY KEY,\n `email` text NOT NULL,\n `url` text NOT NULL,\n `access_token` text NOT NULL,\n `refresh_token` text NOT NULL,\n `token_expiry` integer,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL\n );\n "),yield*e.run("\n CREATE TABLE `control_account` (\n `email` text NOT NULL,\n `url` text NOT NULL,\n `access_token` text NOT NULL,\n `refresh_token` text NOT NULL,\n `token_expiry` integer,\n `active` integer NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n CONSTRAINT `control_account_pk` PRIMARY KEY(`email`, `url`)\n );\n "),yield*e.run("\n CREATE TABLE `credential` (\n `id` text PRIMARY KEY,\n `integration_id` text,\n `label` text NOT NULL,\n `value` text NOT NULL,\n `connector_id` text,\n `method_id` text,\n `active` integer,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL\n );\n "),yield*e.run("\n CREATE TABLE `event_sequence` (\n `aggregate_id` text PRIMARY KEY,\n `seq` integer NOT NULL,\n `owner_id` text\n );\n "),yield*e.run("\n CREATE TABLE `event` (\n `id` text PRIMARY KEY,\n `aggregate_id` text NOT NULL,\n `seq` integer NOT NULL,\n `type` text NOT NULL,\n `data` text NOT NULL,\n CONSTRAINT `fk_event_aggregate_id_event_sequence_aggregate_id_fk` FOREIGN KEY (`aggregate_id`) REFERENCES `event_sequence`(`aggregate_id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `permission` (\n `id` text PRIMARY KEY,\n `project_id` text NOT NULL,\n `action` text NOT NULL,\n `resource` text NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n CONSTRAINT `fk_permission_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `project_directory` (\n `project_id` text NOT NULL,\n `directory` text NOT NULL,\n `type` text,\n `strategy` text,\n `time_created` integer NOT NULL,\n CONSTRAINT `project_directory_pk` PRIMARY KEY(`project_id`, `directory`),\n CONSTRAINT `fk_project_directory_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `project` (\n `id` text PRIMARY KEY,\n `worktree` text NOT NULL,\n `vcs` text,\n `name` text,\n `icon_url` text,\n `icon_url_override` text,\n `icon_color` text,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n `time_initialized` integer,\n `sandboxes` text NOT NULL,\n `commands` text\n );\n "),yield*e.run("\n CREATE TABLE `message` (\n `id` text PRIMARY KEY,\n `session_id` text NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n `data` text NOT NULL,\n CONSTRAINT `fk_message_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `part` (\n `id` text PRIMARY KEY,\n `message_id` text NOT NULL,\n `session_id` text NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n `data` text NOT NULL,\n CONSTRAINT `fk_part_message_id_message_id_fk` FOREIGN KEY (`message_id`) REFERENCES `message`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `session_context_epoch` (\n `session_id` text PRIMARY KEY,\n `baseline` text NOT NULL,\n `snapshot` text NOT NULL,\n `baseline_seq` integer NOT NULL,\n CONSTRAINT `fk_session_context_epoch_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `session_input` (\n `id` text PRIMARY KEY,\n `session_id` text NOT NULL,\n `prompt` text NOT NULL,\n `delivery` text NOT NULL,\n `admitted_seq` integer NOT NULL,\n `promoted_seq` integer,\n `time_created` integer NOT NULL,\n CONSTRAINT `fk_session_input_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `session_message` (\n `id` text PRIMARY KEY,\n `session_id` text NOT NULL,\n `type` text NOT NULL,\n `seq` integer NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n `data` text NOT NULL,\n CONSTRAINT `fk_session_message_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `session` (\n `id` text PRIMARY KEY,\n `project_id` text NOT NULL,\n `workspace_id` text,\n `parent_id` text,\n `slug` text NOT NULL,\n `directory` text NOT NULL,\n `path` text,\n `title` text NOT NULL,\n `version` text NOT NULL,\n `share_url` text,\n `summary_additions` integer,\n `summary_deletions` integer,\n `summary_files` integer,\n `summary_diffs` text,\n `metadata` text,\n `cost` real DEFAULT 0 NOT NULL,\n `tokens_input` integer DEFAULT 0 NOT NULL,\n `tokens_output` integer DEFAULT 0 NOT NULL,\n `tokens_reasoning` integer DEFAULT 0 NOT NULL,\n `tokens_cache_read` integer DEFAULT 0 NOT NULL,\n `tokens_cache_write` integer DEFAULT 0 NOT NULL,\n `revert` text,\n `permission` text,\n `agent` text,\n `model` text,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n `time_compacting` integer,\n `time_archived` integer,\n CONSTRAINT `fk_session_project_id_project_id_fk` FOREIGN KEY (`project_id`) REFERENCES `project`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `todo` (\n `session_id` text NOT NULL,\n `content` text NOT NULL,\n `status` text NOT NULL,\n `priority` text NOT NULL,\n `position` integer NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n CONSTRAINT `todo_pk` PRIMARY KEY(`session_id`, `position`),\n CONSTRAINT `fk_todo_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("\n CREATE TABLE `session_share` (\n `session_id` text PRIMARY KEY,\n `id` text NOT NULL,\n `secret` text NOT NULL,\n `url` text NOT NULL,\n `time_created` integer NOT NULL,\n `time_updated` integer NOT NULL,\n CONSTRAINT `fk_session_share_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE\n );\n "),yield*e.run("CREATE UNIQUE INDEX `event_aggregate_seq_idx` ON `event` (`aggregate_id`,`seq`);"),yield*e.run("CREATE INDEX `event_aggregate_type_seq_idx` ON `event` (`aggregate_id`,`type`,`seq`);"),yield*e.run("CREATE UNIQUE INDEX `permission_project_action_resource_idx` ON `permission` (`project_id`,`action`,`resource`);"),yield*e.run("CREATE INDEX `message_session_time_created_id_idx` ON `message` (`session_id`,`time_created`,`id`);"),yield*e.run("CREATE INDEX `part_message_id_id_idx` ON `part` (`message_id`,`id`);"),yield*e.run("CREATE INDEX `part_session_idx` ON `part` (`session_id`);"),yield*e.run("CREATE INDEX `session_input_session_pending_delivery_seq_idx` ON `session_input` (`session_id`,`promoted_seq`,`delivery`,`admitted_seq`);"),yield*e.run("CREATE UNIQUE INDEX `session_input_session_admitted_seq_idx` ON `session_input` (`session_id`,`admitted_seq`);"),yield*e.run("CREATE UNIQUE INDEX `session_input_session_promoted_seq_idx` ON `session_input` (`session_id`,`promoted_seq`);"),yield*e.run("CREATE UNIQUE INDEX `session_message_session_seq_idx` ON `session_message` (`session_id`,`seq`);"),yield*e.run("CREATE INDEX `session_message_session_type_seq_idx` ON `session_message` (`session_id`,`type`,`seq`);"),yield*e.run("CREATE INDEX `session_message_session_time_created_id_idx` ON `session_message` (`session_id`,`time_created`,`id`);"),yield*e.run("CREATE INDEX `session_message_time_created_idx` ON `session_message` (`time_created`);"),yield*e.run("CREATE INDEX `session_project_idx` ON `session` (`project_id`);"),yield*e.run("CREATE INDEX `session_workspace_idx` ON `session` (`workspace_id`);"),yield*e.run("CREATE INDEX `session_parent_idx` ON `session` (`parent_id`);"),yield*e.run("CREATE INDEX `todo_session_idx` ON `todo` (`session_id`);")})}};var Lh=Rh.makeUnsafe(1);function Ih(e){return Lh.withPermit(bn.gen(function*(){let t=yield*e.all(Fe`SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'`);if(t.some(n=>n.name==="session"))return yield*jp(e,Cd);if(t.length>0)return yield*bn.die("Database is not empty and has no session table");yield*e.transaction(n=>bn.gen(function*(){yield*zp.up(n),yield*n.run(Fe`CREATE TABLE ${Fe.identifier("migration")} (id TEXT PRIMARY KEY, time_completed INTEGER NOT NULL)`),yield*bn.forEach(Cd,o=>n.run(Fe`INSERT INTO ${Fe.identifier("migration")} (id, time_completed) VALUES (${o.id}, ${Date.now()})`))}))}))}r(Ih,"apply");function jp(e,t){return bn.gen(function*(){yield*e.run(Fe`CREATE TABLE IF NOT EXISTS ${Fe.identifier("migration")} (id TEXT PRIMARY KEY, time_completed INTEGER NOT NULL)`);let n=new Set((yield*e.all(Fe`SELECT id FROM ${Fe.identifier("migration")}`)).map(o=>o.id));if(n.size===0&&(yield*e.get(Fe`SELECT name FROM sqlite_master WHERE type = 'table' AND name = ${"__drizzle_migrations"}`))){let o=(yield*e.all(Fe`SELECT name FROM pragma_table_info('__drizzle_migrations')`)).some(i=>i.name==="name");if(o&&(yield*e.run(Fe`
|
|
23
|
-
INSERT OR IGNORE INTO ${Fe.identifier("migration")} (id, time_completed)
|
|
24
|
-
SELECT name, ${Date.now()}
|
|
25
|
-
FROM ${Fe.identifier("__drizzle_migrations")}
|
|
26
|
-
WHERE name IS NOT NULL
|
|
27
|
-
`)),!o){let i=yield*e.all(Fe`
|
|
28
|
-
SELECT created_at, strftime('%Y%m%d%H%M%S', created_at / 1000, 'unixepoch') AS prefix
|
|
29
|
-
FROM ${Fe.identifier("__drizzle_migrations")}
|
|
30
|
-
WHERE created_at IS NOT NULL
|
|
31
|
-
`);for(let s of i){let d=t.find(p=>p.id.startsWith(`${s.prefix}_`));if(!d)return yield*bn.die(new Error(`Legacy migration timestamp ${s.created_at} does not match any known migration`));yield*e.run(Fe`
|
|
32
|
-
INSERT OR IGNORE INTO ${Fe.identifier("migration")} (id, time_completed)
|
|
33
|
-
VALUES (${d.id}, ${Date.now()})
|
|
34
|
-
`)}}n=new Set((yield*e.all(Fe`SELECT id FROM ${Fe.identifier("migration")}`)).map(i=>i.id))}for(let o of t)n.has(o.id)||(yield*e.transaction(i=>bn.gen(function*(){yield*o.up(i),yield*i.run(Fe`INSERT INTO ${Fe.identifier("migration")} (id, time_completed) VALUES (${o.id}, ${Date.now()})`)})))})}r(jp,"applyOnly");var Ch=ii.makeWithDefaults(),di=class extends vh.Service()("@opencode/v2/storage/Database"){static{r(this,"Service")}},wh=$p.effect(di,Vp.gen(function*(){let e=yield*Ch;return yield*e.run("PRAGMA journal_mode = WAL"),yield*e.run("PRAGMA synchronous = NORMAL"),yield*e.run("PRAGMA busy_timeout = 5000"),yield*e.run("PRAGMA cache_size = -64000"),yield*e.run("PRAGMA foreign_keys = ON"),yield*e.run("PRAGMA wal_checkpoint(PASSIVE)"),yield*si.apply(e),{db:e}}).pipe(Vp.orDie));function Wp(e){return wh.pipe($p.provide(Kp({filename:e})))}r(Wp,"layerFromPath");function Gp(){return qr.OPENCODE_DB?qr.OPENCODE_DB===":memory:"||Dh(qr.OPENCODE_DB)?qr.OPENCODE_DB:wd(nr.Path.data,qr.OPENCODE_DB):["latest","beta","prod"].includes(Ca)||process.env.OPENCODE_DISABLE_CHANNEL_DB==="1"||process.env.OPENCODE_DISABLE_CHANNEL_DB==="true"?wd(nr.Path.data,"opencode.db"):wd(nr.Path.data,`opencode-${Ca.replace(/[^a-zA-Z0-9._-]/g,"-")}.db`)}r(Gp,"path");var Ah=Te({service:di,layer:Wp(Gp()),deps:[]});import"effect";import{Effect as Ph}from"effect";var Jp=r(e=>{let t=new Map;return new Proxy({},{get:r((o,i)=>{if(typeof i!="string")return;let s=t.get(i);if(s)return s;let d=r((...p)=>e.use(c=>{let y=c[i];return typeof y!="function"?Ph.die(new Error(`Service method not found: ${i}`)):y(...p)}),"accessor");return t.set(i,d),d},"get")})},"serviceUse");var ic={};Q(ic,{LayerNodePlatform:()=>ic,filesystem:()=>Ci,httpClient:()=>Eu,llmClient:()=>dT,path:()=>oc,requestExecutor:()=>xu});import{NodeFileSystem as rT,NodePath as nT}from"@effect/platform-node";import{Cause as fu,Context as Qx,Effect as cr,Layer as Nx,Schema as ss,Stream as Yr}from"effect";import*as gu from"effect/Option";var Bt={};Q(Bt,{Auth:()=>Bt,MissingCredentialError:()=>vn,apiKey:()=>mE,bearer:()=>wf,bearerHeader:()=>gE,config:()=>dE,custom:()=>fE,effect:()=>cE,header:()=>yE,headers:()=>lE,isAuth:()=>iE,none:()=>Cf,optional:()=>sE,passthrough:()=>uE,remove:()=>pE,toEffect:()=>hE,value:()=>aE});import{Config as Ud,Effect as Ft,Redacted as bi}from"effect";import{Headers as Hd}from"effect/unstable/http";import{Schema as et}from"effect";import{Schema as dt}from"effect";var ne=dt.Record(dt.String,dt.Record(dt.String,dt.Unknown)).annotate({identifier:"LLM.ProviderMetadata"}),Yp=dt.Struct({type:dt.Literal("text"),text:dt.String}).annotate({identifier:"Tool.TextContent"}),Xp=dt.Struct({type:dt.Literal("file"),uri:dt.String,mime:dt.String,name:b(dt.String)}).annotate({identifier:"Tool.FileContent"}),ar=dt.Union([Yp,Xp]).pipe(dt.toTaggedUnion("type")).annotate({identifier:"LLM.ToolContent"});var Zp=et.String,ja=et.String,Va=et.String.pipe(et.brand("LLM.ModelID")),ro=et.String.pipe(et.brand("LLM.ProviderID")),jw=et.String,Ur=et.String,Hr=et.String,Mh=["none","minimal","low","medium","high","xhigh","max"],Vw=et.Literals(Mh),$w=et.Literals(["low","medium","high"]),ef=et.Literals(["system","user","assistant","tool"]),$a=et.Literals(["stop","length","tool-calls","content-filter","error","unknown"]),no=et.Record(et.String,et.Unknown);import{Schema as z}from"effect";var Ir=r(e=>typeof e=="object"&&e!==null&&!Array.isArray(e),"isRecord");var fi=r((...e)=>{let t=e.filter(o=>o!==void 0);if(t.length===0)return;if(t.length===1&&Object.values(t[0]).every(o=>o!==void 0))return t[0];let n={};for(let o of t)for(let[i,s]of Object.entries(o))s!==void 0&&(n[i]=Ir(n[i])&&Ir(s)?fi(n[i],s):s);return Object.keys(n).length===0?void 0:n},"mergeJsonRecords"),tf=r((...e)=>{let t=e.filter(o=>o!==void 0);if(t.length===0)return;if(t.length===1)return t[0];let n=Object.fromEntries(t.flatMap(o=>Object.entries(o).filter(i=>i[1]!==void 0)));return Object.keys(n).length===0?void 0:n},"mergeStringRecords"),Ad=z.Record(z.String,z.Record(z.String,z.Unknown)),Pd=r((...e)=>{let t={};for(let n of e)if(n)for(let[o,i]of Object.entries(n)){let s=fi(t[o],i);s&&(t[o]=s)}return Object.keys(t).length===0?void 0:t},"mergeProviderOptions"),Nt=class extends z.Class("LLM.HttpOptions")({body:z.optional(no),headers:z.optional(z.Record(z.String,z.String)),query:z.optional(z.Record(z.String,z.String))}){static{r(this,"HttpOptions")}};(t=>t.make=r(n=>n instanceof t?n:new t(n),"make"))(Nt||={});var kd=r((...e)=>{let t=fi(...e.map(i=>i?.body)),n=tf(...e.map(i=>i?.headers)),o=tf(...e.map(i=>i?.query));if(!(!t&&!n&&!o))return new Nt({body:t,headers:n,query:o})},"mergeHttpOptions"),qt=class extends z.Class("LLM.GenerationOptions")({maxTokens:z.optional(z.Number),temperature:z.optional(z.Number),topP:z.optional(z.Number),topK:z.optional(z.Number),frequencyPenalty:z.optional(z.Number),presencePenalty:z.optional(z.Number),seed:z.optional(z.Number),stop:z.optional(z.Array(z.String))}){static{r(this,"GenerationOptions")}};(t=>t.make=r((n={})=>n instanceof t?n:new t(n),"make"))(qt||={});var Kr=r((e,t)=>e.findLast(n=>n?.[t]!==void 0)?.[t],"latestGeneration"),Md=r((...e)=>{let t=new qt({maxTokens:Kr(e,"maxTokens"),temperature:Kr(e,"temperature"),topP:Kr(e,"topP"),topK:Kr(e,"topK"),frequencyPenalty:Kr(e,"frequencyPenalty"),presencePenalty:Kr(e,"presencePenalty"),seed:Kr(e,"seed"),stop:Kr(e,"stop")});return Object.values(t).some(n=>n!==void 0)?t:void 0},"mergeGenerationOptions"),zr=class extends z.Class("LLM.ModelLimits")({context:z.optional(z.Number),output:z.optional(z.Number)}){static{r(this,"ModelLimits")}};(t=>t.make=r(n=>n instanceof t?n:new t(n??{}),"make"))(zr||={});var ci=class extends z.Class("LLM.ModelDefaults")({limits:z.optional(zr),generation:z.optional(qt),providerOptions:z.optional(Ad),http:z.optional(Nt)}){static{r(this,"ModelDefaults")}};(t=>t.make=r(n=>n instanceof t?n:new t({limits:n.limits===void 0?void 0:zr.make(n.limits),generation:n.generation===void 0?void 0:qt.make(n.generation),providerOptions:n.providerOptions,http:n.http===void 0?void 0:Nt.make(n.http)}),"make"))(ci||={});var _h=z.Literals(["gemini","moonshot"]),li=class extends z.Class("LLM.ModelCompatibility")({toolSchema:z.optional(_h)}){static{r(this,"ModelCompatibility")}};(t=>t.make=r(n=>n instanceof t?n:new t(n),"make"))(li||={});var pi=class e{static{r(this,"Model")}id;provider;route;defaults;compatibility;constructor(t){this.id=t.id,this.provider=t.provider,this.route=t.route,this.defaults=t.defaults,this.compatibility=t.compatibility}static make(t){return new e({id:Va.make(t.id),provider:ro.make(t.provider),route:t.route,defaults:t.defaults===void 0?void 0:ci.make(t.defaults),compatibility:t.compatibility===void 0?void 0:li.make(t.compatibility)})}static input(t){return{id:t.id,provider:t.provider,route:t.route,defaults:t.defaults,compatibility:t.compatibility}}static update(t,n){return Object.keys(n).length===0?t:e.make({...e.input(t),...n})}},Wa=z.declare(e=>e instanceof pi,{expected:"LLM.Model"}),sr=class extends z.Class("LLM.CacheHint")({type:z.Literals(["ephemeral","persistent"]),ttlSeconds:z.optional(z.Number)}){static{r(this,"CacheHint")}},Oh=z.Struct({tools:z.optional(z.Boolean),system:z.optional(z.Boolean),messages:z.optional(z.Union([z.Literal("latest-user-message"),z.Literal("latest-assistant"),z.Struct({tail:z.Number})])),ttlSeconds:z.optional(z.Number)}),rf=z.Union([z.Literal("auto"),z.Literal("none"),Oh]);import{Schema as S}from"effect";var Qh=S.Struct({type:S.Literal("text"),text:S.String,cache:S.optional(sr),metadata:S.optional(S.Record(S.String,S.Unknown))}).annotate({identifier:"LLM.SystemPart"}),nf=r(e=>({type:"text",text:e}),"makeSystemPart"),Nh=Object.assign(Qh,{make:nf,content:r(e=>e===void 0?[]:typeof e=="string"?[nf(e)]:Array.isArray(e)?[...e]:[e],"content")}),qh=S.Struct({type:S.Literal("text"),text:S.String,cache:S.optional(sr),metadata:S.optional(S.Record(S.String,S.Unknown)),providerMetadata:S.optional(ne)}).annotate({identifier:"LLM.Content.Text"}),Fh=S.Struct({type:S.Literal("media"),mediaType:S.String,data:S.Union([S.String,S.Uint8Array]),filename:S.optional(S.String),metadata:S.optional(S.Record(S.String,S.Unknown))}).annotate({identifier:"LLM.Content.Media"});var of=r(e=>Ir(e)&&(e.type==="text"||e.type==="json"||e.type==="error"||e.type==="content")&&"value"in e,"isToolResultValue"),Ga=Object.assign(S.Union([S.Struct({type:S.Literal("json"),value:S.Unknown}),S.Struct({type:S.Literal("text"),value:S.Unknown}),S.Struct({type:S.Literal("error"),value:S.Unknown}),S.Struct({type:S.Literal("content"),value:S.Array(ar)})]).annotate({identifier:"LLM.ToolResult"}),{is:of,make:r((e,t="json")=>of(e)?e:t==="content"?{type:t,value:Array.isArray(e)?e:[]}:{type:t,value:e},"make")}),_d=Object.assign(S.Struct({structured:S.Unknown,content:S.Array(ar)}).annotate({identifier:"LLM.ToolOutput"}),{make:r((e,t=[])=>({structured:e,content:t}),"make"),fromResultValue:r(e=>{switch(e.type){case"json":return{structured:e.value,content:[]};case"text":return{structured:{},content:[{type:"text",text:Bh(e.value)}]};case"content":return{structured:{},content:e.value};case"error":return}},"fromResultValue"),toResultValue:r(e=>e.content.length===0?{type:"json",value:e.structured}:e.content.length===1&&e.content[0]?.type==="text"?{type:"text",value:e.content[0].text}:{type:"content",value:e.content},"toResultValue")}),Bh=r(e=>{if(typeof e=="string")return e;try{return JSON.stringify(e)??String(e)}catch{return String(e)}},"toolResultText"),Od=Object.assign(S.Struct({type:S.Literal("tool-call"),id:S.String,name:S.String,input:S.Unknown,providerExecuted:S.optional(S.Boolean),metadata:S.optional(S.Record(S.String,S.Unknown)),providerMetadata:S.optional(ne)}).annotate({identifier:"LLM.Content.ToolCall"}),{make:r(e=>({type:"tool-call",...e}),"make")}),Ja=Object.assign(S.Struct({type:S.Literal("tool-result"),id:S.String,name:S.String,result:Ga,providerExecuted:S.optional(S.Boolean),cache:S.optional(sr),metadata:S.optional(S.Record(S.String,S.Unknown)),providerMetadata:S.optional(ne)}).annotate({identifier:"LLM.Content.ToolResult"}),{make:r(e=>({type:"tool-result",id:e.id,name:e.name,result:Ga.make(e.result,e.resultType),providerExecuted:e.providerExecuted,cache:e.cache,metadata:e.metadata,providerMetadata:e.providerMetadata}),"make")}),Uh=S.Struct({type:S.Literal("reasoning"),text:S.String,encrypted:S.optional(S.String),metadata:S.optional(S.Record(S.String,S.Unknown)),providerMetadata:S.optional(ne)}).annotate({identifier:"LLM.Content.Reasoning"}),Hh=S.Union([qh,Fh,Od,Ja,Uh]).pipe(S.toTaggedUnion("type")),Gt=class extends S.Class("LLM.Message")({id:S.optional(S.String),role:ef,content:S.Array(Hh),metadata:S.optional(S.Record(S.String,S.Unknown)),native:S.optional(S.Record(S.String,S.Unknown))}){static{r(this,"Message")}};(p=>(p.text=r(c=>({type:"text",text:c}),"text"),p.content=r(c=>typeof c=="string"?[(0,p.text)(c)]:Array.isArray(c)?[...c]:[c],"content"),p.make=r(c=>c instanceof p?c:new p({...c,content:(0,p.content)(c.content)}),"make"),p.user=r(c=>(0,p.make)({role:"user",content:c}),"user"),p.assistant=r(c=>(0,p.make)({role:"assistant",content:c}),"assistant"),p.system=r(c=>(0,p.make)({role:"system",content:c}),"system"),p.tool=r(c=>(0,p.make)({role:"tool",content:["type"in c?c:Ja.make(c)]}),"tool")))(Gt||={});var vr=class extends S.Class("LLM.ToolDefinition")({name:S.String,description:S.String,inputSchema:no,outputSchema:S.optional(no),cache:S.optional(sr),metadata:S.optional(S.Record(S.String,S.Unknown)),native:S.optional(S.Record(S.String,S.Unknown))}){static{r(this,"ToolDefinition")}};(t=>t.make=r(n=>n instanceof t?n:new t(n),"make"))(vr||={});var ui=class extends S.Class("LLM.ToolChoice")({type:S.Literals(["auto","none","required","tool"]),name:S.optional(S.String)}){static{r(this,"ToolChoice")}};(o=>{let e=r(i=>i==="auto"||i==="none"||i==="required","isMode");o.named=r(i=>new o({type:"tool",name:i}),"named"),o.make=r(i=>i instanceof o?i:i instanceof vr?(0,o.named)(i.name):typeof i=="string"?e(i)?new o({type:i}):(0,o.named)(i):new o(i),"make")})(ui||={});var Kh=S.Union([S.Struct({type:S.Literal("text")}),S.Struct({type:S.Literal("json"),schema:no}),S.Struct({type:S.Literal("tool"),tool:vr})]).pipe(S.toTaggedUnion("type")),jr=class extends S.Class("LLM.Request")({id:S.optional(S.String),model:Wa,system:S.Array(Nh),messages:S.Array(Gt),tools:S.Array(vr),toolChoice:S.optional(ui),generation:S.optional(qt),providerOptions:S.optional(Ad),http:S.optional(Nt),responseFormat:S.optional(Kh),cache:S.optional(rf),metadata:S.optional(S.Record(S.String,S.Unknown))}){static{r(this,"LLMRequest")}};(n=>(n.input=r(o=>({id:o.id,model:o.model,system:o.system,messages:o.messages,tools:o.tools,toolChoice:o.toolChoice,generation:o.generation,providerOptions:o.providerOptions,http:o.http,responseFormat:o.responseFormat,cache:o.cache,metadata:o.metadata}),"input"),n.update=r((o,i)=>Object.keys(i).length===0?o:new n({...(0,n.input)(o),...i,model:i.model??o.model}),"update")))(jr||={});import{Schema as w}from"effect";import{Schema as I}from"effect";var Nd=I.Literal("context-overflow"),mi=class extends I.Class("LLM.HttpRequestDetails")({method:I.String,url:I.String,headers:I.Record(I.String,I.String)}){static{r(this,"HttpRequestDetails")}},yi=class extends I.Class("LLM.HttpResponseDetails")({status:I.Number,headers:I.Record(I.String,I.String)}){static{r(this,"HttpResponseDetails")}},oo=class extends I.Class("LLM.HttpRateLimitDetails")({retryAfterMs:I.optional(I.Number),limit:I.optional(I.Record(I.String,I.String)),remaining:I.optional(I.Record(I.String,I.String)),reset:I.optional(I.Record(I.String,I.String))}){static{r(this,"HttpRateLimitDetails")}},Ct=class extends I.Class("LLM.HttpContext")({request:mi,response:I.optional(yi),body:I.optional(I.String),bodyTruncated:I.optional(I.Boolean),requestId:I.optional(I.String),rateLimit:I.optional(oo)}){static{r(this,"HttpContext")}},Dr=class extends I.Class("LLM.Error.InvalidRequest")({_tag:I.tag("InvalidRequest"),message:I.String,parameter:I.optional(I.String),classification:I.optional(Nd),providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"InvalidRequestReason")}get retryable(){return!1}},Qd=class extends I.Class("LLM.Error.NoRoute")({_tag:I.tag("NoRoute"),route:ja,provider:ro,model:Va}){static{r(this,"NoRouteReason")}get retryable(){return!1}get message(){return`No LLM route for ${this.provider}/${this.model} using ${this.route}`}},Vr=class extends I.Class("LLM.Error.Authentication")({_tag:I.tag("Authentication"),message:I.String,kind:I.Literals(["missing","invalid","expired","insufficient-permissions","unknown"]),providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"AuthenticationReason")}get retryable(){return!1}},gi=class extends I.Class("LLM.Error.RateLimit")({_tag:I.tag("RateLimit"),message:I.String,retryAfterMs:I.optional(I.Number),rateLimit:I.optional(oo),providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"RateLimitReason")}get retryable(){return!0}},Si=class extends I.Class("LLM.Error.QuotaExceeded")({_tag:I.tag("QuotaExceeded"),message:I.String,providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"QuotaExceededReason")}get retryable(){return!1}},hi=class extends I.Class("LLM.Error.ContentPolicy")({_tag:I.tag("ContentPolicy"),message:I.String,providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"ContentPolicyReason")}get retryable(){return!1}},Ei=class extends I.Class("LLM.Error.ProviderInternal")({_tag:I.tag("ProviderInternal"),message:I.String,status:I.Number,retryAfterMs:I.optional(I.Number),providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"ProviderInternalReason")}get retryable(){return!0}},Rn=class extends I.Class("LLM.Error.Transport")({_tag:I.tag("Transport"),message:I.String,kind:I.optional(I.String),url:I.optional(I.String),http:I.optional(Ct)}){static{r(this,"TransportReason")}get retryable(){return!1}},xi=class extends I.Class("LLM.Error.InvalidProviderOutput")({_tag:I.tag("InvalidProviderOutput"),message:I.String,route:I.optional(I.String),raw:I.optional(I.String),providerMetadata:I.optional(ne)}){static{r(this,"InvalidProviderOutputReason")}get retryable(){return!1}},Ti=class extends I.Class("LLM.Error.UnknownProvider")({_tag:I.tag("UnknownProvider"),message:I.String,status:I.optional(I.Number),providerMetadata:I.optional(ne),http:I.optional(Ct)}){static{r(this,"UnknownProviderReason")}get retryable(){return!1}},zh=I.Union([Dr,Qd,Vr,gi,Si,hi,Ei,Rn,xi,Ti]).pipe(I.toTaggedUnion("_tag")),tt=class extends I.TaggedErrorClass()("LLM.Error",{module:I.String,method:I.String,reason:zh}){static{r(this,"LLMError")}cause=this.reason;get retryable(){return this.reason.retryable}get retryAfterMs(){return"retryAfterMs"in this.reason?this.reason.retryAfterMs:void 0}get message(){return`${this.module}.${this.method}: ${this.reason.message}`}},af=class extends I.TaggedErrorClass()("LLM.ToolFailure",{message:I.String,error:I.optional(I.Defect()),metadata:I.optional(I.Record(I.String,I.Unknown))}){static{r(this,"ToolFailure")}};var Ln=class e extends w.Class("LLM.Usage")({inputTokens:w.optional(w.Number),outputTokens:w.optional(w.Number),nonCachedInputTokens:w.optional(w.Number),cacheReadInputTokens:w.optional(w.Number),cacheWriteInputTokens:w.optional(w.Number),reasoningTokens:w.optional(w.Number),totalTokens:w.optional(w.Number),providerMetadata:w.optional(ne)}){static{r(this,"Usage")}get visibleOutputTokens(){return Math.max(0,(this.outputTokens??0)-(this.reasoningTokens??0))}static from(t){return t instanceof e?t:new e(t)}},sf=w.Struct({type:w.tag("step-start"),index:w.Number}).annotate({identifier:"LLM.Event.StepStart"}),df=w.Struct({type:w.tag("text-start"),id:Ur,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.TextStart"}),cf=w.Struct({type:w.tag("text-delta"),id:Ur,text:w.String,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.TextDelta"}),lf=w.Struct({type:w.tag("text-end"),id:Ur,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.TextEnd"}),pf=w.Struct({type:w.tag("reasoning-start"),id:Ur,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ReasoningStart"}),ff=w.Struct({type:w.tag("reasoning-delta"),id:Ur,text:w.String,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ReasoningDelta"}),uf=w.Struct({type:w.tag("reasoning-end"),id:Ur,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ReasoningEnd"}),mf=w.Struct({type:w.tag("tool-input-start"),id:Hr,name:w.String,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ToolInputStart"}),yf=w.Struct({type:w.tag("tool-input-delta"),id:Hr,name:w.String,text:w.String}).annotate({identifier:"LLM.Event.ToolInputDelta"}),gf=w.Struct({type:w.tag("tool-input-end"),id:Hr,name:w.String,providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ToolInputEnd"}),Sf=w.Struct({type:w.tag("tool-call"),id:Hr,name:w.String,input:w.Unknown,providerExecuted:w.optional(w.Boolean),providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ToolCall"}),hf=w.Struct({type:w.tag("tool-result"),id:Hr,name:w.String,result:Ga,output:w.optional(_d),providerExecuted:w.optional(w.Boolean),providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ToolResult"}),Ef=w.Struct({type:w.tag("tool-error"),id:Hr,name:w.String,message:w.String,error:w.optional(w.Defect()),providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ToolError"}),xf=w.Struct({type:w.tag("step-finish"),index:w.Number,reason:$a,usage:w.optional(Ln),providerMetadata:w.optional(ne),responseModelID:w.optional(w.String)}).annotate({identifier:"LLM.Event.StepFinish"}),Tf=w.Struct({type:w.tag("finish"),reason:$a,usage:w.optional(Ln),providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.Finish"}),Xa=w.Struct({type:w.tag("provider-error"),message:w.String,classification:w.optional(Nd),retryable:w.optional(w.Boolean),providerMetadata:w.optional(ne)}).annotate({identifier:"LLM.Event.ProviderError"}),Ye=w.Union([sf,df,cf,lf,pf,ff,uf,mf,yf,gf,Sf,hf,Ef,xf,Tf,Xa]).pipe(w.toTaggedUnion("type")),io=r(e=>Ur.make(e),"contentBlockID"),ao=r(e=>Hr.make(e),"toolCallID"),In=Object.assign(Ye,{stepStart:sf.make,textStart:r(e=>df.make({...e,id:io(e.id)}),"textStart"),textDelta:r(e=>cf.make({...e,id:io(e.id)}),"textDelta"),textEnd:r(e=>lf.make({...e,id:io(e.id)}),"textEnd"),reasoningStart:r(e=>pf.make({...e,id:io(e.id)}),"reasoningStart"),reasoningDelta:r(e=>ff.make({...e,id:io(e.id)}),"reasoningDelta"),reasoningEnd:r(e=>uf.make({...e,id:io(e.id)}),"reasoningEnd"),toolInputStart:r(e=>mf.make({...e,id:ao(e.id)}),"toolInputStart"),toolInputDelta:r(e=>yf.make({...e,id:ao(e.id)}),"toolInputDelta"),toolInputEnd:r(e=>gf.make({...e,id:ao(e.id)}),"toolInputEnd"),toolCall:r(e=>Sf.make({...e,id:ao(e.id)}),"toolCall"),toolResult:r(e=>hf.make({...e,id:ao(e.id),output:e.output===void 0?void 0:_d.make(e.output.structured,e.output.content)}),"toolResult"),toolError:r(e=>Ef.make({...e,id:ao(e.id)}),"toolError"),stepFinish:r(e=>xf.make({...e,usage:e.usage===void 0?void 0:Ln.from(e.usage)}),"stepFinish"),finish:r(e=>Tf.make({...e,usage:e.usage===void 0?void 0:Ln.from(e.usage)}),"finish"),providerError:Xa.make,is:{stepStart:Ye.guards["step-start"],textStart:Ye.guards["text-start"],textDelta:Ye.guards["text-delta"],textEnd:Ye.guards["text-end"],reasoningStart:Ye.guards["reasoning-start"],reasoningDelta:Ye.guards["reasoning-delta"],reasoningEnd:Ye.guards["reasoning-end"],toolInputStart:Ye.guards["tool-input-start"],toolInputDelta:Ye.guards["tool-input-delta"],toolInputEnd:Ye.guards["tool-input-end"],toolCall:Ye.guards["tool-call"],toolResult:Ye.guards["tool-result"],toolError:Ye.guards["tool-error"],stepFinish:Ye.guards["step-finish"],finish:Ye.guards.finish,providerError:Ye.guards["provider-error"]}}),Ya=class extends w.Class("LLM.PreparedRequest")({id:w.String,route:ja,protocol:Zp,model:Wa,body:w.Unknown,metadata:w.optional(w.Record(w.String,w.Unknown))}){static{r(this,"PreparedRequest")}},bf=r(e=>e.filter(In.is.textDelta).map(t=>t.text).join(""),"responseText"),Rf=r(e=>e.filter(In.is.reasoningDelta).map(t=>t.text).join(""),"responseReasoning"),jh=r(e=>e.reduce((t,n)=>"usage"in n&&n.usage!==void 0?n.usage:t,void 0),"responseUsage"),Vh=r(()=>({events:[],message:Gt.assistant([]),textParts:{},reasoningParts:{},toolInputs:{}}),"emptyResponseState"),$h=r((e,t)=>{let n=[...e.events,t];return In.is.finish(t)?{...e,events:n,usage:t.usage??e.usage,finishReason:t.reason}:In.is.providerError(t)?{...e,events:n,finishReason:e.finishReason??"error"}:{...e,events:n,usage:"usage"in t&&t.usage!==void 0?t.usage:e.usage}},"appendEvent"),qd=r((e,t)=>t===void 0?{type:"text",text:e}:{type:"text",text:e,providerMetadata:t},"textContent"),Fd=r((e,t)=>t===void 0?{type:"reasoning",text:e}:{type:"reasoning",text:e,providerMetadata:t},"reasoningContent"),Lf=r((e,t)=>({...e,message:Gt.assistant(t)}),"contentWith"),Za=r((e,t)=>Lf(e,[...e.message.content,t]),"appendContent"),es=r((e,t,n)=>Lf(e,e.message.content.map((o,i)=>i===t?n:o)),"replaceContent"),If=r((e,t,n)=>e.textParts[t]?e:{...Za(e,qd("",n)),textParts:{...e.textParts,[t]:{contentIndex:e.message.content.length,text:"",providerMetadata:n}}},"ensureText"),Wh=r((e,t)=>{let n=If(e,t.id,t.providerMetadata),o=n.textParts[t.id];if(!o)return n;let i=o.text+t.text,s=t.providerMetadata??o.providerMetadata;return{...es(n,o.contentIndex,qd(i,s)),textParts:{...n.textParts,[t.id]:{...o,text:i,providerMetadata:s}}}},"reduceTextDelta"),Gh=r((e,t)=>{let n=e.textParts[t.id];if(!n)return e;let o=t.providerMetadata??n.providerMetadata;return{...es(e,n.contentIndex,qd(n.text,o)),textParts:{...e.textParts,[t.id]:{...n,providerMetadata:o}}}},"reduceTextEnd"),vf=r((e,t,n)=>e.reasoningParts[t]?e:{...Za(e,Fd("",n)),reasoningParts:{...e.reasoningParts,[t]:{contentIndex:e.message.content.length,text:"",providerMetadata:n}}},"ensureReasoning"),Jh=r((e,t)=>{let n=vf(e,t.id,t.providerMetadata),o=n.reasoningParts[t.id];if(!o)return n;let i=o.text+t.text,s=t.providerMetadata??o.providerMetadata;return{...es(n,o.contentIndex,Fd(i,s)),reasoningParts:{...n.reasoningParts,[t.id]:{...o,text:i,providerMetadata:s}}}},"reduceReasoningDelta"),Yh=r((e,t)=>{let n=e.reasoningParts[t.id];if(!n)return e;let o=t.providerMetadata??n.providerMetadata;return{...es(e,n.contentIndex,Fd(n.text,o)),reasoningParts:{...e.reasoningParts,[t.id]:{...n,providerMetadata:o}}}},"reduceReasoningEnd"),Xh=r((e,t)=>({...e,toolInputs:{...e.toolInputs,[t.id]:{name:t.name,text:"",providerMetadata:t.providerMetadata}}}),"reduceToolInputStart"),Zh=r((e,t)=>{let n=e.toolInputs[t.id]??{name:t.name,text:""};return{...e,toolInputs:{...e.toolInputs,[t.id]:{...n,text:n.text+t.text}}}},"reduceToolInputDelta"),eE=r((e,t)=>{let n=e.toolInputs[t.id]??{name:t.name,text:""};return{...e,toolInputs:{...e.toolInputs,[t.id]:{...n,name:t.name,providerMetadata:t.providerMetadata??n.providerMetadata}}}},"reduceToolInputEnd"),tE=r(e=>Od.make({id:e.id,name:e.name,input:e.input,...e.providerExecuted===void 0?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata===void 0?{}:{providerMetadata:e.providerMetadata}}),"toolCallContent"),rE=r(e=>Ja.make({id:e.id,name:e.name,result:e.result,...e.providerExecuted===void 0?{}:{providerExecuted:e.providerExecuted},...e.providerMetadata===void 0?{}:{providerMetadata:e.providerMetadata}}),"toolResultContent"),nE=r((e,t)=>{let{[t.id]:n,...o}=e.toolInputs;return{...Za(e,tE(t)),toolInputs:o}},"reduceToolCall"),oE=r((e,t)=>{let n=$h(e,t);switch(t.type){case"text-start":return If(n,t.id,t.providerMetadata);case"text-delta":return Wh(n,t);case"text-end":return Gh(n,t);case"reasoning-start":return vf(n,t.id,t.providerMetadata);case"reasoning-delta":return Jh(n,t);case"reasoning-end":return Yh(n,t);case"tool-input-start":return Xh(n,t);case"tool-input-delta":return Zh(n,t);case"tool-input-end":return eE(n,t);case"tool-call":return nE(n,t);case"tool-result":return Za(n,rE(t));default:return n}},"reduceResponseState"),$r=class extends w.Class("LLM.Response")({message:Gt,events:w.Array(In),usage:w.optional(Ln),finishReason:$a}){static{r(this,"LLMResponse")}get text(){return bf(this.events)}get reasoning(){return Rf(this.events)}get toolCalls(){return this.events.filter(In.is.toolCall)}};(c=>(c.empty=Vh,c.reduce=oE,c.complete=r(y=>y.finishReason===void 0?void 0:new c({message:y.message,events:[...y.events],usage:y.usage,finishReason:y.finishReason}),"complete"),c.fromEvents=r(y=>(0,c.complete)(y.reduce(c.reduce,(0,c.empty)())),"fromEvents"),c.text=r(y=>bf(y.events),"text"),c.usage=r(y=>y.usage??jh(y.events),"usage"),c.toolCalls=r(y=>y.events.filter(In.is.toolCall),"toolCalls"),c.reasoning=r(y=>Rf(y.events),"reasoning")))($r||={});var vn=class extends Error{constructor(n){super(`Missing auth credential: ${n}`);this.source=n}source;static{r(this,"MissingCredentialError")}_tag="MissingCredentialError"},iE=r(e=>typeof e=="object"&&e!==null&&"apply"in e&&typeof e.apply=="function","isAuth"),Ri=r(e=>{let t={load:e,orElse:r(n=>Ri(e.pipe(Ft.catch(()=>n.load))),"orElse"),bearer:r(()=>Bd(t,n=>({authorization:`Bearer ${n}`})),"bearer"),header:r(n=>Bd(t,o=>({[n]:o})),"header"),pipe:r(n=>n(t),"pipe")};return t},"credential"),Dn=r(e=>{let t={apply:e,andThen:r(n=>Dn(o=>e(o).pipe(Ft.flatMap(i=>n.apply({...o,headers:i})))),"andThen"),orElse:r(n=>Dn(o=>e(o).pipe(Ft.catch(()=>n.apply(o)))),"orElse"),pipe:r(n=>n(t),"pipe")};return t},"auth"),Bd=r((e,t)=>Dn(n=>e.load.pipe(Ft.map(o=>Hd.setAll(n.headers,t(bi.value(o)))))),"fromCredential"),Df=r((e,t)=>{let n=typeof e=="string"?bi.make(e):e;return bi.value(n)===""?Ft.fail(new vn(t)):Ft.succeed(n)},"secretEffect"),rs=r((e,t)=>typeof e=="string"||bi.isRedacted(e)?Ri(Df(e,t)):Ri(Ft.gen(function*(){return yield*Df(yield*e,t)})),"credentialFromSecret"),aE=r((e,t="value")=>rs(e,t),"value"),sE=r((e,t="optional value")=>e===void 0?Ri(Ft.fail(new vn(t))):rs(e,t),"optional"),dE=r(e=>rs(Ud.redacted(e),e),"config"),cE=r(e=>Ri(e),"effect"),Cf=Dn(e=>Ft.succeed(e.headers)),lE=r(e=>Dn(t=>Ft.succeed(Hd.setAll(t.headers,e))),"headers"),pE=r(e=>Dn(t=>Ft.succeed(Hd.remove(t.headers,e))),"remove"),fE=r(e=>Dn(e),"custom"),uE=Cf,ts=r(e=>typeof e=="string"||bi.isRedacted(e)||Ud.isConfig(e)?rs(e,"value"):e,"credentialInput");function wf(e){return ts(e).bearer()}r(wf,"bearer");var mE=wf;function yE(e,t){return t===void 0?n=>ts(n).header(e):ts(t).header(e)}r(yE,"header");function gE(e,t){let n=r(o=>Bd(ts(o),i=>({[e]:`Bearer ${i}`})),"render");return t===void 0?n:n(t)}r(gE,"bearerHeader");var SE=r(e=>e instanceof vn||e instanceof Ud.ConfigError?new tt({module:"Auth",method:"apply",reason:e instanceof vn?new Vr({message:e.message,kind:"missing"}):new Dr({message:`Failed to resolve auth config: ${e.message}`})}):e,"toLLMError"),hE=r(e=>t=>e.apply(t).pipe(Ft.mapError(SE)),"toEffect");var lo={};Q(lo,{Endpoint:()=>lo,merge:()=>QE,path:()=>OE,render:()=>Xd});var wn={};Q(wn,{AUDIO_MIMES:()=>Ff,IMAGE_MIMES:()=>Nf,Json:()=>Vd,JsonObject:()=>xE,MAX_MEDIA_DECODED_BYTES:()=>Li,MAX_MEDIA_ENCODED_BYTES:()=>jd,MEDIA_MIMES:()=>wE,ProviderShared:()=>wn,VIDEO_MIMES:()=>qf,decodeJson:()=>kf,encodeJson:()=>Cn,errorText:()=>Wd,eventError:()=>Wr,invalidRequest:()=>ct,isRecord:()=>Ir,joinText:()=>_f,jsonPost:()=>Yd,matchToolChoice:()=>ME,optionalArray:()=>TE,optionalNull:()=>bE,parseJson:()=>Mf,parseToolInput:()=>CE,sseFraming:()=>Gd,subtractTokens:()=>LE,sumTokens:()=>IE,supportsContent:()=>Uf,systemUpdateText:()=>Qf,toolResultText:()=>kE,totalTokens:()=>RE,trimBaseUrl:()=>$d,unsupportedContent:()=>Hf,validateMedia:()=>Bf,validateToolFile:()=>PE,validateWith:()=>Jd,wrapSystemUpdate:()=>Of,wrappedSystemUpdate:()=>DE});import{Buffer as Kd}from"node:buffer";import{Effect as co,Schema as wt,Stream as so}from"effect";import*as Pf from"effect/unstable/encoding/Sse";import{Headers as Af,HttpClientRequest as zd}from"effect/unstable/http";var Vd=wt.fromJsonString(wt.Unknown),kf=wt.decodeUnknownSync(Vd),Cn=wt.encodeSync(Vd),EE=wt.is(wt.Json),xE=wt.Record(wt.String,wt.Unknown),TE=r(e=>wt.optional(wt.Array(e)),"optionalArray"),bE=r(e=>wt.optional(wt.NullOr(e)),"optionalNull"),RE=r((e,t,n)=>{if(n!==void 0)return n;if(!(e===void 0&&t===void 0))return(e??0)+(t??0)},"totalTokens"),LE=r((e,t)=>{if(e!==void 0)return t===void 0?e:Math.max(0,e-t)},"subtractTokens"),IE=r((...e)=>{if(!e.every(t=>t===void 0))return e.reduce((t,n)=>t+(n??0),0)},"sumTokens"),Wr=r((e,t,n)=>new tt({module:"ProviderShared",method:"stream",reason:new xi({route:e,message:t,raw:n})}),"eventError"),Mf=r((e,t,n)=>co.try({try:r(()=>kf(t),"try"),catch:r(()=>Wr(e,n,t),"catch")}),"parseJson"),_f=r(e=>e.map(t=>t.text).join(`
|
|
35
|
-
`),"joinText"),vE=r(e=>e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"),"escapeSystemUpdateText"),Of=r(e=>`<system-update>
|
|
36
|
-
${vE(_f(e))}
|
|
37
|
-
</system-update>`,"wrapSystemUpdate"),Qf=co.fn("ProviderShared.systemUpdateText")(function*(e,t){let n=[];for(let o of t.content){if(!Uf(o,["text"]))return yield*Hf(e,"system",["text"]);n.push(o)}return n}),DE=co.fn("ProviderShared.wrappedSystemUpdate")(function*(e,t){let n=yield*Qf(e,t);return{type:"text",text:Of(n),cache:n.at(-1)?.cache}}),CE=r((e,t,n)=>Mf(e,n||"{}",`Invalid JSON input for ${e} tool call ${t}`),"parseToolInput"),Nf=["image/png","image/jpeg","image/gif","image/webp"],qf=["video/mp4","video/webm","video/quicktime"],Ff=["audio/wav","audio/mp3","audio/aiff","audio/aac","audio/ogg","audio/flac"],wE=[...Nf,...qf,...Ff],jd=28*1024*1024,Li=20*1024*1024,AE=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Bf=co.fn("ProviderShared.validateMedia")(function*(e,t,n){let o=t.mediaType.toLowerCase();if(!n.has(o))return yield*ct(`${e} does not support media type ${t.mediaType}`);let i;if(typeof t.data!="string"){if(t.data.byteLength>Li)return yield*ct(`${e} media exceeds the ${Li} byte decoded limit`);i=Kd.from(t.data).toString("base64")}else if(t.data.startsWith("data:")){let d=/^data:([^;,]+);base64,([A-Za-z0-9+/]*={0,2})$/s.exec(t.data);if(!d)return yield*ct(`${e} media data URL must contain valid base64`);if(d[1].toLowerCase()!==o)return yield*ct(`${e} media type ${t.mediaType} does not match data URL type ${d[1]}`);i=d[2]}else i=t.data;if(Kd.byteLength(i,"utf8")>jd)return yield*ct(`${e} media exceeds the ${jd} byte encoded limit`);if(!i||i.length%4!==0||!AE.test(i))return yield*ct(`${e} media must contain valid base64`);let s=Kd.from(i,"base64");return s.byteLength>Li?yield*ct(`${e} media exceeds the ${Li} byte decoded limit`):s.toString("base64")!==i?yield*ct(`${e} media must contain canonical base64`):{mime:o,base64:i,dataUrl:`data:${o};base64,${i}`,bytes:s}}),PE=r((e,t,n)=>Bf(e,{type:"media",mediaType:t.mime,data:t.uri,filename:t.name},n),"validateToolFile"),$d=r(e=>e.replace(/\/+$/,""),"trimBaseUrl"),kE=r(e=>{if(e.result.type==="text")return String(e.result.value);if(e.result.type==="error"){let t=e.result.value,n=typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.getPrototypeOf(t);return(Array.isArray(t)||n===Object.prototype||n===null)&&EE(t)?Cn(t):String(t)}return Cn(e.result.value)},"toolResultText"),Wd=r(e=>e instanceof Error?e.message:typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"?String(e):e===null?"null":e===void 0?"undefined":"Unknown stream error","errorText"),Gd=r(e=>e.pipe(so.decodeText(),so.pipeThroughChannel(Pf.decode()),so.catchTag("Retry",()=>so.empty),so.filter(t=>t.data.length>0&&t.data!=="[DONE]"),so.map(t=>t.data)),"sseFraming"),ct=r(e=>new tt({module:"ProviderShared",method:"request",reason:new Dr({message:e})}),"invalidRequest"),ME=r((e,t,n)=>co.gen(function*(){return t.type==="auto"?n.auto():t.type==="none"?n.none():t.type==="required"?n.required():t.name?n.tool(t.name):yield*ct(`${e} tool choice requires a tool name`)}),"matchToolChoice"),_E=r(e=>e.length<=1?e[0]??"":e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e.at(-1)}`,"formatContentTypes"),Uf=r((e,t)=>t.includes(e.type),"supportsContent"),Hf=r((e,t,n)=>ct(`${e} ${t} messages only support ${_E(n)} content for now`),"unsupportedContent"),Jd=r(e=>t=>e(t).pipe(co.mapError(n=>ct(n.message))),"validateWith"),Yd=r(e=>zd.post(e.url).pipe(zd.setHeaders(Af.set(Af.fromInput(e.headers),"content-type","application/json")),zd.bodyText(e.body,"application/json")),"jsonPost");var OE=r((e,t={})=>({...t,path:e}),"path"),QE=r((e,t)=>({...e,...t,baseURL:t.baseURL??e.baseURL,path:t.path??e.path,query:t.query===void 0?e.query:{...e.query,...t.query}}),"merge"),NE=r((e,t)=>typeof e=="function"?e(t):e,"renderPart"),Xd=r((e,t)=>{let n=new URL(`${$d(e.baseURL??"")}${NE(e.path,t)}`);for(let[o,i]of Object.entries(e.query??{}))n.searchParams.set(o,i);return n},"render");var Gr={};Q(Gr,{RequestExecutor:()=>Gr,Service:()=>vi,fetchLayer:()=>fx,layer:()=>nu});import{Cause as UE,Context as HE,Effect as ht,Layer as Vf,Random as KE}from"effect";import{FetchHttpClient as zE,Headers as $f,HttpClient as jE,HttpClientError as VE}from"effect/unstable/http";import{Schema as qE}from"effect";var FE=[/prompt is too long/i,/request_too_large/i,/input is too long for requested model/i,/exceeds the context window/i,/exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i,/input token count.*exceeds the maximum/i,/tokens in request more than max tokens allowed/i,/maximum prompt length is \d+/i,/reduce the length of the messages/i,/maximum context length is \d+ tokens/i,/exceeds (?:the )?maximum allowed input length of [\d,]+ tokens?/i,/input \(\d+ tokens\) is longer than the model'?s context length \(\d+ tokens\)/i,/exceeds the limit of \d+/i,/exceeds the available context size/i,/greater than the context length/i,/context window exceeds limit/i,/exceeded model token limit/i,/context[_ ]length[_ ]exceeded/i,/request entity too large/i,/context length is only \d+ tokens/i,/input length.*exceeds.*context length/i,/prompt too long; exceeded (?:max )?context length/i,/too large for model with \d+ maximum context length/i,/prompt has [\d,]+ tokens?, but the configured context size is [\d,]+ tokens?/i,/model_context_window_exceeded/i,/too many tokens/i,/token limit exceeded/i],BE=[/^(throttling error|service unavailable):/i,/rate limit/i,/too many requests/i],Kf=r(e=>!BE.some(t=>t.test(e))&&(FE.some(t=>t.test(e))||/^4(00|13)\s*(status code)?\s*\(no body\)/i.test(e)),"isContextOverflow"),FA=r(e=>e instanceof tt?e.reason._tag==="InvalidRequest"&&e.reason.classification==="context-overflow":qE.is(Xa)(e)&&e.classification==="context-overflow","isContextOverflowFailure");var vi=class extends HE.Service()("@opencode/LLM/RequestExecutor"){static{r(this,"Service")}},zf=16384,$E=2,jf=500,Zd=1e4,Ii="<redacted>",Wf="authorization|api[-_]?key|access[-_]?token|refresh[-_]?token|id[-_]?token|token|secret|credential|signature|x-amz-signature",Gf=new RegExp(Wf,"i"),WE=/^(key|sig)$/i,Jf=new RegExp(`(?:${Wf}|key)`,"i"),GE=new RegExp(`("(?:${Jf.source})"\\s*:\\s*)"[^"]*"`,"gi"),JE=new RegExp(`((?:${Jf.source})=)[^&\\s"]+`,"gi"),Yf=r(e=>Gf.test(e),"isSensitiveHeaderName"),Xf=r(e=>Yf(e)||WE.test(e),"isSensitiveQueryName"),Zf=r((e,t)=>Object.fromEntries(Object.entries($f.redact(e,[...t,Gf])).map(([n,o])=>[n,String(o)])),"redactHeaders"),eu=r(e=>{if(!URL.canParse(e))return Ii;let t=new URL(e);return t.searchParams.forEach((n,o)=>{Xf(o)&&t.searchParams.set(o,Ii)}),t.toString()},"redactUrl"),YE=r(e=>Object.fromEntries(Object.entries(e).map(([t,n])=>[t.toLowerCase(),n])),"normalizedHeaders"),XE=r(e=>e["x-request-id"]??e["request-id"]??e["x-amzn-requestid"]??e["x-amz-request-id"]??e["x-goog-request-id"]??e["cf-ray"],"requestId"),ZE=r(e=>e===429||e===503||e===504||e===529,"retryableStatus"),ex=r(e=>{let t=Number(e["retry-after-ms"]);if(Number.isFinite(t))return Math.max(0,t);let n=e["retry-after"];if(!n)return;let o=Number(n);if(Number.isFinite(o))return Math.max(0,o*1e3);let i=Date.parse(n);if(!Number.isNaN(i))return Math.max(0,i-Date.now())},"retryAfterMs"),po=r((e,t,n)=>{t.length>0&&(e[t]=n)},"addRateLimitValue"),tx=r((e,t)=>{let n={},o={},i={};if(Object.entries(e).forEach(([s,d])=>{let p=/^x-ratelimit-limit-(.+)$/.exec(s)?.[1];if(p)return po(n,p,d);let c=/^x-ratelimit-remaining-(.+)$/.exec(s)?.[1];if(c)return po(o,c,d);let y=/^x-ratelimit-reset-(.+)$/.exec(s)?.[1];if(y)return po(i,y,d);let g=/^anthropic-ratelimit-(.+)-(limit|remaining|reset)$/.exec(s);if(g)return g[2]==="limit"?po(n,g[1],d):g[2]==="remaining"?po(o,g[1],d):po(i,g[1],d)}),!(t===void 0&&Object.keys(n).length===0&&Object.keys(o).length===0&&Object.keys(i).length===0))return new oo({retryAfterMs:t,limit:Object.keys(n).length===0?void 0:n,remaining:Object.keys(o).length===0?void 0:o,reset:Object.keys(i).length===0?void 0:i})},"rateLimitDetails"),tu=r((e,t)=>new mi({method:e.method,url:eu(e.url),headers:Zf(e.headers,t)}),"requestDetails"),rx=r((e,t)=>new yi({status:e.status,headers:Zf(e.headers,t)}),"responseDetails"),nx=r(e=>{let t=new Set,n=r(o=>{o.length<4||(t.add(o),t.add(encodeURIComponent(o)))},"add");return Object.entries(e.headers).forEach(([o,i])=>{if(!Yf(o))return;n(i);let s=/^Bearer\s+(.+)$/i.exec(i)?.[1];s&&n(s)}),URL.canParse(e.url)&&new URL(e.url).searchParams.forEach((o,i)=>{Xf(i)&&n(o)}),t},"secretValues"),ox=r((e,t)=>Array.from(nx(t)).reduce((n,o)=>n.split(o).join(Ii),e.replace(GE,`$1"${Ii}"`).replace(JE,`$1${Ii}`)),"redactBody"),ix=r((e,t)=>{if(e===void 0)return{};let n=ox(e,t);return n.length<=zf?{body:n}:{body:n.slice(0,zf),bodyTruncated:!0}},"responseBody"),ax=r((e,t)=>t.body&&t.body.length<=500?`Provider request failed with HTTP ${e}: ${t.body}`:`Provider request failed with HTTP ${e}`,"providerMessage"),sx=r(e=>new Ct({request:tu(e.request,e.redactedNames),response:rx(e.response,e.redactedNames),...e.body,requestId:e.requestId,rateLimit:e.rateLimit}),"responseHttp"),dx=r(e=>{let t=e.http.body??"";return/content[-_\s]?policy|content_filter|safety/i.test(t)?new hi({message:e.message,http:e.http}):e.status===401?new Vr({message:e.message,kind:"invalid",http:e.http}):e.status===403?new Vr({message:e.message,kind:"insufficient-permissions",http:e.http}):e.status===429?/insufficient[-_\s]?quota|quota[-_\s]?exceeded/i.test(t)?new Si({message:e.message,http:e.http}):new gi({message:e.message,retryAfterMs:e.retryAfterMs,rateLimit:e.rateLimit,http:e.http}):e.status===400||e.status===404||e.status===409||e.status===413||e.status===422?new Dr({message:e.message,classification:Kf(t)?"context-overflow":void 0,http:e.http}):e.status>=500||ZE(e.status)?new Ei({message:e.message,status:e.status,retryAfterMs:e.retryAfterMs,http:e.http}):new Ti({message:e.message,status:e.status,http:e.http})},"statusReason"),cx=r((e,t)=>n=>ht.gen(function*(){if(n.status<400)return n;let o=yield*n.text.pipe(ht.catch(()=>ht.void)),i=YE(n.headers),s=ex(i),d=tx(i,s),p=ix(o,e);return yield*new tt({module:"RequestExecutor",method:"execute",reason:dx({status:n.status,message:ax(n.status,p),retryAfterMs:s,rateLimit:d,http:sx({request:e,response:n,redactedNames:t,body:p,requestId:XE(i),rateLimit:d})})})}),"statusError"),lx=r(e=>t=>{let n=r(i=>new tt({module:"RequestExecutor",method:"execute",reason:new Rn({message:i.message,kind:i.kind,url:i.request?eu(i.request.url):void 0,http:i.request?new Ct({request:tu(i.request,e)}):void 0})}),"transportError");if(UE.isTimeoutError(t))return n({message:t.message,kind:"Timeout"});if(!VE.isHttpClientError(t))return n({message:"HTTP transport failed"});let o="request"in t?t.request:void 0;return t.reason._tag==="TransportError"?n({message:t.reason.description??"HTTP transport failed",kind:t.reason._tag,request:o}):n({message:`HTTP transport failed: ${t.reason._tag}`,kind:t.reason._tag,request:o})},"toHttpError"),px=r((e,t)=>e.retryAfterMs!==void 0?ht.succeed(Math.min(e.retryAfterMs,Zd)):KE.nextBetween(Math.min(jf*2**t*.8,Zd),Math.min(jf*2**t*1.2,Zd)).pipe(ht.map(n=>Math.round(n))),"retryDelay"),ru=r((e,t=$E,n=0)=>ht.catchTag(e,"LLM.Error",o=>!o.retryable||t<=0?ht.fail(o):px(o,n).pipe(ht.flatMap(i=>ht.sleep(i)),ht.flatMap(()=>ru(e,t-1,n+1)))),"retryStatusFailures"),nu=Vf.effect(vi,ht.gen(function*(){let e=yield*jE.HttpClient,t=r(n=>ht.gen(function*(){let o=yield*$f.CurrentRedactedNames;return yield*e.execute(n).pipe(ht.mapError(lx(o)),ht.flatMap(cx(n,o)))}),"executeOnce");return vi.of({execute:r(n=>ru(t(n)),"execute")})})),fx=nu.pipe(Vf.provide(zE.layer));var uo={};Q(uo,{httpJson:()=>ec,jsonRequestParts:()=>os,sseJson:()=>Ex});import{Effect as ns,Stream as ou}from"effect";import{Headers as mx}from"effect/unstable/http";var fo={};Q(fo,{Framing:()=>fo,sse:()=>ux});var ux={id:"sse",frame:Gd};var yx=r((e,t)=>{if(!t)return e;let n=new URL(e);return Object.entries(t).forEach(([o,i])=>n.searchParams.set(o,i)),n.toString()},"applyQuery"),gx=new Set(["content","contents","frequencyPenalty","frequency_penalty","generationConfig","inferenceConfig","input","maxTokens","max_tokens","messages","model","presencePenalty","presence_penalty","responseFormat","response_format","seed","stop","stopSequences","stop_sequences","stream","streamOptions","stream_options","system","systemInstruction","system_instruction","temperature","thinking","toolChoice","toolConfig","tool_choice","tool_config","tools","topK","topP","top_k","top_p"]),Sx=r(e=>Object.keys(e).filter(t=>gx.has(t)),"forbiddenBodyOverlayKeys"),hx=r((e,t,n)=>ns.gen(function*(){if(t.http?.body===void 0)return{jsonBody:e,bodyText:n(e)};let o=Sx(t.http.body);if(o.length>0)return yield*ct(`http.body cannot overlay protocol-owned field(s): ${o.join(", ")}`);if(Ir(e)){let i=fi(e,t.http.body)??{};return{jsonBody:i,bodyText:Cn(i)}}return yield*ct("http.body can only overlay JSON object request bodies")}),"bodyWithOverlay"),os=r(e=>ns.gen(function*(){let t=yx(Xd(e.endpoint,{request:e.request,body:e.body}).toString(),e.request.http?.query),n=yield*hx(e.body,e.request,e.encodeBody),o=yield*Bt.toEffect(e.auth)({request:e.request,method:"POST",url:t,body:n.bodyText,headers:mx.fromInput({...e.headers?.({request:e.request}),...e.request.http?.headers})});return{url:t,jsonBody:n.jsonBody,bodyText:n.bodyText,headers:o}}),"jsonRequestParts"),ec=r(e=>({id:"http-json",with:r(t=>ec({...e,...t}),"with"),prepare:r(t=>os({...t}).pipe(ns.map(n=>({request:Yd({url:n.url,body:n.bodyText,headers:n.headers}),framing:e.framing}))),"prepare"),frames:r((t,n,o)=>ou.unwrap(o.http.execute(t.request).pipe(ns.map(i=>t.framing.frame(i.stream.pipe(ou.mapError(s=>Wr(`${n.model.provider}/${n.model.route.id}`,`Failed to read ${n.model.provider}/${n.model.route.id} stream`,Wd(s)))))))),"frames")}),"httpJson"),Ex={id:"http-json/sse",with:r(()=>ec({framing:fo.sse}),"with")};import{Cause as tc,Context as xx,Effect as Ve,Layer as Tx,Queue as Jr,Stream as is}from"effect";import"effect/unstable/http";var Di=class extends xx.Service()("@opencode/LLM/WebSocketExecutor"){static{r(this,"Service")}},dr=r((e,t,n={})=>new tt({module:"WebSocketExecutor",method:e,reason:new Rn({message:t,url:n.url,kind:n.kind})}),"transportError"),iu=r(e=>"message"in e&&typeof e.message=="string"?e.message:e.type,"eventMessage"),bx=r(e=>{if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)},"binaryMessage"),Rx=r((e,t)=>e.readyState===globalThis.WebSocket.OPEN?Ve.void:e.readyState===globalThis.WebSocket.CLOSING||e.readyState===globalThis.WebSocket.CLOSED?Ve.fail(dr("open",`WebSocket closed before opening (state ${e.readyState})`,{url:t.url,kind:"open"})):Ve.callback((n,o)=>{let i=r(()=>{e.removeEventListener("open",d),e.removeEventListener("error",p),e.removeEventListener("close",c),o.removeEventListener("abort",s)},"cleanup"),s=r(()=>{i(),e.readyState!==globalThis.WebSocket.CLOSED&&e.readyState!==globalThis.WebSocket.CLOSING&&e.close(1e3)},"onAbort"),d=r(()=>{i(),n(Ve.void)},"onOpen"),p=r(y=>{i(),n(Ve.fail(dr("open",`Failed to open WebSocket: ${iu(y)}`,{url:t.url,kind:"open"})))},"onError"),c=r(y=>{i(),n(Ve.fail(dr("open",`WebSocket closed before opening with code ${y.code}`,{url:t.url,kind:"open"})))},"onClose");e.addEventListener("open",d,{once:!0}),e.addEventListener("error",p,{once:!0}),e.addEventListener("close",c,{once:!0}),o.addEventListener("abort",s,{once:!0})}),"waitOpen"),Lx=r(e=>Ve.try({try:r(()=>{let t=new URL(e);if(t.protocol==="https:")return t.protocol="wss:",t.toString();if(t.protocol==="http:")return t.protocol="ws:",t.toString();throw new Error(`Unsupported WebSocket URL protocol ${t.protocol}`)},"try"),catch:r(t=>dr("prepare",t instanceof Error?t.message:"Invalid WebSocket URL",{url:e,kind:"websocket"}),"catch")}),"webSocketUrl"),au=r(e=>Ve.try({try:r(()=>new globalThis.WebSocket(e.url,{headers:e.headers}),"try"),catch:r(t=>dr("open",t instanceof Error?t.message:"Failed to construct WebSocket",{url:e.url,kind:"open"}),"catch")}).pipe(Ve.flatMap(t=>su(t,e))),"open"),Ix=Tx.succeed(Di,Di.of({open:au})),su=r((e,t)=>Ve.gen(function*(){yield*Rx(e,t);let n=yield*Jr.bounded(128),o=r(p=>{if(typeof p.data=="string")return Jr.offerUnsafe(n,p.data);let c=bx(p.data);if(c)return Jr.offerUnsafe(n,c);Jr.failCauseUnsafe(n,tc.fail(dr("message","Unsupported WebSocket message payload",{url:t.url,kind:"message"})))},"onMessage"),i=r(p=>{Jr.failCauseUnsafe(n,tc.fail(dr("message",`WebSocket error: ${iu(p)}`,{url:t.url,kind:"message"})))},"onError"),s=r(p=>{if(p.code===1e3||p.code===1005)return Jr.endUnsafe(n);Jr.failCauseUnsafe(n,tc.fail(dr("message",`WebSocket closed with code ${p.code}`,{url:t.url,kind:"close"})))},"onClose"),d=Ve.sync(()=>{e.removeEventListener("message",o),e.removeEventListener("error",i),e.removeEventListener("close",s)}).pipe(Ve.andThen(Jr.shutdown(n)));return e.addEventListener("message",o),e.addEventListener("error",i),e.addEventListener("close",s),{sendText:r(p=>Ve.try({try:r(()=>e.send(p),"try"),catch:r(c=>dr("sendText",c instanceof Error?c.message:"Failed to send WebSocket message",{url:t.url,kind:"write"}),"catch")}),"sendText"),messages:is.fromQueue(n),close:d.pipe(Ve.andThen(Ve.sync(()=>{e.readyState===globalThis.WebSocket.CLOSED||e.readyState===globalThis.WebSocket.CLOSING||e.close(1e3)})))}}),"fromWebSocket"),du=r((e,t)=>typeof e=="string"?e:t.decode(e),"messageText"),rc=r(e=>({id:"websocket-json",with:r(t=>rc({...e,...t}),"with"),prepare:r(t=>Ve.gen(function*(){let n=yield*os({...t});return{url:yield*Lx(n.url),headers:n.headers,message:e.encodeMessage(yield*e.toMessage(n.jsonBody))}}),"prepare"),frames:r((t,n,o)=>{let i=o.webSocket;if(!i)return is.fail(dr("json","WebSocket JSON transport requires WebSocketExecutor.Service",{url:t.url,kind:"websocket"}));let s=new TextDecoder;return is.unwrap(Ve.gen(function*(){let d=yield*Ve.acquireRelease(i.open({url:t.url,headers:t.headers}),p=>p.close);return yield*d.sendText(t.message),d.messages.pipe(is.map(p=>du(p,s)))}))},"frames")}),"json"),vx={id:"websocket-json",with:rc},as={Service:Di,layer:Ix,open:au,fromWebSocket:su,messageText:du},cu={json:rc,jsonTransport:vx};var Cx={tools:!0,system:!0,messages:"latest-user-message"},wx={},Ax=r(e=>e===void 0||e==="auto"?Cx:e==="none"?wx:e,"resolve"),Px=new Set(["anthropic-messages","bedrock-converse"]),kx=r(e=>e!==void 0?new sr({type:"ephemeral",ttlSeconds:e}):new sr({type:"ephemeral"}),"makeHint"),Mx=r((e,t)=>{if(e.length===0)return e;let n=e.length-1;return e[n].cache?e:e.map((o,i)=>i===n?new vr({...o,cache:t}):o)},"markLastTool"),_x=r((e,t)=>{if(e.length===0)return e;let n=e.length-1;return e[n].cache?e:e.map((o,i)=>i===n?{...o,cache:t}:o)},"markLastSystem"),lu=r((e,t)=>e.findLastIndex(n=>n.role===t),"lastIndexOfRole"),nc=r((e,t,n)=>{if(t<0||t>=e.length)return e;let o=e[t];if(o.content.length===0)return e;let i=o.content.findLastIndex(g=>g.type==="text"),s=i>=0?i:o.content.length-1,d=o.content[s];if("cache"in d&&d.cache)return e;let p=o.content.map((g,m)=>m===s?{...g,cache:n}:g),c=new Gt({...o,content:p}),y=e.slice();return y[t]=c,y},"markMessageAt"),Ox=r((e,t,n)=>{if(e.length===0)return e;if(t==="latest-user-message")return nc(e,lu(e,"user"),n);if(t==="latest-assistant")return nc(e,lu(e,"assistant"),n);let o=Math.max(0,e.length-t.tail),i=e;for(let s=o;s<e.length;s++)i=nc(i,s,n);return i},"markMessages"),pu=r(e=>{if(!Px.has(e.model.route.id))return e;let t=Ax(e.cache);if(!t.tools&&!t.system&&!t.messages)return e;let n=kx(t.ttlSeconds),o=t.tools?Mx(e.tools,n):e.tools,i=t.system?_x(e.system,n):e.system,s=t.messages?Ox(e.messages,t.messages,n):e.messages;return o===e.tools&&i===e.system&&s===e.messages?e:jr.update(e,{tools:o,system:i,messages:s})},"applyCachePolicy");var qx=r((e,t)=>{let n=e.provider??("provider"in t?t.provider:void 0);if(!n)throw new Error(`Route.model(${e.id}) requires a provider`);if(!Fx(e.endpoint))throw new Error(`Route.model(${e.id}) requires an endpoint baseURL \u2014 configure it on the route first`);return pi.make({...t,provider:n,route:e})},"makeRouteModel"),uu=r((e,t)=>{let n=Bx(e?.headers,t.headers);return{...e,...t,headers:n,limits:t.limits===void 0?e?.limits:zr.make(t.limits),generation:Md(mu(e?.generation),mu(t.generation)),providerOptions:Pd(e?.providerOptions,t.providerOptions),http:kd(e?.http,Ux(t.http),n===void 0?void 0:new Nt({headers:n}))}},"mergeRouteDefaults"),Fx=r(e=>typeof e.baseURL=="string"?e.baseURL:void 0,"endpointBaseURL"),Bx=r((...e)=>{let t=e.flatMap(n=>n===void 0?[]:Object.entries(n).filter(o=>o[1]!==void 0));if(t.length!==0)return Object.fromEntries(t)},"mergeHeaders"),mu=r(e=>e===void 0?void 0:qt.make(e),"generationOptions"),Ux=r(e=>e===void 0?e:Nt.make(e),"httpOptions"),An=class extends Qx.Service()("@opencode/LLMClient"){static{r(this,"Service")}},Hx=r(e=>{let t=e.model.route.defaults,n=e.model.defaults,o=Md(t.generation,n?.generation,e.generation);return jr.update(e,{generation:o??new qt({}),providerOptions:Pd(t.providerOptions,n?.providerOptions,e.providerOptions),http:kd(t.http,n?.http,e.http)})},"resolveRequestOptions"),Kx=r((e,t,n)=>{let o=n.reasons.find(fu.isFailReason)?.error;return o instanceof tt?o:Wr(e,t,fu.pretty(n))},"streamError");function yu(e){let t=e.protocol,n=ss.encodeSync(ss.fromJsonString(t.body.schema)),o=ss.decodeUnknownEffect(t.stream.event),i=r(d=>p=>o(p).pipe(cr.mapError(()=>Wr(e.id,`Invalid ${d} stream event`,typeof p=="string"?p:Cn(p)))),"decodeEvent"),s=r(d=>{let p={id:d.id,provider:d.provider===void 0?void 0:ro.make(d.provider),protocol:t.id,endpoint:d.endpoint,auth:d.auth??Bt.none,transport:d.transport,defaults:d.defaults??{},body:t.body,with:r(c=>{let{id:y,provider:g,auth:m,transport:f,endpoint:l,...L}=c;return s({...d,id:y??d.id,provider:g??d.provider,auth:m??d.auth,endpoint:l?lo.merge(d.endpoint,l):d.endpoint,transport:f??d.transport,defaults:uu(p.defaults,L)})},"with"),model:r(c=>qx(p,c),"model"),prepareTransport:r((c,y)=>d.transport.prepare({body:c,request:y,endpoint:d.endpoint,auth:d.auth??Bt.none,encodeBody:n,headers:d.headers}),"prepareTransport"),streamPrepared:r((c,y,g)=>{let m=`${y.model.provider}/${y.model.route.id}`;return d.transport.frames(c,y,g).pipe(Yr.mapEffect(i(m)),t.stream.terminal?Yr.takeUntil(t.stream.terminal):l=>l).pipe(Yr.mapAccumEffect(()=>t.stream.initial(y),t.stream.step,t.stream.onHalt?{onHalt:t.stream.onHalt}:void 0),Yr.catchCause(l=>Yr.fail(Kx(m,`Failed to read ${m} stream`,l))))},"streamPrepared")};return p},"build");return s({...e,defaults:uu(void 0,e.defaults??{})})}r(yu,"makeFromTransport");function zx(e){if("transport"in e)return yu(e);let t=e.protocol;return yu({id:e.id,provider:e.provider,protocol:t,endpoint:e.endpoint,auth:e.auth,headers:e.headers,transport:uo.httpJson({framing:e.framing}),defaults:e.defaults})}r(zx,"make");var Su=cr.fn("LLM.compile")(function*(e){let t=pu(Hx(e)),n=t.model.route,o=yield*n.body.from(t).pipe(cr.flatMap(Jd(ss.decodeUnknownEffect(n.body.schema)))),i=yield*n.prepareTransport(o,t);return{request:t,route:n,body:o,prepared:i}}),hu=cr.fn("LLMClient.prepare")(function*(e){let t=yield*Su(e);return new Ya({id:t.request.id??"request",route:t.route.id,protocol:t.route.protocol,model:t.request.model,body:t.body,metadata:{transport:t.route.transport.id}})}),jx=r(e=>t=>Yr.unwrap(cr.gen(function*(){let n=yield*Su(t);return n.route.streamPrepared(n.prepared,n.request,e)})),"streamRequestWith"),Vx=r(e=>cr.fn("LLM.generate")(function*(t){let n=yield*e(t).pipe(Yr.runFold($r.empty,$r.reduce)),o=$r.complete(n);return o||(yield*Wr(`${t.model.provider}/${t.model.route.id}`,"Provider stream ended without a terminal finish event"))}),"generateWith"),$x=r(e=>hu(e),"prepare");function Wx(e){return Yr.unwrap(cr.gen(function*(){return(yield*An).stream(e)}))}r(Wx,"stream");function Gx(e){return cr.gen(function*(){return yield*(yield*An).generate(e)})}r(Gx,"generate");var Jx=Nx.effect(An,cr.gen(function*(){let e=jx({http:yield*Gr.Service,webSocket:gu.getOrUndefined(yield*cr.serviceOption(as.Service))});return An.of({prepare:hu,stream:e,generate:Vx(e)})})),Yx={make:zx},ds={Service:An,layer:Jx,prepare:$x,stream:Wx,generate:Gx};var cs={};Q(cs,{AuthOptions:()=>cs,bearer:()=>Xx});var Xx=r((e,t)=>"auth"in e&&e.auth?e.auth:(Array.isArray(t)?t:[t]).reduce((n,o)=>n.orElse(Bt.config(o)),Bt.optional("apiKey"in e?e.apiKey:void 0,"apiKey")).bearer(),"bearer");var ls={};Q(ls,{Protocol:()=>ls,jsonEvent:()=>tT,make:()=>eT});import{Schema as Zx}from"effect";var eT=r(e=>e,"make"),tT=r(e=>Zx.fromJsonString(e),"jsonEvent");import{FileSystem as oT,Path as iT}from"effect";import{FetchHttpClient as aT}from"effect/unstable/http";import{HttpClient as sT}from"effect/unstable/http";var Ci=Te({service:oT.FileSystem,layer:rT.layer,deps:[]}),oc=Te({service:iT.Path,layer:nT.layer,deps:[]}),Eu=Te({service:sT.HttpClient,layer:aT.layer,deps:[]}),xu=Te({service:Gr.Service,layer:Gr.layer,deps:[Eu]}),dT=Te({service:ds.Service,layer:ds.layer,deps:[xu]});import"@effect/platform-node";import{dirname as us,isAbsolute as uT,join as ac,relative as mT,resolve as sc,sep as yT}from"path";import{realpathSync as Tu}from"fs";import*as ys from"fs/promises";import{lookup as gT}from"mime-types";import{Context as ST,Effect as ie,FileSystem as hT,Layer as ET,Schema as ms}from"effect";import{glob as cT,globSync as lT}from"glob";import{minimatch as pT}from"minimatch";var ps;(i=>{function e(s){return{cwd:s.cwd,absolute:s.absolute,dot:s.dot,follow:s.symlink??!1,nodir:s.include!=="all"}}r(e,"toGlobOptions");async function t(s,d={}){return cT(s,e(d))}i.scan=t,r(t,"scan");function n(s,d={}){return lT(s,e(d))}i.scanSync=n,r(n,"scanSync");function o(s,d){return pT(d,s,{dot:!0})}i.match=o,r(o,"match")})(ps||={});import Xr from"path";import{realpathSync as fT}from"fs";var fs;(y=>{y.ALLOWED=[".alchemy_lab",".opencode",".alchemy",".git","opencode.json",".alchemy-project-creation.lock"];let t="ALCHEMY_PROTECTED_ROOT",n;function o(g){let m=Xr.resolve(g),f=[];for(;;)try{return Xr.join(fT(m),...f.reverse())}catch{let l=Xr.dirname(m);if(l===m)return Xr.resolve(g);f.push(Xr.basename(m)),m=l}}r(o,"realish");let i=r((g,m)=>process.platform==="win32"?g.toLowerCase()===m.toLowerCase():g===m,"same"),s=r((g,m)=>i(g,m)||i(g+Xr.sep,m.slice(0,g.length+1)),"within");function d(){let g=process.env[t];return(!n||n.raw!==g)&&(n={raw:g,root:g&&g.trim()?o(g.trim()):void 0}),n.root}y.dir=d,r(d,"dir");function p(g){let m=d();if(!m||!g)return!0;let f=o(g);return s(m,f)?y.ALLOWED.some(l=>s(Xr.join(m,l),f)):!0}y.allows=p,r(p,"allows");function c(g,m){if(!g||p(g))return;let f=d();throw new Error(`${m} refused: ${g} is in the project folder, which belongs to the user. AlchemyLab works in a request worktree under ${Xr.join(f,".alchemy_lab")} and lands changes through its merge. Nothing was written.`)}y.assert=c,r(c,"assert")})(fs||={});var Jt;(f=>{class e extends ms.TaggedErrorClass()("FileSystemError",{method:ms.String,cause:ms.optional(ms.Defect())}){static{r(this,"FileSystemError")}get message(){let L=this.cause instanceof Error?this.cause.message:this.cause&&String(this.cause);return`Filesystem operation failed: ${this.method}${L?`: ${L}`:""}`}}f.FileSystemError=e;class t extends ST.Service()("@opencode/FileSystem"){static{r(this,"Service")}}f.Service=t,f.use=Jp(t);let o=ET.effect(t,ie.gen(function*(){let l=yield*hT.FileSystem,L=r((M,$,Z)=>ie.suspend(()=>(fs.assert(M,$),Z())),"guarded"),D={...l,writeFile:r((M,$,Z)=>L(M,"write",()=>l.writeFile(M,$,Z)),"writeFile"),writeFileString:r((M,$,Z)=>L(M,"write",()=>l.writeFileString(M,$,Z)),"writeFileString"),remove:r((M,$)=>L(M,"remove",()=>l.remove(M,$)),"remove"),rename:r((M,$)=>L(M,"rename",()=>L($,"rename",()=>l.rename(M,$))),"rename"),copy:r((M,$,Z)=>L($,"copy",()=>l.copy(M,$,Z)),"copy"),copyFile:r((M,$)=>L($,"copy",()=>l.copyFile(M,$)),"copyFile")},U=ie.fn("FileSystem.existsSafe")(function*(M){return yield*D.exists(M).pipe(ie.orElseSucceed(()=>!1))}),A=ie.fn("FileSystem.readFileStringSafe")(function*(M){return yield*D.readFileString(M).pipe(ie.catchReason("PlatformError","NotFound",()=>ie.succeed(void 0)),ie.catchReason("PlatformError","PermissionDenied",()=>ie.succeed(void 0)))}),_=ie.fn("FileSystem.isDir")(function*(M){return(yield*D.stat(M).pipe(ie.catch(()=>ie.void)))?.type==="Directory"}),x=ie.fn("FileSystem.isFile")(function*(M){return(yield*D.stat(M).pipe(ie.catch(()=>ie.void)))?.type==="File"}),B=ie.fn("FileSystem.readDirectoryEntries")(function*(M){return yield*ie.tryPromise({try:r(async()=>(await ys.readdir(M,{withFileTypes:!0})).map(Z=>({name:Z.name,type:Z.isDirectory()?"directory":Z.isSymbolicLink()?"symlink":Z.isFile()?"file":"other"})),"try"),catch:r($=>new e({method:"readDirectoryEntries",cause:$}),"catch")})}),F=ie.fn("FileSystem.resolve")(function*(M){let $=sc(y(M));return yield*D.realPath($).pipe(ie.catchReason("PlatformError","NotFound",()=>ie.succeed($)),ie.orDie)}),T=ie.fn("FileSystem.readJson")(function*(M){let $=yield*D.readFileString(M);return yield*ie.try({try:r(()=>JSON.parse($),"try"),catch:r(Z=>new e({method:"readJson",cause:Z}),"catch")})}),R=ie.fn("FileSystem.writeJson")(function*(M,$,Z){fs.assert(M,"write");let Se=JSON.stringify($,null,2),ue=`${M}.tmp-${process.pid}-${Math.random().toString(36).slice(2,8)}`;yield*D.writeFileString(ue,Se),Z&&(yield*D.chmod(ue,Z)),yield*ie.tryPromise({try:r(()=>ys.rename(ue,M),"try"),catch:r(ot=>new e({method:"writeJson.rename",cause:ot}),"catch")})}),C=ie.fn("FileSystem.ensureDir")(function*(M){yield*D.makeDirectory(M,{recursive:!0}).pipe(ie.catchIf($=>$.reason._tag==="AlreadyExists",$=>_(M).pipe(ie.flatMap(Z=>Z?ie.void:ie.fail($)))))}),k=ie.fn("FileSystem.writeWithDirs")(function*(M,$,Z){let Se=typeof $=="string"?D.writeFileString(M,$):D.writeFile(M,$);yield*Se.pipe(ie.catchIf(ue=>ue.reason._tag==="NotFound",()=>ie.gen(function*(){yield*D.makeDirectory(us(M),{recursive:!0}),yield*Se}))),Z&&(yield*D.chmod(M,Z))}),K=ie.fn("FileSystem.glob")(function*(M,$){return yield*ie.tryPromise({try:r(()=>ps.scan(M,$),"try"),catch:r(Z=>new e({method:"glob",cause:Z}),"catch")})}),Y=ie.fn("FileSystem.findUp")(function*(M,$,Z){let Se=[],ue=$;for(;;){let ot=ac(ue,M);if((yield*D.exists(ot))&&Se.push(ot),Z===ue)break;let u=us(ue);if(u===ue)break;ue=u}return Se}),de=ie.fn("FileSystem.up")(function*(M){let $=[],Z=M.start;for(;;){for(let ue of M.targets){let ot=ac(Z,ue);(yield*D.exists(ot))&&$.push(ot)}if(M.stop===Z)break;let Se=us(Z);if(Se===Z)break;Z=Se}return $}),qe=ie.fn("FileSystem.globUp")(function*(M,$,Z){let Se=[],ue=$;for(;;){let ot=yield*K(M,{cwd:ue,absolute:!0,include:"file",dot:!0}).pipe(ie.catch(()=>ie.succeed([])));if(Se.push(...ot),Z===ue)break;let u=us(ue);if(u===ue)break;ue=u}return Se});return t.of({...D,existsSafe:U,readFileStringSafe:A,isDir:_,isFile:x,readDirectoryEntries:B,resolve:F,readJson:T,writeJson:R,ensureDir:C,writeWithDirs:k,findUp:Y,up:de,globUp:qe,glob:K,globMatch:ps.match})}));f.node=Te({service:t,layer:o,deps:[Ci]});function s(l){return gT(l)||"application/octet-stream"}f.mimeType=s,r(s,"mimeType");function d(l){if(process.platform!=="win32")return l;let L=sc(y(l));try{return Tu.native(L)}catch{return L}}f.normalizePath=d,r(d,"normalizePath");function p(l){if(process.platform!=="win32"||l==="*")return l;let L=l.match(/^(.*)[\\/]\*$/);if(!L)return d(l);let D=/^[A-Za-z]:$/.test(L[1])?L[1]+"\\":L[1];return ac(d(D),"*")}f.normalizePathPattern=p,r(p,"normalizePathPattern");function c(l){let L=sc(y(l));try{return d(Tu(L))}catch(D){if(D?.code==="ENOENT")return d(L);throw D}}f.resolve=c,r(c,"resolve");function y(l){return process.platform!=="win32"?l:l.replace(/^\/([a-zA-Z]):(?:[\\/]|$)/,(L,D)=>`${D.toUpperCase()}:/`).replace(/^\/([a-zA-Z])(?:\/|$)/,(L,D)=>`${D.toUpperCase()}:/`).replace(/^\/cygdrive\/([a-zA-Z])(?:\/|$)/,(L,D)=>`${D.toUpperCase()}:/`).replace(/^\/mnt\/([a-zA-Z])(?:\/|$)/,(L,D)=>`${D.toUpperCase()}:/`)}f.windowsPath=y,r(y,"windowsPath");function g(l,L){return m(l,L)||m(L,l)}f.overlaps=g,r(g,"overlaps");function m(l,L){let D=mT(l,L);return D===""||!uT(D)&&D!==".."&&!D.startsWith(`..${yT}`)}f.contains=m,r(m,"contains")})(Jt||={});var yo={};Q(yo,{AppProcess:()=>yo,AppProcessError:()=>ur,Service:()=>mo,abortError:()=>cc,collectStream:()=>Ai,node:()=>qT,requireExitIn:()=>OT,requireSuccess:()=>_T,waitForAbort:()=>lc});import{Context as wT,Effect as Le,Fiber as AT,Layer as PT,Schema as en,Stream as Tt}from"effect";import{ChildProcess as kT}from"effect/unstable/process";import{ChildProcessSpawner as MT}from"effect/unstable/process/ChildProcessSpawner";var wi={};Q(wi,{CrossSpawnSpawner:()=>wi,make:()=>Pu,node:()=>CT});import{NodeSink as bu,NodeStream as dc}from"@effect/platform-node";import"@effect/platform-node/NodePath";import*as xt from"effect/Deferred";import*as j from"effect/Effect";import*as Ru from"effect/Exit";import*as Lu from"effect/FileSystem";import*as Iu from"effect/Layer";import*as vu from"effect/Path";import*as Du from"effect/PlatformError";import*as Et from"effect/Predicate";import*as pr from"effect/Sink";import*as Ue from"effect/Stream";import*as fr from"effect/unstable/process/ChildProcess";import{ChildProcessSpawner as Cu,ExitCode as xT,make as TT,makeHandle as bT,ProcessId as RT}from"effect/unstable/process/ChildProcessSpawner";import*as wu from"node:child_process";import{PassThrough as LT}from"node:stream";import IT from"cross-spawn";var Zr=r(e=>e instanceof globalThis.Error?e:new globalThis.Error(String(e)),"toError"),vT=r(e=>{switch(e.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"),Au=r(e=>{let t=[],n=[],o=r(d=>{switch(d._tag){case"StandardCommand":t.push(d);return;case"PipedCommand":o(d.left),n.push(d.options),o(d.right);return}},"walk");if(o(e),t.length===0)throw new Error("flatten produced empty commands array");let[i,...s]=t;return{commands:[i,...s],opts:n}},"flatten"),lr=r((e,t,n)=>{let o=Au(n).commands.map(i=>`${i.command} ${i.args.join(" ")}`).join(" | ");return Du.systemError({_tag:vT(t),module:"ChildProcess",method:e,pathOrDescriptor:o,syscall:t.syscall,cause:t})},"toPlatformError"),Pu=j.gen(function*(){let e=yield*Lu.FileSystem,t=yield*vu.Path,n=j.fnUntraced(function*(x){if(!Et.isUndefined(x.cwd))return yield*e.access(x.cwd),t.resolve(x.cwd)}),o=r(x=>x.extendEnv?{...globalThis.process.env,...x.env}:x.env,"env"),i=r(x=>Ue.isStream(x)?"pipe":x,"input"),s=r(x=>pr.isSink(x)?"pipe":x,"output"),d=r(x=>{let B={stream:"pipe",encoding:"utf-8",endOnDone:!0};return Et.isUndefined(x.stdin)?B:typeof x.stdin=="string"?{...B,stream:x.stdin}:Ue.isStream(x.stdin)?{...B,stream:x.stdin}:{stream:x.stdin.stream,encoding:x.stdin.encoding??B.encoding,endOnDone:x.stdin.endOnDone??B.endOnDone}},"stdin"),p=r((x,B)=>{let F=x[B];return Et.isUndefined(F)?{stream:"pipe"}:typeof F=="string"?{stream:F}:pr.isSink(F)?{stream:F}:{stream:F.stream}},"stdio"),c=r(x=>Et.isUndefined(x.additionalFds)?[]:Object.entries(x.additionalFds).flatMap(([B,F])=>{let T=fr.parseFdName(B);return Et.isUndefined(T)?[]:[{fd:T,config:F}]}).toSorted((B,F)=>B.fd-F.fd),"fds"),y=r((x,B,F,T)=>{let R=r(K=>process.platform==="win32"&&K==="pipe"?"overlapped":K,"pipe"),C=[R(i(x.stream)),R(s(B.stream)),R(s(F.stream))];if(T.length===0)return C;let k=T.reduce((K,Y)=>Math.max(K,Y.fd),2);for(let K=3;K<=k;K++)C[K]="ignore";for(let K of T)C[K.fd]=R("pipe");return C},"stdios"),g=j.fnUntraced(function*(x,B,F){if(F.length===0)return{getInputFd:r(()=>pr.drain,"getInputFd"),getOutputFd:r(()=>Ue.empty,"getOutputFd")};let T=new Map,R=new Map;for(let C of F){let k=B.stdio[C.fd];switch(C.config.type){case"input":{let K=pr.drain;k&&"write"in k&&(K=bu.fromWritable({evaluate:r(()=>k,"evaluate"),onError:r(Y=>lr(`fromWritable(fd${C.fd})`,Zr(Y),x),"onError"),endOnDone:!0})),C.config.stream&&(yield*j.forkScoped(Ue.run(C.config.stream,K))),T.set(C.fd,K);break}case"output":{let K=Ue.empty;if(k&&"read"in k){let Y=new LT;k.on("error",de=>Y.destroy(Zr(de))),k.pipe(Y),K=dc.fromReadable({evaluate:r(()=>Y,"evaluate"),onError:r(de=>lr(`fromReadable(fd${C.fd})`,Zr(de),x),"onError")})}C.config.sink&&(K=Ue.transduce(K,C.config.sink)),R.set(C.fd,K);break}}}return{getInputFd:r(C=>T.get(C)??pr.drain,"getInputFd"),getOutputFd:r(C=>R.get(C)??Ue.empty,"getOutputFd")}}),m=r((x,B,F)=>j.suspend(()=>{let T=pr.drain;return Et.isNotNull(B.stdin)&&(T=bu.fromWritable({evaluate:r(()=>B.stdin,"evaluate"),onError:r(R=>lr("fromWritable(stdin)",Zr(R),x),"onError"),endOnDone:F.endOnDone,encoding:F.encoding})),Ue.isStream(F.stream)?j.as(j.forkScoped(Ue.run(F.stream,T)),T):j.succeed(T)}),"setupStdin"),f=r((x,B,F,T)=>{let R=B.stdout?dc.fromReadable({evaluate:r(()=>B.stdout,"evaluate"),onError:r(k=>lr("fromReadable(stdout)",Zr(k),x),"onError")}):Ue.empty,C=B.stderr?dc.fromReadable({evaluate:r(()=>B.stderr,"evaluate"),onError:r(k=>lr("fromReadable(stderr)",Zr(k),x),"onError")}):Ue.empty;return pr.isSink(F.stream)&&(R=Ue.transduce(R,F.stream)),pr.isSink(T.stream)&&(C=Ue.transduce(C,T.stream)),{stdout:R,stderr:C,all:Ue.merge(R,C)}},"setupOutput"),l=r((x,B)=>j.callback(F=>{let T=xt.makeUnsafe(),R=IT(x.command,x.args,B),C=!1,k;return R.on("error",K=>{F(j.fail(lr("spawn",K,x)))}),R.on("exit",(...K)=>{k=K}),R.on("close",(...K)=>{C||(C=!0,xt.doneUnsafe(T,Ru.succeed(k??K)))}),R.on("spawn",()=>{F(j.succeed([R,T]))}),j.sync(()=>{R.kill("SIGTERM")})}),"spawn"),L=r((x,B,F)=>globalThis.process.platform==="win32"?j.callback(T=>{wu.exec(`taskkill /pid ${B.pid} /T /F`,{windowsHide:!0},R=>{if(R)return T(j.fail(lr("kill",Zr(R),x)));T(j.void)})}):j.try({try:r(()=>{globalThis.process.kill(-B.pid,F)},"try"),catch:r(T=>lr("kill",Zr(T),x),"catch")}),"killGroup"),D=r((x,B,F)=>j.suspend(()=>B.kill(F)?j.void:j.fail(lr("kill",new Error("Failed to kill child process"),x))),"killOne"),U=r((x,B,F)=>T=>{let R=F?.killSignal??"SIGTERM";return Et.isUndefined(F?.forceKillAfter)?T(B,x,R):j.timeoutOrElse(T(B,x,R),{duration:F.forceKillAfter,orElse:r(()=>T(B,x,"SIGKILL"),"orElse")})},"timeout"),A=r((x,B)=>{let F=B??"stdout";switch(F){case"stdout":return x.stdout;case"stderr":return x.stderr;case"all":return x.all;default:{let T=fr.parseFdName(F);return Et.isNotUndefined(T)?x.getOutputFd(T):x.stdout}}},"source"),_=j.fnUntraced(function*(x){switch(x._tag){case"StandardCommand":{let B=d(x.options),F=p(x.options,"stdout"),T=p(x.options,"stderr"),R=c(x.options),C=yield*n(x.options),[k,K]=yield*j.acquireRelease(l(x,{cwd:C,env:o(x.options),stdio:y(B,F,T,R),detached:x.options.detached??process.platform!=="win32",shell:x.options.shell,windowsHide:process.platform==="win32"}),j.fnUntraced(function*([M,$]){let Z=yield*xt.isDone($),Se=U(M,x,x.options);if(Z){let[q]=yield*xt.await($);return process.platform==="win32"?yield*j.void:q!==0&&Et.isNotNull(q)?yield*j.ignore(Se(L)):yield*j.void}let ue=r(q=>j.catch(L(x,M,q),()=>D(x,M,q)),"send"),ot=x.options.killSignal??"SIGTERM",u=ue(ot).pipe(j.andThen(xt.await($)),j.asVoid),P=x.options.forceKillAfter?j.timeoutOrElse(u,{duration:x.options.forceKillAfter,orElse:r(()=>ue("SIGKILL").pipe(j.andThen(xt.await($)),j.asVoid),"orElse")}):u;return yield*j.ignore(P)})),Y=yield*g(x,k,R),de=f(x,k,F,T),qe=!0;return bT({pid:RT(k.pid),stdin:yield*m(x,k,B),stdout:de.stdout,stderr:de.stderr,all:de.all,getInputFd:Y.getInputFd,getOutputFd:Y.getOutputFd,isRunning:j.map(xt.isDone(K),M=>!M),exitCode:j.flatMap(xt.await(K),([M,$])=>Et.isNotNull(M)?j.succeed(xT(M)):j.fail(lr("exitCode",new Error(`Process interrupted due to receipt of signal: '${$}'`),x))),kill:r(M=>{let $=M?.killSignal??"SIGTERM",Z=r(ue=>j.catch(L(x,k,ue),()=>D(x,k,ue)),"send"),Se=Z($).pipe(j.andThen(xt.await(K)),j.asVoid);return M?.forceKillAfter?j.timeoutOrElse(Se,{duration:M.forceKillAfter,orElse:r(()=>Z("SIGKILL").pipe(j.andThen(xt.await(K)),j.asVoid),"orElse")}):Se},"kill"),unref:j.sync(()=>(qe&&(k.unref(),qe=!1),j.sync(()=>{qe||(k.ref(),qe=!0)})))})}case"PipedCommand":{let B=Au(x),[F,...T]=B.commands,R=_(F);for(let C=0;C<T.length;C++){let k=T[C],K=B.opts[C]??{},Y=d(k.options),de=Ue.unwrap(j.map(R,$=>A($,K.from))),qe=K.to??"stdin";if(qe==="stdin"){R=_(fr.make(k.command,k.args,{...k.options,stdin:{...Y,stream:de}}));continue}let M=fr.parseFdName(qe);if(Et.isUndefined(M)){R=_(fr.make(k.command,k.args,{...k.options,stdin:{...Y,stream:de}}));continue}R=_(fr.make(k.command,k.args,{...k.options,additionalFds:{...k.options.additionalFds,[fr.fdName(M)]:{type:"input",stream:de}}}))}return yield*R}}});return TT(_)}),DT=Iu.effect(Cu,Pu),CT=Te({service:Cu,layer:DT,deps:[Ci,oc]});var ur=class extends en.TaggedErrorClass()("AppProcessError",{command:en.String,exitCode:en.optional(en.Number),stderr:en.optional(en.String),cause:en.optional(en.Defect())}){static{r(this,"AppProcessError")}get message(){let t=this.stderr?.trim()||(this.cause instanceof Error?this.cause.message:this.cause&&String(this.cause));return`Command failed${this.exitCode===void 0?"":` (exit ${this.exitCode})`}: ${this.command}${t?`: ${t}`:""}`}},mo=class extends wT.Service()("@opencode/AppProcess"){static{r(this,"Service")}},_T=r(e=>e.exitCode===0?Le.succeed(e):Le.fail(new ur({command:e.command,exitCode:e.exitCode,stderr:e.stderr.toString("utf8")})),"requireSuccess"),OT=r(e=>t=>e.includes(t.exitCode)?Le.succeed(t):Le.fail(new ur({command:t.command,exitCode:t.exitCode,stderr:t.stderr.toString("utf8")})),"requireExitIn"),Pi=r(e=>e._tag==="StandardCommand"?e.args.length?`${e.command} ${e.args.join(" ")}`:e.command:`${Pi(e.left)} | ${Pi(e.right)}`,"describeCommand"),gs=r((e,t)=>t instanceof ur?t:new ur({command:e,cause:t}),"wrapError"),cc=r(e=>{let t=e.reason;if(t instanceof Error)return t;let n=new Error("Aborted");return n.name="AbortError",n},"abortError"),lc=r(e=>Le.callback(t=>{if(e.aborted){t(Le.fail(cc(e)));return}let n=r(()=>t(Le.fail(cc(e))),"onabort");return e.addEventListener("abort",n,{once:!0}),Le.sync(()=>e.removeEventListener("abort",n))}),"waitForAbort"),QT=r(e=>typeof e=="string"?Tt.make(new TextEncoder().encode(e)):e instanceof Uint8Array?Tt.make(e):e,"normalizeStdin"),Ai=r((e,t)=>Tt.runFold(e,()=>({chunks:[],bytes:0,truncated:!1}),(n,o)=>{if(t===void 0)return n.chunks.push(o),n.bytes+=o.length,n;let i=t-n.bytes;return i>0&&n.chunks.push(i>=o.length?o:o.slice(0,i)),n.bytes+=o.length,n.truncated=n.truncated||n.bytes>t,n}).pipe(Le.map(n=>({buffer:Buffer.concat(n.chunks),truncated:n.truncated}))),"collectStream"),NT=PT.effect(mo,Le.gen(function*(){let e=yield*MT,t=r((i,s)=>{let d=Pi(i),p=Le.scoped(Le.gen(function*(){let g=yield*e.spawn(i);if(s?.combineOutput){let[L,D]=yield*Le.all([Ai(g.all,s.maxOutputBytes),g.exitCode],{concurrency:"unbounded"});return{command:d,exitCode:D,output:L.buffer,stdout:Buffer.alloc(0),stderr:Buffer.alloc(0),outputTruncated:L.truncated,stdoutTruncated:!1,stderrTruncated:!1}}let[m,f,l]=yield*Le.all([Ai(g.stdout,s?.maxOutputBytes),Ai(g.stderr,s?.maxErrorBytes),g.exitCode],{concurrency:"unbounded"});return{command:d,exitCode:l,stdout:m.buffer,stderr:f.buffer,stdoutTruncated:m.truncated,stderrTruncated:f.truncated}})),c=s?.timeout?Le.timeoutOrElse(p,{duration:s.timeout,orElse:r(()=>Le.fail(new ur({command:d,cause:new Error("Timed out")})),"orElse")}):p;return(s?.signal?c.pipe(Le.raceFirst(lc(s.signal).pipe(Le.mapError(g=>gs(d,g))))):c).pipe(Le.catch(g=>Le.fail(gs(d,g))))},"runCommand"),n=Le.fn("AppProcess.run")(function*(i,s){if(s?.stdin===void 0)return yield*t(i,s);if(i._tag!=="StandardCommand")return yield*new ur({command:Pi(i),cause:new Error("stdin option only supports StandardCommand; received PipedCommand")});let d=kT.make(i.command,i.args,{...i.options,stdin:QT(s.stdin)});return yield*t(d,s)}),o=r((i,s)=>{let d=Pi(i),p=s?.okExitCodes,y=Tt.unwrap(Le.gen(function*(){let m=yield*e.spawn(i),f=yield*Le.forkScoped(Ai(m.stderr,s?.maxErrorBytes).pipe(Le.map(U=>U.buffer.toString("utf8")))),L=(s?.includeStderr===!0?m.all:m.stdout).pipe(Tt.decodeText,Tt.splitLines,Tt.filter(U=>U.length>0)),D=Tt.unwrap(Le.gen(function*(){let U=yield*m.exitCode;if(p&&p.length>0&&!p.includes(U)){let A=yield*AT.join(f);return Tt.fail(new ur({command:d,exitCode:U,stderr:A}))}return Tt.empty}));return Tt.concat(L,D)})).pipe(Tt.catch(m=>Tt.fail(gs(d,m))));if(!s?.signal)return y;let g=s.signal;return y.pipe(Tt.interruptWhen(lc(g).pipe(Le.mapError(m=>gs(d,m)))))},"runStream");return mo.of({...e,run:n,runStream:o})})),qT=Te({service:mo,layer:NT,deps:[wi.node]});var be={};Q(be,{AgentSwitched:()=>_u,Assistant:()=>Gu,AssistantContent:()=>Wu,AssistantReasoning:()=>$u,AssistantText:()=>Vu,AssistantTool:()=>ju,Compaction:()=>Ju,ID:()=>Mu,Message:()=>BT,ModelSwitched:()=>Ou,SessionMessage:()=>be,Shell:()=>Fu,Synthetic:()=>Nu,System:()=>qu,ToolState:()=>zu,ToolStateCompleted:()=>Hu,ToolStateError:()=>Ku,ToolStatePending:()=>Bu,ToolStateRunning:()=>Uu,UnknownError:()=>fc,User:()=>Qu});import{Schema as v}from"effect";import{Schema as rt}from"effect";var ku=rt.Struct({start:rt.Finite,end:rt.Finite,text:rt.String}).annotate({identifier:"Prompt.Source"}),ki=rt.Struct({uri:rt.String,mime:rt.String,name:rt.String.pipe(b),description:rt.String.pipe(b),source:ku.pipe(b)}).annotate({identifier:"Prompt.FileAttachment"}).pipe(me(e=>({create:r(t=>e.make({uri:t.uri,mime:t.mime,name:t.name,description:t.description,source:t.source}),"create")}))),FT=rt.Struct({name:rt.String,source:ku.pipe(b)}).annotate({identifier:"Prompt.AgentAttachment"}),go=rt.Struct({text:rt.String,files:rt.Array(ki).pipe(b),agents:rt.Array(FT).pipe(b)}).annotate({identifier:"Prompt"}).pipe(me(e=>({equivalence:rt.toEquivalence(e),fromUserMessage:r(t=>e.make({text:t.text,...t.files===void 0?{}:{files:t.files},...t.agents===void 0?{}:{agents:t.agents}}),"fromUserMessage")})));import{Schema as pc}from"effect";var Me=pc.String.check(pc.isStartsWith("ses")).pipe(pc.brand("SessionID"),me(e=>{let t=r(()=>e.make("ses_"+rd()),"create");return{create:t,descending:r(n=>n===void 0?t():e.make(n),"descending")}}));var Mu=v.String.check(v.isStartsWith("msg_")).pipe(v.brand("Session.Message.ID"),me(e=>({create:r(()=>e.make("msg_"+je()),"create")}))),fc=v.Struct({type:v.Literal("unknown"),message:v.String}).annotate({identifier:"Session.Error.Unknown"}),tn={id:Mu,metadata:v.Record(v.String,v.Unknown).pipe(b),time:v.Struct({created:at})},_u=v.Struct({...tn,type:v.Literal("agent-switched"),agent:v.String}).annotate({identifier:"Session.Message.AgentSwitched"}),Ou=v.Struct({...tn,type:v.Literal("model-switched"),model:ke.Ref}).annotate({identifier:"Session.Message.ModelSwitched"}),Qu=v.Struct({...tn,text:go.fields.text,files:go.fields.files,agents:go.fields.agents,type:v.Literal("user")}).annotate({identifier:"Session.Message.User"}),Nu=v.Struct({...tn,sessionID:Me,text:v.String,type:v.Literal("synthetic")}).annotate({identifier:"Session.Message.Synthetic"}),qu=v.Struct({...tn,type:v.Literal("system"),text:v.String}).annotate({identifier:"Session.Message.System"}),Fu=v.Struct({...tn,type:v.Literal("shell"),callID:v.String,command:v.String,output:v.String,time:v.Struct({created:at,completed:at.pipe(b)})}).annotate({identifier:"Session.Message.Shell"}),Bu=v.Struct({status:v.Literal("pending"),input:v.String}).annotate({identifier:"Session.Message.ToolState.Pending"}),Uu=v.Struct({status:v.Literal("running"),input:v.Record(v.String,v.Unknown),structured:v.Record(v.String,v.Unknown),content:ar.pipe(v.Array)}).annotate({identifier:"Session.Message.ToolState.Running"}),Hu=v.Struct({status:v.Literal("completed"),input:v.Record(v.String,v.Unknown),attachments:ki.pipe(v.Array,b),content:ar.pipe(v.Array),outputPaths:v.Array(v.String).pipe(b),structured:v.Record(v.String,v.Unknown),result:v.Unknown.pipe(b)}).annotate({identifier:"Session.Message.ToolState.Completed"}),Ku=v.Struct({status:v.Literal("error"),input:v.Record(v.String,v.Unknown),content:ar.pipe(v.Array),structured:v.Record(v.String,v.Unknown),error:fc,result:v.Unknown.pipe(b)}).annotate({identifier:"Session.Message.ToolState.Error"}),zu=v.Union([Bu,Uu,Hu,Ku]).pipe(v.toTaggedUnion("status")),ju=v.Struct({type:v.Literal("tool"),id:v.String,name:v.String,provider:v.Struct({executed:v.Boolean,metadata:ne.pipe(b),resultMetadata:ne.pipe(b)}).pipe(b),state:zu,time:v.Struct({created:at,ran:at.pipe(b),completed:at.pipe(b),pruned:at.pipe(b)})}).annotate({identifier:"Session.Message.Assistant.Tool"}),Vu=v.Struct({type:v.Literal("text"),id:v.String,text:v.String}).annotate({identifier:"Session.Message.Assistant.Text"}),$u=v.Struct({type:v.Literal("reasoning"),id:v.String,text:v.String,providerMetadata:ne.pipe(b),time:v.Struct({created:at,completed:at.pipe(b)}).pipe(b)}).annotate({identifier:"Session.Message.Assistant.Reasoning"}),Wu=v.Union([Vu,$u,ju]).pipe(v.toTaggedUnion("type")),Gu=v.Struct({...tn,type:v.Literal("assistant"),agent:v.String,model:ke.Ref,content:Wu.pipe(v.Array),snapshot:v.Struct({start:v.String.pipe(b),end:v.String.pipe(b),files:v.Array(Lt).pipe(b)}).pipe(b),finish:v.String.pipe(b),cost:v.Finite.pipe(b),tokens:v.Struct({input:v.Finite,output:v.Finite,reasoning:v.Finite,cache:v.Struct({read:v.Finite,write:v.Finite})}).pipe(b),error:fc.pipe(b),time:v.Struct({created:at,completed:at.pipe(b)})}).annotate({identifier:"Session.Message.Assistant"}),Ju=v.Struct({type:v.Literal("compaction"),reason:v.Literals(["auto","manual"]),summary:v.String,recent:v.String,...tn}).annotate({identifier:"Session.Message.Compaction"}),BT=v.Union([_u,Ou,Qu,Nu,qu,Fu,Gu,Ju]).pipe(v.toTaggedUnion("type")).annotate({identifier:"Session.Message"});import{sqliteTable as sm,text as yr,integer as dm,primaryKey as VT}from"drizzle-orm/sqlite-core";import UT from"path";import{customType as Ss}from"drizzle-orm/sqlite-core";function uc(e){return process.platform!=="win32"?e:e.replaceAll("\\","/")}r(uc,"storagePath");function Yu(e){return/^[A-Za-z]:\//.test(e)||e.startsWith("//")}r(Yu,"isWindowsStoragePath");function So(e){let t=uc(e);if(!UT.posix.isAbsolute(t)&&!(process.platform==="win32"&&Yu(t)))throw new Error(`Path is not absolute: ${e}`);return t}r(So,"absolute");function mc(e){return process.platform!=="win32"||!Yu(e)?e:e.replaceAll("/","\\")}r(mc,"toPlatform");var yc=Ss({dataType(){return"text"},toDriver(e){return So(e)},fromDriver(e){return pe.make(mc(So(e)))}}),Wk=Ss({dataType(){return"text"},toDriver(e){return e&&So(e)},fromDriver(e){return e&&mc(So(e))}}),Gk=Ss({dataType(){return"text"},toDriver(e){return uc(e)},fromDriver(e){return uc(e)}}),Xu=Ss({dataType(){return"text"},toDriver(e){return JSON.stringify(e.map(So))},fromDriver(e){return JSON.parse(e).map(t=>pe.make(mc(So(t))))}});import{integer as Zu}from"drizzle-orm/sqlite-core";var hs={time_created:Zu().notNull().$default(()=>Date.now()),time_updated:Zu().notNull().$onUpdate(()=>Date.now())};var mr={};Q(mr,{ID:()=>zT,ProjectSchema:()=>mr,Vcs:()=>jT});import{Schema as gc}from"effect";var Cr={};Q(Cr,{Commands:()=>om,Event:()=>KT,ID:()=>tm,Icon:()=>nm,Info:()=>am,Project:()=>Cr,Time:()=>im,Vcs:()=>rm});import{Schema as At}from"effect";var tm=xa,rm=At.Literal("git").annotate({identifier:"Project.Vcs"}),nm=At.Struct({url:b(At.String),override:b(At.String),color:b(At.String)}).annotate({identifier:"Project.Icon"}),om=At.Struct({start:b(At.String.annotate({description:"Startup script to run when creating a new workspace (worktree)"}))}).annotate({identifier:"Project.Commands"}),im=At.Struct({created:J,updated:J,initialized:b(J)}).annotate({identifier:"Project.Time"}),am=At.Struct({id:tm,worktree:At.String,vcs:b(rm),name:b(At.String),icon:b(nm),commands:b(om),time:im,sandboxes:At.Array(At.String)}).annotate({identifier:"Project"}),em=Ce({type:"project.updated",schema:am.fields}),KT={Updated:em,Definitions:vt(em)};var zT=Cr.ID,jT=gc.Union([gc.Struct({type:gc.Literal("git"),store:pe})]);var $T=sm("project",{id:yr().$type().primaryKey(),worktree:yc().notNull(),vcs:yr(),name:yr(),icon_url:yr(),icon_url_override:yr(),icon_color:yr(),...hs,time_initialized:dm(),sandboxes:Xu().notNull(),commands:yr({mode:"json"}).$type()}),Re=sm("project_directory",{project_id:yr().$type().notNull().references(()=>$T.id,{onDelete:"cascade"}),directory:yc().notNull(),type:yr().$type(),strategy:yr(),time_created:dm().notNull().$default(()=>Date.now())},e=>[VT({columns:[e.project_id,e.directory]})]);var On={};Q(On,{Directories:()=>Rb,DirectoriesInput:()=>bb,ID:()=>_n,Info:()=>xc,Project:()=>On,ProjectV2:()=>On,Service:()=>Ro,Vcs:()=>Tb,node:()=>Ib});import{Context as hb,Effect as Ut,Layer as Eb,Schema as xb}from"effect";import Ec from"path";var To={};Q(To,{ChangeSet:()=>pm,Git:()=>To,OperationError:()=>pt,PatchError:()=>ft,Repository:()=>Qi,Service:()=>xo,TreeID:()=>Sc,Worktree:()=>xs,WorktreeError:()=>Eo,node:()=>nb});import lt from"path";import{randomUUID as XT}from"crypto";import{Context as ZT,Effect as O,Layer as eb,Schema as Ie,Stream as tb}from"effect";import{ChildProcess as Oi}from"effect/unstable/process";var Pn={};Q(Pn,{FileDiff:()=>cm,Revert:()=>Pn,State:()=>WT});import{Schema as rn}from"effect";var cm=rn.Struct({path:Lt,status:rn.Literals(["added","modified","deleted"]),additions:J,deletions:J,patch:rn.String}).annotate({identifier:"File.Diff"}),WT=rn.Struct({messageID:be.ID,partID:rn.String.pipe(b),snapshot:rn.String.pipe(b),diff:rn.String.pipe(b),files:rn.Array(cm).pipe(b)}).annotate({identifier:"Revert.State"});var gM=Pn.FileDiff;var _i={};Q(_i,{KeyedMutex:()=>_i,make:()=>YT,makeUnsafe:()=>lm});import{Effect as Mi,Semaphore as JT}from"effect";var lm=r(()=>{let e=new Map,t=r(n=>o=>Mi.suspend(()=>{let i=e.get(n),s=i??{semaphore:JT.makeUnsafe(1),users:0};return i||e.set(n,s),s.users++,s.semaphore.withPermit(o).pipe(Mi.ensuring(Mi.sync(()=>{s.users--,s.users===0&&e.delete(n)})))}),"withLock");return{size:Mi.sync(()=>e.size),withLock:t}},"makeUnsafe"),YT=r(()=>Mi.sync(lm),"make");var Qi=class extends Ie.Class("Git.Repository")({worktree:pe,gitDirectory:pe,commonDirectory:pe}){static{r(this,"Repository")}},pm=Ie.String.pipe(Ie.brand("Git.ChangeSet")),Sc=Ie.String.pipe(Ie.brand("Git.TreeID")),pt=class extends Ie.TaggedErrorClass()("Git.OperationError",{operation:Ie.Literals(["clone","fetch","checkout","reset","create","refresh","write_tree","list_files","diff","restore"]),message:Ie.String,directory:Ie.optional(pe),cause:Ie.optional(Ie.Defect())}){static{r(this,"OperationError")}},xs=class extends Ie.Class("Git.Worktree")({directory:pe,kind:Ie.Literals(["main","linked"])}){static{r(this,"Worktree")}},Eo=class extends Ie.TaggedErrorClass()("Git.WorktreeError",{operation:Ie.Literals(["create","remove","list"]),message:Ie.String,directory:Ie.optional(pe),forceRequired:Ie.optional(Ie.Boolean),cause:Ie.optional(Ie.Defect())}){static{r(this,"WorktreeError")}},ft=class extends Ie.TaggedErrorClass()("Git.PatchError",{operation:Ie.Literals(["capture","apply","reset"]),directory:pe,message:Ie.String,cause:Ie.optional(Ie.Defect())}){static{r(this,"PatchError")}},xo=class extends ZT.Service()("@opencode/GitV2"){static{r(this,"Service")}},rb=eb.effect(xo,O.gen(function*(){let e=yield*Jt.Service,t=yield*yo.Service,n=_i.makeUnsafe(),o=r((u,P)=>n.withLock(u.gitDirectory)(P),"locked"),i=O.fn("Git.repo.discover")(function*(u){let P=yield*e.up({targets:[".git"],start:u}).pipe(O.map(Tr=>Tr[0]),O.catch(()=>O.succeed(void 0)));if(!P)return;let q=lt.dirname(P),oe=ho(q,t),ce=yield*oe(["rev-parse","--show-toplevel"]),he=yield*oe(["rev-parse","--git-dir"]),Ee=yield*oe(["rev-parse","--git-common-dir"]);if(!(he.exitCode!==0||Ee.exitCode!==0))return new Qi({worktree:pe.make(ce.exitCode===0?Es(q,ce.text):q),gitDirectory:pe.make(Es(q,he.text)),commonDirectory:pe.make(Es(q,Ee.text))})}),s=O.fn("Git.remote.get")(function*(u,P="origin"){let q=yield*ho(u.worktree,t)(["remote","get-url",P]);if(q.exitCode===0)return q.text.trim()||void 0}),d=O.fn("Git.history.rootCommits")(function*(u){let P=yield*ho(u.worktree,t)(["rev-list","--max-parents=0","HEAD"]);return P.exitCode!==0?[]:P.text.split(`
|
|
38
|
-
`).map(q=>q.trim()).filter(Boolean).toSorted()}),p=O.fn("Git.history.head")(function*(u){let P=yield*ho(u.worktree,t)(["rev-parse","HEAD"]);if(P.exitCode===0)return P.text.trim()||void 0}),c=O.fn("Git.history.branch")(function*(u){let P=yield*ho(u.worktree,t)(["symbolic-ref","--quiet","--short","HEAD"]);if(P.exitCode===0)return P.text.trim()||void 0}),y=O.fn("Git.history.defaultRemoteBranch")(function*(u,P="origin"){let q=yield*ho(u.worktree,t)(["symbolic-ref",`refs/remotes/${P}/HEAD`]);if(q.exitCode===0)return q.text.trim().replace(new RegExp(`^refs/remotes/${P}/`),"")||void 0}),g=O.fnUntraced(function*(u,P,q){let oe=yield*kn(P,t)(q).pipe(O.mapError(ce=>new pt({operation:u,directory:P,message:ce.message,cause:ce})));if(oe.exitCode!==0)return yield*new pt({operation:u,directory:P,message:oe.stderr.trim()||oe.text.trim()||`Git ${u} failed`})}),m=O.fn("Git.repo.clone")(function*(u){yield*g("clone",pe.make(lt.dirname(u.directory)),["clone","--depth",String(u.depth??100),...u.branch?["--branch",u.branch]:[],"--",u.remote,u.directory]);let P=yield*i(u.directory);return P||(yield*new pt({operation:"clone",directory:u.directory,message:"Cloned repository could not be opened"}))}),f=O.fn("Git.sync.fetchRemotes")(function*(u,P={}){yield*g("fetch",u.worktree,["fetch","--all",...P.prune===!1?[]:["--prune"]])}),l=O.fn("Git.sync.fetchBranch")(function*(u,P){let q=P.remote??"origin",oe=`refs/heads/${P.branch}:refs/remotes/${q}/${P.branch}`;yield*g("fetch",u.worktree,["fetch",q,P.force===!1?oe:`+${oe}`])}),L=O.fn("Git.sync.checkoutRemoteBranch")(function*(u,P){let q=P.remote??"origin";yield*g("checkout",u.worktree,["checkout",...P.reset===!1?[P.branch]:["-B",P.branch,`${q}/${P.branch}`]])}),D=O.fn("Git.sync.resetHard")(function*(u,P){yield*g("reset",u.worktree,["reset","--hard",P])}),U=r((u,P)=>["--git-dir",u.gitDirectory,"--work-tree",u.worktree,...P],"repositoryArgs"),A=O.fnUntraced(function*(u,P,q,oe){let ce=yield*t.run(Oi.make("git",U(P,q),{cwd:P.worktree,env:oe?.env,extendEnv:!0}),{stdin:oe?.stdin}).pipe(O.mapError(Ee=>new pt({operation:u,directory:P.worktree,message:Ee.message,cause:Ee}))),he=ce.stdout.toString("utf8");return ce.exitCode===0?{text:he,stderr:ce.stderr.toString("utf8")}:yield*new pt({operation:u,directory:P.worktree,message:ce.stderr.toString("utf8").trim()||he.trim()||`Git ${u} failed`})}),_=O.fn("Git.repo.create")(function*(u){yield*e.ensureDir(u.gitDirectory).pipe(O.mapError(q=>new pt({operation:"create",directory:u.gitDirectory,message:"Failed to create Git storage",cause:q})));let P=new Qi({worktree:u.worktree,gitDirectory:u.gitDirectory,commonDirectory:u.gitDirectory});return yield*A("create",P,["init"]),yield*O.forEach([["core.autocrlf","false"],["core.longpaths","true"],["core.symlinks","true"],["core.fsmonitor","false"],["feature.manyFiles","true"],["index.version","4"],["index.threads","true"],["core.untrackedCache","true"]],([q,oe])=>A("create",P,["config",q,oe]),{discard:!0}),u.seed&&(yield*e.ensureDir(lt.join(u.gitDirectory,"objects","info")).pipe(O.mapError(q=>new pt({operation:"create",directory:u.gitDirectory,message:"Failed to configure shared Git objects",cause:q}))),yield*e.writeFileString(lt.join(u.gitDirectory,"objects","info","alternates"),lt.join(u.seed.commonDirectory,"objects")+`
|
|
39
|
-
`).pipe(O.mapError(q=>new pt({operation:"create",directory:u.gitDirectory,message:"Failed to configure shared Git objects",cause:q}))),yield*e.copyFile(lt.join(u.seed.gitDirectory,"index"),lt.join(u.gitDirectory,"index")).pipe(O.catch(()=>O.void))),P}),x=O.fn("Git.index.refresh")(function*(u){let P=r(Mt=>A("refresh",u.repository,Mt).pipe(O.map(ha=>ha.text.split("\0").filter(Boolean))),"list"),[q,oe]=yield*O.all([P(["diff-files","--name-only","-z","--",u.scope]),P(["ls-files","--others","--exclude-standard","-z","--",u.scope])],{concurrency:2}),ce=Array.from(new Set([...q,...oe]));if(!ce.length)return{skipped:[]};let he=u.ignores?new Set((yield*A("refresh",u.ignores,["check-ignore","--no-index","--stdin","-z"],{stdin:ce.join("\0")+"\0"}).pipe(O.catch(()=>O.succeed({text:"",stderr:""})))).text.split("\0").filter(Boolean)):new Set,Ee=ce.filter(Mt=>!he.has(Mt)),Tr=u.maximumUntrackedFileBytes,Ws=Tr?(yield*O.forEach(oe.filter(Mt=>Ee.includes(Mt)),Mt=>e.stat(lt.join(u.repository.worktree,Mt)).pipe(O.map(ha=>ha.type==="File"&&Number(ha.size)>Tr?Lt.make(Mt):void 0),O.catch(()=>O.succeed(void 0))),{concurrency:8})).filter(Mt=>Mt!==void 0):[],xl=Ee.filter(Mt=>!Ws.includes(Lt.make(Mt))),Tl=[...he,...Ws];return Tl.length&&(yield*A("refresh",u.repository,["rm","--cached","-f","--ignore-unmatch","--pathspec-from-file=-","--pathspec-file-nul"],{stdin:Tl.join("\0")+"\0"})),xl.length&&(yield*A("refresh",u.repository,["add","--all","--sparse","--pathspec-from-file=-","--pathspec-file-nul"],{stdin:xl.join("\0")+"\0"})),{skipped:Ws}}),B=O.fn("Git.index.ignored")(function*(u){if(!u.paths.length)return new Set;let P=yield*t.run(Oi.make("git",U(u.repository,["check-ignore","--no-index","--stdin","-z"]),{cwd:u.repository.worktree,extendEnv:!0}),{stdin:u.paths.join("\0")+"\0"}).pipe(O.mapError(q=>new pt({operation:"list_files",directory:u.repository.worktree,message:q.message,cause:q})));return P.exitCode!==0&&P.exitCode!==1?yield*new pt({operation:"list_files",directory:u.repository.worktree,message:P.stderr.toString("utf8").trim()||"Failed to check ignored paths"}):new Set(P.stdout.toString("utf8").split("\0").filter(Boolean).map(q=>Lt.make(q)))}),F=O.fn("Git.tree.write")(function*(u){return Sc.make((yield*A("write_tree",u,["write-tree"])).text.trim())}),T=O.fn("Git.tree.capture")(u=>o(u.repository,O.gen(function*(){return yield*O.forEach(u.scopes,P=>x({...u,scope:P}),{discard:!0}),yield*F(u.repository)}))),R=O.fn("Git.tree.files")(function*(u){return(yield*A("list_files",u.repository,["diff","--name-only","-z",u.from,u.to])).text.split("\0").filter(Boolean).map(P=>Lt.make(P))}),C=O.fn("Git.tree.diff")(function*(u){let P=u.paths??(yield*R(u));return yield*O.forEach(P,q=>O.gen(function*(){let oe=(yield*A("diff",u.repository,["diff","--name-status","--no-renames",u.from,u.to,"--",q])).text.trim(),ce=oe.startsWith("A")?"added":oe.startsWith("D")?"deleted":"modified",he=(yield*A("diff",u.repository,["diff","--numstat","--no-renames",u.from,u.to,"--",q])).text.split(" "),Ee=he[0]==="-"||he[1]==="-",Tr=Ee?"":(yield*A("diff",u.repository,["diff",`--unified=${u.context??3}`,"--no-renames",u.from,u.to,"--",q])).text;return{path:q,status:ce,additions:Ee?0:Number(he[0]??0),deletions:Ee?0:Number(he[1]??0),patch:Tr}}))}),k=O.fnUntraced(function*(u,P,q){let oe=(yield*A("restore",u,["ls-tree","-z",P,"--",q])).text.replace(/\0$/,"");if(!oe)return;let ce=oe.match(/^(\d+)\s+\w+\s+([0-9a-f]+)\t/);return ce?{mode:ce[1],object:ce[2]}:yield*new pt({operation:"restore",directory:u.worktree,message:`Invalid tree entry for ${q}`})}),K=O.fn("Git.tree.preview")(u=>o(u.repository,O.gen(function*(){let P=lt.join(u.repository.gitDirectory,`preview-${XT()}.index`),q={GIT_INDEX_FILE:P};return yield*O.gen(function*(){yield*A("diff",u.repository,["read-tree",u.current],{env:q}),yield*O.forEach(u.files,([ce,he])=>O.gen(function*(){let Ee=yield*k(u.repository,he,ce);if(!Ee){yield*A("diff",u.repository,["update-index","--force-remove","--",ce],{env:q});return}yield*A("diff",u.repository,["update-index","--add","--cacheinfo",Ee.mode,Ee.object,ce],{env:q})}),{discard:!0});let oe=Sc.make((yield*A("diff",u.repository,["write-tree"],{env:q})).text.trim());return yield*C({repository:u.repository,from:u.current,to:oe,context:u.context,paths:Array.from(u.files.keys())})}).pipe(O.ensuring(e.remove(P).pipe(O.catch(()=>O.void))))}))),Y=O.fn("Git.tree.restore")(u=>o(u.repository,O.forEach(u.files,([P,q])=>O.gen(function*(){if(yield*k(u.repository,q,P)){yield*A("restore",u.repository,["checkout",q,"--",P]);return}yield*e.remove(lt.join(u.repository.worktree,P),{recursive:!0,force:!0}).pipe(O.mapError(oe=>new pt({operation:"restore",directory:u.repository.worktree,message:`Failed to remove ${P}`,cause:oe})))}),{discard:!0}))),de=O.fn("Git.tree.checkout")(u=>o(u.repository,O.gen(function*(){yield*A("restore",u.repository,["read-tree",u.tree]),yield*A("restore",u.repository,["checkout-index","--all","--force"])}))),qe=O.fn("Git.change.capture")(function*(u){let P=lt.relative(u.repository.worktree,u.path).replaceAll("\\","/")||".",q=yield*kn(u.repository.worktree,t)(["diff","--binary","HEAD","--",P]).pipe(O.mapError(he=>new ft({operation:"capture",directory:u.path,message:he.message,cause:he})));if(q.exitCode!==0)return yield*new ft({operation:"capture",directory:u.path,message:q.stderr.trim()||q.text.trim()||"Failed to capture tracked changes"});let oe=yield*kn(u.repository.worktree,t)(["ls-files","--others","--exclude-standard","-z","--",P]).pipe(O.mapError(he=>new ft({operation:"capture",directory:u.path,message:he.message,cause:he})));if(oe.exitCode!==0)return yield*new ft({operation:"capture",directory:u.path,message:oe.stderr.trim()||oe.text.trim()||"Failed to list untracked changes"});let ce=yield*O.forEach(oe.text.split("\0").filter(Boolean),he=>kn(u.repository.worktree,t)(["diff","--binary","--no-index","--","/dev/null",he]).pipe(O.mapError(Ee=>new ft({operation:"capture",directory:u.path,message:Ee.message,cause:Ee})),O.flatMap(Ee=>Ee.exitCode===0||Ee.exitCode===1?O.succeed(Ee.text):O.fail(new ft({operation:"capture",directory:u.path,message:Ee.stderr.trim()||Ee.text.trim()||`Failed to capture untracked change: ${he}`})))));return pm.make([q.text,...ce].filter(Boolean).join(`
|
|
40
|
-
`))}),M=O.fn("Git.change.apply")(function*(u){let P=yield*t.run(Oi.make("git",["apply","-"],{cwd:u.path,extendEnv:!0,stdin:tb.make(new TextEncoder().encode(u.changes))})).pipe(O.mapError(q=>new ft({operation:"apply",directory:u.path,message:q.message,cause:q})));if(P.exitCode!==0)return yield*new ft({operation:"apply",directory:u.path,message:P.stderr.toString("utf8").trim()||P.stdout.toString("utf8").trim()||"Failed to apply changes"})}),$=O.fn("Git.change.discard")(function*(u){let P=lt.relative(u.repository.worktree,u.path).replaceAll("\\","/")||".",q=yield*kn(u.repository.worktree,t)(u.index==="reset"?["checkout","HEAD","--",P]:["checkout","--",P]).pipe(O.mapError(ce=>new ft({operation:"reset",directory:u.path,message:ce.message,cause:ce})));if(q.exitCode!==0)return yield*new ft({operation:"reset",directory:u.path,message:q.stderr.trim()||q.text.trim()||"Failed to restore tracked changes"});if(u.untracked==="preserve")return;let oe=yield*kn(u.repository.worktree,t)(["clean","-fd","--",P]).pipe(O.mapError(ce=>new ft({operation:"reset",directory:u.path,message:ce.message,cause:ce})));if(oe.exitCode!==0)return yield*new ft({operation:"reset",directory:u.path,message:oe.stderr.trim()||oe.text.trim()||"Failed to clean untracked changes"})}),Z=O.fnUntraced(function*(u,P,q,oe,ce=P.worktree){let he=yield*t.run(Oi.make("git",q,{cwd:ce,extendEnv:!0,stdin:"ignore"})).pipe(O.mapError(Tr=>new Eo({operation:u,directory:oe,message:Tr.message,cause:Tr})));if(he.exitCode===0)return he.stdout.toString("utf8");let Ee=he.stderr.toString("utf8").trim()||he.stdout.toString("utf8").trim()||"Git failed";return yield*new Eo({operation:u,directory:oe,message:Ee,forceRequired:u==="remove"&&/contains modified or untracked files|is dirty/i.test(Ee)})}),Se=O.fn("Git.worktree.create")(function*(u){yield*Z("create",u.repository,["worktree","add","--detach",u.directory,"HEAD"],u.directory);let P=yield*i(u.directory);return P||(yield*new Eo({operation:"create",directory:u.directory,message:"Created worktree could not be opened"}))}),ue=O.fn("Git.worktree.remove")(function*(u){yield*Z("remove",u.repository,["worktree","remove",...u.force?["--force"]:[],u.directory],u.directory,u.repository.commonDirectory)}),ot=O.fn("Git.worktree.list")(function*(u){return(yield*Z("list",u,["worktree","list","--porcelain"])).split(`
|
|
41
|
-
`).filter(P=>P.startsWith("worktree ")).map((P,q)=>new xs({directory:pe.make(Es(u.worktree,P.slice(9).trim())),kind:q===0?"main":"linked"}))});return xo.of({repo:{discover:i,clone:m,create:_},remote:{get:s},history:{head:p,branch:c,defaultRemoteBranch:y,rootCommits:d},sync:{fetchRemotes:f,fetchBranch:l,checkoutRemoteBranch:L,resetHard:D},change:{capture:qe,apply:M,discard:$},worktree:{create:Se,remove:ue,list:ot},index:{refresh:x,ignored:B},tree:{capture:T,write:F,files:R,diff:C,preview:K,restore:Y,checkout:de}})})),nb=Te({service:xo,layer:rb,deps:[Jt.node,yo.node]});function ho(e,t){return n=>kn(e,t)(n).pipe(O.catch(()=>O.succeed({exitCode:1,text:"",stderr:""})))}r(ho,"run");function kn(e,t){return n=>t.run(Oi.make("git",n,{cwd:e,extendEnv:!0,stdin:"ignore"})).pipe(O.map(o=>({exitCode:o.exitCode,text:o.stdout.toString("utf8"),stderr:o.stderr.toString("utf8")})))}r(kn,"execute");function Es(e,t){let n=t.replace(/[\r\n]+$/,"");if(!n)return e;let o=Jt.windowsPath(n);return lt.isAbsolute(o)?lt.normalize(o):lt.resolve(e,o)}r(Es,"resolvePath");var nn={};Q(nn,{CreateInput:()=>fb,ListInput:()=>mb,ListOutput:()=>yb,ProjectDirectories:()=>nn,RemoveInput:()=>ub,Service:()=>bo,node:()=>Sb});import{and as hc,asc as ob,desc as ib,eq as Mn,isNotNull as ab,isNull as sb,ne as db,or as cb}from"drizzle-orm";import{Context as lb,Effect as Yt,Layer as pb,Schema as gr}from"effect";var fb=gr.Struct({projectID:mr.ID,directory:pe,strategy:gr.optional(gr.String),behavior:gr.Literals(["ignore","replace"]).pipe(gr.optional)}),ub=gr.Struct({projectID:mr.ID,directory:pe}),mb=gr.Struct({projectID:mr.ID}).annotate({identifier:"Project.DirectoriesInput"}),yb=gr.Array(gr.Struct({directory:pe,strategy:b(gr.String)})).annotate({identifier:"Project.Directories"}),bo=class extends lb.Service()("@opencode/ProjectDirectories"){static{r(this,"Service")}},gb=pb.effect(bo,Yt.gen(function*(){let e=(yield*Qt.Service).db,t=Yt.fn("ProjectDirectories.create")(function*(d,p){let c=(p??e).insert(Re).values({project_id:d.projectID,directory:d.directory,strategy:d.strategy});return(yield*(d.behavior==="replace"?c.onConflictDoUpdate({target:[Re.project_id,Re.directory],set:{strategy:d.strategy??null},setWhere:d.strategy?cb(sb(Re.strategy),db(Re.strategy,d.strategy)):ab(Re.strategy)}):c.onConflictDoNothing()).returning({directory:Re.directory}).get().pipe(Yt.orDie))!==void 0}),n=Yt.fn("ProjectDirectories.remove")(function*(d,p){return(yield*(p??e).delete(Re).where(hc(Mn(Re.project_id,d.projectID),Mn(Re.directory,d.directory))).returning({directory:Re.directory}).get().pipe(Yt.orDie))!==void 0}),o=Yt.fn("ProjectDirectories.list")(function*(d){return(yield*e.select({directory:Re.directory,strategy:Re.strategy}).from(Re).where(Mn(Re.project_id,d)).orderBy(ib(Re.time_created),ob(Re.directory)).all().pipe(Yt.orDie)).map(c=>({directory:c.directory,strategy:c.strategy??void 0}))}),i=Yt.fn("ProjectDirectories.contains")(function*(d){return(yield*e.select({directory:Re.directory}).from(Re).where(hc(Mn(Re.project_id,d.projectID),Mn(Re.directory,d.directory))).get().pipe(Yt.orDie))!==void 0}),s=Yt.fn("ProjectDirectories.get")(function*(d){let p=yield*e.select({directory:Re.directory,strategy:Re.strategy}).from(Re).where(hc(Mn(Re.project_id,d.projectID),Mn(Re.directory,d.directory))).get().pipe(Yt.orDie);return p?{directory:p.directory,strategy:p.strategy??void 0}:void 0});return bo.of({list:o,get:s,contains:i,create:t,remove:n})})),Sb=Te({service:bo,layer:gb,deps:[Qt.node]});var _n=mr.ID,Tb=mr.Vcs,xc=class extends xb.Class("Project.Info")({id:_n}){static{r(this,"Info")}},bb=nn.ListInput,Rb=nn.ListOutput,Ro=class extends hb.Service()("@opencode/ProjectV2"){static{r(this,"Service")}},Lb=Eb.effect(Ro,Ut.gen(function*(){let e=yield*Jt.Service,t=yield*To.Service,n=yield*nn.Service,o=Ut.fn("Project.directories")(function*(m){return yield*n.list(m.projectID)}),i=Ut.fnUntraced(function*(m){return yield*e.readFileString(Ec.join(m,"opencode")).pipe(Ut.map(f=>f.trim()),Ut.map(f=>f?_n.make(f):void 0),Ut.catch(()=>Ut.succeed(void 0)))}),s=Ut.fnUntraced(function*(m){let f=yield*t.remote.get(m);if(!f)return;let l=d(f);if(l)return _n.make(jo.fast(`git-remote:${l}`))});function d(m){let f=m.trim();if(f)try{let l=new URL(f);return l.protocol==="file:"?void 0:p(l.hostname,l.pathname)}catch{let l=f.match(/^([^@/:]+@)?([^/:]+):(.+)$/);return l?p(l[2],l[3]):void 0}}r(d,"url");function p(m,f){let l=f.replace(/^\/+/,"").replace(/\.git\/?$/,"").replace(/\/+$/,"");if(!(!m||!l))return`${m.toLowerCase()}/${l}`}r(p,"parts");let c=Ut.fnUntraced(function*(m){let f=(yield*t.history.rootCommits(m))[0];return f?_n.make(f):void 0}),y=Ut.fn("Project.resolve")(function*(m){let f=yield*t.repo.discover(m);if(!f)return{id:_n.global,directory:pe.make(Ec.parse(m).root),vcs:void 0};let l=yield*i(f.commonDirectory),L=(yield*s(f))??l??(yield*c(f));return{previous:l,id:L??_n.global,directory:f.worktree,vcs:{type:"git",store:f.commonDirectory}}}),g=Ut.fn("Project.commit")(function*(m){yield*e.writeFileString(Ec.join(m.store,"opencode"),m.id).pipe(Ut.ignore)});return Ro.of({directories:o,resolve:y,commit:g})})),Ib=Te({service:Ro,layer:Lb,deps:[Jt.node,To.node,nn.node]});import{sqliteTable as fm,text as Lo,integer as um,index as vb,uniqueIndex as Db}from"drizzle-orm/sqlite-core";var Xe=fm("event_sequence",{aggregate_id:Lo().notNull().primaryKey(),seq:um().notNull(),owner_id:Lo()}),He=fm("event",{id:Lo().$type().primaryKey(),aggregate_id:Lo().notNull().references(()=>Xe.aggregate_id,{onDelete:"cascade"}),seq:um().notNull(),type:Lo().notNull(),data:Lo({mode:"json"}).$type().notNull()},e=>[Db("event_aggregate_seq_idx").on(e.aggregate_id,e.seq),vb("event_aggregate_type_seq_idx").on(e.aggregate_id,e.type,e.seq)]);var Xt={};Q(Xt,{Info:()=>Xn,Location:()=>Xt,Ref:()=>id,Service:()=>Qn,boundNode:()=>Mb,node:()=>Pb,response:()=>ad});import{Context as Cb,Effect as wb,Layer as Ab}from"effect";var Qn=class extends Cb.Service()("@opencode/Location"){static{r(this,"Service")}},Pb=mn.unbound(Qn,Vo.values.location),kb=r(e=>Ab.effect(Qn,wb.gen(function*(){let n=yield*(yield*On.Service).resolve(e.directory);return Qn.of({directory:e.directory,workspaceID:e.workspaceID,project:{id:n.id,directory:n.directory},vcs:n.vcs})})),"layer"),Mb=r(e=>$t({service:Qn,layer:kb(e),deps:[On.node]}),"boundNode");var Bn={};Q(Bn,{AgentSwitched:()=>Lc,All:()=>Nb,Compaction:()=>Fn,ContextUpdated:()=>wc,Definitions:()=>hm,Durable:()=>Qb,DurableDefinitions:()=>Sm,FileAttachment:()=>ki,ModelSwitched:()=>Ic,Moved:()=>vc,PromptAdmitted:()=>Cc,Prompted:()=>Dc,Reasoning:()=>qn,Retried:()=>Pc,RetryError:()=>gm,RevertEvent:()=>an,SessionEvent:()=>Bn,Shell:()=>Io,Source:()=>Ob,Step:()=>on,Synthetic:()=>Ac,Text:()=>Nn,Tool:()=>ut,UnknownError:()=>Rc});import{Schema as N}from"effect";var bc={};Q(bc,{Delivery:()=>Tc,SessionDelivery:()=>bc});import{Schema as _b}from"effect";var Tc=_b.Literals(["steer","queue"]);var Ob=N.Struct({start:J,end:J,text:N.String}).annotate({identifier:"session.next.event.source"}),Ae={timestamp:at,sessionID:Me},ym={...Ae,messageID:be.ID,prompt:go,delivery:Tc},ve={durable:{aggregate:"sessionID",version:1}},mm={durable:{aggregate:"sessionID",version:2}},Rc=be.UnknownError,Lc=ee.define({type:"session.next.agent.switched",...ve,schema:{...Ae,messageID:be.ID,agent:N.String}}),Ic=ee.define({type:"session.next.model.switched",...ve,schema:{...Ae,messageID:be.ID,model:ke.Ref}}),vc=ee.define({type:"session.next.moved",...ve,schema:{...Ae,location:yn.Ref,subdirectory:Lt.pipe(b)}}),Dc=ee.define({type:"session.next.prompted",...ve,schema:ym}),Cc=ee.define({type:"session.next.prompt.admitted",...ve,schema:ym}),wc=ee.define({type:"session.next.context.updated",...ve,schema:{...Ae,messageID:be.ID,text:N.String}}),Ac=ee.define({type:"session.next.synthetic",...ve,schema:{...Ae,messageID:be.ID,text:N.String}}),Io;(n=>(n.Started=ee.define({type:"session.next.shell.started",...ve,schema:{...Ae,messageID:be.ID,callID:N.String,command:N.String}}),n.Ended=ee.define({type:"session.next.shell.ended",...ve,schema:{...Ae,callID:N.String,output:N.String}})))(Io||={});var on;(o=>(o.Started=ee.define({type:"session.next.step.started",...ve,schema:{...Ae,assistantMessageID:be.ID,agent:N.String,model:ke.Ref,snapshot:N.String.pipe(b)}}),o.Ended=ee.define({type:"session.next.step.ended",...mm,schema:{...Ae,assistantMessageID:be.ID,finish:N.String,cost:N.Finite,tokens:N.Struct({input:N.Finite,output:N.Finite,reasoning:N.Finite,cache:N.Struct({read:N.Finite,write:N.Finite})}),snapshot:N.String.pipe(b),files:N.Array(Lt).pipe(b)}}),o.Failed=ee.define({type:"session.next.step.failed",...mm,schema:{...Ae,assistantMessageID:be.ID,error:Rc}})))(on||={});var Nn;(o=>(o.Started=ee.define({type:"session.next.text.started",...ve,schema:{...Ae,assistantMessageID:be.ID,textID:N.String}}),o.Delta=ee.define({type:"session.next.text.delta",schema:{...Ae,assistantMessageID:be.ID,textID:N.String,delta:N.String}}),o.Ended=ee.define({type:"session.next.text.ended",...ve,schema:{...Ae,assistantMessageID:be.ID,textID:N.String,text:N.String}})))(Nn||={});var qn;(o=>(o.Started=ee.define({type:"session.next.reasoning.started",...ve,schema:{...Ae,assistantMessageID:be.ID,reasoningID:N.String,providerMetadata:ne.pipe(b)}}),o.Delta=ee.define({type:"session.next.reasoning.delta",schema:{...Ae,assistantMessageID:be.ID,reasoningID:N.String,delta:N.String}}),o.Ended=ee.define({type:"session.next.reasoning.ended",...ve,schema:{...Ae,assistantMessageID:be.ID,reasoningID:N.String,text:N.String,providerMetadata:ne.pipe(b)}})))(qn||={});var ut;(d=>{let e={...Ae,assistantMessageID:be.ID,callID:N.String},t;(g=>(g.Started=ee.define({type:"session.next.tool.input.started",...ve,schema:{...e,name:N.String}}),g.Delta=ee.define({type:"session.next.tool.input.delta",schema:{...e,delta:N.String}}),g.Ended=ee.define({type:"session.next.tool.input.ended",...ve,schema:{...e,text:N.String}})))(t=d.Input||={}),d.Called=ee.define({type:"session.next.tool.called",...ve,schema:{...e,tool:N.String,input:N.Record(N.String,N.Unknown),provider:N.Struct({executed:N.Boolean,metadata:ne.pipe(b)})}}),d.Progress=ee.define({type:"session.next.tool.progress",...ve,schema:{...e,structured:N.Record(N.String,N.Unknown),content:N.Array(ar)}}),d.Success=ee.define({type:"session.next.tool.success",...ve,schema:{...e,structured:N.Record(N.String,N.Unknown),content:N.Array(ar),outputPaths:N.Array(N.String).pipe(b),result:N.Unknown.pipe(b),provider:N.Struct({executed:N.Boolean,metadata:ne.pipe(b)})}}),d.Failed=ee.define({type:"session.next.tool.failed",...ve,schema:{...e,error:Rc,result:N.Unknown.pipe(b),provider:N.Struct({executed:N.Boolean,metadata:ne.pipe(b)})}})})(ut||={});var gm=N.Struct({message:N.String,statusCode:N.Finite.pipe(b),isRetryable:N.Boolean,responseHeaders:N.Record(N.String,N.String).pipe(b),responseBody:N.String.pipe(b),metadata:N.Record(N.String,N.String).pipe(b)}).annotate({identifier:"session.next.retry_error"}),Pc=ee.define({type:"session.next.retried",...ve,schema:{...Ae,attempt:N.Finite,error:gm}}),Fn;(o=>(o.Started=ee.define({type:"session.next.compaction.started",...ve,schema:{...Ae,messageID:be.ID,reason:N.Union([N.Literal("auto"),N.Literal("manual")])}}),o.Delta=ee.define({type:"session.next.compaction.delta",schema:{...Ae,messageID:be.ID,text:N.String}}),o.Ended=ee.define({type:"session.next.compaction.ended",...ve,schema:{...Ae,messageID:be.ID,reason:o.Started.data.fields.reason,text:N.String,recent:N.String}})))(Fn||={});var an;(o=>(o.Staged=ee.define({type:"session.next.revert.staged",...ve,schema:{...Ae,revert:Pn.State}}),o.Cleared=ee.define({type:"session.next.revert.cleared",...ve,schema:Ae}),o.Committed=ee.define({type:"session.next.revert.committed",...ve,schema:{...Ae,messageID:be.ID}})))(an||={});var Sm=ee.inventory(Lc,Ic,vc,Dc,Cc,wc,Ac,Io.Started,Io.Ended,on.Started,on.Ended,on.Failed,Nn.Started,Nn.Ended,ut.Input.Started,ut.Input.Ended,ut.Called,ut.Progress,ut.Success,ut.Failed,qn.Started,qn.Ended,Pc,Fn.Started,Fn.Ended,an.Staged,an.Cleared,an.Committed),hm=ee.inventory(Lc,Ic,vc,Dc,Cc,wc,Ac,Io.Started,Io.Ended,on.Started,on.Ended,on.Failed,Nn.Started,Nn.Delta,Nn.Ended,qn.Started,qn.Delta,qn.Ended,ut.Input.Started,ut.Input.Delta,ut.Input.Ended,ut.Called,ut.Progress,ut.Success,ut.Failed,Pc,Fn.Started,Fn.Delta,Fn.Ended,an.Staged,an.Cleared,an.Committed),Qb=N.Union(Sm,{mode:"oneOf"}).pipe(N.toTaggedUnion("type")).annotate({identifier:"SessionDurableEvent"}),Nb=N.Union(hm,{mode:"oneOf"}).pipe(N.toTaggedUnion("type"));var Un={};Q(Un,{FileDiff:()=>Un,Info:()=>qb});import{Schema as vo}from"effect";var qb=vo.Struct({file:b(vo.String),patch:b(vo.String),additions:vo.Finite,deletions:vo.Finite,status:b(vo.Literals(["added","deleted","modified"]))}).annotate({identifier:"SnapshotFileDiff"});var qi={};Q(qi,{Action:()=>Tm,Approval:()=>Fb,AskInput:()=>Bb,Event:()=>Hb,ID:()=>Ni,PermissionV1:()=>qi,Reply:()=>Mc,ReplyBody:()=>Lm,ReplyInput:()=>Ub,Request:()=>kc,Rule:()=>bm,Ruleset:()=>Rm});import{Schema as ye}from"effect";var Ni=ye.String.check(ye.isStartsWith("per")).pipe(ye.brand("PermissionID"),me(e=>({ascending:r(t=>e.make(t??"per_"+je()),"ascending")}))),Tm=ye.Literals(["allow","deny","ask"]).annotate({identifier:"PermissionAction"}),bm=ye.Struct({permission:ye.String,pattern:ye.String,action:Tm}).annotate({identifier:"PermissionRule"}),Rm=ye.Array(bm).annotate({identifier:"PermissionRuleset"}),kc=ye.Struct({id:Ni,sessionID:Me,permission:ye.String,patterns:ye.Array(ye.String),metadata:ye.Record(ye.String,ye.Unknown),always:ye.Array(ye.String),tool:ye.optional(ye.Struct({messageID:ye.String,callID:ye.String}))}).annotate({identifier:"PermissionRequest"}),Mc=ye.Literals(["once","always","reject"]),Lm=ye.Struct({reply:Mc,message:ye.optional(ye.String)}).annotate({identifier:"PermissionReplyBody"}),Fb=ye.Struct({projectID:Cr.ID,patterns:ye.Array(ye.String)}).annotate({identifier:"PermissionApproval"}),Bb=ye.Struct({...kc.fields,id:ye.optional(Ni),ruleset:Rm}).annotate({identifier:"PermissionAskInput"}),Ub=ye.Struct({requestID:Ni,...Lm.fields}).annotate({identifier:"PermissionReplyInput"}),Em=Ce({type:"permission.asked",schema:kc.fields}),xm=Ce({type:"permission.replied",schema:{sessionID:Me,requestID:Ni,reply:Mc}}),Hb={Asked:Em,Replied:xm,Definitions:vt(Em,xm)};var Fi={};Q(Fi,{APIError:()=>Nc,AbortedError:()=>Dm,AgentPart:()=>Um,AgentPartInput:()=>Wb,Assistant:()=>Hc,AuthError:()=>vm,CompactionPart:()=>Hm,ContentFilterError:()=>Pm,ContextOverflowError:()=>Am,Diff:()=>Oc,Error:()=>Qc,Event:()=>rR,FilePart:()=>Bc,FilePartInput:()=>$b,FilePartSource:()=>Fc,FileSource:()=>qm,Format:()=>km,Info:()=>Kc,MessageID:()=>wr,OutputFormatJsonSchema:()=>Rs,OutputFormatText:()=>bs,OutputLengthError:()=>Im,Part:()=>Uc,PartDelta:()=>_c,PartID:()=>Ar,PatchPart:()=>_m,ProviderQuotaError:()=>Cm,Range:()=>Nm,ReasoningPart:()=>Qm,ResourceSource:()=>Bm,RetryPart:()=>zm,SessionInfo:()=>Ts,SessionV1:()=>Fi,SnapshotPart:()=>Mm,StepFinishPart:()=>Vm,StepStartPart:()=>jm,StructuredOutputError:()=>wm,SubtaskPart:()=>Km,SubtaskPartInput:()=>Gb,SymbolSource:()=>Fm,TextPart:()=>Om,TextPartInput:()=>Vb,ToolPart:()=>Xm,ToolState:()=>Ym,ToolStateCompleted:()=>Gm,ToolStateError:()=>Jm,ToolStatePending:()=>$m,ToolStateRunning:()=>Wm,User:()=>ey,WithParts:()=>Jb});import{Effect as Kb,Schema as a}from"effect";var zb=a.Finite.check(a.isGreaterThanOrEqualTo(0)),wr=a.String.check(a.isStartsWith("msg")).pipe(a.brand("MessageID"),me(e=>({ascending:r(t=>e.make(t??"msg_"+je()),"ascending")}))),Ar=a.String.check(a.isStartsWith("prt")).pipe(a.brand("PartID"),me(e=>({ascending:r(t=>e.make(t??"prt_"+je()),"ascending")}))),Pr=r((e,t)=>{let n=a.Struct({name:a.Literal(e),data:a.Struct(t)}).annotate({identifier:e});return{Schema:n,EffectSchema:n}},"namedError"),Im=Pr("MessageOutputLengthError",{}),vm=Pr("ProviderAuthError",{providerID:a.String,message:a.String}),Dm=Pr("MessageAbortedError",{message:a.String}),Cm=Pr("ProviderQuotaError",{providerID:a.String,message:a.String,planType:a.optional(a.String),resetsAt:a.optional(a.Finite),statusCode:a.optional(J),responseBody:a.optional(a.String)}),wm=Pr("StructuredOutputError",{message:a.String,retries:J}),Nc=Pr("APIError",{message:a.String,statusCode:a.optional(J),isRetryable:a.Boolean,responseHeaders:a.optional(a.Record(a.String,a.String)),responseBody:a.optional(a.String),metadata:a.optional(a.Record(a.String,a.String))}),Am=Pr("ContextOverflowError",{message:a.String,responseBody:a.optional(a.String)}),Pm=Pr("ContentFilterError",{message:a.String}),bs=class extends a.Class("OutputFormatText")({type:a.Literal("text")}){static{r(this,"OutputFormatText")}},Rs=class extends a.Class("OutputFormatJsonSchema")({type:a.Literal("json_schema"),schema:a.Record(a.String,a.Any).annotate({identifier:"JSONSchema"}),retryCount:J.pipe(a.optional,a.withDecodingDefault(Kb.succeed(2)))}){static{r(this,"OutputFormatJsonSchema")}},km=a.Union([bs,Rs]).annotate({discriminator:"type",identifier:"OutputFormat"}),Pt={id:Ar,sessionID:Me,messageID:wr},Mm=a.Struct({...Pt,type:a.Literal("snapshot"),snapshot:a.String}).annotate({identifier:"SnapshotPart"}),_m=a.Struct({...Pt,type:a.Literal("patch"),hash:a.String,files:a.Array(a.String)}).annotate({identifier:"PatchPart"}),Om=a.Struct({...Pt,type:a.Literal("text"),text:a.String,synthetic:a.optional(a.Boolean),ignored:a.optional(a.Boolean),time:a.optional(a.Struct({start:J,end:a.optional(J)})),metadata:a.optional(a.Record(a.String,a.Any))}).annotate({identifier:"TextPart"}),Qm=a.Struct({...Pt,type:a.Literal("reasoning"),text:a.String,metadata:a.optional(a.Record(a.String,a.Any)),time:a.Struct({start:J,end:a.optional(J)})}).annotate({identifier:"ReasoningPart"}),qc={text:a.Struct({value:a.String,start:a.Finite,end:a.Finite}).annotate({identifier:"FilePartSourceText"})},Nm=a.Struct({start:a.Struct({line:J,character:J}),end:a.Struct({line:J,character:J})}).annotate({identifier:"Range"}),qm=a.Struct({...qc,type:a.Literal("file"),path:a.String}).annotate({identifier:"FileSource"}),Fm=a.Struct({...qc,type:a.Literal("symbol"),path:a.String,range:Nm,name:a.String,kind:J}).annotate({identifier:"SymbolSource"}),Bm=a.Struct({...qc,type:a.Literal("resource"),clientName:a.String,uri:a.String}).annotate({identifier:"ResourceSource"}),Fc=a.Union([qm,Fm,Bm]).annotate({discriminator:"type",identifier:"FilePartSource"}),Bc=a.Struct({...Pt,type:a.Literal("file"),mime:a.String,filename:a.optional(a.String),url:a.String,source:a.optional(Fc)}).annotate({identifier:"FilePart"}),Um=a.Struct({...Pt,type:a.Literal("agent"),name:a.String,source:a.optional(a.Struct({value:a.String,start:J,end:J}))}).annotate({identifier:"AgentPart"}),Hm=a.Struct({...Pt,type:a.Literal("compaction"),auto:a.Boolean,overflow:a.optional(a.Boolean),tail_start_id:a.optional(wr)}).annotate({identifier:"CompactionPart"}),Km=a.Struct({...Pt,type:a.Literal("subtask"),prompt:a.String,description:a.String,agent:a.String,model:a.optional(a.Struct({providerID:_e.ID,modelID:ke.ID})),command:a.optional(a.String)}).annotate({identifier:"SubtaskPart"}),zm=a.Struct({...Pt,type:a.Literal("retry"),attempt:J,error:Nc.EffectSchema,time:a.Struct({created:J})}).annotate({identifier:"RetryPart"}),jm=a.Struct({...Pt,type:a.Literal("step-start"),snapshot:a.optional(a.String)}).annotate({identifier:"StepStartPart"}),Vm=a.Struct({...Pt,type:a.Literal("step-finish"),reason:a.String,snapshot:a.optional(a.String),cost:a.Finite,tokens:a.Struct({total:a.optional(a.Finite),input:a.Finite,output:a.Finite,reasoning:a.Finite,cache:a.Struct({read:a.Finite,write:a.Finite})})}).annotate({identifier:"StepFinishPart"}),$m=a.Struct({status:a.Literal("pending"),input:a.Record(a.String,a.Any),raw:a.String}).annotate({identifier:"ToolStatePending"}),Wm=a.Struct({status:a.Literal("running"),input:a.Record(a.String,a.Any),title:a.optional(a.String),metadata:a.optional(a.Record(a.String,a.Any)),time:a.Struct({start:J})}).annotate({identifier:"ToolStateRunning"}),Gm=a.Struct({status:a.Literal("completed"),input:a.Record(a.String,a.Any),output:a.String,title:a.String,metadata:a.Record(a.String,a.Any),time:a.Struct({start:J,end:J,compacted:a.optional(J)}),attachments:a.optional(a.Array(Bc))}).annotate({identifier:"ToolStateCompleted"}),Jm=a.Struct({status:a.Literal("error"),input:a.Record(a.String,a.Any),error:a.String,metadata:a.optional(a.Record(a.String,a.Any)),time:a.Struct({start:J,end:J})}).annotate({identifier:"ToolStateError"}),Ym=a.Union([$m,Wm,Gm,Jm]).annotate({discriminator:"status",identifier:"ToolState"}),Xm=a.Struct({...Pt,type:a.Literal("tool"),callID:a.String,tool:a.String,state:Ym,metadata:a.optional(a.Record(a.String,a.Any))}).annotate({identifier:"ToolPart"}),Zm={id:wr,sessionID:Pt.sessionID},ey=a.Struct({...Zm,role:a.Literal("user"),time:a.Struct({created:zb}),format:a.optional(km),summary:a.optional(a.Struct({title:a.optional(a.String),body:a.optional(a.String),diffs:a.Array(Un.Info)})),agent:a.String,model:a.Struct({providerID:_e.ID,modelID:ke.ID,variant:a.optional(a.String)}),system:a.optional(a.String),tools:a.optional(a.Record(a.String,a.Boolean)),quiet:a.optional(a.Boolean)}).annotate({identifier:"UserMessage"}),Uc=a.Union([Om,Km,Qm,Bc,Xm,jm,Vm,Mm,_m,Um,zm,Hm]).annotate({discriminator:"type",identifier:"Part"}),jb=a.Union([vm.EffectSchema,Cm.EffectSchema,Pr("UnknownError",{message:a.String,ref:a.optional(a.String)}).EffectSchema,Im.EffectSchema,Dm.EffectSchema,wm.EffectSchema,Am.EffectSchema,Pm.EffectSchema,Nc.EffectSchema]).annotate({discriminator:"name"}),Vb=a.Struct({id:a.optional(Ar),type:a.Literal("text"),text:a.String,synthetic:a.optional(a.Boolean),ignored:a.optional(a.Boolean),time:a.optional(a.Struct({start:J,end:a.optional(J)})),metadata:a.optional(a.Record(a.String,a.Any))}).annotate({identifier:"TextPartInput"}),$b=a.Struct({id:a.optional(Ar),type:a.Literal("file"),mime:a.String,filename:a.optional(a.String),url:a.String,source:a.optional(Fc)}).annotate({identifier:"FilePartInput"}),Wb=a.Struct({id:a.optional(Ar),type:a.Literal("agent"),name:a.String,source:a.optional(a.Struct({value:a.String,start:J,end:J}))}).annotate({identifier:"AgentPartInput"}),Gb=a.Struct({id:a.optional(Ar),type:a.Literal("subtask"),prompt:a.String,description:a.String,agent:a.String,model:a.optional(a.Struct({providerID:_e.ID,modelID:ke.ID})),command:a.optional(a.String)}).annotate({identifier:"SubtaskPartInput"}),Hc=a.Struct({...Zm,role:a.Literal("assistant"),time:a.Struct({created:J,completed:a.optional(J)}),error:a.optional(jb),parentID:wr,modelID:ke.ID,providerID:_e.ID,servedModelID:a.optional(a.String),mode:a.String,agent:a.String,path:a.Struct({cwd:a.String,root:a.String}),summary:a.optional(a.Boolean),aside:a.optional(a.Boolean),cost:a.Finite,tokens:a.Struct({total:a.optional(a.Finite),input:a.Finite,output:a.Finite,reasoning:a.Finite,cache:a.Struct({read:a.Finite,write:a.Finite})}),structured:a.optional(a.Any),variant:a.optional(a.String),finish:a.optional(a.String)}).annotate({identifier:"AssistantMessage"}),Kc=a.Union([ey,Hc]).annotate({discriminator:"role",identifier:"Message"}),Jb=a.Struct({info:Kc,parts:a.Array(Uc)}),Hn={durable:{aggregate:"sessionID",version:1}},Yb=a.Struct({additions:a.Finite,deletions:a.Finite,files:a.Finite,diffs:b(a.Array(Un.Info))}),Xb=a.Struct({input:a.Finite,output:a.Finite,reasoning:a.Finite,cache:a.Struct({read:a.Finite,write:a.Finite})}),Zb=a.Struct({url:a.String}),eR=a.Struct({messageID:wr,partID:b(Ar),snapshot:b(a.String),diff:b(a.String)}),tR=a.Struct({id:ke.ID,providerID:_e.ID,variant:b(a.String)}),Ts=a.Struct({id:Me,slug:a.String,projectID:Cr.ID,workspaceID:b(Ho),directory:a.String,path:b(a.String),parentID:b(Me),summary:b(Yb),cost:b(a.Finite),tokens:b(Xb),share:b(Zb),title:a.String,agent:b(a.String),model:b(tR),version:a.String,metadata:b(a.Record(a.String,a.Any)),time:a.Struct({created:J,updated:J,compacting:b(J),archived:b(a.Finite)}),permission:b(qi.Ruleset),revert:b(eR)}).annotate({identifier:"Session"}),sn={Created:Ce({type:"session.created",...Hn,schema:{sessionID:Me,info:Ts}}),Updated:Ce({type:"session.updated",...Hn,schema:{sessionID:Me,info:Ts}}),Deleted:Ce({type:"session.deleted",...Hn,schema:{sessionID:Me,info:Ts}}),MessageUpdated:Ce({type:"message.updated",...Hn,schema:{sessionID:Me,info:Kc}}),MessageRemoved:Ce({type:"message.removed",...Hn,schema:{sessionID:Me,messageID:wr}}),PartUpdated:Ce({type:"message.part.updated",...Hn,schema:{sessionID:Me,part:Uc,time:a.Finite}}),PartRemoved:Ce({type:"message.part.removed",...Hn,schema:{sessionID:Me,messageID:wr,partID:Ar}})},_c=Ce({type:"message.part.delta",schema:{sessionID:Me,messageID:wr,partID:Ar,field:a.String,delta:a.String}}),Oc=Ce({type:"session.diff",schema:{sessionID:Me,diff:a.Array(Un.Info)}}),Qc=Ce({type:"session.error",schema:{sessionID:a.optional(Me),error:Hc.fields.error}}),rR={...sn,PartDelta:_c,Diff:Oc,Error:Qc,Definitions:vt(sn.Created,sn.Updated,sn.Deleted,sn.MessageUpdated,sn.MessageRemoved,sn.PartUpdated,sn.PartRemoved,_c,Oc,Qc)};var Mr={};Q(Mr,{EventV2:()=>Mr,ID:()=>ny,InvalidDurableEventError:()=>bt,Service:()=>Do,SubscriberOverflowError:()=>Is,allBounded:()=>mR,define:()=>uR,latestSequence:()=>lR,layerWith:()=>oy,node:()=>gR,readAggregate:()=>fR,versionedType:()=>Vc});import{Cause as oR,Context as iR,Effect as H,Layer as aR,Option as sR,PubSub as Zt,Queue as Ls,Schema as kr,Stream as er}from"effect";import{and as jc,asc as ty,eq as tr,gt as ry,inArray as dR}from"drizzle-orm";import{isDeepStrictEqual as cR}from"node:util";var K_={definitions:ee.durable(Bn.DurableDefinitions),schema:Bn.Durable},zc=ee.durable([...Fi.Event.Definitions.filter(e=>e.durable!==void 0),...Bn.DurableDefinitions]);var ny=ee.ID,lR=H.fn("EventV2.latestSequence")(function*(e,t){return(yield*e.select({seq:Xe.seq}).from(Xe).where(tr(Xe.aggregate_id,t)).get().pipe(H.orDie))?.seq??-1}),bt=class extends kr.TaggedErrorClass()("EventV2.InvalidDurableEvent",{type:kr.String,message:kr.String}){static{r(this,"InvalidDurableEventError")}},pR=r(e=>{let t=zc.get(e.type);if(!t?.durable)throw new bt({type:e.type,message:`Unknown durable event type ${e.type}`});return{id:e.id,type:t.type,durable:{aggregateID:e.aggregateID,seq:e.seq,version:t.durable.version},data:kr.decodeUnknownSync(t.data)(e.data)}},"decodeSerializedEvent"),fR=H.fn("EventV2.readAggregate")(function*(e,t){let n=t.after??-1,o=yield*e.select().from(He).where(jc(tr(He.aggregate_id,t.aggregateID),ry(He.seq,n),dR(He.type,Array.from(t.manifest.definitions.keys())))).orderBy(ty(He.seq)).limit(t.limit+1).all().pipe(H.orDie),i=o.slice(0,t.limit),s=kr.decodeUnknownSync(t.manifest.schema);return{events:i.map(p=>s({id:p.id,type:t.manifest.definitions.get(p.type)?.type??p.type,durable:{aggregateID:p.aggregate_id,seq:p.seq,version:t.manifest.definitions.get(p.type)?.durable?.version},data:p.data})),hasMore:o.length>t.limit}}),Is=class extends kr.TaggedErrorClass()("EventV2.SubscriberOverflow",{capacity:kr.Int}){static{r(this,"SubscriberOverflowError")}},uR=ee.define,Vc=ee.versionedType,Do=class extends iR.Service()("@opencode/Event"){static{r(this,"Service")}},mR=r((e,t)=>H.gen(function*(){let n=yield*Ls.dropping(t),o=yield*e.listen(i=>Ls.offer(n,i).pipe(H.flatMap(s=>s?H.void:Ls.fail(n,new Is({capacity:t})).pipe(H.asVoid))));return yield*H.addFinalizer(()=>o.pipe(H.andThen(Ls.shutdown(n)),H.asVoid)),er.fromQueue(n)}),"allBounded"),oy=r(e=>aR.effect(Do,H.gen(function*(){let t={all:yield*Zt.unbounded(),durable:new Map,typed:new Map},n=new Map,o=new Array,{db:i}=yield*Qt.Service,s=r(T=>H.gen(function*(){let R=t.typed.get(T.type);if(R)return R;let C=yield*Zt.unbounded();return t.typed.set(T.type,C),C}),"getOrCreate");yield*H.addFinalizer(()=>H.gen(function*(){yield*Zt.shutdown(t.all),yield*H.forEach(t.durable.values(),T=>H.forEach(T,Zt.shutdown,{discard:!0}),{discard:!0}),yield*H.forEach(t.typed.values(),Zt.shutdown,{discard:!0})}));function d(T,R,C,k){return H.gen(function*(){let K=T?.durable;if(K){let Y=R.data[K.aggregate];if(typeof Y!="string")yield*H.die(new bt({type:R.type,message:`Expected string aggregate field ${K.aggregate}`}));else{C&&C.aggregateID!==Y&&(yield*H.die(new bt({type:R.type,message:`Aggregate mismatch: expected ${C.aggregateID}, got ${Y}`})));let de=n.get(R.type)??[];return yield*H.uninterruptible(H.gen(function*(){let qe=yield*i.transaction(()=>H.gen(function*(){let M=yield*i.select({seq:Xe.seq,ownerID:Xe.owner_id}).from(Xe).where(tr(Xe.aggregate_id,Y)).get().pipe(H.orDie),$=M?.seq??-1,Z=kr.encodeUnknownSync(T.data)(R.data);if(C?.strictOwner&&M?.ownerID&&M.ownerID!==C.ownerID&&(yield*H.die(new bt({type:R.type,message:`Replay owner mismatch for aggregate ${Y}: expected ${M.ownerID}, got ${C.ownerID??"none"}`}))),C&&C.seq<=$){let u=yield*i.select().from(He).where(jc(tr(He.aggregate_id,Y),tr(He.seq,C.seq))).get().pipe(H.orDie);if(u?.id===R.id&&u.type===Vc(T.type,K.version)&&cR(u.data,Z)){C.ownerID&&M?.ownerID==null&&(yield*i.update(Xe).set({owner_id:C.ownerID}).where(tr(Xe.aggregate_id,Y)).run().pipe(H.orDie));return}yield*H.die(new bt({type:R.type,message:`Replay diverged at aggregate ${Y} sequence ${C.seq}`}))}if(C&&M?.ownerID&&M.ownerID!==C.ownerID)return;let Se=C?.seq??$+1;C&&Se!==$+1&&(yield*H.die(new bt({type:R.type,message:`Sequence mismatch for aggregate ${Y}: expected ${$+1}, got ${Se}`})));let ue=yield*i.select({aggregateID:He.aggregate_id,seq:He.seq}).from(He).where(tr(He.id,R.id)).get().pipe(H.orDie);ue&&(yield*H.die(new bt({type:R.type,message:`Event ${R.id} already exists at aggregate ${ue.aggregateID} sequence ${ue.seq}`})));let ot={...R,durable:{aggregateID:Y,seq:Se,version:K.version}};for(let u of de)yield*u(ot);return k&&(yield*k(Se)),yield*i.insert(Xe).values([{aggregate_id:Y,seq:Se,owner_id:C?.ownerID}]).onConflictDoUpdate({target:Xe.aggregate_id,set:{seq:Se,...C?.ownerID&&M?.ownerID==null?{owner_id:C.ownerID}:{}}}).run().pipe(H.orDie),yield*i.insert(He).values([{id:R.id,aggregate_id:Y,seq:Se,type:Vc(T.type,K.version),data:Z}]).run().pipe(H.orDie),{aggregateID:Y,seq:Se}}),{behavior:"immediate"}).pipe(H.orDie);return qe&&(yield*H.forEach(t.durable.get(qe.aggregateID)??[],M=>Zt.publish(M,void 0),{discard:!0})),qe}))}}})}r(d,"commitDurableEvent");function p(T,R,C){return H.gen(function*(){if(!T?.durable&&C)return yield*H.die(new bt({type:R.type,message:"Local commit hooks require a durable event"}));if(T?.durable){let k=yield*d(T,R,void 0,C);if(k)return R={...R,durable:{aggregateID:k.aggregateID,seq:k.seq,version:T.durable.version}},yield*y(R,!0),R}return yield*y(R,!1),R})}r(p,"publishEvent");let c=r((T,R)=>H.suspend(()=>R(T)).pipe(H.catchCauseIf(C=>!oR.hasInterrupts(C),C=>H.logError("Event listener failed",{eventID:T.id,eventType:T.type,cause:C}))),"observe");function y(T,R){return H.gen(function*(){yield*H.forEach(o,k=>R?c(T,k):k(T),{discard:!0});let C=t.typed.get(T.type);C&&(yield*Zt.publish(C,T)),yield*Zt.publish(t.all,T)})}r(y,"notify");function g(T,R,C){return H.gen(function*(){let k=sR.getOrUndefined(yield*H.serviceOption(Xt.Service)),K=C?.location??(k?{directory:k.directory,workspaceID:k.workspaceID}:void 0);return yield*p(T,{id:C?.id??ny.create(),...C?.metadata?{metadata:C.metadata}:{},type:T.type,...K?{location:K}:{},data:R},C?.commit)})}r(g,"publish");function m(T,R){return H.gen(function*(){let C=zc.get(T.type);if(!C?.durable)yield*H.die(new bt({type:T.type,message:`Unknown durable event type ${T.type}`}));else{let k={id:T.id,type:C.type,data:kr.decodeUnknownSync(C.data)(T.data)},K=yield*d(C,k,{seq:T.seq,aggregateID:T.aggregateID,ownerID:R?.ownerID,strictOwner:R?.strictOwner});K&&R?.publish&&(yield*y({...k,durable:{aggregateID:K.aggregateID,seq:K.seq,version:C.durable.version}},!0))}})}r(m,"replay");function f(T,R){return H.gen(function*(){let C=T[0]?.aggregateID;if(!C)return;T.some(K=>K.aggregateID!==C)&&(yield*H.die(new bt({type:T[0]?.type??"unknown",message:"Replay events must belong to the same aggregate"})));let k=T[0]?.seq??0;for(let[K,Y]of T.entries()){let de=k+K;Y.seq!==de&&(yield*H.die(new bt({type:Y.type,message:`Replay sequence mismatch at index ${K}: expected ${de}, got ${Y.seq}`})))}for(let K of T)yield*m(K,R);return C})}r(f,"replayAll");function l(T){return i.transaction(()=>H.gen(function*(){yield*i.delete(Xe).where(tr(Xe.aggregate_id,T)).run(),yield*i.delete(He).where(tr(He.aggregate_id,T)).run()})).pipe(H.orDie)}r(l,"remove");function L(T,R){return i.update(Xe).set({owner_id:R}).where(tr(Xe.aggregate_id,T)).run().pipe(H.orDie)}r(L,"claim");let D=r(T=>er.unwrap(s(T).pipe(H.map(R=>er.fromPubSub(R)))).pipe(er.map(R=>R)),"subscribe"),U=r(()=>er.fromPubSub(t.all),"streamAll"),A=r((T,R)=>(e?.beforeAggregateRead?.(T)??H.void).pipe(H.andThen(i.select().from(He).where(jc(tr(He.aggregate_id,T),ry(He.seq,R))).orderBy(ty(He.seq)).all()),H.orDie,H.map(C=>C.map(k=>pR({id:k.id,aggregateID:k.aggregate_id,seq:k.seq,type:k.type,data:k.data})))),"readAfter"),_=r(T=>H.gen(function*(){let R=yield*Zt.sliding(1),C=yield*Zt.subscribe(R);return yield*H.acquireRelease(H.sync(()=>{let k=t.durable.get(T)??new Set;k.add(R),t.durable.set(T,k)}),()=>H.sync(()=>{let k=t.durable.get(T);k?.delete(R),k?.size===0&&t.durable.delete(T)}).pipe(H.andThen(Zt.shutdown(R)))),C}),"subscribeDurable"),x=r(T=>er.unwrap(H.gen(function*(){let R=yield*_(T.aggregateID),C=T.after??-1,k=H.suspend(()=>A(T.aggregateID,C)).pipe(H.tap(de=>H.sync(()=>{C=de.at(-1)?.durable?.seq??C}))),K=yield*k,Y=er.fromSubscription(R).pipe(er.mapEffect(()=>k),er.flattenIterable);return er.concat(er.fromIterable(K),Y)})),"durable"),B=r(T=>H.sync(()=>(o.push(T),H.sync(()=>{let R=o.indexOf(T);R>=0&&o.splice(R,1)}))),"listen"),F=r((T,R)=>H.sync(()=>{let C=n.get(T.type)??[];C.push(k=>R(k)),n.set(T.type,C)}),"project");return Do.of({publish:g,subscribe:D,all:U,durable:x,listen:B,project:F,replay:m,replayAll:f,remove:l,claim:L})})),"layerWith"),yR=oy(),gR=Te({service:Do,layer:yR,deps:[Qt.node]});var Co={};Q(Co,{Wildcard:()=>Co,match:()=>SR});function SR(e,t){let n=e.replaceAll("\\","/"),o=t.replaceAll("\\","/").replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return o.endsWith(" .*")&&(o=o.slice(0,-3)+"( .*)?"),new RegExp("^"+o+"$",process.platform==="win32"?"si":"s").test(n)}r(SR,"match");var na={};Q(na,{ConfigV1:()=>na,Info:()=>wL,WellKnown:()=>DL});import{Schema as h}from"effect";var Vn={};Q(Vn,{ConfigExperimental:()=>Vn,Experimental:()=>rl,Policy:()=>Ps,PolicyAction:()=>gy});import{Schema as Vi}from"effect";var ji={};Q(ji,{Catalog:()=>ji,Event:()=>my,PolicyActions:()=>oL,Service:()=>Oo,locationLayer:()=>aL,node:()=>sL});import{Array as nt,Context as rL,Effect as hr,Layer as tl,Option as uy,Order as Ki,pipe as zi,Schema as nL}from"effect";var Bi={};Q(Bi,{Catalog:()=>Bi,Event:()=>hR});var iy=Ce({type:"catalog.updated",schema:{}}),hR={Updated:iy,Definitions:vt(iy)};var kt={};Q(kt,{Effect:()=>ay,Info:()=>Wc,Policy:()=>kt,Service:()=>wo,locationLayer:()=>TR,node:()=>bR});import{Context as ER,Effect as $c,Layer as xR,Schema as vs}from"effect";var ay=vs.Literals(["allow","deny"]).annotate({identifier:"Policy.Effect"}),Wc=class extends vs.Class("Policy.Info")({action:vs.String,effect:ay,resource:vs.String}){static{r(this,"Info")}},wo=class extends ER.Service()("@opencode/v2/Policy"){static{r(this,"Service")}},sy=xR.effect(wo,$c.gen(function*(){let e=[];return yield*Xt.Service,wo.of({load:$c.fn("Policy.load")(function*(t){e=t}),hasStatements:r(()=>e.length>0,"hasStatements"),evaluate:$c.fn("Policy.evaluate")(function*(t,n,o){return e.findLast(i=>Co.match(t,i.action)&&Co.match(n,i.resource))?.effect??o})})})),TR=sy,bR=$t({service:wo,layer:sy,deps:[Xt.node]});var Kn={};Q(Kn,{State:()=>Kn,batch:()=>IR,create:()=>vR});import{Context as RR,Effect as Ke,Scope as dy,Semaphore as LR}from"effect";var Ds=RR.Reference("@opencode/State/CurrentBatch",{defaultValue:r(()=>{},"defaultValue")});function IR(e){return Ke.gen(function*(){if(yield*Ds)return yield*e;let n=new Set,o=yield*e.pipe(Ke.provideService(Ds,n));return yield*Ke.forEach(n,i=>i(),{discard:!0}),o})}r(IR,"batch");function vR(e){let t=e.initial(),n=[],o=LR.makeUnsafe(1),i=Ke.fn("State.commit")(function*(y){let g=e.draft(y);e.finalize&&(yield*e.finalize(g)),t=y}),s=r((y,g)=>Ke.suspend(()=>{let m=y(g);return Ke.isEffect(m)?Ke.asVoid(m).pipe(Ke.orDie):Ke.void}),"apply"),d=Ke.fnUntraced(function*(){let y=e.initial(),g=e.draft(y);for(let m of n)yield*s(m.run,g).pipe(Ke.withSpan("State.reload.update"));yield*i(y)}),p=r(()=>o.withPermit(d()),"reload");return{get:r(()=>t,"get"),transform:Ke.fn("State.transform")(function*(y){let g=yield*dy.Scope;return yield*Ke.uninterruptible(Ke.gen(function*(){let m={run:y},f=!0,l=Ke.uninterruptible(o.withPermit(Ke.suspend(()=>f?(f=!1,n=n.filter(D=>D!==m),Ke.gen(function*(){let D=yield*Ds;if(D){D.add(p);return}yield*d()})):Ke.void)));yield*o.withPermit(Ke.sync(()=>{n=[...n,m]})),yield*dy.addFinalizer(g,l);let L=yield*Ds;return L?L.add(p):yield*p(),{dispose:l}}))}),reload:p}}r(vR,"create");var cn={};Q(cn,{Attempt:()=>py,AttemptID:()=>el,AttemptStatus:()=>YR,AuthorizationError:()=>As,CodeRequiredError:()=>ws,EnvMethod:()=>WR,Event:()=>Sr,ID:()=>BR,Info:()=>ly,Inputs:()=>JR,Integration:()=>cn,KeyMethod:()=>$R,Method:()=>GR,MethodID:()=>UR,OAuthMethod:()=>VR,Prompt:()=>jR,Ref:()=>XR,SelectPrompt:()=>zR,Service:()=>_o,TextPrompt:()=>KR,When:()=>HR,locationLayer:()=>fy,node:()=>tL});import{Cause as QR,Clock as Cs,Context as NR,Duration as jn,Effect as fe,Exit as ko,Layer as qR,Schedule as FR,Schema as Zc,Scope as Mo,SynchronizedRef as zn}from"effect";var dn={};Q(dn,{Credential:()=>dn,ID:()=>Jc,Info:()=>Hi,Key:()=>kR,OAuth:()=>PR,Service:()=>Po,Value:()=>Yc,node:()=>_R});import{asc as cy,eq as Ui}from"drizzle-orm";import{Context as wR,Effect as Rt,Layer as AR,Schema as Gc}from"effect";import{integer as DR,sqliteTable as CR,text as Ao}from"drizzle-orm/sqlite-core";var mt=CR("credential",{id:Ao().$type().primaryKey(),integration_id:Ao().$type(),label:Ao().notNull(),value:Ao({mode:"json"}).$type().notNull(),connector_id:Ao(),method_id:Ao(),active:DR({mode:"boolean"}),...hs});var Jc=rr.ID,PR=rr.OAuth,kR=rr.Key,Yc=rr.Value,Hi=class extends Gc.Class("Credential.Info")({id:Jc,integrationID:we.ID,label:Gc.String,value:Yc}){static{r(this,"Info")}},Po=class extends wR.Service()("@opencode/v2/Credential"){static{r(this,"Service")}},MR=AR.effect(Po,Rt.gen(function*(){let{db:e}=yield*Qt.Service,t=Gc.decodeUnknownSync(Yc),n=r(o=>{if(o.integration_id)return new Hi({id:o.id,integrationID:o.integration_id,label:o.label,value:t(o.value)})},"stored");return Po.of({all:Rt.fn("Credential.all")(function*(){return(yield*e.select().from(mt).orderBy(cy(mt.time_created)).all().pipe(Rt.orDie)).flatMap(o=>{let i=n(o);return i?[i]:[]})}),list:Rt.fn("Credential.list")(function*(o){return(yield*e.select().from(mt).where(Ui(mt.integration_id,o)).orderBy(cy(mt.time_created)).all().pipe(Rt.orDie)).flatMap(i=>{let s=n(i);return s?[s]:[]})}),get:Rt.fn("Credential.get")(function*(o){let i=yield*e.select().from(mt).where(Ui(mt.id,o)).get().pipe(Rt.orDie);return i?n(i):void 0}),create:Rt.fn("Credential.create")(function*(o){let i=new Hi({id:Jc.create(),integrationID:o.integrationID,label:o.label??"default",value:o.value});return yield*e.transaction(s=>Rt.gen(function*(){yield*s.delete(mt).where(Ui(mt.integration_id,i.integrationID)).run(),yield*s.insert(mt).values({id:i.id,integration_id:i.integrationID,label:i.label,value:i.value}).run()})).pipe(Rt.orDie),i}),update:Rt.fn("Credential.update")(function*(o,i){!i.label&&!i.value||(yield*e.update(mt).set({label:i.label,value:i.value}).where(Ui(mt.id,o)).run().pipe(Rt.orDie))}),remove:Rt.fn("Credential.remove")(function*(o){yield*e.delete(mt).where(Ui(mt.id,o)).run().pipe(Rt.orDie)})})})),_R=Te({service:Po,layer:MR,deps:[Qt.node]});var TO=br.CredentialInfo,bO=br.EnvInfo,RO=br.Info;var BR=we.ID,UR=we.MethodID,el=we.AttemptID,HR=we.When,KR=we.TextPrompt,zR=we.SelectPrompt,jR=we.Prompt,VR=we.OAuthMethod,$R=we.KeyMethod,WR=we.EnvMethod,GR=we.Method,ly=we.Info,JR=we.Inputs,py=we.Attempt,YR=we.AttemptStatus,ws=class extends Zc.TaggedErrorClass()("Integration.CodeRequired",{attemptID:el}){static{r(this,"CodeRequiredError")}},As=class extends Zc.TaggedErrorClass()("Integration.Authorization",{cause:Zc.Defect()}){static{r(this,"AuthorizationError")}},Sr=we.Event,XR=we.Ref,_o=class extends NR.Service()("@opencode/v2/Integration"){static{r(this,"Service")}},ZR=jn.toMillis(jn.minutes(10)),Xc=jn.toMillis(jn.minutes(1)),eL=jn.seconds(30),fy=qR.effect(_o,fe.gen(function*(){let e=yield*dn.Service,t=yield*Mr.Service,n=yield*Mo.Scope,o=zn.makeUnsafe(new Map),i=Kn.create({initial:r(()=>({integrations:new Map}),"initial"),draft:r(f=>({list:r(()=>Array.from(f.integrations.values(),l=>l.ref),"list"),get:r(l=>f.integrations.get(l)?.ref,"get"),update:r((l,L)=>{let D=f.integrations.get(l)??{ref:{id:l,name:l},methods:[],implementations:new Map};f.integrations.has(l)||f.integrations.set(l,D),L(D.ref),D.ref.id=l},"update"),remove:r(l=>f.integrations.delete(l),"remove"),method:{list:r(l=>f.integrations.get(l)?.methods??[],"list"),update:r(l=>{let L=f.integrations.get(l.integrationID)??{ref:{id:l.integrationID,name:l.integrationID},methods:[],implementations:new Map};f.integrations.has(l.integrationID)||f.integrations.set(l.integrationID,L);let D=L.methods.findIndex(U=>U.type!==l.method.type?!1:U.type!=="oauth"||l.method.type!=="oauth"?!0:U.id===l.method.id);D===-1?L.methods.push(l.method):L.methods[D]=l.method,l.method.type==="oauth"&&L.implementations.set(l.method.id,l)},"update"),remove:r((l,L)=>{let D=f.integrations.get(l);if(!D)return;let U=D.methods.findIndex(A=>A.type!==L.type?!1:A.type!=="oauth"||L.type!=="oauth"?!0:A.id===L.id);U!==-1&&D.methods.splice(U,1),L.type==="oauth"&&D.implementations.delete(L.id)},"remove")}}),"draft"),finalize:r(()=>t.publish(Sr.Updated,{}).pipe(fe.asVoid),"finalize")}),s=r((f,l)=>{let L=l.map(U=>({type:"credential",id:U.id,label:U.label})).toReversed(),D=(f?.methods??[]).filter(U=>U.type==="env").flatMap(U=>U.names.filter(A=>process.env[A])).map(U=>({type:"env",name:U}));return[...L,...D]},"resolveConnections"),d=r((f,l)=>new ly({id:f.ref.id,name:f.ref.name,methods:f.methods,connections:l}),"project"),p=r(f=>f.pipe(fe.mapError(l=>new As({cause:l}))),"authorize"),c=r(f=>Mo.close(f,ko.void).pipe(fe.forkIn(n,{startImmediately:!0}),fe.asVoid),"close"),y=r(f=>{let l=QR.squash(f);return l instanceof Error?l.message:String(l)},"message"),g=fe.fnUntraced(function*(f,l){let L=yield*Cs.currentTimeMillis,D=yield*zn.modify(o,U=>{let A=U.get(f);if(!A||A.status!=="pending")return[void 0,U];let _=ko.isSuccess(l)?{status:"complete",time:A.time,removeAt:L+Xc}:{status:"failed",message:y(l.cause),time:A.time,removeAt:L+Xc};return[A,new Map(U).set(f,_)]});if(D){if(ko.isSuccess(l)){let U=i.get().integrations.get(D.integrationID)?.implementations.get(D.methodID);yield*e.create({integrationID:D.integrationID,label:D.label??U?.label?.(l.value),value:l.value}),yield*t.publish(Sr.ConnectionUpdated,{integrationID:D.integrationID}),yield*t.publish(Sr.Updated,{})}yield*c(D.scope)}});return yield*fe.fnUntraced(function*(){let f=yield*Cs.currentTimeMillis,l=yield*zn.modify(o,L=>{let D=new Map(L),U=[];for(let[A,_]of L){if(_.status==="pending"&&_.time.expires<=f){U.push(_.scope),D.set(A,{status:"expired",time:_.time,removeAt:f+Xc});continue}_.status!=="pending"&&_.removeAt<=f&&D.delete(A)}return[U,D]});yield*fe.forEach(l,c,{discard:!0})})().pipe(fe.repeat(FR.spaced(eL)),fe.forkIn(n)),_o.of({transform:i.transform,reload:i.reload,get:fe.fn("Integration.get")(function*(f){let l=i.get().integrations.get(f);if(l)return d(l,s(l,yield*e.list(f)))}),list:fe.fn("Integration.list")(function*(){let f=Map.groupBy(yield*e.all(),l=>l.integrationID);return Array.from(i.get().integrations.values(),l=>d(l,s(l,f.get(l.ref.id)??[]))).toSorted((l,L)=>l.name.localeCompare(L.name))}),connection:{active:fe.fn("Integration.connection.active")(function*(f){let l=i.get().integrations.get(f);return s(l,yield*e.list(f))[0]}),resolve:fe.fn("Integration.connection.resolve")(function*(f){if(f.type==="env"){let A=process.env[f.name];return A?dn.Key.make({type:"key",key:A}):void 0}let l=yield*e.get(f.id);if(!l)return;if(l.value.type==="key")return l.value;let L=i.get().integrations.get(l.integrationID)?.implementations.get(l.value.methodID);if(!L?.refresh)return l.value;let D=yield*Cs.currentTimeMillis;if(l.value.expires>D+jn.toMillis(jn.minutes(5)))return l.value;let U=yield*p(L.refresh(l.value));return yield*e.update(l.id,{value:U}),U}),key:fe.fn("Integration.connection.key")(function*(f){if(!i.get().integrations.get(f.integrationID)?.methods.some(L=>L.type==="key"))return yield*fe.die(`Key method not found: ${f.integrationID}`);yield*e.create({integrationID:f.integrationID,label:f.label,value:dn.Key.make({type:"key",key:f.key})}),yield*t.publish(Sr.ConnectionUpdated,{integrationID:f.integrationID}),yield*t.publish(Sr.Updated,{})}),oauth:fe.fn("Integration.connection.oauth")(function*(f){let l=i.get().integrations.get(f.integrationID)?.implementations.get(f.methodID);if(!l)return yield*fe.die(`OAuth method not found: ${f.integrationID}/${f.methodID}`);let L=yield*Mo.fork(n),D=yield*p(l.authorize(f.inputs)).pipe(Mo.provide(L),fe.onExit(x=>ko.isFailure(x)?Mo.close(L,x):fe.void)),U=el.create(),A=yield*Cs.currentTimeMillis,_={created:A,expires:A+ZR};return yield*zn.update(o,x=>new Map(x).set(U,{status:"pending",completing:D.mode==="auto",authorization:D,integrationID:f.integrationID,methodID:f.methodID,label:f.label,scope:L,time:_})),D.mode==="auto"&&(yield*D.callback.pipe(fe.exit,fe.flatMap(x=>g(U,x)),fe.forkIn(L,{startImmediately:!0}))),new py({attemptID:U,url:D.url,instructions:D.instructions,mode:D.mode,time:_})}),update:fe.fn("Integration.connection.update")(function*(f,l){let L=yield*e.get(f);yield*e.update(f,l),L&&(yield*t.publish(Sr.ConnectionUpdated,{integrationID:L.integrationID})),yield*t.publish(Sr.Updated,{})}),remove:fe.fn("Integration.connection.remove")(function*(f){let l=yield*e.get(f);yield*e.remove(f),l&&(yield*t.publish(Sr.ConnectionUpdated,{integrationID:l.integrationID})),yield*t.publish(Sr.Updated,{})})},attempt:{status:fe.fn("Integration.attempt.status")(function*(f){let l=(yield*zn.get(o)).get(f);return l?l.status==="failed"?{status:l.status,message:l.message??"Authorization failed",time:l.time}:{status:l.status,time:l.time}:yield*fe.die(`OAuth attempt not found: ${f}`)}),complete:fe.fn("Integration.attempt.complete")(function*(f){let l=yield*zn.modify(o,U=>{let A=U.get(f.attemptID);return!A||A.status!=="pending"||A.completing?[A,U]:A.authorization.mode==="code"&&f.code===void 0?[A,U]:[A,new Map(U).set(f.attemptID,{...A,completing:!0})]});if(!l)return yield*fe.die(`OAuth attempt not found: ${f.attemptID}`);if(l.status!=="pending")return;if(l.authorization.mode==="code"&&f.code===void 0)return yield*new ws({attemptID:f.attemptID});if(l.completing)return yield*fe.die(`OAuth attempt already completing: ${f.attemptID}`);let L=l.authorization.mode==="auto"?l.authorization.callback:l.authorization.callback(f.code),D=yield*p(L).pipe(fe.exit);if(yield*g(f.attemptID,D),ko.isFailure(D))return yield*D}),cancel:fe.fn("Integration.attempt.cancel")(function*(f){let l=yield*zn.modify(o,L=>{let D=L.get(f);if(!D||D.status!=="pending")return[void 0,L];let U=new Map(L);return U.delete(f),[D,U]});l&&(yield*Mo.close(l.scope,ko.void))})}})})),tL=$t({service:_o,layer:fy,deps:[dn.node,Mr.node]});var oL=nL.Literals(["provider.use"]),my=Bi.Event,Oo=class extends rL.Service()("@opencode/v2/Catalog"){static{r(this,"Service")}},yy=tl.effect(Oo,hr.gen(function*(){let e=yield*Mr.Service,t=yield*kt.Service,n=yield*cn.Service,o=r((c,y)=>c.disabled?!1:typeof c.request.body.apiKey=="string"||y?.connections.length?!0:c.integrationID===void 0&&!y,"available"),i=r((c,y)=>{let g=c.api.type==="native"&&!c.api.url&&Object.keys(c.api.settings).length===0?{...y.api,id:c.api.id}:c.api.type==="aisdk"&&y.api.type==="aisdk"&&!c.api.url?{...c.api,url:y.api.url,settings:{...y.api.settings,...c.api.settings}}:c.api.type==="aisdk"&&y.api.type==="aisdk"?{...c.api,settings:{...y.api.settings,...c.api.settings}}:c.api,m={headers:{...y.request.headers,...c.request.headers},body:{...y.request.body,...c.request.body},variant:c.request.variant};return gt.Info.make({...c,api:g,request:m})},"projectModel"),s=r(c=>{typeof c.request.body.baseURL=="string"&&(c.api.url=c.request.body.baseURL,delete c.request.body.baseURL)},"normalizeApi"),d=Kn.create({initial:r(()=>({providers:new Map}),"initial"),draft:r(c=>({provider:{list:r(()=>nt.fromIterable(c.providers.values()),"list"),get:r(g=>c.providers.get(g),"get"),update:r((g,m)=>{let f=c.providers.get(g);f||(f={provider:st.Info.empty(g),models:new Map},c.providers.set(g,f)),m(f.provider),s(f.provider)},"update"),remove:r(g=>{c.providers.delete(g)},"remove")},model:{get:r((g,m)=>c.providers.get(g)?.models.get(m),"get"),update:r((g,m,f)=>{let l=c.providers.get(g);l||(l={provider:st.Info.empty(g),models:new Map},c.providers.set(g,l));let L=l.models.get(m)??gt.Info.empty(g,m);l.models.has(m)||l.models.set(m,L),f(L),L.id=m,L.providerID=g,s(L)},"update"),remove:r((g,m)=>{c.providers.get(g)?.models.delete(m)},"remove"),default:{get:r(()=>c.defaultModel,"get"),set:r((g,m)=>{c.defaultModel={providerID:g,modelID:m}},"set")}}}),"draft"),finalize:hr.fn("CatalogV2.finalize")(function*(c){if(t.hasStatements())for(let y of[...c.provider.list()])(yield*t.evaluate("provider.use",y.provider.id,"allow"))==="deny"&&c.provider.remove(y.provider.id);yield*e.publish(my.Updated,{})})}),p={transform:d.transform,reload:d.reload,provider:{get:hr.fn("CatalogV2.provider.get")(function*(c){return d.get().providers.get(c)?.provider}),all:hr.fn("CatalogV2.provider.all")(function*(){return nt.fromIterable(d.get().providers.values()).map(c=>c.provider)}),available:hr.fn("CatalogV2.provider.available")(function*(){let c=new Map((yield*n.list()).map(y=>[y.id,y]));return(yield*p.provider.all()).filter(y=>o(y,c.get(y.integrationID??cn.ID.make(y.id))))})},model:{get:hr.fn("CatalogV2.model.get")(function*(c,y){let g=d.get().providers.get(c);if(!g)return;let m=g.models.get(y);return m&&i(m,g.provider)}),all:hr.fn("CatalogV2.model.all")(function*(){return zi(nt.fromIterable(d.get().providers.values()),nt.flatMap(c=>nt.fromIterable(c.models.values()).map(y=>i(y,c.provider))),nt.sortWith(c=>c.time.released,Ki.flip(Ki.Number)))}),available:hr.fn("CatalogV2.model.available")(function*(){let c=new Set((yield*p.provider.available()).map(y=>y.id));return(yield*p.model.all()).filter(y=>c.has(y.providerID)&&y.enabled)}),default:hr.fn("CatalogV2.model.default")(function*(){let c=d.get().defaultModel;if(c){let y=yield*p.provider.get(c.providerID);if(y&&(yield*p.provider.available()).some(g=>g.id===y.id)){let g=yield*p.model.get(c.providerID,c.modelID);if(g?.enabled)return g}}return uy.getOrUndefined(zi(yield*p.model.available(),nt.sortWith(y=>y.time.released,Ki.flip(Ki.Number)),nt.head))}),small:hr.fn("CatalogV2.model.small")(function*(c){let y=d.get().providers.get(c);if(!y)return;let g=y.provider;if(c===st.ID.azure||c===st.ID.make("azure-cognitive-services"))return;if(c===st.ID.opencode){let l=y.models.get(gt.ID.make("gpt-5-nano"));if(l?.enabled&&l.status==="active")return i(l,g)}let m=zi(nt.fromIterable(y.models.values()),nt.filter(l=>l.providerID===c&&l.enabled&&l.status==="active"&&l.capabilities.input.some(L=>L.startsWith("text"))&&l.capabilities.output.some(L=>L.startsWith("text"))),nt.map(l=>({model:l,cost:l.cost[0]?l.cost[0].input+l.cost[0].output:999,age:(Date.now()-l.time.released)/(1e3*60*60*24*30),small:iL.test(`${l.id} ${l.family??""} ${l.name}`.toLowerCase())})),nt.filter(l=>l.cost>0&&l.age<=18)),f=r(l=>{let L=Math.max(...l.map(U=>U.cost),.01),D=Math.max(...l.map(U=>U.age),.01);return zi(l,nt.sortWith(U=>U.cost/L*.8+U.age/D*.2,Ki.Number),nt.map(U=>i(U.model,g)),nt.head)},"pick");return uy.getOrUndefined(zi(m,nt.filter(l=>l.small),l=>l.length>0?f(l):f(m)))})}};return Oo.of(p)})),iL=/\b(nano|flash|lite|mini|haiku|small|fast)\b/,aL=yy.pipe(tl.provideMerge(cn.locationLayer),tl.provideMerge(kt.locationLayer)),sL=$t({service:Oo,layer:yy,deps:[Mr.node,kt.node,cn.node]});var gy=Vi.Union([ji.PolicyActions]),Ps=class extends Vi.Class("ConfigV2.Experimental.Policy")({...kt.Info.fields,action:gy}){static{r(this,"Policy")}},rl=class extends Vi.Class("ConfigV2.Experimental")({policies:Ps.pipe(Vi.Array,Vi.optional)}){static{r(this,"Experimental")}};var ln={};Q(ln,{ConfigReference:()=>ln,Entry:()=>Sy,Git:()=>ks,Info:()=>dL,Local:()=>Ms});import{Schema as $e}from"effect";var ks=class extends $e.Class("ConfigV2.Reference.Git")({repository:$e.String,branch:$e.String.pipe($e.optional),description:$e.String.pipe($e.optional),hidden:$e.Boolean.pipe($e.optional)}){static{r(this,"Git")}},Ms=class extends $e.Class("ConfigV2.Reference.Local")({path:$e.String,description:$e.String.pipe($e.optional),hidden:$e.Boolean.pipe($e.optional)}){static{r(this,"Local")}},Sy=$e.Union([$e.String,ks,Ms]),dL=$e.Record($e.String,Sy);var yt={};Q(yt,{ConfigAgentV1:()=>yt,Info:()=>yL});import{Schema as ae,SchemaGetter as Ty}from"effect";var $n={};Q($n,{Action:()=>_r,ConfigPermissionV1:()=>$n,Info:()=>pL,Object:()=>Ey,Rule:()=>Ht});import{Schema as Pe,SchemaGetter as hy}from"effect";var _r=Pe.Literals(["ask","allow","deny"]).annotate({identifier:"PermissionActionConfig"}),Ey=Pe.Record(Pe.String,_r).annotate({identifier:"PermissionObjectConfig"}),Ht=Pe.Union([_r,Ey]).annotate({identifier:"PermissionRuleConfig"}),xy=Pe.StructWithRest(Pe.Struct({read:Pe.optional(Ht),edit:Pe.optional(Ht),glob:Pe.optional(Ht),grep:Pe.optional(Ht),list:Pe.optional(Ht),bash:Pe.optional(Ht),task:Pe.optional(Ht),external_directory:Pe.optional(Ht),todowrite:Pe.optional(_r),question:Pe.optional(_r),webfetch:Pe.optional(_r),websearch:Pe.optional(_r),lsp:Pe.optional(Ht),doom_loop:Pe.optional(_r),skill:Pe.optional(Ht)}),[Pe.Record(Pe.String,Ht)]),cL=Pe.Union([_r,xy]),lL=r(e=>typeof e=="string"?{"*":e}:e,"normalizeInput"),pL=cL.pipe(Pe.decodeTo(xy,{decode:hy.transform(lL),encode:hy.passthrough({strict:!1})})).annotate({identifier:"PermissionConfig"});var fL=ae.Union([ae.String.check(ae.isPattern(/^#[0-9a-fA-F]{6}$/)),ae.Literals(["primary","secondary","accent","success","warning","error","info"])]),by=ae.StructWithRest(ae.Struct({model:ae.optional(ae.String),variant:ae.optional(ae.String).annotate({description:"Default model variant for this agent (applies only when using the agent's configured model)."}),temperature:ae.optional(ae.Finite),top_p:ae.optional(ae.Finite),prompt:ae.optional(ae.String),tools:ae.optional(ae.Record(ae.String,ae.Boolean)).annotate({description:"@deprecated Use 'permission' field instead"}),disable:ae.optional(ae.Boolean),description:ae.optional(ae.String).annotate({description:"Description of when to use the agent"}),mode:ae.optional(ae.Literals(["subagent","primary","all"])),hidden:ae.optional(ae.Boolean).annotate({description:"Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)"}),options:ae.optional(ae.Record(ae.String,ae.Any)),color:ae.optional(fL).annotate({description:"Hex color code (e.g., #FF5733) or theme color (e.g., primary)"}),steps:ae.optional(le).annotate({description:"Maximum number of agentic iterations before forcing text-only response"}),maxSteps:ae.optional(le).annotate({description:"@deprecated Use 'steps' field instead."}),permission:ae.optional($n.Info)}),[ae.Record(ae.String,ae.Any)]),uL=new Set(["name","model","variant","prompt","description","temperature","top_p","mode","hidden","color","steps","maxSteps","options","permission","disable","tools"]),mL=r(e=>{let t={...e.options};for(let[i,s]of Object.entries(e))uL.has(i)||(t[i]=s);let n={};for(let[i,s]of Object.entries(e.tools??{})){let d=s?"allow":"deny";if(i==="write"||i==="edit"||i==="patch"){n.edit=d;continue}n[i]=d}globalThis.Object.assign(n,e.permission);let o=e.steps??e.maxSteps;return{...e,options:t,permission:n,...o!==void 0?{steps:o}:{}}},"normalize"),yL=by.pipe(ae.decodeTo(by,{decode:Ty.transform(mL),encode:Ty.passthrough({strict:!1})})).annotate({identifier:"AgentConfig"});var $i={};Q($i,{ConfigAttachmentV1:()=>$i,Image:()=>Ry,Info:()=>gL});import{Schema as pn}from"effect";var Ry=pn.Struct({auto_resize:pn.optional(pn.Boolean).annotate({description:"Resize images before sending them to the model when they exceed configured limits (default: true)"}),max_width:pn.optional(le).annotate({description:"Maximum image width before resizing or rejecting the attachment (default: 2000)"}),max_height:pn.optional(le).annotate({description:"Maximum image height before resizing or rejecting the attachment (default: 2000)"}),max_base64_bytes:pn.optional(le).annotate({description:"Maximum base64 payload bytes for an image attachment (default: 5242880)"})}).annotate({identifier:"ImageAttachmentConfig"}),gL=pn.Struct({image:pn.optional(Ry).annotate({description:"Image attachment configuration"})}).annotate({identifier:"AttachmentConfig"});var Wi={};Q(Wi,{ConfigCommandV1:()=>Wi,Info:()=>SL});import{Schema as Kt}from"effect";var SL=Kt.Struct({template:Kt.String,description:Kt.optional(Kt.String),agent:Kt.optional(Kt.String),model:Kt.optional(Kt.String),variant:Kt.optional(Kt.String),subtask:Kt.optional(Kt.Boolean)});var Gi={};Q(Gi,{ConfigFormatterV1:()=>Gi,Entry:()=>Ly,Info:()=>hL});import{Schema as ze}from"effect";var Ly=ze.Struct({disabled:ze.optional(ze.Boolean),command:ze.optional(ze.mutable(ze.Array(ze.String))),environment:ze.optional(ze.Record(ze.String,ze.String)),extensions:ze.optional(ze.mutable(ze.Array(ze.String)))}),hL=ze.Union([ze.Boolean,ze.Record(ze.String,Ly)]);var Ji={};Q(Ji,{ConfigLayoutV1:()=>Ji,Layout:()=>xL});import{Schema as EL}from"effect";var xL=EL.Literals(["auto","stretch"]).annotate({identifier:"LayoutConfig"});var Yi={};Q(Yi,{ConfigLSPV1:()=>Yi,Disabled:()=>Iy,Entry:()=>vy,Info:()=>TL,builtinServerIds:()=>Dy,requiresExtensionsForCustomServers:()=>Cy});import{Schema as De}from"effect";var Iy=De.Struct({disabled:De.Literal(!0)}).pipe(e=>e),vy=De.Union([Iy,De.Struct({command:De.mutable(De.Array(De.String)),extensions:De.optional(De.mutable(De.Array(De.String))),disabled:De.optional(De.Boolean),env:De.optional(De.Record(De.String,De.String)),initialization:De.optional(De.Record(De.String,De.Unknown))})]).pipe(e=>e),Dy=["deno","typescript","vue","eslint","oxlint","biome","gopls","ruby-lsp","ty","pyright","elixir-ls","zls","csharp","razor","fsharp","sourcekit-lsp","rust","clangd","svelte","astro","jdtls","kotlin-ls","yaml-ls","lua-ls","php intelephense","prisma","dart","ocaml-lsp","bash","terraform","texlab","dockerfile","gleam","clojure-lsp","nixd","tinymist","haskell-language-server","julials"],Cy=De.makeFilter(e=>{if(typeof e=="boolean")return;let t=new Set(Dy);return Object.entries(e).every(([o,i])=>"disabled"in i&&i.disabled||t.has(o)?!0:"extensions"in i&&!!i.extensions)?void 0:"For custom LSP servers, 'extensions' array is required."}),TL=De.Union([De.Boolean,De.Record(De.String,vy)]).check(Cy).pipe(e=>e);var Xi={};Q(Xi,{ConfigMCPV1:()=>Xi,Info:()=>bL,Local:()=>wy,OAuth:()=>Ay,Remote:()=>Py});import{Schema as se}from"effect";var wy=se.Struct({type:se.Literal("local").annotate({description:"Type of MCP server connection"}),command:se.mutable(se.Array(se.String)).annotate({description:"Command and arguments to run the MCP server"}),cwd:se.optional(se.String).annotate({description:"Working directory for the MCP server process. Relative paths resolve from the workspace directory."}),environment:se.optional(se.Record(se.String,se.String)).annotate({description:"Environment variables to set when running the MCP server"}),enabled:se.optional(se.Boolean).annotate({description:"Enable or disable the MCP server on startup"}),timeout:se.optional(le).annotate({description:"Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified."})}).annotate({identifier:"McpLocalConfig"}),Ay=se.Struct({clientId:se.optional(se.String).annotate({description:"OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted."}),clientSecret:se.optional(se.String).annotate({description:"OAuth client secret (if required by the authorization server)"}),scope:se.optional(se.String).annotate({description:"OAuth scopes to request during authorization"}),callbackPort:se.optional(se.Int.check(se.isBetween({minimum:1,maximum:65535}))).annotate({description:"Port for the local OAuth callback server (default: 19876). Shorthand for redirectUri when only the port needs changing. Ignored if redirectUri is set."}),redirectUri:se.optional(se.String).annotate({description:"OAuth redirect URI (default: http://127.0.0.1:19876/mcp/oauth/callback)."})}).annotate({identifier:"McpOAuthConfig"}),Py=se.Struct({type:se.Literal("remote").annotate({description:"Type of MCP server connection"}),url:se.String.annotate({description:"URL of the remote MCP server"}),enabled:se.optional(se.Boolean).annotate({description:"Enable or disable the MCP server on startup"}),headers:se.optional(se.Record(se.String,se.String)).annotate({description:"Headers to send with the request"}),oauth:se.optional(se.Union([Ay,se.Literal(!1)])).annotate({description:"OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection."}),timeout:se.optional(le).annotate({description:"Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified."})}).annotate({identifier:"McpRemoteConfig"}),bL=se.Union([wy,Py]).annotate({discriminator:"type"});var Zi={};Q(Zi,{ConfigPluginV1:()=>Zi,Options:()=>ky,Spec:()=>RL});import{Schema as fn}from"effect";var ky=fn.Record(fn.String,fn.Unknown),RL=fn.Union([fn.String,fn.mutable(fn.Tuple([fn.String,ky]))]);var ea={};Q(ea,{ConfigProviderV1:()=>ea,Info:()=>LL,Model:()=>Oy,ModelStatus:()=>_y});import{Schema as E}from"effect";var _y=E.Literals(["alpha","beta","deprecated","active"]),My=E.Union([E.Literals(["reasoning","reasoning_content","reasoning_text"]),E.String]),Oy=E.Struct({id:E.optional(E.String),name:E.optional(E.String),family:E.optional(E.String),release_date:E.optional(E.String),attachment:E.optional(E.Boolean),reasoning:E.optional(E.Boolean),temperature:E.optional(E.Boolean),tool_call:E.optional(E.Boolean),interleaved:E.optional(E.Union([E.Boolean,My,E.Struct({field:My})])),cost:E.optional(E.Struct({input:E.Finite,output:E.Finite,cache_read:E.optional(E.Finite),cache_write:E.optional(E.Finite),context_over_200k:E.optional(E.Struct({input:E.Finite,output:E.Finite,cache_read:E.optional(E.Finite),cache_write:E.optional(E.Finite)}))})),limit:E.optional(E.Struct({context:E.Finite,input:E.optional(E.Finite),output:E.Finite})),modalities:E.optional(E.Struct({input:E.optional(E.mutable(E.Array(E.Literals(["text","audio","image","video","pdf"])))),output:E.optional(E.mutable(E.Array(E.Literals(["text","audio","image","video","pdf"]))))})),experimental:E.optional(E.Boolean),status:E.optional(_y),provider:E.optional(E.Struct({npm:E.optional(E.String),api:E.optional(E.String)})),options:E.optional(E.Record(E.String,E.Any)),headers:E.optional(E.Record(E.String,E.String)),variants:E.optional(E.Record(E.String,E.StructWithRest(E.Struct({disabled:E.optional(E.Boolean).annotate({description:"Disable this variant for the model"})}),[E.Record(E.String,E.Any)])).annotate({description:"Variant-specific configuration"}))}),LL=E.Struct({api:E.optional(E.String),name:E.optional(E.String),env:E.optional(E.mutable(E.Array(E.String))),id:E.optional(E.String),npm:E.optional(E.String),whitelist:E.optional(E.mutable(E.Array(E.String))),blacklist:E.optional(E.mutable(E.Array(E.String))),options:E.optional(E.StructWithRest(E.Struct({apiKey:E.optional(E.String),baseURL:E.optional(E.String),enterpriseUrl:E.optional(E.String).annotate({description:"GitHub Enterprise URL for copilot authentication"}),setCacheKey:E.optional(E.Boolean).annotate({description:"Enable promptCacheKey for this provider (default false)"}),timeout:E.optional(E.Union([le,E.Literal(!1)]).annotate({description:"Timeout in milliseconds for full requests to this provider. Set to false to disable timeout."})).annotate({description:"Timeout in milliseconds for full requests to this provider. Set to false to disable timeout."}),headerTimeout:E.optional(E.Union([le,E.Literal(!1)]).annotate({description:"Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout."})).annotate({description:"Timeout in milliseconds to wait for response headers (default: 300000). Set to false to disable timeout."}),chunkTimeout:E.optional(E.Union([le,E.Literal(!1)]).annotate({description:"Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout."})).annotate({description:"Timeout in milliseconds between streamed SSE chunks for this provider (default: 300000). If no chunk arrives within this window, the request is aborted. Set to false to disable timeout."})}),[E.Record(E.String,E.Any)])),models:E.optional(E.Record(E.String,Oy))}).annotate({identifier:"ProviderConfig"});var ta={};Q(ta,{ConfigServerV1:()=>ta,Server:()=>IL});import{Schema as zt}from"effect";var IL=zt.Struct({port:zt.optional(le).annotate({description:"Port to listen on"}),hostname:zt.optional(zt.String).annotate({description:"Hostname to listen on"}),mdns:zt.optional(zt.Boolean).annotate({description:"Enable mDNS service discovery"}),mdnsDomain:zt.optional(zt.String).annotate({description:"Custom domain name for mDNS service (default: opencode.local)"}),cors:zt.optional(zt.mutable(zt.Array(zt.String))).annotate({description:"Additional domains to allow for CORS"})}).annotate({identifier:"ServerConfig"});var ra={};Q(ra,{ConfigSkillsV1:()=>ra,Info:()=>vL});import{Schema as Wn}from"effect";var vL=Wn.Struct({paths:Wn.optional(Wn.Array(Wn.String)).annotate({description:"Additional paths to skill folders"}),urls:Wn.optional(Wn.Array(Wn.String)).annotate({description:"URLs to fetch skills from (e.g., https://example.com/.well-known/skills/)"})});var DL=h.Struct({config:h.optional(h.Json),remote_config:h.optional(h.Json)}),CL=h.Literals(["DEBUG","INFO","WARN","ERROR"]).annotate({identifier:"LogLevel",description:"Log level"}),wL=h.Struct({$schema:h.optional(h.String).annotate({description:"JSON schema reference for configuration validation"}),shell:h.optional(h.String).annotate({description:"Default shell to use for terminal and bash tool"}),logLevel:h.optional(CL).annotate({description:"Log level"}),server:h.optional(ta.Server).annotate({description:"Server configuration for opencode serve and web commands"}),command:h.optional(h.Record(h.String,Wi.Info)).annotate({description:"Command configuration, see https://opencode.ai/docs/commands"}),skills:h.optional(ra.Info).annotate({description:"Additional skill folder paths"}),references:h.optional(ln.Info).annotate({description:"Named git or local directory references"}),reference:h.optional(ln.Info).annotate({description:"@deprecated Use 'references' field instead. Named git or local directory references"}),watcher:h.optional(h.Struct({ignore:h.optional(h.mutable(h.Array(h.String)))})),snapshot:h.optional(h.Boolean).annotate({description:"Enable or disable snapshot tracking. When false, filesystem snapshots are not recorded and undoing or reverting will not undo/redo file changes. Defaults to true."}),plugin:h.optional(h.mutable(h.Array(Zi.Spec))),share:h.optional(h.Literals(["manual","auto","disabled"])).annotate({description:"Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing"}),autoshare:h.optional(h.Boolean).annotate({description:"@deprecated Use 'share' field instead. Share newly created sessions automatically"}),autoupdate:h.optional(h.Union([h.Boolean,h.Literal("notify")])).annotate({description:"Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications"}),disabled_providers:h.optional(h.mutable(h.Array(h.String))).annotate({description:"Disable providers that are loaded automatically"}),enabled_providers:h.optional(h.mutable(h.Array(h.String))).annotate({description:"When set, ONLY these providers will be enabled. All other providers will be ignored"}),model:h.optional(h.String).annotate({description:"Model to use in the format of provider/model, eg anthropic/claude-2"}),small_model:h.optional(h.String).annotate({description:"Small model to use for tasks like title generation in the format of provider/model"}),default_agent:h.optional(h.String).annotate({description:"Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid."}),subagent_depth:h.optional(J).annotate({description:"Maximum subagent nesting depth. Defaults to 1, which prevents subagents from launching subagents."}),username:h.optional(h.String).annotate({description:"Custom username to display in conversations instead of system username"}),mode:h.optional(h.StructWithRest(h.Struct({build:h.optional(yt.Info),plan:h.optional(yt.Info)}),[h.Record(h.String,yt.Info)])).annotate({description:"@deprecated Use `agent` field instead."}),agent:h.optional(h.StructWithRest(h.Struct({plan:h.optional(yt.Info),build:h.optional(yt.Info),general:h.optional(yt.Info),explore:h.optional(yt.Info),title:h.optional(yt.Info),summary:h.optional(yt.Info),compaction:h.optional(yt.Info)}),[h.Record(h.String,yt.Info)])).annotate({description:"Agent configuration, see https://opencode.ai/docs/agents"}),provider:h.optional(h.Record(h.String,ea.Info)).annotate({description:"Custom provider configurations and model overrides"}),mcp:h.optional(h.Record(h.String,h.Union([Xi.Info,h.Struct({enabled:h.Boolean})]))).annotate({description:"MCP (Model Context Protocol) server configurations"}),formatter:h.optional(Gi.Info).annotate({description:"Enable or configure formatters. Omit or set to false to disable, true to enable built-ins, or an object to enable built-ins with overrides."}),lsp:h.optional(Yi.Info).annotate({description:"Enable or configure LSP servers. Omit or set to false to disable, true to enable built-ins, or an object to enable built-ins with overrides."}),instructions:h.optional(h.mutable(h.Array(h.String))).annotate({description:"Additional instruction files or patterns to include"}),layout:h.optional(Ji.Layout).annotate({description:"@deprecated Always uses stretch layout."}),permission:h.optional($n.Info),tools:h.optional(h.Record(h.String,h.Boolean)),attachment:h.optional($i.Info).annotate({description:"Attachment processing configuration, including image size limits and resizing behavior"}),enterprise:h.optional(h.Struct({url:h.optional(h.String).annotate({description:"Enterprise URL"})})),tool_output:h.optional(h.Struct({max_lines:h.optional(le).annotate({description:"Maximum lines of tool output before it is truncated and saved to disk (default: 2000)"}),max_bytes:h.optional(le).annotate({description:"Maximum bytes of tool output before it is truncated and saved to disk (default: 51200)"})})).annotate({description:"Thresholds for truncating tool output. When output exceeds either limit, the full text is written to the truncation directory and a preview is returned."}),compaction:h.optional(h.Struct({auto:h.optional(h.Boolean).annotate({description:"Enable automatic compaction when context is full (default: true)"}),prune:h.optional(h.Boolean).annotate({description:"Enable pruning of old tool outputs (default: false)"}),tail_turns:h.optional(J).annotate({description:"Maximum number of recent user turns, including their following assistant/tool responses, to keep verbatim during compaction. By default retention is limited only by the preserved token budget."}),preserve_recent_tokens:h.optional(J).annotate({description:"Maximum number of tokens from recent turns to preserve verbatim after compaction"}),reserved:h.optional(J).annotate({description:"Token buffer for compaction. Leaves enough window to avoid overflow during compaction."}),anthropic:h.optional(h.Boolean).annotate({description:"Claude sessions compact with Anthropic's own compaction while their cache is warm, keeping the newest turns word for word (alchemy fork, session/anthropic-compaction.ts; default: false). ALCHEMYLAB_ANTHROPIC_COMPACTION, when set, wins."})})),experimental:h.optional(h.Struct({disable_paste_summary:h.optional(h.Boolean),batch_tool:h.optional(h.Boolean).annotate({description:"Enable the batch tool"}),openTelemetry:h.optional(h.Boolean).annotate({description:"Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)"}),primary_tools:h.optional(h.mutable(h.Array(h.String))).annotate({description:"Tools that should only be available to primary agents."}),continue_loop_on_deny:h.optional(h.Boolean).annotate({description:"Continue the agent loop when a tool call is denied"}),mcp_timeout:h.optional(le).annotate({description:"Timeout in milliseconds for model context protocol (MCP) requests"}),policies:h.optional(h.mutable(h.Array(Vn.Policy))).annotate({description:"Policy statements applied to supported resources, such as provider access"})}))}).annotate({identifier:"Config"});var El={};Q(El,{Config:()=>El,Directory:()=>$s,Document:()=>Vs,Info:()=>Sa,Service:()=>Uo,latest:()=>tI,locationLayer:()=>rI,node:()=>nI});import ga from"path";import{parse as ZL}from"jsonc-parser";import{Context as eI,Effect as Vt,Layer as og,Option as hl,Schema as G}from"effect";var Gn={};Q(Gn,{Effect:()=>Uy,Event:()=>PL,ID:()=>nl,Permission:()=>Gn,Reply:()=>By,Request:()=>Fy,Rule:()=>Hy,Ruleset:()=>kL,Source:()=>qy});import{Schema as Oe}from"effect";var nl=Oe.String.check(Oe.isStartsWith("per")).pipe(Oe.brand("PermissionV2.ID"),me(e=>({create:r(t=>e.make(t??"per_"+je()),"create")}))),qy=Oe.Union([Oe.Struct({type:Oe.Literal("tool"),messageID:Oe.String,callID:Oe.String})]).annotate({identifier:"PermissionV2.Source"}),AL={sessionID:Me,action:Oe.String,resources:Oe.Array(Oe.String),save:Oe.Array(Oe.String).pipe(b),metadata:Oe.Record(Oe.String,Oe.Unknown).pipe(b),source:qy.pipe(b)},Fy=Oe.Struct({id:nl,...AL}).annotate({identifier:"PermissionV2.Request"}),By=Oe.Literals(["once","always","reject"]).annotate({identifier:"PermissionV2.Reply"}),Qy=Ce({type:"permission.v2.asked",schema:Fy.fields}),Ny=Ce({type:"permission.v2.replied",schema:{sessionID:Me,requestID:nl,reply:By}}),PL={Asked:Qy,Replied:Ny,Definitions:vt(Qy,Ny)},Uy=Oe.Literals(["allow","deny","ask"]).annotate({identifier:"PermissionV2.Effect"}),Hy=Oe.Struct({action:Oe.String,resource:Oe.String,effect:Uy}).annotate({identifier:"PermissionV2.Rule"}),kL=Oe.Array(Hy).annotate({identifier:"PermissionV2.Ruleset"});var oa={};Q(oa,{Color:()=>Ky,ConfigAgent:()=>oa,Info:()=>dl});import{Schema as Qe}from"effect";var Jn={};Q(Jn,{ConfigProvider:()=>Jn,Info:()=>sl,Request:()=>Qo});import{Schema as V}from"effect";var Qo=class extends V.Class("ConfigV2.Provider.Request")({headers:V.Record(V.String,V.String).pipe(V.optional),body:V.Record(V.String,V.Unknown).pipe(V.optional)}){static{r(this,"Request")}},ol=class extends V.Class("ConfigV2.Model.Cost.Cache")({read:V.Finite.pipe(V.optional),write:V.Finite.pipe(V.optional)}){static{r(this,"Cache")}},_s=class extends V.Class("ConfigV2.Model.Cost")({tier:V.Struct({type:V.Literal("context"),size:V.Int}).pipe(V.optional),input:V.Finite,output:V.Finite,cache:ol.pipe(V.optional)}){static{r(this,"Cost")}},il=class extends V.Class("ConfigV2.Model.Limit")({context:V.Int.pipe(V.optional),input:V.Int.pipe(V.optional),output:V.Int.pipe(V.optional)}){static{r(this,"Limit")}},ML=V.Union([V.Struct({id:gt.ID.pipe(V.optional),...st.AISDK.fields}),V.Struct({id:gt.ID.pipe(V.optional),...st.Native.fields}),V.Struct({id:gt.ID})]),al=class extends V.Class("ConfigV2.Model")({family:gt.Family.pipe(V.optional),name:V.String.pipe(V.optional),api:ML.pipe(V.optional),capabilities:gt.Capabilities.pipe(V.optional),request:V.Struct({...Qo.fields,variant:V.String.pipe(V.optional)}).pipe(V.optional),variants:V.Struct({id:gt.VariantID,...Qo.fields}).pipe(V.Array,V.optional),cost:V.Union([_s,_s.pipe(V.Array)]).pipe(V.optional),disabled:V.Boolean.pipe(V.optional),limit:il.pipe(V.optional)}){static{r(this,"Model")}},sl=class extends V.Class("ConfigV2.Provider")({name:V.String.pipe(V.optional),env:V.String.pipe(V.Array,V.optional),api:st.Api.pipe(V.optional),request:Qo.pipe(V.optional),models:V.Record(V.String,al).pipe(V.optional)}){static{r(this,"Info")}};var Ky=Qe.Union([Qe.String.check(Qe.isPattern(/^#[0-9a-fA-F]{6}$/)),Qe.Literals(["primary","secondary","accent","success","warning","error","info"])]),dl=class extends Qe.Class("ConfigV2.Agent")({model:Qe.String.pipe(Qe.optional),variant:Qe.String.pipe(Qe.optional),request:Jn.Request.pipe(Qe.optional),system:Qe.String.pipe(Qe.optional),description:Qe.String.pipe(Qe.optional),mode:Qe.Literals(["subagent","primary","all"]).pipe(Qe.optional),hidden:Qe.Boolean.pipe(Qe.optional),color:Ky.pipe(Qe.optional),steps:le.pipe(Qe.optional),disabled:Qe.Boolean.pipe(Qe.optional),permissions:Gn.Ruleset.pipe(Qe.optional)}){static{r(this,"Info")}};var ia={};Q(ia,{ConfigAttachments:()=>ia,Image:()=>Os,Info:()=>cl});import{Schema as un}from"effect";var Os=class extends un.Class("ConfigV2.Attachments.Image")({auto_resize:un.Boolean.pipe(un.optional),max_width:le.pipe(un.optional),max_height:le.pipe(un.optional),max_base64_bytes:le.pipe(un.optional)}){static{r(this,"Image")}},cl=class extends un.Class("ConfigV2.Attachments")({image:Os.pipe(un.optional)}){static{r(this,"Info")}};var aa={};Q(aa,{ConfigCompaction:()=>aa,Info:()=>ll,Keep:()=>Qs});import{Schema as Or}from"effect";var Qs=class extends Or.Class("ConfigV2.Compaction.Keep")({tokens:J.pipe(Or.optional)}){static{r(this,"Keep")}},ll=class extends Or.Class("ConfigV2.Compaction")({auto:Or.Boolean.pipe(Or.optional),prune:Or.Boolean.pipe(Or.optional),keep:Qs.pipe(Or.optional),buffer:J.pipe(Or.optional)}){static{r(this,"Info")}};var sa={};Q(sa,{ConfigCommand:()=>sa,Info:()=>pl});import{Schema as jt}from"effect";var pl=class extends jt.Class("ConfigV2.Command")({template:jt.String,description:jt.String.pipe(jt.optional),agent:jt.String.pipe(jt.optional),model:jt.String.pipe(jt.optional),variant:jt.String.pipe(jt.optional),subtask:jt.Boolean.pipe(jt.optional)}){static{r(this,"Info")}};var da={};Q(da,{ConfigFormatter:()=>da,Entry:()=>Ns,Info:()=>_L});import{Schema as Ze}from"effect";var Ns=class extends Ze.Class("ConfigV2.Formatter.Entry")({disabled:Ze.Boolean.pipe(Ze.optional),command:Ze.String.pipe(Ze.Array,Ze.optional),environment:Ze.Record(Ze.String,Ze.String).pipe(Ze.optional),extensions:Ze.String.pipe(Ze.Array,Ze.optional)}){static{r(this,"Entry")}},_L=Ze.Union([Ze.Boolean,Ze.Record(Ze.String,Ns)]);var ca={};Q(ca,{ConfigLSP:()=>ca,Disabled:()=>zy,Entry:()=>jy,Info:()=>OL,Server:()=>qs});import{Schema as Ne}from"effect";var zy=Ne.Struct({disabled:Ne.Literal(!0)}),qs=class extends Ne.Class("ConfigV2.LSP.Server")({command:Ne.String.pipe(Ne.Array),extensions:Ne.String.pipe(Ne.Array,Ne.optional),disabled:Ne.Boolean.pipe(Ne.optional),env:Ne.Record(Ne.String,Ne.String).pipe(Ne.optional),initialization:Ne.Record(Ne.String,Ne.Unknown).pipe(Ne.optional)}){static{r(this,"Server")}},jy=Ne.Union([zy,qs]),OL=Ne.Union([Ne.Boolean,Ne.Record(Ne.String,jy)]);var la={};Q(la,{ConfigMCP:()=>la,Info:()=>fl,Local:()=>Fs,OAuth:()=>Bs,Remote:()=>Us,Server:()=>Vy,Timeout:()=>No});import{Schema as X}from"effect";var No=class extends X.Class("ConfigV2.MCP.Timeout")({startup:le.pipe(X.optional).annotate({description:"Maximum time in milliseconds to establish and initialize the MCP server."}),request:le.pipe(X.optional).annotate({description:"Maximum time in milliseconds to wait for each MCP request after initialization."})}){static{r(this,"Timeout")}},Fs=class extends X.Class("ConfigV2.MCP.Local")({type:X.Literal("local"),command:X.String.pipe(X.Array),cwd:X.String.pipe(X.optional).annotate({description:"Working directory for the MCP server process. Relative paths resolve from the workspace directory."}),environment:X.Record(X.String,X.String).pipe(X.optional),disabled:X.Boolean.pipe(X.optional),timeout:No.pipe(X.optional)}){static{r(this,"Local")}},Bs=class extends X.Class("ConfigV2.MCP.OAuth")({client_id:X.String.pipe(X.optional),client_secret:X.String.pipe(X.optional),scope:X.String.pipe(X.optional),callback_port:X.Int.check(X.isBetween({minimum:1,maximum:65535})).pipe(X.optional),redirect_uri:X.String.pipe(X.optional)}){static{r(this,"OAuth")}},Us=class extends X.Class("ConfigV2.MCP.Remote")({type:X.Literal("remote"),url:X.String,headers:X.Record(X.String,X.String).pipe(X.optional),oauth:X.Union([Bs,X.Literal(!1)]).pipe(X.optional),disabled:X.Boolean.pipe(X.optional),timeout:No.pipe(X.optional)}){static{r(this,"Remote")}},Vy=X.Union([Fs,Us]).pipe(X.toTaggedUnion("type")),fl=class extends X.Class("ConfigV2.MCP")({timeout:No.pipe(X.optional),servers:X.Record(X.String,Vy).pipe(X.optional)}){static{r(this,"Info")}};var pa={};Q(pa,{ConfigPlugin:()=>pa,Entry:()=>Hs,Plugin:()=>$y,Plugins:()=>QL});import{Schema as Qr}from"effect";var Hs=class extends Qr.Class("ConfigV2.Plugin.Entry")({package:Qr.String,options:Qr.Record(Qr.String,Qr.Unknown).pipe(Qr.optional)}){static{r(this,"Entry")}},$y=Qr.Union([Qr.String,Hs]),QL=$y.pipe(Qr.Array);var fa={};Q(fa,{ConfigToolOutput:()=>fa,Info:()=>ml});import{Schema as ul}from"effect";var ml=class extends ul.Class("ConfigV2.ToolOutput")({max_lines:le.pipe(ul.optional),max_bytes:le.pipe(ul.optional)}){static{r(this,"Info")}};var ua={};Q(ua,{ConfigWatcher:()=>ua,Info:()=>yl});import{Schema as Ks}from"effect";var yl=class extends Ks.Class("ConfigV2.Watcher")({ignore:Ks.String.pipe(Ks.Array,Ks.optional)}){static{r(this,"Info")}};var Bo={};Q(Bo,{ConfigMigrateV1:()=>Bo,isV1:()=>zL,migrate:()=>jL,migrateAgent:()=>ng});var Fo={};Q(Fo,{ConfigProviderOptionsV1:()=>Fo,get:()=>NL});function NL(e){let t=e??"";return Object.hasOwn(Jy,t)?Jy[t]:qL}r(NL,"get");var qL={provider(e){return{body:zs(e)}},request:zs},Yy={provider(e){return{url:xr(e.baseURL),headers:js({Authorization:tg(e.apiKey),"OpenAI-Organization":xr(e.organization),"OpenAI-Project":xr(e.project),...ya(e.headers)}),body:ma(e.body),settings:qo(e,["apiKey","baseURL","organization","project","headers","body"])}},request(e){let t=Zy(e);return(e.reasoningEffort!==void 0||e.reasoningSummary!==void 0)&&(t.reasoning={...Yn(t.reasoning)?t.reasoning:{},...e.reasoningEffort!==void 0?{effort:e.reasoningEffort}:{},...e.reasoningSummary!==void 0?{summary:e.reasoningSummary}:{}},delete t.reasoning_effort,delete t.reasoning_summary),e.textVerbosity!==void 0&&(t.text={...Yn(t.text)?t.text:{},verbosity:e.textVerbosity},delete t.text_verbosity),t}},Wy={provider(e){return{url:xr(e.baseURL),headers:js({"x-api-key":xr(e.apiKey),Authorization:e.authToken?tg(e.authToken):void 0,...ya(e.headers)}),body:ma(e.body),settings:qo(e,["apiKey","authToken","baseURL","headers","body"])}},request(e){let t=Zy(e);return(e.effort!==void 0||e.taskBudget!==void 0)&&(t.output_config=HL({effort:e.effort,task_budget:e.taskBudget}),delete t.effort,delete t.task_budget),Yn(e.metadata)&&e.metadata.userId!==void 0&&(t.metadata={...Yn(t.metadata)?t.metadata:{},user_id:e.metadata.userId}),t}},Gy={provider(e){return{url:xr(e.baseURL),headers:js({"x-goog-api-key":xr(e.apiKey),...ya(e.headers)}),body:ma(e.body),settings:qo(e,["apiKey","baseURL","headers","body"])}},request(e){let t=UL(e,["thinkingConfig","responseModalities","mediaResolution","imageConfig"]);return{...qo(e,["thinkingConfig","responseModalities","mediaResolution","imageConfig"]),...Object.keys(t).length?{generationConfig:t}:{}}}},FL={provider(e){return{url:xr(e.baseURL),headers:js({"api-key":xr(e.apiKey),...ya(e.headers)}),body:ma(e.body),settings:qo(e,["apiKey","baseURL","headers","body"])}},request:Yy.request},BL={provider(e){return Xy(e)},request(e){return{additionalModelRequestFields:zs(e)}}},Er={provider(e){return{...Xy(e,["baseURL"]),url:xr(e.baseURL)}},request(e){let t=zs(e);return e.reasoningEffort!==void 0&&(t.reasoning_effort=e.reasoningEffort,delete t.reasoningEffort),t}},Jy={"@ai-sdk/openai":Yy,"@ai-sdk/anthropic":Wy,"@ai-sdk/google-vertex/anthropic":Wy,"@ai-sdk/google":Gy,"@ai-sdk/google-vertex":Gy,"@ai-sdk/azure":FL,"@ai-sdk/amazon-bedrock":BL,"@ai-sdk/openai-compatible":Er,"@ai-sdk/cerebras":Er,"@ai-sdk/deepinfra":Er,"@ai-sdk/groq":Er,"@ai-sdk/mistral":Er,"@ai-sdk/togetherai":Er,"@ai-sdk/xai":Er,"@openrouter/ai-sdk-provider":Er,"ai-gateway-provider":Er,"venice-ai-sdk-provider":Er};function Xy(e,t=[]){return{headers:ya(e.headers),body:ma(e.body),settings:qo(e,["headers","body",...t])}}r(Xy,"direct");function ma(e){if(Yn(e))return{...e}}r(ma,"body");function Zy(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[eg(t),gl(n)]))}r(Zy,"snake");function gl(e){return Array.isArray(e)?e.map(gl):Yn(e)?Object.fromEntries(Object.entries(e).map(([t,n])=>[eg(t),gl(n)])):e}r(gl,"snakeValue");function eg(e){return e.replace(/[A-Z]/g,t=>"_"+t.toLowerCase())}r(eg,"snakeKey");function zs(e){return{...e}}r(zs,"clone");function qo(e,t){return Object.fromEntries(Object.entries(e).filter(([n])=>!t.includes(n)))}r(qo,"omit");function UL(e,t){return Object.fromEntries(Object.entries(e).filter(([n])=>t.includes(n)))}r(UL,"pick");function ya(e){if(Yn(e))return Object.fromEntries(Object.entries(e).filter(t=>typeof t[1]=="string"))}r(ya,"headers");function js(e){let t=Object.entries(e).filter(n=>n[1]!==void 0);return t.length?Object.fromEntries(t):void 0}r(js,"compact");function HL(e){return Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0))}r(HL,"compactUnknown");function xr(e){return typeof e=="string"&&e?e:void 0}r(xr,"string");function tg(e){return typeof e=="string"&&e?`Bearer ${e}`:void 0}r(tg,"bearer");function Yn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}r(Yn,"isRecord");var KL=new Set(["logLevel","server","command","reference","snapshot","plugin","autoshare","disabled_providers","enabled_providers","small_model","mode","agent","provider","permission","tools","attachment","layout"]);function zL(e){return typeof e!="object"||e===null||Array.isArray(e)?!1:Object.keys(e).some(t=>KL.has(t))}r(zL,"isV1");function jL(e){return{$schema:e.$schema,shell:e.shell,model:e.model,default_agent:e.default_agent,autoupdate:e.autoupdate,share:e.share??(e.autoshare?"auto":void 0),enterprise:e.enterprise,username:e.username,permissions:rg(e.permission,e.tools),agents:$L(e),snapshots:e.snapshot,watcher:e.watcher,formatter:e.formatter,lsp:e.lsp,attachments:e.attachment,tool_output:e.tool_output,mcp:WL(e),compaction:e.compaction&&{auto:e.compaction.auto,prune:e.compaction.prune,keep:{tokens:e.compaction.preserve_recent_tokens},buffer:e.compaction.reserved},skills:e.skills&&[...e.skills.paths??[],...e.skills.urls??[]],commands:e.command,instructions:e.instructions,references:e.references??e.reference,plugins:e.plugin?.map(t=>typeof t=="string"?t:{package:t[0],options:t[1]}),experimental:e.experimental?.policies&&{policies:e.experimental.policies},providers:JL(e.provider)}}r(jL,"migrate");function rg(e,t){let n=Object.entries(t??{}).map(([o,i])=>({action:VL(o),resource:"*",effect:i?"allow":"deny"}));for(let[o,i]of Object.entries(e??{}))if(i){if(typeof i=="string"){n.push({action:o,resource:"*",effect:i});continue}n.push(...Object.entries(i).map(([s,d])=>({action:o,resource:s,effect:d})))}return n.length?n:void 0}r(rg,"permissions");function VL(e){return e==="write"||e==="patch"?"edit":e}r(VL,"normalizeAction");function $L(e){let t=[...Object.entries(e.agent??{}),...Object.entries(e.mode??{}).map(([n,o])=>[n,{...o,mode:"primary"}])];if(t.length)return Object.fromEntries(t.flatMap(([n,o])=>o?[[n,ng(o)]]:[]))}r($L,"agents");function ng(e){let t={...e.options,...e.temperature===void 0?{}:{temperature:e.temperature},...e.top_p===void 0?{}:{top_p:e.top_p}};return{model:e.model,variant:e.variant,request:Object.keys(t).length?{body:t}:void 0,system:e.prompt,description:e.description,mode:e.mode,hidden:e.hidden,color:e.color,steps:e.steps,disabled:e.disable,permissions:rg(e.permission)}}r(ng,"migrateAgent");function WL(e){let t=Object.fromEntries(Object.entries(e.mcp??{}).flatMap(([o,i])=>"type"in i?[[o,GL(i)]]:[])),n=e.experimental?.mcp_timeout;if(!(!n&&!Object.keys(t).length))return{timeout:n===void 0?void 0:{request:n},servers:t}}r(WL,"mcp");function GL(e){let t=e.enabled===void 0?void 0:!e.enabled;return e.type==="local"?{type:e.type,command:e.command,cwd:e.cwd,environment:e.environment,disabled:t,timeout:e.timeout===void 0?void 0:{request:e.timeout}}:{type:e.type,url:e.url,headers:e.headers,oauth:e.oauth&&{client_id:e.oauth.clientId,client_secret:e.oauth.clientSecret,scope:e.oauth.scope,callback_port:e.oauth.callbackPort,redirect_uri:e.oauth.redirectUri},disabled:t,timeout:e.timeout===void 0?void 0:{request:e.timeout}}}r(GL,"migrateMcp");function JL(e){if(e)return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,YL(n)]))}r(JL,"providers");function YL(e){let n=Fo.get(e.npm).provider(e.options??{}),o=e.api??n.url;return{name:e.name,env:e.env,api:e.npm?{type:"aisdk",package:e.npm,...o===void 0?{}:{url:o},settings:n.settings??{}}:void 0,request:e.options&&{headers:n.headers,body:n.body},models:e.models&&Object.fromEntries(Object.entries(e.models).map(([i,s])=>[i,XL(s,e.npm)]))}}r(YL,"migrateProvider");function XL(e,t){let n=e.provider?.npm??t,o=Fo.get(n),i=e.options&&o.request(e.options),s=e.cost&&[{input:e.cost.input,output:e.cost.output,cache:{read:e.cost.cache_read,write:e.cost.cache_write}},...e.cost.context_over_200k?[{tier:{type:"context",size:2e5},input:e.cost.context_over_200k.input,output:e.cost.context_over_200k.output,cache:{read:e.cost.context_over_200k.cache_read,write:e.cost.context_over_200k.cache_write}}]:[]],d=e.tool_call!==void 0||e.modalities?.input!==void 0||e.modalities?.output!==void 0?{tools:e.tool_call??!1,input:e.modalities?.input??[],output:e.modalities?.output??[]}:void 0;return{family:e.family,name:e.name,api:e.provider?.npm?{...e.id===void 0?{}:{id:e.id},type:"aisdk",package:e.provider.npm,...e.provider.api===void 0?{}:{url:e.provider.api},settings:{}}:e.id===void 0?void 0:{id:e.id},capabilities:d,request:(e.headers||i)&&{headers:e.headers,body:i},variants:e.variants&&Object.entries(e.variants).map(([p,c])=>({id:p,body:o.request(c)})),cost:s,disabled:e.status==="deprecated"?!0:void 0,limit:e.limit&&{context:Sl(e.limit.context),input:e.limit.input===void 0?void 0:Sl(e.limit.input),output:Sl(e.limit.output)}}}r(XL,"migrateModel");function Sl(e){return Math.max(Number.MIN_SAFE_INTEGER,Math.min(Number.MAX_SAFE_INTEGER,Math.trunc(e)))}r(Sl,"int");var Sa=class extends G.Class("Config.Info")({$schema:G.optional(G.String).annotate({description:"JSON schema reference for configuration validation"}),shell:G.String.pipe(G.optional).annotate({description:"Default shell to use for terminal and shell tool execution"}),model:G.String.pipe(G.optional).annotate({description:"Default model to use when no session or agent model is selected"}),default_agent:G.String.pipe(G.optional).annotate({description:"Default primary agent to use when no session agent is selected"}),autoupdate:G.Union([G.Boolean,G.Literal("notify")]).pipe(G.optional).annotate({description:"Automatically update or notify when a new version is available"}),share:G.Literals(["manual","auto","disabled"]).pipe(G.optional).annotate({description:"Control whether sessions may be shared manually, automatically, or not at all"}),enterprise:G.Struct({url:G.String.pipe(G.optional)}).pipe(G.optional).annotate({description:"Enterprise sharing service configuration"}),username:G.String.pipe(G.optional).annotate({description:"Username displayed in conversations and used for telemetry identity"}),permissions:Gn.Ruleset.pipe(G.optional).annotate({description:"Ordered tool permission rules applied to agent tool use"}),agents:G.Record(G.String,oa.Info).pipe(G.optional).annotate({description:"Named built-in agent overrides and custom agent definitions"}),snapshots:G.Boolean.pipe(G.optional).annotate({description:"Enable snapshots used for undo and revert behavior"}),watcher:ua.Info.pipe(G.optional).annotate({description:"Filesystem watcher configuration"}),formatter:da.Info.pipe(G.optional).annotate({description:"Enable built-in formatters or configure formatter overrides"}),lsp:ca.Info.pipe(G.optional).annotate({description:"Enable built-in language servers or configure server overrides"}),attachments:ia.Info.pipe(G.optional).annotate({description:"Attachment processing configuration"}),tool_output:fa.Info.pipe(G.optional).annotate({description:"Tool output truncation thresholds"}),mcp:la.Info.pipe(G.optional).annotate({description:"MCP server configuration"}),compaction:aa.Info.pipe(G.optional).annotate({description:"Conversation compaction behavior"}),skills:G.String.pipe(G.Array,G.optional).annotate({description:"Additional paths or URLs to discover skills from"}),commands:G.Record(G.String,sa.Info).pipe(G.optional).annotate({description:"Named slash command definitions"}),instructions:G.String.pipe(G.Array,G.optional).annotate({description:"Additional paths or URLs supplying ambient instructions"}),references:ln.Info.pipe(G.optional).annotate({description:"Named local directories or Git repositories available as external context"}),plugins:pa.Plugins.pipe(G.optional).annotate({description:"Ordered external plugin packages to load"}),experimental:Vn.Experimental.pipe(G.optional),providers:G.Record(G.String,Jn.Info).pipe(G.optional)}){static{r(this,"Info")}},Vs=class extends G.Class("Config.Document")({type:G.Literal("document"),path:G.String.pipe(G.optional),info:Sa}){static{r(this,"Document")}},$s=class extends G.Class("Config.Directory")({type:G.Literal("directory"),path:pe}){static{r(this,"Directory")}};function tI(e,t){return e.filter(n=>n.type==="document").findLast(n=>n.info[t]!==void 0)?.info[t]}r(tI,"latest");var Uo=class extends eI.Service()("@opencode/v2/Config"){static{r(this,"Service")}},ig=og.effect(Uo,Vt.gen(function*(){let e=yield*Jt.Service,t=yield*nr.Service,n=yield*Xt.Service,o=yield*kt.Service,i=["opencode.json","opencode.jsonc"],s={errors:"all",onExcessProperty:"ignore",propertyOrder:"original"},d=G.decodeUnknownOption(Sa,s),p=G.decodeUnknownOption(na.Info,s),c=Vt.fnUntraced(function*(_){let x=yield*e.readFileStringSafe(_);if(!x)return;let B=[],F=ZL(x,B,{allowTrailingComma:!0});if(B.length)return;let T=hl.getOrUndefined(Bo.isV1(F)?p(F).pipe(hl.map(Bo.migrate),hl.flatMap(d)):d(F));if(T)return new Vs({type:"document",path:_,info:T})}),y=Vt.fnUntraced(function*(_){return[...yield*Vt.forEach(i,x=>c(ga.join(_,x))).pipe(Vt.map(x=>x.filter(B=>B!==void 0))),new $s({type:"directory",path:_})]}),g=pe.make(t.config),f=ga.resolve(n.directory)===ga.resolve(t.config)?[]:yield*e.up({targets:[".opencode",...i.toReversed()],start:n.directory,stop:n.project.directory}).pipe(Vt.orDie),l=[g,...f.filter(_=>ga.basename(_)===".opencode").toReversed().map(_=>pe.make(_))],L=f.filter(_=>ga.basename(_)!==".opencode").toReversed(),D=yield*Vt.forEach(L,c).pipe(Vt.orDie,Vt.map(_=>_.filter(x=>x!==void 0))),U=yield*Vt.forEach(l,y).pipe(Vt.orDie),A=[...U[0]??[],...D,...U.slice(1).flat()];return yield*o.load(A.filter(_=>_.type==="document").toReversed().flatMap(_=>_.info.experimental?.policies??[])),Uo.of({entries:Vt.fn("Config.entries")(function*(){return A})})})),rI=ig.pipe(og.provideMerge(kt.locationLayer)),nI=$t({service:Uo,layer:ig,deps:[Jt.node,nr.node,Xt.node,kt.node]});export{mn as a,Te as b,$t as c,fd as d,le as e,J as f,Lt as g,pe as h,b as i,me as j,at as k,je as l,nd as m,hg as n,xa as o,Ho as p,yn as q,Ce as r,vt as s,ee as t,rr as u,we as v,_e as w,ke as x,Me as y,Uy as z,Hy as A,kL as B,Gn as C,Kn as D,st as E,gt as F,Bi as G,jo as H,pd as I,Ge as J,qr as K,nr as L,Qv as M,Ca as N,Nv as O,Qt as P,Xe as Q,He as R,ps as S,fs as T,Jp as U,ne as V,ro as W,Mh as X,$w as Y,$a as Z,Ir as _,Pd as $,Nt as aa,qt as ba,Nh as ca,Ga as da,_d as ea,Od as fa,Ja as ga,Gt as ha,vr as ia,ui as ja,jr as ka,xi as la,tt as ma,af as na,Ln as oa,In as pa,Bt as qa,xE as ra,TE as sa,bE as ta,Wr as ua,CE as va,wn as wa,lo as xa,Kf as ya,FA as za,fo as Aa,uo as Ba,cu as Ca,Yx as Da,ds as Ea,cs as Fa,ls as Ga,Ci as Ha,oc as Ia,Eu as Ja,dT as Ka,ic as La,Jt as Ma,wi as Na,lc as Oa,Ai as Pa,yo as Qa,ku as Ra,FT as Sa,go as Ta,Mu as Ua,fc as Va,_u as Wa,Ou as Xa,Qu as Ya,Nu as Za,qu as _a,Fu as $a,Bu as ab,Uu as bb,Hu as cb,Ku as db,zu as eb,ju as fb,Vu as gb,$u as hb,Wu as ib,Gu as jb,Ju as kb,BT as lb,be as mb,Pn as nb,_i as ob,To as pb,Cr as qb,Wk as rb,Gk as sb,hs as tb,$T as ub,Re as vb,nn as wb,On as xb,Xt as yb,bc as zb,Bn as Ab,qb as Bb,Un as Cb,Ni as Db,Tm as Eb,bm as Fb,Rm as Gb,kc as Hb,Mc as Ib,Lm as Jb,Fb as Kb,Bb as Lb,Ub as Mb,Hb as Nb,qi as Ob,wr as Pb,Ar as Qb,bs as Rb,Rs as Sb,km as Tb,Mm as Ub,_m as Vb,Om as Wb,Qm as Xb,Nm as Yb,qm as Zb,Fm as _b,Bm as $b,Fc as ac,Bc as bc,Um as cc,Hm as dc,Km as ec,zm as fc,jm as gc,Vm as hc,$m as ic,Wm as jc,Gm as kc,Jm as lc,Ym as mc,Xm as nc,ey as oc,Uc as pc,Vb as qc,$b as rc,Wb as sc,Gb as tc,Hc as uc,Kc as vc,Jb as wc,Ts as xc,rR as yc,Fi as zc,K_ as Ac,zc as Bc,Mr as Cc,Co as Dc,kt as Ec,dn as Fc,cn as Gc,ji as Hc,oa as Ic,sa as Jc,yt as Kc,$i as Lc,Wi as Mc,Yi as Nc,Xi as Oc,na as Pc,Fo as Qc,Bo as Rc,El as Sc};
|