@opencode-ai/core 0.0.0-dev-18673 → 0.0.0-dev-18680

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 (786) hide show
  1. package/dist/account/sql.js +2 -2
  2. package/dist/agent.js +70 -70
  3. package/dist/aisdk-native.js +3 -3
  4. package/dist/aisdk.js +4 -4
  5. package/dist/app.js +2 -2
  6. package/dist/bus.js +68 -68
  7. package/dist/catalog.js +78 -78
  8. package/dist/chunks/{job-02dbfq60.js → session-02dbfq60.js} +1 -1
  9. package/dist/chunks/{job-2jqw5dy6.js → session-058g8g7s.js} +4 -4
  10. package/dist/chunks/{job-hxcd35r2.js → session-0687t5rp.js} +6 -6
  11. package/dist/chunks/{job-0gcqkg3x.js → session-0gcqkg3x.js} +2 -2
  12. package/dist/chunks/{job-9kxkwge9.js → session-0jd2yeft.js} +7 -7
  13. package/dist/chunks/{job-0kvmztkf.js → session-0kvmztkf.js} +1 -1
  14. package/dist/chunks/{job-vt9vdee9.js → session-0wg38x1s.js} +33 -33
  15. package/dist/chunks/{job-10p29vm9.js → session-10p29vm9.js} +1 -1
  16. package/dist/chunks/{job-15hpbjb6.js → session-15hpbjb6.js} +1 -1
  17. package/dist/chunks/{job-18pv8fg3.js → session-18pv8fg3.js} +2 -2
  18. package/dist/chunks/{job-e663gt7g.js → session-1md426yk.js} +5 -5
  19. package/dist/chunks/{job-9vbhxvnk.js → session-1nh9bhfd.js} +1 -1
  20. package/dist/chunks/{job-j925pnyr.js → session-21dv21pt.js} +6 -6
  21. package/dist/chunks/{job-264e1nfp.js → session-264e1nfp.js} +2 -2
  22. package/dist/chunks/{job-2m0hgr65.js → session-2m0hgr65.js} +1 -1
  23. package/dist/chunks/session-2n1fvc6p.js +120 -0
  24. package/dist/chunks/{job-2nmyybe0.js → session-2nmyybe0.js} +1 -1
  25. package/dist/chunks/{job-2pd1mgzx.js → session-2pd1mgzx.js} +2 -2
  26. package/dist/chunks/{job-ppc4pq6n.js → session-2wcg7937.js} +7 -7
  27. package/dist/chunks/{job-2wds5nk3.js → session-2wds5nk3.js} +1 -1
  28. package/dist/chunks/{job-qarwrfd1.js → session-34a2dmws.js} +2 -2
  29. package/dist/chunks/{job-ryg4g4zw.js → session-35w4tpwq.js} +2 -2
  30. package/dist/chunks/{job-393a352g.js → session-393a352g.js} +2 -2
  31. package/dist/chunks/{job-vf9yn9vx.js → session-3bbadsgf.js} +11 -11
  32. package/dist/chunks/{job-3g8vftxb.js → session-3g8vftxb.js} +2 -2
  33. package/dist/chunks/{job-ngdmqv4f.js → session-3hx0vccx.js} +3 -3
  34. package/dist/chunks/{job-3qv8nf0b.js → session-3qv8nf0b.js} +1 -1
  35. package/dist/chunks/{job-3thh6229.js → session-3thh6229.js} +2 -2
  36. package/dist/chunks/{job-17rksvd3.js → session-3xbnrqrm.js} +8 -8
  37. package/dist/chunks/{job-0j6yxnr1.js → session-3yqwredy.js} +4 -4
  38. package/dist/chunks/{job-7khw64yh.js → session-41qzzbpz.js} +3 -2
  39. package/dist/chunks/{job-twchz7da.js → session-4p58r1h0.js} +6 -6
  40. package/dist/chunks/{job-2hnk029s.js → session-4v0txtae.js} +7 -7
  41. package/dist/chunks/{job-4zzdwbaz.js → session-4zzdwbaz.js} +2 -2
  42. package/dist/chunks/{job-50jxp3hw.js → session-50jxp3hw.js} +1 -1
  43. package/dist/chunks/{job-57ej80dx.js → session-57ej80dx.js} +2 -2
  44. package/dist/chunks/{job-57tzwnz4.js → session-57tzwnz4.js} +1 -1
  45. package/dist/chunks/{job-493bygj2.js → session-57zbj89n.js} +11 -11
  46. package/dist/chunks/{job-j0e9tdbc.js → session-58hs31zn.js} +7 -7
  47. package/dist/chunks/{job-58xdvehb.js → session-58xdvehb.js} +1 -1
  48. package/dist/chunks/{job-bz4yk1t4.js → session-59adj99a.js} +9 -9
  49. package/dist/chunks/{job-dv3yagct.js → session-5anbx1y1.js} +18 -18
  50. package/dist/chunks/{job-ccc48pq3.js → session-5dkxa5aw.js} +3 -3
  51. package/dist/chunks/{job-5fe026tx.js → session-5fe026tx.js} +3 -3
  52. package/dist/chunks/{job-n2c9k96k.js → session-5h7by0wv.js} +6 -6
  53. package/dist/chunks/{job-5rs65q6p.js → session-5rs65q6p.js} +1 -1
  54. package/dist/chunks/{job-5vcssjzn.js → session-5vcssjzn.js} +1 -1
  55. package/dist/chunks/{job-d0dbhb87.js → session-5zdvtfdp.js} +16 -16
  56. package/dist/chunks/{job-6272rtjg.js → session-6272rtjg.js} +1 -1
  57. package/dist/chunks/{job-z1t08826.js → session-633v3wec.js} +12 -12
  58. package/dist/chunks/{job-3raka4vp.js → session-696cd9wd.js} +2 -2
  59. package/dist/chunks/{job-gmvz6tt0.js → session-69h3hx8c.js} +11 -11
  60. package/dist/chunks/{job-6ky7rqk7.js → session-6ky7rqk7.js} +1 -1
  61. package/dist/chunks/{job-kxn229zn.js → session-6rjxva5y.js} +6 -6
  62. package/dist/chunks/{job-ecft2zb7.js → session-6vrp5bxn.js} +103 -77
  63. package/dist/chunks/{job-6wkzvma0.js → session-6wkzvma0.js} +2 -2
  64. package/dist/chunks/{job-wpn3tqwb.js → session-71hr4p7q.js} +156 -156
  65. package/dist/chunks/{job-f7q7a28y.js → session-7ccgh94t.js} +6 -6
  66. package/dist/chunks/session-7j0rtb14.js +203 -0
  67. package/dist/chunks/{job-7mrpdsq5.js → session-7mrpdsq5.js} +1 -1
  68. package/dist/chunks/{job-qtqph8kb.js → session-7mzasrz2.js} +10 -10
  69. package/dist/chunks/{job-1t1wgrhv.js → session-7n266rhv.js} +10 -10
  70. package/dist/chunks/{job-bv3cft66.js → session-7rq9tk1t.js} +10 -10
  71. package/dist/chunks/{job-7wcmqxrc.js → session-7wcmqxrc.js} +1 -1
  72. package/dist/chunks/{job-83ba1yz6.js → session-83ba1yz6.js} +2 -2
  73. package/dist/chunks/{job-wf9by8hw.js → session-84fmkx8h.js} +3 -3
  74. package/dist/chunks/{job-0rw5mgza.js → session-88rjs075.js} +7 -7
  75. package/dist/chunks/{job-hzjn00dj.js → session-8a4hfbqs.js} +6 -6
  76. package/dist/chunks/{job-724jej9m.js → session-8abcr4s5.js} +15 -15
  77. package/dist/chunks/{job-ke8148ty.js → session-8hzt9wtc.js} +4 -4
  78. package/dist/chunks/{job-x6p3vk3n.js → session-8nqg4b0x.js} +5 -5
  79. package/dist/chunks/{job-8pngjawd.js → session-8pngjawd.js} +2 -2
  80. package/dist/chunks/{job-ndwaftrw.js → session-8pthsx5p.js} +13 -13
  81. package/dist/chunks/{job-d64twz5j.js → session-99m1rbqh.js} +5 -5
  82. package/dist/chunks/{job-9f0rnpkn.js → session-9f0rnpkn.js} +1 -1
  83. package/dist/chunks/{job-dm0vs72c.js → session-9fyjf0qs.js} +7 -7
  84. package/dist/chunks/{job-6xx60510.js → session-9j2vg75p.js} +7 -7
  85. package/dist/chunks/{job-ngrdkqab.js → session-9kmcw9m3.js} +9 -9
  86. package/dist/chunks/{job-42wbxjzr.js → session-a1ppjc9k.js} +3 -3
  87. package/dist/chunks/{job-1kexajey.js → session-a6kwbr2g.js} +5 -5
  88. package/dist/chunks/{job-a7zp47hx.js → session-a7zp47hx.js} +1 -1
  89. package/dist/chunks/{job-r1bm65q2.js → session-ad69wqrq.js} +11 -11
  90. package/dist/chunks/session-aryk6wfr.js +330 -0
  91. package/dist/chunks/{job-awg5d31a.js → session-awg5d31a.js} +1 -1
  92. package/dist/chunks/{job-52hchg7s.js → session-azvs72ad.js} +4 -4
  93. package/dist/chunks/{job-69r90z8c.js → session-b8cqhxsc.js} +4 -4
  94. package/dist/chunks/{job-bbhffenw.js → session-bbhffenw.js} +3 -3
  95. package/dist/chunks/{job-bh1wr8rq.js → session-bh1wr8rq.js} +2 -2
  96. package/dist/chunks/{job-x7r2g85h.js → session-bk73cw3p.js} +12 -12
  97. package/dist/chunks/{job-s7azyhqy.js → session-bphfm9wc.js} +5 -5
  98. package/dist/chunks/{job-byab506k.js → session-byab506k.js} +1 -1
  99. package/dist/chunks/{job-c4wcb9vc.js → session-c4wcb9vc.js} +2 -2
  100. package/dist/chunks/{job-yd18a1xb.js → session-c5588xfk.js} +8 -8
  101. package/dist/chunks/{job-c8ya26sa.js → session-c8ya26sa.js} +2 -2
  102. package/dist/chunks/session-cgqn2mrm.js +147 -0
  103. package/dist/chunks/{job-c48kc6fa.js → session-ck18qftx.js} +18 -18
  104. package/dist/chunks/{job-pq2wqp7r.js → session-cmty4qa6.js} +22 -22
  105. package/dist/chunks/{job-cpqd33tw.js → session-cpqd33tw.js} +2 -2
  106. package/dist/chunks/{job-3apyg94z.js → session-crdn1nad.js} +6 -6
  107. package/dist/chunks/{job-cfzsy64h.js → session-d25w5m2t.js} +4 -4
  108. package/dist/chunks/{job-d2gk9vpf.js → session-d2gk9vpf.js} +2 -2
  109. package/dist/chunks/{job-d4h7vwhh.js → session-d4h7vwhh.js} +2 -2
  110. package/dist/chunks/{job-9tbbhhr5.js → session-d54j2rpe.js} +2 -2
  111. package/dist/chunks/{job-dhphtf1x.js → session-dhphtf1x.js} +1 -1
  112. package/dist/chunks/{job-qgr3f3b0.js → session-dpfggcan.js} +4 -4
  113. package/dist/chunks/{job-vgthr3zd.js → session-dxenzne9.js} +9 -9
  114. package/dist/chunks/{job-0kdsfzn8.js → session-dyfpz6yf.js} +2 -2
  115. package/dist/chunks/{job-6jx6ecw1.js → session-dyj7wa6j.js} +5 -5
  116. package/dist/chunks/{job-e1z9a0ts.js → session-e1z9a0ts.js} +2 -2
  117. package/dist/chunks/session-e6zn2gm9.js +33 -0
  118. package/dist/chunks/{job-ntrwn9c5.js → session-eaqzta6e.js} +5 -5
  119. package/dist/chunks/{job-ec8vrfw5.js → session-ec8vrfw5.js} +1 -1
  120. package/dist/chunks/{job-enpg66yn.js → session-enpg66yn.js} +1 -1
  121. package/dist/chunks/{job-ep35cpen.js → session-ep35cpen.js} +1 -1
  122. package/dist/chunks/{job-04ve9v9t.js → session-epp35gqy.js} +16 -16
  123. package/dist/chunks/{job-etvrgfqj.js → session-etvrgfqj.js} +1 -1
  124. package/dist/chunks/{job-44ehhp8z.js → session-eyt1bv4a.js} +33 -33
  125. package/dist/chunks/{job-0bw528m8.js → session-ezb5r5gt.js} +46 -46
  126. package/dist/chunks/session-f9t86cbk.js +483 -0
  127. package/dist/chunks/{job-f9wt0tjw.js → session-f9wt0tjw.js} +2 -2
  128. package/dist/chunks/{job-fgyjabww.js → session-fgyjabww.js} +2 -2
  129. package/dist/chunks/{job-fm3b2wbt.js → session-fm3b2wbt.js} +2 -2
  130. package/dist/chunks/{job-za8wqpca.js → session-fp3h57ch.js} +3 -3
  131. package/dist/chunks/{job-y1a7rf83.js → session-fxxcje44.js} +2 -2
  132. package/dist/chunks/{job-fyaxe1pd.js → session-fyaxe1pd.js} +2 -2
  133. package/dist/chunks/{job-p62bwtxn.js → session-fzhfgp04.js} +3 -3
  134. package/dist/chunks/{job-g5tvq2z7.js → session-g5tvq2z7.js} +2 -2
  135. package/dist/chunks/{job-gb1z7yet.js → session-gb1z7yet.js} +2 -2
  136. package/dist/chunks/{job-gcay93cp.js → session-gcay93cp.js} +1 -1
  137. package/dist/chunks/{job-gd2xppx8.js → session-gd2xppx8.js} +1 -1
  138. package/dist/chunks/{job-yrxhe8a3.js → session-gn0wvgnd.js} +12 -12
  139. package/dist/chunks/{job-1795kap3.js → session-gpmvyznp.js} +14 -14
  140. package/dist/chunks/{job-knm8yv8d.js → session-gsq62xr5.js} +2 -2
  141. package/dist/chunks/{job-3x82cc09.js → session-gv8gkg9f.js} +4 -4
  142. package/dist/chunks/{job-h12kt9pa.js → session-h12kt9pa.js} +2 -2
  143. package/dist/chunks/{job-dchkjjs1.js → session-h2h934sz.js} +6 -6
  144. package/dist/chunks/{job-6eb12gng.js → session-h3692mdz.js} +4 -4
  145. package/dist/chunks/{job-h5wnyjzw.js → session-h5wnyjzw.js} +3 -3
  146. package/dist/chunks/{job-h94zdhz8.js → session-h94zdhz8.js} +2 -2
  147. package/dist/chunks/{job-ggy6v1em.js → session-hdfa3mh6.js} +5 -5
  148. package/dist/chunks/{job-vzgmc9jp.js → session-hdn3na0f.js} +9 -9
  149. package/dist/chunks/{job-t981ghyw.js → session-hgde6bh9.js} +6 -6
  150. package/dist/chunks/{job-hgr9y616.js → session-hgr9y616.js} +1 -1
  151. package/dist/chunks/{job-hp6rpdnc.js → session-hp6rpdnc.js} +1 -1
  152. package/dist/chunks/{job-wvmyfgqa.js → session-hxy5ag1m.js} +7 -7
  153. package/dist/chunks/{job-j0feex7e.js → session-j0feex7e.js} +1 -1
  154. package/dist/chunks/{job-j0sncrp4.js → session-j0sncrp4.js} +3 -3
  155. package/dist/chunks/{job-de5esam2.js → session-j281xcgt.js} +3 -3
  156. package/dist/chunks/{job-6xnprn33.js → session-j2gsfrte.js} +10 -10
  157. package/dist/chunks/{job-h41pqsxw.js → session-j31fcqy5.js} +7 -7
  158. package/dist/chunks/{job-w989xrsb.js → session-j475sjk6.js} +4 -4
  159. package/dist/chunks/{job-2crbvxrz.js → session-jbwdt10d.js} +11 -11
  160. package/dist/chunks/{job-1gwra17j.js → session-jcppp84y.js} +17 -17
  161. package/dist/chunks/{job-dgn4zcks.js → session-jq1jnedj.js} +58 -58
  162. package/dist/chunks/{job-7xyyvdqe.js → session-jv5rb8d5.js} +6 -6
  163. package/dist/chunks/{job-vx4s9vef.js → session-jxkkm5hg.js} +3 -3
  164. package/dist/chunks/{job-eyavsrxt.js → session-k1brm859.js} +7 -7
  165. package/dist/chunks/{job-x4rdp18t.js → session-k828h0dz.js} +4 -4
  166. package/dist/chunks/{job-kg1345f7.js → session-kg1345f7.js} +1 -1
  167. package/dist/chunks/{job-kp1t5rcy.js → session-kp1t5rcy.js} +1 -1
  168. package/dist/chunks/{job-krsqcmnj.js → session-krsqcmnj.js} +1 -1
  169. package/dist/chunks/{job-53s1vm97.js → session-kyy3c6xx.js} +4 -4
  170. package/dist/chunks/{job-m55whf0h.js → session-m55whf0h.js} +2 -2
  171. package/dist/chunks/{job-mf0hyk7z.js → session-mf0hyk7z.js} +1 -1
  172. package/dist/chunks/{job-v42pfaxk.js → session-mjv6tay6.js} +3 -3
  173. package/dist/chunks/{job-mnb85w6b.js → session-mnb85w6b.js} +2 -2
  174. package/dist/chunks/{job-q5ke20s1.js → session-msty6zz3.js} +5 -5
  175. package/dist/chunks/{job-nkej4bfa.js → session-mvesx1w6.js} +4 -4
  176. package/dist/chunks/{job-mxjff6xk.js → session-mxjff6xk.js} +4 -4
  177. package/dist/chunks/{job-mxvw03gv.js → session-mxvw03gv.js} +1 -1
  178. package/dist/chunks/{job-wyghbada.js → session-my8qjmrs.js} +13 -12
  179. package/dist/chunks/{job-ngz3v23c.js → session-ngz3v23c.js} +2 -2
  180. package/dist/chunks/{job-nr76rjj3.js → session-nr76rjj3.js} +2 -2
  181. package/dist/chunks/{job-nr9st120.js → session-nrkxsazt.js} +5 -5
  182. package/dist/chunks/{job-ns0sdez7.js → session-ns0sdez7.js} +3 -3
  183. package/dist/chunks/{job-ea0dq72e.js → session-nv11mxjr.js} +56 -54
  184. package/dist/chunks/{job-nzrjycs5.js → session-nzrjycs5.js} +1 -1
  185. package/dist/chunks/session-p00cmpwh.js +34 -0
  186. package/dist/chunks/{job-pb8mvhpw.js → session-p2fwtdhh.js} +3 -3
  187. package/dist/chunks/{job-1y7r54v0.js → session-pb5z5fyy.js} +7 -7
  188. package/dist/chunks/{job-522kq8qa.js → session-peta84y6.js} +4 -4
  189. package/dist/chunks/{job-pq4b4pqk.js → session-pq4b4pqk.js} +2 -2
  190. package/dist/chunks/{job-9qkcnssy.js → session-pzt4sbn0.js} +13 -13
  191. package/dist/chunks/{job-qzvkc7f1.js → session-q4vy8f4v.js} +90 -90
  192. package/dist/chunks/{job-q606pcse.js → session-q606pcse.js} +3 -3
  193. package/dist/chunks/{job-662k41g4.js → session-q6ks3bch.js} +3 -3
  194. package/dist/chunks/{job-mwzjwhar.js → session-q9ha2ewt.js} +5 -5
  195. package/dist/chunks/{job-qe0d689s.js → session-qe0d689s.js} +2 -2
  196. package/dist/chunks/{job-wjd92vx4.js → session-qneh33dk.js} +3 -3
  197. package/dist/chunks/{job-spcjzfgq.js → session-qtqd4q3d.js} +3 -3
  198. package/dist/chunks/{job-vhxe1a2q.js → session-qxba83m1.js} +7 -7
  199. package/dist/chunks/{job-r13w8t0w.js → session-r13w8t0w.js} +2 -2
  200. package/dist/chunks/{job-r3k9abhd.js → session-r3k9abhd.js} +2 -2
  201. package/dist/chunks/{job-v2shkc71.js → session-r5ens2p9.js} +10 -10
  202. package/dist/chunks/{job-r9d3d23r.js → session-r9d3d23r.js} +1 -1
  203. package/dist/chunks/{job-rahat93a.js → session-rahat93a.js} +1 -1
  204. package/dist/chunks/{job-r7gxb078.js → session-ravekjga.js} +2 -2
  205. package/dist/chunks/{job-rbnp2c85.js → session-rbnp2c85.js} +3 -3
  206. package/dist/chunks/{job-sqzywsbq.js → session-rhvfdqp3.js} +6 -6
  207. package/dist/chunks/{job-pjq3bk07.js → session-rj7a1tvm.js} +11 -11
  208. package/dist/chunks/{job-edjh5g28.js → session-rm35dsdt.js} +3 -3
  209. package/dist/chunks/{job-r5qypb3j.js → session-rv2p78xh.js} +6 -6
  210. package/dist/chunks/{job-9ah4t5gc.js → session-ryv6zajt.js} +4 -4
  211. package/dist/chunks/{job-s2kjqxd3.js → session-s2kjqxd3.js} +1 -1
  212. package/dist/chunks/{job-s33fw6zm.js → session-s33fw6zm.js} +1 -1
  213. package/dist/chunks/{job-rp954h3j.js → session-s3h4mm47.js} +5 -5
  214. package/dist/chunks/{job-tb3sg9tv.js → session-s5wy488z.js} +5 -5
  215. package/dist/chunks/{job-682y27cc.js → session-s7xdknrx.js} +12 -12
  216. package/dist/chunks/{job-c1fr40sx.js → session-skey4epq.js} +6 -6
  217. package/dist/chunks/{job-smpeg8c9.js → session-smpeg8c9.js} +2 -2
  218. package/dist/chunks/{job-ba35xjtb.js → session-ste3c0tj.js} +12 -12
  219. package/dist/chunks/{job-sw84ckhj.js → session-sw84ckhj.js} +1 -1
  220. package/dist/chunks/{job-tkazpfmd.js → session-syzqyt8c.js} +7 -7
  221. package/dist/chunks/{job-t14kykx1.js → session-t14kykx1.js} +1 -1
  222. package/dist/chunks/{job-k36tycg5.js → session-t2w72mpk.js} +3 -3
  223. package/dist/chunks/{job-830qkp09.js → session-t9p6gett.js} +9 -9
  224. package/dist/chunks/{job-tgbb2ckq.js → session-tgbb2ckq.js} +2 -2
  225. package/dist/chunks/{job-thstd87d.js → session-thstd87d.js} +1 -1
  226. package/dist/chunks/{job-tjrfm0xh.js → session-tjrfm0xh.js} +2 -2
  227. package/dist/chunks/{job-ek7xs75a.js → session-tkfz0pkr.js} +3 -3
  228. package/dist/chunks/{job-tdk41tnh.js → session-tpmymt1n.js} +4 -4
  229. package/dist/chunks/{job-zpyt1ezn.js → session-tr7h3gxy.js} +3 -3
  230. package/dist/chunks/{job-v2wshkax.js → session-v2wshkax.js} +1 -1
  231. package/dist/chunks/{job-v80zsxnb.js → session-v80zsxnb.js} +1 -1
  232. package/dist/chunks/{job-xes8c7na.js → session-v8p5rtbh.js} +18 -16
  233. package/dist/chunks/{job-v972xay6.js → session-v972xay6.js} +1 -1
  234. package/dist/chunks/{job-v9bfv94f.js → session-v9bfv94f.js} +1 -1
  235. package/dist/chunks/{job-mrdgq75n.js → session-vbppvz6c.js} +4 -4
  236. package/dist/chunks/{job-vcwr2vpf.js → session-vcwr2vpf.js} +1 -1
  237. package/dist/chunks/{job-eqacz5gw.js → session-vdnt8v4a.js} +3 -3
  238. package/dist/chunks/{job-w6r7reh9.js → session-vkndap52.js} +15 -15
  239. package/dist/chunks/{job-m4nj1rxs.js → session-vnajyn61.js} +7 -7
  240. package/dist/chunks/{job-p3ahxk9y.js → session-vqbb04gf.js} +8 -8
  241. package/dist/chunks/{job-vqbmgfq1.js → session-vqbmgfq1.js} +3 -3
  242. package/dist/chunks/{job-arfgd8hp.js → session-vqgp21s3.js} +4 -4
  243. package/dist/chunks/{job-vz89hfgr.js → session-vz89hfgr.js} +1 -1
  244. package/dist/chunks/{job-f2v2a3w4.js → session-w2ter38n.js} +8 -8
  245. package/dist/chunks/{job-zk95prvm.js → session-w4t9wyt2.js} +8 -8
  246. package/dist/chunks/{job-b09nc7xz.js → session-w75pdptm.js} +37 -37
  247. package/dist/chunks/{job-wbkt8qpj.js → session-wbkt8qpj.js} +1 -1
  248. package/dist/chunks/{job-wmxdh12w.js → session-wmxdh12w.js} +1 -1
  249. package/dist/chunks/{job-wps8gh8n.js → session-wps8gh8n.js} +2 -2
  250. package/dist/chunks/{job-zwajk1qj.js → session-wqjrnf82.js} +3 -3
  251. package/dist/chunks/{job-rngafpkn.js → session-wr8smk8q.js} +7 -7
  252. package/dist/chunks/{job-x89rah0x.js → session-x89rah0x.js} +1 -1
  253. package/dist/chunks/{job-xczfw7dq.js → session-xczfw7dq.js} +1 -1
  254. package/dist/chunks/{job-jxfq75rv.js → session-xe15eaf0.js} +3 -3
  255. package/dist/chunks/{job-xgv25zxy.js → session-xgv25zxy.js} +1 -1
  256. package/dist/chunks/{job-xj0xhwdw.js → session-xj0xhwdw.js} +1 -1
  257. package/dist/chunks/{job-xwftk1fd.js → session-xwftk1fd.js} +2 -2
  258. package/dist/chunks/{job-xxpvz42q.js → session-xxpvz42q.js} +3 -3
  259. package/dist/chunks/{job-83zdjmgg.js → session-xyjdpx1v.js} +2 -2
  260. package/dist/chunks/{job-2rc1qwhy.js → session-y0mbrkj1.js} +101 -93
  261. package/dist/chunks/{job-y0x38cee.js → session-y0x38cee.js} +1 -1
  262. package/dist/chunks/{job-y198y2ra.js → session-y198y2ra.js} +1 -1
  263. package/dist/chunks/{job-y67x6rf6.js → session-y67x6rf6.js} +1 -1
  264. package/dist/chunks/{job-rcmgh3ca.js → session-ycvscpnr.js} +5 -5
  265. package/dist/chunks/{job-4gv2h1pd.js → session-yst2dg69.js} +7 -7
  266. package/dist/chunks/{job-yt02w91s.js → session-yt02w91s.js} +2 -2
  267. package/dist/chunks/{job-hnxf074g.js → session-z3750ywa.js} +3 -3
  268. package/dist/chunks/{job-gg11cpea.js → session-z40wwesm.js} +14 -14
  269. package/dist/chunks/{job-zbqqnp0n.js → session-zbqqnp0n.js} +1 -1
  270. package/dist/chunks/{job-zdkg1k91.js → session-zdkg1k91.js} +1 -1
  271. package/dist/chunks/{job-zs1qer6v.js → session-zs1qer6v.js} +2 -2
  272. package/dist/chunks/{job-zxe9jjhn.js → session-zxe9jjhn.js} +2 -2
  273. package/dist/chunks/{job-zygzxh1b.js → session-zygzxh1b.js} +2 -2
  274. package/dist/chunks/{job-dnxrkvvt.js → session-zzc3amzq.js} +2 -2
  275. package/dist/codemode/catalog.js +2 -2
  276. package/dist/codemode/instructions.js +4 -4
  277. package/dist/codemode/tool.js +3 -3
  278. package/dist/command.js +70 -70
  279. package/dist/config/markdown.js +2 -2
  280. package/dist/config/normalize.js +20 -20
  281. package/dist/config/plugin/agent.js +132 -132
  282. package/dist/config/plugin/command.js +118 -118
  283. package/dist/config/plugin/compaction.js +146 -146
  284. package/dist/config/plugin/entry-observer.js +114 -114
  285. package/dist/config/plugin/formatter.js +119 -119
  286. package/dist/config/plugin/image.js +131 -131
  287. package/dist/config/plugin/instruction.js +90 -90
  288. package/dist/config/plugin/location-watcher.js +117 -117
  289. package/dist/config/plugin/mcp.js +127 -127
  290. package/dist/config/plugin/policy.js +116 -116
  291. package/dist/config/plugin/provider.js +115 -115
  292. package/dist/config/plugin/reference.js +119 -119
  293. package/dist/config/plugin/shell.js +118 -118
  294. package/dist/config/plugin/skill-file.js +103 -103
  295. package/dist/config/plugin/skill.js +135 -135
  296. package/dist/config/plugin/snapshot.js +117 -117
  297. package/dist/config/plugin/source.js +114 -114
  298. package/dist/config/plugin/tool-output.js +119 -119
  299. package/dist/config/plugin/websearch.js +115 -115
  300. package/dist/config/variable.js +4 -4
  301. package/dist/config.js +113 -113
  302. package/dist/credential/sql.js +3 -3
  303. package/dist/credential.js +71 -71
  304. package/dist/database/database.js +65 -65
  305. package/dist/database/drizzle/effect-sqlite/driver.js +13 -13
  306. package/dist/database/drizzle/effect-sqlite/index.js +13 -13
  307. package/dist/database/drizzle/effect-sqlite/session.js +12 -12
  308. package/dist/database/drizzle/index.js +14 -14
  309. package/dist/database/drizzle/internal/drizzle-utils.js +2 -2
  310. package/dist/database/drizzle/sqlite-core/effect/count.js +2 -2
  311. package/dist/database/drizzle/sqlite-core/effect/db.js +10 -10
  312. package/dist/database/drizzle/sqlite-core/effect/delete.js +3 -3
  313. package/dist/database/drizzle/sqlite-core/effect/index.js +18 -18
  314. package/dist/database/drizzle/sqlite-core/effect/insert.js +3 -3
  315. package/dist/database/drizzle/sqlite-core/effect/query.js +2 -2
  316. package/dist/database/drizzle/sqlite-core/effect/raw.js +2 -2
  317. package/dist/database/drizzle/sqlite-core/effect/select.js +3 -3
  318. package/dist/database/drizzle/sqlite-core/effect/session.js +11 -11
  319. package/dist/database/drizzle/sqlite-core/effect/update.js +3 -3
  320. package/dist/database/drizzle.js +15 -15
  321. package/dist/database/migration/20260127222353_familiar_lady_ursula.js +2 -2
  322. package/dist/database/migration/20260211171708_add_project_commands.js +2 -2
  323. package/dist/database/migration/20260213144116_wakeful_the_professor.js +2 -2
  324. package/dist/database/migration/20260225215848_workspace.js +2 -2
  325. package/dist/database/migration/20260227213759_add_session_workspace_id.js +2 -2
  326. package/dist/database/migration/20260228203230_blue_harpoon.js +2 -2
  327. package/dist/database/migration/20260303231226_add_workspace_fields.js +2 -2
  328. package/dist/database/migration/20260309230000_move_org_to_state.js +2 -2
  329. package/dist/database/migration/20260312043431_session_message_cursor.js +2 -2
  330. package/dist/database/migration/20260323234822_events.js +2 -2
  331. package/dist/database/migration/20260410174513_workspace-name.js +2 -2
  332. package/dist/database/migration/20260413175956_chief_energizer.js +2 -2
  333. package/dist/database/migration/20260423070820_add_icon_url_override.js +2 -2
  334. package/dist/database/migration/20260427172553_slow_nightmare.js +2 -2
  335. package/dist/database/migration/20260428004200_add_session_path.js +2 -2
  336. package/dist/database/migration/20260501142318_next_venus.js +2 -2
  337. package/dist/database/migration/20260504145000_add_sync_owner.js +2 -2
  338. package/dist/database/migration/20260507164347_add_workspace_time.js +2 -2
  339. package/dist/database/migration/20260510033149_session_usage.js +2 -2
  340. package/dist/database/migration/20260511000411_data_migration_state.js +2 -2
  341. package/dist/database/migration/20260511173437_session-metadata.js +2 -2
  342. package/dist/database/migration/20260601010001_normalize_storage_paths.js +2 -2
  343. package/dist/database/migration/20260601202201_amazing_prowler.js +2 -2
  344. package/dist/database/migration/20260602002951_lowly_union_jack.js +2 -2
  345. package/dist/database/migration/20260602182828_add_project_directories.js +2 -2
  346. package/dist/database/migration/20260603001617_session_message_projection_indexes.js +2 -2
  347. package/dist/database/migration/20260603040000_session_message_projection_order.js +2 -2
  348. package/dist/database/migration/20260603141458_session_input_inbox.js +2 -2
  349. package/dist/database/migration/20260603160727_jittery_ezekiel_stane.js +2 -2
  350. package/dist/database/migration/20260604172448_event_sourced_session_input.js +2 -2
  351. package/dist/database/migration/20260605003541_add_session_context_snapshot.js +2 -2
  352. package/dist/database/migration/20260605042240_add_context_epoch_agent.js +2 -2
  353. package/dist/database/migration/20260611035744_credential.js +2 -2
  354. package/dist/database/migration/20260611192811_lush_chimera.js +2 -2
  355. package/dist/database/migration/20260612174303_project_dir_strategy.js +2 -2
  356. package/dist/database/migration/20260622142730_simplify_session_context_epoch.js +2 -2
  357. package/dist/database/migration/20260622170816_reset_v2_session_state.js +2 -2
  358. package/dist/database/migration/20260622202450_simplify_session_input.js +2 -2
  359. package/dist/database/migration/20260804233008_loose_psylocke.js +2 -2
  360. package/dist/database/migration/20260805200742_import_legacy_credentials.js +2 -2
  361. package/dist/database/migration/20260808023530_workspace_domain.js +2 -2
  362. package/dist/database/migration/20260811161259_execution_claim_attempts.js +2 -2
  363. package/dist/database/migration/20260812181746_session_inbox.js +2 -2
  364. package/dist/database/migration/20260812213948_worktree.js +2 -2
  365. package/dist/database/migration/20260819222447_session_viewed_state.js +2 -2
  366. package/dist/database/migration/20260823191254_nullable_workspace_binding.js +2 -2
  367. package/dist/database/migration.gen.js +48 -48
  368. package/dist/database/migration.js +50 -50
  369. package/dist/database/path.js +3 -3
  370. package/dist/database/schema.gen.js +2 -2
  371. package/dist/database/schema.sql.js +2 -2
  372. package/dist/database/sqlite.bun.js +2 -2
  373. package/dist/database/sqlite.js +2 -2
  374. package/dist/database/sqlite.node.js +2 -2
  375. package/dist/database/sqlite.workerd.js +2 -2
  376. package/dist/database/v1-migration.bun.js +77 -77
  377. package/dist/database/v1-migration.js +2 -2
  378. package/dist/database/v1-migration.noop.js +1 -1
  379. package/dist/effect/app-node-builder.js +339 -335
  380. package/dist/effect/app-node-platform.js +3 -3
  381. package/dist/effect/keyed-mutex.js +2 -2
  382. package/dist/effect/websocket-constructor.js +2 -2
  383. package/dist/environment/driver.js +1 -1
  384. package/dist/environment/environment.js +91 -91
  385. package/dist/environment/exec-defaults.js +3 -3
  386. package/dist/environment/files.js +2 -2
  387. package/dist/environment/index.js +93 -93
  388. package/dist/environment/local.js +3 -3
  389. package/dist/environment/memory.js +3 -3
  390. package/dist/environment/unavailable.js +1 -1
  391. package/dist/event/sql.js +2 -2
  392. package/dist/event-logger.js +68 -68
  393. package/dist/file-mutation.js +92 -92
  394. package/dist/file-retention.js +2 -2
  395. package/dist/file.js +2 -2
  396. package/dist/filesystem/fff.bun.js +2 -2
  397. package/dist/filesystem/fff.js +2 -2
  398. package/dist/filesystem/fff.node.js +2 -2
  399. package/dist/filesystem/fff.workerd.js +2 -2
  400. package/dist/filesystem/ignore.js +1 -1
  401. package/dist/filesystem/location-watcher-policy.js +3 -3
  402. package/dist/filesystem/location-watcher.js +313 -311
  403. package/dist/filesystem/protected.js +2 -2
  404. package/dist/filesystem/search.js +96 -96
  405. package/dist/filesystem/watcher-binding.js +2 -2
  406. package/dist/filesystem/watcher.js +4 -4
  407. package/dist/filesystem.js +97 -97
  408. package/dist/form.js +69 -69
  409. package/dist/formatter/builtins.js +3 -3
  410. package/dist/formatter.js +85 -85
  411. package/dist/generate.js +84 -84
  412. package/dist/git.js +5 -5
  413. package/dist/github-copilot/chat/convert-to-openai-compatible-chat-messages.js +2 -2
  414. package/dist/github-copilot/chat/get-response-metadata.js +2 -2
  415. package/dist/github-copilot/chat/map-openai-compatible-finish-reason.js +2 -2
  416. package/dist/github-copilot/chat/openai-compatible-chat-language-model.js +8 -8
  417. package/dist/github-copilot/chat/openai-compatible-chat-options.js +2 -2
  418. package/dist/github-copilot/chat/openai-compatible-prepare-tools.js +2 -2
  419. package/dist/github-copilot/copilot-provider.js +20 -20
  420. package/dist/github-copilot/models.js +4 -4
  421. package/dist/github-copilot/openai-compatible-error.js +2 -2
  422. package/dist/github-copilot/responses/convert-to-openai-responses-input.js +2 -2
  423. package/dist/github-copilot/responses/map-openai-responses-finish-reason.js +2 -2
  424. package/dist/github-copilot/responses/openai-error.js +2 -2
  425. package/dist/github-copilot/responses/openai-responses-language-model.js +11 -11
  426. package/dist/github-copilot/responses/openai-responses-prepare-tools.js +7 -7
  427. package/dist/github-copilot/responses/tool/code-interpreter.js +2 -2
  428. package/dist/github-copilot/responses/tool/file-search.js +2 -2
  429. package/dist/github-copilot/responses/tool/image-generation.js +2 -2
  430. package/dist/github-copilot/responses/tool/web-search-preview.js +2 -2
  431. package/dist/github-copilot/responses/tool/web-search.js +2 -2
  432. package/dist/id/id.js +2 -2
  433. package/dist/image/photon-wasm.bun.js +1 -1
  434. package/dist/image/photon-wasm.node.js +1 -1
  435. package/dist/image/photon-wasm.workerd.js +1 -1
  436. package/dist/image/photon.js +107 -102
  437. package/dist/image.js +99 -99
  438. package/dist/instance.js +338 -334
  439. package/dist/instruction-discovery.js +72 -72
  440. package/dist/instructions/builtins.js +85 -85
  441. package/dist/instructions/index.js +2 -2
  442. package/dist/integration/connection.js +2 -2
  443. package/dist/integration.js +75 -75
  444. package/dist/job.js +72 -72
  445. package/dist/kv/sql.js +3 -3
  446. package/dist/kv.js +68 -68
  447. package/dist/location-activity.js +85 -85
  448. package/dist/location-mutation.js +84 -84
  449. package/dist/location-service-map.js +84 -84
  450. package/dist/location-services.js +339 -335
  451. package/dist/location.js +83 -83
  452. package/dist/mcp/client.js +92 -92
  453. package/dist/mcp/index.js +98 -98
  454. package/dist/mcp/instructions.js +127 -127
  455. package/dist/mcp/oauth.js +2 -2
  456. package/dist/mcp/stdio.js +92 -92
  457. package/dist/mime.js +2 -2
  458. package/dist/model-resolver.js +81 -81
  459. package/dist/model.js +3 -3
  460. package/dist/models-dev.js +75 -75
  461. package/dist/oauth/page.js +2 -2
  462. package/dist/permission/saved.js +71 -71
  463. package/dist/permission/sql.js +6 -6
  464. package/dist/permission.js +100 -100
  465. package/dist/persistent-pty/binary.bun.js +2 -2
  466. package/dist/persistent-pty/binary.node.js +1 -1
  467. package/dist/persistent-pty/binary.workerd.js +1 -1
  468. package/dist/persistent-pty/daemon.js +2 -2
  469. package/dist/persistent-pty/index.js +73 -73
  470. package/dist/persistent-pty/pty-binding.js +2 -2
  471. package/dist/persistent-pty.js +74 -74
  472. package/dist/plugin/agent.js +101 -101
  473. package/dist/plugin/command.js +99 -99
  474. package/dist/plugin/hooks.js +3 -3
  475. package/dist/plugin/host.js +202 -200
  476. package/dist/plugin/instance.js +2 -2
  477. package/dist/plugin/internal.js +307 -305
  478. package/dist/plugin/mcp-codemode-exclusion.js +2 -2
  479. package/dist/plugin/models-dev.js +76 -76
  480. package/dist/plugin/module.js +3 -3
  481. package/dist/plugin/plan.js +101 -101
  482. package/dist/plugin/promise.js +2 -2
  483. package/dist/plugin/provider/alibaba.js +3 -3
  484. package/dist/plugin/provider/amazon-bedrock.js +3 -3
  485. package/dist/plugin/provider/anthropic.js +3 -3
  486. package/dist/plugin/provider/azure.js +123 -123
  487. package/dist/plugin/provider/cerebras.js +3 -3
  488. package/dist/plugin/provider/cloudflare-ai-gateway.js +122 -122
  489. package/dist/plugin/provider/cloudflare-workers-ai.js +122 -122
  490. package/dist/plugin/provider/cohere.js +3 -3
  491. package/dist/plugin/provider/configured.js +119 -119
  492. package/dist/plugin/provider/dynamic.js +3 -3
  493. package/dist/plugin/provider/factory.js +2 -2
  494. package/dist/plugin/provider/gateway.js +3 -3
  495. package/dist/plugin/provider/github-copilot.js +82 -82
  496. package/dist/plugin/provider/gitlab.js +4 -4
  497. package/dist/plugin/provider/google-vertex.js +3 -3
  498. package/dist/plugin/provider/kilo.js +3 -3
  499. package/dist/plugin/provider/llmgateway.js +77 -77
  500. package/dist/plugin/provider/lmstudio.js +120 -120
  501. package/dist/plugin/provider/mistral.js +3 -3
  502. package/dist/plugin/provider/nvidia.js +3 -3
  503. package/dist/plugin/provider/ollama.js +120 -120
  504. package/dist/plugin/provider/openai-compatible.js +2 -2
  505. package/dist/plugin/provider/openai.js +79 -79
  506. package/dist/plugin/provider/opencode.js +93 -93
  507. package/dist/plugin/provider/openrouter.js +4 -4
  508. package/dist/plugin/provider/perplexity.js +3 -3
  509. package/dist/plugin/provider/sap-ai-core.js +4 -4
  510. package/dist/plugin/provider/sdk-factory.js +2 -2
  511. package/dist/plugin/provider/snowflake-cortex.js +3 -3
  512. package/dist/plugin/provider/venice.js +3 -3
  513. package/dist/plugin/provider/vercel.js +3 -3
  514. package/dist/plugin/provider/vllm.js +120 -120
  515. package/dist/plugin/provider/xai.js +78 -78
  516. package/dist/plugin/provider/zenmux.js +3 -3
  517. package/dist/plugin/provider.js +159 -159
  518. package/dist/plugin/runtime.js +190 -188
  519. package/dist/plugin/sdk.js +69 -69
  520. package/dist/plugin/skill.js +133 -133
  521. package/dist/plugin/source-directory.js +2 -2
  522. package/dist/plugin/supervisor-service.js +2 -2
  523. package/dist/plugin/supervisor.js +312 -310
  524. package/dist/plugin/system-prompt.js +2 -2
  525. package/dist/plugin/variant.js +3 -3
  526. package/dist/plugin/vcs/git.js +87 -87
  527. package/dist/plugin/vcs/hg.js +87 -87
  528. package/dist/plugin/warming.js +114 -114
  529. package/dist/plugin/websearch/exa.js +4 -4
  530. package/dist/plugin/websearch/firecrawl.js +5 -5
  531. package/dist/plugin/websearch/index.js +9 -9
  532. package/dist/plugin/websearch/mcp.js +3 -3
  533. package/dist/plugin/websearch/parallel.js +5 -5
  534. package/dist/plugin/websearch/tavily.js +3 -3
  535. package/dist/plugin.js +203 -201
  536. package/dist/project/markers.js +74 -74
  537. package/dist/project/schema.js +3 -3
  538. package/dist/project/sql.js +5 -5
  539. package/dist/project.js +82 -82
  540. package/dist/provider.js +2 -2
  541. package/dist/pty/protocol.js +1 -1
  542. package/dist/pty/pty.bun.js +1 -1
  543. package/dist/pty/pty.node.js +1 -1
  544. package/dist/pty/pty.workerd.js +1 -1
  545. package/dist/pty/schema.js +2 -2
  546. package/dist/pty/ticket.js +2 -2
  547. package/dist/pty.js +89 -89
  548. package/dist/reference/instructions.js +77 -77
  549. package/dist/reference.js +75 -75
  550. package/dist/repository-cache.js +7 -7
  551. package/dist/repository.js +2 -2
  552. package/dist/ripgrep/binary.js +3 -3
  553. package/dist/ripgrep.js +94 -94
  554. package/dist/schema.js +2 -2
  555. package/dist/session/compaction.js +118 -118
  556. package/dist/session/context.js +322 -320
  557. package/dist/session/environment.js +3 -3
  558. package/dist/session/error.js +26 -4
  559. package/dist/session/event.js +2 -2
  560. package/dist/session/execution/restart.js +189 -187
  561. package/dist/session/execution.js +122 -122
  562. package/dist/session/generate-node.js +323 -321
  563. package/dist/session/generate.js +2 -2
  564. package/dist/session/history.js +77 -77
  565. package/dist/session/inbox.js +86 -90
  566. package/dist/session/info.js +4 -4
  567. package/dist/session/instruction-entry.js +73 -73
  568. package/dist/session/instruction-state.js +10 -10
  569. package/dist/session/instructions.js +94 -94
  570. package/dist/session/message-updater.js +4 -4
  571. package/dist/session/message.js +2 -2
  572. package/dist/session/model-request.js +139 -139
  573. package/dist/session/model-transport.js +5 -5
  574. package/dist/session/projector.js +83 -83
  575. package/dist/session/prompt-node.js +320 -0
  576. package/dist/session/prompt.js +130 -0
  577. package/dist/session/revert-node.js +320 -0
  578. package/dist/session/revert.js +100 -95
  579. package/dist/session/run-coordinator.js +2 -2
  580. package/dist/session/runner/index.js +84 -84
  581. package/dist/session/runner/llm.js +328 -326
  582. package/dist/session/runner/max-steps.js +2 -2
  583. package/dist/session/runner/model.js +83 -83
  584. package/dist/session/runner/publish-llm-event.js +4 -4
  585. package/dist/session/runner/retry.js +72 -72
  586. package/dist/session/runner/step.js +148 -148
  587. package/dist/session/runner/to-llm-message.js +2 -2
  588. package/dist/session/schema.js +2 -2
  589. package/dist/session/session.js +181 -0
  590. package/dist/session/sql.js +6 -6
  591. package/dist/session/stats.js +71 -71
  592. package/dist/session/store.js +79 -79
  593. package/dist/session/subagent-completion.js +2 -2
  594. package/dist/session/system-prompt.js +2 -2
  595. package/dist/session/title.js +323 -321
  596. package/dist/session/to-session-error.js +113 -113
  597. package/dist/session/transfer.js +188 -186
  598. package/dist/session/usage.js +2 -2
  599. package/dist/session.js +196 -194
  600. package/dist/shell/parse.js +7 -7
  601. package/dist/shell/parser-wasm.bun.js +1 -1
  602. package/dist/shell/parser-wasm.node.js +1 -1
  603. package/dist/shell/parser-wasm.workerd.js +1 -1
  604. package/dist/shell/result.js +2 -2
  605. package/dist/shell/scan.js +1 -1
  606. package/dist/shell/select.js +4 -4
  607. package/dist/shell.js +132 -132
  608. package/dist/skill/discovery.js +3 -3
  609. package/dist/skill/instructions.js +102 -102
  610. package/dist/skill.js +101 -101
  611. package/dist/snapshot.js +85 -85
  612. package/dist/state.js +2 -2
  613. package/dist/tool/html-markdown.js +2 -2
  614. package/dist/tool/http-body.js +2 -2
  615. package/dist/tool/mcp.js +126 -126
  616. package/dist/tool/plugin/edit.js +113 -113
  617. package/dist/tool/plugin/file-diff.js +2 -2
  618. package/dist/tool/plugin/glob.js +116 -116
  619. package/dist/tool/plugin/grep.js +116 -116
  620. package/dist/tool/plugin/patch.js +113 -113
  621. package/dist/tool/plugin/question.js +102 -102
  622. package/dist/tool/plugin/read.js +119 -119
  623. package/dist/tool/plugin/shell.js +193 -191
  624. package/dist/tool/plugin/skill.js +102 -102
  625. package/dist/tool/plugin/subagent.js +192 -190
  626. package/dist/tool/plugin/webfetch.js +103 -103
  627. package/dist/tool/plugin/websearch.js +105 -105
  628. package/dist/tool/plugin/write.js +113 -113
  629. package/dist/tool/read-filesystem.js +99 -99
  630. package/dist/tool/runtime.js +2 -2
  631. package/dist/tool-output.js +5 -5
  632. package/dist/tool.js +119 -119
  633. package/dist/types/instance.d.ts +2 -2
  634. package/dist/types/location-service-map.d.ts +2 -2
  635. package/dist/types/plugin/host.d.ts +4 -18
  636. package/dist/types/project.d.ts +1 -0
  637. package/dist/types/session/error.d.ts +115 -0
  638. package/dist/types/session/execution.d.ts +2 -0
  639. package/dist/types/session/inbox.d.ts +557 -176
  640. package/dist/types/session/prompt-node.d.ts +3 -0
  641. package/dist/types/session/prompt.d.ts +126 -0
  642. package/dist/types/session/revert-node.d.ts +3 -0
  643. package/dist/types/session/revert.d.ts +24 -29
  644. package/dist/types/session/run-coordinator.d.ts +2 -0
  645. package/dist/types/session/session.d.ts +232 -0
  646. package/dist/types/session.d.ts +14 -141
  647. package/dist/util/array.js +1 -1
  648. package/dist/util/error.js +2 -2
  649. package/dist/util/identifier.js +1 -1
  650. package/dist/util/iife.js +2 -2
  651. package/dist/util/lazy.js +2 -2
  652. package/dist/util/process-lock-ffi.bun.js +1 -1
  653. package/dist/util/process-lock-ffi.node.js +1 -1
  654. package/dist/util/process-lock-ffi.workerd.js +1 -1
  655. package/dist/util/process-lock.js +1 -1
  656. package/dist/util/slug.js +2 -2
  657. package/dist/util/token.js +2 -2
  658. package/dist/util/which.js +2 -2
  659. package/dist/util/wildcard.js +2 -2
  660. package/dist/v1/config/agent.js +4 -4
  661. package/dist/v1/config/attachment.js +3 -3
  662. package/dist/v1/config/command.js +2 -2
  663. package/dist/v1/config/config.js +15 -15
  664. package/dist/v1/config/error.js +3 -3
  665. package/dist/v1/config/formatter.js +2 -2
  666. package/dist/v1/config/layout.js +2 -2
  667. package/dist/v1/config/lsp.js +2 -2
  668. package/dist/v1/config/mcp.js +3 -3
  669. package/dist/v1/config/migrate.js +19 -19
  670. package/dist/v1/config/permission.js +2 -2
  671. package/dist/v1/config/plugin.js +2 -2
  672. package/dist/v1/config/provider-options.js +2 -2
  673. package/dist/v1/config/provider.js +3 -3
  674. package/dist/v1/config/server.js +3 -3
  675. package/dist/v1/config/skills.js +2 -2
  676. package/dist/v1/permission.js +1 -1
  677. package/dist/vcs/patch.js +2 -2
  678. package/dist/vcs.js +86 -86
  679. package/dist/websearch.js +73 -73
  680. package/dist/wellknown/plugin.js +73 -73
  681. package/dist/wellknown.js +72 -72
  682. package/dist/workspace/driver.js +2 -2
  683. package/dist/workspace/sql.js +2 -2
  684. package/dist/workspace.js +69 -69
  685. package/dist/worktree/directory.js +3 -3
  686. package/dist/worktree/git.js +7 -7
  687. package/dist/worktree/sql.js +6 -6
  688. package/dist/worktree.js +87 -87
  689. package/package.json +7 -7
  690. package/dist/chunks/job-fb7nfzf2.js +0 -71
  691. package/dist/chunks/job-k3b93ktv.js +0 -909
  692. package/dist/chunks/job-x7z7742t.js +0 -115
  693. /package/dist/chunks/{job-0cgt0xh2.js → session-0cgt0xh2.js} +0 -0
  694. /package/dist/chunks/{job-0f48qthw.js → session-0f48qthw.js} +0 -0
  695. /package/dist/chunks/{job-0zz82cjq.js → session-0zz82cjq.js} +0 -0
  696. /package/dist/chunks/{job-1fb7bmpf.js → session-1fb7bmpf.js} +0 -0
  697. /package/dist/chunks/{job-1wcz8fvj.js → session-1wcz8fvj.js} +0 -0
  698. /package/dist/chunks/{job-29n7vfk2.js → session-29n7vfk2.js} +0 -0
  699. /package/dist/chunks/{job-2qdx6zz3.js → session-2qdx6zz3.js} +0 -0
  700. /package/dist/chunks/{job-2xb0r1c6.js → session-2xb0r1c6.js} +0 -0
  701. /package/dist/chunks/{job-39ktntah.js → session-39ktntah.js} +0 -0
  702. /package/dist/chunks/{job-3g3rpp2x.js → session-3g3rpp2x.js} +0 -0
  703. /package/dist/chunks/{job-3w3ybtfd.js → session-3w3ybtfd.js} +0 -0
  704. /package/dist/chunks/{job-47ty4mvs.js → session-47ty4mvs.js} +0 -0
  705. /package/dist/chunks/{job-4b2tz2m9.js → session-4b2tz2m9.js} +0 -0
  706. /package/dist/chunks/{job-5a5ch9ts.js → session-5a5ch9ts.js} +0 -0
  707. /package/dist/chunks/{job-5va1yh78.js → session-5va1yh78.js} +0 -0
  708. /package/dist/chunks/{job-61ek4hj9.js → session-61ek4hj9.js} +0 -0
  709. /package/dist/chunks/{job-69qrqpw0.js → session-69qrqpw0.js} +0 -0
  710. /package/dist/chunks/{job-6zqxzw0a.js → session-6zqxzw0a.js} +0 -0
  711. /package/dist/chunks/{job-7n9qwqk4.js → session-7n9qwqk4.js} +0 -0
  712. /package/dist/chunks/{job-8nn8kqcn.js → session-8nn8kqcn.js} +0 -0
  713. /package/dist/chunks/{job-8rpfd2h6.js → session-8rpfd2h6.js} +0 -0
  714. /package/dist/chunks/{job-8sj3ajy5.js → session-8sj3ajy5.js} +0 -0
  715. /package/dist/chunks/{job-8w9tzfz1.js → session-8w9tzfz1.js} +0 -0
  716. /package/dist/chunks/{job-906y0b6d.js → session-906y0b6d.js} +0 -0
  717. /package/dist/chunks/{job-9dct5xhx.js → session-9dct5xhx.js} +0 -0
  718. /package/dist/chunks/{job-9maxscqf.js → session-9maxscqf.js} +0 -0
  719. /package/dist/chunks/{job-9sdtsapf.js → session-9sdtsapf.js} +0 -0
  720. /package/dist/chunks/{job-a02svayp.js → session-a02svayp.js} +0 -0
  721. /package/dist/chunks/{job-a83yvq99.js → session-a83yvq99.js} +0 -0
  722. /package/dist/chunks/{job-ayevdmef.js → session-ayevdmef.js} +0 -0
  723. /package/dist/chunks/{job-b02txbh8.js → session-b02txbh8.js} +0 -0
  724. /package/dist/chunks/{job-bbqs2y60.js → session-bbqs2y60.js} +0 -0
  725. /package/dist/chunks/{job-bjwj8hwv.js → session-bjwj8hwv.js} +0 -0
  726. /package/dist/chunks/{job-brsh5f65.js → session-brsh5f65.js} +0 -0
  727. /package/dist/chunks/{job-bxdhjb3y.js → session-bxdhjb3y.js} +0 -0
  728. /package/dist/chunks/{job-c77ad0vh.js → session-c77ad0vh.js} +0 -0
  729. /package/dist/chunks/{job-cm67rqy2.js → session-cm67rqy2.js} +0 -0
  730. /package/dist/chunks/{job-df3v2q6j.js → session-df3v2q6j.js} +0 -0
  731. /package/dist/chunks/{job-dhcq6c44.js → session-dhcq6c44.js} +0 -0
  732. /package/dist/chunks/{job-dht5baf0.js → session-dht5baf0.js} +0 -0
  733. /package/dist/chunks/{job-dkmkay92.js → session-dkmkay92.js} +0 -0
  734. /package/dist/chunks/{job-ehj9csmv.js → session-ehj9csmv.js} +0 -0
  735. /package/dist/chunks/{job-em6xpscd.js → session-em6xpscd.js} +0 -0
  736. /package/dist/chunks/{job-emmqknsm.js → session-emmqknsm.js} +0 -0
  737. /package/dist/chunks/{job-ezs3tagn.js → session-ezs3tagn.js} +0 -0
  738. /package/dist/chunks/{job-f14r7hfz.js → session-f14r7hfz.js} +0 -0
  739. /package/dist/chunks/{job-f1jj19e8.js → session-f1jj19e8.js} +0 -0
  740. /package/dist/chunks/{job-f4cp4g4a.js → session-f4cp4g4a.js} +0 -0
  741. /package/dist/chunks/{job-faypg4r1.js → session-faypg4r1.js} +0 -0
  742. /package/dist/chunks/{job-fg7fz4q3.js → session-fg7fz4q3.js} +0 -0
  743. /package/dist/chunks/{job-fgbfdq62.js → session-fgbfdq62.js} +0 -0
  744. /package/dist/chunks/{job-g23fad86.js → session-g23fad86.js} +0 -0
  745. /package/dist/chunks/{job-gd5xeqc2.js → session-gd5xeqc2.js} +0 -0
  746. /package/dist/chunks/{job-ghm4673n.js → session-ghm4673n.js} +0 -0
  747. /package/dist/chunks/{job-ghwjy7my.js → session-ghwjy7my.js} +0 -0
  748. /package/dist/chunks/{job-gy500k2r.js → session-gy500k2r.js} +0 -0
  749. /package/dist/chunks/{job-hzeg9cfr.js → session-hzeg9cfr.js} +0 -0
  750. /package/dist/chunks/{job-j07kk359.js → session-j07kk359.js} +0 -0
  751. /package/dist/chunks/{job-j32vdj8r.js → session-j32vdj8r.js} +0 -0
  752. /package/dist/chunks/{job-jqms80b0.js → session-jqms80b0.js} +0 -0
  753. /package/dist/chunks/{job-jve7t217.js → session-jve7t217.js} +0 -0
  754. /package/dist/chunks/{job-k3e42drn.js → session-k3e42drn.js} +0 -0
  755. /package/dist/chunks/{job-k8b45nas.js → session-k8b45nas.js} +0 -0
  756. /package/dist/chunks/{job-kpdbz7gn.js → session-kpdbz7gn.js} +0 -0
  757. /package/dist/chunks/{job-kxy11nzk.js → session-kxy11nzk.js} +0 -0
  758. /package/dist/chunks/{job-kyyqvx4s.js → session-kyyqvx4s.js} +0 -0
  759. /package/dist/chunks/{job-m8cbvarh.js → session-m8cbvarh.js} +0 -0
  760. /package/dist/chunks/{job-ma60vzgv.js → session-ma60vzgv.js} +0 -0
  761. /package/dist/chunks/{job-n3m50c2t.js → session-n3m50c2t.js} +0 -0
  762. /package/dist/chunks/{job-n6ag8q95.js → session-n6ag8q95.js} +0 -0
  763. /package/dist/chunks/{job-nkm1m8dz.js → session-nkm1m8dz.js} +0 -0
  764. /package/dist/chunks/{job-nsc0c3zb.js → session-nsc0c3zb.js} +0 -0
  765. /package/dist/chunks/{job-qaarhjrp.js → session-qaarhjrp.js} +0 -0
  766. /package/dist/chunks/{job-qc167nrn.js → session-qc167nrn.js} +0 -0
  767. /package/dist/chunks/{job-qp95y4jb.js → session-qp95y4jb.js} +0 -0
  768. /package/dist/chunks/{job-r8f4w671.js → session-r8f4w671.js} +0 -0
  769. /package/dist/chunks/{job-rdfev9jy.js → session-rdfev9jy.js} +0 -0
  770. /package/dist/chunks/{job-rvfvac9x.js → session-rvfvac9x.js} +0 -0
  771. /package/dist/chunks/{job-s7whb9gt.js → session-s7whb9gt.js} +0 -0
  772. /package/dist/chunks/{job-se76j685.js → session-se76j685.js} +0 -0
  773. /package/dist/chunks/{job-sem2g21k.js → session-sem2g21k.js} +0 -0
  774. /package/dist/chunks/{job-sp575ygv.js → session-sp575ygv.js} +0 -0
  775. /package/dist/chunks/{job-tmb1f636.js → session-tmb1f636.js} +0 -0
  776. /package/dist/chunks/{job-ttxf0gsy.js → session-ttxf0gsy.js} +0 -0
  777. /package/dist/chunks/{job-tvmhrvfj.js → session-tvmhrvfj.js} +0 -0
  778. /package/dist/chunks/{job-v2adqbbe.js → session-v2adqbbe.js} +0 -0
  779. /package/dist/chunks/{job-vac9eqd2.js → session-vac9eqd2.js} +0 -0
  780. /package/dist/chunks/{job-wj4sxzqa.js → session-wj4sxzqa.js} +0 -0
  781. /package/dist/chunks/{job-wwntjmk1.js → session-wwntjmk1.js} +0 -0
  782. /package/dist/chunks/{job-wyqjaaa5.js → session-wyqjaaa5.js} +0 -0
  783. /package/dist/chunks/{job-x4q807cx.js → session-x4q807cx.js} +0 -0
  784. /package/dist/chunks/{job-yrqrg4vp.js → session-yrqrg4vp.js} +0 -0
  785. /package/dist/chunks/{job-z47nswr2.js → session-z47nswr2.js} +0 -0
  786. /package/dist/chunks/{job-zsf8rs93.js → session-zsf8rs93.js} +0 -0
