@opencode/core 2.0.25 → 2.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. package/dist/account/sql.js +1 -1
  2. package/dist/agent.js +83 -82
  3. package/dist/aisdk-native.js +91 -90
  4. package/dist/aisdk.js +96 -95
  5. package/dist/app.js +5 -5
  6. package/dist/bus.js +75 -74
  7. package/dist/chunks/{variant-xa9kyh0s.js → filesystem-05zcap53.js} +11 -11
  8. package/dist/chunks/{variant-3g8j9he4.js → filesystem-075nkgpd.js} +1 -1
  9. package/dist/chunks/{variant-bgs9y14h.js → filesystem-0dfv01xh.js} +5 -5
  10. package/dist/chunks/{variant-qgn6gcr1.js → filesystem-0jwsre1p.js} +5 -5
  11. package/dist/chunks/{variant-8aa1p7b5.js → filesystem-0jz028se.js} +24 -24
  12. package/dist/chunks/{variant-fn04q5tb.js → filesystem-0nqtnax1.js} +22 -22
  13. package/dist/chunks/{variant-0paq2nw3.js → filesystem-0paq2nw3.js} +1 -1
  14. package/dist/chunks/{variant-gm3ga81k.js → filesystem-0rj8zrsn.js} +18 -18
  15. package/dist/chunks/{variant-0vbcp93d.js → filesystem-0vbcp93d.js} +2 -2
  16. package/dist/chunks/{variant-nv777kha.js → filesystem-17ahada2.js} +32 -32
  17. package/dist/chunks/{variant-rhraev7y.js → filesystem-1acjjqhc.js} +4 -4
  18. package/dist/chunks/{variant-1ygqh575.js → filesystem-1ffvrpkg.js} +7 -7
  19. package/dist/chunks/{variant-pppey5qj.js → filesystem-1k1hwgxp.js} +40 -32
  20. package/dist/chunks/{variant-z1fxcg55.js → filesystem-1pdq80h1.js} +5 -5
  21. package/dist/chunks/{variant-p83wwthj.js → filesystem-277mr6gh.js} +7 -4
  22. package/dist/chunks/{variant-wj82z3q3.js → filesystem-28b6phvf.js} +5 -5
  23. package/dist/chunks/{variant-7nbd6e42.js → filesystem-28mv0yws.js} +18 -18
  24. package/dist/chunks/{variant-fxgpk5d8.js → filesystem-2bv980vf.js} +2 -2
  25. package/dist/chunks/{variant-74d5t6nd.js → filesystem-2q2afj7r.js} +26 -26
  26. package/dist/chunks/{variant-1h07amyp.js → filesystem-2r4m1mbx.js} +31 -31
  27. package/dist/chunks/filesystem-2r93mh4x.js +804 -0
  28. package/dist/chunks/{variant-5t3nmthw.js → filesystem-2vvh33eb.js} +3 -3
  29. package/dist/chunks/{variant-6jjgb46x.js → filesystem-30hpp6bd.js} +43 -35
  30. package/dist/chunks/{variant-xkntkrq7.js → filesystem-31xfzrxg.js} +8 -7
  31. package/dist/chunks/{variant-xa33mv3d.js → filesystem-3c7k6cm5.js} +7 -7
  32. package/dist/chunks/{variant-m8ke4caa.js → filesystem-3dreg0vn.js} +11 -11
  33. package/dist/chunks/{variant-3fc6dm20.js → filesystem-3fc6dm20.js} +1 -1
  34. package/dist/chunks/{variant-bg4pcaf0.js → filesystem-3fm12cj0.js} +10 -19
  35. package/dist/chunks/{variant-3hepkmqq.js → filesystem-3hepkmqq.js} +1 -1
  36. package/dist/chunks/{variant-b6gygkdw.js → filesystem-3hwn7j4h.js} +5 -5
  37. package/dist/chunks/{variant-3smtnn6g.js → filesystem-3smtnn6g.js} +1 -1
  38. package/dist/chunks/{variant-3tvqynh2.js → filesystem-3tvqynh2.js} +1 -1
  39. package/dist/chunks/{variant-n5mbdfqn.js → filesystem-3xq304at.js} +24 -24
  40. package/dist/chunks/{variant-7sbksatv.js → filesystem-3y40vn7b.js} +1 -1
  41. package/dist/chunks/{variant-3zsf4n22.js → filesystem-3zsf4n22.js} +1 -1
  42. package/dist/chunks/{variant-c4y3ge1t.js → filesystem-40hy4nm0.js} +7 -9
  43. package/dist/chunks/{variant-29qym6xz.js → filesystem-41czef58.js} +4 -4
  44. package/dist/chunks/{variant-02yyzjed.js → filesystem-42nthewb.js} +14 -14
  45. package/dist/chunks/{variant-2rehhz5t.js → filesystem-43fay8tn.js} +11 -11
  46. package/dist/chunks/{variant-1x2vtrrc.js → filesystem-45gnhb3v.js} +27 -27
  47. package/dist/chunks/filesystem-45th5jwr.js +18 -0
  48. package/dist/chunks/{variant-qy4vpyeb.js → filesystem-4dd6559a.js} +33 -33
  49. package/dist/chunks/{variant-4ts7tf6z.js → filesystem-4ts7tf6z.js} +2 -2
  50. package/dist/chunks/{variant-gs3s1a1g.js → filesystem-4w5f3qm5.js} +8 -8
  51. package/dist/chunks/{variant-qhpxdxn6.js → filesystem-4yh5fkek.js} +38 -38
  52. package/dist/chunks/{variant-sjsrxvhe.js → filesystem-517r2k0v.js} +12 -12
  53. package/dist/chunks/{variant-mgbygx5e.js → filesystem-52fe2n6x.js} +8 -8
  54. package/dist/chunks/{variant-pz8vp5s8.js → filesystem-52hym6es.js} +41 -41
  55. package/dist/chunks/{variant-54ma36ye.js → filesystem-54ma36ye.js} +1 -1
  56. package/dist/chunks/{variant-my4zabxr.js → filesystem-58072hz9.js} +3 -3
  57. package/dist/chunks/{variant-13ffgj4a.js → filesystem-58rgv5ce.js} +32 -32
  58. package/dist/chunks/{variant-5m9w47nd.js → filesystem-5m9w47nd.js} +1 -1
  59. package/dist/chunks/{variant-g0445xdp.js → filesystem-5yzzbxa7.js} +8 -8
  60. package/dist/chunks/{variant-4p4e40p5.js → filesystem-628cnxdp.js} +25 -25
  61. package/dist/chunks/{variant-gxzxndj0.js → filesystem-6ea2fwcg.js} +6 -6
  62. package/dist/chunks/{variant-t6vsspdg.js → filesystem-6hh8tjw2.js} +7 -7
  63. package/dist/chunks/{variant-prq7hedt.js → filesystem-6hjx5zpb.js} +9 -9
  64. package/dist/chunks/{variant-qjeq5gt4.js → filesystem-6p6bhjzq.js} +13 -13
  65. package/dist/chunks/{variant-py3kkmfq.js → filesystem-6pc27hjz.js} +6 -6
  66. package/dist/chunks/{variant-7hqrfg83.js → filesystem-6s1gmk25.js} +22 -22
  67. package/dist/chunks/{variant-6xb47vfp.js → filesystem-6xb47vfp.js} +1 -1
  68. package/dist/chunks/{variant-qdfmac3b.js → filesystem-6yajptbt.js} +1 -1
  69. package/dist/chunks/{variant-6knrp48h.js → filesystem-75czp452.js} +11 -11
  70. package/dist/chunks/{variant-27cddewx.js → filesystem-75yaxqej.js} +28 -28
  71. package/dist/chunks/{variant-7bmhse3q.js → filesystem-7bmhse3q.js} +1 -1
  72. package/dist/chunks/{variant-xjhy8ajq.js → filesystem-7nranytg.js} +22 -22
  73. package/dist/chunks/{variant-p1knbw1p.js → filesystem-7qtbp6f0.js} +17 -17
  74. package/dist/chunks/{variant-2nbt55tc.js → filesystem-7t7k8w74.js} +9 -9
  75. package/dist/chunks/{variant-n49rxvzx.js → filesystem-7wwt250p.js} +93 -93
  76. package/dist/chunks/{variant-84txncab.js → filesystem-84txncab.js} +1 -1
  77. package/dist/chunks/{variant-6adhvgr3.js → filesystem-85yr590m.js} +36 -35
  78. package/dist/chunks/{variant-fzjbfm8r.js → filesystem-8679j8d8.js} +13 -13
  79. package/dist/chunks/{variant-tcezcvh9.js → filesystem-89znhe33.js} +4 -4
  80. package/dist/chunks/{variant-8m6m0r52.js → filesystem-8m6m0r52.js} +1 -1
  81. package/dist/chunks/{variant-1fhrtjm6.js → filesystem-8p91w73h.js} +10 -10
  82. package/dist/chunks/{variant-dr8qfpz2.js → filesystem-8r0rjxx3.js} +58 -58
  83. package/dist/chunks/{variant-cf0t0sq2.js → filesystem-8w54sq4a.js} +25 -25
  84. package/dist/chunks/{variant-qq77mc7s.js → filesystem-8wps0r52.js} +16 -16
  85. package/dist/chunks/{variant-x22hsb2q.js → filesystem-8y0srtbm.js} +42 -42
  86. package/dist/chunks/{variant-qxjc9qry.js → filesystem-91qna3x0.js} +3 -3
  87. package/dist/chunks/{variant-vdva6mjj.js → filesystem-92hybt7t.js} +26 -13
  88. package/dist/chunks/filesystem-97aeaand.js +31 -0
  89. package/dist/chunks/{variant-fhz5gfgy.js → filesystem-9bbnj2zh.js} +5 -5
  90. package/dist/chunks/{variant-wncc9x2v.js → filesystem-9zg8t2tr.js} +46 -37
  91. package/dist/chunks/{variant-1gpb38yh.js → filesystem-9zhh23v8.js} +3 -3
  92. package/dist/chunks/{variant-452vf9ez.js → filesystem-a1fpssew.js} +52 -48
  93. package/dist/chunks/{variant-amhyrjtc.js → filesystem-a7x960be.js} +15 -15
  94. package/dist/chunks/{variant-4m7gr2sz.js → filesystem-a812m1sc.js} +10 -10
  95. package/dist/chunks/{variant-eahhehpg.js → filesystem-a89e0tac.js} +4 -4
  96. package/dist/chunks/{variant-addxnjmp.js → filesystem-addxnjmp.js} +1 -1
  97. package/dist/chunks/{variant-g9v6bhk7.js → filesystem-ae5sdhnp.js} +30 -30
  98. package/dist/chunks/{variant-x6g6krdm.js → filesystem-amjhxwh3.js} +4 -4
  99. package/dist/chunks/{variant-r9jvjj2n.js → filesystem-avya17qh.js} +29 -24
  100. package/dist/chunks/{variant-b3f8fkhc.js → filesystem-b3f8fkhc.js} +2 -2
  101. package/dist/chunks/{variant-0bwnrbmb.js → filesystem-b674v2dg.js} +5 -5
  102. package/dist/chunks/{variant-5nzezdf7.js → filesystem-b6pj8f6d.js} +16 -16
  103. package/dist/chunks/{variant-vtt0yr3x.js → filesystem-bddt2pqj.js} +12 -12
  104. package/dist/chunks/{variant-30krspkn.js → filesystem-bhzg07mw.js} +95 -6
  105. package/dist/chunks/filesystem-bw78ga2c.js +13 -0
  106. package/dist/chunks/{variant-9z2y94hd.js → filesystem-bwds47ca.js} +3 -3
  107. package/dist/chunks/{variant-9e5bzkjp.js → filesystem-c1fqxshp.js} +3 -3
  108. package/dist/chunks/{variant-n1n192bv.js → filesystem-c35597j6.js} +4 -4
  109. package/dist/chunks/{variant-g2w01a3j.js → filesystem-cd22zj3n.js} +16 -16
  110. package/dist/chunks/{variant-8pmm23xh.js → filesystem-cfrzcmt6.js} +32 -32
  111. package/dist/chunks/{variant-1j2s48r7.js → filesystem-chn727mr.js} +8 -8
  112. package/dist/chunks/{variant-18zb0skh.js → filesystem-cjgcse4q.js} +3 -3
  113. package/dist/chunks/{variant-61btxmby.js → filesystem-cmdzq1er.js} +30 -30
  114. package/dist/chunks/{variant-3hfcgw97.js → filesystem-cp3h7zv6.js} +12 -12
  115. package/dist/chunks/{variant-qmqydgm0.js → filesystem-cztcbjsk.js} +48 -47
  116. package/dist/chunks/{variant-yyet1bp6.js → filesystem-d6jv500s.js} +5 -5
  117. package/dist/chunks/{variant-nyh253sr.js → filesystem-d9xsbmzv.js} +11 -11
  118. package/dist/chunks/{variant-xa75nvv1.js → filesystem-ddg7egp8.js} +14 -14
  119. package/dist/chunks/{variant-pjgg3r7a.js → filesystem-dmn46mqv.js} +24 -24
  120. package/dist/chunks/{variant-xfkkasph.js → filesystem-drwq78ky.js} +4 -4
  121. package/dist/chunks/{variant-4s3kxd3m.js → filesystem-dwatz751.js} +4 -4
  122. package/dist/chunks/{variant-93ygb5af.js → filesystem-dzse07y5.js} +6 -6
  123. package/dist/chunks/{variant-3bz51e45.js → filesystem-e6f2cxsr.js} +16 -16
  124. package/dist/chunks/{variant-2r25bgdf.js → filesystem-e77w7m4c.js} +15 -15
  125. package/dist/chunks/{variant-nm57fktp.js → filesystem-e850ppb0.js} +1 -1
  126. package/dist/chunks/{variant-ey895da0.js → filesystem-eaednpsc.js} +19 -19
  127. package/dist/chunks/{variant-h1qkrmwx.js → filesystem-edp2jp4p.js} +4 -4
  128. package/dist/chunks/{variant-1dazxqgg.js → filesystem-eej6y6fw.js} +6 -6
  129. package/dist/chunks/{variant-ef5x83kb.js → filesystem-ef5x83kb.js} +1 -1
  130. package/dist/chunks/{variant-k57jac8p.js → filesystem-egftk3gc.js} +11 -11
  131. package/dist/chunks/{variant-g1w795vw.js → filesystem-fs4v6yja.js} +11 -11
  132. package/dist/chunks/{variant-qz0t4qm7.js → filesystem-g18ezh2c.js} +24 -24
  133. package/dist/chunks/filesystem-g4vk7v1j.js +253 -0
  134. package/dist/chunks/{variant-t968jqya.js → filesystem-g6kk69s6.js} +9 -9
  135. package/dist/chunks/{variant-vrrq7v3g.js → filesystem-g6yfr6ja.js} +5 -5
  136. package/dist/chunks/{variant-rc8pxfxs.js → filesystem-g8xm47b4.js} +11 -11
  137. package/dist/chunks/{variant-sza3fptc.js → filesystem-gacw69ge.js} +7 -7
  138. package/dist/chunks/{variant-k98qre1b.js → filesystem-gbtkprqj.js} +47 -47
  139. package/dist/chunks/{variant-drnf6xwf.js → filesystem-gccjnz6h.js} +2 -2
  140. package/dist/chunks/{variant-gd4qta3r.js → filesystem-gd4qta3r.js} +1 -1
  141. package/dist/chunks/{variant-8a6ws7jr.js → filesystem-gdq97084.js} +10 -10
  142. package/dist/chunks/filesystem-ge3tf0hw.js +94 -0
  143. package/dist/chunks/{variant-vhqj0s9d.js → filesystem-gjacmpd0.js} +9 -9
  144. package/dist/chunks/{variant-8d7r5vzw.js → filesystem-gk8qb678.js} +4 -4
  145. package/dist/chunks/{variant-ze98vkjw.js → filesystem-gp94me86.js} +10 -10
  146. package/dist/chunks/{variant-06r90ppk.js → filesystem-gteqr3kb.js} +11 -11
  147. package/dist/chunks/{variant-yj12ce45.js → filesystem-gty1xwv8.js} +26 -26
  148. package/dist/chunks/{variant-397njdte.js → filesystem-gvc0m829.js} +24 -24
  149. package/dist/chunks/{variant-8hg3mrb3.js → filesystem-h0s8229g.js} +14 -14
  150. package/dist/chunks/{variant-ytxvdrv4.js → filesystem-h18kbg2g.js} +25 -25
  151. package/dist/chunks/{variant-zy36ej5j.js → filesystem-h3s3f80v.js} +5 -5
  152. package/dist/chunks/{variant-h6vf3j39.js → filesystem-h6vf3j39.js} +1 -1
  153. package/dist/chunks/{variant-y7fv8ve9.js → filesystem-hbmg3jd1.js} +71 -71
  154. package/dist/chunks/{variant-qdr7jx6m.js → filesystem-hdckhky9.js} +10 -10
  155. package/dist/chunks/{variant-tcbv57ja.js → filesystem-hehj8e2f.js} +17 -17
  156. package/dist/chunks/{variant-fgsd6912.js → filesystem-hfx4ttpe.js} +12 -12
  157. package/dist/chunks/{variant-2a5m3afh.js → filesystem-hgz4x7wa.js} +4 -4
  158. package/dist/chunks/{variant-z5qfcjmc.js → filesystem-hh0yy80h.js} +5 -5
  159. package/dist/chunks/{variant-gjasn01h.js → filesystem-hhj1gqex.js} +4 -4
  160. package/dist/chunks/filesystem-hq3c8me3.js +22 -0
  161. package/dist/chunks/{variant-j56e64zr.js → filesystem-j56e64zr.js} +1 -1
  162. package/dist/chunks/{variant-v3etbtgk.js → filesystem-jcr0a5xm.js} +40 -40
  163. package/dist/chunks/{variant-7x1g6g7e.js → filesystem-jd655njr.js} +27 -27
  164. package/dist/chunks/{variant-5hxx4pyd.js → filesystem-jex0hdh0.js} +29 -29
  165. package/dist/chunks/{variant-06ednycw.js → filesystem-jh2bfv56.js} +20 -20
  166. package/dist/chunks/{variant-yt7zt18h.js → filesystem-jnzzg47p.js} +22 -22
  167. package/dist/chunks/filesystem-jq5272j9.js +170 -0
  168. package/dist/chunks/{variant-s57remap.js → filesystem-jtpxbk3r.js} +93 -93
  169. package/dist/chunks/{variant-y8cydn3q.js → filesystem-jze0r7bz.js} +3 -8
  170. package/dist/chunks/{variant-f73rjn58.js → filesystem-k76fn4kw.js} +4 -4
  171. package/dist/chunks/{variant-sxzvmjd7.js → filesystem-kc69xce9.js} +28 -16
  172. package/dist/chunks/{variant-1a37t69z.js → filesystem-kfxykwst.js} +10 -10
  173. package/dist/chunks/{variant-s0b7t9fd.js → filesystem-kqx1b4hy.js} +4 -4
  174. package/dist/chunks/{variant-h97ec9bp.js → filesystem-krjgrvpb.js} +8 -8
  175. package/dist/chunks/filesystem-m18g726c.js +13 -0
  176. package/dist/chunks/{variant-m9w0rfyh.js → filesystem-m9w0rfyh.js} +1 -1
  177. package/dist/chunks/{variant-zm31y1th.js → filesystem-ma9a1mz6.js} +14 -7
  178. package/dist/chunks/{variant-d5qg661p.js → filesystem-mh1qw9wf.js} +14 -14
  179. package/dist/chunks/{variant-v8gdyxxj.js → filesystem-mm2s9j4z.js} +8 -8
  180. package/dist/chunks/{variant-qez5g771.js → filesystem-mnav64s8.js} +13 -13
  181. package/dist/chunks/{variant-yt8edf6v.js → filesystem-mqbwmym3.js} +13 -13
  182. package/dist/chunks/{variant-bhkpa1rg.js → filesystem-n59f5cqe.js} +27 -27
  183. package/dist/chunks/{variant-5ygzbsd1.js → filesystem-n61013np.js} +16 -18
  184. package/dist/chunks/{variant-t4q1mmep.js → filesystem-nbhbhab9.js} +21 -20
  185. package/dist/chunks/{variant-4acq55hh.js → filesystem-ndz7w8hx.js} +22 -22
  186. package/dist/chunks/{variant-rhb3b3rg.js → filesystem-njatc343.js} +16 -16
  187. package/dist/chunks/{variant-wmhvad8c.js → filesystem-nmqm2vvz.js} +18 -18
  188. package/dist/chunks/{variant-9sk57pab.js → filesystem-nnbqx04f.js} +7 -7
  189. package/dist/chunks/{variant-nr7nt1j1.js → filesystem-nr11xpps.js} +26 -26
  190. package/dist/chunks/filesystem-nvjf5yyf.js +513 -0
  191. package/dist/chunks/{variant-dfdje5vc.js → filesystem-p03r7pt3.js} +10 -10
  192. package/dist/chunks/{variant-w3fw562n.js → filesystem-p4njbyer.js} +11 -11
  193. package/dist/chunks/{variant-pjvnvgmy.js → filesystem-pjvnvgmy.js} +1 -1
  194. package/dist/chunks/{variant-pknna89w.js → filesystem-pknna89w.js} +1 -1
  195. package/dist/chunks/{variant-34c7v6d4.js → filesystem-pkyv6v7h.js} +1 -0
  196. package/dist/chunks/{variant-nvwwg556.js → filesystem-psy0m90e.js} +16 -16
  197. package/dist/chunks/{variant-3w5fmr99.js → filesystem-pyv0edze.js} +8 -5
  198. package/dist/chunks/{variant-q0xm7vwc.js → filesystem-q0xm7vwc.js} +2 -2
  199. package/dist/chunks/{variant-1m9c4w4n.js → filesystem-q3kzbh51.js} +50 -50
  200. package/dist/chunks/{variant-2hpcj340.js → filesystem-qf68ybps.js} +22 -22
  201. package/dist/chunks/{variant-05a2ta09.js → filesystem-qjke1250.js} +61 -40
  202. package/dist/chunks/{variant-79qaa2kf.js → filesystem-qmqgtz8f.js} +9 -9
  203. package/dist/chunks/{variant-4es70h3r.js → filesystem-qmyze75f.js} +21 -21
  204. package/dist/chunks/{variant-qnc92qwc.js → filesystem-qnc92qwc.js} +1 -1
  205. package/dist/chunks/{variant-ra5kesbp.js → filesystem-qptcxqn9.js} +13 -13
  206. package/dist/chunks/{variant-c53d495w.js → filesystem-qr40m89d.js} +22 -22
  207. package/dist/chunks/{variant-qsdy395h.js → filesystem-qsdy395h.js} +1 -1
  208. package/dist/chunks/{variant-7mxeeg2g.js → filesystem-qwwffz8c.js} +13 -13
  209. package/dist/chunks/{variant-gy6j4848.js → filesystem-qz7nybpq.js} +15 -15
  210. package/dist/chunks/{variant-eq1pz5kg.js → filesystem-r2z489rp.js} +4 -4
  211. package/dist/chunks/{variant-wwbgt871.js → filesystem-r69zxgc9.js} +11 -11
  212. package/dist/chunks/{variant-rdw6cm16.js → filesystem-rdw6cm16.js} +1 -1
  213. package/dist/chunks/{variant-71az546q.js → filesystem-rert0e01.js} +2 -2
  214. package/dist/chunks/{variant-qzsdnpce.js → filesystem-rezt1fjs.js} +161 -161
  215. package/dist/chunks/{variant-rhjbct0v.js → filesystem-rhjbct0v.js} +1 -1
  216. package/dist/chunks/{variant-78xwejay.js → filesystem-rhjt4rsm.js} +5 -5
  217. package/dist/chunks/{variant-h2b79v29.js → filesystem-rj3eygr5.js} +3 -2
  218. package/dist/chunks/{variant-ahd542yp.js → filesystem-rzs3gq0x.js} +8 -8
  219. package/dist/chunks/{variant-6hcewhx6.js → filesystem-s3mqqn9k.js} +19 -19
  220. package/dist/chunks/{variant-1dvck2a7.js → filesystem-sa8ekw3f.js} +2 -2
  221. package/dist/chunks/{variant-568a5em1.js → filesystem-sb9d9eyx.js} +7 -7
  222. package/dist/chunks/{variant-fmxe4r4y.js → filesystem-shj64zqm.js} +9 -9
  223. package/dist/chunks/{variant-tafngdt4.js → filesystem-sy62yj56.js} +54 -50
  224. package/dist/chunks/{variant-m3fdjcah.js → filesystem-syv4x271.js} +3 -1
  225. package/dist/chunks/{variant-mrga4y2h.js → filesystem-t63kk2n9.js} +2 -2
  226. package/dist/chunks/{variant-tazgh4e4.js → filesystem-tazgh4e4.js} +1 -1
  227. package/dist/chunks/{variant-9bdjprtk.js → filesystem-tbqraact.js} +40 -40
  228. package/dist/chunks/{variant-tdstcens.js → filesystem-tdstcens.js} +1 -1
  229. package/dist/chunks/{variant-1eg5vsqb.js → filesystem-ted6dyzx.js} +41 -41
  230. package/dist/chunks/{variant-m9r1t6g4.js → filesystem-tjefdw4f.js} +18 -18
  231. package/dist/chunks/{variant-6s97e1y4.js → filesystem-tkfxpf5w.js} +13 -13
  232. package/dist/chunks/{variant-964qn63g.js → filesystem-tn22h724.js} +13 -13
  233. package/dist/chunks/{variant-st28f52c.js → filesystem-tx4skpae.js} +32 -32
  234. package/dist/chunks/{variant-etq0c3wd.js → filesystem-tyytaxap.js} +2 -2
  235. package/dist/chunks/{variant-v0es1rhs.js → filesystem-v0es1rhs.js} +2 -2
  236. package/dist/chunks/{variant-8a6z9e34.js → filesystem-v0t15ase.js} +4 -4
  237. package/dist/chunks/{variant-yrdak7p3.js → filesystem-v15nq2pf.js} +48 -48
  238. package/dist/chunks/{variant-er7m31zp.js → filesystem-v45b1mqa.js} +13 -13
  239. package/dist/chunks/{variant-ants6d3e.js → filesystem-v7gjr6wa.js} +49 -49
  240. package/dist/chunks/{variant-aaet6srn.js → filesystem-v7p4zvkq.js} +9 -9
  241. package/dist/chunks/{variant-wbdz0djz.js → filesystem-v7q8sg4f.js} +10 -10
  242. package/dist/chunks/{variant-68pftax3.js → filesystem-v9rcgtcn.js} +25 -25
  243. package/dist/chunks/{variant-3cmsdac1.js → filesystem-vc6ht4b9.js} +8 -8
  244. package/dist/chunks/{variant-9ya6mhzs.js → filesystem-vdfrtany.js} +16 -16
  245. package/dist/chunks/filesystem-ve7vex1e.js +13 -0
  246. package/dist/chunks/{variant-veqvce7d.js → filesystem-veqvce7d.js} +1 -1
  247. package/dist/chunks/{variant-0jt3mewy.js → filesystem-vfb4jdsz.js} +19 -19
  248. package/dist/chunks/{variant-9rrz4dkr.js → filesystem-vk5e0qsv.js} +11 -11
  249. package/dist/chunks/{variant-a34t0mpe.js → filesystem-vw56mdd2.js} +6 -6
  250. package/dist/chunks/{variant-vzs5sf6e.js → filesystem-vzs5sf6e.js} +1 -1
  251. package/dist/chunks/{variant-w3wsvvr9.js → filesystem-w3wsvvr9.js} +1 -1
  252. package/dist/chunks/{variant-c964e3b9.js → filesystem-w5j8pc94.js} +116 -38
  253. package/dist/chunks/{variant-71238w16.js → filesystem-w7mvh2x4.js} +15 -15
  254. package/dist/chunks/{variant-wd87259q.js → filesystem-wd87259q.js} +1 -1
  255. package/dist/chunks/{variant-77q2g51s.js → filesystem-wfk26c6d.js} +21 -21
  256. package/dist/chunks/{variant-16m3yhsa.js → filesystem-wn2vj619.js} +65 -35
  257. package/dist/chunks/{variant-tczag1pk.js → filesystem-wtsf8rdt.js} +21 -21
  258. package/dist/chunks/{variant-199h81f9.js → filesystem-wxetx7mh.js} +9 -9
  259. package/dist/chunks/{variant-49bhe2dh.js → filesystem-wz02ft3p.js} +13 -13
  260. package/dist/chunks/{variant-1dj608qj.js → filesystem-x2eytdts.js} +35 -35
  261. package/dist/chunks/{variant-mhng4ka2.js → filesystem-x2t9anc7.js} +27 -26
  262. package/dist/chunks/{variant-v5c0sq72.js → filesystem-x5s67ttw.js} +33 -33
  263. package/dist/chunks/{variant-f4emsg9g.js → filesystem-x5w8kc5x.js} +27 -27
  264. package/dist/chunks/{variant-5f219ejc.js → filesystem-x7xmxswz.js} +13 -13
  265. package/dist/chunks/{variant-wja9eyn5.js → filesystem-xpeshqab.js} +7 -14
  266. package/dist/chunks/{variant-nd1pxr6x.js → filesystem-xpk7egw8.js} +6 -6
  267. package/dist/chunks/{variant-neg622f9.js → filesystem-xq0502x8.js} +1 -1
  268. package/dist/chunks/{variant-x12m2wf0.js → filesystem-xtzs4z5v.js} +9 -5
  269. package/dist/chunks/{variant-wr410q8q.js → filesystem-xw91mmsj.js} +7 -7
  270. package/dist/chunks/{variant-qay45eb9.js → filesystem-xx66htzt.js} +37 -37
  271. package/dist/chunks/{variant-xdrba4jw.js → filesystem-y15vpdnr.js} +9 -9
  272. package/dist/chunks/{variant-y1fvbwt7.js → filesystem-y1fvbwt7.js} +1 -1
  273. package/dist/chunks/{variant-7efsjjwe.js → filesystem-y4861qag.js} +53 -53
  274. package/dist/chunks/{variant-dpkg50ah.js → filesystem-y71avatq.js} +4 -4
  275. package/dist/chunks/{variant-1kg0adek.js → filesystem-yj5krche.js} +14 -14
  276. package/dist/chunks/{variant-tyt8argr.js → filesystem-ykhp3ymj.js} +11 -11
  277. package/dist/chunks/{variant-gm5v31zk.js → filesystem-yyy8m62c.js} +20 -20
  278. package/dist/chunks/{variant-z0bkrqjs.js → filesystem-z0bkrqjs.js} +1 -1
  279. package/dist/chunks/{variant-br07cpn8.js → filesystem-z3pazvy2.js} +18 -18
  280. package/dist/chunks/{variant-e8pjc55s.js → filesystem-z5eh1vkz.js} +14 -14
  281. package/dist/chunks/{variant-c4g8b3d2.js → filesystem-zdbbxb0y.js} +6 -7
  282. package/dist/chunks/{variant-45tbjbdt.js → filesystem-zfgdk5x8.js} +43 -43
  283. package/dist/chunks/{variant-ydebc2ey.js → filesystem-zp2jr73m.js} +3 -3
  284. package/dist/chunks/{variant-w8fd2v8c.js → filesystem-zqpzmbkm.js} +13 -13
  285. package/dist/chunks/filesystem-zr1cpq3k.js +26 -0
  286. package/dist/chunks/{variant-zr2ceqn5.js → filesystem-zr2ceqn5.js} +1 -1
  287. package/dist/chunks/{variant-9z8hbw8m.js → filesystem-zsa8nsz8.js} +28 -28
  288. package/dist/chunks/{variant-wfvae1sy.js → filesystem-zxe4qb9c.js} +37 -29
  289. package/dist/chunks/{variant-zxq2ej10.js → filesystem-zxq2ej10.js} +1 -1
  290. package/dist/chunks/{variant-kwzc06gj.js → filesystem-zxy7mtkf.js} +35 -35
  291. package/dist/chunks/{variant-n2b4x48v.js → filesystem-zzbddhc6.js} +11 -11
  292. package/dist/codemode/catalog.js +1 -1
  293. package/dist/codemode/instructions.js +9 -9
  294. package/dist/codemode/tool.js +3 -3
  295. package/dist/codemode/web.js +1 -1
  296. package/dist/command.js +87 -86
  297. package/dist/config/discovery.js +86 -85
  298. package/dist/config/markdown.js +1 -1
  299. package/dist/config/normalize.js +101 -100
  300. package/dist/config/plugin/agent.js +118 -117
  301. package/dist/config/plugin/command.js +207 -206
  302. package/dist/config/plugin/compaction.js +156 -155
  303. package/dist/config/plugin/compatibility.js +136 -135
  304. package/dist/config/plugin/entry-observer.js +1 -1
  305. package/dist/config/plugin/formatter.js +119 -118
  306. package/dist/config/plugin/image.js +118 -117
  307. package/dist/config/plugin/instruction.js +92 -91
  308. package/dist/config/plugin/location-watcher.js +118 -117
  309. package/dist/config/plugin/mcp.js +125 -124
  310. package/dist/config/plugin/policy.js +119 -118
  311. package/dist/config/plugin/provider.js +118 -117
  312. package/dist/config/plugin/reference.js +120 -119
  313. package/dist/config/plugin/shell.js +120 -119
  314. package/dist/config/plugin/skill-file.js +104 -103
  315. package/dist/config/plugin/skill.js +139 -138
  316. package/dist/config/plugin/snapshot.js +118 -117
  317. package/dist/config/plugin/source.js +121 -120
  318. package/dist/config/plugin/tool-output.js +119 -118
  319. package/dist/config/plugin/websearch.js +119 -118
  320. package/dist/config/plugin/worktree.js +120 -119
  321. package/dist/config/variable.js +3 -3
  322. package/dist/config/watch.js +1 -1
  323. package/dist/config.js +121 -120
  324. package/dist/credential/sql.js +2 -2
  325. package/dist/credential.js +85 -84
  326. package/dist/database/database.js +74 -73
  327. package/dist/database/drizzle/effect-sqlite/driver.js +14 -14
  328. package/dist/database/drizzle/effect-sqlite/index.js +14 -14
  329. package/dist/database/drizzle/effect-sqlite/session.js +11 -11
  330. package/dist/database/drizzle/index.js +15 -15
  331. package/dist/database/drizzle/internal/drizzle-utils.js +1 -1
  332. package/dist/database/drizzle/sqlite-core/effect/count.js +1 -1
  333. package/dist/database/drizzle/sqlite-core/effect/db.js +9 -9
  334. package/dist/database/drizzle/sqlite-core/effect/delete.js +2 -2
  335. package/dist/database/drizzle/sqlite-core/effect/index.js +10 -10
  336. package/dist/database/drizzle/sqlite-core/effect/insert.js +2 -2
  337. package/dist/database/drizzle/sqlite-core/effect/query.js +1 -1
  338. package/dist/database/drizzle/sqlite-core/effect/raw.js +1 -1
  339. package/dist/database/drizzle/sqlite-core/effect/select.js +2 -2
  340. package/dist/database/drizzle/sqlite-core/effect/session.js +10 -10
  341. package/dist/database/drizzle/sqlite-core/effect/update.js +2 -2
  342. package/dist/database/drizzle.js +16 -16
  343. package/dist/database/migration/20260127222353_familiar_lady_ursula.js +1 -1
  344. package/dist/database/migration/20260211171708_add_project_commands.js +1 -1
  345. package/dist/database/migration/20260213144116_wakeful_the_professor.js +1 -1
  346. package/dist/database/migration/20260225215848_workspace.js +1 -1
  347. package/dist/database/migration/20260227213759_add_session_workspace_id.js +1 -1
  348. package/dist/database/migration/20260228203230_blue_harpoon.js +1 -1
  349. package/dist/database/migration/20260303231226_add_workspace_fields.js +1 -1
  350. package/dist/database/migration/20260309230000_move_org_to_state.js +1 -1
  351. package/dist/database/migration/20260312043431_session_message_cursor.js +1 -1
  352. package/dist/database/migration/20260323234822_events.js +1 -1
  353. package/dist/database/migration/20260410174513_workspace-name.js +1 -1
  354. package/dist/database/migration/20260413175956_chief_energizer.js +1 -1
  355. package/dist/database/migration/20260423070820_add_icon_url_override.js +1 -1
  356. package/dist/database/migration/20260427172553_slow_nightmare.js +1 -1
  357. package/dist/database/migration/20260428004200_add_session_path.js +1 -1
  358. package/dist/database/migration/20260501142318_next_venus.js +1 -1
  359. package/dist/database/migration/20260504145000_add_sync_owner.js +1 -1
  360. package/dist/database/migration/20260507164347_add_workspace_time.js +1 -1
  361. package/dist/database/migration/20260510033149_session_usage.js +1 -1
  362. package/dist/database/migration/20260511000411_data_migration_state.js +1 -1
  363. package/dist/database/migration/20260511173437_session-metadata.js +1 -1
  364. package/dist/database/migration/20260601010001_normalize_storage_paths.js +1 -1
  365. package/dist/database/migration/20260601202201_amazing_prowler.js +1 -1
  366. package/dist/database/migration/20260602002951_lowly_union_jack.js +1 -1
  367. package/dist/database/migration/20260602182828_add_project_directories.js +1 -1
  368. package/dist/database/migration/20260603001617_session_message_projection_indexes.js +1 -1
  369. package/dist/database/migration/20260603040000_session_message_projection_order.js +1 -1
  370. package/dist/database/migration/20260603141458_session_input_inbox.js +1 -1
  371. package/dist/database/migration/20260603160727_jittery_ezekiel_stane.js +1 -1
  372. package/dist/database/migration/20260604172448_event_sourced_session_input.js +1 -1
  373. package/dist/database/migration/20260605003541_add_session_context_snapshot.js +1 -1
  374. package/dist/database/migration/20260605042240_add_context_epoch_agent.js +1 -1
  375. package/dist/database/migration/20260611035744_credential.js +1 -1
  376. package/dist/database/migration/20260611192811_lush_chimera.js +1 -1
  377. package/dist/database/migration/20260612174303_project_dir_strategy.js +1 -1
  378. package/dist/database/migration/20260622142730_simplify_session_context_epoch.js +1 -1
  379. package/dist/database/migration/20260622170816_reset_v2_session_state.js +1 -1
  380. package/dist/database/migration/20260622202450_simplify_session_input.js +1 -1
  381. package/dist/database/migration/20260804233008_loose_psylocke.js +1 -1
  382. package/dist/database/migration/20260805200742_import_legacy_credentials.js +1 -1
  383. package/dist/database/migration/20260808023530_workspace_domain.js +1 -1
  384. package/dist/database/migration/20260811161259_execution_claim_attempts.js +1 -1
  385. package/dist/database/migration/20260812181746_session_inbox.js +1 -1
  386. package/dist/database/migration/20260812213948_worktree.js +1 -1
  387. package/dist/database/migration/20260819222447_session_viewed_state.js +1 -1
  388. package/dist/database/migration/20260823191254_nullable_workspace_binding.js +1 -1
  389. package/dist/database/migration/20260910120000_clear_v1_session_permission.js +1 -1
  390. package/dist/database/migration/20260923013825_project_time_active.js +1 -1
  391. package/dist/database/migration/20261007190000_azure_cli_external_credential.js +1 -1
  392. package/dist/database/migration/20261010180456_project_time_archived.js +6 -0
  393. package/dist/database/migration.gen.js +51 -50
  394. package/dist/database/migration.js +53 -52
  395. package/dist/database/path.js +2 -2
  396. package/dist/database/schema.gen.js +1 -1
  397. package/dist/database/schema.sql.js +1 -1
  398. package/dist/database/sqlite.bun.js +4 -4
  399. package/dist/database/sqlite.js +1 -1
  400. package/dist/database/sqlite.node.js +4 -4
  401. package/dist/database/sqlite.workerd.js +4 -4
  402. package/dist/database/v1-migration.bun.js +81 -80
  403. package/dist/database/v1-migration.js +1 -1
  404. package/dist/effect/app-node-builder.js +368 -364
  405. package/dist/effect/app-node-platform.js +2 -2
  406. package/dist/effect/keyed-mutex.js +3 -3
  407. package/dist/effect/websocket-constructor.js +1 -1
  408. package/dist/environment/driver.js +1 -1
  409. package/dist/environment/environment.js +95 -94
  410. package/dist/environment/exec-defaults.js +2 -2
  411. package/dist/environment/files.js +3 -3
  412. package/dist/environment/index.js +99 -98
  413. package/dist/environment/local.js +2 -2
  414. package/dist/environment/memory.js +2 -2
  415. package/dist/environment/unavailable.js +6 -21
  416. package/dist/event/sql.js +1 -1
  417. package/dist/event-logger.js +76 -75
  418. package/dist/file-access.js +106 -105
  419. package/dist/file-mutation.js +96 -95
  420. package/dist/file-retention.js +1 -1
  421. package/dist/filesystem/fff.bun.js +2 -2
  422. package/dist/filesystem/fff.js +1 -1
  423. package/dist/filesystem/fff.node.js +2 -2
  424. package/dist/filesystem/fff.workerd.js +2 -2
  425. package/dist/filesystem/location-watcher-policy.js +6 -6
  426. package/dist/filesystem/location-watcher.js +220 -219
  427. package/dist/filesystem/protected.js +3 -3
  428. package/dist/filesystem/search.js +105 -104
  429. package/dist/filesystem/watcher-binding.js +1 -1
  430. package/dist/filesystem/watcher.js +13 -13
  431. package/dist/filesystem.js +108 -107
  432. package/dist/form.js +84 -83
  433. package/dist/formatter/builtins.js +4 -4
  434. package/dist/formatter.js +89 -88
  435. package/dist/generate.js +105 -104
  436. package/dist/git.js +10 -10
  437. package/dist/github-copilot/chat/convert-to-openai-compatible-chat-messages.js +1 -1
  438. package/dist/github-copilot/chat/get-response-metadata.js +1 -1
  439. package/dist/github-copilot/chat/map-openai-compatible-finish-reason.js +1 -1
  440. package/dist/github-copilot/chat/openai-compatible-chat-language-model.js +7 -7
  441. package/dist/github-copilot/chat/openai-compatible-chat-options.js +1 -1
  442. package/dist/github-copilot/chat/openai-compatible-prepare-tools.js +1 -1
  443. package/dist/github-copilot/copilot-provider.js +17 -17
  444. package/dist/github-copilot/models.js +93 -92
  445. package/dist/github-copilot/openai-compatible-error.js +1 -1
  446. package/dist/github-copilot/responses/convert-to-openai-responses-input.js +1 -1
  447. package/dist/github-copilot/responses/map-openai-responses-finish-reason.js +1 -1
  448. package/dist/github-copilot/responses/openai-error.js +1 -1
  449. package/dist/github-copilot/responses/openai-responses-language-model.js +10 -10
  450. package/dist/github-copilot/responses/openai-responses-prepare-tools.js +6 -6
  451. package/dist/github-copilot/responses/tool/code-interpreter.js +1 -1
  452. package/dist/github-copilot/responses/tool/file-search.js +1 -1
  453. package/dist/github-copilot/responses/tool/image-generation.js +1 -1
  454. package/dist/github-copilot/responses/tool/web-search-preview.js +1 -1
  455. package/dist/github-copilot/responses/tool/web-search.js +1 -1
  456. package/dist/image/photon.js +2 -2
  457. package/dist/image.js +6 -6
  458. package/dist/instance/service.js +5 -5
  459. package/dist/instance.js +359 -355
  460. package/dist/instruction-discovery.js +87 -86
  461. package/dist/instructions/builtins.js +89 -88
  462. package/dist/instructions/index.js +1 -1
  463. package/dist/integration/connection.js +1 -1
  464. package/dist/integration.js +79 -78
  465. package/dist/job.js +78 -77
  466. package/dist/kv/sql.js +2 -2
  467. package/dist/kv.js +75 -74
  468. package/dist/location-activity.js +136 -135
  469. package/dist/location-lifecycle.js +109 -108
  470. package/dist/location-service-map.js +88 -87
  471. package/dist/location-services.js +356 -352
  472. package/dist/location.js +87 -86
  473. package/dist/managed-policy.js +8 -8
  474. package/dist/mcp/client.js +93 -92
  475. package/dist/mcp/index.js +111 -110
  476. package/dist/mcp/instructions.js +131 -130
  477. package/dist/mcp/oauth.js +80 -79
  478. package/dist/mcp/stdio.js +92 -91
  479. package/dist/mime.js +1 -1
  480. package/dist/modal/models.js +93 -92
  481. package/dist/model-resolver.js +100 -99
  482. package/dist/model.js +102 -101
  483. package/dist/models-dev.js +109 -108
  484. package/dist/oauth/page.js +1 -1
  485. package/dist/permission/saved.js +82 -81
  486. package/dist/permission/sql.js +5 -5
  487. package/dist/permission.js +111 -110
  488. package/dist/persistent-pty/binary.bun.js +1 -1
  489. package/dist/persistent-pty/daemon.js +1 -1
  490. package/dist/persistent-pty/index.js +88 -87
  491. package/dist/persistent-pty/pty-binding.js +1 -1
  492. package/dist/persistent-pty.js +77 -76
  493. package/dist/plugin/agent.js +76 -75
  494. package/dist/plugin/command.js +102 -101
  495. package/dist/plugin/hooks.js +5 -5
  496. package/dist/plugin/host.js +215 -214
  497. package/dist/plugin/identity.js +3 -3
  498. package/dist/plugin/instance.js +5 -5
  499. package/dist/plugin/internal.js +331 -327
  500. package/dist/plugin/mcp-codemode-defaults.js +3 -3
  501. package/dist/plugin/models-dev.js +98 -97
  502. package/dist/plugin/module.js +117 -116
  503. package/dist/plugin/optimize.js +4 -4
  504. package/dist/plugin/plan.js +104 -103
  505. package/dist/plugin/promise.js +1 -1
  506. package/dist/plugin/provider/amazon-bedrock.js +92 -91
  507. package/dist/plugin/provider/azure.js +119 -118
  508. package/dist/plugin/provider/cerebras.js +1 -1
  509. package/dist/plugin/provider/chatgpt.js +96 -95
  510. package/dist/plugin/provider/cloudflare-ai-gateway.js +115 -114
  511. package/dist/plugin/provider/cloudflare-workers-ai.js +116 -115
  512. package/dist/plugin/provider/cohere.js +2 -2
  513. package/dist/plugin/provider/configured.js +114 -113
  514. package/dist/plugin/provider/databricks.js +6 -0
  515. package/dist/plugin/provider/digitalocean.js +95 -94
  516. package/dist/plugin/provider/dynamic.js +2 -2
  517. package/dist/plugin/provider/factory.js +1 -1
  518. package/dist/plugin/provider/github-copilot.js +97 -96
  519. package/dist/plugin/provider/gitlab.js +95 -94
  520. package/dist/plugin/provider/google-vertex.js +115 -91
  521. package/dist/plugin/provider/kilo.js +1 -1
  522. package/dist/plugin/provider/llmgateway.js +80 -79
  523. package/dist/plugin/provider/lmstudio.js +127 -117
  524. package/dist/plugin/provider/local.js +124 -114
  525. package/dist/plugin/provider/modal.js +94 -93
  526. package/dist/plugin/provider/neon.js +6 -0
  527. package/dist/plugin/provider/nvidia.js +1 -1
  528. package/dist/plugin/provider/ollama.js +125 -115
  529. package/dist/plugin/provider/openai.js +97 -96
  530. package/dist/plugin/provider/opencode.js +99 -98
  531. package/dist/plugin/provider/openrouter.js +93 -92
  532. package/dist/plugin/provider/perplexity.js +2 -2
  533. package/dist/plugin/provider/poe.js +81 -80
  534. package/dist/plugin/provider/prompt-cache-key.js +92 -91
  535. package/dist/plugin/provider/sap-ai-core.js +93 -92
  536. package/dist/plugin/provider/sdk-factory.js +1 -1
  537. package/dist/plugin/provider/snowflake-cortex.js +117 -116
  538. package/dist/plugin/provider/vercel.js +92 -91
  539. package/dist/plugin/provider/vllm.js +127 -117
  540. package/dist/plugin/provider/xai.js +93 -92
  541. package/dist/plugin/provider/zenmux.js +1 -1
  542. package/dist/plugin/provider.js +169 -157
  543. package/dist/plugin/sdk.js +76 -75
  544. package/dist/plugin/service.js +3 -3
  545. package/dist/plugin/skill.js +136 -135
  546. package/dist/plugin/source-directory.js +1 -1
  547. package/dist/plugin/supervisor.js +348 -344
  548. package/dist/plugin/tool-input-repair.js +4 -4
  549. package/dist/plugin/update.js +6 -6
  550. package/dist/plugin/vcs/git.js +88 -87
  551. package/dist/plugin/vcs/hg.js +88 -87
  552. package/dist/plugin/verbosity.js +95 -94
  553. package/dist/plugin/warming.js +116 -115
  554. package/dist/plugin/websearch/exa.js +7 -7
  555. package/dist/plugin/websearch/firecrawl.js +8 -8
  556. package/dist/plugin/websearch/index.js +9 -9
  557. package/dist/plugin/websearch/mcp.js +4 -4
  558. package/dist/plugin/websearch/parallel.js +8 -8
  559. package/dist/plugin/websearch/tavily.js +6 -6
  560. package/dist/plugin/websearch/tinyfish.js +6 -6
  561. package/dist/plugin.js +224 -223
  562. package/dist/project/schema.js +2 -2
  563. package/dist/project/sql.js +4 -4
  564. package/dist/project.js +89 -86
  565. package/dist/provider.js +103 -102
  566. package/dist/pty/protocol.js +1 -1
  567. package/dist/pty/ticket.js +1 -1
  568. package/dist/pty.js +101 -100
  569. package/dist/reference/instructions.js +91 -90
  570. package/dist/reference.js +91 -90
  571. package/dist/repository-cache.js +83 -82
  572. package/dist/repository.js +1 -1
  573. package/dist/ripgrep/binary.js +2 -2
  574. package/dist/ripgrep.js +99 -98
  575. package/dist/rpc.js +88 -87
  576. package/dist/schema.js +1 -1
  577. package/dist/session/affinity.js +1 -1
  578. package/dist/session/command.js +76 -75
  579. package/dist/session/compaction.js +137 -136
  580. package/dist/session/context.js +155 -154
  581. package/dist/session/diff.js +90 -89
  582. package/dist/session/environment.js +5 -5
  583. package/dist/session/error.js +3 -3
  584. package/dist/session/event.js +1 -1
  585. package/dist/session/execution/restart.js +219 -218
  586. package/dist/session/execution.js +127 -126
  587. package/dist/session/generate.js +154 -153
  588. package/dist/session/history.js +13 -13
  589. package/dist/session/inbox.js +88 -87
  590. package/dist/session/info.js +3 -3
  591. package/dist/session/instruction-entry.js +81 -80
  592. package/dist/session/instruction-state.js +8 -8
  593. package/dist/session/instructions.js +99 -98
  594. package/dist/session/message-updater.js +4 -4
  595. package/dist/session/message.js +1 -1
  596. package/dist/session/model-request.js +120 -119
  597. package/dist/session/model-transport.js +7 -7
  598. package/dist/session/move.js +131 -130
  599. package/dist/session/projector.js +88 -87
  600. package/dist/session/prompt.js +107 -106
  601. package/dist/session/provider-context.js +3 -3
  602. package/dist/session/revert.js +92 -91
  603. package/dist/session/run-coordinator.js +3 -3
  604. package/dist/session/runner/index.js +3 -3
  605. package/dist/session/runner/llm.js +226 -225
  606. package/dist/session/runner/max-steps.js +1 -1
  607. package/dist/session/runner/model.js +100 -99
  608. package/dist/session/runner/publish-llm-event.js +115 -114
  609. package/dist/session/runner/retry.js +2 -2
  610. package/dist/session/runner/step.js +127 -126
  611. package/dist/session/runner/to-llm-message.js +2 -2
  612. package/dist/session/schema.js +5 -5
  613. package/dist/session/session.js +166 -165
  614. package/dist/session/shell.js +132 -131
  615. package/dist/session/skill.js +105 -104
  616. package/dist/session/sql.js +5 -5
  617. package/dist/session/stats.js +77 -76
  618. package/dist/session/store.js +87 -86
  619. package/dist/session/subagent-completion.js +1 -1
  620. package/dist/session/subagent-job.js +207 -204
  621. package/dist/session/system-prompt.js +3 -3
  622. package/dist/session/title.js +153 -152
  623. package/dist/session/to-session-error.js +113 -112
  624. package/dist/session/transfer.js +217 -216
  625. package/dist/session/usage.js +1 -1
  626. package/dist/session.js +213 -212
  627. package/dist/shell/parse.js +6 -6
  628. package/dist/shell/result.js +1 -1
  629. package/dist/shell/scan.js +1 -1
  630. package/dist/shell/select.js +15 -15
  631. package/dist/shell.js +134 -133
  632. package/dist/skill/discovery.js +6 -6
  633. package/dist/skill/instructions.js +107 -106
  634. package/dist/skill.js +112 -111
  635. package/dist/snapshot.js +93 -92
  636. package/dist/state.js +1 -1
  637. package/dist/tool/html-markdown.js +1 -1
  638. package/dist/tool/http-body.js +1 -1
  639. package/dist/tool/mcp.js +130 -129
  640. package/dist/tool/plugin/edit.js +120 -119
  641. package/dist/tool/plugin/file-diff.js +1 -1
  642. package/dist/tool/plugin/glob.js +126 -125
  643. package/dist/tool/plugin/grep.js +118 -117
  644. package/dist/tool/plugin/mcp-resource.js +119 -118
  645. package/dist/tool/plugin/opencode.js +116 -4
  646. package/dist/tool/plugin/patch.js +124 -123
  647. package/dist/tool/plugin/question.js +105 -104
  648. package/dist/tool/plugin/read.js +127 -126
  649. package/dist/tool/plugin/shell.js +212 -211
  650. package/dist/tool/plugin/skill.js +113 -112
  651. package/dist/tool/plugin/subagent.js +212 -211
  652. package/dist/tool/plugin/webfetch.js +108 -107
  653. package/dist/tool/plugin/websearch.js +116 -115
  654. package/dist/tool/plugin/write.js +124 -123
  655. package/dist/tool/read-filesystem.js +102 -101
  656. package/dist/tool/runtime.js +1 -1
  657. package/dist/tool-output.js +7 -7
  658. package/dist/tool.js +16 -16
  659. package/dist/types/bus.d.ts +2 -2
  660. package/dist/types/config/plugin/command.d.ts +2 -1
  661. package/dist/types/database/database.d.ts +1 -1
  662. package/dist/types/database/drizzle/effect-sqlite/driver.d.ts +1 -1
  663. package/dist/types/database/drizzle/effect-sqlite/session.d.ts +2 -2
  664. package/dist/types/database/drizzle/sqlite-core/effect/db.d.ts +1 -1
  665. package/dist/types/database/drizzle/sqlite-core/effect/session.d.ts +1 -1
  666. package/dist/types/database/migration/20261010180456_project_time_archived.d.ts +3 -0
  667. package/dist/types/database/sqlite.bun.d.ts +1 -1
  668. package/dist/types/database/sqlite.d.ts +4 -4
  669. package/dist/types/database/sqlite.node.d.ts +1 -1
  670. package/dist/types/database/sqlite.workerd.d.ts +1 -1
  671. package/dist/types/effect/app-node-platform.d.ts +1 -1
  672. package/dist/types/effect/websocket-constructor.d.ts +1 -1
  673. package/dist/types/environment/driver.d.ts +1 -1
  674. package/dist/types/environment/environment.d.ts +1 -1
  675. package/dist/types/environment/exec-defaults.d.ts +1 -1
  676. package/dist/types/environment/local.d.ts +1 -1
  677. package/dist/types/environment/unavailable.d.ts +7 -7
  678. package/dist/types/filesystem.d.ts +2 -1
  679. package/dist/types/git.d.ts +23 -10
  680. package/dist/types/models-dev.d.ts +1 -1
  681. package/dist/types/plugin/internal.d.ts +4 -3
  682. package/dist/types/plugin/provider/azure.d.ts +1 -1
  683. package/dist/types/plugin/provider/chatgpt.d.ts +2 -2
  684. package/dist/types/plugin/provider/databricks.d.ts +1 -0
  685. package/dist/types/plugin/provider/digitalocean.d.ts +1 -1
  686. package/dist/types/plugin/provider/gitlab.d.ts +1 -1
  687. package/dist/types/plugin/provider/google-vertex.d.ts +5 -1
  688. package/dist/types/plugin/provider/lmstudio.d.ts +2 -2
  689. package/dist/types/plugin/provider/local.d.ts +4 -4
  690. package/dist/types/plugin/provider/neon.d.ts +1 -0
  691. package/dist/types/plugin/provider/ollama.d.ts +2 -2
  692. package/dist/types/plugin/provider/opencode.d.ts +1 -1
  693. package/dist/types/plugin/provider/poe.d.ts +1 -1
  694. package/dist/types/plugin/provider/snowflake-cortex.d.ts +1 -1
  695. package/dist/types/plugin/provider/vllm.d.ts +2 -2
  696. package/dist/types/plugin/websearch/exa.d.ts +1 -1
  697. package/dist/types/plugin/websearch/firecrawl.d.ts +1 -1
  698. package/dist/types/plugin/websearch/index.d.ts +1 -1
  699. package/dist/types/plugin/websearch/mcp.d.ts +2 -2
  700. package/dist/types/plugin/websearch/parallel.d.ts +1 -1
  701. package/dist/types/plugin/websearch/tavily.d.ts +1 -1
  702. package/dist/types/plugin/websearch/tinyfish.d.ts +1 -1
  703. package/dist/types/project/schema.d.ts +5 -0
  704. package/dist/types/project/sql.d.ts +16 -0
  705. package/dist/types/project.d.ts +9 -1
  706. package/dist/types/session/diff.d.ts +1 -1
  707. package/dist/types/session/history.d.ts +37 -5
  708. package/dist/types/session/inbox.d.ts +10 -10
  709. package/dist/types/session/instruction-entry.d.ts +2 -2
  710. package/dist/types/session/instruction-state.d.ts +10 -10
  711. package/dist/types/session/model-transport.d.ts +1 -1
  712. package/dist/types/session/runner/publish-llm-event.d.ts +2 -1
  713. package/dist/types/session/subagent-job.d.ts +8 -4
  714. package/dist/types/session/transfer.d.ts +19 -0
  715. package/dist/types/shell/parse.d.ts +2 -0
  716. package/dist/types/tool/http-body.d.ts +2 -2
  717. package/dist/types/tool/plugin/opencode.d.ts +10 -1
  718. package/dist/types/tool/plugin/subagent.d.ts +2 -1
  719. package/dist/types/tool/plugin/webfetch.d.ts +1 -1
  720. package/dist/types/v1/config/agent.d.ts +6 -66
  721. package/dist/types/v1/config/migrate.d.ts +1 -1
  722. package/dist/types/v1/config/permission.d.ts +5 -53
  723. package/dist/types/wellknown.d.ts +1 -1
  724. package/dist/util/error-summary.js +1 -1
  725. package/dist/util/error.js +1 -1
  726. package/dist/util/git-executable.js +2 -2
  727. package/dist/util/iife.js +1 -1
  728. package/dist/util/lazy.js +1 -1
  729. package/dist/util/slug.js +1 -1
  730. package/dist/util/token.js +1 -1
  731. package/dist/util/which.js +1 -1
  732. package/dist/util/wildcard.js +1 -1
  733. package/dist/v1/config/agent.js +5 -5
  734. package/dist/v1/config/command.js +5 -5
  735. package/dist/v1/config/error.js +2 -2
  736. package/dist/v1/config/mcp.js +4 -4
  737. package/dist/v1/config/migrate.js +94 -93
  738. package/dist/v1/config/permission.js +5 -3
  739. package/dist/v1/config/plugin.js +3 -3
  740. package/dist/v1/config/provider-options.js +1 -1
  741. package/dist/v1/config/provider.js +4 -4
  742. package/dist/variant.js +95 -94
  743. package/dist/vcs/patch.js +1 -1
  744. package/dist/vcs.js +91 -90
  745. package/dist/websearch.js +84 -83
  746. package/dist/wellknown/plugin.js +78 -77
  747. package/dist/wellknown.js +83 -82
  748. package/dist/workspace/driver.js +5 -5
  749. package/dist/workspace/sql.js +1 -1
  750. package/dist/workspace.js +86 -83
  751. package/dist/worktree/directory.js +2 -2
  752. package/dist/worktree/git.js +10 -10
  753. package/dist/worktree/sql.js +5 -5
  754. package/dist/worktree/strategies.js +91 -90
  755. package/dist/worktree.js +100 -99
  756. package/package.json +13 -12
  757. package/dist/chunks/variant-9zdhvgqs.js +0 -18
  758. package/dist/chunks/variant-dhyj2516.js +0 -253
  759. package/dist/chunks/variant-e29b4955.js +0 -89
  760. package/dist/chunks/variant-hs1x7rht.js +0 -466
  761. package/dist/chunks/variant-r4e50z9n.js +0 -507
  762. package/dist/chunks/variant-s6bevt7v.js +0 -26
  763. package/dist/chunks/variant-sez5jh81.js +0 -41
  764. package/dist/chunks/variant-vw65f48a.js +0 -69
  765. /package/dist/chunks/{variant-0qkdqm5v.js → filesystem-0qkdqm5v.js} +0 -0
  766. /package/dist/chunks/{variant-0zkw76rk.js → filesystem-0zkw76rk.js} +0 -0
  767. /package/dist/chunks/{variant-17cy0kzp.js → filesystem-17cy0kzp.js} +0 -0
  768. /package/dist/chunks/{variant-1cnp2v09.js → filesystem-1cnp2v09.js} +0 -0
  769. /package/dist/chunks/{variant-1kg9ymc8.js → filesystem-1kg9ymc8.js} +0 -0
  770. /package/dist/chunks/{variant-24dcb14g.js → filesystem-24dcb14g.js} +0 -0
  771. /package/dist/chunks/{variant-2710q6r3.js → filesystem-2710q6r3.js} +0 -0
  772. /package/dist/chunks/{variant-2axfhc9x.js → filesystem-2axfhc9x.js} +0 -0
  773. /package/dist/chunks/{variant-2c3vjs8z.js → filesystem-2c3vjs8z.js} +0 -0
  774. /package/dist/chunks/{variant-359p4xyc.js → filesystem-359p4xyc.js} +0 -0
  775. /package/dist/chunks/{variant-3asan66x.js → filesystem-3asan66x.js} +0 -0
  776. /package/dist/chunks/{variant-3t0ybcrp.js → filesystem-3t0ybcrp.js} +0 -0
  777. /package/dist/chunks/{variant-3v8g72cx.js → filesystem-3v8g72cx.js} +0 -0
  778. /package/dist/chunks/{variant-3wcehsnq.js → filesystem-3wcehsnq.js} +0 -0
  779. /package/dist/chunks/{variant-43n2bw4t.js → filesystem-43n2bw4t.js} +0 -0
  780. /package/dist/chunks/{variant-4knz6hnm.js → filesystem-4knz6hnm.js} +0 -0
  781. /package/dist/chunks/{variant-4vcrnpx2.js → filesystem-4vcrnpx2.js} +0 -0
  782. /package/dist/chunks/{variant-4y7fprxs.js → filesystem-4y7fprxs.js} +0 -0
  783. /package/dist/chunks/{variant-53557ph1.js → filesystem-53557ph1.js} +0 -0
  784. /package/dist/chunks/{variant-550bvhaj.js → filesystem-550bvhaj.js} +0 -0
  785. /package/dist/chunks/{variant-5qd3pb7m.js → filesystem-5qd3pb7m.js} +0 -0
  786. /package/dist/chunks/{variant-6prwharc.js → filesystem-6prwharc.js} +0 -0
  787. /package/dist/chunks/{variant-6q2bdcd1.js → filesystem-6q2bdcd1.js} +0 -0
  788. /package/dist/chunks/{variant-7akdwqpd.js → filesystem-7akdwqpd.js} +0 -0
  789. /package/dist/chunks/{variant-7m9af43g.js → filesystem-7m9af43g.js} +0 -0
  790. /package/dist/chunks/{variant-822emrt2.js → filesystem-822emrt2.js} +0 -0
  791. /package/dist/chunks/{variant-84wd9syh.js → filesystem-84wd9syh.js} +0 -0
  792. /package/dist/chunks/{variant-88xbtdfr.js → filesystem-88xbtdfr.js} +0 -0
  793. /package/dist/chunks/{variant-8n3pysct.js → filesystem-8n3pysct.js} +0 -0
  794. /package/dist/chunks/{variant-8wj87zfr.js → filesystem-8wj87zfr.js} +0 -0
  795. /package/dist/chunks/{variant-9a4afbnw.js → filesystem-9a4afbnw.js} +0 -0
  796. /package/dist/chunks/{variant-9rqn6x4v.js → filesystem-9rqn6x4v.js} +0 -0
  797. /package/dist/chunks/{variant-a6k6eb26.js → filesystem-a6k6eb26.js} +0 -0
  798. /package/dist/chunks/{variant-af5trqkr.js → filesystem-af5trqkr.js} +0 -0
  799. /package/dist/chunks/{variant-afrmfg78.js → filesystem-afrmfg78.js} +0 -0
  800. /package/dist/chunks/{variant-aqzs7mqg.js → filesystem-aqzs7mqg.js} +0 -0
  801. /package/dist/chunks/{variant-atq7p7m5.js → filesystem-atq7p7m5.js} +0 -0
  802. /package/dist/chunks/{variant-bkyjaxrp.js → filesystem-bkyjaxrp.js} +0 -0
  803. /package/dist/chunks/{variant-bmr6ed5q.js → filesystem-bmr6ed5q.js} +0 -0
  804. /package/dist/chunks/{variant-cf4snx6d.js → filesystem-cf4snx6d.js} +0 -0
  805. /package/dist/chunks/{variant-cvy3z8tj.js → filesystem-cvy3z8tj.js} +0 -0
  806. /package/dist/chunks/{variant-d9fn303g.js → filesystem-d9fn303g.js} +0 -0
  807. /package/dist/chunks/{variant-d9jj8t3e.js → filesystem-d9jj8t3e.js} +0 -0
  808. /package/dist/chunks/{variant-dajrwvna.js → filesystem-dajrwvna.js} +0 -0
  809. /package/dist/chunks/{variant-dap0rakb.js → filesystem-dap0rakb.js} +0 -0
  810. /package/dist/chunks/{variant-df08tz66.js → filesystem-df08tz66.js} +0 -0
  811. /package/dist/chunks/{variant-dy18nga0.js → filesystem-dy18nga0.js} +0 -0
  812. /package/dist/chunks/{variant-e5kj55wp.js → filesystem-e5kj55wp.js} +0 -0
  813. /package/dist/chunks/{variant-e73j6tqm.js → filesystem-e73j6tqm.js} +0 -0
  814. /package/dist/chunks/{variant-ec1grn59.js → filesystem-ec1grn59.js} +0 -0
  815. /package/dist/chunks/{variant-eh3zwz77.js → filesystem-eh3zwz77.js} +0 -0
  816. /package/dist/chunks/{variant-emrn6kk6.js → filesystem-emrn6kk6.js} +0 -0
  817. /package/dist/chunks/{variant-f0mxakyp.js → filesystem-f0mxakyp.js} +0 -0
  818. /package/dist/chunks/{variant-f6n9ztr4.js → filesystem-f6n9ztr4.js} +0 -0
  819. /package/dist/chunks/{variant-faypxj3z.js → filesystem-faypxj3z.js} +0 -0
  820. /package/dist/chunks/{variant-fd410y7t.js → filesystem-fd410y7t.js} +0 -0
  821. /package/dist/chunks/{variant-g4wezp1m.js → filesystem-g4wezp1m.js} +0 -0
  822. /package/dist/chunks/{variant-g86h250q.js → filesystem-g86h250q.js} +0 -0
  823. /package/dist/chunks/{variant-gebd4c9n.js → filesystem-gebd4c9n.js} +0 -0
  824. /package/dist/chunks/{variant-gftt206x.js → filesystem-gftt206x.js} +0 -0
  825. /package/dist/chunks/{variant-hk9envan.js → filesystem-hk9envan.js} +0 -0
  826. /package/dist/chunks/{variant-j2ntwpah.js → filesystem-j2ntwpah.js} +0 -0
  827. /package/dist/chunks/{variant-j5zkgpj8.js → filesystem-j5zkgpj8.js} +0 -0
  828. /package/dist/chunks/{variant-jjkms2e6.js → filesystem-jjkms2e6.js} +0 -0
  829. /package/dist/chunks/{variant-jr7sbwjy.js → filesystem-jr7sbwjy.js} +0 -0
  830. /package/dist/chunks/{variant-jwfs4k6c.js → filesystem-jwfs4k6c.js} +0 -0
  831. /package/dist/chunks/{variant-jzg6c2d5.js → filesystem-jzg6c2d5.js} +0 -0
  832. /package/dist/chunks/{variant-mp448xyj.js → filesystem-mp448xyj.js} +0 -0
  833. /package/dist/chunks/{variant-msx8hqn2.js → filesystem-msx8hqn2.js} +0 -0
  834. /package/dist/chunks/{variant-n05xt0ee.js → filesystem-n05xt0ee.js} +0 -0
  835. /package/dist/chunks/{variant-n3j8tn72.js → filesystem-n3j8tn72.js} +0 -0
  836. /package/dist/chunks/{variant-njntx4h6.js → filesystem-njntx4h6.js} +0 -0
  837. /package/dist/chunks/{variant-q3sfg36h.js → filesystem-q3sfg36h.js} +0 -0
  838. /package/dist/chunks/{variant-q74kybfr.js → filesystem-q74kybfr.js} +0 -0
  839. /package/dist/chunks/{variant-qaymkmh1.js → filesystem-qaymkmh1.js} +0 -0
  840. /package/dist/chunks/{variant-qb87gjwd.js → filesystem-qb87gjwd.js} +0 -0
  841. /package/dist/chunks/{variant-qfa1cgps.js → filesystem-qfa1cgps.js} +0 -0
  842. /package/dist/chunks/{variant-qg3g05ea.js → filesystem-qg3g05ea.js} +0 -0
  843. /package/dist/chunks/{variant-qrg20bc0.js → filesystem-qrg20bc0.js} +0 -0
  844. /package/dist/chunks/{variant-rcb2kzg1.js → filesystem-rcb2kzg1.js} +0 -0
  845. /package/dist/chunks/{variant-sdp7kfr6.js → filesystem-sdp7kfr6.js} +0 -0
  846. /package/dist/chunks/{variant-ssg3fenm.js → filesystem-ssg3fenm.js} +0 -0
  847. /package/dist/chunks/{variant-w803qqfp.js → filesystem-w803qqfp.js} +0 -0
  848. /package/dist/chunks/{variant-wc3fc9cn.js → filesystem-wc3fc9cn.js} +0 -0
  849. /package/dist/chunks/{variant-wer8tq1h.js → filesystem-wer8tq1h.js} +0 -0
  850. /package/dist/chunks/{variant-wtztk69x.js → filesystem-wtztk69x.js} +0 -0
  851. /package/dist/chunks/{variant-x0ckcb58.js → filesystem-x0ckcb58.js} +0 -0
  852. /package/dist/chunks/{variant-x61499pn.js → filesystem-x61499pn.js} +0 -0
  853. /package/dist/chunks/{variant-y44na4kk.js → filesystem-y44na4kk.js} +0 -0
  854. /package/dist/chunks/{variant-y8f7s663.js → filesystem-y8f7s663.js} +0 -0
  855. /package/dist/chunks/{variant-ygaqb7jw.js → filesystem-ygaqb7jw.js} +0 -0
  856. /package/dist/chunks/{variant-ym463w8f.js → filesystem-ym463w8f.js} +0 -0
  857. /package/dist/chunks/{variant-z5v4ffb3.js → filesystem-z5v4ffb3.js} +0 -0
  858. /package/dist/chunks/{variant-z9919s4g.js → filesystem-z9919s4g.js} +0 -0
