@opencode-ai/core 0.0.0-dev-19236 → 0.0.0-dev-19237
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/dist/agent.js +59 -59
- package/dist/aisdk-native.js +2 -2
- package/dist/aisdk.js +6 -6
- package/dist/app.js +7 -7
- package/dist/bus.js +52 -52
- package/dist/catalog.js +56 -56
- package/dist/chunks/{file-qq11w61w.js → file-00z3vp5f.js} +3 -3
- package/dist/chunks/{file-5fhcw59z.js → file-03ssqq1h.js} +39 -39
- package/dist/chunks/{file-ebtdd58c.js → file-0jb3k8j6.js} +21 -21
- package/dist/chunks/{file-2k8khapm.js → file-0jwsre1p.js} +4 -4
- package/dist/chunks/{file-4e8crvtb.js → file-0p6bnn4j.js} +10 -10
- package/dist/chunks/{file-sd8ec36g.js → file-0wagesx1.js} +2 -2
- package/dist/chunks/{file-p0fvx2b7.js → file-129m3zyv.js} +7 -7
- package/dist/chunks/{file-at07c4b9.js → file-179n7qcx.js} +12 -12
- package/dist/chunks/{file-yp2x3t23.js → file-1acjjqhc.js} +3 -3
- package/dist/chunks/{file-8p628rfe.js → file-1j6fw132.js} +20 -20
- package/dist/chunks/{file-btr637ng.js → file-1jpftfmz.js} +42 -42
- package/dist/chunks/{file-3s2nsa7k.js → file-1nk2mnc0.js} +3 -3
- package/dist/chunks/{file-hczx788n.js → file-1vkgnbk5.js} +9 -9
- package/dist/chunks/{file-1fyf70sm.js → file-1zkb17nt.js} +3 -3
- package/dist/chunks/{file-6h73sxmp.js → file-2402vzrj.js} +4 -4
- package/dist/chunks/{file-pwphe3rf.js → file-2931d2p1.js} +10 -10
- package/dist/chunks/{file-64hre8q8.js → file-2hgwbbq1.js} +28 -28
- package/dist/chunks/{file-2gtf4gxt.js → file-2j2akc50.js} +7 -7
- package/dist/chunks/{file-7stz268c.js → file-2n0rqa47.js} +39 -39
- package/dist/chunks/{file-cctcmebf.js → file-2rx0c1se.js} +2 -2
- package/dist/chunks/{file-qyg26a5q.js → file-32vaat9j.js} +67 -67
- package/dist/chunks/{file-m25102gb.js → file-339x25ws.js} +5 -5
- package/dist/chunks/{file-3k4x7jps.js → file-36srvmcg.js} +8 -8
- package/dist/chunks/{file-1mrma768.js → file-3cm4x8pz.js} +3 -3
- package/dist/chunks/{file-vz6nxp08.js → file-3dab0e5z.js} +16 -16
- package/dist/chunks/{file-4z3jhc10.js → file-3f4r80p6.js} +42 -42
- package/dist/chunks/{file-65g4zw8b.js → file-3n69sb31.js} +11 -11
- package/dist/chunks/{file-jfx7w4w0.js → file-3v1vnpky.js} +55 -55
- package/dist/chunks/{file-bsa9yb1r.js → file-3wwk5jwz.js} +29 -29
- package/dist/chunks/{file-y8r8mqe0.js → file-3y04nngn.js} +18 -18
- package/dist/chunks/{file-sgecvmzg.js → file-3zf7jj5c.js} +29 -29
- package/dist/chunks/{file-jasnfvjs.js → file-46e97tr7.js} +7 -7
- package/dist/chunks/{file-hjt4xg1x.js → file-47gsdddb.js} +6 -6
- package/dist/chunks/{file-4skn7rc2.js → file-4c7fwq4e.js} +21 -21
- package/dist/chunks/{file-q6ypxst3.js → file-4pgqfzd8.js} +4 -4
- package/dist/chunks/{file-tjjz5xwe.js → file-4v4ajd06.js} +5 -5
- package/dist/chunks/{file-zkj92s1w.js → file-52bfwkce.js} +5 -5
- package/dist/chunks/{file-hx6eb5yw.js → file-595kwe3a.js} +1 -1
- package/dist/chunks/{file-303p9w1h.js → file-5dhjvcph.js} +4 -4
- package/dist/chunks/{file-8ej6t0kx.js → file-5f95ff4q.js} +21 -21
- package/dist/chunks/{file-skgjtp1k.js → file-5h5dsh0k.js} +29 -29
- package/dist/chunks/{file-5sqy5p9k.js → file-5rdj9hmq.js} +10 -10
- package/dist/chunks/{file-p742g7s6.js → file-5vgh9pjn.js} +22 -22
- package/dist/chunks/{file-3ew3pzd4.js → file-654kmdbf.js} +4 -4
- package/dist/chunks/{file-4xx57fsq.js → file-6652nm96.js} +7 -7
- package/dist/chunks/{file-veabk5tt.js → file-6h414ywr.js} +3 -3
- package/dist/chunks/{file-ga7x5g5r.js → file-6njxrdza.js} +13 -13
- package/dist/chunks/{file-4qjmbshy.js → file-6r2w4rfh.js} +24 -24
- package/dist/chunks/{file-qvrpv7pw.js → file-71n2k0sw.js} +21 -21
- package/dist/chunks/{file-0gfv995g.js → file-7d289b1g.js} +31 -31
- package/dist/chunks/{file-8dv8mw3k.js → file-7fxxes5g.js} +6 -6
- package/dist/chunks/{file-bj16ny09.js → file-7mcdhjjw.js} +34 -34
- package/dist/chunks/{file-swhyn6z2.js → file-7qhv6080.js} +13 -13
- package/dist/chunks/{file-jg8hpbdb.js → file-7vmn5jxr.js} +15 -15
- package/dist/chunks/{file-b01ryz8d.js → file-7yr2wfkw.js} +13 -13
- package/dist/chunks/{file-sbnvhk9g.js → file-88nptzkr.js} +19 -19
- package/dist/chunks/{file-1pdtxp2d.js → file-89cfd633.js} +1 -1
- package/dist/chunks/{file-7grmgsg7.js → file-8fhts7ts.js} +3 -3
- package/dist/chunks/{file-bwrfg74g.js → file-8kpcqxj9.js} +11 -11
- package/dist/chunks/{file-1wfjb4fb.js → file-8tq3sb4p.js} +1 -1
- package/dist/chunks/{file-8b48ft5s.js → file-934h7amq.js} +28 -28
- package/dist/chunks/{file-75yf2d83.js → file-97f5v037.js} +7 -7
- package/dist/chunks/{file-jee1seff.js → file-9938j897.js} +7 -7
- package/dist/chunks/{file-65dn8j3v.js → file-9qnjdkjv.js} +13 -13
- package/dist/chunks/{file-x5wdkkrz.js → file-9ss86a26.js} +9 -9
- package/dist/chunks/{file-wdmsjcnj.js → file-9t0ny11b.js} +9 -9
- package/dist/chunks/{file-066kw2xy.js → file-9vw7vcdh.js} +3 -3
- package/dist/chunks/{file-ht963k40.js → file-9z6xj13s.js} +5 -5
- package/dist/chunks/{file-yb55v587.js → file-a1cchfxj.js} +3 -3
- package/dist/chunks/{file-q87c86rb.js → file-a6m8wy4f.js} +14 -14
- package/dist/chunks/{file-17hja9f4.js → file-acd73yp7.js} +7 -7
- package/dist/chunks/{file-66hkt5g6.js → file-ajc7k593.js} +53 -53
- package/dist/chunks/{file-yg7sb877.js → file-ajtjthsy.js} +1 -1
- package/dist/chunks/{file-wj16sq0a.js → file-asf9wq49.js} +10 -10
- package/dist/chunks/{file-rs2df3q6.js → file-avf2awfk.js} +6 -6
- package/dist/chunks/{file-y1r8n7hf.js → file-avffydqw.js} +25 -25
- package/dist/chunks/{file-gst7axd9.js → file-baaqp4zd.js} +3 -3
- package/dist/chunks/{file-t9s2ckae.js → file-bffddetr.js} +19 -19
- package/dist/chunks/{file-v7z8bxbw.js → file-btqahyaw.js} +10 -10
- package/dist/chunks/{file-9m6tffr9.js → file-bvza9xe3.js} +80 -80
- package/dist/chunks/{file-te19xw12.js → file-c1v5b0wv.js} +11 -11
- package/dist/chunks/{file-z0xt53t1.js → file-c2m11pw9.js} +9 -9
- package/dist/chunks/{file-z98ztr55.js → file-c7jdh4x9.js} +7 -7
- package/dist/chunks/{file-skb9jyq5.js → file-cdbx1xhb.js} +40 -40
- package/dist/chunks/{file-hht6jkqw.js → file-cj6bar7a.js} +17 -17
- package/dist/chunks/{file-7yqjxrmz.js → file-cpy6gm2a.js} +3 -3
- package/dist/chunks/{file-2yb0w078.js → file-crtth3kn.js} +3 -3
- package/dist/chunks/{file-z2aqhqx5.js → file-csm9f11b.js} +12 -12
- package/dist/chunks/{file-jdnm8yea.js → file-ctpqmbes.js} +9 -9
- package/dist/chunks/{file-rxkkpkzx.js → file-d0e4f7jz.js} +6 -6
- package/dist/chunks/{file-g2gt0w0k.js → file-d72308c8.js} +1 -1
- package/dist/chunks/{file-rc3fvhed.js → file-d9ywy8qq.js} +156 -156
- package/dist/chunks/{file-vd657q2k.js → file-dhv13n9b.js} +22 -22
- package/dist/chunks/{file-cek9jpa8.js → file-dm4t3jdg.js} +22 -22
- package/dist/chunks/{file-km1d5px4.js → file-dt1n4p4v.js} +2 -2
- package/dist/chunks/{file-7qxyrcbr.js → file-e2611c6v.js} +9 -9
- package/dist/chunks/{file-af4svgqg.js → file-e5w0frp6.js} +9 -9
- package/dist/chunks/{file-f73jprk4.js → file-e5zee4hv.js} +9 -9
- package/dist/chunks/{file-sb82pmjh.js → file-e9bp071a.js} +1 -1
- package/dist/chunks/{file-defv84qj.js → file-en1kwsfy.js} +9 -9
- package/dist/chunks/{file-w3v7t084.js → file-ewjc977p.js} +31 -31
- package/dist/chunks/{file-4fv3rmvn.js → file-fhm8k5s2.js} +16 -16
- package/dist/chunks/{file-sn5ar8h4.js → file-fjsjs8gs.js} +1 -1
- package/dist/chunks/{file-08abk570.js → file-fkpavqt9.js} +23 -23
- package/dist/chunks/{file-jkbrzrrv.js → file-fqsf7web.js} +27 -27
- package/dist/chunks/{file-pbhkjpds.js → file-fz1pdqz4.js} +3 -3
- package/dist/chunks/{file-p5a9pe6q.js → file-g2zsh1qa.js} +20 -20
- package/dist/chunks/{file-4rx2ve8e.js → file-g3fmkc14.js} +30 -30
- package/dist/chunks/{file-qp4m35b7.js → file-g4j6k2pz.js} +11 -11
- package/dist/chunks/{file-mtq6xxnx.js → file-g8d3gcyj.js} +3 -3
- package/dist/chunks/{file-6pdxptdt.js → file-gpkgrk3z.js} +1 -1
- package/dist/chunks/{file-fyvm2v1v.js → file-hadacg6q.js} +4 -4
- package/dist/chunks/{file-jnv61ywj.js → file-hc2w1ek9.js} +12 -12
- package/dist/chunks/{file-35agntz9.js → file-hcmmkp4d.js} +29 -29
- package/dist/chunks/{file-1zremn8p.js → file-hk900qzg.js} +22 -22
- package/dist/chunks/{file-bcezcar3.js → file-hnyf01b0.js} +3 -3
- package/dist/chunks/{file-10ac5mb1.js → file-hr77wr0b.js} +2 -2
- package/dist/chunks/{file-g2dy4bvs.js → file-hrvm11jt.js} +1 -1
- package/dist/chunks/{file-rap9a73h.js → file-ht5y0zrb.js} +4 -4
- package/dist/chunks/{file-kvsjn1dr.js → file-hw4pv20g.js} +1 -1
- package/dist/chunks/{file-xbh233pe.js → file-hw71hpyd.js} +6 -6
- package/dist/chunks/{file-049bzhxb.js → file-j2sq7sy2.js} +8 -8
- package/dist/chunks/{file-39cmf8tc.js → file-jb4h4dr1.js} +22 -22
- package/dist/chunks/{file-zwjsydpj.js → file-jntn13wn.js} +7 -7
- package/dist/chunks/{file-fd12r7gp.js → file-jwd6g0dr.js} +8 -8
- package/dist/chunks/{file-xqrgenjs.js → file-k4b13ztk.js} +11 -11
- package/dist/chunks/{file-wt8jf74x.js → file-k50qz9pg.js} +14 -14
- package/dist/chunks/file-k7jgc7wy.js +22 -0
- package/dist/chunks/{file-nw7wp838.js → file-kkq1zppc.js} +1 -1
- package/dist/chunks/{file-dtb0ws7g.js → file-ktr5pece.js} +286 -286
- package/dist/chunks/{file-9ddpxva0.js → file-m0m2gtc4.js} +16 -16
- package/dist/chunks/{file-a9zfrvqc.js → file-m3fm0fm8.js} +3 -3
- package/dist/chunks/{file-hg836chd.js → file-m3p4mq0k.js} +22 -22
- package/dist/chunks/{file-kt8ej3md.js → file-m4je5jzf.js} +15 -15
- package/dist/chunks/{file-sthxzpft.js → file-mb6d61vn.js} +21 -21
- package/dist/chunks/{file-mw9hhfke.js → file-md9ad6xb.js} +26 -26
- package/dist/chunks/{file-56gdpj1q.js → file-mfqp6xfm.js} +4 -4
- package/dist/chunks/{file-73tb2d7t.js → file-mhkvc446.js} +2 -2
- package/dist/chunks/{file-cbq8agb2.js → file-mhq5r63x.js} +43 -43
- package/dist/chunks/{file-0gbwq0hg.js → file-mmkbhfjj.js} +21 -21
- package/dist/chunks/{file-6m3yr79m.js → file-mr1e9xzf.js} +27 -27
- package/dist/chunks/{file-sxxkfwq9.js → file-mt2hp97g.js} +32 -32
- package/dist/chunks/{file-ybjzef57.js → file-mtqwgfqs.js} +7 -7
- package/dist/chunks/{file-99f55ymk.js → file-n5f8hq7m.js} +5 -5
- package/dist/chunks/{file-00pw28xp.js → file-na3f2bx6.js} +29 -29
- package/dist/chunks/{file-kq7ayz9w.js → file-p9tbkvt9.js} +9 -9
- package/dist/chunks/{file-j935v87r.js → file-paphc93g.js} +2 -2
- package/dist/chunks/file-pegy9qka.js +247 -0
- package/dist/chunks/{file-jw46jgr9.js → file-pmfjm0ds.js} +16 -16
- package/dist/chunks/{file-qqff7yvw.js → file-pmtj7vd7.js} +8 -8
- package/dist/chunks/{file-x7ynhfcf.js → file-prt369qg.js} +28 -28
- package/dist/chunks/{file-kkq7fz0t.js → file-ptz1ztyq.js} +5 -5
- package/dist/chunks/{file-3qysrpvj.js → file-q3cgsmnj.js} +18 -18
- package/dist/chunks/{file-rg4vxe4z.js → file-q604e6nk.js} +12 -12
- package/dist/chunks/{file-yqgm3h52.js → file-qeka1wpx.js} +16 -16
- package/dist/chunks/{file-39hqv1cv.js → file-qrjx5gd0.js} +20 -20
- package/dist/chunks/{file-m7fncjt1.js → file-qya9qmjj.js} +21 -21
- package/dist/chunks/{file-xb5gd69p.js → file-r528y2ap.js} +10 -10
- package/dist/chunks/{file-j01ht7zb.js → file-r911hjta.js} +17 -17
- package/dist/chunks/{file-759pz1a2.js → file-rjqxra3c.js} +7 -7
- package/dist/chunks/{file-14ek8s6r.js → file-rjrsppvq.js} +13 -13
- package/dist/chunks/{file-81wsxtk4.js → file-rmeyr0zp.js} +28 -28
- package/dist/chunks/{file-6c94r859.js → file-rmftyprg.js} +35 -35
- package/dist/chunks/{file-7ntygjpx.js → file-rmjbkvqc.js} +5 -5
- package/dist/chunks/{file-y0hxjsdz.js → file-rrp6adwx.js} +16 -16
- package/dist/chunks/{file-3hfq6gnd.js → file-rtgawa8q.js} +3 -3
- package/dist/chunks/{file-f5n5pagv.js → file-rtmnkjh7.js} +7 -7
- package/dist/chunks/{file-6gg9h021.js → file-rvvz5b9h.js} +12 -12
- package/dist/chunks/{file-rh7y5xh0.js → file-s0gpr7nd.js} +1 -1
- package/dist/chunks/{file-dns6mj49.js → file-s0xr38aj.js} +7 -7
- package/dist/chunks/{file-nknpaanp.js → file-ssh3ax1h.js} +9 -9
- package/dist/chunks/{file-phke90h3.js → file-t7xph3b4.js} +4 -4
- package/dist/chunks/{file-vqv04s3v.js → file-t9v5xvk5.js} +1 -1
- package/dist/chunks/{file-0nv781ed.js → file-tgta4dgx.js} +25 -25
- package/dist/chunks/{file-ts767fjw.js → file-tjjbrw7w.js} +16 -16
- package/dist/chunks/{file-tsv3p22z.js → file-tmgtet36.js} +19 -19
- package/dist/chunks/{file-wgcrfrpe.js → file-tpqfb4gb.js} +5 -5
- package/dist/chunks/{file-dm7yrpwm.js → file-ttmf2k06.js} +3 -3
- package/dist/chunks/{file-r5bh2vbg.js → file-tvqb7ptv.js} +8 -8
- package/dist/chunks/{file-p2bhzj9e.js → file-tvzx8eep.js} +7 -7
- package/dist/chunks/{file-xysfxsss.js → file-tymq08ss.js} +19 -19
- package/dist/chunks/{file-vhjdrq5e.js → file-tyqynq3b.js} +4 -4
- package/dist/chunks/{file-19knqdbs.js → file-v6khqva7.js} +1 -1
- package/dist/chunks/{file-kgx56mxq.js → file-v6vne6e8.js} +82 -82
- package/dist/chunks/{file-q06n7zjg.js → file-v8sg56bb.js} +6 -6
- package/dist/chunks/{file-75w3e9am.js → file-v92wz3b8.js} +30 -30
- package/dist/chunks/{file-d8ch6z4t.js → file-v940708v.js} +22 -22
- package/dist/chunks/{file-754np4jn.js → file-v961h6fn.js} +19 -19
- package/dist/chunks/{file-j5208yae.js → file-va5qff5x.js} +3 -3
- package/dist/chunks/{file-428apkw1.js → file-vgjr9pam.js} +15 -15
- package/dist/chunks/{file-z9bw2vtt.js → file-vn9j9bbf.js} +14 -14
- package/dist/chunks/{file-ge7ds67b.js → file-vnzc40bj.js} +1 -1
- package/dist/chunks/{file-k7ry919m.js → file-vt4ykcc5.js} +18 -18
- package/dist/chunks/{file-0kyj2j0j.js → file-vypq2r11.js} +12 -12
- package/dist/chunks/{file-zmscwvaw.js → file-w07k5xss.js} +10 -10
- package/dist/chunks/{file-7n7dggr2.js → file-w4d6nzh9.js} +7 -7
- package/dist/chunks/{file-rzmvvtd3.js → file-waegbgsk.js} +16 -16
- package/dist/chunks/{file-kmcjptjm.js → file-wefnnxbq.js} +1 -1
- package/dist/chunks/{file-aj358c6r.js → file-wfr7fczh.js} +12 -12
- package/dist/chunks/{file-qpfcbq6z.js → file-whc6z58z.js} +7 -7
- package/dist/chunks/{file-cryxk9jx.js → file-wt9rnddh.js} +19 -19
- package/dist/chunks/{file-b82xwvp7.js → file-wzds84qh.js} +5 -5
- package/dist/chunks/{file-fksjs2ph.js → file-x6pvac8r.js} +45 -45
- package/dist/chunks/{file-17qydk6p.js → file-x9efqt87.js} +18 -18
- package/dist/chunks/{file-3vtq9f9y.js → file-xb70hszk.js} +10 -10
- package/dist/chunks/{file-04k4zjse.js → file-xdrtxdpg.js} +15 -15
- package/dist/chunks/{file-nxrz604p.js → file-xjde6dvc.js} +7 -7
- package/dist/chunks/{file-76wr4mq2.js → file-xr5vwsd4.js} +7 -7
- package/dist/chunks/{file-ws7sq7f3.js → file-xy58tbcv.js} +25 -25
- package/dist/chunks/{file-c36t02qb.js → file-y37eft65.js} +28 -28
- package/dist/chunks/{file-a73hhrgc.js → file-y3cm0t0c.js} +10 -10
- package/dist/chunks/{file-ez0vzke5.js → file-y5z1eg03.js} +7 -7
- package/dist/chunks/{file-kk3rr3qh.js → file-yfbd16n1.js} +3 -3
- package/dist/chunks/{file-fqrxtbzb.js → file-yq559278.js} +5 -5
- package/dist/chunks/{file-m6gkbcmq.js → file-yqr8waf2.js} +32 -32
- package/dist/chunks/{file-kjsgxbnr.js → file-yt0vhsen.js} +19 -19
- package/dist/chunks/{file-33j3s859.js → file-z3h7hm3n.js} +3 -3
- package/dist/chunks/{file-29x78va6.js → file-z63w68vq.js} +4 -4
- package/dist/chunks/{file-ampcz2zy.js → file-z7ezyskm.js} +28 -28
- package/dist/chunks/{file-wd9xnjkn.js → file-z7n23fv9.js} +20 -20
- package/dist/chunks/{file-v24vjsdb.js → file-zmy6e5rj.js} +47 -47
- package/dist/chunks/{file-zxhyecep.js → file-zp70bgmg.js} +26 -26
- package/dist/chunks/{file-sy2xv61m.js → file-ztxeb84j.js} +1 -1
- package/dist/chunks/{file-bnce5g0a.js → file-zy8c9jht.js} +17 -17
- package/dist/codemode/instructions.js +8 -8
- package/dist/command.js +55 -55
- package/dist/config/discovery.js +56 -56
- package/dist/config/normalize.js +16 -16
- package/dist/config/plugin/agent.js +86 -86
- package/dist/config/plugin/command.js +172 -172
- package/dist/config/plugin/compaction.js +124 -124
- package/dist/config/plugin/formatter.js +88 -88
- package/dist/config/plugin/image.js +86 -86
- package/dist/config/plugin/instruction.js +62 -62
- package/dist/config/plugin/location-watcher.js +86 -86
- package/dist/config/plugin/mcp.js +95 -95
- package/dist/config/plugin/policy.js +86 -86
- package/dist/config/plugin/provider.js +85 -85
- package/dist/config/plugin/reference.js +88 -88
- package/dist/config/plugin/shell.js +89 -89
- package/dist/config/plugin/skill-file.js +71 -71
- package/dist/config/plugin/skill.js +106 -106
- package/dist/config/plugin/snapshot.js +86 -86
- package/dist/config/plugin/source.js +89 -89
- package/dist/config/plugin/tool-output.js +88 -88
- package/dist/config/plugin/websearch.js +87 -87
- package/dist/config/plugin/worktree.js +87 -87
- package/dist/config/variable.js +2 -2
- package/dist/config.js +92 -92
- package/dist/credential.js +59 -59
- package/dist/database/database.js +51 -51
- package/dist/database/drizzle/effect-sqlite/driver.js +7 -7
- package/dist/database/drizzle/effect-sqlite/index.js +4 -4
- package/dist/database/drizzle/effect-sqlite/session.js +6 -6
- package/dist/database/drizzle/index.js +8 -8
- package/dist/database/drizzle/sqlite-core/effect/db.js +4 -4
- package/dist/database/drizzle/sqlite-core/effect/index.js +2 -2
- package/dist/database/drizzle/sqlite-core/effect/session.js +5 -5
- package/dist/database/drizzle.js +8 -8
- package/dist/database/migration.gen.js +37 -37
- package/dist/database/migration.js +38 -38
- package/dist/database/v1-migration.bun.js +14 -14
- package/dist/effect/app-node-builder.js +236 -236
- package/dist/environment/environment.js +64 -64
- package/dist/environment/index.js +66 -66
- package/dist/event-logger.js +13 -13
- package/dist/file-mutation.js +61 -61
- package/dist/filesystem/location-watcher-policy.js +3 -3
- package/dist/filesystem/location-watcher.js +182 -182
- package/dist/filesystem/search.js +73 -73
- package/dist/filesystem/watcher-binding.js +3 -3
- package/dist/filesystem/watcher.js +14 -14
- package/dist/filesystem.js +70 -70
- package/dist/form.js +63 -63
- package/dist/formatter/builtins.js +3 -3
- package/dist/formatter.js +60 -60
- package/dist/generate.js +64 -64
- package/dist/git.js +5 -5
- package/dist/github-copilot/chat/openai-compatible-chat-language-model.js +4 -4
- package/dist/github-copilot/copilot-provider.js +3 -3
- package/dist/github-copilot/models.js +3 -3
- package/dist/github-copilot/responses/openai-responses-language-model.js +6 -6
- package/dist/github-copilot/responses/openai-responses-prepare-tools.js +4 -4
- package/dist/image/photon.js +1 -1
- package/dist/image.js +5 -5
- package/dist/instance/service.js +5 -5
- package/dist/instance.js +310 -310
- package/dist/instruction-discovery.js +62 -62
- package/dist/instructions/builtins.js +61 -61
- package/dist/instructions/index.js +5 -5
- package/dist/integration.js +63 -63
- package/dist/job.js +57 -57
- package/dist/kv.js +52 -52
- package/dist/location-activity.js +60 -60
- package/dist/location-mutation.js +60 -60
- package/dist/location-service-map.js +60 -60
- package/dist/location-services.js +307 -307
- package/dist/location.js +61 -61
- package/dist/mcp/client.js +19 -19
- package/dist/mcp/index.js +76 -76
- package/dist/mcp/instructions.js +92 -92
- package/dist/mcp/stdio.js +61 -61
- package/dist/modal/models.js +3 -3
- package/dist/model-resolver.js +59 -59
- package/dist/model.js +10 -10
- package/dist/models-dev.js +65 -65
- package/dist/permission/saved.js +59 -59
- package/dist/permission/sql.js +3 -3
- package/dist/permission.js +83 -83
- package/dist/persistent-pty/index.js +64 -64
- package/dist/persistent-pty.js +50 -50
- package/dist/plugin/agent.js +72 -72
- package/dist/plugin/command.js +69 -69
- package/dist/plugin/hooks.js +5 -5
- package/dist/plugin/host.js +179 -179
- package/dist/plugin/instance.js +5 -5
- package/dist/plugin/internal.js +281 -281
- package/dist/plugin/mcp-codemode-exclusion.js +3 -3
- package/dist/plugin/models-dev.js +54 -54
- package/dist/plugin/module.js +5 -5
- package/dist/plugin/optimize.js +4 -4
- package/dist/plugin/plan.js +72 -72
- package/dist/plugin/provider/amazon-bedrock.js +2 -2
- package/dist/plugin/provider/anthropic.js +2 -2
- package/dist/plugin/provider/azure.js +89 -89
- package/dist/plugin/provider/cerebras.js +2 -2
- package/dist/plugin/provider/cloudflare-ai-gateway.js +88 -88
- package/dist/plugin/provider/cloudflare-workers-ai.js +88 -88
- package/dist/plugin/provider/configured.js +86 -86
- package/dist/plugin/provider/github-copilot.js +57 -57
- package/dist/plugin/provider/gitlab.js +3 -3
- package/dist/plugin/provider/google-vertex.js +2 -2
- package/dist/plugin/provider/kilo.js +2 -2
- package/dist/plugin/provider/llmgateway.js +53 -53
- package/dist/plugin/provider/lmstudio.js +89 -89
- package/dist/plugin/provider/modal.js +56 -56
- package/dist/plugin/provider/nvidia.js +2 -2
- package/dist/plugin/provider/ollama.js +89 -89
- package/dist/plugin/provider/openai.js +56 -56
- package/dist/plugin/provider/opencode.js +53 -53
- package/dist/plugin/provider/openrouter.js +3 -3
- package/dist/plugin/provider/sap-ai-core.js +2 -2
- package/dist/plugin/provider/snowflake-cortex.js +2 -2
- package/dist/plugin/provider/vercel.js +2 -2
- package/dist/plugin/provider/vllm.js +89 -89
- package/dist/plugin/provider/xai.js +54 -54
- package/dist/plugin/provider/zenmux.js +2 -2
- package/dist/plugin/provider.js +122 -122
- package/dist/plugin/sdk.js +55 -55
- package/dist/plugin/service.js +3 -3
- package/dist/plugin/skill.js +104 -104
- package/dist/plugin/supervisor.js +300 -300
- package/dist/plugin/update.js +5 -5
- package/dist/plugin/variant.js +4 -4
- package/dist/plugin/vcs/git.js +59 -59
- package/dist/plugin/vcs/hg.js +59 -59
- package/dist/plugin/warming.js +85 -85
- package/dist/plugin/websearch/exa.js +6 -6
- package/dist/plugin/websearch/firecrawl.js +7 -7
- package/dist/plugin/websearch/index.js +7 -7
- package/dist/plugin/websearch/mcp.js +3 -3
- package/dist/plugin/websearch/parallel.js +7 -7
- package/dist/plugin/websearch/tavily.js +6 -6
- package/dist/plugin.js +187 -187
- package/dist/project/schema.js +5 -5
- package/dist/project/sql.js +2 -2
- package/dist/project.js +62 -62
- package/dist/provider.js +5 -5
- package/dist/pty.js +64 -64
- package/dist/reference/instructions.js +60 -60
- package/dist/reference.js +64 -64
- package/dist/repository-cache.js +56 -56
- package/dist/repository.js +3 -3
- package/dist/ripgrep.js +68 -68
- package/dist/rpc.js +60 -60
- package/dist/session/command.js +52 -52
- package/dist/session/compaction.js +100 -100
- package/dist/session/context.js +118 -118
- package/dist/session/environment.js +5 -5
- package/dist/session/error.js +6 -6
- package/dist/session/execution/restart.js +125 -125
- package/dist/session/execution.js +96 -96
- package/dist/session/generate.js +117 -117
- package/dist/session/history.js +10 -10
- package/dist/session/inbox.js +63 -63
- package/dist/session/info.js +2 -2
- package/dist/session/instruction-entry.js +58 -58
- package/dist/session/instruction-state.js +5 -5
- package/dist/session/instructions.js +68 -68
- package/dist/session/message-updater.js +3 -3
- package/dist/session/model-request.js +87 -87
- package/dist/session/model-transport.js +7 -7
- package/dist/session/move.js +97 -97
- package/dist/session/projector.js +58 -58
- package/dist/session/prompt.js +74 -74
- package/dist/session/revert.js +61 -61
- package/dist/session/run-coordinator.js +3 -3
- package/dist/session/runner/index.js +3 -3
- package/dist/session/runner/llm.js +188 -188
- package/dist/session/runner/model.js +63 -63
- package/dist/session/runner/retry.js +3 -3
- package/dist/session/runner/step.js +91 -91
- package/dist/session/schema.js +5 -5
- package/dist/session/session.js +135 -135
- package/dist/session/shell.js +101 -101
- package/dist/session/skill.js +73 -73
- package/dist/session/sql.js +3 -3
- package/dist/session/stats.js +12 -12
- package/dist/session/store.js +61 -61
- package/dist/session/subagent-job.js +171 -171
- package/dist/session/system-prompt.js +5 -5
- package/dist/session/title.js +121 -121
- package/dist/session/to-session-error.js +80 -80
- package/dist/session/transfer.js +125 -125
- package/dist/session.js +180 -180
- package/dist/shell/parse.js +3 -3
- package/dist/shell/select.js +11 -11
- package/dist/shell.js +102 -102
- package/dist/skill/discovery.js +5 -5
- package/dist/skill/instructions.js +75 -75
- package/dist/skill.js +80 -80
- package/dist/snapshot.js +66 -66
- package/dist/tool/mcp.js +93 -93
- package/dist/tool/plugin/edit.js +88 -88
- package/dist/tool/plugin/glob.js +92 -92
- package/dist/tool/plugin/grep.js +90 -90
- package/dist/tool/plugin/opencode.js +3 -3
- package/dist/tool/plugin/patch.js +88 -88
- package/dist/tool/plugin/question.js +73 -73
- package/dist/tool/plugin/read.js +89 -89
- package/dist/tool/plugin/shell.js +179 -179
- package/dist/tool/plugin/skill.js +81 -81
- package/dist/tool/plugin/subagent.js +178 -178
- package/dist/tool/plugin/webfetch.js +80 -80
- package/dist/tool/plugin/websearch.js +84 -84
- package/dist/tool/plugin/write.js +88 -88
- package/dist/tool/read-filesystem.js +70 -70
- package/dist/tool-output.js +6 -6
- package/dist/tool.js +9 -9
- package/dist/v1/config/agent.js +6 -6
- package/dist/v1/config/attachment.js +3 -3
- package/dist/v1/config/command.js +3 -3
- package/dist/v1/config/config.js +14 -14
- package/dist/v1/config/error.js +3 -3
- package/dist/v1/config/formatter.js +3 -3
- package/dist/v1/config/lsp.js +3 -3
- package/dist/v1/config/mcp.js +3 -3
- package/dist/v1/config/migrate.js +3 -3
- package/dist/v1/config/permission.js +7 -7
- package/dist/v1/config/plugin.js +3 -3
- package/dist/v1/config/provider.js +3 -3
- package/dist/v1/config/skills.js +3 -3
- package/dist/vcs.js +62 -62
- package/dist/websearch.js +58 -58
- package/dist/wellknown/plugin.js +53 -53
- package/dist/wellknown.js +58 -58
- package/dist/workspace/driver.js +5 -5
- package/dist/workspace.js +57 -57
- package/dist/worktree/git.js +2 -2
- package/dist/worktree/refresh.js +299 -299
- package/dist/worktree/sql.js +3 -3
- package/dist/worktree.js +63 -63
- package/package.json +7 -7
- package/dist/chunks/file-g7tb25v3.js +0 -247
- package/dist/chunks/file-vz1btq9j.js +0 -22
- /package/dist/chunks/{file-qvbcabdc.js → file-9qm9egsn.js} +0 -0
- /package/dist/chunks/{file-b29mbqx6.js → file-d9wzmzc3.js} +0 -0
- /package/dist/chunks/{file-tag52meg.js → file-gmq3187j.js} +0 -0
- /package/dist/chunks/{file-eyx7m0wd.js → file-hpgd43jv.js} +0 -0
- /package/dist/chunks/{file-92k45pvj.js → file-zvrekwpq.js} +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./file-
|
|
2
|
+
Service76,
|
|
3
|
+
node81
|
|
4
|
+
} from "./file-7qhv6080.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
parse4,
|
|
7
7
|
parseRemote2,
|
|
8
8
|
validateBranch3,
|
|
9
9
|
isRemote2,
|
|
10
10
|
cachePath2
|
|
11
|
-
} from "./file-
|
|
11
|
+
} from "./file-2402vzrj.js";
|
|
12
12
|
import {
|
|
13
13
|
AbsolutePath2
|
|
14
14
|
} from "./file-p8qxwesx.js";
|
|
15
15
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from "./file-
|
|
16
|
+
Service44,
|
|
17
|
+
node48
|
|
18
|
+
} from "./file-qya9qmjj.js";
|
|
19
19
|
import {
|
|
20
20
|
create3
|
|
21
21
|
} from "./file-kg06axw8.js";
|
|
@@ -26,31 +26,31 @@ import {
|
|
|
26
26
|
// src/reference.ts
|
|
27
27
|
var exports_reference2 = {};
|
|
28
28
|
__export(exports_reference2, {
|
|
29
|
-
Event: () =>
|
|
29
|
+
Event: () => Event11,
|
|
30
30
|
GitSource: () => GitSource2,
|
|
31
|
-
Info: () =>
|
|
31
|
+
Info: () => Info18,
|
|
32
32
|
LocalSource: () => LocalSource2,
|
|
33
33
|
Reference: () => exports_reference2,
|
|
34
|
-
Service: () =>
|
|
35
|
-
Source: () =>
|
|
36
|
-
node: () =>
|
|
34
|
+
Service: () => Service43,
|
|
35
|
+
Source: () => Source4,
|
|
36
|
+
node: () => node47
|
|
37
37
|
});
|
|
38
38
|
import { makeLocationNode } from "@opencode-ai/util/effect/app-node";
|
|
39
39
|
import { Context, Effect, Layer, Scope } from "effect";
|
|
40
40
|
import { Reference } from "@opencode-ai/schema/reference";
|
|
41
41
|
import { Global } from "@opencode-ai/util/global";
|
|
42
|
-
import { Event as
|
|
42
|
+
import { Event as Event11 } from "@opencode-ai/schema/reference";
|
|
43
43
|
var LocalSource2 = Reference.LocalSource;
|
|
44
44
|
var GitSource2 = Reference.GitSource;
|
|
45
|
-
var
|
|
46
|
-
var
|
|
45
|
+
var Source4 = Reference.Source;
|
|
46
|
+
var Info18 = Reference.Info;
|
|
47
47
|
|
|
48
|
-
class
|
|
48
|
+
class Service43 extends Context.Service()("@opencode/Reference") {
|
|
49
49
|
}
|
|
50
|
-
var layer = Layer.effect(
|
|
50
|
+
var layer = Layer.effect(Service43, Effect.gen(function* () {
|
|
51
51
|
const global = yield* Global.Service;
|
|
52
|
-
const bus = yield*
|
|
53
|
-
const cache = yield*
|
|
52
|
+
const bus = yield* Service76;
|
|
53
|
+
const cache = yield* Service44;
|
|
54
54
|
const scope = yield* Scope.Scope;
|
|
55
55
|
const list = () => Array.from(state.get().sources).flatMap(([name, source]) => {
|
|
56
56
|
const info = {
|
|
@@ -60,8 +60,8 @@ var layer = Layer.effect(Service35, Effect.gen(function* () {
|
|
|
60
60
|
...source.hidden === undefined ? {} : { hidden: source.hidden }
|
|
61
61
|
};
|
|
62
62
|
if (source.type === "local")
|
|
63
|
-
return [
|
|
64
|
-
const repository =
|
|
63
|
+
return [Info18.make({ ...info, path: source.path })];
|
|
64
|
+
const repository = parse4(source.repository);
|
|
65
65
|
if (!repository || !isRemote2(repository))
|
|
66
66
|
return [];
|
|
67
67
|
if (source.branch) {
|
|
@@ -72,7 +72,7 @@ var layer = Layer.effect(Service35, Effect.gen(function* () {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
return [
|
|
75
|
-
|
|
75
|
+
Info18.make({
|
|
76
76
|
...info,
|
|
77
77
|
path: AbsolutePath2.make(cachePath2(global.repos, repository, source.branch))
|
|
78
78
|
})
|
|
@@ -104,7 +104,7 @@ var layer = Layer.effect(Service35, Effect.gen(function* () {
|
|
|
104
104
|
})
|
|
105
105
|
});
|
|
106
106
|
yield* Effect.sleep("1 hour").pipe(Effect.andThen(refresh()), Effect.forever, Effect.forkScoped);
|
|
107
|
-
return
|
|
107
|
+
return Service43.of({
|
|
108
108
|
transform: state.transform,
|
|
109
109
|
reload: state.reload,
|
|
110
110
|
list: Effect.fn("Reference.list")(function* () {
|
|
@@ -112,10 +112,10 @@ var layer = Layer.effect(Service35, Effect.gen(function* () {
|
|
|
112
112
|
})
|
|
113
113
|
});
|
|
114
114
|
}));
|
|
115
|
-
var
|
|
116
|
-
service:
|
|
115
|
+
var node47 = makeLocationNode({
|
|
116
|
+
service: Service43,
|
|
117
117
|
layer,
|
|
118
|
-
deps: [Global.node,
|
|
118
|
+
deps: [Global.node, node81, node48]
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
export { LocalSource2, GitSource2,
|
|
121
|
+
export { LocalSource2, GitSource2, Source4, Info18, Service43, node47, exports_reference2, Event11 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./file-
|
|
2
|
+
Service57
|
|
3
|
+
} from "./file-ajc7k593.js";
|
|
4
4
|
import {
|
|
5
5
|
MAX_MARKDOWN_BYTES2,
|
|
6
6
|
convertHTMLToMarkdown2
|
|
@@ -16,29 +16,29 @@ import {
|
|
|
16
16
|
var exports_webfetch = {};
|
|
17
17
|
__export(exports_webfetch, {
|
|
18
18
|
DEFAULT_TIMEOUT_SECONDS: () => DEFAULT_TIMEOUT_SECONDS2,
|
|
19
|
-
Input: () =>
|
|
20
|
-
MAX_RESPONSE_BYTES: () =>
|
|
19
|
+
Input: () => Input11,
|
|
20
|
+
MAX_RESPONSE_BYTES: () => MAX_RESPONSE_BYTES3,
|
|
21
21
|
MAX_TIMEOUT_SECONDS: () => MAX_TIMEOUT_SECONDS2,
|
|
22
|
-
Plugin: () =>
|
|
22
|
+
Plugin: () => Plugin43,
|
|
23
23
|
WebFetchTool: () => exports_webfetch,
|
|
24
24
|
convertHTMLToMarkdown: () => convertHTMLToMarkdown2,
|
|
25
|
-
description: () =>
|
|
25
|
+
description: () => description5,
|
|
26
26
|
extractTextFromHTML: () => extractTextFromHTML2,
|
|
27
|
-
name: () =>
|
|
27
|
+
name: () => name11
|
|
28
28
|
});
|
|
29
29
|
import { ToolFailure } from "@opencode-ai/ai";
|
|
30
30
|
import { Duration, Effect, Schema } from "effect";
|
|
31
31
|
import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";
|
|
32
32
|
import { Parser } from "htmlparser2";
|
|
33
|
-
var
|
|
34
|
-
var
|
|
33
|
+
var name11 = "webfetch";
|
|
34
|
+
var MAX_RESPONSE_BYTES3 = MAX_MARKDOWN_BYTES2;
|
|
35
35
|
var DEFAULT_TIMEOUT_SECONDS2 = 30;
|
|
36
36
|
var MAX_TIMEOUT_SECONDS2 = 120;
|
|
37
|
-
var
|
|
37
|
+
var description5 = `Fetch content from an HTTP or HTTPS URL and return it as text, markdown, or HTML. Markdown is the default.
|
|
38
38
|
|
|
39
39
|
Use a more targeted tool when one is available. This tool is read-only. Large text results may be replaced with a preview while the complete output is retained in managed storage.`;
|
|
40
40
|
var Timeout = Schema.Finite.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(MAX_TIMEOUT_SECONDS2));
|
|
41
|
-
var
|
|
41
|
+
var Input11 = Schema.Struct({
|
|
42
42
|
url: Schema.String.annotate({ description: "The HTTP or HTTPS URL to fetch content from" }),
|
|
43
43
|
format: Schema.Literals(["text", "markdown", "html"]).annotate({ description: "The format to return the content in. Defaults to markdown." }).pipe(Schema.withDecodingDefaultKey(Effect.succeed("markdown"))),
|
|
44
44
|
timeout: Schema.optionalKey(Timeout).annotate({
|
|
@@ -48,7 +48,7 @@ var Input4 = Schema.Struct({
|
|
|
48
48
|
var Output = Schema.Struct({
|
|
49
49
|
url: Schema.String,
|
|
50
50
|
contentType: Schema.String,
|
|
51
|
-
format:
|
|
51
|
+
format: Input11.fields.format,
|
|
52
52
|
output: Schema.String
|
|
53
53
|
});
|
|
54
54
|
var acceptHeader = (format) => {
|
|
@@ -79,7 +79,7 @@ var assertHttpUrl = (url) => {
|
|
|
79
79
|
throw new Error("URL must use http:// or https://");
|
|
80
80
|
};
|
|
81
81
|
var execute = (http, url, format, userAgent = openCodeUserAgent) => http.execute(request(url, format, userAgent)).pipe(Effect.flatMap(HttpClientResponse.filterStatusOk));
|
|
82
|
-
var collectBody = (response) => collectBoundedResponseBody2(response,
|
|
82
|
+
var collectBody = (response) => collectBoundedResponseBody2(response, MAX_RESPONSE_BYTES3, () => new Error(`Response too large (exceeds ${MAX_RESPONSE_BYTES3} byte limit)`));
|
|
83
83
|
var mimeFrom = (contentType) => contentType.split(";", 1)[0]?.trim().toLowerCase() ?? "";
|
|
84
84
|
var isImageAttachment = (mime) => mime.startsWith("image/") && mime !== "image/svg+xml" && mime !== "image/vnd.fastbidsheet";
|
|
85
85
|
var isTextualMime = (mime) => !mime || mime.startsWith("text/") || mime === "application/json" || mime.endsWith("+json") || mime === "application/xml" || mime.endsWith("+xml") || mime === "application/javascript" || mime === "application/x-javascript";
|
|
@@ -92,16 +92,16 @@ var convert = (content, contentType, format) => {
|
|
|
92
92
|
return extractTextFromHTML2(content);
|
|
93
93
|
return content;
|
|
94
94
|
};
|
|
95
|
-
var
|
|
95
|
+
var Plugin43 = {
|
|
96
96
|
id: "opencode.tool.webfetch",
|
|
97
97
|
effect: Effect.fn("WebFetchTool.Plugin")(function* (ctx) {
|
|
98
98
|
const http = yield* HttpClient.HttpClient;
|
|
99
|
-
const permission = yield*
|
|
99
|
+
const permission = yield* Service57;
|
|
100
100
|
yield* ctx.tool.transform((editor) => editor.add({
|
|
101
|
-
name:
|
|
101
|
+
name: name11,
|
|
102
102
|
options: { codemode: false },
|
|
103
|
-
description:
|
|
104
|
-
input:
|
|
103
|
+
description: description5,
|
|
104
|
+
input: Input11,
|
|
105
105
|
output: Output,
|
|
106
106
|
execute: (input, context) => Effect.gen(function* () {
|
|
107
107
|
yield* Effect.try({
|
|
@@ -109,7 +109,7 @@ var Plugin4 = {
|
|
|
109
109
|
catch: (error) => error
|
|
110
110
|
});
|
|
111
111
|
yield* permission.assert({
|
|
112
|
-
action:
|
|
112
|
+
action: name11,
|
|
113
113
|
resources: [input.url],
|
|
114
114
|
save: ["*"],
|
|
115
115
|
metadata: input,
|
|
@@ -167,4 +167,4 @@ function extractTextFromHTML2(html) {
|
|
|
167
167
|
parser.end();
|
|
168
168
|
return text.trim();
|
|
169
169
|
}
|
|
170
|
-
export {
|
|
170
|
+
export { name11, MAX_RESPONSE_BYTES3, DEFAULT_TIMEOUT_SECONDS2, MAX_TIMEOUT_SECONDS2, description5, Input11, Plugin43, extractTextFromHTML2, exports_webfetch };
|
|
@@ -2,37 +2,37 @@ import {
|
|
|
2
2
|
makeUnsafe2
|
|
3
3
|
} from "./file-y71avatq.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from "./file-
|
|
5
|
+
Service76,
|
|
6
|
+
node81
|
|
7
|
+
} from "./file-7qhv6080.js";
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} from "./file-
|
|
9
|
+
Event17,
|
|
10
|
+
Service65,
|
|
11
|
+
node69
|
|
12
|
+
} from "./file-3wwk5jwz.js";
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
} from "./file-
|
|
14
|
+
Service72,
|
|
15
|
+
node77
|
|
16
|
+
} from "./file-xdrtxdpg.js";
|
|
17
17
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
} from "./file-
|
|
18
|
+
Service70,
|
|
19
|
+
node74
|
|
20
|
+
} from "./file-tymq08ss.js";
|
|
21
21
|
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} from "./file-
|
|
22
|
+
ID14,
|
|
23
|
+
Service66,
|
|
24
|
+
node70
|
|
25
|
+
} from "./file-zp70bgmg.js";
|
|
26
26
|
import {
|
|
27
27
|
reconcile2,
|
|
28
28
|
create3
|
|
29
29
|
} from "./file-kg06axw8.js";
|
|
30
30
|
import {
|
|
31
|
-
|
|
31
|
+
ID12,
|
|
32
32
|
MethodID2,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
} from "./file-
|
|
33
|
+
Service64,
|
|
34
|
+
node68
|
|
35
|
+
} from "./file-7d289b1g.js";
|
|
36
36
|
import {
|
|
37
37
|
__export
|
|
38
38
|
} from "./file-9rqn6x4v.js";
|
|
@@ -42,7 +42,7 @@ var exports_mcp4 = {};
|
|
|
42
42
|
__export(exports_mcp4, {
|
|
43
43
|
Mcp: () => exports_mcp4,
|
|
44
44
|
NotFoundError: () => NotFoundError3,
|
|
45
|
-
Options: () =>
|
|
45
|
+
Options: () => Options4,
|
|
46
46
|
Prompt: () => Prompt2,
|
|
47
47
|
PromptArgument: () => PromptArgument2,
|
|
48
48
|
PromptMessage: () => PromptMessage2,
|
|
@@ -56,15 +56,15 @@ __export(exports_mcp4, {
|
|
|
56
56
|
ServerInfo: () => ServerInfo2,
|
|
57
57
|
ServerInstructions: () => ServerInstructions2,
|
|
58
58
|
ServerName: () => ServerName2,
|
|
59
|
-
Service: () =>
|
|
59
|
+
Service: () => Service32,
|
|
60
60
|
Status: () => Status2,
|
|
61
61
|
Tool: () => Tool2,
|
|
62
62
|
ToolCallError: () => ToolCallError2,
|
|
63
63
|
ToolResult: () => ToolResult2,
|
|
64
64
|
ToolResultContent: () => ToolResultContent2,
|
|
65
|
-
configured: () =>
|
|
66
|
-
layer: () =>
|
|
67
|
-
node: () =>
|
|
65
|
+
configured: () => configured4,
|
|
66
|
+
layer: () => layer14,
|
|
67
|
+
node: () => node36
|
|
68
68
|
});
|
|
69
69
|
import { Mcp } from "@opencode-ai/schema/mcp";
|
|
70
70
|
import { McpEvent } from "@opencode-ai/schema/mcp-event";
|
|
@@ -81,7 +81,7 @@ var Status2 = Mcp.Status;
|
|
|
81
81
|
class ServerInfo2 extends Schema.Class("MCP.ServerInfo")({
|
|
82
82
|
name: ServerName2,
|
|
83
83
|
status: Status2,
|
|
84
|
-
integrationID:
|
|
84
|
+
integrationID: ID12.pipe(Schema.optional)
|
|
85
85
|
}) {
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -165,21 +165,21 @@ var GLOBAL_ELICITATION_SESSION_ID = "global";
|
|
|
165
165
|
var URL_ELICITATION_FIELD_KEY = "elicitation";
|
|
166
166
|
var cloneConfig = (config) => structuredClone(config);
|
|
167
167
|
|
|
168
|
-
class
|
|
168
|
+
class Service32 extends Context.Service()("@opencode/MCP") {
|
|
169
169
|
}
|
|
170
|
-
var
|
|
170
|
+
var Options4 = Schema.Struct({
|
|
171
171
|
clientInfo: Schema.optional(Schema.Struct({
|
|
172
172
|
name: Schema.String,
|
|
173
173
|
version: Schema.String
|
|
174
174
|
}))
|
|
175
175
|
});
|
|
176
|
-
var
|
|
177
|
-
const location = yield*
|
|
178
|
-
const environment = yield*
|
|
179
|
-
const bus = yield*
|
|
180
|
-
const forms = yield*
|
|
181
|
-
const integration = yield*
|
|
182
|
-
const credentials = yield*
|
|
176
|
+
var layer14 = (options) => Layer.effect(Service32, Effect.gen(function* () {
|
|
177
|
+
const location = yield* Service72;
|
|
178
|
+
const environment = yield* Service70;
|
|
179
|
+
const bus = yield* Service76;
|
|
180
|
+
const forms = yield* Service66;
|
|
181
|
+
const integration = yield* Service64;
|
|
182
|
+
const credentials = yield* Service65;
|
|
183
183
|
const root = yield* Effect.scope;
|
|
184
184
|
const fork = yield* FiberSet.makeRuntime();
|
|
185
185
|
const entries = new Map;
|
|
@@ -191,7 +191,7 @@ var layer11 = (options) => Layer.effect(Service30, Effect.gen(function* () {
|
|
|
191
191
|
return;
|
|
192
192
|
const remote = entry.config;
|
|
193
193
|
const suffix = "mcp_" + createHash("sha1").update(name + "\x00" + remote.url).digest("hex").slice(0, 16);
|
|
194
|
-
const integrationID =
|
|
194
|
+
const integrationID = ID12.make(suffix);
|
|
195
195
|
entry.integrationID = integrationID;
|
|
196
196
|
owned.add(integrationID);
|
|
197
197
|
const methodID = MethodID2.make(suffix);
|
|
@@ -315,7 +315,7 @@ var layer11 = (options) => Layer.effect(Service30, Effect.gen(function* () {
|
|
|
315
315
|
const elicitation = {
|
|
316
316
|
create: (input) => Effect.gen(function* () {
|
|
317
317
|
if (input.params.mode === "url") {
|
|
318
|
-
const formID =
|
|
318
|
+
const formID = ID14.create();
|
|
319
319
|
const key = input.server + "\x00" + input.params.elicitationId;
|
|
320
320
|
urlElicitations.set(key, formID);
|
|
321
321
|
return yield* forms.ask({
|
|
@@ -433,7 +433,7 @@ var layer11 = (options) => Layer.effect(Service30, Effect.gen(function* () {
|
|
|
433
433
|
entry.scope = scope;
|
|
434
434
|
const authProvider = yield* connectProvider(entry);
|
|
435
435
|
const { McpClient } = yield* Effect.promise(() => import("../mcp/client.js"));
|
|
436
|
-
const result = yield* McpClient.connect(name, entry.config, location.directory, authProvider, elicitation, options?.clientInfo).pipe(Effect.flatMap((connection) => connection.tools().pipe(Effect.map((tools) => ({ connection, tools })))), Effect.provideService(
|
|
436
|
+
const result = yield* McpClient.connect(name, entry.config, location.directory, authProvider, elicitation, options?.clientInfo).pipe(Effect.flatMap((connection) => connection.tools().pipe(Effect.map((tools) => ({ connection, tools })))), Effect.provideService(Service70, environment), Scope.provide(scope), Effect.exit);
|
|
437
437
|
if (Exit.isSuccess(result)) {
|
|
438
438
|
entry.client = result.value.connection;
|
|
439
439
|
entry.tools = result.value.tools.map((def) => toTool(name, entry, def));
|
|
@@ -557,7 +557,7 @@ var layer11 = (options) => Layer.effect(Service30, Effect.gen(function* () {
|
|
|
557
557
|
yield* startServer(name, entry);
|
|
558
558
|
}).pipe(locks.withLock(name));
|
|
559
559
|
});
|
|
560
|
-
fork(bus.subscribe(
|
|
560
|
+
fork(bus.subscribe(Event17.Switched).pipe(Stream.filter((event) => owned.has(event.data.integrationID)), Stream.runForEach((event) => Effect.sync(() => fork(reconnect(event.data.integrationID))))));
|
|
561
561
|
const state = create3({
|
|
562
562
|
name: "mcp",
|
|
563
563
|
initial: () => ({
|
|
@@ -587,7 +587,7 @@ var layer11 = (options) => Layer.effect(Service30, Effect.gen(function* () {
|
|
|
587
587
|
concurrency: "unbounded",
|
|
588
588
|
discard: true
|
|
589
589
|
}));
|
|
590
|
-
return
|
|
590
|
+
return Service32.of({
|
|
591
591
|
transform: state.transform,
|
|
592
592
|
reload: state.reload,
|
|
593
593
|
servers: Effect.fn("MCP.servers")(function* () {
|
|
@@ -707,14 +707,14 @@ var layer11 = (options) => Layer.effect(Service30, Effect.gen(function* () {
|
|
|
707
707
|
})
|
|
708
708
|
});
|
|
709
709
|
}));
|
|
710
|
-
function
|
|
710
|
+
function configured4(options) {
|
|
711
711
|
return makeLocationNode({
|
|
712
|
-
service:
|
|
713
|
-
layer:
|
|
714
|
-
deps: [
|
|
712
|
+
service: Service32,
|
|
713
|
+
layer: layer14(options),
|
|
714
|
+
deps: [node77, node74, node81, node70, node68, node69]
|
|
715
715
|
});
|
|
716
716
|
}
|
|
717
|
-
var
|
|
717
|
+
var node36 = configured4();
|
|
718
718
|
function toElicitationField(key, property, required) {
|
|
719
719
|
const machineTitle = /^(boolean|string|number|integer|array|object)(\s+with\b.*|\s+in\b.*)?$/i;
|
|
720
720
|
const title = property.title && !machineTitle.test(property.title.trim()) ? property.title : property.description ?? key;
|
|
@@ -765,4 +765,4 @@ function toElicitationField(key, property, required) {
|
|
|
765
765
|
}
|
|
766
766
|
}
|
|
767
767
|
|
|
768
|
-
export { ServerName2, PromptsChanged2, Status2, ServerInfo2, ServerInstructions2, Tool2, ToolResultContent2, ToolResult2, PromptArgument2, Prompt2, PromptMessage2, PromptResult2, Resource2, ResourceTemplate2, ResourceCatalog2, ResourceContentPart2, ResourceContent2, NotFoundError3, ToolCallError2,
|
|
768
|
+
export { ServerName2, PromptsChanged2, Status2, ServerInfo2, ServerInstructions2, Tool2, ToolResultContent2, ToolResult2, PromptArgument2, Prompt2, PromptMessage2, PromptResult2, Resource2, ResourceTemplate2, ResourceCatalog2, ResourceContentPart2, ResourceContent2, NotFoundError3, ToolCallError2, Service32, Options4, layer14, configured4, node36, exports_mcp4 };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "./file-
|
|
2
|
+
Service76,
|
|
3
|
+
node81
|
|
4
|
+
} from "./file-7qhv6080.js";
|
|
5
5
|
import {
|
|
6
6
|
__export
|
|
7
7
|
} from "./file-9rqn6x4v.js";
|
|
@@ -12,31 +12,31 @@ __export(exports_form, {
|
|
|
12
12
|
AlreadyExistsError: () => AlreadyExistsError2,
|
|
13
13
|
AlreadySettledError: () => AlreadySettledError2,
|
|
14
14
|
Answer: () => Answer2,
|
|
15
|
-
Event: () =>
|
|
15
|
+
Event: () => Event18,
|
|
16
16
|
Field: () => Field2,
|
|
17
17
|
Fields: () => Fields2,
|
|
18
18
|
Form: () => exports_form,
|
|
19
|
-
ID: () =>
|
|
20
|
-
Info: () =>
|
|
19
|
+
ID: () => ID14,
|
|
20
|
+
Info: () => Info26,
|
|
21
21
|
InvalidAnswerError: () => InvalidAnswerError2,
|
|
22
22
|
InvalidFormError: () => InvalidFormError2,
|
|
23
|
-
NotFoundError: () =>
|
|
23
|
+
NotFoundError: () => NotFoundError7,
|
|
24
24
|
Reply: () => Reply3,
|
|
25
|
-
Service: () =>
|
|
25
|
+
Service: () => Service66,
|
|
26
26
|
State: () => State3,
|
|
27
27
|
When: () => When2,
|
|
28
|
-
layer: () =>
|
|
29
|
-
node: () =>
|
|
28
|
+
layer: () => layer23,
|
|
29
|
+
node: () => node70,
|
|
30
30
|
validateAnswer: () => validateAnswer2,
|
|
31
31
|
validateFields: () => validateFields2
|
|
32
32
|
});
|
|
33
33
|
import { Form } from "@opencode-ai/schema/form";
|
|
34
34
|
import { Cache, Context, Deferred, Duration, Effect, Exit, Layer, Option, Schema } from "effect";
|
|
35
35
|
import { makeLocationNode } from "@opencode-ai/util/effect/app-node";
|
|
36
|
-
import { Event as
|
|
36
|
+
import { Event as Event18 } from "@opencode-ai/schema/form";
|
|
37
37
|
var RETENTION = Duration.minutes(10);
|
|
38
|
-
var
|
|
39
|
-
var
|
|
38
|
+
var ID14 = Form.ID;
|
|
39
|
+
var Info26 = Form.Info;
|
|
40
40
|
var Field2 = Form.Field;
|
|
41
41
|
var Fields2 = Form.Fields;
|
|
42
42
|
var When2 = Form.When;
|
|
@@ -44,8 +44,8 @@ var State3 = Form.State;
|
|
|
44
44
|
var Answer2 = Form.Answer;
|
|
45
45
|
var Reply3 = Form.Reply;
|
|
46
46
|
|
|
47
|
-
class
|
|
48
|
-
id:
|
|
47
|
+
class NotFoundError7 extends Schema.TaggedError()("Form.NotFoundError", {
|
|
48
|
+
id: ID14
|
|
49
49
|
}) {
|
|
50
50
|
get message() {
|
|
51
51
|
return `Form not found: ${this.id}`;
|
|
@@ -53,7 +53,7 @@ class NotFoundError8 extends Schema.TaggedError()("Form.NotFoundError", {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
class AlreadySettledError2 extends Schema.TaggedError()("Form.AlreadySettledError", {
|
|
56
|
-
id:
|
|
56
|
+
id: ID14
|
|
57
57
|
}) {
|
|
58
58
|
get message() {
|
|
59
59
|
return `Form already settled: ${this.id}`;
|
|
@@ -61,7 +61,7 @@ class AlreadySettledError2 extends Schema.TaggedError()("Form.AlreadySettledErro
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
class AlreadyExistsError2 extends Schema.TaggedError()("Form.AlreadyExistsError", {
|
|
64
|
-
id:
|
|
64
|
+
id: ID14
|
|
65
65
|
}) {
|
|
66
66
|
get message() {
|
|
67
67
|
return `Form already exists: ${this.id}`;
|
|
@@ -69,7 +69,7 @@ class AlreadyExistsError2 extends Schema.TaggedError()("Form.AlreadyExistsError"
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
class InvalidAnswerError2 extends Schema.TaggedError()("Form.InvalidAnswerError", {
|
|
72
|
-
id:
|
|
72
|
+
id: ID14,
|
|
73
73
|
message: Schema.String
|
|
74
74
|
}) {
|
|
75
75
|
}
|
|
@@ -79,17 +79,17 @@ class InvalidFormError2 extends Schema.TaggedError()("Form.InvalidFormError", {
|
|
|
79
79
|
}) {
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
class
|
|
82
|
+
class Service66 extends Context.Service()("@opencode/Form") {
|
|
83
83
|
}
|
|
84
|
-
var
|
|
85
|
-
const bus = yield*
|
|
84
|
+
var layer23 = Layer.effect(Service66, Effect.gen(function* () {
|
|
85
|
+
const bus = yield* Service76;
|
|
86
86
|
const forms = yield* Cache.makeWith(() => Effect.die(new Error("Form cache must be used via set/getSuccess, never get")), {
|
|
87
87
|
capacity: Number.MAX_SAFE_INTEGER,
|
|
88
88
|
timeToLive: (exit) => Exit.isSuccess(exit) && exit.value.state.status === "pending" ? Duration.infinity : RETENTION
|
|
89
89
|
});
|
|
90
|
-
const requireEntry = Effect.fn("Form.requireEntry")((id) => Cache.getSuccess(forms, id).pipe(Effect.flatMap((entry) => Effect.fromOption(entry, () => new
|
|
90
|
+
const requireEntry = Effect.fn("Form.requireEntry")((id) => Cache.getSuccess(forms, id).pipe(Effect.flatMap((entry) => Effect.fromOption(entry, () => new NotFoundError7({ id })))));
|
|
91
91
|
const create = Effect.fn("Form.create")((input) => Effect.uninterruptible(Effect.gen(function* () {
|
|
92
|
-
const id = input.id ??
|
|
92
|
+
const id = input.id ?? ID14.create();
|
|
93
93
|
const existing = yield* Cache.getSuccess(forms, id);
|
|
94
94
|
if (Option.isSome(existing))
|
|
95
95
|
return yield* new AlreadyExistsError2({ id });
|
|
@@ -153,9 +153,9 @@ var layer21 = Layer.effect(Service64, Effect.gen(function* () {
|
|
|
153
153
|
yield* Deferred.succeed(entry.deferred, next);
|
|
154
154
|
})));
|
|
155
155
|
yield* Effect.addFinalizer(() => Cache.values(forms).pipe(Effect.flatMap((entries) => Effect.forEach(Array.from(entries).filter((entry) => entry.state.status === "pending"), (entry) => cancel(entry.form.id).pipe(Effect.ignore), { discard: true }))));
|
|
156
|
-
return
|
|
156
|
+
return Service66.of({ create, ask, get, list, state, reply, cancel });
|
|
157
157
|
}));
|
|
158
|
-
var
|
|
158
|
+
var node70 = makeLocationNode({ service: Service66, layer: layer23, deps: [node81] });
|
|
159
159
|
function validateAnswer2(form, answer) {
|
|
160
160
|
const fields = new Map(form.map((field) => [field.key, field]));
|
|
161
161
|
for (const key of Object.keys(answer)) {
|
|
@@ -307,4 +307,4 @@ function isDateTime(value) {
|
|
|
307
307
|
return !Number.isNaN(new Date(value).getTime());
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
-
export {
|
|
310
|
+
export { ID14, Info26, Field2, Fields2, When2, State3, Answer2, Reply3, NotFoundError7, AlreadySettledError2, AlreadyExistsError2, InvalidAnswerError2, InvalidFormError2, Service66, layer23, node70, validateAnswer2, validateFields2, exports_form, Event18 };
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useragent2
|
|
3
|
-
} from "./file-
|
|
3
|
+
} from "./file-1vkgnbk5.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./file-
|
|
5
|
+
Service76
|
|
6
|
+
} from "./file-7qhv6080.js";
|
|
7
7
|
import {
|
|
8
8
|
OAuth3,
|
|
9
|
-
|
|
10
|
-
} from "./file-
|
|
9
|
+
Event17
|
|
10
|
+
} from "./file-3wwk5jwz.js";
|
|
11
11
|
import {
|
|
12
|
-
|
|
12
|
+
ID12,
|
|
13
13
|
MethodID2
|
|
14
|
-
} from "./file-
|
|
14
|
+
} from "./file-7d289b1g.js";
|
|
15
15
|
import {
|
|
16
16
|
success2,
|
|
17
17
|
error2
|
|
18
18
|
} from "./file-pjvnvgmy.js";
|
|
19
19
|
import {
|
|
20
|
-
|
|
20
|
+
ID18,
|
|
21
21
|
mergeOverlay2,
|
|
22
22
|
mergeHeaders2
|
|
23
|
-
} from "./file-
|
|
23
|
+
} from "./file-52bfwkce.js";
|
|
24
24
|
|
|
25
25
|
// src/plugin/provider/openai.ts
|
|
26
26
|
import { define } from "@opencode-ai/plugin/effect/plugin";
|
|
@@ -44,7 +44,7 @@ var Claims = Schema.fromJsonString(Schema.Struct({
|
|
|
44
44
|
}));
|
|
45
45
|
var decodeClaims = Schema.decodeUnknownOption(Claims);
|
|
46
46
|
var browser = (app) => ({
|
|
47
|
-
integrationID:
|
|
47
|
+
integrationID: ID12.make("openai"),
|
|
48
48
|
method: {
|
|
49
49
|
id: browserMethodID,
|
|
50
50
|
type: "oauth",
|
|
@@ -117,7 +117,7 @@ function addressInUse(error) {
|
|
|
117
117
|
return "code" in error && error.code === "EADDRINUSE";
|
|
118
118
|
}
|
|
119
119
|
var headless = (app) => ({
|
|
120
|
-
integrationID:
|
|
120
|
+
integrationID: ID12.make("openai"),
|
|
121
121
|
method: {
|
|
122
122
|
id: headlessMethodID,
|
|
123
123
|
type: "oauth",
|
|
@@ -159,10 +159,10 @@ var headless = (app) => ({
|
|
|
159
159
|
}),
|
|
160
160
|
refresh: (value) => refresh(headlessMethodID, value, app)
|
|
161
161
|
});
|
|
162
|
-
var
|
|
162
|
+
var OpenAIPlugin2 = define({
|
|
163
163
|
id: "opencode.provider.openai",
|
|
164
164
|
effect: Effect.fn(function* (ctx) {
|
|
165
|
-
const bus = yield*
|
|
165
|
+
const bus = yield* Service76;
|
|
166
166
|
const loading = Semaphore.makeUnsafe(1);
|
|
167
167
|
let chatgpt;
|
|
168
168
|
const load = Effect.fn("OpenAIPlugin.load")(function* () {
|
|
@@ -178,7 +178,7 @@ var OpenAIPlugin3 = define({
|
|
|
178
178
|
});
|
|
179
179
|
yield* load();
|
|
180
180
|
yield* ctx.catalog.transform((evt) => {
|
|
181
|
-
const item = evt.provider.get(
|
|
181
|
+
const item = evt.provider.get(ID18.openai);
|
|
182
182
|
if (!item)
|
|
183
183
|
return;
|
|
184
184
|
for (const model of item.models.values()) {
|
|
@@ -220,9 +220,9 @@ var OpenAIPlugin3 = define({
|
|
|
220
220
|
evt.baseURL = codexBaseURL;
|
|
221
221
|
evt.headers.originator = "opencode";
|
|
222
222
|
evt.headers["session-id"] = evt.sessionID;
|
|
223
|
-
}), { providerID:
|
|
223
|
+
}), { providerID: ID18.openai });
|
|
224
224
|
const refresh = () => loading.withPermit(load().pipe(Effect.andThen(ctx.catalog.reload())));
|
|
225
|
-
yield* bus.subscribe(
|
|
225
|
+
yield* bus.subscribe(Event17.Switched).pipe(Stream.filter((event) => event.data.integrationID === ID12.make("openai")), Stream.runForEach(refresh), Effect.forkScoped({ startImmediately: true }));
|
|
226
226
|
})
|
|
227
227
|
});
|
|
228
228
|
function headers(contentType, app) {
|
|
@@ -313,4 +313,4 @@ function claim(token) {
|
|
|
313
313
|
return claims.chatgpt_account_id ?? claims["https://api.openai.com/auth"]?.chatgpt_account_id ?? claims.organizations?.[0]?.id;
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
-
export {
|
|
316
|
+
export { OpenAIPlugin2 };
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
render3,
|
|
3
|
+
update3,
|
|
4
|
+
make15,
|
|
5
5
|
exports_instructions5
|
|
6
|
-
} from "../chunks/file-
|
|
6
|
+
} from "../chunks/file-vgjr9pam.js";
|
|
7
7
|
import"../chunks/file-gdvy8fx6.js";
|
|
8
|
-
import"../chunks/file-
|
|
8
|
+
import"../chunks/file-97f5v037.js";
|
|
9
9
|
export {
|
|
10
10
|
exports_instructions5 as CodeModeInstructions,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
make15 as make,
|
|
12
|
+
render3 as render,
|
|
13
|
+
update3 as update
|
|
14
14
|
};
|