@@ -1,909 +0,0 @@
1
- import {
2
- exports_supervisor_service
3
- } from "./job-s33fw6zm.js";
4
- import {
5
- exports_revert
6
- } from "./job-x7z7742t.js";
7
- import {
8
- exports_execution
9
- } from "./job-xes8c7na.js";
10
- import {
11
- exports_generate
12
- } from "./job-xgv25zxy.js";
13
- import {
14
- exports_projector
15
- } from "./job-dv3yagct.js";
16
- import {
17
- exports_instruction_entry
18
- } from "./job-0j6yxnr1.js";
19
- import {
20
- exports_inbox
21
- } from "./job-ecft2zb7.js";
22
- import {
23
- exports_model_transport
24
- } from "./job-tjrfm0xh.js";
25
- import {
26
- exports_shell
27
- } from "./job-c48kc6fa.js";
28
- import {
29
- exports_result
30
- } from "./job-etvrgfqj.js";
31
- import {
32
- exports_environment
33
- } from "./job-6ky7rqk7.js";
34
- import {
35
- Slug
36
- } from "./job-df3v2q6j.js";
37
- import {
38
- exports_skill
39
- } from "./job-sqzywsbq.js";
40
- import {
41
- exports_command
42
- } from "./job-d64twz5j.js";
43
- import {
44
- exports_app
45
- } from "./job-50jxp3hw.js";
46
- import {
47
- exports_location_service_map
48
- } from "./job-zdkg1k91.js";
49
- import {
50
- exports_store
51
- } from "./job-wvmyfgqa.js";
52
- import {
53
- exports_history
54
- } from "./job-ngrdkqab.js";
55
- import {
56
- fromRow
57
- } from "./job-264e1nfp.js";
58
- import {
59
- exports_instruction_state
60
- } from "./job-hxcd35r2.js";
61
- import {
62
- ForkEmptyError,
63
- MessageDecodeError,
64
- NotFoundError
65
- } from "./job-fb7nfzf2.js";
66
- import {
67
- SessionMessageTable,
68
- SessionTable
69
- } from "./job-q606pcse.js";
70
- import {
71
- exports_hooks
72
- } from "./job-v2wshkax.js";
73
- import {
74
- exports_image
75
- } from "./job-ryg4g4zw.js";
76
- import {
77
- SessionEvent
78
- } from "./job-a83yvq99.js";
79
- import {
80
- exports_job
81
- } from "./job-2hnk029s.js";
82
- import {
83
- SessionMessage
84
- } from "./job-8rpfd2h6.js";
85
- import {
86
- ID,
87
- Info,
88
- SessionSchema
89
- } from "./job-bjwj8hwv.js";
90
- import {
91
- exports_mime
92
- } from "./job-dhphtf1x.js";
93
- import {
94
- exports_location
95
- } from "./job-knm8yv8d.js";
96
- import {
97
- exports_project
98
- } from "./job-9qkcnssy.js";
99
- import {
100
- upsertProject
101
- } from "./job-c8ya26sa.js";
102
- import {
103
- exports_bus
104
- } from "./job-j925pnyr.js";
105
- import {
106
- exports_database
107
- } from "./job-rp954h3j.js";
108
- import {
109
- AbsolutePath,
110
- PositiveInt,
111
- RelativePath
112
- } from "./job-j07kk359.js";
113
- import {
114
- __export
115
- } from "./job-rvfvac9x.js";
116
-
117
- // src/session.ts
118
- var exports_session = {};
119
- __export(exports_session, {
120
- node: () => node,
121
- SyntheticConflictError: () => SyntheticConflictError,
122
- SkillNotFoundError: () => SkillNotFoundError,
123
- SessionSchema: () => SessionSchema,
124
- Session: () => exports_session,
125
- Service: () => Service,
126
- PromptConflictError: () => PromptConflictError,
127
- NotFoundError: () => NotFoundError,
128
- MessageToolIncompleteError: () => MessageToolIncompleteError,
129
- MessageNotFoundError: () => MessageNotFoundError,
130
- MessageNotAssistantError: () => MessageNotAssistantError,
131
- MessageIncompleteError: () => MessageIncompleteError,
132
- MessageDecodeError: () => MessageDecodeError,
133
- ListInput: () => ListInput,
134
- ListAnchor: () => ListAnchor,
135
- Info: () => Info,
136
- InboxConflictError: () => InboxConflictError,
137
- ID: () => ID,
138
- DestinationUnavailableError: () => DestinationUnavailableError,
139
- DestinationNotFoundError: () => DestinationNotFoundError,
140
- DestinationNotDirectoryError: () => DestinationNotDirectoryError,
141
- CompactionConflictError: () => CompactionConflictError,
142
- BusyError: () => BusyError,
143
- AttachmentError: () => AttachmentError
144
- });
145
- import { Cause, Effect, Fiber, Layer, Schema, Context, RcMap, Stream, Scope } from "effect";
146
- import { ListAnchor } from "@opencode-ai/schema/session";
147
- import { and, asc, desc, eq, gt, isNull, like, lt, or } from "drizzle-orm";
148
- import { Workspace } from "@opencode-ai/schema/workspace";
149
- import { Model } from "@opencode-ai/schema/model";
150
- import { Base64, FileAttachment, Prompt } from "@opencode-ai/schema/prompt";
151
- import path from "path";
152
- import { makeGlobalNode } from "@opencode-ai/util/effect/app-node";
153
- import { FSUtil } from "@opencode-ai/util/fs-util";
154
- import { Event } from "@opencode-ai/schema/event";
155
- import { Global } from "@opencode-ai/util/global";
156
- import { fileURLToPath } from "url";
157
- var ListInputBase = {
158
- workspaceID: Workspace.ID.pipe(Schema.optional),
159
- search: Schema.String.pipe(Schema.optional),
160
- limit: PositiveInt.pipe(Schema.optional),
161
- order: Schema.Literals(["asc", "desc"]).pipe(Schema.optional),
162
- parentID: Schema.NullOr(SessionSchema.ID).pipe(Schema.optional),
163
- anchor: ListAnchor.pipe(Schema.optional)
164
- };
165
- var ListDirectoryInput = Schema.Struct({
166
- ...ListInputBase,
167
- directory: AbsolutePath
168
- });
169
- var ListProjectInput = Schema.Struct({
170
- ...ListInputBase,
171
- project: exports_project.ID,
172
- subpath: RelativePath.pipe(Schema.optional)
173
- });
174
- var ListAllInput = Schema.Struct(ListInputBase);
175
- var ListInput = Schema.Union([ListDirectoryInput, ListProjectInput, ListAllInput]);
176
- class PromptConflictError extends Schema.TaggedError()("Session.PromptConflictError", {
177
- sessionID: SessionSchema.ID,
178
- messageID: SessionMessage.ID
179
- }) {
180
- }
181
-
182
- class SyntheticConflictError extends Schema.TaggedError()("Session.SyntheticConflictError", {
183
- sessionID: SessionSchema.ID,
184
- inputID: SessionMessage.ID
185
- }) {
186
- }
187
-
188
- class AttachmentError extends Schema.TaggedError()("Session.AttachmentError", {
189
- uri: Schema.String,
190
- message: Schema.String
191
- }) {
192
- }
193
-
194
- class CompactionConflictError extends Schema.TaggedError()("Session.CompactionConflictError", {
195
- sessionID: SessionSchema.ID,
196
- inputID: SessionMessage.ID
197
- }) {
198
- }
199
-
200
- class BusyError extends Schema.TaggedError()("Session.BusyError", {
201
- sessionID: SessionSchema.ID
202
- }) {
203
- }
204
-
205
- class MessageNotAssistantError extends Schema.TaggedError()("Session.MessageNotAssistantError", {
206
- sessionID: SessionSchema.ID,
207
- messageID: SessionMessage.ID
208
- }) {
209
- }
210
-
211
- class MessageIncompleteError extends Schema.TaggedError()("Session.MessageIncompleteError", {
212
- sessionID: SessionSchema.ID,
213
- messageID: SessionMessage.ID
214
- }) {
215
- }
216
-
217
- class MessageToolIncompleteError extends Schema.TaggedError()("Session.MessageToolIncompleteError", {
218
- sessionID: SessionSchema.ID,
219
- messageID: SessionMessage.ID
220
- }) {
221
- }
222
-
223
- class InboxConflictError extends Schema.TaggedError()("Session.InboxConflictError", {
224
- sessionID: SessionSchema.ID,
225
- inboxID: SessionMessage.ID
226
- }) {
227
- }
228
-
229
- class SkillNotFoundError extends Schema.TaggedError()("Session.SkillNotFoundError", {
230
- skill: exports_skill.ID
231
- }) {
232
- }
233
-
234
- class DestinationNotFoundError extends Schema.TaggedError()("Session.DestinationNotFoundError", { directory: AbsolutePath }) {
235
- }
236
-
237
- class DestinationNotDirectoryError extends Schema.TaggedError()("Session.DestinationNotDirectoryError", { directory: AbsolutePath }) {
238
- }
239
-
240
- class DestinationUnavailableError extends Schema.TaggedError()("Session.DestinationUnavailableError", { directory: AbsolutePath }) {
241
- }
242
- var MessageNotFoundError = exports_revert.MessageNotFoundError;
243
-
244
- class Service extends Context.Service()("@opencode/Session") {
245
- }
246
- var layer = Layer.effect(Service, Effect.gen(function* () {
247
- const app = yield* exports_app.Metadata;
248
- const database = yield* exports_database.Service;
249
- const db = database.db;
250
- const bus = yield* exports_bus.Service;
251
- const projects = yield* exports_project.Service;
252
- const global = yield* Global.Service;
253
- const execution = yield* exports_execution.Service;
254
- const store = yield* exports_store.Service;
255
- const locations = yield* exports_location_service_map.Service;
256
- const fs = yield* FSUtil.Service;
257
- const jobs = yield* exports_job.Service;
258
- const environments = yield* exports_environment.Service;
259
- const scope = yield* Scope.Scope;
260
- const closeTransport = Effect.fn("Session.closeTransport")(function* (session) {
261
- const location = exports_location.Ref.make({
262
- directory: session.location.directory,
263
- workspaceID: session.location.workspaceID
264
- });
265
- if (!(yield* RcMap.has(locations.rcMap, location)))
266
- return;
267
- yield* exports_model_transport.Service.use((transport) => transport.close(session.id)).pipe(Effect.provide(locations.get(location)));
268
- });
269
- const isDurableSessionEvent = Schema.is(SessionEvent.Durable);
270
- const persistProject = (project) => upsertProject(db, project).pipe(Effect.orDie);
271
- const pendingConflict = Effect.fn("Session.pendingConflict")(function* (input) {
272
- yield* result.get(input.sessionID);
273
- return yield* new InboxConflictError(input);
274
- });
275
- const mutatePending = (input, mutation, wake = false) => Effect.uninterruptible(Effect.gen(function* () {
276
- yield* mutation(bus, { sessionID: input.sessionID, id: input.inboxID }).pipe(Effect.catchDefect((defect) => defect instanceof exports_inbox.LifecycleConflict ? pendingConflict(input) : Effect.die(defect)));
277
- if (wake)
278
- yield* execution.wake(input.sessionID);
279
- }));
280
- const result = Service.of({
281
- create: Effect.fn("Session.create")(function* (input) {
282
- const sessionID = input.id ?? SessionSchema.ID.create();
283
- const recorded = yield* store.get(sessionID);
284
- if (recorded)
285
- return recorded;
286
- const parent = input.parentID ? yield* store.get(input.parentID) : undefined;
287
- if (input.parentID && parent === undefined)
288
- return yield* new NotFoundError({ sessionID: input.parentID });
289
- const location = parent?.location ?? input.location;
290
- if (location === undefined)
291
- return yield* Effect.die(new Error("Session.create requires either location or an existing parentID"));
292
- const project = yield* projects.resolve(location.directory);
293
- yield* persistProject(project);
294
- const projected = yield* bus.publish(SessionEvent.Created, {
295
- sessionID,
296
- slug: Slug.create(),
297
- version: app.version,
298
- projectID: project.id,
299
- parentID: input.parentID,
300
- location,
301
- subpath: RelativePath.make(path.relative(project.directory, location.directory).replaceAll("\\", "/")),
302
- title: input.title,
303
- agent: input.agent,
304
- metadata: input.metadata ?? parent?.metadata,
305
- model: input.model ? {
306
- id: Model.ID.make(input.model.id),
307
- providerID: input.model.providerID,
308
- variant: input.model.variant
309
- } : undefined
310
- }, { location }).pipe(Effect.as({ type: "created" }), Effect.catchDefect((defect) => {
311
- if (!(defect instanceof exports_projector.SessionAlreadyProjected)) {
312
- return Effect.die(defect);
313
- }
314
- return store.get(sessionID).pipe(Effect.flatMap((session) => session ? Effect.succeed({ type: "existing", session }) : Effect.die(defect)));
315
- }));
316
- if (projected.type === "existing")
317
- return projected.session;
318
- return yield* result.get(sessionID).pipe(Effect.orDie);
319
- }),
320
- fork: Effect.fn("Session.fork")(function* (input) {
321
- const parent = yield* result.get(input.sessionID);
322
- const boundary = yield* db.select({ id: SessionMessageTable.id }).from(SessionMessageTable).where(and(eq(SessionMessageTable.session_id, input.sessionID), input.boundary.type === "before" ? eq(SessionMessageTable.id, input.boundary.messageID) : undefined)).orderBy(desc(SessionMessageTable.seq)).limit(1).get().pipe(Effect.orDie);
323
- if (!boundary && input.boundary.type === "before")
324
- return yield* new MessageNotFoundError({
325
- sessionID: input.sessionID,
326
- messageID: input.boundary.messageID
327
- });
328
- if (!boundary)
329
- return yield* new ForkEmptyError({ sessionID: input.sessionID });
330
- const sessionID = SessionSchema.ID.create();
331
- const inherited = yield* db.transaction(() => Effect.all({
332
- instructions: exports_instruction_state.current(db, parent.id),
333
- instructionEntries: exports_instruction_entry.snapshot(db, parent.id)
334
- })).pipe(Effect.orDie);
335
- yield* bus.publish(SessionEvent.Forked, {
336
- sessionID,
337
- parentID: parent.id,
338
- boundary: { ...input.boundary, messageID: boundary.id },
339
- ...inherited
340
- });
341
- return yield* result.get(sessionID).pipe(Effect.orDie);
342
- }),
343
- get: Effect.fn("Session.get")(function* (sessionID) {
344
- const session = yield* store.get(sessionID);
345
- if (!session)
346
- return yield* new NotFoundError({ sessionID });
347
- return session;
348
- }),
349
- environment: Effect.fn("Session.environment")(function* (input) {
350
- yield* result.get(input.sessionID);
351
- if (input.variables !== undefined)
352
- yield* environments.set(input.sessionID, input.variables);
353
- return yield* environments.get(input.sessionID);
354
- }),
355
- view: Effect.fn("Session.view")(function* (input) {
356
- const row = yield* db.select({ idle: SessionTable.time_idle, viewed: SessionTable.time_viewed }).from(SessionTable).where(eq(SessionTable.id, input.sessionID)).get().pipe(Effect.orDie);
357
- if (!row)
358
- return yield* new NotFoundError({ sessionID: input.sessionID });
359
- if (row.idle === null || input.idle > row.idle || row.viewed !== null && row.viewed >= input.idle)
360
- return yield* Effect.void;
361
- yield* bus.publish(SessionEvent.Viewed, { sessionID: input.sessionID, idle: input.idle });
362
- }),
363
- remove: Effect.fn("Session.remove")(function* (sessionID) {
364
- const session = yield* result.get(sessionID);
365
- yield* execution.interrupt(sessionID);
366
- yield* execution.awaitIdle(sessionID);
367
- yield* closeTransport(session);
368
- const children = yield* result.list({ parentID: sessionID });
369
- yield* Effect.forEach(children.data, (child) => result.remove(child.id), { concurrency: 1, discard: true });
370
- yield* environments.clear(sessionID);
371
- yield* bus.publish(SessionEvent.Deleted, { sessionID });
372
- yield* bus.remove(sessionID);
373
- }),
374
- list: Effect.fn("Session.list")(function* (input = {}) {
375
- const direction = input.anchor?.direction ?? "next";
376
- const requestedOrder = input.order ?? "desc";
377
- const order = direction === "previous" ? requestedOrder === "asc" ? "desc" : "asc" : requestedOrder;
378
- const sortColumn = SessionTable.time_updated;
379
- const conditions = [];
380
- if ("directory" in input)
381
- conditions.push(eq(SessionTable.directory, input.directory));
382
- if (input.workspaceID)
383
- conditions.push(eq(SessionTable.workspace_id, input.workspaceID));
384
- if ("project" in input)
385
- conditions.push(eq(SessionTable.project_id, input.project));
386
- if ("project" in input && input.subpath !== undefined)
387
- conditions.push(eq(SessionTable.path, input.subpath));
388
- if (input.search)
389
- conditions.push(like(SessionTable.title, `%${input.search}%`));
390
- if (input.parentID !== undefined)
391
- conditions.push(input.parentID === null ? isNull(SessionTable.parent_id) : eq(SessionTable.parent_id, input.parentID));
392
- if (input.anchor) {
393
- conditions.push(order === "asc" ? or(gt(sortColumn, input.anchor.time), and(eq(sortColumn, input.anchor.time), gt(SessionTable.id, input.anchor.id))) : or(lt(sortColumn, input.anchor.time), and(eq(sortColumn, input.anchor.time), lt(SessionTable.id, input.anchor.id))));
394
- }
395
- const query = db.select().from(SessionTable).where(conditions.length > 0 ? and(...conditions) : undefined).orderBy(order === "asc" ? asc(sortColumn) : desc(sortColumn), order === "asc" ? asc(SessionTable.id) : desc(SessionTable.id));
396
- const rows = yield* (input.limit === undefined ? query.all() : query.limit(input.limit).all()).pipe(Effect.orDie);
397
- return { data: (direction === "previous" ? rows.toReversed() : rows).map((row) => fromRow(row)) };
398
- }),
399
- messages: Effect.fn("Session.messages")(function* (input) {
400
- yield* result.get(input.sessionID);
401
- const direction = input.cursor?.direction ?? "next";
402
- const requestedOrder = input.order ?? "desc";
403
- const order = direction === "previous" ? requestedOrder === "asc" ? "desc" : "asc" : requestedOrder;
404
- const anchor = input.cursor ? yield* db.select({ seq: SessionMessageTable.seq }).from(SessionMessageTable).where(and(eq(SessionMessageTable.session_id, input.sessionID), eq(SessionMessageTable.id, input.cursor.id))).get().pipe(Effect.orDie) : undefined;
405
- if (input.cursor && !anchor)
406
- return [];
407
- const boundary = anchor ? order === "asc" ? gt(SessionMessageTable.seq, anchor.seq) : lt(SessionMessageTable.seq, anchor.seq) : undefined;
408
- const where = boundary ? and(eq(SessionMessageTable.session_id, input.sessionID), boundary) : eq(SessionMessageTable.session_id, input.sessionID);
409
- const query = db.select().from(SessionMessageTable).where(where).orderBy(order === "asc" ? asc(SessionMessageTable.seq) : desc(SessionMessageTable.seq));
410
- const rows = yield* (input.limit === undefined ? query.all() : query.limit(input.limit).all()).pipe(Effect.orDie);
411
- return yield* Effect.forEach(direction === "previous" ? rows.toReversed() : rows, exports_history.decodeMessageRow);
412
- }),
413
- message: Effect.fn("Session.message")(function* (input) {
414
- const stored = yield* store.message(input.messageID);
415
- return stored?.sessionID === input.sessionID ? stored.message : undefined;
416
- }),
417
- updateMessage: Effect.fn("Session.updateMessage")(function* (input) {
418
- const ref = { sessionID: input.sessionID, messageID: input.messageID };
419
- yield* result.get(ref.sessionID);
420
- if ((yield* execution.active).has(ref.sessionID))
421
- return yield* new BusyError({ sessionID: ref.sessionID });
422
- const message = yield* result.message(ref);
423
- if (!message)
424
- return yield* new MessageNotFoundError(ref);
425
- if (message.type !== "assistant")
426
- return yield* new MessageNotAssistantError(ref);
427
- if (!message.time.completed)
428
- return yield* new MessageIncompleteError(ref);
429
- if (input.content.some((content) => content.type === "tool" && (content.state.status === "streaming" || content.state.status === "running")))
430
- return yield* new MessageToolIncompleteError(ref);
431
- yield* bus.publish(SessionEvent.MessageContentUpdated, {
432
- ...ref,
433
- content: Schema.encodeSync(Schema.Array(SessionMessage.AssistantContent))(input.content)
434
- });
435
- const updated = yield* result.message(ref);
436
- if (updated?.type !== "assistant")
437
- return yield* new MessageNotFoundError(ref);
438
- return updated;
439
- }),
440
- context: Effect.fn("Session.context")(function* (sessionID) {
441
- yield* result.get(sessionID);
442
- return yield* store.context(sessionID);
443
- }),
444
- inbox: Effect.fn("Session.inbox")(function* (sessionID) {
445
- yield* result.get(sessionID);
446
- return yield* exports_inbox.list(db, sessionID);
447
- }),
448
- cancelInbox: Effect.fn("Session.cancelInbox")((input) => mutatePending(input, exports_inbox.cancel)),
449
- steerInbox: Effect.fn("Session.steerInbox")((input) => mutatePending(input, exports_inbox.steer, true)),
450
- queueInbox: Effect.fn("Session.queueInbox")((input) => mutatePending(input, exports_inbox.queue)),
451
- log: (input) => Stream.unwrap(result.get(input.sessionID).pipe(Effect.as(bus.log({ aggregateID: input.sessionID, after: input.after, follow: input.follow })))).pipe(Stream.filter((item) => exports_bus.isSynced(item) || isDurableSessionEvent(item))),
452
- prompt: Effect.fn("Session.prompt")((input) => Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
453
- const session = yield* result.get(input.sessionID);
454
- const messageID = input.id ?? SessionMessage.ID.create();
455
- const admitted = yield* Effect.gen(function* () {
456
- const existing = yield* exports_inbox.reconcile(db, {
457
- id: messageID,
458
- sessionID: session.id,
459
- delivery: input.delivery ?? "steer"
460
- });
461
- if (existing)
462
- return existing;
463
- const item = yield* restore(preparePrompt(input, messageID).pipe(Effect.provide(locations.get(session.location)), Effect.provideService(FSUtil.Service, fs)));
464
- if (session.revert)
465
- yield* exports_revert.commit(session).pipe(Effect.provideService(exports_bus.Service, bus));
466
- return yield* exports_inbox.admit(db, bus, {
467
- id: messageID,
468
- sessionID: session.id,
469
- item
470
- });
471
- }).pipe(Effect.catchDefect((defect) => defect instanceof exports_inbox.LifecycleConflict ? new PromptConflictError({ sessionID: input.sessionID, messageID }) : Effect.die(defect)));
472
- if (admitted.type !== "user" || admitted.sessionID !== input.sessionID)
473
- return yield* new PromptConflictError({ sessionID: input.sessionID, messageID });
474
- if (input.resume !== false)
475
- yield* execution.wake(admitted.sessionID);
476
- return admitted;
477
- }))),
478
- generate: Effect.fn("Session.generate")(function* (input) {
479
- const session = yield* result.get(input.sessionID);
480
- const generate = yield* exports_generate.Service.pipe(Effect.provide(locations.get(session.location)));
481
- return yield* generate.generate(input);
482
- }),
483
- command: Effect.fn("Session.command")(function* (input) {
484
- const session = yield* result.get(input.sessionID);
485
- const commands = yield* Effect.gen(function* () {
486
- const plugins = yield* exports_supervisor_service.Service;
487
- yield* plugins.flush;
488
- return yield* exports_command.Service;
489
- }).pipe(Effect.provide(locations.get(session.location)));
490
- const delivery = input.delivery ?? "steer";
491
- yield* commands.execute({
492
- name: input.command,
493
- invocation: {
494
- sessionID: input.sessionID,
495
- prompt: {
496
- text: input.text,
497
- files: input.files,
498
- agents: input.agents,
499
- skills: input.skills
500
- },
501
- delivery
502
- }
503
- });
504
- }),
505
- shell: Effect.fn("Session.shell")(function* (input) {
506
- const session = yield* result.get(input.sessionID);
507
- const running = yield* Effect.gen(function* () {
508
- const shell = yield* Effect.gen(function* () {
509
- const plugins = yield* exports_supervisor_service.Service;
510
- yield* plugins.flush;
511
- return yield* exports_shell.Service;
512
- }).pipe(Effect.provide(locations.get(session.location)));
513
- const started = yield* shell.create({
514
- command: input.command,
515
- cwd: session.location.directory,
516
- timeout: 0,
517
- metadata: { sessionID: input.sessionID, background: true }
518
- }).pipe(Effect.tapError((error) => result.synthetic({
519
- sessionID: input.sessionID,
520
- text: `User shell command failed to start:
521
- ${input.command}
522
-
523
- ${error.message}`,
524
- description: input.command,
525
- metadata: { source: "shell", state: "error" },
526
- resume: false
527
- })), Effect.orDie);
528
- yield* bus.publish(SessionEvent.Shell.Started, {
529
- sessionID: input.sessionID,
530
- shell: started
531
- }, { id: input.id });
532
- const terminal = yield* shell.result(started);
533
- const preview = yield* shell.output(started.id, { limit: SHELL_MAX_CAPTURE_BYTES }).pipe(Effect.catchTag("Shell.NotFoundError", () => Effect.succeed(exports_result.unavailable)));
534
- yield* bus.publish(SessionEvent.Shell.Ended, {
535
- sessionID: input.sessionID,
536
- shell: terminal.info,
537
- output: preview
538
- });
539
- yield* result.synthetic({
540
- ...exports_result.userNotification(terminal),
541
- sessionID: input.sessionID,
542
- resume: false
543
- }).pipe(Effect.catchTag("Session.NotFoundError", () => Effect.void), Effect.orDie);
544
- }).pipe(Effect.forkIn(scope, { startImmediately: true }));
545
- yield* Fiber.join(running);
546
- }),
547
- skill: Effect.fn("Session.skill")(function* (input) {
548
- const session = yield* result.get(input.sessionID);
549
- const skills = yield* exports_skill.Service.pipe(Effect.provide(locations.get(session.location)));
550
- const skill = yield* skills.get(input.skill);
551
- if (!skill)
552
- return yield* new SkillNotFoundError({ skill: input.skill });
553
- yield* bus.publish(SessionEvent.Skill.Activated, {
554
- sessionID: input.sessionID,
555
- id: skill.id,
556
- name: skill.name,
557
- text: skill.content
558
- }, { id: input.id ? Event.ID.make(input.id.replace(/^msg_/, "evt_")) : undefined });
559
- if (input.resume !== false)
560
- yield* execution.resume(input.sessionID).pipe(Effect.ignore, Effect.forkIn(scope, { startImmediately: true }), Effect.asVoid);
561
- }),
562
- switchAgent: Effect.fn("Session.switchAgent")(function* (input) {
563
- const session = yield* result.get(input.sessionID);
564
- yield* bus.publish(SessionEvent.AgentSelected, {
565
- sessionID: input.sessionID,
566
- agent: input.agent,
567
- previous: session.agent
568
- });
569
- }),
570
- switchModel: Effect.fn("Session.switchModel")(function* (input) {
571
- const session = yield* result.get(input.sessionID);
572
- if (session.model?.providerID === input.model.providerID && session.model.id === input.model.id && (session.model.variant ?? "default") === (input.model.variant ?? "default"))
573
- return;
574
- yield* bus.publish(SessionEvent.ModelSelected, {
575
- sessionID: input.sessionID,
576
- model: input.model,
577
- previous: session.model
578
- });
579
- }),
580
- rename: Effect.fn("Session.rename")(function* (input) {
581
- yield* result.get(input.sessionID);
582
- yield* bus.publish(SessionEvent.Renamed, {
583
- sessionID: input.sessionID,
584
- title: input.title
585
- });
586
- }),
587
- move: Effect.fn("Session.move")(function* (input) {
588
- const current = yield* result.get(input.sessionID);
589
- const value = input.directory.trim();
590
- const expanded = value === "~" ? global.home : value.startsWith("~/") ? path.join(global.home, value.slice(2)) : value;
591
- const directory = AbsolutePath.make(path.resolve(current.location.directory, expanded));
592
- const info = yield* fs.stat(directory).pipe(Effect.orElseSucceed(() => {
593
- return;
594
- }));
595
- if (!info)
596
- return yield* new DestinationNotFoundError({ directory });
597
- if (info.type !== "Directory")
598
- return yield* new DestinationNotDirectoryError({ directory });
599
- const project = yield* projects.resolve(directory);
600
- const payload = {
601
- location: exports_location.Ref.make({ directory, workspaceID: input.workspaceID }),
602
- projectID: project.id,
603
- subpath: RelativePath.make(path.relative(project.directory, directory).replaceAll("\\", "/"))
604
- };
605
- yield* exports_location.Service.pipe(Effect.provide(locations.get(payload.location)), Effect.scoped, Effect.catchCause((cause) => {
606
- if (Cause.hasInterruptsOnly(cause))
607
- return Effect.failCause(cause);
608
- return Effect.logWarning("session move destination unavailable", { directory, cause }).pipe(Effect.andThen(Effect.fail(new DestinationUnavailableError({ directory }))));
609
- }));
610
- yield* persistProject(project);
611
- const item = exports_inbox.Item.make({
612
- type: "move",
613
- payload,
614
- delivery: input.delivery ?? "steer"
615
- });
616
- yield* exports_inbox.serialized(input.sessionID, Effect.gen(function* () {
617
- const latest = yield* result.get(input.sessionID);
618
- const source = yield* fs.stat(latest.location.directory).pipe(Effect.orElseSucceed(() => {
619
- return;
620
- }));
621
- if (!source || source.type !== "Directory") {
622
- const cancellations = (yield* exports_inbox.moveIDs(db, input.sessionID)).map((item2) => [SessionEvent.InboxCancelled, { sessionID: input.sessionID, inboxID: item2.id }]);
623
- const moved = [SessionEvent.Moved, { sessionID: input.sessionID, ...payload }];
624
- const first = cancellations[0];
625
- if (!first)
626
- return yield* bus.publish(...moved).pipe(Effect.asVoid);
627
- return yield* bus.publishAll([first, ...cancellations.slice(1), moved]);
628
- }
629
- yield* exports_inbox.admit(db, bus, {
630
- id: SessionMessage.ID.create(),
631
- sessionID: input.sessionID,
632
- item
633
- });
634
- }));
635
- yield* execution.wake(input.sessionID);
636
- }),
637
- compact: Effect.fn("Session.compact")(function* (input) {
638
- yield* result.get(input.sessionID);
639
- const inputID = input.id ?? SessionMessage.ID.create();
640
- const admitted = yield* exports_inbox.admitCompaction(db, bus, {
641
- id: inputID,
642
- sessionID: input.sessionID,
643
- delivery: input.delivery ?? "steer"
644
- }).pipe(Effect.catchDefect((defect) => defect instanceof exports_inbox.LifecycleConflict ? new CompactionConflictError({ sessionID: input.sessionID, inputID }) : Effect.die(defect)));
645
- yield* execution.wake(input.sessionID);
646
- return admitted;
647
- }),
648
- wait: Effect.fn("Session.wait")(function* (sessionID) {
649
- yield* result.get(sessionID);
650
- yield* execution.awaitIdle(sessionID);
651
- }),
652
- active: execution.active,
653
- background: Effect.fn("Session.background")(function* (sessionID) {
654
- yield* result.get(sessionID);
655
- const backgrounded = yield* jobs.backgroundAll({ sessionID });
656
- if (backgrounded.length === 0)
657
- return;
658
- yield* result.synthetic({
659
- sessionID,
660
- text: [
661
- "User requested that active blocking work be moved to the background.",
662
- "",
663
- "Backgrounded work:",
664
- ...backgrounded.map((job) => `- ${job.type}: ${job.title && job.title.length > 0 ? job.title : job.id}`),
665
- "",
666
- "The backgrounded work is still unfinished. Move on to other work if you can. If there is nothing else useful to do, finish your response. Do not wait, sleep, poll, or report the backgrounded work as complete until a later completion notification is added to the conversation."
667
- ].join(`
668
- `)
669
- }).pipe(Effect.catchTag("Session.SyntheticConflictError", Effect.die));
670
- }),
671
- resume: Effect.fn("Session.resume")(function* (sessionID) {
672
- yield* result.get(sessionID);
673
- yield* execution.resume(sessionID);
674
- }),
675
- synthetic: Effect.fn("Session.synthetic")((input) => Effect.uninterruptible(Effect.gen(function* () {
676
- yield* result.get(input.sessionID);
677
- const inputID = input.id ?? SessionMessage.ID.create();
678
- const admittedInput = exports_inbox.Item.make({
679
- type: "synthetic",
680
- payload: {
681
- text: input.text,
682
- description: input.description,
683
- metadata: input.metadata
684
- },
685
- delivery: input.delivery ?? "steer"
686
- });
687
- const admitted = yield* exports_inbox.admit(db, bus, {
688
- id: inputID,
689
- sessionID: input.sessionID,
690
- item: admittedInput
691
- }).pipe(Effect.catchDefect((defect) => defect instanceof exports_inbox.LifecycleConflict ? new SyntheticConflictError({ sessionID: input.sessionID, inputID }) : Effect.die(defect)));
692
- if (admitted.type !== "synthetic" || admitted.sessionID !== input.sessionID)
693
- return yield* new SyntheticConflictError({ sessionID: input.sessionID, inputID });
694
- if (input.resume !== false && !(yield* result.get(input.sessionID)).revert)
695
- yield* execution.wake(input.sessionID);
696
- return admitted;
697
- }))),
698
- interrupt: Effect.fn("Session.interrupt")((sessionID, options) => Effect.uninterruptible(execution.interrupt(sessionID, options))),
699
- revert: {
700
- stage: Effect.fn("Session.revert.stage")(function* (input) {
701
- const session = yield* result.get(input.sessionID);
702
- if ((yield* execution.active).has(input.sessionID))
703
- return yield* new BusyError({ sessionID: input.sessionID });
704
- return yield* Effect.gen(function* () {
705
- const plugins = yield* exports_supervisor_service.Service;
706
- yield* plugins.flush;
707
- return yield* exports_revert.stage({ session, messageID: input.messageID, files: input.files }).pipe(Effect.provideService(exports_database.Service, database), Effect.provideService(exports_bus.Service, bus));
708
- }).pipe(Effect.provide(locations.get(session.location)));
709
- }),
710
- clear: Effect.fn("Session.revert.clear")(function* (sessionID) {
711
- const session = yield* result.get(sessionID);
712
- if ((yield* execution.active).has(sessionID))
713
- return yield* new BusyError({ sessionID });
714
- const revert = yield* Effect.gen(function* () {
715
- const plugins = yield* exports_supervisor_service.Service;
716
- yield* plugins.flush;
717
- return yield* exports_revert.clear(session).pipe(Effect.provideService(exports_bus.Service, bus));
718
- }).pipe(Effect.provide(locations.get(session.location)));
719
- yield* execution.wake(sessionID);
720
- return revert;
721
- }),
722
- commit: Effect.fn("Session.revert.commit")(function* (sessionID) {
723
- const session = yield* result.get(sessionID);
724
- if ((yield* execution.active).has(sessionID))
725
- return yield* new BusyError({ sessionID });
726
- return yield* exports_revert.commit(session).pipe(Effect.provideService(exports_bus.Service, bus));
727
- })
728
- }
729
- });
730
- return result;
731
- }));
732
- var preparePrompt = Effect.fn("Session.preparePrompt")(function* (request, messageID) {
733
- const plugins = yield* exports_supervisor_service.Service;
734
- yield* plugins.flush;
735
- const hooks = yield* exports_hooks.Service;
736
- const event = yield* hooks.trigger("session", "prompt", {
737
- sessionID: request.sessionID,
738
- messageID,
739
- prompt: structuredClone({
740
- text: request.text,
741
- files: request.files?.slice(),
742
- agents: request.agents?.slice(),
743
- skills: request.skills?.slice()
744
- }),
745
- metadata: structuredClone(request.metadata),
746
- delivery: request.delivery ?? "steer"
747
- });
748
- const input = event.prompt;
749
- const fs = yield* FSUtil.Service;
750
- const files = input.files ? yield* Effect.forEach(input.files, (file) => materializeAttachment(fs, file), { concurrency: 8 }) : undefined;
751
- const requested = input.skills;
752
- const selected = yield* Effect.gen(function* () {
753
- if (!requested?.length)
754
- return;
755
- const skillService = yield* exports_skill.Service;
756
- const prepared = new Map;
757
- return yield* Effect.forEach(requested, (attachment) => Effect.gen(function* () {
758
- const name = prepared.get(attachment.id);
759
- if (name !== undefined)
760
- return { id: attachment.id, name, mention: attachment.mention };
761
- const skill = yield* skillService.get(attachment.id);
762
- if (!skill)
763
- return yield* new SkillNotFoundError({ skill: attachment.id });
764
- prepared.set(skill.id, skill.name);
765
- return {
766
- id: skill.id,
767
- name: skill.name,
768
- text: (yield* exports_skill.prepare(fs, skill).pipe(Effect.orDie)).output,
769
- mention: attachment.mention
770
- };
771
- }));
772
- });
773
- return exports_inbox.Item.make({
774
- type: "user",
775
- payload: {
776
- ...Prompt.make({
777
- text: input.text,
778
- agents: input.agents,
779
- files,
780
- skills: selected?.length ? selected : undefined
781
- }),
782
- metadata: event.metadata
783
- },
784
- delivery: event.delivery
785
- });
786
- });
787
- var MAX_ATTACHMENT_BYTES = 20 * 1024 * 1024;
788
- var materializeAttachment = Effect.fn("Session.materializeAttachment")(function* (fs, input) {
789
- const resolved = input.uri.startsWith("data:") ? {
790
- bytes: yield* decodeDataURL(input.uri),
791
- source: { type: "inline" },
792
- start: undefined,
793
- end: undefined,
794
- name: undefined,
795
- mime: undefined
796
- } : yield* readFileAttachment(fs, input.uri);
797
- if (resolved.bytes.byteLength > MAX_ATTACHMENT_BYTES)
798
- return yield* new AttachmentError({
799
- uri: input.uri,
800
- message: `Attachment exceeds the ${MAX_ATTACHMENT_BYTES} byte limit: ${input.uri}`
801
- });
802
- const mime = resolved.mime ?? exports_mime.detect(resolved.bytes);
803
- const content = mime === "text/plain" && resolved.start !== undefined ? Buffer.from(Buffer.from(resolved.bytes).toString("utf8").split(`
804
- `).slice(resolved.start - 1, resolved.end).join(`
805
- `)) : resolved.bytes;
806
- const normalized = yield* normalizeImageAttachment(input, Buffer.from(content).toString("base64"), mime);
807
- return FileAttachment.create({
808
- data: normalized.data,
809
- mime: normalized.mime,
810
- source: resolved.source,
811
- name: input.name ?? resolved.name,
812
- description: input.description,
813
- mention: input.mention
814
- });
815
- });
816
- var normalizeImageAttachment = Effect.fn("Session.normalizeImageAttachment")(function* (input, data, mime) {
817
- if (!mime.startsWith("image/"))
818
- return { data: Base64.make(data), mime };
819
- const service = yield* exports_image.Service;
820
- const label = input.name ?? (input.uri.startsWith("data:") ? "inline attachment" : input.uri);
821
- const content = { uri: label, content: data, encoding: "base64", mime };
822
- const normalized = yield* service.normalize(label, content).pipe(Effect.catchTag("Image.ResizerUnavailableError", () => Effect.succeed(content)), Effect.mapError((error) => new AttachmentError({ uri: label, message: error.message })));
823
- return { data: Base64.make(normalized.content), mime: normalized.mime };
824
- });
825
- var readFileAttachment = Effect.fn("Session.readFileAttachment")(function* (fs, uri) {
826
- const url = yield* Effect.try({
827
- try: () => new URL(uri),
828
- catch: () => new AttachmentError({ uri, message: `Invalid attachment URI: ${uri}` })
829
- });
830
- if (url.protocol !== "file:")
831
- return yield* new AttachmentError({ uri, message: `Unsupported attachment URI: ${uri}` });
832
- const start = positiveInt(url.searchParams.get("start"));
833
- const end = positiveInt(url.searchParams.get("end"));
834
- const target = yield* Effect.try({
835
- try: () => {
836
- url.search = "";
837
- url.hash = "";
838
- return fileURLToPath(url);
839
- },
840
- catch: () => new AttachmentError({ uri, message: `Invalid file URI: ${uri}` })
841
- });
842
- const info = yield* fs.stat(target).pipe(Effect.mapError(() => new AttachmentError({ uri, message: `Unable to read attachment: ${uri}` })));
843
- if (info.type === "Directory") {
844
- const entries = yield* fs.readDirectoryEntries(target).pipe(Effect.mapError(() => new AttachmentError({ uri, message: `Unable to read attachment: ${uri}` })));
845
- return {
846
- bytes: Buffer.from(entries.filter((entry) => entry.type === "file" || entry.type === "directory").sort((a, b) => a.type === b.type ? a.name.localeCompare(b.name) : a.type === "directory" ? -1 : 1).map((entry) => entry.name + (entry.type === "directory" ? path.sep : "")).join(`
847
- `)),
848
- source: { type: "uri", uri },
849
- start: undefined,
850
- end: undefined,
851
- name: path.basename(target),
852
- mime: "application/x-directory"
853
- };
854
- }
855
- if (info.type !== "File")
856
- return yield* new AttachmentError({ uri, message: `Attachment is not a file: ${uri}` });
857
- if (Number(info.size) > MAX_ATTACHMENT_BYTES)
858
- return yield* new AttachmentError({
859
- uri,
860
- message: `Attachment exceeds the ${MAX_ATTACHMENT_BYTES} byte limit: ${uri}`
861
- });
862
- const bytes = yield* fs.readFile(target).pipe(Effect.mapError(() => new AttachmentError({ uri, message: `Unable to read attachment: ${uri}` })));
863
- return { bytes, source: { type: "uri", uri }, start, end, name: path.basename(target), mime: undefined };
864
- });
865
- function decodeDataURL(uri) {
866
- return Effect.try({
867
- try: () => {
868
- const comma = uri.indexOf(",");
869
- if (comma === -1)
870
- throw new Error("Invalid data URL");
871
- const metadata = uri.slice(5, comma);
872
- const payload = uri.slice(comma + 1);
873
- if (!metadata.split(";").some((part) => part.toLowerCase() === "base64"))
874
- return Buffer.from(decodeURIComponent(payload));
875
- const bytes = Buffer.from(payload, "base64");
876
- if (bytes.toString("base64") !== payload)
877
- throw new Error("Non-canonical base64");
878
- return bytes;
879
- },
880
- catch: () => new AttachmentError({ uri, message: "Invalid attachment data URL" })
881
- });
882
- }
883
- function positiveInt(value) {
884
- if (value === null)
885
- return;
886
- const parsed = Number(value);
887
- return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
888
- }
889
- var SHELL_MAX_CAPTURE_BYTES = 1024 * 1024;
890
- var node = makeGlobalNode({
891
- service: Service,
892
- layer,
893
- deps: [
894
- exports_job.node,
895
- exports_environment.node,
896
- exports_database.node,
897
- exports_bus.node,
898
- exports_project.node,
899
- exports_execution.node,
900
- exports_store.node,
901
- exports_location_service_map.node,
902
- exports_projector.node,
903
- FSUtil.node,
904
- Global.node,
905
- exports_app.node
906
- ]
907
- });
908
-
909
- export { ListAnchor, ListInput, PromptConflictError, SyntheticConflictError, AttachmentError, CompactionConflictError, BusyError, MessageNotAssistantError, MessageIncompleteError, MessageToolIncompleteError, InboxConflictError, SkillNotFoundError, DestinationNotFoundError, DestinationNotDirectoryError, DestinationUnavailableError, MessageNotFoundError, Service, node, exports_session };