@opencode/core 2.0.25 → 2.0.26

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 (787) hide show
  1. package/dist/account/sql.js +1 -1
  2. package/dist/agent.js +82 -82
  3. package/dist/aisdk-native.js +90 -90
  4. package/dist/aisdk.js +95 -95
  5. package/dist/app.js +9 -9
  6. package/dist/bus.js +70 -70
  7. package/dist/chunks/{variant-qhpxdxn6.js → location-services-033h4s8k.js} +34 -34
  8. package/dist/chunks/{variant-w3fw562n.js → location-services-05rbeqff.js} +11 -11
  9. package/dist/chunks/{variant-nd1pxr6x.js → location-services-0dzshrg8.js} +6 -6
  10. package/dist/chunks/{variant-0vbcp93d.js → location-services-0emb60td.js} +2 -2
  11. package/dist/chunks/{variant-pppey5qj.js → location-services-0g2d8ktt.js} +32 -32
  12. package/dist/chunks/{variant-st28f52c.js → location-services-0gyy4w8j.js} +23 -23
  13. package/dist/chunks/{variant-f73rjn58.js → location-services-0k2v0y72.js} +4 -4
  14. package/dist/chunks/{variant-0paq2nw3.js → location-services-0paq2nw3.js} +1 -1
  15. package/dist/chunks/{variant-27cddewx.js → location-services-13z4sfdv.js} +24 -24
  16. package/dist/chunks/{variant-xjhy8ajq.js → location-services-14tdaeeb.js} +33 -33
  17. package/dist/chunks/{variant-gxzxndj0.js → location-services-1603qf85.js} +6 -6
  18. package/dist/chunks/{variant-g1w795vw.js → location-services-18cepezj.js} +14 -14
  19. package/dist/chunks/{variant-mhng4ka2.js → location-services-1bywdm55.js} +20 -20
  20. package/dist/chunks/{variant-1dazxqgg.js → location-services-1dazxqgg.js} +2 -2
  21. package/dist/chunks/{variant-qzsdnpce.js → location-services-1yjmjhdz.js} +145 -145
  22. package/dist/chunks/{variant-vtt0yr3x.js → location-services-1zmgywvv.js} +14 -14
  23. package/dist/chunks/{variant-d5qg661p.js → location-services-22dd1myg.js} +16 -16
  24. package/dist/chunks/{variant-3hfcgw97.js → location-services-23etyap0.js} +10 -10
  25. package/dist/chunks/{variant-7mxeeg2g.js → location-services-271jn6q7.js} +13 -13
  26. package/dist/chunks/{variant-2a5m3afh.js → location-services-2a5m3afh.js} +1 -1
  27. package/dist/chunks/{variant-neg622f9.js → location-services-2bz9fvty.js} +3 -3
  28. package/dist/chunks/{variant-xa9kyh0s.js → location-services-2dfj5p4n.js} +8 -8
  29. package/dist/chunks/{variant-qay45eb9.js → location-services-2h8jr8ns.js} +29 -29
  30. package/dist/chunks/{variant-18zb0skh.js → location-services-2p3jady7.js} +1 -1
  31. package/dist/chunks/{variant-wfvae1sy.js → location-services-2qatx596.js} +19 -19
  32. package/dist/chunks/{variant-c53d495w.js → location-services-2rarpg4h.js} +25 -25
  33. package/dist/chunks/{variant-452vf9ez.js → location-services-2ywvfrer.js} +24 -24
  34. package/dist/chunks/{variant-4acq55hh.js → location-services-337ertw6.js} +16 -16
  35. package/dist/chunks/{variant-nvwwg556.js → location-services-37n1r8jq.js} +13 -13
  36. package/dist/chunks/{variant-h2b79v29.js → location-services-3cegwx68.js} +2 -2
  37. package/dist/chunks/{variant-3fc6dm20.js → location-services-3fc6dm20.js} +1 -1
  38. package/dist/chunks/{variant-3hepkmqq.js → location-services-3hepkmqq.js} +1 -1
  39. package/dist/chunks/{variant-fhz5gfgy.js → location-services-3qaj82j9.js} +5 -5
  40. package/dist/chunks/{variant-3smtnn6g.js → location-services-3smtnn6g.js} +1 -1
  41. package/dist/chunks/{variant-3tvqynh2.js → location-services-3tvqynh2.js} +1 -1
  42. package/dist/chunks/{variant-49bhe2dh.js → location-services-3xwday2w.js} +13 -13
  43. package/dist/chunks/{variant-k57jac8p.js → location-services-3ymvsd51.js} +11 -11
  44. package/dist/chunks/{variant-3zsf4n22.js → location-services-3zsf4n22.js} +1 -1
  45. package/dist/chunks/{variant-gs3s1a1g.js → location-services-4e8vs6eh.js} +8 -8
  46. package/dist/chunks/{variant-s57remap.js → location-services-4n7p58nn.js} +79 -79
  47. package/dist/chunks/{variant-4ts7tf6z.js → location-services-4ts7tf6z.js} +2 -2
  48. package/dist/chunks/{variant-1h07amyp.js → location-services-4wk6a8dy.js} +33 -33
  49. package/dist/chunks/{variant-9rrz4dkr.js → location-services-545qbh9j.js} +12 -12
  50. package/dist/chunks/{variant-54ma36ye.js → location-services-54ma36ye.js} +1 -1
  51. package/dist/chunks/location-services-54wc3syr.js +26 -0
  52. package/dist/chunks/{variant-qz0t4qm7.js → location-services-54whn6c0.js} +20 -20
  53. package/dist/chunks/{variant-ra5kesbp.js → location-services-5ddhd1dx.js} +17 -17
  54. package/dist/chunks/{variant-fn04q5tb.js → location-services-5hbgr4ym.js} +26 -26
  55. package/dist/chunks/{variant-wj82z3q3.js → location-services-5j2a3mtt.js} +5 -5
  56. package/dist/chunks/{variant-5m9w47nd.js → location-services-5m9w47nd.js} +1 -1
  57. package/dist/chunks/{variant-1eg5vsqb.js → location-services-5pv1zqw9.js} +37 -37
  58. package/dist/chunks/{variant-05a2ta09.js → location-services-5r6vgt0c.js} +24 -24
  59. package/dist/chunks/{variant-5t3nmthw.js → location-services-5t3nmthw.js} +2 -2
  60. package/dist/chunks/{variant-er7m31zp.js → location-services-685vzyzq.js} +12 -12
  61. package/dist/chunks/{variant-vrrq7v3g.js → location-services-69rwvrvy.js} +5 -5
  62. package/dist/chunks/{variant-qdr7jx6m.js → location-services-6cjchcpv.js} +13 -13
  63. package/dist/chunks/{variant-8pmm23xh.js → location-services-6czf1ptr.js} +29 -29
  64. package/dist/chunks/{variant-6adhvgr3.js → location-services-6eqgd3yd.js} +30 -30
  65. package/dist/chunks/{variant-c4y3ge1t.js → location-services-6m2jx756.js} +4 -4
  66. package/dist/chunks/{variant-964qn63g.js → location-services-6qp67sjv.js} +13 -13
  67. package/dist/chunks/{variant-br07cpn8.js → location-services-6rb6ntmj.js} +15 -15
  68. package/dist/chunks/{variant-4s3kxd3m.js → location-services-6rg2adkq.js} +2 -2
  69. package/dist/chunks/{variant-77q2g51s.js → location-services-6rt2kzb2.js} +16 -16
  70. package/dist/chunks/{variant-6xb47vfp.js → location-services-6xb47vfp.js} +1 -1
  71. package/dist/chunks/{variant-rhb3b3rg.js → location-services-72ha41gd.js} +11 -11
  72. package/dist/chunks/{variant-gm5v31zk.js → location-services-73b4x9hb.js} +16 -16
  73. package/dist/chunks/{variant-7bmhse3q.js → location-services-7bmhse3q.js} +1 -1
  74. package/dist/chunks/{variant-0bwnrbmb.js → location-services-7cgt7722.js} +5 -5
  75. package/dist/chunks/{variant-8aa1p7b5.js → location-services-7eh8rnse.js} +18 -18
  76. package/dist/chunks/{variant-sjsrxvhe.js → location-services-7eyvw8cj.js} +10 -10
  77. package/dist/chunks/{variant-pjgg3r7a.js → location-services-7f0130xc.js} +12 -12
  78. package/dist/chunks/{variant-06r90ppk.js → location-services-7m8kp9a5.js} +11 -11
  79. package/dist/chunks/{variant-5nzezdf7.js → location-services-7nk6w983.js} +16 -16
  80. package/dist/chunks/{variant-2nbt55tc.js → location-services-7tpxex51.js} +8 -8
  81. package/dist/chunks/{variant-c4g8b3d2.js → location-services-83zk0r45.js} +1 -1
  82. package/dist/chunks/{variant-1dvck2a7.js → location-services-84h8c373.js} +2 -2
  83. package/dist/chunks/{variant-tcezcvh9.js → location-services-89znhe33.js} +4 -4
  84. package/dist/chunks/{variant-1kg0adek.js → location-services-8ag043pz.js} +10 -10
  85. package/dist/chunks/{variant-v5c0sq72.js → location-services-8ansnb3t.js} +28 -28
  86. package/dist/chunks/{variant-8d7r5vzw.js → location-services-8d7r5vzw.js} +1 -1
  87. package/dist/chunks/{variant-68pftax3.js → location-services-8ejvg7qw.js} +25 -25
  88. package/dist/chunks/{variant-8m6m0r52.js → location-services-8m6m0r52.js} +1 -1
  89. package/dist/chunks/{variant-02yyzjed.js → location-services-8sc63a00.js} +2 -2
  90. package/dist/chunks/{variant-kwzc06gj.js → location-services-95kvcnwx.js} +28 -28
  91. package/dist/chunks/{variant-rhjbct0v.js → location-services-9t7a50xb.js} +4 -4
  92. package/dist/chunks/{variant-z1fxcg55.js → location-services-a69nnjbb.js} +2 -2
  93. package/dist/chunks/{variant-xdrba4jw.js → location-services-a881zpfh.js} +9 -9
  94. package/dist/chunks/{variant-aaet6srn.js → location-services-aaet6srn.js} +2 -2
  95. package/dist/chunks/{variant-n2b4x48v.js → location-services-aqyhgb0m.js} +9 -9
  96. package/dist/chunks/{variant-my4zabxr.js → location-services-arz7hw7x.js} +2 -2
  97. package/dist/chunks/{variant-16m3yhsa.js → location-services-ayvdrfck.js} +8 -8
  98. package/dist/chunks/{variant-7sbksatv.js → location-services-ayx4aqd5.js} +4 -4
  99. package/dist/chunks/{variant-a34t0mpe.js → location-services-b2y4zj4f.js} +6 -6
  100. package/dist/chunks/{variant-3bz51e45.js → location-services-b3t0zy8v.js} +16 -16
  101. package/dist/chunks/{variant-py3kkmfq.js → location-services-b4twkq7r.js} +6 -6
  102. package/dist/chunks/{variant-b6gygkdw.js → location-services-b6gygkdw.js} +2 -2
  103. package/dist/chunks/{variant-1dj608qj.js → location-services-b7gbstx8.js} +33 -33
  104. package/dist/chunks/{variant-7efsjjwe.js → location-services-b83ajrzw.js} +39 -39
  105. package/dist/chunks/{variant-568a5em1.js → location-services-be1k9dy1.js} +7 -7
  106. package/dist/chunks/{variant-sxzvmjd7.js → location-services-beme9910.js} +11 -11
  107. package/dist/chunks/{variant-mrga4y2h.js → location-services-bqz0shrj.js} +2 -2
  108. package/dist/chunks/{variant-ey895da0.js → location-services-bx8cgf5b.js} +16 -16
  109. package/dist/chunks/{variant-r9jvjj2n.js → location-services-c3cny6dd.js} +24 -19
  110. package/dist/chunks/{variant-cf0t0sq2.js → location-services-cnxfmxea.js} +24 -24
  111. package/dist/chunks/{variant-3cmsdac1.js → location-services-cxc2sms6.js} +8 -8
  112. package/dist/chunks/{variant-rc8pxfxs.js → location-services-czveazf8.js} +11 -11
  113. package/dist/chunks/{variant-fzjbfm8r.js → location-services-d0dvav9e.js} +13 -13
  114. package/dist/chunks/{variant-amhyrjtc.js → location-services-d336qae7.js} +13 -13
  115. package/dist/chunks/{variant-dfdje5vc.js → location-services-d8angek9.js} +9 -9
  116. package/dist/chunks/{variant-s0b7t9fd.js → location-services-dd40s8jk.js} +4 -4
  117. package/dist/chunks/{variant-tczag1pk.js → location-services-dk9npkzx.js} +23 -23
  118. package/dist/chunks/{variant-xkntkrq7.js → location-services-dmqcgk4z.js} +5 -5
  119. package/dist/chunks/{variant-dpkg50ah.js → location-services-dpkg50ah.js} +1 -1
  120. package/dist/chunks/{variant-ze98vkjw.js → location-services-dqt71wdb.js} +10 -10
  121. package/dist/chunks/{variant-yt8edf6v.js → location-services-ds6dktyv.js} +10 -10
  122. package/dist/chunks/{variant-m8ke4caa.js → location-services-dtttw669.js} +11 -11
  123. package/dist/chunks/{variant-c964e3b9.js → location-services-dwccypxr.js} +113 -35
  124. package/dist/chunks/{variant-tcbv57ja.js → location-services-e0xah09s.js} +17 -17
  125. package/dist/chunks/{variant-1j2s48r7.js → location-services-e8242ssa.js} +8 -8
  126. package/dist/chunks/{variant-n5mbdfqn.js → location-services-e8b6y2pt.js} +21 -21
  127. package/dist/chunks/{variant-4m7gr2sz.js → location-services-ecxg4nmc.js} +7 -7
  128. package/dist/chunks/{variant-5f219ejc.js → location-services-eehqdfn9.js} +13 -13
  129. package/dist/chunks/{variant-ef5x83kb.js → location-services-ef5x83kb.js} +1 -1
  130. package/dist/chunks/{variant-eq1pz5kg.js → location-services-eq1pz5kg.js} +1 -1
  131. package/dist/chunks/{variant-9z2y94hd.js → location-services-erz44zsw.js} +3 -3
  132. package/dist/chunks/{variant-etq0c3wd.js → location-services-etq0c3wd.js} +1 -1
  133. package/dist/chunks/location-services-ewb5cdj2.js +166 -0
  134. package/dist/chunks/{variant-6jjgb46x.js → location-services-ez9mb76v.js} +19 -19
  135. package/dist/chunks/{variant-7hqrfg83.js → location-services-f4a46b6n.js} +17 -17
  136. package/dist/chunks/{variant-71az546q.js → location-services-f75zav2x.js} +2 -2
  137. package/dist/chunks/{variant-y7fv8ve9.js → location-services-fab1rbc6.js} +69 -69
  138. package/dist/chunks/{variant-yt7zt18h.js → location-services-fm6nvr4y.js} +22 -22
  139. package/dist/chunks/{variant-t6vsspdg.js → location-services-fqb2p7cx.js} +5 -5
  140. package/dist/chunks/{variant-5hxx4pyd.js → location-services-fy7t80vs.js} +30 -30
  141. package/dist/chunks/{variant-93ygb5af.js → location-services-fzmtkgat.js} +6 -6
  142. package/dist/chunks/{variant-g0445xdp.js → location-services-g0445xdp.js} +1 -1
  143. package/dist/chunks/{variant-wwbgt871.js → location-services-g4jcj52r.js} +11 -11
  144. package/dist/chunks/{variant-xfkkasph.js → location-services-g5w8qwbj.js} +4 -4
  145. package/dist/chunks/{variant-9ya6mhzs.js → location-services-g93vh8n3.js} +4 -4
  146. package/dist/chunks/{variant-gd4qta3r.js → location-services-gd4qta3r.js} +1 -1
  147. package/dist/chunks/{variant-06ednycw.js → location-services-gjzbw61z.js} +15 -15
  148. package/dist/chunks/{variant-8hg3mrb3.js → location-services-gnwdqr3s.js} +21 -21
  149. package/dist/chunks/{variant-8a6z9e34.js → location-services-gsahv7qc.js} +4 -4
  150. package/dist/chunks/{variant-sza3fptc.js → location-services-gw15ex2k.js} +3 -3
  151. package/dist/chunks/{variant-g9v6bhk7.js → location-services-gx1aj30x.js} +21 -21
  152. package/dist/chunks/{variant-h6vf3j39.js → location-services-h6vf3j39.js} +1 -1
  153. package/dist/chunks/{variant-3g8j9he4.js → location-services-he27pt63.js} +1 -1
  154. package/dist/chunks/{variant-e29b4955.js → location-services-hjwszd6c.js} +24 -24
  155. package/dist/chunks/{variant-qdfmac3b.js → location-services-hm33bzgf.js} +1 -1
  156. package/dist/chunks/location-services-j07hvfq8.js +507 -0
  157. package/dist/chunks/{variant-qq77mc7s.js → location-services-j0p2p2c7.js} +13 -13
  158. package/dist/chunks/{variant-j56e64zr.js → location-services-j56e64zr.js} +1 -1
  159. package/dist/chunks/{variant-9bdjprtk.js → location-services-j5w85phq.js} +35 -35
  160. package/dist/chunks/{variant-qmqydgm0.js → location-services-j7ecp1pt.js} +41 -41
  161. package/dist/chunks/{variant-ants6d3e.js → location-services-j7kpd95e.js} +43 -43
  162. package/dist/chunks/{variant-1gpb38yh.js → location-services-j8s9ab9g.js} +3 -3
  163. package/dist/chunks/{variant-bhkpa1rg.js → location-services-jbqrqj8a.js} +21 -21
  164. package/dist/chunks/{variant-74d5t6nd.js → location-services-jhzrzk65.js} +26 -26
  165. package/dist/chunks/{variant-6s97e1y4.js → location-services-jmy38avr.js} +11 -11
  166. package/dist/chunks/{variant-gy6j4848.js → location-services-jsjec30j.js} +13 -13
  167. package/dist/chunks/{variant-xa33mv3d.js → location-services-jx2ezg5d.js} +9 -9
  168. package/dist/chunks/{variant-vdva6mjj.js → location-services-jy50qwea.js} +7 -7
  169. package/dist/chunks/{variant-9e5bzkjp.js → location-services-kb9j3d72.js} +3 -3
  170. package/dist/chunks/{variant-8a6ws7jr.js → location-services-kbc5vjqx.js} +9 -9
  171. package/dist/chunks/{variant-n49rxvzx.js → location-services-kfd8nr0x.js} +82 -82
  172. package/dist/chunks/{variant-nm57fktp.js → location-services-km3q0jzz.js} +1 -1
  173. package/dist/chunks/{variant-t4q1mmep.js → location-services-kn6rpkjj.js} +15 -15
  174. package/dist/chunks/{variant-tyt8argr.js → location-services-kpdw2w1f.js} +11 -11
  175. package/dist/chunks/{variant-wncc9x2v.js → location-services-kpvtvmar.js} +40 -31
  176. package/dist/chunks/{variant-9sk57pab.js → location-services-kxc47ydf.js} +7 -7
  177. package/dist/chunks/{variant-x6g6krdm.js → location-services-ky9wb2b6.js} +4 -4
  178. package/dist/chunks/{variant-qez5g771.js → location-services-m2wdsk0y.js} +13 -13
  179. package/dist/chunks/{variant-m3fdjcah.js → location-services-m3fdjcah.js} +1 -1
  180. package/dist/chunks/{variant-nv777kha.js → location-services-m3tjbat9.js} +27 -27
  181. package/dist/chunks/{variant-1a37t69z.js → location-services-m55qy151.js} +10 -10
  182. package/dist/chunks/{variant-m9w0rfyh.js → location-services-m9w0rfyh.js} +1 -1
  183. package/dist/chunks/{variant-199h81f9.js → location-services-mbzs7f5w.js} +9 -9
  184. package/dist/chunks/{variant-1ygqh575.js → location-services-mfqp6xfm.js} +6 -6
  185. package/dist/chunks/{variant-6knrp48h.js → location-services-mp6hah50.js} +11 -11
  186. package/dist/chunks/{variant-ahd542yp.js → location-services-ms93yq6r.js} +8 -8
  187. package/dist/chunks/{variant-g2w01a3j.js → location-services-mz0nparr.js} +11 -11
  188. package/dist/chunks/{variant-1x2vtrrc.js → location-services-n1tn96dy.js} +25 -25
  189. package/dist/chunks/{variant-t968jqya.js → location-services-n2sybw15.js} +9 -9
  190. package/dist/chunks/{variant-dr8qfpz2.js → location-services-n4swcb0t.js} +48 -48
  191. package/dist/chunks/{variant-gm3ga81k.js → location-services-ncrrbzx4.js} +18 -18
  192. package/dist/chunks/{variant-zy36ej5j.js → location-services-nd8mttf9.js} +5 -5
  193. package/dist/chunks/location-services-ng6mtv9p.js +804 -0
  194. package/dist/chunks/{variant-mgbygx5e.js → location-services-nnp9mmjf.js} +6 -6
  195. package/dist/chunks/{variant-x12m2wf0.js → location-services-npgbbvk3.js} +3 -3
  196. package/dist/chunks/{variant-7nbd6e42.js → location-services-nq21c0gd.js} +15 -15
  197. package/dist/chunks/{variant-drnf6xwf.js → location-services-nqxj0yn4.js} +2 -2
  198. package/dist/chunks/{variant-sez5jh81.js → location-services-nrdmrqsx.js} +4 -4
  199. package/dist/chunks/{variant-2hpcj340.js → location-services-nv669pfy.js} +20 -20
  200. package/dist/chunks/{variant-h97ec9bp.js → location-services-nw6v932m.js} +8 -8
  201. package/dist/chunks/{variant-zm31y1th.js → location-services-nw7jj9x7.js} +6 -6
  202. package/dist/chunks/{variant-e8pjc55s.js → location-services-nx4qc7m3.js} +16 -16
  203. package/dist/chunks/{variant-rhraev7y.js → location-services-nxer0yad.js} +4 -4
  204. package/dist/chunks/{variant-fmxe4r4y.js → location-services-nyc5zq8g.js} +9 -9
  205. package/dist/chunks/{variant-bg4pcaf0.js → location-services-p7jag4ba.js} +7 -7
  206. package/dist/chunks/{variant-30krspkn.js → location-services-pcxghkgz.js} +4 -4
  207. package/dist/chunks/location-services-phz3h32g.js +18 -0
  208. package/dist/chunks/{variant-pjvnvgmy.js → location-services-pjvnvgmy.js} +1 -1
  209. package/dist/chunks/{variant-ydebc2ey.js → location-services-pjxwrfec.js} +3 -3
  210. package/dist/chunks/{variant-pknna89w.js → location-services-pknna89w.js} +1 -1
  211. package/dist/chunks/{variant-x22hsb2q.js → location-services-pwjskxwy.js} +45 -45
  212. package/dist/chunks/{variant-v3etbtgk.js → location-services-py3xsg43.js} +32 -32
  213. package/dist/chunks/{variant-q0xm7vwc.js → location-services-q0xm7vwc.js} +2 -2
  214. package/dist/chunks/{variant-2rehhz5t.js → location-services-q9099wq0.js} +11 -11
  215. package/dist/chunks/{variant-qjeq5gt4.js → location-services-qbqyxtrr.js} +9 -9
  216. package/dist/chunks/{variant-fgsd6912.js → location-services-qe1dfmj5.js} +10 -10
  217. package/dist/chunks/{variant-qgn6gcr1.js → location-services-qgn6gcr1.js} +1 -1
  218. package/dist/chunks/{variant-k98qre1b.js → location-services-qhaz1dgr.js} +42 -42
  219. package/dist/chunks/{variant-1m9c4w4n.js → location-services-qmemjc4c.js} +42 -42
  220. package/dist/chunks/{variant-qnc92qwc.js → location-services-qnc92qwc.js} +1 -1
  221. package/dist/chunks/{variant-qsdy395h.js → location-services-qsdy395h.js} +1 -1
  222. package/dist/chunks/{variant-qxjc9qry.js → location-services-qxjc9qry.js} +3 -3
  223. package/dist/chunks/{variant-b3f8fkhc.js → location-services-qygbw77c.js} +5 -5
  224. package/dist/chunks/{variant-79qaa2kf.js → location-services-r2m716tb.js} +9 -9
  225. package/dist/chunks/{variant-prq7hedt.js → location-services-r9w3djhf.js} +9 -9
  226. package/dist/chunks/{variant-rdw6cm16.js → location-services-rdw6cm16.js} +1 -1
  227. package/dist/chunks/{variant-1fhrtjm6.js → location-services-re778bjs.js} +8 -8
  228. package/dist/chunks/{variant-xa75nvv1.js → location-services-rr8str7e.js} +11 -11
  229. package/dist/chunks/{variant-yyet1bp6.js → location-services-rv5eepcz.js} +3 -3
  230. package/dist/chunks/{variant-45tbjbdt.js → location-services-s4fmg9a9.js} +36 -36
  231. package/dist/chunks/{variant-z5qfcjmc.js → location-services-s6cn836p.js} +4 -4
  232. package/dist/chunks/{variant-v8gdyxxj.js → location-services-s89werp4.js} +6 -6
  233. package/dist/chunks/{variant-yrdak7p3.js → location-services-s9pfz9kw.js} +39 -39
  234. package/dist/chunks/{variant-9z8hbw8m.js → location-services-sn65mkzm.js} +24 -24
  235. package/dist/chunks/{variant-vhqj0s9d.js → location-services-stx8q1jh.js} +8 -8
  236. package/dist/chunks/{variant-m9r1t6g4.js → location-services-sw2694pe.js} +11 -11
  237. package/dist/chunks/{variant-pz8vp5s8.js → location-services-swh0ttr4.js} +35 -35
  238. package/dist/chunks/{variant-5ygzbsd1.js → location-services-t35zxaf7.js} +8 -8
  239. package/dist/chunks/{variant-tafngdt4.js → location-services-t82x27tp.js} +49 -49
  240. package/dist/chunks/{variant-tazgh4e4.js → location-services-tazgh4e4.js} +1 -1
  241. package/dist/chunks/{variant-tdstcens.js → location-services-tdstcens.js} +1 -1
  242. package/dist/chunks/{variant-f4emsg9g.js → location-services-tnv0t922.js} +21 -21
  243. package/dist/chunks/{variant-4es70h3r.js → location-services-twj6n9q2.js} +15 -15
  244. package/dist/chunks/{variant-wr410q8q.js → location-services-txan1asv.js} +11 -11
  245. package/dist/chunks/{variant-bgs9y14h.js → location-services-v6ghzfeb.js} +5 -5
  246. package/dist/chunks/{variant-qy4vpyeb.js → location-services-v8rmp2e0.js} +25 -25
  247. package/dist/chunks/{variant-ytxvdrv4.js → location-services-v8xbzm74.js} +25 -25
  248. package/dist/chunks/{variant-veqvce7d.js → location-services-veqvce7d.js} +1 -1
  249. package/dist/chunks/{variant-13ffgj4a.js → location-services-vvj8pq1t.js} +27 -27
  250. package/dist/chunks/{variant-vzs5sf6e.js → location-services-vzs5sf6e.js} +1 -1
  251. package/dist/chunks/{variant-84txncab.js → location-services-w1eejvng.js} +5 -5
  252. package/dist/chunks/{variant-w3wsvvr9.js → location-services-w3wsvvr9.js} +1 -1
  253. package/dist/chunks/{variant-nr7nt1j1.js → location-services-w5t7z4tt.js} +26 -26
  254. package/dist/chunks/{variant-wd87259q.js → location-services-wd87259q.js} +1 -1
  255. package/dist/chunks/{variant-nyh253sr.js → location-services-wff4vpe0.js} +14 -14
  256. package/dist/chunks/{variant-yj12ce45.js → location-services-wsgfm6ye.js} +22 -22
  257. package/dist/chunks/{variant-7x1g6g7e.js → location-services-wtq39amh.js} +24 -24
  258. package/dist/chunks/{variant-397njdte.js → location-services-wxeenkga.js} +17 -17
  259. package/dist/chunks/{variant-71238w16.js → location-services-x532wrke.js} +19 -19
  260. package/dist/chunks/{variant-addxnjmp.js → location-services-x661k3y3.js} +4 -4
  261. package/dist/chunks/{variant-p83wwthj.js → location-services-x7m666y7.js} +7 -4
  262. package/dist/chunks/{variant-h1qkrmwx.js → location-services-xcarvbce.js} +3 -3
  263. package/dist/chunks/{variant-v0es1rhs.js → location-services-xecxzrdp.js} +2 -2
  264. package/dist/chunks/{variant-0jt3mewy.js → location-services-xnernrr1.js} +18 -18
  265. package/dist/chunks/{variant-6hcewhx6.js → location-services-xrkmrw9n.js} +11 -11
  266. package/dist/chunks/location-services-xtg7zkvg.js +253 -0
  267. package/dist/chunks/{variant-y1fvbwt7.js → location-services-y1fvbwt7.js} +1 -1
  268. package/dist/chunks/{variant-wmhvad8c.js → location-services-y727y3e6.js} +20 -20
  269. package/dist/chunks/{variant-78xwejay.js → location-services-y7b45w3g.js} +4 -4
  270. package/dist/chunks/{variant-61btxmby.js → location-services-yd0r0rva.js} +25 -25
  271. package/dist/chunks/{variant-2r25bgdf.js → location-services-yfmvpswg.js} +12 -12
  272. package/dist/chunks/{variant-4p4e40p5.js → location-services-yw2f8www.js} +20 -20
  273. package/dist/chunks/{variant-p1knbw1p.js → location-services-yxqxmbq1.js} +13 -13
  274. package/dist/chunks/{variant-w8fd2v8c.js → location-services-z04z598v.js} +3 -3
  275. package/dist/chunks/{variant-eahhehpg.js → location-services-z0aj456m.js} +4 -4
  276. package/dist/chunks/{variant-z0bkrqjs.js → location-services-z0bkrqjs.js} +1 -1
  277. package/dist/chunks/{variant-gjasn01h.js → location-services-z6n09y6b.js} +4 -4
  278. package/dist/chunks/{variant-wja9eyn5.js → location-services-za77p82n.js} +6 -6
  279. package/dist/chunks/{variant-zr2ceqn5.js → location-services-zr2ceqn5.js} +1 -1
  280. package/dist/chunks/{variant-n1n192bv.js → location-services-zsr4wwhv.js} +4 -4
  281. package/dist/chunks/{variant-wbdz0djz.js → location-services-zx1jgwxt.js} +9 -9
  282. package/dist/chunks/{variant-zxq2ej10.js → location-services-zxq2ej10.js} +1 -1
  283. package/dist/chunks/{variant-29qym6xz.js → location-services-zy43x3f1.js} +4 -4
  284. package/dist/codemode/catalog.js +1 -1
  285. package/dist/codemode/instructions.js +9 -9
  286. package/dist/codemode/tool.js +3 -3
  287. package/dist/codemode/web.js +1 -1
  288. package/dist/command.js +86 -86
  289. package/dist/config/discovery.js +85 -85
  290. package/dist/config/markdown.js +1 -1
  291. package/dist/config/normalize.js +100 -100
  292. package/dist/config/plugin/agent.js +119 -119
  293. package/dist/config/plugin/command.js +208 -208
  294. package/dist/config/plugin/compaction.js +155 -155
  295. package/dist/config/plugin/compatibility.js +135 -135
  296. package/dist/config/plugin/entry-observer.js +1 -1
  297. package/dist/config/plugin/formatter.js +118 -118
  298. package/dist/config/plugin/image.js +117 -117
  299. package/dist/config/plugin/instruction.js +91 -91
  300. package/dist/config/plugin/location-watcher.js +119 -119
  301. package/dist/config/plugin/mcp.js +126 -126
  302. package/dist/config/plugin/policy.js +118 -118
  303. package/dist/config/plugin/provider.js +117 -117
  304. package/dist/config/plugin/reference.js +119 -119
  305. package/dist/config/plugin/shell.js +117 -117
  306. package/dist/config/plugin/skill-file.js +103 -103
  307. package/dist/config/plugin/skill.js +138 -138
  308. package/dist/config/plugin/snapshot.js +117 -117
  309. package/dist/config/plugin/source.js +120 -120
  310. package/dist/config/plugin/tool-output.js +118 -118
  311. package/dist/config/plugin/websearch.js +116 -116
  312. package/dist/config/plugin/worktree.js +119 -119
  313. package/dist/config/variable.js +3 -3
  314. package/dist/config/watch.js +1 -1
  315. package/dist/config.js +118 -118
  316. package/dist/credential/sql.js +2 -2
  317. package/dist/credential.js +84 -84
  318. package/dist/database/database.js +67 -67
  319. package/dist/database/drizzle/effect-sqlite/driver.js +12 -12
  320. package/dist/database/drizzle/effect-sqlite/index.js +12 -12
  321. package/dist/database/drizzle/effect-sqlite/session.js +11 -11
  322. package/dist/database/drizzle/index.js +13 -13
  323. package/dist/database/drizzle/internal/drizzle-utils.js +1 -1
  324. package/dist/database/drizzle/sqlite-core/effect/count.js +1 -1
  325. package/dist/database/drizzle/sqlite-core/effect/db.js +9 -9
  326. package/dist/database/drizzle/sqlite-core/effect/delete.js +2 -2
  327. package/dist/database/drizzle/sqlite-core/effect/index.js +10 -10
  328. package/dist/database/drizzle/sqlite-core/effect/insert.js +2 -2
  329. package/dist/database/drizzle/sqlite-core/effect/query.js +1 -1
  330. package/dist/database/drizzle/sqlite-core/effect/raw.js +1 -1
  331. package/dist/database/drizzle/sqlite-core/effect/select.js +2 -2
  332. package/dist/database/drizzle/sqlite-core/effect/session.js +10 -10
  333. package/dist/database/drizzle/sqlite-core/effect/update.js +2 -2
  334. package/dist/database/drizzle.js +14 -14
  335. package/dist/database/migration/20260127222353_familiar_lady_ursula.js +1 -1
  336. package/dist/database/migration/20260211171708_add_project_commands.js +1 -1
  337. package/dist/database/migration/20260213144116_wakeful_the_professor.js +1 -1
  338. package/dist/database/migration/20260225215848_workspace.js +1 -1
  339. package/dist/database/migration/20260227213759_add_session_workspace_id.js +1 -1
  340. package/dist/database/migration/20260228203230_blue_harpoon.js +1 -1
  341. package/dist/database/migration/20260303231226_add_workspace_fields.js +1 -1
  342. package/dist/database/migration/20260309230000_move_org_to_state.js +1 -1
  343. package/dist/database/migration/20260312043431_session_message_cursor.js +1 -1
  344. package/dist/database/migration/20260323234822_events.js +1 -1
  345. package/dist/database/migration/20260410174513_workspace-name.js +1 -1
  346. package/dist/database/migration/20260413175956_chief_energizer.js +1 -1
  347. package/dist/database/migration/20260423070820_add_icon_url_override.js +1 -1
  348. package/dist/database/migration/20260427172553_slow_nightmare.js +1 -1
  349. package/dist/database/migration/20260428004200_add_session_path.js +1 -1
  350. package/dist/database/migration/20260501142318_next_venus.js +1 -1
  351. package/dist/database/migration/20260504145000_add_sync_owner.js +1 -1
  352. package/dist/database/migration/20260507164347_add_workspace_time.js +1 -1
  353. package/dist/database/migration/20260510033149_session_usage.js +1 -1
  354. package/dist/database/migration/20260511000411_data_migration_state.js +1 -1
  355. package/dist/database/migration/20260511173437_session-metadata.js +1 -1
  356. package/dist/database/migration/20260601010001_normalize_storage_paths.js +1 -1
  357. package/dist/database/migration/20260601202201_amazing_prowler.js +1 -1
  358. package/dist/database/migration/20260602002951_lowly_union_jack.js +1 -1
  359. package/dist/database/migration/20260602182828_add_project_directories.js +1 -1
  360. package/dist/database/migration/20260603001617_session_message_projection_indexes.js +1 -1
  361. package/dist/database/migration/20260603040000_session_message_projection_order.js +1 -1
  362. package/dist/database/migration/20260603141458_session_input_inbox.js +1 -1
  363. package/dist/database/migration/20260603160727_jittery_ezekiel_stane.js +1 -1
  364. package/dist/database/migration/20260604172448_event_sourced_session_input.js +1 -1
  365. package/dist/database/migration/20260605003541_add_session_context_snapshot.js +1 -1
  366. package/dist/database/migration/20260605042240_add_context_epoch_agent.js +1 -1
  367. package/dist/database/migration/20260611035744_credential.js +1 -1
  368. package/dist/database/migration/20260611192811_lush_chimera.js +1 -1
  369. package/dist/database/migration/20260612174303_project_dir_strategy.js +1 -1
  370. package/dist/database/migration/20260622142730_simplify_session_context_epoch.js +1 -1
  371. package/dist/database/migration/20260622170816_reset_v2_session_state.js +1 -1
  372. package/dist/database/migration/20260622202450_simplify_session_input.js +1 -1
  373. package/dist/database/migration/20260804233008_loose_psylocke.js +1 -1
  374. package/dist/database/migration/20260805200742_import_legacy_credentials.js +1 -1
  375. package/dist/database/migration/20260808023530_workspace_domain.js +1 -1
  376. package/dist/database/migration/20260811161259_execution_claim_attempts.js +1 -1
  377. package/dist/database/migration/20260812181746_session_inbox.js +1 -1
  378. package/dist/database/migration/20260812213948_worktree.js +1 -1
  379. package/dist/database/migration/20260819222447_session_viewed_state.js +1 -1
  380. package/dist/database/migration/20260823191254_nullable_workspace_binding.js +1 -1
  381. package/dist/database/migration/20260910120000_clear_v1_session_permission.js +1 -1
  382. package/dist/database/migration/20260923013825_project_time_active.js +1 -1
  383. package/dist/database/migration/20261007190000_azure_cli_external_credential.js +1 -1
  384. package/dist/database/migration.gen.js +50 -50
  385. package/dist/database/migration.js +52 -52
  386. package/dist/database/path.js +2 -2
  387. package/dist/database/schema.gen.js +1 -1
  388. package/dist/database/schema.sql.js +1 -1
  389. package/dist/database/sqlite.bun.js +1 -1
  390. package/dist/database/sqlite.js +1 -1
  391. package/dist/database/sqlite.node.js +1 -1
  392. package/dist/database/sqlite.workerd.js +1 -1
  393. package/dist/database/v1-migration.bun.js +77 -77
  394. package/dist/database/v1-migration.js +1 -1
  395. package/dist/effect/app-node-builder.js +364 -364
  396. package/dist/effect/app-node-platform.js +2 -2
  397. package/dist/effect/keyed-mutex.js +1 -1
  398. package/dist/effect/websocket-constructor.js +1 -1
  399. package/dist/environment/driver.js +1 -1
  400. package/dist/environment/environment.js +94 -94
  401. package/dist/environment/exec-defaults.js +2 -2
  402. package/dist/environment/files.js +1 -1
  403. package/dist/environment/index.js +94 -94
  404. package/dist/environment/local.js +2 -2
  405. package/dist/environment/memory.js +2 -2
  406. package/dist/environment/unavailable.js +1 -1
  407. package/dist/event/sql.js +1 -1
  408. package/dist/event-logger.js +71 -71
  409. package/dist/file-access.js +105 -105
  410. package/dist/file-mutation.js +95 -95
  411. package/dist/file-retention.js +1 -1
  412. package/dist/filesystem/fff.bun.js +2 -2
  413. package/dist/filesystem/fff.js +1 -1
  414. package/dist/filesystem/fff.node.js +2 -2
  415. package/dist/filesystem/fff.workerd.js +2 -2
  416. package/dist/filesystem/location-watcher-policy.js +6 -6
  417. package/dist/filesystem/location-watcher.js +221 -221
  418. package/dist/filesystem/protected.js +3 -3
  419. package/dist/filesystem/search.js +104 -104
  420. package/dist/filesystem/watcher-binding.js +1 -1
  421. package/dist/filesystem/watcher.js +9 -9
  422. package/dist/filesystem.js +107 -107
  423. package/dist/form.js +75 -75
  424. package/dist/formatter/builtins.js +2 -2
  425. package/dist/formatter.js +88 -88
  426. package/dist/generate.js +104 -104
  427. package/dist/git.js +6 -6
  428. package/dist/github-copilot/chat/convert-to-openai-compatible-chat-messages.js +1 -1
  429. package/dist/github-copilot/chat/get-response-metadata.js +1 -1
  430. package/dist/github-copilot/chat/map-openai-compatible-finish-reason.js +1 -1
  431. package/dist/github-copilot/chat/openai-compatible-chat-language-model.js +7 -7
  432. package/dist/github-copilot/chat/openai-compatible-chat-options.js +1 -1
  433. package/dist/github-copilot/chat/openai-compatible-prepare-tools.js +1 -1
  434. package/dist/github-copilot/copilot-provider.js +17 -17
  435. package/dist/github-copilot/models.js +92 -92
  436. package/dist/github-copilot/openai-compatible-error.js +1 -1
  437. package/dist/github-copilot/responses/convert-to-openai-responses-input.js +1 -1
  438. package/dist/github-copilot/responses/map-openai-responses-finish-reason.js +1 -1
  439. package/dist/github-copilot/responses/openai-error.js +1 -1
  440. package/dist/github-copilot/responses/openai-responses-language-model.js +10 -10
  441. package/dist/github-copilot/responses/openai-responses-prepare-tools.js +6 -6
  442. package/dist/github-copilot/responses/tool/code-interpreter.js +1 -1
  443. package/dist/github-copilot/responses/tool/file-search.js +1 -1
  444. package/dist/github-copilot/responses/tool/image-generation.js +1 -1
  445. package/dist/github-copilot/responses/tool/web-search-preview.js +1 -1
  446. package/dist/github-copilot/responses/tool/web-search.js +1 -1
  447. package/dist/image/photon.js +2 -2
  448. package/dist/image.js +6 -6
  449. package/dist/instance/service.js +5 -5
  450. package/dist/instance.js +355 -355
  451. package/dist/instruction-discovery.js +84 -84
  452. package/dist/instructions/builtins.js +88 -88
  453. package/dist/instructions/index.js +3 -3
  454. package/dist/integration/connection.js +3 -3
  455. package/dist/integration.js +84 -84
  456. package/dist/job.js +79 -79
  457. package/dist/kv/sql.js +2 -2
  458. package/dist/kv.js +74 -74
  459. package/dist/location-activity.js +132 -132
  460. package/dist/location-lifecycle.js +108 -108
  461. package/dist/location-service-map.js +87 -87
  462. package/dist/location-services.js +352 -352
  463. package/dist/location.js +82 -82
  464. package/dist/managed-policy.js +8 -8
  465. package/dist/mcp/client.js +92 -92
  466. package/dist/mcp/index.js +110 -110
  467. package/dist/mcp/instructions.js +130 -130
  468. package/dist/mcp/oauth.js +79 -79
  469. package/dist/mcp/stdio.js +91 -91
  470. package/dist/mime.js +1 -1
  471. package/dist/modal/models.js +92 -92
  472. package/dist/model-resolver.js +99 -99
  473. package/dist/model.js +103 -103
  474. package/dist/models-dev.js +108 -108
  475. package/dist/oauth/page.js +1 -1
  476. package/dist/permission/saved.js +81 -81
  477. package/dist/permission/sql.js +5 -5
  478. package/dist/permission.js +108 -108
  479. package/dist/persistent-pty/binary.bun.js +1 -1
  480. package/dist/persistent-pty/daemon.js +1 -1
  481. package/dist/persistent-pty/index.js +89 -89
  482. package/dist/persistent-pty/pty-binding.js +1 -1
  483. package/dist/persistent-pty.js +76 -76
  484. package/dist/plugin/agent.js +77 -77
  485. package/dist/plugin/command.js +103 -103
  486. package/dist/plugin/hooks.js +5 -5
  487. package/dist/plugin/host.js +212 -212
  488. package/dist/plugin/identity.js +3 -3
  489. package/dist/plugin/instance.js +1 -1
  490. package/dist/plugin/internal.js +327 -327
  491. package/dist/plugin/mcp-codemode-defaults.js +3 -3
  492. package/dist/plugin/models-dev.js +97 -97
  493. package/dist/plugin/module.js +116 -116
  494. package/dist/plugin/optimize.js +4 -4
  495. package/dist/plugin/plan.js +103 -103
  496. package/dist/plugin/promise.js +1 -1
  497. package/dist/plugin/provider/amazon-bedrock.js +91 -91
  498. package/dist/plugin/provider/azure.js +118 -118
  499. package/dist/plugin/provider/cerebras.js +1 -1
  500. package/dist/plugin/provider/chatgpt.js +95 -95
  501. package/dist/plugin/provider/cloudflare-ai-gateway.js +114 -114
  502. package/dist/plugin/provider/cloudflare-workers-ai.js +115 -115
  503. package/dist/plugin/provider/cohere.js +2 -2
  504. package/dist/plugin/provider/configured.js +113 -113
  505. package/dist/plugin/provider/digitalocean.js +94 -94
  506. package/dist/plugin/provider/dynamic.js +2 -2
  507. package/dist/plugin/provider/factory.js +1 -1
  508. package/dist/plugin/provider/github-copilot.js +96 -96
  509. package/dist/plugin/provider/gitlab.js +94 -94
  510. package/dist/plugin/provider/google-vertex.js +114 -91
  511. package/dist/plugin/provider/kilo.js +1 -1
  512. package/dist/plugin/provider/llmgateway.js +79 -79
  513. package/dist/plugin/provider/lmstudio.js +117 -117
  514. package/dist/plugin/provider/local.js +114 -114
  515. package/dist/plugin/provider/modal.js +93 -93
  516. package/dist/plugin/provider/nvidia.js +1 -1
  517. package/dist/plugin/provider/ollama.js +117 -117
  518. package/dist/plugin/provider/openai.js +96 -96
  519. package/dist/plugin/provider/opencode.js +98 -98
  520. package/dist/plugin/provider/openrouter.js +92 -92
  521. package/dist/plugin/provider/perplexity.js +2 -2
  522. package/dist/plugin/provider/poe.js +80 -80
  523. package/dist/plugin/provider/prompt-cache-key.js +91 -91
  524. package/dist/plugin/provider/sap-ai-core.js +92 -92
  525. package/dist/plugin/provider/sdk-factory.js +1 -1
  526. package/dist/plugin/provider/snowflake-cortex.js +116 -116
  527. package/dist/plugin/provider/vercel.js +91 -91
  528. package/dist/plugin/provider/vllm.js +117 -117
  529. package/dist/plugin/provider/xai.js +92 -92
  530. package/dist/plugin/provider/zenmux.js +1 -1
  531. package/dist/plugin/provider.js +157 -157
  532. package/dist/plugin/sdk.js +77 -77
  533. package/dist/plugin/service.js +3 -3
  534. package/dist/plugin/skill.js +135 -135
  535. package/dist/plugin/source-directory.js +1 -1
  536. package/dist/plugin/supervisor.js +344 -344
  537. package/dist/plugin/tool-input-repair.js +4 -4
  538. package/dist/plugin/update.js +6 -6
  539. package/dist/plugin/vcs/git.js +87 -87
  540. package/dist/plugin/vcs/hg.js +87 -87
  541. package/dist/plugin/verbosity.js +94 -94
  542. package/dist/plugin/warming.js +115 -115
  543. package/dist/plugin/websearch/exa.js +7 -7
  544. package/dist/plugin/websearch/firecrawl.js +8 -8
  545. package/dist/plugin/websearch/index.js +9 -9
  546. package/dist/plugin/websearch/mcp.js +4 -4
  547. package/dist/plugin/websearch/parallel.js +8 -8
  548. package/dist/plugin/websearch/tavily.js +6 -6
  549. package/dist/plugin/websearch/tinyfish.js +8 -8
  550. package/dist/plugin.js +223 -223
  551. package/dist/project/schema.js +2 -2
  552. package/dist/project/sql.js +4 -4
  553. package/dist/project.js +81 -81
  554. package/dist/provider.js +96 -96
  555. package/dist/pty/protocol.js +1 -1
  556. package/dist/pty/ticket.js +1 -1
  557. package/dist/pty.js +98 -98
  558. package/dist/reference/instructions.js +90 -90
  559. package/dist/reference.js +90 -90
  560. package/dist/repository-cache.js +80 -80
  561. package/dist/repository.js +3 -3
  562. package/dist/ripgrep/binary.js +2 -2
  563. package/dist/ripgrep.js +98 -98
  564. package/dist/rpc.js +87 -87
  565. package/dist/schema.js +1 -1
  566. package/dist/session/affinity.js +1 -1
  567. package/dist/session/command.js +75 -75
  568. package/dist/session/compaction.js +136 -136
  569. package/dist/session/context.js +154 -154
  570. package/dist/session/diff.js +89 -89
  571. package/dist/session/environment.js +5 -5
  572. package/dist/session/error.js +3 -3
  573. package/dist/session/event.js +1 -1
  574. package/dist/session/execution/restart.js +215 -215
  575. package/dist/session/execution.js +128 -128
  576. package/dist/session/generate.js +155 -155
  577. package/dist/session/history.js +13 -13
  578. package/dist/session/inbox.js +91 -91
  579. package/dist/session/info.js +3 -3
  580. package/dist/session/instruction-entry.js +78 -78
  581. package/dist/session/instruction-state.js +8 -8
  582. package/dist/session/instructions.js +98 -98
  583. package/dist/session/message-updater.js +4 -4
  584. package/dist/session/message.js +1 -1
  585. package/dist/session/model-request.js +121 -121
  586. package/dist/session/model-transport.js +9 -9
  587. package/dist/session/move.js +130 -130
  588. package/dist/session/projector.js +87 -87
  589. package/dist/session/prompt.js +106 -106
  590. package/dist/session/provider-context.js +3 -3
  591. package/dist/session/revert.js +91 -91
  592. package/dist/session/run-coordinator.js +3 -3
  593. package/dist/session/runner/index.js +3 -3
  594. package/dist/session/runner/llm.js +225 -225
  595. package/dist/session/runner/max-steps.js +1 -1
  596. package/dist/session/runner/model.js +99 -99
  597. package/dist/session/runner/publish-llm-event.js +114 -114
  598. package/dist/session/runner/retry.js +4 -4
  599. package/dist/session/runner/step.js +124 -124
  600. package/dist/session/runner/to-llm-message.js +2 -2
  601. package/dist/session/schema.js +3 -3
  602. package/dist/session/session.js +163 -163
  603. package/dist/session/shell.js +131 -131
  604. package/dist/session/skill.js +104 -104
  605. package/dist/session/sql.js +5 -5
  606. package/dist/session/stats.js +74 -74
  607. package/dist/session/store.js +86 -86
  608. package/dist/session/subagent-completion.js +1 -1
  609. package/dist/session/subagent-job.js +204 -204
  610. package/dist/session/system-prompt.js +3 -3
  611. package/dist/session/title.js +158 -158
  612. package/dist/session/to-session-error.js +112 -112
  613. package/dist/session/transfer.js +208 -208
  614. package/dist/session/usage.js +1 -1
  615. package/dist/session.js +208 -208
  616. package/dist/shell/parse.js +6 -6
  617. package/dist/shell/result.js +1 -1
  618. package/dist/shell/scan.js +1 -1
  619. package/dist/shell/select.js +15 -15
  620. package/dist/shell.js +131 -131
  621. package/dist/skill/discovery.js +6 -6
  622. package/dist/skill/instructions.js +106 -106
  623. package/dist/skill.js +115 -115
  624. package/dist/snapshot.js +94 -94
  625. package/dist/state.js +1 -1
  626. package/dist/tool/html-markdown.js +1 -1
  627. package/dist/tool/http-body.js +1 -1
  628. package/dist/tool/mcp.js +129 -129
  629. package/dist/tool/plugin/edit.js +121 -121
  630. package/dist/tool/plugin/file-diff.js +1 -1
  631. package/dist/tool/plugin/glob.js +125 -125
  632. package/dist/tool/plugin/grep.js +125 -125
  633. package/dist/tool/plugin/mcp-resource.js +118 -118
  634. package/dist/tool/plugin/opencode.js +3 -3
  635. package/dist/tool/plugin/patch.js +123 -123
  636. package/dist/tool/plugin/question.js +106 -106
  637. package/dist/tool/plugin/read.js +126 -126
  638. package/dist/tool/plugin/shell.js +209 -209
  639. package/dist/tool/plugin/skill.js +112 -112
  640. package/dist/tool/plugin/subagent.js +213 -213
  641. package/dist/tool/plugin/webfetch.js +109 -109
  642. package/dist/tool/plugin/websearch.js +111 -111
  643. package/dist/tool/plugin/write.js +117 -117
  644. package/dist/tool/read-filesystem.js +101 -101
  645. package/dist/tool/runtime.js +1 -1
  646. package/dist/tool-output.js +7 -7
  647. package/dist/tool.js +16 -16
  648. package/dist/types/git.d.ts +23 -10
  649. package/dist/types/plugin/provider/google-vertex.d.ts +5 -1
  650. package/dist/types/session/runner/publish-llm-event.d.ts +2 -1
  651. package/dist/util/error-summary.js +1 -1
  652. package/dist/util/error.js +1 -1
  653. package/dist/util/git-executable.js +2 -2
  654. package/dist/util/iife.js +1 -1
  655. package/dist/util/lazy.js +1 -1
  656. package/dist/util/slug.js +1 -1
  657. package/dist/util/token.js +1 -1
  658. package/dist/util/which.js +1 -1
  659. package/dist/util/wildcard.js +1 -1
  660. package/dist/v1/config/agent.js +5 -5
  661. package/dist/v1/config/command.js +3 -3
  662. package/dist/v1/config/error.js +2 -2
  663. package/dist/v1/config/mcp.js +4 -4
  664. package/dist/v1/config/migrate.js +93 -93
  665. package/dist/v1/config/permission.js +3 -3
  666. package/dist/v1/config/plugin.js +1 -1
  667. package/dist/v1/config/provider-options.js +1 -1
  668. package/dist/v1/config/provider.js +4 -4
  669. package/dist/variant.js +94 -94
  670. package/dist/vcs/patch.js +1 -1
  671. package/dist/vcs.js +90 -90
  672. package/dist/websearch.js +85 -85
  673. package/dist/wellknown/plugin.js +77 -77
  674. package/dist/wellknown.js +82 -82
  675. package/dist/workspace/driver.js +5 -5
  676. package/dist/workspace/sql.js +1 -1
  677. package/dist/workspace.js +79 -79
  678. package/dist/worktree/directory.js +2 -2
  679. package/dist/worktree/git.js +10 -10
  680. package/dist/worktree/sql.js +5 -5
  681. package/dist/worktree/strategies.js +90 -90
  682. package/dist/worktree.js +97 -97
  683. package/package.json +8 -8
  684. package/dist/chunks/variant-9zdhvgqs.js +0 -18
  685. package/dist/chunks/variant-dhyj2516.js +0 -253
  686. package/dist/chunks/variant-hs1x7rht.js +0 -466
  687. package/dist/chunks/variant-r4e50z9n.js +0 -507
  688. package/dist/chunks/variant-s6bevt7v.js +0 -26
  689. package/dist/chunks/variant-vw65f48a.js +0 -69
  690. /package/dist/chunks/{variant-0qkdqm5v.js → location-services-0qkdqm5v.js} +0 -0
  691. /package/dist/chunks/{variant-0zkw76rk.js → location-services-0zkw76rk.js} +0 -0
  692. /package/dist/chunks/{variant-17cy0kzp.js → location-services-17cy0kzp.js} +0 -0
  693. /package/dist/chunks/{variant-1cnp2v09.js → location-services-1cnp2v09.js} +0 -0
  694. /package/dist/chunks/{variant-1kg9ymc8.js → location-services-1kg9ymc8.js} +0 -0
  695. /package/dist/chunks/{variant-24dcb14g.js → location-services-24dcb14g.js} +0 -0
  696. /package/dist/chunks/{variant-2710q6r3.js → location-services-2710q6r3.js} +0 -0
  697. /package/dist/chunks/{variant-2axfhc9x.js → location-services-2axfhc9x.js} +0 -0
  698. /package/dist/chunks/{variant-2c3vjs8z.js → location-services-2c3vjs8z.js} +0 -0
  699. /package/dist/chunks/{variant-34c7v6d4.js → location-services-34c7v6d4.js} +0 -0
  700. /package/dist/chunks/{variant-359p4xyc.js → location-services-359p4xyc.js} +0 -0
  701. /package/dist/chunks/{variant-3asan66x.js → location-services-3asan66x.js} +0 -0
  702. /package/dist/chunks/{variant-3t0ybcrp.js → location-services-3t0ybcrp.js} +0 -0
  703. /package/dist/chunks/{variant-3v8g72cx.js → location-services-3v8g72cx.js} +0 -0
  704. /package/dist/chunks/{variant-3w5fmr99.js → location-services-3w5fmr99.js} +0 -0
  705. /package/dist/chunks/{variant-3wcehsnq.js → location-services-3wcehsnq.js} +0 -0
  706. /package/dist/chunks/{variant-43n2bw4t.js → location-services-43n2bw4t.js} +0 -0
  707. /package/dist/chunks/{variant-4knz6hnm.js → location-services-4knz6hnm.js} +0 -0
  708. /package/dist/chunks/{variant-4vcrnpx2.js → location-services-4vcrnpx2.js} +0 -0
  709. /package/dist/chunks/{variant-4y7fprxs.js → location-services-4y7fprxs.js} +0 -0
  710. /package/dist/chunks/{variant-53557ph1.js → location-services-53557ph1.js} +0 -0
  711. /package/dist/chunks/{variant-550bvhaj.js → location-services-550bvhaj.js} +0 -0
  712. /package/dist/chunks/{variant-5qd3pb7m.js → location-services-5qd3pb7m.js} +0 -0
  713. /package/dist/chunks/{variant-6prwharc.js → location-services-6prwharc.js} +0 -0
  714. /package/dist/chunks/{variant-6q2bdcd1.js → location-services-6q2bdcd1.js} +0 -0
  715. /package/dist/chunks/{variant-7akdwqpd.js → location-services-7akdwqpd.js} +0 -0
  716. /package/dist/chunks/{variant-7m9af43g.js → location-services-7m9af43g.js} +0 -0
  717. /package/dist/chunks/{variant-822emrt2.js → location-services-822emrt2.js} +0 -0
  718. /package/dist/chunks/{variant-84wd9syh.js → location-services-84wd9syh.js} +0 -0
  719. /package/dist/chunks/{variant-88xbtdfr.js → location-services-88xbtdfr.js} +0 -0
  720. /package/dist/chunks/{variant-8n3pysct.js → location-services-8n3pysct.js} +0 -0
  721. /package/dist/chunks/{variant-8wj87zfr.js → location-services-8wj87zfr.js} +0 -0
  722. /package/dist/chunks/{variant-9a4afbnw.js → location-services-9a4afbnw.js} +0 -0
  723. /package/dist/chunks/{variant-9rqn6x4v.js → location-services-9rqn6x4v.js} +0 -0
  724. /package/dist/chunks/{variant-a6k6eb26.js → location-services-a6k6eb26.js} +0 -0
  725. /package/dist/chunks/{variant-af5trqkr.js → location-services-af5trqkr.js} +0 -0
  726. /package/dist/chunks/{variant-afrmfg78.js → location-services-afrmfg78.js} +0 -0
  727. /package/dist/chunks/{variant-aqzs7mqg.js → location-services-aqzs7mqg.js} +0 -0
  728. /package/dist/chunks/{variant-atq7p7m5.js → location-services-atq7p7m5.js} +0 -0
  729. /package/dist/chunks/{variant-bkyjaxrp.js → location-services-bkyjaxrp.js} +0 -0
  730. /package/dist/chunks/{variant-bmr6ed5q.js → location-services-bmr6ed5q.js} +0 -0
  731. /package/dist/chunks/{variant-cf4snx6d.js → location-services-cf4snx6d.js} +0 -0
  732. /package/dist/chunks/{variant-cvy3z8tj.js → location-services-cvy3z8tj.js} +0 -0
  733. /package/dist/chunks/{variant-d9fn303g.js → location-services-d9fn303g.js} +0 -0
  734. /package/dist/chunks/{variant-d9jj8t3e.js → location-services-d9jj8t3e.js} +0 -0
  735. /package/dist/chunks/{variant-dajrwvna.js → location-services-dajrwvna.js} +0 -0
  736. /package/dist/chunks/{variant-dap0rakb.js → location-services-dap0rakb.js} +0 -0
  737. /package/dist/chunks/{variant-df08tz66.js → location-services-df08tz66.js} +0 -0
  738. /package/dist/chunks/{variant-dy18nga0.js → location-services-dy18nga0.js} +0 -0
  739. /package/dist/chunks/{variant-e5kj55wp.js → location-services-e5kj55wp.js} +0 -0
  740. /package/dist/chunks/{variant-e73j6tqm.js → location-services-e73j6tqm.js} +0 -0
  741. /package/dist/chunks/{variant-ec1grn59.js → location-services-ec1grn59.js} +0 -0
  742. /package/dist/chunks/{variant-eh3zwz77.js → location-services-eh3zwz77.js} +0 -0
  743. /package/dist/chunks/{variant-emrn6kk6.js → location-services-emrn6kk6.js} +0 -0
  744. /package/dist/chunks/{variant-f0mxakyp.js → location-services-f0mxakyp.js} +0 -0
  745. /package/dist/chunks/{variant-f6n9ztr4.js → location-services-f6n9ztr4.js} +0 -0
  746. /package/dist/chunks/{variant-faypxj3z.js → location-services-faypxj3z.js} +0 -0
  747. /package/dist/chunks/{variant-fd410y7t.js → location-services-fd410y7t.js} +0 -0
  748. /package/dist/chunks/{variant-fxgpk5d8.js → location-services-fxgpk5d8.js} +0 -0
  749. /package/dist/chunks/{variant-g4wezp1m.js → location-services-g4wezp1m.js} +0 -0
  750. /package/dist/chunks/{variant-g86h250q.js → location-services-g86h250q.js} +0 -0
  751. /package/dist/chunks/{variant-gebd4c9n.js → location-services-gebd4c9n.js} +0 -0
  752. /package/dist/chunks/{variant-gftt206x.js → location-services-gftt206x.js} +0 -0
  753. /package/dist/chunks/{variant-hk9envan.js → location-services-hk9envan.js} +0 -0
  754. /package/dist/chunks/{variant-j2ntwpah.js → location-services-j2ntwpah.js} +0 -0
  755. /package/dist/chunks/{variant-j5zkgpj8.js → location-services-j5zkgpj8.js} +0 -0
  756. /package/dist/chunks/{variant-jjkms2e6.js → location-services-jjkms2e6.js} +0 -0
  757. /package/dist/chunks/{variant-jr7sbwjy.js → location-services-jr7sbwjy.js} +0 -0
  758. /package/dist/chunks/{variant-jwfs4k6c.js → location-services-jwfs4k6c.js} +0 -0
  759. /package/dist/chunks/{variant-jzg6c2d5.js → location-services-jzg6c2d5.js} +0 -0
  760. /package/dist/chunks/{variant-mp448xyj.js → location-services-mp448xyj.js} +0 -0
  761. /package/dist/chunks/{variant-msx8hqn2.js → location-services-msx8hqn2.js} +0 -0
  762. /package/dist/chunks/{variant-n05xt0ee.js → location-services-n05xt0ee.js} +0 -0
  763. /package/dist/chunks/{variant-n3j8tn72.js → location-services-n3j8tn72.js} +0 -0
  764. /package/dist/chunks/{variant-njntx4h6.js → location-services-njntx4h6.js} +0 -0
  765. /package/dist/chunks/{variant-q3sfg36h.js → location-services-q3sfg36h.js} +0 -0
  766. /package/dist/chunks/{variant-q74kybfr.js → location-services-q74kybfr.js} +0 -0
  767. /package/dist/chunks/{variant-qaymkmh1.js → location-services-qaymkmh1.js} +0 -0
  768. /package/dist/chunks/{variant-qb87gjwd.js → location-services-qb87gjwd.js} +0 -0
  769. /package/dist/chunks/{variant-qfa1cgps.js → location-services-qfa1cgps.js} +0 -0
  770. /package/dist/chunks/{variant-qg3g05ea.js → location-services-qg3g05ea.js} +0 -0
  771. /package/dist/chunks/{variant-qrg20bc0.js → location-services-qrg20bc0.js} +0 -0
  772. /package/dist/chunks/{variant-rcb2kzg1.js → location-services-rcb2kzg1.js} +0 -0
  773. /package/dist/chunks/{variant-sdp7kfr6.js → location-services-sdp7kfr6.js} +0 -0
  774. /package/dist/chunks/{variant-ssg3fenm.js → location-services-ssg3fenm.js} +0 -0
  775. /package/dist/chunks/{variant-w803qqfp.js → location-services-w803qqfp.js} +0 -0
  776. /package/dist/chunks/{variant-wc3fc9cn.js → location-services-wc3fc9cn.js} +0 -0
  777. /package/dist/chunks/{variant-wer8tq1h.js → location-services-wer8tq1h.js} +0 -0
  778. /package/dist/chunks/{variant-wtztk69x.js → location-services-wtztk69x.js} +0 -0
  779. /package/dist/chunks/{variant-x0ckcb58.js → location-services-x0ckcb58.js} +0 -0
  780. /package/dist/chunks/{variant-x61499pn.js → location-services-x61499pn.js} +0 -0
  781. /package/dist/chunks/{variant-y44na4kk.js → location-services-y44na4kk.js} +0 -0
  782. /package/dist/chunks/{variant-y8cydn3q.js → location-services-y8cydn3q.js} +0 -0
  783. /package/dist/chunks/{variant-y8f7s663.js → location-services-y8f7s663.js} +0 -0
  784. /package/dist/chunks/{variant-ygaqb7jw.js → location-services-ygaqb7jw.js} +0 -0
  785. /package/dist/chunks/{variant-ym463w8f.js → location-services-ym463w8f.js} +0 -0
  786. /package/dist/chunks/{variant-z5v4ffb3.js → location-services-z5v4ffb3.js} +0 -0
  787. /package/dist/chunks/{variant-z9919s4g.js → location-services-z9919s4g.js} +0 -0