@@ -0,0 +1,804 @@
1
+ import {
2
+ AbsolutePath2,
3
+ RelativePath2
4
+ } from "./filesystem-z5v4ffb3.js";
5
+ import {
6
+ makeUnsafe2
7
+ } from "./filesystem-y71avatq.js";
8
+ import {
9
+ MAX_TOTAL_PATCH_BYTES2,
10
+ emptyPatch2,
11
+ chunksByFile2
12
+ } from "./filesystem-tazgh4e4.js";
13
+ import {
14
+ gitExecutable2
15
+ } from "./filesystem-ef5x83kb.js";
16
+ import {
17
+ __export
18
+ } from "./filesystem-9rqn6x4v.js";
19
+
20
+ // src/git.ts
21
+ var exports_git3 = {};
22
+ __export(exports_git3, {
23
+ Git: () => exports_git3,
24
+ OperationError: () => OperationError3,
25
+ Repository: () => Repository2,
26
+ Service: () => Service83,
27
+ TreeID: () => TreeID2,
28
+ Worktree: () => Worktree2,
29
+ WorktreeError: () => WorktreeError2,
30
+ node: () => node87
31
+ });
32
+ import path from "path";
33
+ import { Cause, Context, Effect, Exit, Layer, Option, Schedule, Schema } from "effect";
34
+ import { ChildProcess } from "effect/process";
35
+ import { FSUtil } from "@opencode/util/fs-util";
36
+ import { AppProcess } from "@opencode/util/process";
37
+ import { makeGlobalNode } from "@opencode/util/effect/app-node";
38
+ class Repository2 extends Schema.Class("Git.Repository")({
39
+ worktree: AbsolutePath2,
40
+ gitDirectory: AbsolutePath2,
41
+ commonDirectory: AbsolutePath2
42
+ }) {
43
+ }
44
+ var snapshotConfigFile = "opencode.gitconfig";
45
+ var snapshotConfigInclude = `[include]
46
+ path = ${snapshotConfigFile}
47
+ `;
48
+ var snapshotConfig = `[core]
49
+ autocrlf = false
50
+ longpaths = true
51
+ symlinks = true
52
+ fsmonitor = false
53
+ untrackedCache = true
54
+ # A split index cannot name its shared file once manyFiles skips index checksums.
55
+ splitIndex = false
56
+ [feature]
57
+ manyFiles = true
58
+ [index]
59
+ version = 4
60
+ threads = true
61
+ `;
62
+ var TreeID2 = Schema.String.pipe(Schema.brand("Git.TreeID"));
63
+ var temporaryIndexPrefix = "index.opencode-";
64
+ var argumentBudget = process.platform === "win32" ? 24000 : 128 * 1024;
65
+ var looseObjectLimit = 2048;
66
+ var packCountLimit = 16;
67
+
68
+ class OperationError3 extends Schema.TaggedError()("Git.OperationError", {
69
+ operation: Schema.Literals([
70
+ "clone",
71
+ "fetch",
72
+ "checkout",
73
+ "reset",
74
+ "create",
75
+ "refresh",
76
+ "write_tree",
77
+ "list_files",
78
+ "diff",
79
+ "restore",
80
+ "pack"
81
+ ]),
82
+ message: Schema.String,
83
+ directory: Schema.optional(AbsolutePath2),
84
+ cause: Schema.optional(Schema.Defect())
85
+ }) {
86
+ }
87
+
88
+ class Worktree2 extends Schema.Class("Git.Worktree")({
89
+ directory: AbsolutePath2,
90
+ kind: Schema.Literals(["main", "linked"])
91
+ }) {
92
+ }
93
+
94
+ class WorktreeError2 extends Schema.TaggedError()("Git.WorktreeError", {
95
+ operation: Schema.Literals(["create", "remove", "list"]),
96
+ message: Schema.String,
97
+ directory: Schema.optional(AbsolutePath2),
98
+ forceRequired: Schema.optional(Schema.Boolean),
99
+ cause: Schema.optional(Schema.Defect())
100
+ }) {
101
+ }
102
+
103
+ class Service83 extends Context.Service()("@opencode/Git") {
104
+ }
105
+ var layer = Layer.effect(Service83, Effect.gen(function* () {
106
+ const fs = yield* FSUtil.Service;
107
+ const proc = yield* AppProcess.Service;
108
+ const locks = makeUnsafe2();
109
+ const locked = (repository, effect) => locks.withLock(repository.gitDirectory)(effect);
110
+ const discover = Effect.fn("Git.repo.discover")(function* (input) {
111
+ const dotgit = yield* fs.up({ targets: [".git"], start: input, mode: "first" }).pipe(Effect.map((matches) => matches[0]), Effect.orElseSucceed(() => {
112
+ return;
113
+ }));
114
+ if (!dotgit)
115
+ return;
116
+ const cwd = path.dirname(dotgit);
117
+ const result = yield* run(cwd, proc, ["rev-parse", "--git-dir", "--git-common-dir", "--show-toplevel"]);
118
+ const [gitDir, commonDir, topLevel] = result.text.split(/\r?\n/);
119
+ if (!gitDir || !commonDir)
120
+ return;
121
+ return new Repository2({
122
+ worktree: AbsolutePath2.make(topLevel ? resolvePath(cwd, topLevel) : cwd),
123
+ gitDirectory: AbsolutePath2.make(resolvePath(cwd, gitDir)),
124
+ commonDirectory: AbsolutePath2.make(resolvePath(cwd, commonDir))
125
+ });
126
+ });
127
+ const remote = Effect.fn("Git.remote.get")(function* (repository, name = "origin") {
128
+ const result = yield* run(repository.worktree, proc, ["remote", "get-url", name]);
129
+ if (result.exitCode !== 0)
130
+ return;
131
+ return result.text.trim() || undefined;
132
+ });
133
+ const roots = Effect.fn("Git.history.rootCommits")(function* (repository) {
134
+ const result = yield* run(repository.worktree, proc, ["rev-list", "--max-parents=0", "HEAD"]);
135
+ if (result.exitCode !== 0)
136
+ return [];
137
+ return result.text.split(`
138
+ `).map((item) => item.trim()).filter(Boolean).toSorted();
139
+ });
140
+ const head = Effect.fn("Git.history.head")(function* (repository) {
141
+ const result = yield* run(repository.worktree, proc, ["rev-parse", "HEAD"]);
142
+ if (result.exitCode !== 0)
143
+ return;
144
+ return result.text.trim() || undefined;
145
+ });
146
+ const branch = Effect.fn("Git.history.branch")(function* (repository) {
147
+ const result = yield* run(repository.worktree, proc, ["symbolic-ref", "--quiet", "--short", "HEAD"]);
148
+ if (result.exitCode !== 0)
149
+ return;
150
+ return result.text.trim() || undefined;
151
+ });
152
+ const remoteHead = Effect.fn("Git.history.defaultRemoteBranch")(function* (repository, remoteName = "origin") {
153
+ const result = yield* run(repository.worktree, proc, ["symbolic-ref", `refs/remotes/${remoteName}/HEAD`]);
154
+ if (result.exitCode !== 0)
155
+ return;
156
+ return result.text.trim().replace(new RegExp(`^refs/remotes/${remoteName}/`), "") || undefined;
157
+ });
158
+ const operation = Effect.fnUntraced(function* (operation, directory, args) {
159
+ const result = yield* execute(directory, proc, args).pipe(Effect.mapError((cause) => new OperationError3({ operation, directory, message: cause.message, cause })));
160
+ if (result.exitCode === 0)
161
+ return;
162
+ return yield* new OperationError3({
163
+ operation,
164
+ directory,
165
+ message: result.stderr.trim() || result.text.trim() || `Git ${operation} failed`
166
+ });
167
+ });
168
+ const clone = Effect.fn("Git.repo.clone")(function* (input) {
169
+ yield* operation("clone", AbsolutePath2.make(path.dirname(input.directory)), [
170
+ "clone",
171
+ "--depth",
172
+ String(input.depth ?? 100),
173
+ ...input.branch ? ["--branch", input.branch] : [],
174
+ "--",
175
+ input.remote,
176
+ input.directory
177
+ ]);
178
+ const repository = yield* discover(input.directory);
179
+ if (repository)
180
+ return repository;
181
+ return yield* new OperationError3({
182
+ operation: "clone",
183
+ directory: input.directory,
184
+ message: "Cloned repository could not be opened"
185
+ });
186
+ });
187
+ const fetch = Effect.fn("Git.sync.fetchRemotes")(function* (repository, input = {}) {
188
+ yield* operation("fetch", repository.worktree, ["fetch", "--all", ...input.prune === false ? [] : ["--prune"]]);
189
+ });
190
+ const fetchBranch = Effect.fn("Git.sync.fetchBranch")(function* (repository, input) {
191
+ const remoteName = input.remote ?? "origin";
192
+ const spec = `refs/heads/${input.branch}:refs/remotes/${remoteName}/${input.branch}`;
193
+ yield* operation("fetch", repository.worktree, ["fetch", remoteName, input.force === false ? spec : `+${spec}`]);
194
+ });
195
+ const checkout = Effect.fn("Git.sync.checkoutRemoteBranch")(function* (repository, input) {
196
+ const remoteName = input.remote ?? "origin";
197
+ yield* operation("checkout", repository.worktree, [
198
+ "checkout",
199
+ ...input.reset === false ? [input.branch] : ["-B", input.branch, `${remoteName}/${input.branch}`]
200
+ ]);
201
+ });
202
+ const reset = Effect.fn("Git.sync.resetHard")(function* (repository, revision) {
203
+ yield* operation("reset", repository.worktree, ["reset", "--hard", revision]);
204
+ });
205
+ const repositoryArgs = (repository, args) => [
206
+ "--git-dir",
207
+ repository.gitDirectory,
208
+ "--work-tree",
209
+ repository.worktree,
210
+ ...args
211
+ ];
212
+ const repositoryOperation = Effect.fnUntraced(function* (operationName, repository, args, options) {
213
+ const result = yield* proc.run(ChildProcess.make(gitExecutable2, repositoryArgs(repository, args), {
214
+ cwd: repository.worktree,
215
+ env: options?.index ? { ...options.env, GIT_INDEX_FILE: options.index } : options?.env,
216
+ extendEnv: true
217
+ }), { stdin: options?.stdin, maxOutputBytes: options?.maxOutputBytes }).pipe(Effect.mapError((cause) => new OperationError3({
218
+ operation: operationName,
219
+ directory: repository.worktree,
220
+ message: cause.message,
221
+ cause
222
+ })));
223
+ const text = result.stdout.toString("utf8");
224
+ if (result.exitCode === 0)
225
+ return { text, stderr: result.stderr.toString("utf8"), truncated: result.stdoutTruncated };
226
+ return yield* new OperationError3({
227
+ operation: operationName,
228
+ directory: repository.worktree,
229
+ message: result.stderr.toString("utf8").trim() || text.trim() || `Git ${operationName} failed`
230
+ });
231
+ });
232
+ const create = Effect.fn("Git.repo.create")(function* (input) {
233
+ const repository = new Repository2({
234
+ worktree: input.worktree,
235
+ gitDirectory: input.gitDirectory,
236
+ commonDirectory: input.gitDirectory
237
+ });
238
+ if (yield* fs.existsSafe(path.join(input.gitDirectory, "HEAD"))) {
239
+ yield* initRepository({ ...input, directory: input.gitDirectory });
240
+ return repository;
241
+ }
242
+ const temporaryDirectory = AbsolutePath2.make(`${input.gitDirectory}.init-${uniqueSuffix()}`);
243
+ yield* Effect.gen(function* () {
244
+ yield* initRepository({ ...input, directory: temporaryDirectory });
245
+ const renamed = yield* fs.rename(temporaryDirectory, input.gitDirectory).pipe(Effect.exit);
246
+ if (Exit.isSuccess(renamed) || (yield* fs.existsSafe(path.join(input.gitDirectory, "HEAD"))))
247
+ return;
248
+ return yield* new OperationError3({
249
+ operation: "create",
250
+ directory: input.gitDirectory,
251
+ message: "Failed to move Git storage into place",
252
+ cause: Cause.squash(renamed.cause)
253
+ });
254
+ }).pipe(Effect.ensuring(fs.remove(temporaryDirectory, { recursive: true, force: true }).pipe(Effect.ignore)));
255
+ return repository;
256
+ });
257
+ const initRepository = Effect.fnUntraced(function* (input) {
258
+ const operationError = (message) => (cause) => new OperationError3({ operation: "create", directory: input.gitDirectory, message, cause });
259
+ yield* fs.ensureDir(input.directory).pipe(Effect.mapError(operationError("Failed to create Git storage")));
260
+ yield* repositoryOperation("create", new Repository2({ worktree: input.worktree, gitDirectory: input.directory, commonDirectory: input.directory }), ["init"]);
261
+ yield* Effect.gen(function* () {
262
+ yield* fs.writeFileString(path.join(input.directory, snapshotConfigFile), snapshotConfig);
263
+ const config = path.join(input.directory, "config");
264
+ const current = yield* fs.readFileString(config);
265
+ if (current.includes(snapshotConfigInclude))
266
+ return;
267
+ yield* fs.writeFileString(config, `${current.endsWith(`
268
+ `) ? `
269
+ ` : `
270
+
271
+ `}${snapshotConfigInclude}`, {
272
+ flag: "a"
273
+ });
274
+ }).pipe(Effect.mapError(operationError("Failed to configure Git storage")));
275
+ if (!input.seed)
276
+ return;
277
+ yield* fs.ensureDir(path.join(input.directory, "objects", "info")).pipe(Effect.mapError(operationError("Failed to configure shared Git objects")));
278
+ yield* fs.writeFileString(path.join(input.directory, "objects", "info", "alternates"), path.join(input.seed.commonDirectory, "objects") + `
279
+ `).pipe(Effect.mapError(operationError("Failed to configure shared Git objects")));
280
+ yield* fs.copyFile(path.join(input.seed.gitDirectory, "index"), path.join(input.directory, "index")).pipe(Effect.ignore);
281
+ });
282
+ const listChanges = Effect.fnUntraced(function* (repository, scope, index) {
283
+ const list = (args) => repositoryOperation("refresh", repository, args, { index }).pipe(Effect.map((result) => nuls(result.text).map((file) => RelativePath2.make(file.replace(/\/$/, "")))));
284
+ const [tracked, untracked] = yield* Effect.all([
285
+ list(["diff-files", "--name-only", "-z", "--", literalPathspec(scope)]),
286
+ list(["ls-files", "--others", "--exclude-standard", "-z", "--", literalPathspec(scope)])
287
+ ], { concurrency: 2 });
288
+ return { tracked, untracked };
289
+ });
290
+ const updateIndex = Effect.fnUntraced(function* (input) {
291
+ const candidates = [...input.changes.tracked, ...input.changes.untracked];
292
+ if (!candidates.length)
293
+ return { skipped: [] };
294
+ const excluded = input.excluded ?? (input.ignores ? yield* ignored({ repository: input.ignores, paths: candidates }) : new Set);
295
+ const maximum = input.maximumUntrackedFileBytes;
296
+ const skipped = maximum ? (yield* Effect.forEach(input.changes.untracked.filter((item) => !excluded.has(item)), (item) => fs.stat(path.join(input.repository.worktree, item)).pipe(Effect.map((info) => info.type === "File" && Number(info.size) > maximum ? item : undefined), Effect.orElseSucceed(() => {
297
+ return;
298
+ })), { concurrency: 8 })).filter((item) => item !== undefined) : [];
299
+ const skip = new Set(skipped);
300
+ const added = candidates.filter((item) => !excluded.has(item) && !skip.has(item));
301
+ const removed = input.changes.tracked.filter((item) => excluded.has(item));
302
+ if (removed.length)
303
+ yield* repositoryOperation("refresh", input.repository, ["update-index", "--force-remove", "-z", "--stdin"], {
304
+ stdin: removed.join("\x00") + "\x00",
305
+ index: input.index
306
+ });
307
+ const embedded = (yield* Effect.forEach(input.changes.tracked.filter((item) => !excluded.has(item)), (item) => fs.existsSafe(path.join(input.repository.worktree, item, ".git")).pipe(Effect.map((found) => found ? item : undefined)), { concurrency: 8 })).filter((item) => item !== undefined);
308
+ if (added.length)
309
+ yield* repositoryOperation("refresh", input.repository, ["update-index", "--add", "--remove", "--replace", "-z", "--stdin"], { stdin: [...added, ...embedded].join("\x00") + "\x00", index: input.index });
310
+ return { skipped };
311
+ });
312
+ const refresh = Effect.fn("Git.index.refresh")(function* (input) {
313
+ return yield* updateIndex({ ...input, changes: yield* listChanges(input.repository, input.scope) });
314
+ });
315
+ const ignored = Effect.fn("Git.index.ignored")(function* (input) {
316
+ if (!input.paths.length)
317
+ return new Set;
318
+ const result = yield* proc.run(ChildProcess.make(gitExecutable2, repositoryArgs(input.repository, ["check-ignore", "--no-index", "--stdin", "-z"]), {
319
+ cwd: input.repository.worktree,
320
+ extendEnv: true
321
+ }), { stdin: input.paths.join("\x00") + "\x00" }).pipe(Effect.mapError((cause) => new OperationError3({
322
+ operation: "list_files",
323
+ directory: input.repository.worktree,
324
+ message: cause.message,
325
+ cause
326
+ })));
327
+ if (result.exitCode !== 0 && result.exitCode !== 1)
328
+ return yield* new OperationError3({
329
+ operation: "list_files",
330
+ directory: input.repository.worktree,
331
+ message: result.stderr.toString("utf8").trim() || "Failed to check ignored paths"
332
+ });
333
+ return new Set(nuls(result.stdout.toString("utf8")).map((file) => RelativePath2.make(file)));
334
+ });
335
+ const writeTree = Effect.fn("Git.tree.write")(function* (repository, index) {
336
+ const tree = (yield* repositoryOperation("write_tree", repository, ["write-tree"], { index })).text.trim();
337
+ if (/^[0-9a-f]{40,64}$/.test(tree))
338
+ return TreeID2.make(tree);
339
+ return yield* new OperationError3({
340
+ operation: "write_tree",
341
+ directory: repository.worktree,
342
+ message: `Invalid tree ID: ${tree}`
343
+ });
344
+ });
345
+ const indexFile = (repository) => path.join(repository.gitDirectory, "index");
346
+ const indexFingerprint = (file) => fs.stat(file).pipe(Effect.map((info) => [Option.getOrUndefined(info.ino), info.size, Option.getOrUndefined(info.mtime)?.getTime()].join(":")), Effect.orElseSucceed(() => {
347
+ return;
348
+ }));
349
+ const copyIndex = Effect.fnUntraced(function* (from, to) {
350
+ const info = yield* fs.stat(from);
351
+ yield* fs.copyFile(from, to);
352
+ const mtime = Option.getOrUndefined(info.mtime);
353
+ if (mtime)
354
+ yield* fs.utimes(to, Option.getOrElse(info.atime, () => mtime), mtime).pipe(Effect.ignore);
355
+ });
356
+ const withTemporaryIndex = (repository, use) => Effect.acquireUseRelease(Effect.gen(function* () {
357
+ const current = indexFile(repository);
358
+ const index = temporaryIndex(repository);
359
+ if (!(yield* fs.existsSafe(current)))
360
+ return index;
361
+ const linked = yield* fs.link(current, index).pipe(Effect.as(true), Effect.orElseSucceed(() => false));
362
+ if (linked)
363
+ return index;
364
+ yield* copyIndex(current, index).pipe(Effect.mapError((cause) => new OperationError3({
365
+ operation: "refresh",
366
+ directory: repository.gitDirectory,
367
+ message: "Failed to prepare a temporary index",
368
+ cause
369
+ })));
370
+ return index;
371
+ }), (index) => Effect.gen(function* () {
372
+ const value = yield* use(index);
373
+ const installed = yield* Effect.uninterruptible(Effect.gen(function* () {
374
+ const fingerprint = yield* indexFingerprint(index);
375
+ const renamed = yield* fs.rename(index, indexFile(repository)).pipe(Effect.retry({ times: 3, schedule: Schedule.spaced("20 millis") }), Effect.as(true), Effect.orElseSucceed(() => false));
376
+ return renamed ? fingerprint : undefined;
377
+ }));
378
+ return { value, installed };
379
+ }), (index) => fs.remove(index, { force: true }).pipe(Effect.ignore));
380
+ const lastCaptures = new Map;
381
+ const preparedStores = new Set;
382
+ const attemptCapture = Effect.fnUntraced(function* (input) {
383
+ const result = yield* withTemporaryIndex(input.repository, (index) => Effect.gen(function* () {
384
+ const scanned = yield* indexFingerprint(index);
385
+ const changes = yield* Effect.forEach(input.scopes, (scope) => listChanges(input.repository, scope, index), {
386
+ concurrency: "unbounded"
387
+ });
388
+ const last = lastCaptures.get(input.repository.gitDirectory);
389
+ const untracked = changes.flatMap((change) => change.untracked);
390
+ const excluded = scanned && last?.fingerprint === scanned && changes.every((change) => !change.tracked.length) ? input.ignores ? yield* ignored({ repository: input.ignores, paths: untracked }) : new Set : undefined;
391
+ if (last && excluded && untracked.every((file) => excluded.has(file)))
392
+ return last.tree;
393
+ yield* Effect.forEach(changes, (change) => updateIndex({ ...input, changes: change, index, excluded }), {
394
+ discard: true
395
+ });
396
+ return yield* writeTree(input.repository, index);
397
+ }));
398
+ if (result.installed)
399
+ lastCaptures.set(input.repository.gitDirectory, { fingerprint: result.installed, tree: result.value });
400
+ if (!result.installed)
401
+ lastCaptures.delete(input.repository.gitDirectory);
402
+ return result.value;
403
+ });
404
+ const captureTree = Effect.fn("Git.tree.capture")((input) => locked(input.repository, Effect.gen(function* () {
405
+ if (!preparedStores.has(input.repository.gitDirectory)) {
406
+ preparedStores.add(input.repository.gitDirectory);
407
+ yield* sweepTemporaryIndexes(input.repository);
408
+ yield* ensureSnapshotConfig(input.repository);
409
+ }
410
+ return yield* attemptCapture(input).pipe(Effect.catch((error) => Effect.gen(function* () {
411
+ if (!(yield* isIndexUnreadable(input.repository)))
412
+ return yield* error;
413
+ yield* Effect.logWarning("rebuilding unreadable snapshot index", {
414
+ directory: input.repository.gitDirectory,
415
+ message: error.message
416
+ });
417
+ yield* rebuildIndex(input.repository, input.ignores);
418
+ return yield* attemptCapture(input);
419
+ })));
420
+ })));
421
+ const isIndexUnreadable = Effect.fnUntraced(function* (repository) {
422
+ if (!(yield* fs.existsSafe(indexFile(repository))))
423
+ return false;
424
+ return yield* repositoryOperation("refresh", repository, [
425
+ "ls-files",
426
+ "-z",
427
+ "--",
428
+ literalPathspec(".opencode-probe")
429
+ ]).pipe(Effect.match({ onSuccess: () => false, onFailure: (error) => error.cause === undefined }));
430
+ });
431
+ const rebuildIndex = Effect.fnUntraced(function* (repository, source) {
432
+ lastCaptures.delete(repository.gitDirectory);
433
+ const temporary = temporaryIndex(repository);
434
+ const copied = source ? yield* copyIndex(path.join(source.gitDirectory, "index"), temporary).pipe(Effect.as(true), Effect.orElseSucceed(() => false)) : false;
435
+ yield* (copied ? fs.rename(temporary, indexFile(repository)) : fs.remove(indexFile(repository), { force: true })).pipe(Effect.ignore, Effect.ensuring(fs.remove(temporary, { force: true }).pipe(Effect.ignore)));
436
+ });
437
+ const ensureSnapshotConfig = Effect.fnUntraced(function* (repository) {
438
+ const file = path.join(repository.gitDirectory, snapshotConfigFile);
439
+ const current = yield* fs.readFileStringSafe(file).pipe(Effect.orElseSucceed(() => {
440
+ return;
441
+ }));
442
+ if (current === undefined || current === snapshotConfig)
443
+ return;
444
+ const temporary = `${file}.${uniqueSuffix()}`;
445
+ yield* fs.writeFileString(temporary, snapshotConfig).pipe(Effect.andThen(fs.rename(temporary, file)), Effect.ignore, Effect.ensuring(fs.remove(temporary, { force: true }).pipe(Effect.ignore)));
446
+ });
447
+ const temporaryIndex = (repository) => path.join(repository.gitDirectory, `${temporaryIndexPrefix}${Date.now()}-${uniqueSuffix()}`);
448
+ const sweepTemporaryIndexes = Effect.fnUntraced(function* (repository) {
449
+ const cutoff = Date.now() - 60 * 60 * 1000;
450
+ const entries = yield* fs.readDirectory(repository.gitDirectory).pipe(Effect.orElseSucceed(() => []));
451
+ yield* Effect.forEach(entries.filter((entry) => entry.startsWith(temporaryIndexPrefix) && Number(entry.slice(temporaryIndexPrefix.length).split("-")[0]) < cutoff), (entry) => fs.remove(path.join(repository.gitDirectory, entry), { force: true }).pipe(Effect.ignore), { discard: true });
452
+ });
453
+ const treeFiles = Effect.fn("Git.tree.files")(function* (input) {
454
+ return nuls((yield* repositoryOperation("list_files", input.repository, [
455
+ "diff",
456
+ "--name-only",
457
+ "--no-renames",
458
+ "-z",
459
+ input.from,
460
+ input.to
461
+ ])).text).map((file) => RelativePath2.make(file));
462
+ });
463
+ const treeDiff = Effect.fn("Git.tree.diff")(function* (input) {
464
+ if (input.paths?.length === 0)
465
+ return [];
466
+ const groups = input.paths ? pathGroups(input.paths) : [undefined];
467
+ const diffs = [];
468
+ let patchBudget = MAX_TOTAL_PATCH_BYTES2;
469
+ for (const paths of groups) {
470
+ const group = yield* diffGroup({ ...input, paths }, patchBudget);
471
+ diffs.push(...group.diffs);
472
+ patchBudget = group.truncated ? 0 : patchBudget - group.patchBytes;
473
+ }
474
+ return diffs;
475
+ });
476
+ const diffGroup = Effect.fnUntraced(function* (input, patchBudget) {
477
+ const args = ["--no-renames", input.from, input.to, "--", ...input.paths ?? []];
478
+ const [names, numbers, patch] = yield* Effect.all([
479
+ repositoryOperation("diff", input.repository, [
480
+ "--literal-pathspecs",
481
+ "diff",
482
+ "--name-status",
483
+ "-z",
484
+ ...args
485
+ ]),
486
+ repositoryOperation("diff", input.repository, ["--literal-pathspecs", "diff", "--numstat", "-z", ...args]),
487
+ patchBudget > 0 ? repositoryOperation("diff", input.repository, [
488
+ "--literal-pathspecs",
489
+ "-c",
490
+ "core.quotepath=false",
491
+ "diff",
492
+ "--no-ext-diff",
493
+ `--unified=${input.context ?? 3}`,
494
+ ...args
495
+ ], { maxOutputBytes: patchBudget }) : Effect.succeed({ text: "", stderr: "", truncated: true })
496
+ ], { concurrency: 3 });
497
+ const statuses = nuls(names.text);
498
+ const files = statuses.flatMap((code, index) => {
499
+ const file = statuses[index + 1];
500
+ if (index % 2 !== 0 || !file)
501
+ return [];
502
+ return [
503
+ {
504
+ file: RelativePath2.make(file),
505
+ status: code.startsWith("A") ? "added" : code.startsWith("D") ? "deleted" : "modified"
506
+ }
507
+ ];
508
+ });
509
+ const stats = new Map(nuls(numbers.text).flatMap((line) => {
510
+ const [additions, deletions, ...file] = line.split("\t");
511
+ if (!additions || !deletions || file.length === 0)
512
+ return [];
513
+ return [
514
+ [
515
+ file.join("\t"),
516
+ additions === "-" || deletions === "-" ? { binary: true, additions: 0, deletions: 0 } : { binary: false, additions: Number(additions), deletions: Number(deletions) }
517
+ ]
518
+ ];
519
+ }));
520
+ const patches = chunksByFile2(patch, (index) => files[index]?.file);
521
+ return {
522
+ diffs: files.map((entry) => {
523
+ const stat = stats.get(entry.file);
524
+ return {
525
+ ...entry,
526
+ additions: stat?.additions ?? 0,
527
+ deletions: stat?.deletions ?? 0,
528
+ patch: stat?.binary ? "" : patches.get(entry.file) ?? emptyPatch2(entry.file)
529
+ };
530
+ }),
531
+ patchBytes: Buffer.byteLength(patch.text),
532
+ truncated: patch.truncated
533
+ };
534
+ });
535
+ const hasEntry = Effect.fnUntraced(function* (repository, tree, file) {
536
+ const text = (yield* repositoryOperation("restore", repository, [
537
+ "ls-tree",
538
+ "-z",
539
+ tree,
540
+ "--",
541
+ literalPathspec(file)
542
+ ])).text.replace(/\0$/, "");
543
+ if (!text)
544
+ return false;
545
+ if (!/^\d+\s+\w+\s+[0-9a-f]+\t/.test(text))
546
+ return yield* new OperationError3({
547
+ operation: "restore",
548
+ directory: repository.worktree,
549
+ message: `Invalid tree entry for ${file}`
550
+ });
551
+ return true;
552
+ });
553
+ const removePath = (repository, file) => fs.remove(path.join(repository.worktree, file), { recursive: true, force: true }).pipe(Effect.mapError((cause) => new OperationError3({
554
+ operation: "restore",
555
+ directory: repository.worktree,
556
+ message: `Failed to remove ${file}`,
557
+ cause
558
+ })));
559
+ const pathsInTree = Effect.fnUntraced(function* (repository, tree, files) {
560
+ const pathspecs = files.map(literalPathspec);
561
+ const fits = pathspecs.reduce((length, pathspec) => length + pathspec.length + 1, 0) <= argumentBudget;
562
+ const result = yield* repositoryOperation("restore", repository, fits ? ["ls-tree", "-z", tree, "--", ...pathspecs] : ["ls-tree", "-r", "-t", "-z", "--full-tree", tree]);
563
+ const listed = yield* Effect.forEach(nuls(result.text), (record) => {
564
+ const match = /^\d+ \w+ [0-9a-f]+\t(.*)$/s.exec(record);
565
+ if (match)
566
+ return Effect.succeed(RelativePath2.make(match[1]));
567
+ return Effect.fail(new OperationError3({
568
+ operation: "restore",
569
+ directory: repository.worktree,
570
+ message: `Invalid tree entry: ${record}`
571
+ }));
572
+ });
573
+ return new Set(listed);
574
+ });
575
+ const restore = Effect.fn("Git.tree.restore")((input) => locked(input.repository, Effect.gen(function* () {
576
+ if (!input.files.size)
577
+ return;
578
+ if (!canBatchRestore([...input.files.keys()]))
579
+ return yield* Effect.forEach(input.files, ([file, tree]) => Effect.gen(function* () {
580
+ if (!(yield* hasEntry(input.repository, tree, file)))
581
+ return yield* removePath(input.repository, file);
582
+ yield* withTemporaryIndex(input.repository, (index) => repositoryOperation("restore", input.repository, ["checkout", tree, "--", literalPathspec(file)], {
583
+ index
584
+ }));
585
+ }), { discard: true });
586
+ const groups = new Map;
587
+ input.files.forEach((tree, file) => groups.set(tree, [...groups.get(tree) ?? [], file]));
588
+ const plan = yield* Effect.forEach(groups, ([tree, files]) => pathsInTree(input.repository, tree, files).pipe(Effect.map((present) => ({
589
+ tree,
590
+ present: files.filter((file) => present.has(file)),
591
+ absent: files.filter((file) => !present.has(file))
592
+ }))));
593
+ const checkouts = plan.filter((item) => item.present.length);
594
+ if (checkouts.length)
595
+ yield* withTemporaryIndex(input.repository, (index) => Effect.forEach(checkouts, (item) => repositoryOperation("restore", input.repository, ["checkout", item.tree, "--pathspec-from-file=-", "--pathspec-file-nul"], { stdin: item.present.map(literalPathspec).join("\x00") + "\x00", index }), { discard: true }));
596
+ yield* Effect.forEach(plan.flatMap((item) => item.absent), (file) => removePath(input.repository, file), { concurrency: 16, discard: true });
597
+ })));
598
+ const packObjects = Effect.fn("Git.objects.pack")(function* (repository) {
599
+ const objects = path.join(repository.gitDirectory, "objects");
600
+ const packDirectory = path.join(objects, "pack");
601
+ const loose = yield* looseObjects(objects);
602
+ const packs = yield* localPacks(packDirectory);
603
+ const combinePacks = packs.length >= packCountLimit;
604
+ if (loose.length < looseObjectLimit && !combinePacks)
605
+ return;
606
+ yield* withPackLock(repository, Effect.gen(function* () {
607
+ yield* sweepTemporaryPacks(packDirectory);
608
+ const combined = combinePacks ? yield* Effect.forEach(packs, (pack) => packIndex(repository, path.join(packDirectory, `${pack}.idx`)).pipe(Effect.map((oids) => ({ pack, oids })))) : [];
609
+ const objectIds = [...new Set([...loose.map((item) => item.oid), ...combined.flatMap((item) => item.oids)])];
610
+ if (!objectIds.length)
611
+ return;
612
+ const newPacks = (yield* repositoryOperation("pack", repository, [
613
+ "-c",
614
+ "pack.threads=2",
615
+ "-c",
616
+ "pack.windowMemory=64m",
617
+ "pack-objects",
618
+ "-q",
619
+ "--non-empty",
620
+ path.join(packDirectory, "pack")
621
+ ], { stdin: objectIds.join(`
622
+ `) + `
623
+ ` })).text.split(`
624
+ `).map((line) => line.trim()).filter(Boolean);
625
+ const packedIds = new Set((yield* Effect.forEach(newPacks, (name) => packIndex(repository, path.join(packDirectory, `pack-${name}.idx`)))).flat());
626
+ const missing = objectIds.filter((oid) => !packedIds.has(oid));
627
+ if (missing.length)
628
+ return yield* new OperationError3({
629
+ operation: "pack",
630
+ directory: repository.gitDirectory,
631
+ message: `Packed ${packedIds.size} objects but ${missing.length} are missing; nothing was removed`
632
+ });
633
+ yield* Effect.uninterruptible(Effect.gen(function* () {
634
+ yield* Effect.forEach(loose, (item) => fs.remove(item.file, { force: true }).pipe(Effect.ignore), {
635
+ concurrency: 16,
636
+ discard: true
637
+ });
638
+ const newPackNames = new Set(newPacks.map((name) => `pack-${name}`));
639
+ yield* Effect.forEach(combined.filter((item) => !newPackNames.has(item.pack)), (item) => Effect.forEach([".idx", ".pack", ".rev", ".bitmap", ".mtimes"], (extension) => fs.remove(path.join(packDirectory, `${item.pack}${extension}`), { force: true }).pipe(Effect.ignore), { discard: true }), { discard: true });
640
+ }));
641
+ }));
642
+ });
643
+ const looseObjects = Effect.fnUntraced(function* (objects) {
644
+ const fanout = (yield* fs.readDirectory(objects).pipe(Effect.orElseSucceed(() => []))).filter((entry) => /^[0-9a-f]{2}$/.test(entry));
645
+ const listed = yield* Effect.forEach(fanout, (prefix) => fs.readDirectory(path.join(objects, prefix)).pipe(Effect.orElseSucceed(() => []), Effect.map((entries) => entries.filter((entry) => /^[0-9a-f]{38}$|^[0-9a-f]{62}$/.test(entry)).map((entry) => ({ oid: prefix + entry, file: path.join(objects, prefix, entry) })))), { concurrency: 16 });
646
+ return listed.flat();
647
+ });
648
+ const localPacks = Effect.fnUntraced(function* (directory) {
649
+ const entries = new Set(yield* fs.readDirectory(directory).pipe(Effect.orElseSucceed(() => [])));
650
+ return [...entries].filter((entry) => entry.startsWith("pack-") && entry.endsWith(".pack")).map((entry) => entry.slice(0, -".pack".length)).filter((pack) => entries.has(`${pack}.idx`) && !entries.has(`${pack}.keep`) && !entries.has(`${pack}.promisor`));
651
+ });
652
+ const packIndex = Effect.fnUntraced(function* (repository, file) {
653
+ const bytes = yield* fs.readFile(file).pipe(Effect.mapError((cause) => new OperationError3({
654
+ operation: "pack",
655
+ directory: repository.gitDirectory,
656
+ message: `Failed to read ${file}`,
657
+ cause
658
+ })));
659
+ const parsed = packIndexObjectIDs(bytes);
660
+ if (parsed)
661
+ return parsed;
662
+ const result = yield* repositoryOperation("pack", repository, ["show-index"], { stdin: bytes });
663
+ return result.text.split(`
664
+ `).flatMap((line) => {
665
+ const oid = line.split(" ")[1];
666
+ return oid ? [oid] : [];
667
+ });
668
+ });
669
+ const sweepTemporaryPacks = Effect.fnUntraced(function* (directory) {
670
+ const cutoff = Date.now() - 60 * 60 * 1000;
671
+ const entries = yield* fs.readDirectory(directory).pipe(Effect.orElseSucceed(() => []));
672
+ const indexed = new Set(entries.filter((entry) => entry.endsWith(".idx")).map((entry) => entry.slice(0, -4)));
673
+ yield* Effect.forEach(entries.filter((entry) => entry.startsWith("tmp_") || entry.startsWith("pack-") && entry.endsWith(".pack") && !indexed.has(entry.slice(0, -5))), (entry) => fs.stat(path.join(directory, entry)).pipe(Effect.flatMap((info) => (Option.getOrUndefined(info.mtime)?.getTime() ?? 0) < cutoff ? fs.remove(path.join(directory, entry), { force: true }) : Effect.void), Effect.ignore), { discard: true });
674
+ });
675
+ const withPackLock = (repository, effect) => {
676
+ const file = path.join(repository.gitDirectory, "opencode-pack.lock");
677
+ return Effect.gen(function* () {
678
+ const stale = yield* fs.stat(file).pipe(Effect.map((info) => (Option.getOrUndefined(info.mtime)?.getTime() ?? 0) < Date.now() - 60 * 60 * 1000), Effect.orElseSucceed(() => false));
679
+ if (stale)
680
+ yield* fs.remove(file, { force: true }).pipe(Effect.ignore);
681
+ const acquired = yield* fs.writeFileString(file, String(process.pid), { flag: "wx" }).pipe(Effect.as(true), Effect.orElseSucceed(() => false));
682
+ if (!acquired)
683
+ return;
684
+ yield* effect.pipe(Effect.ensuring(fs.remove(file, { force: true }).pipe(Effect.ignore)));
685
+ });
686
+ };
687
+ const worktreeRun = Effect.fnUntraced(function* (operation, repository, args, worktreeDirectory, cwd = repository.worktree) {
688
+ const result = yield* proc.run(ChildProcess.make(gitExecutable2, args, { cwd, extendEnv: true, stdin: "ignore" })).pipe(Effect.mapError((cause) => new WorktreeError2({ operation, directory: worktreeDirectory, message: cause.message, cause })));
689
+ if (result.exitCode === 0)
690
+ return result.stdout.toString("utf8");
691
+ const message = result.stderr.toString("utf8").trim() || result.stdout.toString("utf8").trim() || "Git failed";
692
+ return yield* new WorktreeError2({
693
+ operation,
694
+ directory: worktreeDirectory,
695
+ message,
696
+ forceRequired: operation === "remove" && /contains modified or untracked files|is dirty/i.test(message)
697
+ });
698
+ });
699
+ const worktreeCreate = Effect.fn("Git.worktree.create")(function* (input) {
700
+ yield* worktreeRun("create", input.repository, ["worktree", "add", "--detach", "--", input.directory, input.ref ?? "HEAD"], input.directory);
701
+ const repository = yield* discover(input.directory);
702
+ if (repository)
703
+ return repository;
704
+ return yield* new WorktreeError2({
705
+ operation: "create",
706
+ directory: input.directory,
707
+ message: "Created worktree could not be opened"
708
+ });
709
+ });
710
+ const worktreeRemove = Effect.fn("Git.worktree.remove")(function* (input) {
711
+ yield* worktreeRun("remove", input.repository, ["worktree", "remove", ...input.force ? ["--force"] : [], input.directory], input.directory, input.repository.commonDirectory);
712
+ });
713
+ const worktreeList = Effect.fn("Git.worktree.list")(function* (repository) {
714
+ return (yield* worktreeRun("list", repository, ["worktree", "list", "--porcelain"])).split(`
715
+ `).filter((line) => line.startsWith("worktree ")).map((line, index) => new Worktree2({
716
+ directory: AbsolutePath2.make(resolvePath(repository.worktree, line.slice("worktree ".length).trim())),
717
+ kind: index === 0 ? "main" : "linked"
718
+ }));
719
+ });
720
+ return Service83.of({
721
+ repo: { discover, clone, create },
722
+ remote: { get: remote },
723
+ history: { head, branch, defaultRemoteBranch: remoteHead, rootCommits: roots },
724
+ sync: { fetchRemotes: fetch, fetchBranch, checkoutRemoteBranch: checkout, resetHard: reset },
725
+ worktree: { create: worktreeCreate, remove: worktreeRemove, list: worktreeList },
726
+ index: { refresh, ignored },
727
+ tree: {
728
+ capture: captureTree,
729
+ write: (repository) => writeTree(repository),
730
+ files: treeFiles,
731
+ diff: treeDiff,
732
+ restore
733
+ },
734
+ objects: { pack: packObjects }
735
+ });
736
+ }));
737
+ var node87 = makeGlobalNode({ service: Service83, layer, deps: [FSUtil.node, AppProcess.node] });
738
+ function run(cwd, proc, args) {
739
+ return execute(cwd, proc, args).pipe(Effect.orElseSucceed(() => ({ exitCode: 1, text: "", stderr: "" })));
740
+ }
741
+ function execute(cwd, proc, args) {
742
+ return proc.run(ChildProcess.make(gitExecutable2, args, {
743
+ cwd,
744
+ extendEnv: true,
745
+ stdin: "ignore"
746
+ })).pipe(Effect.map((result) => ({
747
+ exitCode: result.exitCode,
748
+ text: result.stdout.toString("utf8"),
749
+ stderr: result.stderr.toString("utf8")
750
+ })));
751
+ }
752
+ function nuls(text) {
753
+ return text.split("\x00").filter(Boolean);
754
+ }
755
+ function literalPathspec(file) {
756
+ return `:(literal)${file}`;
757
+ }
758
+ function canBatchRestore(files) {
759
+ const canonical = files.every((file) => file.split("/").every((part) => /^[\x20-\x7e]+$/.test(part) && !/[\\:]/.test(part) && !/[. ]$/.test(part)));
760
+ if (!canonical)
761
+ return false;
762
+ const folded = new Set(files.map((file) => file.toLowerCase()));
763
+ if (folded.size !== files.length)
764
+ return false;
765
+ return files.every((file) => {
766
+ const parts = file.toLowerCase().split("/");
767
+ return parts.slice(1).every((_, index) => !folded.has(parts.slice(0, index + 1).join("/")));
768
+ });
769
+ }
770
+ function packIndexObjectIDs(bytes) {
771
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
772
+ if (bytes.length < 1032 || view.getUint32(0) !== 4285812579 || view.getUint32(4) !== 2)
773
+ return;
774
+ const count = view.getUint32(8 + 255 * 4);
775
+ const hash = (bytes.length - 1032 - 8 * count) / (count + 2);
776
+ if (hash !== 20 && hash !== 32)
777
+ return;
778
+ return Array.from({ length: count }, (_, index) => Buffer.from(bytes.subarray(1032 + index * hash, 1032 + (index + 1) * hash)).toString("hex"));
779
+ }
780
+ function pathGroups(paths) {
781
+ return paths.toSorted((left, right) => Buffer.compare(Buffer.from(left), Buffer.from(right))).reduce((state, file) => {
782
+ const cost = file.length + 3;
783
+ const current = state.groups.at(-1);
784
+ if (current && state.length + cost <= argumentBudget) {
785
+ current.push(file);
786
+ return { groups: state.groups, length: state.length + cost };
787
+ }
788
+ return { groups: [...state.groups, [file]], length: cost };
789
+ }, { groups: [], length: 0 }).groups;
790
+ }
791
+ function uniqueSuffix() {
792
+ return `${process.pid}-${Math.random().toString(36).slice(2)}`;
793
+ }
794
+ function resolvePath(cwd, value) {
795
+ const trimmed = value.replace(/[\r\n]+$/, "");
796
+ if (!trimmed)
797
+ return cwd;
798
+ const normalized = FSUtil.windowsPath(trimmed);
799
+ if (path.isAbsolute(normalized))
800
+ return path.normalize(normalized);
801
+ return path.resolve(cwd, normalized);
802
+ }
803
+
804
+ export { Repository2, TreeID2, OperationError3, Worktree2, WorktreeError2, Service83, node87, exports_git3 };