@opencode/core 2.0.24 → 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 (804) hide show
  1. package/dist/account/sql.js +1 -1
  2. package/dist/agent.js +84 -83
  3. package/dist/aisdk-native.js +90 -89
  4. package/dist/aisdk.js +95 -94
  5. package/dist/app.js +7 -7
  6. package/dist/bus.js +70 -69
  7. package/dist/chunks/{repository-4344f0hm.js → location-services-033h4s8k.js} +36 -36
  8. package/dist/chunks/{repository-srhj5f56.js → location-services-05rbeqff.js} +11 -11
  9. package/dist/chunks/{repository-m44fkk4m.js → location-services-0dzshrg8.js} +6 -6
  10. package/dist/chunks/{repository-0vbcp93d.js → location-services-0emb60td.js} +2 -2
  11. package/dist/chunks/{repository-46tr0mr7.js → location-services-0g2d8ktt.js} +32 -32
  12. package/dist/chunks/{repository-etdaqrbr.js → location-services-0gyy4w8j.js} +32 -32
  13. package/dist/chunks/{repository-embw8kgh.js → location-services-0k2v0y72.js} +4 -4
  14. package/dist/chunks/{repository-0paq2nw3.js → location-services-0paq2nw3.js} +1 -1
  15. package/dist/chunks/{repository-ntaqe8vs.js → location-services-13z4sfdv.js} +21 -21
  16. package/dist/chunks/{repository-6x4qebe7.js → location-services-14tdaeeb.js} +35 -35
  17. package/dist/chunks/{repository-cjwramev.js → location-services-1603qf85.js} +4 -4
  18. package/dist/chunks/{repository-f8tnf7f1.js → location-services-18cepezj.js} +12 -28
  19. package/dist/chunks/{repository-q7jxq9y7.js → location-services-1bywdm55.js} +35 -22
  20. package/dist/chunks/{repository-1dazxqgg.js → location-services-1dazxqgg.js} +2 -2
  21. package/dist/chunks/{repository-m993mvxq.js → location-services-1yjmjhdz.js} +156 -144
  22. package/dist/chunks/{repository-yqt58wae.js → location-services-1zmgywvv.js} +12 -12
  23. package/dist/chunks/{repository-g69c5a8v.js → location-services-22dd1myg.js} +16 -16
  24. package/dist/chunks/{repository-ef2cw19s.js → location-services-23etyap0.js} +10 -10
  25. package/dist/chunks/{repository-tk5m56y0.js → location-services-271jn6q7.js} +13 -13
  26. package/dist/chunks/{repository-2a5m3afh.js → location-services-2a5m3afh.js} +1 -1
  27. package/dist/chunks/{repository-kfj4fg87.js → location-services-2bz9fvty.js} +1 -1
  28. package/dist/chunks/{repository-ntbz9wjc.js → location-services-2dfj5p4n.js} +11 -11
  29. package/dist/chunks/{repository-ajh7mqgq.js → location-services-2h8jr8ns.js} +32 -32
  30. package/dist/chunks/{repository-erq8vxjr.js → location-services-2p3jady7.js} +1 -1
  31. package/dist/chunks/{repository-9815d8pv.js → location-services-2qatx596.js} +23 -14
  32. package/dist/chunks/{repository-ydszhw6d.js → location-services-2rarpg4h.js} +20 -20
  33. package/dist/chunks/{repository-77apbbcp.js → location-services-2ywvfrer.js} +97 -60
  34. package/dist/chunks/{repository-4z7pkycv.js → location-services-337ertw6.js} +19 -19
  35. package/dist/chunks/{repository-ecwx0042.js → location-services-37n1r8jq.js} +15 -15
  36. package/dist/chunks/{repository-h2b79v29.js → location-services-3cegwx68.js} +2 -2
  37. package/dist/chunks/{repository-3fc6dm20.js → location-services-3fc6dm20.js} +1 -1
  38. package/dist/chunks/{repository-3hepkmqq.js → location-services-3hepkmqq.js} +1 -1
  39. package/dist/chunks/{repository-zd30eb5w.js → location-services-3qaj82j9.js} +5 -5
  40. package/dist/chunks/{repository-3smtnn6g.js → location-services-3smtnn6g.js} +1 -1
  41. package/dist/chunks/{repository-3tvqynh2.js → location-services-3tvqynh2.js} +1 -1
  42. package/dist/chunks/{repository-4y69v0zr.js → location-services-3xwday2w.js} +13 -13
  43. package/dist/chunks/{repository-0g25qkkf.js → location-services-3ymvsd51.js} +11 -11
  44. package/dist/chunks/{repository-3zsf4n22.js → location-services-3zsf4n22.js} +1 -1
  45. package/dist/chunks/{repository-1gfgk62c.js → location-services-4e8vs6eh.js} +8 -8
  46. package/dist/chunks/{repository-nszdq9jy.js → location-services-4n7p58nn.js} +86 -86
  47. package/dist/chunks/{repository-2ccvkpx1.js → location-services-4ts7tf6z.js} +2 -2
  48. package/dist/chunks/{repository-32xj3ztx.js → location-services-4wk6a8dy.js} +38 -34
  49. package/dist/chunks/{repository-hw3ewgqj.js → location-services-545qbh9j.js} +11 -11
  50. package/dist/chunks/{repository-54ma36ye.js → location-services-54ma36ye.js} +1 -1
  51. package/dist/chunks/location-services-54wc3syr.js +26 -0
  52. package/dist/chunks/{repository-fy698pgn.js → location-services-54whn6c0.js} +20 -20
  53. package/dist/chunks/{repository-xmy45d6e.js → location-services-5ddhd1dx.js} +23 -23
  54. package/dist/chunks/{repository-9mhtj97w.js → location-services-5hbgr4ym.js} +26 -26
  55. package/dist/chunks/{repository-qv02qg64.js → location-services-5j2a3mtt.js} +5 -5
  56. package/dist/chunks/{repository-5m9w47nd.js → location-services-5m9w47nd.js} +1 -1
  57. package/dist/chunks/{repository-9yaf30yb.js → location-services-5pv1zqw9.js} +36 -36
  58. package/dist/chunks/{repository-e3qxr5gk.js → location-services-5qd3pb7m.js} +2 -2
  59. package/dist/chunks/{repository-qy0n8417.js → location-services-5r6vgt0c.js} +26 -26
  60. package/dist/chunks/{repository-5t3nmthw.js → location-services-5t3nmthw.js} +2 -2
  61. package/dist/chunks/{repository-s8qvywtq.js → location-services-685vzyzq.js} +11 -11
  62. package/dist/chunks/{repository-57myy5jh.js → location-services-69rwvrvy.js} +5 -5
  63. package/dist/chunks/{repository-0qpq6ar5.js → location-services-6cjchcpv.js} +7 -7
  64. package/dist/chunks/{repository-cb3fgacg.js → location-services-6czf1ptr.js} +29 -29
  65. package/dist/chunks/{repository-vngdzw63.js → location-services-6eqgd3yd.js} +40 -36
  66. package/dist/chunks/{repository-pk7hbv6p.js → location-services-6m2jx756.js} +21 -6
  67. package/dist/chunks/{repository-t7y8x8j8.js → location-services-6qp67sjv.js} +16 -16
  68. package/dist/chunks/{repository-zk46kswf.js → location-services-6rb6ntmj.js} +17 -17
  69. package/dist/chunks/{repository-z6b5w8cf.js → location-services-6rg2adkq.js} +2 -2
  70. package/dist/chunks/{repository-05t95569.js → location-services-6rt2kzb2.js} +20 -20
  71. package/dist/chunks/{repository-6xb47vfp.js → location-services-6xb47vfp.js} +1 -1
  72. package/dist/chunks/{repository-ve1j3q85.js → location-services-72ha41gd.js} +15 -15
  73. package/dist/chunks/{repository-aqryd466.js → location-services-73b4x9hb.js} +22 -22
  74. package/dist/chunks/{repository-7bmhse3q.js → location-services-7bmhse3q.js} +1 -1
  75. package/dist/chunks/{repository-qne3fa44.js → location-services-7cgt7722.js} +5 -5
  76. package/dist/chunks/{repository-8hjmwb77.js → location-services-7eh8rnse.js} +31 -23
  77. package/dist/chunks/{repository-2t9hnq90.js → location-services-7eyvw8cj.js} +10 -10
  78. package/dist/chunks/{repository-7z6z4pna.js → location-services-7f0130xc.js} +12 -12
  79. package/dist/chunks/{repository-eqh5fpv6.js → location-services-7m8kp9a5.js} +11 -11
  80. package/dist/chunks/{repository-q76xcmv9.js → location-services-7nk6w983.js} +16 -16
  81. package/dist/chunks/{repository-gc135ar8.js → location-services-7tpxex51.js} +8 -8
  82. package/dist/chunks/location-services-83zk0r45.js +91 -0
  83. package/dist/chunks/{repository-1dvck2a7.js → location-services-84h8c373.js} +2 -2
  84. package/dist/chunks/location-services-84wd9syh.js +19 -0
  85. package/dist/chunks/{repository-tcezcvh9.js → location-services-89znhe33.js} +4 -4
  86. package/dist/chunks/{repository-yfe405ny.js → location-services-8ag043pz.js} +6 -6
  87. package/dist/chunks/{repository-5ng375bv.js → location-services-8ansnb3t.js} +12 -10
  88. package/dist/chunks/{repository-8d7r5vzw.js → location-services-8d7r5vzw.js} +1 -1
  89. package/dist/chunks/{repository-xhv84ab7.js → location-services-8ejvg7qw.js} +25 -25
  90. package/dist/chunks/{repository-5daktx2q.js → location-services-8m6m0r52.js} +3 -3
  91. package/dist/chunks/{repository-w7a2abxy.js → location-services-8sc63a00.js} +12 -12
  92. package/dist/chunks/{repository-k02x6tcx.js → location-services-95kvcnwx.js} +33 -33
  93. package/dist/chunks/{repository-t550f9t1.js → location-services-9t7a50xb.js} +4 -4
  94. package/dist/chunks/{repository-tg6e69q8.js → location-services-a69nnjbb.js} +2 -2
  95. package/dist/chunks/{repository-y16p1w2y.js → location-services-a881zpfh.js} +9 -9
  96. package/dist/chunks/{repository-aaet6srn.js → location-services-aaet6srn.js} +2 -2
  97. package/dist/chunks/{repository-t7wcnk30.js → location-services-aqyhgb0m.js} +9 -9
  98. package/dist/chunks/{repository-my4zabxr.js → location-services-arz7hw7x.js} +2 -2
  99. package/dist/chunks/{repository-fj3b7143.js → location-services-ayvdrfck.js} +8 -8
  100. package/dist/chunks/{repository-y6mhs71q.js → location-services-ayx4aqd5.js} +4 -4
  101. package/dist/chunks/{repository-q6vgfyay.js → location-services-b2y4zj4f.js} +4 -4
  102. package/dist/chunks/{repository-56a9smke.js → location-services-b3t0zy8v.js} +18 -18
  103. package/dist/chunks/{repository-cfsekr6v.js → location-services-b4twkq7r.js} +6 -6
  104. package/dist/chunks/{repository-b6gygkdw.js → location-services-b6gygkdw.js} +2 -2
  105. package/dist/chunks/{repository-dbp4m4ge.js → location-services-b7gbstx8.js} +35 -35
  106. package/dist/chunks/{repository-47phkfqm.js → location-services-b83ajrzw.js} +46 -46
  107. package/dist/chunks/{repository-xvvw76kz.js → location-services-be1k9dy1.js} +7 -7
  108. package/dist/chunks/{repository-gy4662d6.js → location-services-beme9910.js} +11 -11
  109. package/dist/chunks/{repository-j2htzqze.js → location-services-bqz0shrj.js} +2 -2
  110. package/dist/chunks/{repository-fy3w4x98.js → location-services-bx8cgf5b.js} +18 -18
  111. package/dist/chunks/{repository-h6yzxz9r.js → location-services-c3cny6dd.js} +30 -20
  112. package/dist/chunks/{repository-2texf5vf.js → location-services-cnxfmxea.js} +19 -19
  113. package/dist/chunks/{repository-h6c2yg5r.js → location-services-cxc2sms6.js} +8 -8
  114. package/dist/chunks/{repository-1vvm3xv7.js → location-services-czveazf8.js} +11 -11
  115. package/dist/chunks/{repository-012g15cx.js → location-services-d0dvav9e.js} +11 -11
  116. package/dist/chunks/{repository-2455wr4j.js → location-services-d336qae7.js} +15 -15
  117. package/dist/chunks/{repository-f8xdbq78.js → location-services-d8angek9.js} +9 -9
  118. package/dist/chunks/{repository-2m8jawch.js → location-services-dd40s8jk.js} +4 -4
  119. package/dist/chunks/{repository-h16n41p4.js → location-services-dk9npkzx.js} +23 -23
  120. package/dist/chunks/{repository-xkntkrq7.js → location-services-dmqcgk4z.js} +5 -5
  121. package/dist/chunks/{repository-dpkg50ah.js → location-services-dpkg50ah.js} +1 -1
  122. package/dist/chunks/{repository-wnfszx78.js → location-services-dqt71wdb.js} +10 -10
  123. package/dist/chunks/{repository-0h1qn0y5.js → location-services-ds6dktyv.js} +10 -10
  124. package/dist/chunks/{repository-h4p4pa57.js → location-services-dtttw669.js} +11 -11
  125. package/dist/chunks/{repository-4azg6a58.js → location-services-dwccypxr.js} +115 -37
  126. package/dist/chunks/{repository-wnh11861.js → location-services-e0xah09s.js} +17 -17
  127. package/dist/chunks/{repository-k37ga4vh.js → location-services-e8242ssa.js} +8 -8
  128. package/dist/chunks/{repository-00e0wh3q.js → location-services-e8b6y2pt.js} +24 -39
  129. package/dist/chunks/{repository-cs63tcvs.js → location-services-ecxg4nmc.js} +9 -9
  130. package/dist/chunks/{repository-kxam66j6.js → location-services-eehqdfn9.js} +13 -13
  131. package/dist/chunks/{repository-ef5x83kb.js → location-services-ef5x83kb.js} +1 -1
  132. package/dist/chunks/{repository-1bbkgx8g.js → location-services-eq1pz5kg.js} +3 -3
  133. package/dist/chunks/{repository-0f0pgr2e.js → location-services-erz44zsw.js} +3 -3
  134. package/dist/chunks/{repository-etq0c3wd.js → location-services-etq0c3wd.js} +1 -1
  135. package/dist/chunks/location-services-ewb5cdj2.js +166 -0
  136. package/dist/chunks/{repository-gpng080p.js → location-services-ez9mb76v.js} +15 -15
  137. package/dist/chunks/{repository-g34b934z.js → location-services-f4a46b6n.js} +23 -17
  138. package/dist/chunks/{repository-71az546q.js → location-services-f75zav2x.js} +2 -2
  139. package/dist/chunks/{repository-a7cd87s2.js → location-services-fab1rbc6.js} +70 -70
  140. package/dist/chunks/{repository-5t80mpw4.js → location-services-fm6nvr4y.js} +19 -19
  141. package/dist/chunks/{repository-a2ew8a62.js → location-services-fqb2p7cx.js} +4 -4
  142. package/dist/chunks/{repository-vt8dt6j6.js → location-services-fy7t80vs.js} +29 -29
  143. package/dist/chunks/{repository-c8bydgjz.js → location-services-fzmtkgat.js} +6 -6
  144. package/dist/chunks/{repository-p42hj8p8.js → location-services-g0445xdp.js} +8 -8
  145. package/dist/chunks/{repository-1wb0x8n3.js → location-services-g4jcj52r.js} +25 -9
  146. package/dist/chunks/{repository-g5w8qwbj.js → location-services-g5w8qwbj.js} +1 -1
  147. package/dist/chunks/{repository-9yxvhatz.js → location-services-g93vh8n3.js} +4 -4
  148. package/dist/chunks/{repository-gd4qta3r.js → location-services-gd4qta3r.js} +1 -1
  149. package/dist/chunks/{repository-2wredcz9.js → location-services-gjzbw61z.js} +20 -20
  150. package/dist/chunks/{repository-mfct962c.js → location-services-gnwdqr3s.js} +41 -11
  151. package/dist/chunks/{repository-g50bcqhp.js → location-services-gsahv7qc.js} +4 -4
  152. package/dist/chunks/{repository-1cw3fj19.js → location-services-gw15ex2k.js} +3 -3
  153. package/dist/chunks/{repository-q7ngdz78.js → location-services-gx1aj30x.js} +29 -29
  154. package/dist/chunks/{repository-h6vf3j39.js → location-services-h6vf3j39.js} +1 -1
  155. package/dist/chunks/{repository-3556dn8t.js → location-services-he27pt63.js} +4 -3
  156. package/dist/chunks/{repository-s9nwmxxs.js → location-services-hjwszd6c.js} +30 -30
  157. package/dist/chunks/{repository-s8v3amej.js → location-services-hm33bzgf.js} +1 -1
  158. package/dist/chunks/location-services-j07hvfq8.js +507 -0
  159. package/dist/chunks/{repository-0qqvk1tp.js → location-services-j0p2p2c7.js} +7 -7
  160. package/dist/chunks/{repository-j56e64zr.js → location-services-j56e64zr.js} +1 -1
  161. package/dist/chunks/{repository-f6sbv01c.js → location-services-j5w85phq.js} +48 -43
  162. package/dist/chunks/{repository-rn938jk3.js → location-services-j7ecp1pt.js} +47 -47
  163. package/dist/chunks/{repository-68ga000j.js → location-services-j7kpd95e.js} +37 -37
  164. package/dist/chunks/{repository-89za3yyg.js → location-services-j8s9ab9g.js} +9 -9
  165. package/dist/chunks/{repository-hkgfm0m5.js → location-services-jbqrqj8a.js} +24 -24
  166. package/dist/chunks/{repository-hp7m3mgg.js → location-services-jhzrzk65.js} +25 -25
  167. package/dist/chunks/{repository-dfcrteyq.js → location-services-jmy38avr.js} +13 -13
  168. package/dist/chunks/{repository-dp8mmgq4.js → location-services-jsjec30j.js} +15 -15
  169. package/dist/chunks/{repository-4cw36es0.js → location-services-jx2ezg5d.js} +9 -9
  170. package/dist/chunks/{repository-5ej07zgb.js → location-services-jy50qwea.js} +7 -7
  171. package/dist/chunks/{repository-9e5bzkjp.js → location-services-kb9j3d72.js} +3 -3
  172. package/dist/chunks/{repository-k70p9jzb.js → location-services-kbc5vjqx.js} +9 -9
  173. package/dist/chunks/{repository-rm4s95e7.js → location-services-kfd8nr0x.js} +84 -84
  174. package/dist/chunks/{repository-mpd66srn.js → location-services-km3q0jzz.js} +1 -1
  175. package/dist/chunks/{repository-2tyga0yy.js → location-services-kn6rpkjj.js} +23 -10
  176. package/dist/chunks/{repository-wb70vhte.js → location-services-kpdw2w1f.js} +11 -11
  177. package/dist/chunks/{repository-hdjgtqrb.js → location-services-kpvtvmar.js} +43 -34
  178. package/dist/chunks/{repository-tbs2jyb2.js → location-services-kxc47ydf.js} +7 -7
  179. package/dist/chunks/{repository-prjw6x41.js → location-services-ky9wb2b6.js} +4 -4
  180. package/dist/chunks/location-services-m2wdsk0y.js +72 -0
  181. package/dist/chunks/{repository-m3fdjcah.js → location-services-m3fdjcah.js} +1 -1
  182. package/dist/chunks/{repository-mn0942hp.js → location-services-m3tjbat9.js} +32 -32
  183. package/dist/chunks/location-services-m55qy151.js +53 -0
  184. package/dist/chunks/{repository-m9w0rfyh.js → location-services-m9w0rfyh.js} +1 -1
  185. package/dist/chunks/{repository-p5ev1zz5.js → location-services-mbzs7f5w.js} +9 -9
  186. package/dist/chunks/{repository-56gdpj1q.js → location-services-mfqp6xfm.js} +6 -6
  187. package/dist/chunks/{repository-h6qw898r.js → location-services-mp6hah50.js} +11 -11
  188. package/dist/chunks/{repository-zvjhkatg.js → location-services-ms93yq6r.js} +8 -8
  189. package/dist/chunks/{repository-gry8sgkd.js → location-services-mz0nparr.js} +9 -9
  190. package/dist/chunks/{repository-042aawn8.js → location-services-n1tn96dy.js} +23 -23
  191. package/dist/chunks/{repository-tarna68p.js → location-services-n2sybw15.js} +9 -9
  192. package/dist/chunks/{repository-16558gs3.js → location-services-n4swcb0t.js} +50 -50
  193. package/dist/chunks/{repository-dt6m3qwv.js → location-services-ncrrbzx4.js} +18 -18
  194. package/dist/chunks/{repository-rk3ekeb4.js → location-services-nd8mttf9.js} +5 -6
  195. package/dist/chunks/location-services-ng6mtv9p.js +804 -0
  196. package/dist/chunks/{repository-w5ystqj3.js → location-services-nnp9mmjf.js} +6 -6
  197. package/dist/chunks/{repository-6b1pjwt3.js → location-services-npgbbvk3.js} +3 -3
  198. package/dist/chunks/{repository-zhwzkc0c.js → location-services-nq21c0gd.js} +18 -18
  199. package/dist/chunks/{repository-drnf6xwf.js → location-services-nqxj0yn4.js} +2 -2
  200. package/dist/chunks/{repository-c20khjev.js → location-services-nrdmrqsx.js} +21 -21
  201. package/dist/chunks/{repository-h2yw0gk4.js → location-services-nv669pfy.js} +22 -22
  202. package/dist/chunks/{repository-yn96zvvk.js → location-services-nw6v932m.js} +11 -11
  203. package/dist/chunks/{repository-t8n7ymvq.js → location-services-nw7jj9x7.js} +3 -3
  204. package/dist/chunks/{repository-chyvjp63.js → location-services-nx4qc7m3.js} +12 -12
  205. package/dist/chunks/{repository-1acjjqhc.js → location-services-nxer0yad.js} +4 -4
  206. package/dist/chunks/{repository-rjsk0n41.js → location-services-nyc5zq8g.js} +9 -9
  207. package/dist/chunks/{repository-b3cm3psy.js → location-services-p7jag4ba.js} +7 -7
  208. package/dist/chunks/{repository-96ctqc5x.js → location-services-pcxghkgz.js} +4 -4
  209. package/dist/chunks/location-services-phz3h32g.js +18 -0
  210. package/dist/chunks/{repository-pjvnvgmy.js → location-services-pjvnvgmy.js} +1 -1
  211. package/dist/chunks/{repository-vqkmcgyv.js → location-services-pjxwrfec.js} +3 -3
  212. package/dist/chunks/{repository-pknna89w.js → location-services-pknna89w.js} +1 -1
  213. package/dist/chunks/{repository-mfmqp3ds.js → location-services-pwjskxwy.js} +45 -45
  214. package/dist/chunks/{repository-4c5k237e.js → location-services-py3xsg43.js} +32 -32
  215. package/dist/chunks/{repository-0j77ygfz.js → location-services-q0xm7vwc.js} +6 -6
  216. package/dist/chunks/{repository-gkcjs2dn.js → location-services-q9099wq0.js} +11 -11
  217. package/dist/chunks/{repository-x4k83k5f.js → location-services-qbqyxtrr.js} +9 -9
  218. package/dist/chunks/{repository-5k54pn5m.js → location-services-qe1dfmj5.js} +10 -10
  219. package/dist/chunks/{repository-2k8khapm.js → location-services-qgn6gcr1.js} +5 -5
  220. package/dist/chunks/{repository-a6rczh0a.js → location-services-qhaz1dgr.js} +42 -42
  221. package/dist/chunks/{repository-5r637m3f.js → location-services-qmemjc4c.js} +55 -55
  222. package/dist/chunks/{repository-qnc92qwc.js → location-services-qnc92qwc.js} +1 -1
  223. package/dist/chunks/{repository-qsdy395h.js → location-services-qsdy395h.js} +1 -1
  224. package/dist/chunks/{repository-qxjc9qry.js → location-services-qxjc9qry.js} +3 -3
  225. package/dist/chunks/{repository-zyk1yjk8.js → location-services-qygbw77c.js} +5 -5
  226. package/dist/chunks/{repository-d4he2qe1.js → location-services-r2m716tb.js} +9 -9
  227. package/dist/chunks/{repository-j58c5xyq.js → location-services-r9w3djhf.js} +9 -9
  228. package/dist/chunks/{repository-rdw6cm16.js → location-services-rdw6cm16.js} +1 -1
  229. package/dist/chunks/{repository-56gyfky0.js → location-services-re778bjs.js} +10 -10
  230. package/dist/chunks/{repository-rb8xm6cm.js → location-services-rr8str7e.js} +14 -14
  231. package/dist/chunks/{repository-w6gqnbcy.js → location-services-rv5eepcz.js} +3 -3
  232. package/dist/chunks/{repository-3vy5pcbx.js → location-services-s4fmg9a9.js} +54 -41
  233. package/dist/chunks/{repository-t5483b9c.js → location-services-s6cn836p.js} +4 -4
  234. package/dist/chunks/{repository-7d05dvcz.js → location-services-s89werp4.js} +4 -4
  235. package/dist/chunks/{repository-9s1pr29s.js → location-services-s9pfz9kw.js} +41 -45
  236. package/dist/chunks/{repository-tzy9a5tv.js → location-services-sn65mkzm.js} +27 -27
  237. package/dist/chunks/{repository-ce3pkz8w.js → location-services-stx8q1jh.js} +8 -8
  238. package/dist/chunks/{repository-h4jx6m0r.js → location-services-sw2694pe.js} +15 -15
  239. package/dist/chunks/{repository-y6brtjeh.js → location-services-swh0ttr4.js} +31 -31
  240. package/dist/chunks/{repository-7c08hygz.js → location-services-t35zxaf7.js} +11 -11
  241. package/dist/chunks/{repository-rpp7c75e.js → location-services-t82x27tp.js} +53 -49
  242. package/dist/chunks/{repository-tazgh4e4.js → location-services-tazgh4e4.js} +1 -1
  243. package/dist/chunks/{repository-tdstcens.js → location-services-tdstcens.js} +1 -1
  244. package/dist/chunks/{repository-23294nz8.js → location-services-tnv0t922.js} +26 -26
  245. package/dist/chunks/{repository-4ege8dpt.js → location-services-twj6n9q2.js} +12 -12
  246. package/dist/chunks/{repository-5w6ne2rj.js → location-services-txan1asv.js} +10 -10
  247. package/dist/chunks/{repository-tdpndm1c.js → location-services-v6ghzfeb.js} +5 -5
  248. package/dist/chunks/{repository-b5f9cqb8.js → location-services-v8rmp2e0.js} +25 -25
  249. package/dist/chunks/{repository-pg4zag0e.js → location-services-v8xbzm74.js} +26 -26
  250. package/dist/chunks/{repository-veqvce7d.js → location-services-veqvce7d.js} +1 -1
  251. package/dist/chunks/{repository-tgah08rb.js → location-services-vvj8pq1t.js} +30 -30
  252. package/dist/chunks/{repository-vzs5sf6e.js → location-services-vzs5sf6e.js} +1 -1
  253. package/dist/chunks/{repository-84txncab.js → location-services-w1eejvng.js} +5 -5
  254. package/dist/chunks/{repository-w3wsvvr9.js → location-services-w3wsvvr9.js} +1 -1
  255. package/dist/chunks/{repository-yf33k1p3.js → location-services-w5t7z4tt.js} +22 -22
  256. package/dist/chunks/{repository-wd87259q.js → location-services-wd87259q.js} +1 -1
  257. package/dist/chunks/{repository-pe71rtbx.js → location-services-wff4vpe0.js} +14 -14
  258. package/dist/chunks/{repository-yprc5htm.js → location-services-wsgfm6ye.js} +22 -22
  259. package/dist/chunks/{repository-rjfypheq.js → location-services-wtq39amh.js} +27 -27
  260. package/dist/chunks/{repository-7wnc14t4.js → location-services-wxeenkga.js} +21 -21
  261. package/dist/chunks/{repository-y1w7bwtd.js → location-services-x532wrke.js} +20 -20
  262. package/dist/chunks/{repository-addxnjmp.js → location-services-x661k3y3.js} +4 -4
  263. package/dist/chunks/{repository-r3c58j5g.js → location-services-x7m666y7.js} +7 -4
  264. package/dist/chunks/{repository-s4075y1x.js → location-services-xcarvbce.js} +3 -3
  265. package/dist/chunks/{repository-v0es1rhs.js → location-services-xecxzrdp.js} +2 -2
  266. package/dist/chunks/{repository-9mxexfbd.js → location-services-xnernrr1.js} +18 -18
  267. package/dist/chunks/{repository-xpwv3d90.js → location-services-xrkmrw9n.js} +9 -9
  268. package/dist/chunks/location-services-xtg7zkvg.js +253 -0
  269. package/dist/chunks/{repository-y1fvbwt7.js → location-services-y1fvbwt7.js} +1 -1
  270. package/dist/chunks/{repository-067895h7.js → location-services-y727y3e6.js} +17 -17
  271. package/dist/chunks/{repository-5pptr25h.js → location-services-y7b45w3g.js} +4 -4
  272. package/dist/chunks/{repository-jnevnthy.js → location-services-yd0r0rva.js} +24 -24
  273. package/dist/chunks/{repository-q0cdrezg.js → location-services-yfmvpswg.js} +16 -16
  274. package/dist/chunks/{repository-6r4hjhnf.js → location-services-yw2f8www.js} +20 -20
  275. package/dist/chunks/{repository-3t7hfzt0.js → location-services-yxqxmbq1.js} +17 -17
  276. package/dist/chunks/{repository-b751st24.js → location-services-z04z598v.js} +7 -7
  277. package/dist/chunks/{repository-8tsdq50x.js → location-services-z0aj456m.js} +4 -4
  278. package/dist/chunks/{repository-z0bkrqjs.js → location-services-z0bkrqjs.js} +1 -1
  279. package/dist/chunks/{repository-bzadqhw2.js → location-services-z6n09y6b.js} +4 -4
  280. package/dist/chunks/{repository-a199weyn.js → location-services-za77p82n.js} +6 -6
  281. package/dist/chunks/{repository-zr2ceqn5.js → location-services-zr2ceqn5.js} +1 -1
  282. package/dist/chunks/{repository-4z58m4b4.js → location-services-zsr4wwhv.js} +4 -4
  283. package/dist/chunks/{repository-8kys6q5k.js → location-services-zx1jgwxt.js} +9 -9
  284. package/dist/chunks/{repository-zxq2ej10.js → location-services-zxq2ej10.js} +1 -1
  285. package/dist/chunks/{repository-espax8zg.js → location-services-zy43x3f1.js} +4 -4
  286. package/dist/codemode/catalog.js +1 -1
  287. package/dist/codemode/instructions.js +7 -7
  288. package/dist/codemode/tool.js +3 -3
  289. package/dist/codemode/web.js +1 -1
  290. package/dist/command.js +84 -83
  291. package/dist/config/discovery.js +85 -84
  292. package/dist/config/markdown.js +1 -1
  293. package/dist/config/normalize.js +100 -99
  294. package/dist/config/plugin/agent.js +117 -116
  295. package/dist/config/plugin/command.js +206 -205
  296. package/dist/config/plugin/compaction.js +155 -154
  297. package/dist/config/plugin/compatibility.js +135 -134
  298. package/dist/config/plugin/entry-observer.js +1 -1
  299. package/dist/config/plugin/formatter.js +118 -117
  300. package/dist/config/plugin/image.js +117 -116
  301. package/dist/config/plugin/instruction.js +91 -90
  302. package/dist/config/plugin/location-watcher.js +119 -118
  303. package/dist/config/plugin/mcp.js +122 -121
  304. package/dist/config/plugin/policy.js +118 -117
  305. package/dist/config/plugin/provider.js +117 -116
  306. package/dist/config/plugin/reference.js +119 -118
  307. package/dist/config/plugin/shell.js +119 -118
  308. package/dist/config/plugin/skill-file.js +103 -102
  309. package/dist/config/plugin/skill.js +136 -135
  310. package/dist/config/plugin/snapshot.js +117 -116
  311. package/dist/config/plugin/source.js +120 -119
  312. package/dist/config/plugin/tool-output.js +118 -117
  313. package/dist/config/plugin/websearch.js +118 -117
  314. package/dist/config/plugin/worktree.js +119 -118
  315. package/dist/config/variable.js +3 -3
  316. package/dist/config/watch.js +1 -1
  317. package/dist/config.js +120 -119
  318. package/dist/credential/sql.js +2 -2
  319. package/dist/credential.js +78 -75
  320. package/dist/database/database.js +69 -68
  321. package/dist/database/drizzle/effect-sqlite/driver.js +12 -12
  322. package/dist/database/drizzle/effect-sqlite/index.js +12 -12
  323. package/dist/database/drizzle/effect-sqlite/session.js +11 -11
  324. package/dist/database/drizzle/index.js +13 -13
  325. package/dist/database/drizzle/internal/drizzle-utils.js +1 -1
  326. package/dist/database/drizzle/sqlite-core/effect/count.js +1 -1
  327. package/dist/database/drizzle/sqlite-core/effect/db.js +9 -9
  328. package/dist/database/drizzle/sqlite-core/effect/delete.js +2 -2
  329. package/dist/database/drizzle/sqlite-core/effect/index.js +10 -10
  330. package/dist/database/drizzle/sqlite-core/effect/insert.js +2 -2
  331. package/dist/database/drizzle/sqlite-core/effect/query.js +1 -1
  332. package/dist/database/drizzle/sqlite-core/effect/raw.js +1 -1
  333. package/dist/database/drizzle/sqlite-core/effect/select.js +2 -2
  334. package/dist/database/drizzle/sqlite-core/effect/session.js +10 -10
  335. package/dist/database/drizzle/sqlite-core/effect/update.js +2 -2
  336. package/dist/database/drizzle.js +14 -14
  337. package/dist/database/migration/20260127222353_familiar_lady_ursula.js +1 -1
  338. package/dist/database/migration/20260211171708_add_project_commands.js +1 -1
  339. package/dist/database/migration/20260213144116_wakeful_the_professor.js +1 -1
  340. package/dist/database/migration/20260225215848_workspace.js +1 -1
  341. package/dist/database/migration/20260227213759_add_session_workspace_id.js +1 -1
  342. package/dist/database/migration/20260228203230_blue_harpoon.js +1 -1
  343. package/dist/database/migration/20260303231226_add_workspace_fields.js +1 -1
  344. package/dist/database/migration/20260309230000_move_org_to_state.js +1 -1
  345. package/dist/database/migration/20260312043431_session_message_cursor.js +1 -1
  346. package/dist/database/migration/20260323234822_events.js +1 -1
  347. package/dist/database/migration/20260410174513_workspace-name.js +1 -1
  348. package/dist/database/migration/20260413175956_chief_energizer.js +1 -1
  349. package/dist/database/migration/20260423070820_add_icon_url_override.js +1 -1
  350. package/dist/database/migration/20260427172553_slow_nightmare.js +1 -1
  351. package/dist/database/migration/20260428004200_add_session_path.js +1 -1
  352. package/dist/database/migration/20260501142318_next_venus.js +1 -1
  353. package/dist/database/migration/20260504145000_add_sync_owner.js +1 -1
  354. package/dist/database/migration/20260507164347_add_workspace_time.js +1 -1
  355. package/dist/database/migration/20260510033149_session_usage.js +1 -1
  356. package/dist/database/migration/20260511000411_data_migration_state.js +1 -1
  357. package/dist/database/migration/20260511173437_session-metadata.js +1 -1
  358. package/dist/database/migration/20260601010001_normalize_storage_paths.js +1 -1
  359. package/dist/database/migration/20260601202201_amazing_prowler.js +1 -1
  360. package/dist/database/migration/20260602002951_lowly_union_jack.js +1 -1
  361. package/dist/database/migration/20260602182828_add_project_directories.js +1 -1
  362. package/dist/database/migration/20260603001617_session_message_projection_indexes.js +1 -1
  363. package/dist/database/migration/20260603040000_session_message_projection_order.js +1 -1
  364. package/dist/database/migration/20260603141458_session_input_inbox.js +1 -1
  365. package/dist/database/migration/20260603160727_jittery_ezekiel_stane.js +1 -1
  366. package/dist/database/migration/20260604172448_event_sourced_session_input.js +1 -1
  367. package/dist/database/migration/20260605003541_add_session_context_snapshot.js +1 -1
  368. package/dist/database/migration/20260605042240_add_context_epoch_agent.js +1 -1
  369. package/dist/database/migration/20260611035744_credential.js +1 -1
  370. package/dist/database/migration/20260611192811_lush_chimera.js +1 -1
  371. package/dist/database/migration/20260612174303_project_dir_strategy.js +1 -1
  372. package/dist/database/migration/20260622142730_simplify_session_context_epoch.js +1 -1
  373. package/dist/database/migration/20260622170816_reset_v2_session_state.js +1 -1
  374. package/dist/database/migration/20260622202450_simplify_session_input.js +1 -1
  375. package/dist/database/migration/20260804233008_loose_psylocke.js +1 -1
  376. package/dist/database/migration/20260805200742_import_legacy_credentials.js +1 -1
  377. package/dist/database/migration/20260808023530_workspace_domain.js +1 -1
  378. package/dist/database/migration/20260811161259_execution_claim_attempts.js +1 -1
  379. package/dist/database/migration/20260812181746_session_inbox.js +1 -1
  380. package/dist/database/migration/20260812213948_worktree.js +1 -1
  381. package/dist/database/migration/20260819222447_session_viewed_state.js +1 -1
  382. package/dist/database/migration/20260823191254_nullable_workspace_binding.js +1 -1
  383. package/dist/database/migration/20260910120000_clear_v1_session_permission.js +1 -1
  384. package/dist/database/migration/20260923013825_project_time_active.js +1 -1
  385. package/dist/database/migration/20261007190000_azure_cli_external_credential.js +6 -0
  386. package/dist/database/migration.gen.js +50 -49
  387. package/dist/database/migration.js +52 -51
  388. package/dist/database/path.js +2 -2
  389. package/dist/database/schema.gen.js +1 -1
  390. package/dist/database/schema.sql.js +1 -1
  391. package/dist/database/sqlite.bun.js +1 -1
  392. package/dist/database/sqlite.js +1 -1
  393. package/dist/database/sqlite.node.js +1 -1
  394. package/dist/database/sqlite.workerd.js +1 -1
  395. package/dist/database/v1-migration.bun.js +77 -76
  396. package/dist/database/v1-migration.js +1 -1
  397. package/dist/effect/app-node-builder.js +364 -363
  398. package/dist/effect/app-node-platform.js +2 -2
  399. package/dist/effect/keyed-mutex.js +1 -1
  400. package/dist/effect/websocket-constructor.js +1 -1
  401. package/dist/environment/driver.js +1 -1
  402. package/dist/environment/environment.js +94 -93
  403. package/dist/environment/exec-defaults.js +2 -2
  404. package/dist/environment/files.js +1 -1
  405. package/dist/environment/index.js +94 -93
  406. package/dist/environment/local.js +2 -2
  407. package/dist/environment/memory.js +2 -2
  408. package/dist/environment/unavailable.js +1 -1
  409. package/dist/event/sql.js +1 -1
  410. package/dist/event-logger.js +71 -70
  411. package/dist/file-access.js +105 -104
  412. package/dist/file-mutation.js +95 -94
  413. package/dist/file-retention.js +1 -1
  414. package/dist/filesystem/fff.bun.js +2 -2
  415. package/dist/filesystem/fff.js +1 -1
  416. package/dist/filesystem/fff.node.js +2 -2
  417. package/dist/filesystem/fff.workerd.js +2 -2
  418. package/dist/filesystem/location-watcher-policy.js +6 -6
  419. package/dist/filesystem/location-watcher.js +221 -220
  420. package/dist/filesystem/protected.js +3 -3
  421. package/dist/filesystem/search.js +104 -103
  422. package/dist/filesystem/watcher-binding.js +3 -3
  423. package/dist/filesystem/watcher.js +13 -13
  424. package/dist/filesystem.js +107 -106
  425. package/dist/form.js +79 -78
  426. package/dist/formatter/builtins.js +4 -4
  427. package/dist/formatter.js +88 -87
  428. package/dist/generate.js +104 -103
  429. package/dist/git.js +6 -6
  430. package/dist/github-copilot/chat/convert-to-openai-compatible-chat-messages.js +1 -1
  431. package/dist/github-copilot/chat/get-response-metadata.js +1 -1
  432. package/dist/github-copilot/chat/map-openai-compatible-finish-reason.js +1 -1
  433. package/dist/github-copilot/chat/openai-compatible-chat-language-model.js +7 -7
  434. package/dist/github-copilot/chat/openai-compatible-chat-options.js +1 -1
  435. package/dist/github-copilot/chat/openai-compatible-prepare-tools.js +1 -1
  436. package/dist/github-copilot/copilot-provider.js +17 -17
  437. package/dist/github-copilot/models.js +92 -91
  438. package/dist/github-copilot/openai-compatible-error.js +1 -1
  439. package/dist/github-copilot/responses/convert-to-openai-responses-input.js +1 -1
  440. package/dist/github-copilot/responses/map-openai-responses-finish-reason.js +1 -1
  441. package/dist/github-copilot/responses/openai-error.js +1 -1
  442. package/dist/github-copilot/responses/openai-responses-language-model.js +10 -10
  443. package/dist/github-copilot/responses/openai-responses-prepare-tools.js +6 -6
  444. package/dist/github-copilot/responses/tool/code-interpreter.js +1 -1
  445. package/dist/github-copilot/responses/tool/file-search.js +1 -1
  446. package/dist/github-copilot/responses/tool/image-generation.js +1 -1
  447. package/dist/github-copilot/responses/tool/web-search-preview.js +1 -1
  448. package/dist/github-copilot/responses/tool/web-search.js +1 -1
  449. package/dist/image/photon.js +2 -2
  450. package/dist/image.js +6 -6
  451. package/dist/instance/service.js +5 -5
  452. package/dist/instance.js +355 -354
  453. package/dist/instruction-discovery.js +84 -83
  454. package/dist/instructions/builtins.js +88 -87
  455. package/dist/instructions/index.js +3 -3
  456. package/dist/integration/connection.js +3 -3
  457. package/dist/integration.js +82 -79
  458. package/dist/job.js +79 -78
  459. package/dist/kv/sql.js +2 -2
  460. package/dist/kv.js +74 -73
  461. package/dist/location-activity.js +132 -131
  462. package/dist/location-lifecycle.js +108 -107
  463. package/dist/location-service-map.js +87 -86
  464. package/dist/location-services.js +352 -351
  465. package/dist/location.js +88 -87
  466. package/dist/managed-policy.js +12 -5
  467. package/dist/mcp/client.js +92 -91
  468. package/dist/mcp/index.js +110 -109
  469. package/dist/mcp/instructions.js +130 -129
  470. package/dist/mcp/oauth.js +76 -75
  471. package/dist/mcp/stdio.js +91 -90
  472. package/dist/mime.js +1 -1
  473. package/dist/modal/models.js +92 -91
  474. package/dist/model-resolver.js +99 -98
  475. package/dist/model.js +103 -102
  476. package/dist/models-dev.js +106 -105
  477. package/dist/oauth/page.js +1 -1
  478. package/dist/permission/saved.js +83 -82
  479. package/dist/permission/sql.js +5 -5
  480. package/dist/permission.js +114 -113
  481. package/dist/persistent-pty/binary.bun.js +1 -1
  482. package/dist/persistent-pty/daemon.js +1 -1
  483. package/dist/persistent-pty/index.js +89 -88
  484. package/dist/persistent-pty/pty-binding.js +1 -1
  485. package/dist/persistent-pty.js +76 -75
  486. package/dist/plugin/agent.js +75 -102
  487. package/dist/plugin/command.js +101 -100
  488. package/dist/plugin/hooks.js +5 -5
  489. package/dist/plugin/host.js +212 -211
  490. package/dist/plugin/identity.js +3 -3
  491. package/dist/plugin/instance.js +5 -5
  492. package/dist/plugin/internal.js +327 -326
  493. package/dist/plugin/mcp-codemode-defaults.js +3 -3
  494. package/dist/plugin/models-dev.js +97 -96
  495. package/dist/plugin/module.js +118 -7
  496. package/dist/plugin/optimize.js +4 -4
  497. package/dist/plugin/plan.js +103 -102
  498. package/dist/plugin/promise.js +1 -1
  499. package/dist/plugin/provider/amazon-bedrock.js +91 -90
  500. package/dist/plugin/provider/azure.js +118 -117
  501. package/dist/plugin/provider/cerebras.js +1 -1
  502. package/dist/plugin/provider/chatgpt.js +95 -93
  503. package/dist/plugin/provider/cloudflare-ai-gateway.js +114 -113
  504. package/dist/plugin/provider/cloudflare-workers-ai.js +115 -114
  505. package/dist/plugin/provider/cohere.js +2 -2
  506. package/dist/plugin/provider/configured.js +113 -112
  507. package/dist/plugin/provider/digitalocean.js +94 -93
  508. package/dist/plugin/provider/dynamic.js +2 -2
  509. package/dist/plugin/provider/factory.js +1 -1
  510. package/dist/plugin/provider/github-copilot.js +96 -95
  511. package/dist/plugin/provider/gitlab.js +94 -93
  512. package/dist/plugin/provider/google-vertex.js +114 -90
  513. package/dist/plugin/provider/kilo.js +1 -1
  514. package/dist/plugin/provider/llmgateway.js +79 -78
  515. package/dist/plugin/provider/lmstudio.js +117 -116
  516. package/dist/plugin/provider/local.js +114 -113
  517. package/dist/plugin/provider/modal.js +93 -92
  518. package/dist/plugin/provider/nvidia.js +1 -1
  519. package/dist/plugin/provider/ollama.js +117 -116
  520. package/dist/plugin/provider/openai.js +96 -95
  521. package/dist/plugin/provider/opencode.js +98 -96
  522. package/dist/plugin/provider/openrouter.js +92 -91
  523. package/dist/plugin/provider/perplexity.js +2 -2
  524. package/dist/plugin/provider/poe.js +80 -79
  525. package/dist/plugin/provider/prompt-cache-key.js +91 -90
  526. package/dist/plugin/provider/sap-ai-core.js +92 -91
  527. package/dist/plugin/provider/sdk-factory.js +1 -1
  528. package/dist/plugin/provider/snowflake-cortex.js +116 -115
  529. package/dist/plugin/provider/vercel.js +91 -90
  530. package/dist/plugin/provider/vllm.js +117 -116
  531. package/dist/plugin/provider/xai.js +92 -91
  532. package/dist/plugin/provider/zenmux.js +1 -1
  533. package/dist/plugin/provider.js +157 -155
  534. package/dist/plugin/sdk.js +77 -76
  535. package/dist/plugin/service.js +3 -3
  536. package/dist/plugin/skill.js +135 -134
  537. package/dist/plugin/source-directory.js +1 -1
  538. package/dist/plugin/supervisor.js +346 -345
  539. package/dist/plugin/tool-input-repair.js +4 -4
  540. package/dist/plugin/update.js +6 -6
  541. package/dist/plugin/vcs/git.js +87 -86
  542. package/dist/plugin/vcs/hg.js +87 -86
  543. package/dist/plugin/verbosity.js +94 -93
  544. package/dist/plugin/warming.js +115 -114
  545. package/dist/plugin/websearch/exa.js +7 -7
  546. package/dist/plugin/websearch/firecrawl.js +8 -8
  547. package/dist/plugin/websearch/index.js +9 -9
  548. package/dist/plugin/websearch/mcp.js +4 -4
  549. package/dist/plugin/websearch/parallel.js +8 -8
  550. package/dist/plugin/websearch/tavily.js +6 -6
  551. package/dist/plugin/websearch/tinyfish.js +8 -8
  552. package/dist/plugin.js +223 -222
  553. package/dist/project/schema.js +2 -2
  554. package/dist/project/sql.js +4 -4
  555. package/dist/project.js +81 -80
  556. package/dist/provider.js +92 -91
  557. package/dist/pty/protocol.js +1 -1
  558. package/dist/pty/ticket.js +1 -1
  559. package/dist/pty.js +98 -97
  560. package/dist/reference/instructions.js +90 -89
  561. package/dist/reference.js +90 -89
  562. package/dist/repository-cache.js +82 -81
  563. package/dist/repository.js +3 -3
  564. package/dist/ripgrep/binary.js +2 -2
  565. package/dist/ripgrep.js +98 -97
  566. package/dist/rpc.js +87 -86
  567. package/dist/schema.js +1 -1
  568. package/dist/session/affinity.js +1 -1
  569. package/dist/session/command.js +75 -74
  570. package/dist/session/compaction.js +134 -133
  571. package/dist/session/context.js +154 -153
  572. package/dist/session/diff.js +89 -88
  573. package/dist/session/environment.js +5 -5
  574. package/dist/session/error.js +7 -7
  575. package/dist/session/event.js +1 -1
  576. package/dist/session/execution/restart.js +215 -214
  577. package/dist/session/execution.js +126 -125
  578. package/dist/session/generate.js +153 -152
  579. package/dist/session/history.js +15 -15
  580. package/dist/session/inbox.js +87 -86
  581. package/dist/session/info.js +3 -3
  582. package/dist/session/instruction-entry.js +80 -79
  583. package/dist/session/instruction-state.js +8 -8
  584. package/dist/session/instructions.js +98 -97
  585. package/dist/session/message-updater.js +4 -4
  586. package/dist/session/message.js +1 -1
  587. package/dist/session/model-request.js +121 -120
  588. package/dist/session/model-transport.js +9 -9
  589. package/dist/session/move.js +130 -129
  590. package/dist/session/projector.js +87 -86
  591. package/dist/session/prompt.js +106 -105
  592. package/dist/session/provider-context.js +3 -3
  593. package/dist/session/revert.js +91 -90
  594. package/dist/session/run-coordinator.js +3 -3
  595. package/dist/session/runner/index.js +3 -3
  596. package/dist/session/runner/llm.js +225 -224
  597. package/dist/session/runner/max-steps.js +1 -1
  598. package/dist/session/runner/model.js +99 -98
  599. package/dist/session/runner/publish-llm-event.js +114 -113
  600. package/dist/session/runner/retry.js +4 -4
  601. package/dist/session/runner/step.js +126 -125
  602. package/dist/session/runner/to-llm-message.js +2 -2
  603. package/dist/session/schema.js +3 -3
  604. package/dist/session/session.js +165 -164
  605. package/dist/session/shell.js +131 -130
  606. package/dist/session/skill.js +104 -103
  607. package/dist/session/sql.js +5 -5
  608. package/dist/session/stats.js +74 -73
  609. package/dist/session/store.js +88 -87
  610. package/dist/session/subagent-completion.js +1 -1
  611. package/dist/session/subagent-job.js +204 -203
  612. package/dist/session/system-prompt.js +1 -1
  613. package/dist/session/title.js +158 -157
  614. package/dist/session/to-session-error.js +112 -111
  615. package/dist/session/transfer.js +208 -207
  616. package/dist/session/usage.js +1 -1
  617. package/dist/session.js +212 -211
  618. package/dist/shell/parse.js +6 -6
  619. package/dist/shell/result.js +1 -1
  620. package/dist/shell/scan.js +1 -1
  621. package/dist/shell/select.js +13 -13
  622. package/dist/shell.js +133 -132
  623. package/dist/skill/discovery.js +6 -6
  624. package/dist/skill/instructions.js +108 -107
  625. package/dist/skill.js +111 -110
  626. package/dist/snapshot.js +92 -91
  627. package/dist/state.js +1 -1
  628. package/dist/tool/html-markdown.js +1 -1
  629. package/dist/tool/http-body.js +1 -1
  630. package/dist/tool/mcp.js +129 -128
  631. package/dist/tool/plugin/edit.js +119 -118
  632. package/dist/tool/plugin/file-diff.js +1 -1
  633. package/dist/tool/plugin/glob.js +125 -124
  634. package/dist/tool/plugin/grep.js +125 -124
  635. package/dist/tool/plugin/mcp-resource.js +118 -117
  636. package/dist/tool/plugin/opencode.js +3 -3
  637. package/dist/tool/plugin/patch.js +123 -122
  638. package/dist/tool/plugin/question.js +104 -103
  639. package/dist/tool/plugin/read.js +124 -123
  640. package/dist/tool/plugin/shell.js +211 -210
  641. package/dist/tool/plugin/skill.js +112 -111
  642. package/dist/tool/plugin/subagent.js +213 -212
  643. package/dist/tool/plugin/webfetch.js +113 -112
  644. package/dist/tool/plugin/websearch.js +115 -114
  645. package/dist/tool/plugin/write.js +123 -122
  646. package/dist/tool/read-filesystem.js +101 -100
  647. package/dist/tool/runtime.js +1 -1
  648. package/dist/tool-output.js +7 -7
  649. package/dist/tool.js +14 -14
  650. package/dist/types/credential/sql.d.ts +6 -0
  651. package/dist/types/credential.d.ts +14 -0
  652. package/dist/types/database/migration/20261007190000_azure_cli_external_credential.d.ts +3 -0
  653. package/dist/types/filesystem.d.ts +11 -5
  654. package/dist/types/git.d.ts +23 -10
  655. package/dist/types/integration/connection.d.ts +2 -2
  656. package/dist/types/integration.d.ts +748 -8
  657. package/dist/types/managed-policy.d.ts +11 -1
  658. package/dist/types/model.d.ts +6 -0
  659. package/dist/types/plugin/internal.d.ts +1 -1
  660. package/dist/types/plugin/module.d.ts +5 -1
  661. package/dist/types/plugin/provider/amazon-bedrock.d.ts +2 -1
  662. package/dist/types/plugin/provider/azure.d.ts +3 -2
  663. package/dist/types/plugin/provider/google-vertex.d.ts +5 -1
  664. package/dist/types/session/model-request.d.ts +1 -1
  665. package/dist/types/session/runner/publish-llm-event.d.ts +3 -2
  666. package/dist/types/wellknown.d.ts +3 -0
  667. package/dist/util/error-summary.js +1 -1
  668. package/dist/util/error.js +1 -1
  669. package/dist/util/git-executable.js +2 -2
  670. package/dist/util/iife.js +1 -1
  671. package/dist/util/lazy.js +1 -1
  672. package/dist/util/slug.js +1 -1
  673. package/dist/util/token.js +1 -1
  674. package/dist/util/which.js +1 -1
  675. package/dist/util/wildcard.js +1 -1
  676. package/dist/v1/config/agent.js +7 -7
  677. package/dist/v1/config/command.js +3 -3
  678. package/dist/v1/config/error.js +4 -4
  679. package/dist/v1/config/mcp.js +4 -4
  680. package/dist/v1/config/migrate.js +93 -92
  681. package/dist/v1/config/permission.js +7 -7
  682. package/dist/v1/config/plugin.js +3 -3
  683. package/dist/v1/config/provider-options.js +1 -1
  684. package/dist/v1/config/provider.js +4 -4
  685. package/dist/variant.js +92 -91
  686. package/dist/vcs/patch.js +1 -1
  687. package/dist/vcs.js +90 -89
  688. package/dist/websearch.js +83 -82
  689. package/dist/wellknown/plugin.js +77 -76
  690. package/dist/wellknown.js +82 -81
  691. package/dist/workspace/driver.js +3 -3
  692. package/dist/workspace/sql.js +1 -1
  693. package/dist/workspace.js +81 -80
  694. package/dist/worktree/directory.js +2 -2
  695. package/dist/worktree/git.js +10 -10
  696. package/dist/worktree/sql.js +5 -5
  697. package/dist/worktree/strategies.js +90 -89
  698. package/dist/worktree.js +97 -96
  699. package/package.json +8 -10
  700. package/dist/chunks/repository-3b3navdj.js +0 -253
  701. package/dist/chunks/repository-45085rbj.js +0 -26
  702. package/dist/chunks/repository-b20bdvd4.js +0 -60
  703. package/dist/chunks/repository-g4nj3be3.js +0 -507
  704. package/dist/chunks/repository-j3pg2mx4.js +0 -47
  705. package/dist/chunks/repository-jqh9b0xq.js +0 -18
  706. package/dist/chunks/repository-mjqndqed.js +0 -466
  707. package/dist/chunks/repository-mxr1v1s0.js +0 -28
  708. package/dist/chunks/repository-pgze7171.js +0 -69
  709. /package/dist/chunks/{repository-0qkdqm5v.js → location-services-0qkdqm5v.js} +0 -0
  710. /package/dist/chunks/{repository-0zkw76rk.js → location-services-0zkw76rk.js} +0 -0
  711. /package/dist/chunks/{repository-17cy0kzp.js → location-services-17cy0kzp.js} +0 -0
  712. /package/dist/chunks/{repository-1cnp2v09.js → location-services-1cnp2v09.js} +0 -0
  713. /package/dist/chunks/{repository-1kg9ymc8.js → location-services-1kg9ymc8.js} +0 -0
  714. /package/dist/chunks/{repository-24dcb14g.js → location-services-24dcb14g.js} +0 -0
  715. /package/dist/chunks/{repository-2710q6r3.js → location-services-2710q6r3.js} +0 -0
  716. /package/dist/chunks/{repository-2axfhc9x.js → location-services-2axfhc9x.js} +0 -0
  717. /package/dist/chunks/{repository-2c3vjs8z.js → location-services-2c3vjs8z.js} +0 -0
  718. /package/dist/chunks/{repository-34c7v6d4.js → location-services-34c7v6d4.js} +0 -0
  719. /package/dist/chunks/{repository-359p4xyc.js → location-services-359p4xyc.js} +0 -0
  720. /package/dist/chunks/{repository-3asan66x.js → location-services-3asan66x.js} +0 -0
  721. /package/dist/chunks/{repository-3t0ybcrp.js → location-services-3t0ybcrp.js} +0 -0
  722. /package/dist/chunks/{repository-3v8g72cx.js → location-services-3v8g72cx.js} +0 -0
  723. /package/dist/chunks/{repository-3w5fmr99.js → location-services-3w5fmr99.js} +0 -0
  724. /package/dist/chunks/{repository-3wcehsnq.js → location-services-3wcehsnq.js} +0 -0
  725. /package/dist/chunks/{repository-43n2bw4t.js → location-services-43n2bw4t.js} +0 -0
  726. /package/dist/chunks/{repository-4knz6hnm.js → location-services-4knz6hnm.js} +0 -0
  727. /package/dist/chunks/{repository-4vcrnpx2.js → location-services-4vcrnpx2.js} +0 -0
  728. /package/dist/chunks/{repository-4y7fprxs.js → location-services-4y7fprxs.js} +0 -0
  729. /package/dist/chunks/{repository-53557ph1.js → location-services-53557ph1.js} +0 -0
  730. /package/dist/chunks/{repository-550bvhaj.js → location-services-550bvhaj.js} +0 -0
  731. /package/dist/chunks/{repository-6prwharc.js → location-services-6prwharc.js} +0 -0
  732. /package/dist/chunks/{repository-6q2bdcd1.js → location-services-6q2bdcd1.js} +0 -0
  733. /package/dist/chunks/{repository-7akdwqpd.js → location-services-7akdwqpd.js} +0 -0
  734. /package/dist/chunks/{repository-7m9af43g.js → location-services-7m9af43g.js} +0 -0
  735. /package/dist/chunks/{repository-822emrt2.js → location-services-822emrt2.js} +0 -0
  736. /package/dist/chunks/{repository-88xbtdfr.js → location-services-88xbtdfr.js} +0 -0
  737. /package/dist/chunks/{repository-8n3pysct.js → location-services-8n3pysct.js} +0 -0
  738. /package/dist/chunks/{repository-8wj87zfr.js → location-services-8wj87zfr.js} +0 -0
  739. /package/dist/chunks/{repository-9a4afbnw.js → location-services-9a4afbnw.js} +0 -0
  740. /package/dist/chunks/{repository-9rqn6x4v.js → location-services-9rqn6x4v.js} +0 -0
  741. /package/dist/chunks/{repository-a6k6eb26.js → location-services-a6k6eb26.js} +0 -0
  742. /package/dist/chunks/{repository-af5trqkr.js → location-services-af5trqkr.js} +0 -0
  743. /package/dist/chunks/{repository-afrmfg78.js → location-services-afrmfg78.js} +0 -0
  744. /package/dist/chunks/{repository-aqzs7mqg.js → location-services-aqzs7mqg.js} +0 -0
  745. /package/dist/chunks/{repository-atq7p7m5.js → location-services-atq7p7m5.js} +0 -0
  746. /package/dist/chunks/{repository-bkyjaxrp.js → location-services-bkyjaxrp.js} +0 -0
  747. /package/dist/chunks/{repository-bmr6ed5q.js → location-services-bmr6ed5q.js} +0 -0
  748. /package/dist/chunks/{repository-cf4snx6d.js → location-services-cf4snx6d.js} +0 -0
  749. /package/dist/chunks/{repository-cvy3z8tj.js → location-services-cvy3z8tj.js} +0 -0
  750. /package/dist/chunks/{repository-d9fn303g.js → location-services-d9fn303g.js} +0 -0
  751. /package/dist/chunks/{repository-d9jj8t3e.js → location-services-d9jj8t3e.js} +0 -0
  752. /package/dist/chunks/{repository-dajrwvna.js → location-services-dajrwvna.js} +0 -0
  753. /package/dist/chunks/{repository-dap0rakb.js → location-services-dap0rakb.js} +0 -0
  754. /package/dist/chunks/{repository-df08tz66.js → location-services-df08tz66.js} +0 -0
  755. /package/dist/chunks/{repository-dy18nga0.js → location-services-dy18nga0.js} +0 -0
  756. /package/dist/chunks/{repository-e5kj55wp.js → location-services-e5kj55wp.js} +0 -0
  757. /package/dist/chunks/{repository-e73j6tqm.js → location-services-e73j6tqm.js} +0 -0
  758. /package/dist/chunks/{repository-ec1grn59.js → location-services-ec1grn59.js} +0 -0
  759. /package/dist/chunks/{repository-eh3zwz77.js → location-services-eh3zwz77.js} +0 -0
  760. /package/dist/chunks/{repository-emrn6kk6.js → location-services-emrn6kk6.js} +0 -0
  761. /package/dist/chunks/{repository-f0mxakyp.js → location-services-f0mxakyp.js} +0 -0
  762. /package/dist/chunks/{repository-f6n9ztr4.js → location-services-f6n9ztr4.js} +0 -0
  763. /package/dist/chunks/{repository-faypxj3z.js → location-services-faypxj3z.js} +0 -0
  764. /package/dist/chunks/{repository-fd410y7t.js → location-services-fd410y7t.js} +0 -0
  765. /package/dist/chunks/{repository-fxgpk5d8.js → location-services-fxgpk5d8.js} +0 -0
  766. /package/dist/chunks/{repository-g4wezp1m.js → location-services-g4wezp1m.js} +0 -0
  767. /package/dist/chunks/{repository-g86h250q.js → location-services-g86h250q.js} +0 -0
  768. /package/dist/chunks/{repository-gebd4c9n.js → location-services-gebd4c9n.js} +0 -0
  769. /package/dist/chunks/{repository-gftt206x.js → location-services-gftt206x.js} +0 -0
  770. /package/dist/chunks/{repository-hk9envan.js → location-services-hk9envan.js} +0 -0
  771. /package/dist/chunks/{repository-j2ntwpah.js → location-services-j2ntwpah.js} +0 -0
  772. /package/dist/chunks/{repository-j5zkgpj8.js → location-services-j5zkgpj8.js} +0 -0
  773. /package/dist/chunks/{repository-jjkms2e6.js → location-services-jjkms2e6.js} +0 -0
  774. /package/dist/chunks/{repository-jr7sbwjy.js → location-services-jr7sbwjy.js} +0 -0
  775. /package/dist/chunks/{repository-jwfs4k6c.js → location-services-jwfs4k6c.js} +0 -0
  776. /package/dist/chunks/{repository-jzg6c2d5.js → location-services-jzg6c2d5.js} +0 -0
  777. /package/dist/chunks/{repository-mp448xyj.js → location-services-mp448xyj.js} +0 -0
  778. /package/dist/chunks/{repository-msx8hqn2.js → location-services-msx8hqn2.js} +0 -0
  779. /package/dist/chunks/{repository-n05xt0ee.js → location-services-n05xt0ee.js} +0 -0
  780. /package/dist/chunks/{repository-n3j8tn72.js → location-services-n3j8tn72.js} +0 -0
  781. /package/dist/chunks/{repository-njntx4h6.js → location-services-njntx4h6.js} +0 -0
  782. /package/dist/chunks/{repository-q3sfg36h.js → location-services-q3sfg36h.js} +0 -0
  783. /package/dist/chunks/{repository-q74kybfr.js → location-services-q74kybfr.js} +0 -0
  784. /package/dist/chunks/{repository-qaymkmh1.js → location-services-qaymkmh1.js} +0 -0
  785. /package/dist/chunks/{repository-qb87gjwd.js → location-services-qb87gjwd.js} +0 -0
  786. /package/dist/chunks/{repository-qfa1cgps.js → location-services-qfa1cgps.js} +0 -0
  787. /package/dist/chunks/{repository-qg3g05ea.js → location-services-qg3g05ea.js} +0 -0
  788. /package/dist/chunks/{repository-qrg20bc0.js → location-services-qrg20bc0.js} +0 -0
  789. /package/dist/chunks/{repository-rcb2kzg1.js → location-services-rcb2kzg1.js} +0 -0
  790. /package/dist/chunks/{repository-sdp7kfr6.js → location-services-sdp7kfr6.js} +0 -0
  791. /package/dist/chunks/{repository-ssg3fenm.js → location-services-ssg3fenm.js} +0 -0
  792. /package/dist/chunks/{repository-w803qqfp.js → location-services-w803qqfp.js} +0 -0
  793. /package/dist/chunks/{repository-wc3fc9cn.js → location-services-wc3fc9cn.js} +0 -0
  794. /package/dist/chunks/{repository-wer8tq1h.js → location-services-wer8tq1h.js} +0 -0
  795. /package/dist/chunks/{repository-wtztk69x.js → location-services-wtztk69x.js} +0 -0
  796. /package/dist/chunks/{repository-x0ckcb58.js → location-services-x0ckcb58.js} +0 -0
  797. /package/dist/chunks/{repository-x61499pn.js → location-services-x61499pn.js} +0 -0
  798. /package/dist/chunks/{repository-y44na4kk.js → location-services-y44na4kk.js} +0 -0
  799. /package/dist/chunks/{repository-y8cydn3q.js → location-services-y8cydn3q.js} +0 -0
  800. /package/dist/chunks/{repository-y8f7s663.js → location-services-y8f7s663.js} +0 -0
  801. /package/dist/chunks/{repository-ygaqb7jw.js → location-services-ygaqb7jw.js} +0 -0
  802. /package/dist/chunks/{repository-ym463w8f.js → location-services-ym463w8f.js} +0 -0
  803. /package/dist/chunks/{repository-z5v4ffb3.js → location-services-z5v4ffb3.js} +0 -0
  804. /package/dist/chunks/{repository-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 };