@@ -0,0 +1,804 @@
1
+ import {
2
+ AbsolutePath2,
3
+ RelativePath2
4
+ } from "./location-services-z5v4ffb3.js";
5
+ import {
6
+ makeUnsafe2
7
+ } from "./location-services-dpkg50ah.js";
8
+ import {
9
+ MAX_TOTAL_PATCH_BYTES2,
10
+ emptyPatch2,
11
+ chunksByFile2
12
+ } from "./location-services-tazgh4e4.js";
13
+ import {
14
+ gitExecutable2
15
+ } from "./location-services-ef5x83kb.js";
16
+ import {
17
+ __export
18
+ } from "./location-services-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: () => Service82,
27
+ TreeID: () => TreeID2,
28
+ Worktree: () => Worktree2,
29
+ WorktreeError: () => WorktreeError2,
30
+ node: () => node86
31
+ });
32
+ import path from "path";
33
+ import { Cause, Context, Effect, Exit, Layer, Option, Schedule, Schema } from "effect";
34
+ import { ChildProcess } from "effect/unstable/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 Service82 extends Context.Service()("@opencode/Git") {
104
+ }
105
+ var layer = Layer.effect(Service82, 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 Service82.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 node86 = makeGlobalNode({ service: Service82, 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, Service82, node86, exports_git3 };