@qitqode/qitqode-android-arm64 0.1.22 → 0.1.24

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 (426) hide show
  1. package/bundle/{chunk-18xhxdsh.js → chunk-02txthqv.js} +2 -2
  2. package/bundle/{chunk-t4c0zy2s.js → chunk-0ae5q6ck.js} +2 -2
  3. package/bundle/chunk-0bvde0cx.js +2 -0
  4. package/bundle/chunk-0kbxnazj.js +2 -0
  5. package/bundle/{chunk-n68xjm4p.js → chunk-0pbt75ev.js} +1 -1
  6. package/bundle/{chunk-hmm1m733.js → chunk-0pvbk8ks.js} +2 -2
  7. package/bundle/{chunk-j6cpsxva.js → chunk-0rtshz2r.js} +1 -1
  8. package/bundle/{chunk-mbkw9s6e.js → chunk-0w0jfzb4.js} +1 -1
  9. package/bundle/{chunk-qq9pvscd.js → chunk-0w4v0fbs.js} +2 -2
  10. package/bundle/{chunk-jee9y4t0.js → chunk-0z3z0gk1.js} +2 -2
  11. package/bundle/{chunk-mr7ya5kc.js → chunk-17ggas8k.js} +1 -1
  12. package/bundle/chunk-19z5q33z.js +2 -0
  13. package/bundle/chunk-1a0wnwna.js +2 -0
  14. package/bundle/{chunk-y2tnzn1y.js → chunk-1d64dywx.js} +2 -2
  15. package/bundle/chunk-1ddm2wxv.js +2 -0
  16. package/bundle/chunk-1fk4vsmc.js +2 -0
  17. package/bundle/{chunk-x4c8drpe.js → chunk-1fnmkm0z.js} +2 -2
  18. package/bundle/chunk-1j2f9nd5.js +2 -0
  19. package/bundle/{chunk-b5x3zghc.js → chunk-1jh5p5qw.js} +2 -2
  20. package/bundle/{chunk-mbmc1mg0.js → chunk-1jsywey3.js} +1 -1
  21. package/bundle/{chunk-t2n6fmpy.js → chunk-1p34bx7c.js} +2 -2
  22. package/bundle/{chunk-7yw60h8j.js → chunk-1xyn0sp2.js} +2 -2
  23. package/bundle/{chunk-yy91rm3y.js → chunk-1y9t7nxn.js} +1 -1
  24. package/bundle/{chunk-h99n5rv7.js → chunk-21ejqv4v.js} +1 -1
  25. package/bundle/chunk-23geekk5.js +3 -0
  26. package/bundle/chunk-27s736an.js +2 -0
  27. package/bundle/{chunk-4qegdkss.js → chunk-2eardzxs.js} +1 -1
  28. package/bundle/{chunk-6emme4kp.js → chunk-2gxjjqfx.js} +1 -1
  29. package/bundle/chunk-2j17xrzj.js +2 -0
  30. package/bundle/{chunk-s4epqtge.js → chunk-2mmspnr3.js} +1 -1
  31. package/bundle/{chunk-30233h8f.js → chunk-2qcndbxv.js} +1 -1
  32. package/bundle/{chunk-8rcpj28e.js → chunk-2wp1w8cy.js} +1 -1
  33. package/bundle/{chunk-6r4gn18m.js → chunk-2y8qz8te.js} +1 -1
  34. package/bundle/{chunk-8r4xs1q9.js → chunk-2z6fzwyc.js} +2 -2
  35. package/bundle/chunk-2zca3nak.js +2 -0
  36. package/bundle/chunk-2zcvcfq4.js +2 -0
  37. package/bundle/chunk-38hwkfj5.js +2 -0
  38. package/bundle/chunk-3afqxvsn.js +2 -0
  39. package/bundle/chunk-3avc1ppg.js +7 -0
  40. package/bundle/{chunk-a2ty2e0g.js → chunk-3nhqd8wg.js} +3 -3
  41. package/bundle/{chunk-jfy6bfvv.js → chunk-3tdqsm5c.js} +1 -1
  42. package/bundle/{chunk-c88rh38d.js → chunk-3tkp27x7.js} +2 -2
  43. package/bundle/chunk-3v4vtah1.js +2 -0
  44. package/bundle/{chunk-x8w2xgx6.js → chunk-3vbtra1j.js} +1 -1
  45. package/bundle/{chunk-b54t7ycj.js → chunk-3wzqs241.js} +1 -1
  46. package/bundle/chunk-3ypk0j2f.js +2 -0
  47. package/bundle/{chunk-tq258v8s.js → chunk-3z1y040p.js} +2 -2
  48. package/bundle/{chunk-3w60y2x5.js → chunk-453wpzg6.js} +1 -1
  49. package/bundle/chunk-4aykrj51.js +9 -0
  50. package/bundle/{chunk-qryeqw9s.js → chunk-4d1a547n.js} +1 -1
  51. package/bundle/chunk-4dtbmqmq.js +2 -0
  52. package/bundle/{chunk-s1mx3bkw.js → chunk-4k149ews.js} +1 -1
  53. package/bundle/{chunk-hyr049cr.js → chunk-4kse3awh.js} +1 -1
  54. package/bundle/chunk-4q9w2yve.js +5 -0
  55. package/bundle/{chunk-cx0z3mm3.js → chunk-4tn69nqs.js} +1 -1
  56. package/bundle/chunk-4zjb6rps.js +2 -0
  57. package/bundle/{chunk-cpkega70.js → chunk-58enbars.js} +2 -2
  58. package/bundle/{chunk-p64fb4rm.js → chunk-5h2hcp46.js} +1 -1
  59. package/bundle/chunk-5hkcjgwh.js +2 -0
  60. package/bundle/{chunk-7b69jj5g.js → chunk-5kmfnkzv.js} +1 -1
  61. package/bundle/{chunk-k19zvbzh.js → chunk-5rkmhzq0.js} +2 -2
  62. package/bundle/chunk-5snrz263.js +2 -0
  63. package/bundle/{chunk-ht1hqsaa.js → chunk-5y8efy5b.js} +1 -1
  64. package/bundle/chunk-653c0mxr.js +11 -0
  65. package/bundle/chunk-6av7hrrk.js +7 -0
  66. package/bundle/chunk-6bswn7w5.js +2 -0
  67. package/bundle/{chunk-fgtyrvan.js → chunk-6dxaty1v.js} +1 -1
  68. package/bundle/chunk-6epghftw.js +2 -0
  69. package/bundle/{chunk-bbznk59q.js → chunk-6g3m7yxf.js} +2 -2
  70. package/bundle/{chunk-xjdxyeja.js → chunk-6j0365q3.js} +2 -2
  71. package/bundle/chunk-6jjhxh8p.js +2 -0
  72. package/bundle/{chunk-y0fxwgrv.js → chunk-6mscvf6y.js} +1 -1
  73. package/bundle/{chunk-30p5pm3w.js → chunk-6nhje520.js} +1 -1
  74. package/bundle/{chunk-bjw39da9.js → chunk-6sdh1q7g.js} +1 -1
  75. package/bundle/{chunk-1eqcgkyq.js → chunk-6szvs3k9.js} +1 -1
  76. package/bundle/chunk-6ws7xyc5.js +2 -0
  77. package/bundle/{chunk-1d6ret10.js → chunk-78bajmqm.js} +1 -1
  78. package/bundle/{chunk-xtjsfqam.js → chunk-7a6p7dfx.js} +1 -1
  79. package/bundle/{chunk-ng85b73s.js → chunk-7dckfame.js} +1 -1
  80. package/bundle/chunk-7g28zhar.js +2 -0
  81. package/bundle/{chunk-8t1whx0k.js → chunk-7gczzccz.js} +1 -1
  82. package/bundle/chunk-7mhffm9f.js +800 -0
  83. package/bundle/{chunk-68jsyydc.js → chunk-7tgm8wp5.js} +1 -1
  84. package/bundle/chunk-7v02b2ms.js +2 -0
  85. package/bundle/chunk-7vmp2034.js +2 -0
  86. package/bundle/chunk-7wxrypkr.js +2 -0
  87. package/bundle/{chunk-1zb95qfx.js → chunk-7y3y3j51.js} +2 -2
  88. package/bundle/{chunk-mgp034y0.js → chunk-7yf15a3a.js} +1 -1
  89. package/bundle/{chunk-bwyf1bvf.js → chunk-82gs5cmn.js} +1 -1
  90. package/bundle/{chunk-hkmx6w54.js → chunk-84gnbzky.js} +1 -1
  91. package/bundle/{chunk-fyd31m33.js → chunk-8651hq0k.js} +1 -1
  92. package/bundle/{chunk-ymv05pbt.js → chunk-8717htya.js} +1 -1
  93. package/bundle/{chunk-fjtq8164.js → chunk-8ace31r2.js} +1 -1
  94. package/bundle/{chunk-7276th89.js → chunk-8cr7ks31.js} +1 -1
  95. package/bundle/{chunk-9g05wsae.js → chunk-8h9r6c8g.js} +2 -2
  96. package/bundle/chunk-8kk9gvdy.js +2 -0
  97. package/bundle/{chunk-haw1jzwb.js → chunk-8pe047p0.js} +1 -1
  98. package/bundle/{chunk-j2k4wxsk.js → chunk-8r79zf3y.js} +2 -2
  99. package/bundle/chunk-8ygpp4y3.js +2 -0
  100. package/bundle/chunk-95q60g1p.js +2 -0
  101. package/bundle/{chunk-rvz05kxy.js → chunk-9798jffg.js} +1 -1
  102. package/bundle/{chunk-7hx0pza2.js → chunk-99n6czag.js} +2 -2
  103. package/bundle/{chunk-m79gd4yt.js → chunk-9easaxy7.js} +1 -1
  104. package/bundle/{chunk-jyh2g13j.js → chunk-9f7y0dj0.js} +1 -1
  105. package/bundle/{chunk-x1dfc7qd.js → chunk-9jf67xb0.js} +2 -2
  106. package/bundle/chunk-9mjbenja.js +2 -0
  107. package/bundle/{chunk-9fdv5d8a.js → chunk-9nx8hm57.js} +1 -1
  108. package/bundle/{chunk-0ddhkapd.js → chunk-9pe4agdz.js} +2 -2
  109. package/bundle/{chunk-f72j5yx8.js → chunk-9rqrm9y8.js} +1 -1
  110. package/bundle/{chunk-mqt5qh3t.js → chunk-9sy9ws1w.js} +1 -1
  111. package/bundle/{chunk-zfw873yt.js → chunk-9vcw33dv.js} +1 -1
  112. package/bundle/chunk-9vn1gy8h.js +2 -0
  113. package/bundle/{chunk-wmmck56g.js → chunk-9xvctnjr.js} +1 -1
  114. package/bundle/{chunk-2p6w3w8f.js → chunk-a5zjrwqy.js} +2 -2
  115. package/bundle/{chunk-jj7wrfty.js → chunk-a9y27zd2.js} +1 -1
  116. package/bundle/{chunk-pcctf3gs.js → chunk-ac202abt.js} +1 -1
  117. package/bundle/{chunk-tcp31yv0.js → chunk-agdfqncf.js} +2 -2
  118. package/bundle/chunk-ajp3f08k.js +2 -0
  119. package/bundle/{chunk-7w01dxp9.js → chunk-am73j1bt.js} +1 -1
  120. package/bundle/{chunk-ne8ftsv3.js → chunk-apq38bt4.js} +3 -3
  121. package/bundle/chunk-aptkpdkc.js +2 -0
  122. package/bundle/{chunk-vpp88hhd.js → chunk-b643cra9.js} +229 -229
  123. package/bundle/{chunk-6hkv9411.js → chunk-b6m4yyww.js} +1 -1
  124. package/bundle/{chunk-rry321tn.js → chunk-b8ag61vj.js} +1 -1
  125. package/bundle/{chunk-hzexvrnj.js → chunk-bas6x25m.js} +2 -2
  126. package/bundle/{chunk-q6x5bmc3.js → chunk-bd21p9zz.js} +2 -2
  127. package/bundle/{chunk-t7v8wzr9.js → chunk-bf146hz2.js} +2 -2
  128. package/bundle/{chunk-pkdk0ppc.js → chunk-bky5a42k.js} +2 -2
  129. package/bundle/chunk-bry94ar5.js +2 -0
  130. package/bundle/chunk-btzyvqkf.js +2 -0
  131. package/bundle/{chunk-xce77xex.js → chunk-c31k8yh0.js} +1 -1
  132. package/bundle/chunk-c94pjdfh.js +2 -0
  133. package/bundle/chunk-cct9ds5c.js +2 -0
  134. package/bundle/chunk-cesrhm09.js +4 -0
  135. package/bundle/{chunk-pqyds00j.js → chunk-cvchztkc.js} +1 -1
  136. package/bundle/{chunk-x6gzygc3.js → chunk-cy2586rv.js} +1 -1
  137. package/bundle/chunk-czn535v0.js +2 -0
  138. package/bundle/chunk-d56zc21w.js +3 -0
  139. package/bundle/chunk-d7wd5hz1.js +2 -0
  140. package/bundle/chunk-d86cmjrp.js +2 -0
  141. package/bundle/{chunk-1kje2a6g.js → chunk-dann9gfq.js} +1 -1
  142. package/bundle/{chunk-fssgbz70.js → chunk-dcx8hjbs.js} +1 -1
  143. package/bundle/{chunk-x4b0ywbs.js → chunk-dgzyn27r.js} +1 -1
  144. package/bundle/{chunk-meaa7wrs.js → chunk-dkm7x8rj.js} +2 -2
  145. package/bundle/chunk-dkv2mg97.js +3 -0
  146. package/bundle/chunk-dnq65xvn.js +2 -0
  147. package/bundle/chunk-dpqv8rtn.js +2 -0
  148. package/bundle/chunk-e346x00p.js +10 -0
  149. package/bundle/chunk-e9mh7s3z.js +2 -0
  150. package/bundle/{chunk-kywg73qz.js → chunk-ebjhggdw.js} +1 -1
  151. package/bundle/{chunk-prrrw8t8.js → chunk-ecwz9nhs.js} +2 -2
  152. package/bundle/{chunk-m9bc5csy.js → chunk-edvcz2gd.js} +1 -1
  153. package/bundle/chunk-ek2y5f6g.js +2 -0
  154. package/bundle/{chunk-dhvwrrqx.js → chunk-ep8zn49w.js} +2 -2
  155. package/bundle/chunk-epdsay73.js +2 -0
  156. package/bundle/{chunk-adgrn60n.js → chunk-evqxvhdb.js} +1 -1
  157. package/bundle/{chunk-n1wawwry.js → chunk-ewyk4py6.js} +1 -1
  158. package/bundle/{chunk-56cty7nr.js → chunk-f3kjp838.js} +2 -2
  159. package/bundle/{chunk-c9afcdba.js → chunk-f819a7ec.js} +1 -1
  160. package/bundle/chunk-f89gntcy.js +3 -0
  161. package/bundle/{chunk-qwf258sw.js → chunk-fdezde1z.js} +1 -1
  162. package/bundle/chunk-ffnsn7tv.js +2 -0
  163. package/bundle/{chunk-98nh88th.js → chunk-fhng5her.js} +2 -2
  164. package/bundle/chunk-fkezc7ew.js +2 -0
  165. package/bundle/{chunk-78wt9ad8.js → chunk-fkvccmgk.js} +2 -2
  166. package/bundle/{chunk-1123xk5a.js → chunk-fm4xa6yx.js} +2 -2
  167. package/bundle/{chunk-j1kqhxnq.js → chunk-frdc3ysq.js} +1 -1
  168. package/bundle/chunk-fsxddgj0.js +2 -0
  169. package/bundle/{chunk-ah9cm91p.js → chunk-ftk58wxe.js} +1 -1
  170. package/bundle/{chunk-zz192a31.js → chunk-g0v9g37f.js} +1 -1
  171. package/bundle/{chunk-50aznc8e.js → chunk-g7vkkmsk.js} +3 -3
  172. package/bundle/chunk-gbcsfg6v.js +2 -0
  173. package/bundle/{chunk-s6qdtfty.js → chunk-gc9q0x8z.js} +3 -3
  174. package/bundle/{chunk-ntmn6epc.js → chunk-gen6f3dn.js} +2 -2
  175. package/bundle/{chunk-fkdbba26.js → chunk-gf4ek7rv.js} +1 -1
  176. package/bundle/{chunk-ee5r4h0v.js → chunk-gff87y4n.js} +1 -1
  177. package/bundle/chunk-gfmz85hp.js +2 -0
  178. package/bundle/chunk-gk63k4t6.js +2 -0
  179. package/bundle/{chunk-b3x13ndd.js → chunk-gn7xgd4c.js} +1 -1
  180. package/bundle/{chunk-4gfryje2.js → chunk-gn9p1d50.js} +1 -1
  181. package/bundle/{chunk-b1t8d1s8.js → chunk-gvzfffr4.js} +1 -1
  182. package/bundle/{chunk-zeh3mjgp.js → chunk-ha1w0xzh.js} +1 -1
  183. package/bundle/{chunk-r8ddb02d.js → chunk-hbnr0j7h.js} +2 -2
  184. package/bundle/chunk-hg563h5r.js +3 -0
  185. package/bundle/{chunk-y3x5m3e8.js → chunk-hg9nk090.js} +1 -1
  186. package/bundle/{chunk-67wvdfs5.js → chunk-hh3w51wp.js} +2 -2
  187. package/bundle/{chunk-fa03gsff.js → chunk-hh4c02fh.js} +1 -1
  188. package/bundle/{chunk-5z8gpy3x.js → chunk-hh9a709t.js} +1 -1
  189. package/bundle/{chunk-dgsg31vm.js → chunk-hjbks7r9.js} +1 -1
  190. package/bundle/{chunk-qafcfb4x.js → chunk-hqg5qbxk.js} +1 -1
  191. package/bundle/{chunk-jtbf88gw.js → chunk-hv4nhx6q.js} +2 -2
  192. package/bundle/{chunk-n4spe0sv.js → chunk-hxgb0y1w.js} +1 -1
  193. package/bundle/chunk-j0vf8s12.js +2 -0
  194. package/bundle/chunk-j1a64ade.js +3 -0
  195. package/bundle/chunk-j1bxt69x.js +2 -0
  196. package/bundle/{chunk-351wfvhp.js → chunk-j1veq3zr.js} +2 -2
  197. package/bundle/{chunk-60dxyp37.js → chunk-jbd9k041.js} +2 -2
  198. package/bundle/chunk-jcem8s30.js +2 -0
  199. package/bundle/{chunk-v9sfzkg5.js → chunk-jegn6jc3.js} +2 -2
  200. package/bundle/chunk-jjwjb9w0.js +3 -0
  201. package/bundle/{chunk-3degq6rv.js → chunk-jmjg8d8a.js} +4 -4
  202. package/bundle/chunk-jpham2a3.js +2 -0
  203. package/bundle/{chunk-rpy4rgmm.js → chunk-jpygkh1c.js} +1 -1
  204. package/bundle/{chunk-n39gqxkz.js → chunk-jr8qcf99.js} +2 -2
  205. package/bundle/{chunk-9hrpcnt8.js → chunk-jr9xnvjq.js} +1 -1
  206. package/bundle/{chunk-07b36w5g.js → chunk-jz3aav8a.js} +2 -2
  207. package/bundle/chunk-jzkymnr5.js +2 -0
  208. package/bundle/chunk-k0qtwnhb.js +2 -0
  209. package/bundle/{chunk-6w15nfph.js → chunk-k16hzy2q.js} +1 -1
  210. package/bundle/chunk-k2rsky7z.js +2 -0
  211. package/bundle/{chunk-61ndvjmm.js → chunk-k9d927xe.js} +1 -1
  212. package/bundle/{chunk-jrwfx6d8.js → chunk-k9g77a02.js} +1 -1
  213. package/bundle/{chunk-t1f7jeat.js → chunk-kaeyhw2n.js} +2 -2
  214. package/bundle/{chunk-gvj8qg7x.js → chunk-kc3hpmr2.js} +2 -2
  215. package/bundle/chunk-kcetcysa.js +2 -0
  216. package/bundle/chunk-kjfc5v3s.js +2 -0
  217. package/bundle/chunk-kkvb2c2z.js +8 -0
  218. package/bundle/chunk-km2ayfyf.js +2 -0
  219. package/bundle/chunk-knrh89eb.js +2 -0
  220. package/bundle/{chunk-8wzc27e3.js → chunk-kr0fsqas.js} +1 -1
  221. package/bundle/chunk-ksqfjawv.js +2 -0
  222. package/bundle/{chunk-awdpkgxf.js → chunk-ktmazmas.js} +2 -2
  223. package/bundle/{chunk-c4x99ayd.js → chunk-m8djypsy.js} +1 -1
  224. package/bundle/{chunk-10qkxzhh.js → chunk-mj24ntn9.js} +1 -1
  225. package/bundle/chunk-mjhb1q0n.js +3 -0
  226. package/bundle/{chunk-4xpfmpjf.js → chunk-ms1fd6h4.js} +1 -1
  227. package/bundle/chunk-mxcger73.js +2 -0
  228. package/bundle/{chunk-fzhgxcej.js → chunk-n1chdwrs.js} +1 -1
  229. package/bundle/{chunk-jatba8z8.js → chunk-najzfhb2.js} +1 -1
  230. package/bundle/chunk-nazkrkeb.js +2 -0
  231. package/bundle/chunk-nk01s49e.js +2 -0
  232. package/bundle/{chunk-pp44xnd7.js → chunk-ns0pswww.js} +1 -1
  233. package/bundle/chunk-ns8b7rx1.js +2 -0
  234. package/bundle/chunk-ny6vpkx2.js +2 -0
  235. package/bundle/{chunk-0vw5a7m9.js → chunk-p4hpr8d7.js} +1 -1
  236. package/bundle/{chunk-n1m5qdf5.js → chunk-p54bzjtv.js} +1 -1
  237. package/bundle/{chunk-f8xnn26j.js → chunk-pb7rnkke.js} +1 -1
  238. package/bundle/{chunk-4se8cbmb.js → chunk-pfhp78cr.js} +1 -1
  239. package/bundle/{chunk-y2r3zker.js → chunk-ps543k72.js} +1 -1
  240. package/bundle/chunk-pv8jcpnf.js +2 -0
  241. package/bundle/{chunk-vqxyph4q.js → chunk-pyq01301.js} +1 -1
  242. package/bundle/chunk-q0dd3ak6.js +3 -0
  243. package/bundle/chunk-q2s057bm.js +2 -0
  244. package/bundle/{chunk-x1naayst.js → chunk-q3x4x2tq.js} +1 -1
  245. package/bundle/chunk-q5cqg2c0.js +28 -0
  246. package/bundle/{chunk-msqx5bb0.js → chunk-q6fbyvpq.js} +1 -1
  247. package/bundle/chunk-qk2wnp2x.js +2 -0
  248. package/bundle/{chunk-wm3b050v.js → chunk-qw2hgs5b.js} +2 -2
  249. package/bundle/{chunk-8x6x3g16.js → chunk-qywwj58s.js} +2 -2
  250. package/bundle/chunk-r012q335.js +3 -0
  251. package/bundle/{chunk-gzwcj7c9.js → chunk-r3yqe7x0.js} +1 -1
  252. package/bundle/{chunk-2epf5806.js → chunk-r48g0kaq.js} +2 -2
  253. package/bundle/{chunk-hrnx60em.js → chunk-r7xp0xcn.js} +2 -2
  254. package/bundle/chunk-rbdjbgkb.js +2 -0
  255. package/bundle/{chunk-a3a9bbk7.js → chunk-rvvfs9ps.js} +2 -2
  256. package/bundle/chunk-rxjprhgh.js +2 -0
  257. package/bundle/chunk-s3w9bmze.js +2 -0
  258. package/bundle/chunk-s3zste1a.js +2 -0
  259. package/bundle/{chunk-bdzgtazc.js → chunk-s9amvacw.js} +2 -2
  260. package/bundle/chunk-sbt7qmwm.js +3 -0
  261. package/bundle/chunk-sf6h44pb.js +2 -0
  262. package/bundle/{chunk-aznbvrbm.js → chunk-sgtgvzv6.js} +1 -1
  263. package/bundle/chunk-sgvzxs7m.js +2 -0
  264. package/bundle/{chunk-h7rxnbf0.js → chunk-sjrmhd3e.js} +1 -1
  265. package/bundle/chunk-sp9bndyh.js +2 -0
  266. package/bundle/{chunk-ck65rcxb.js → chunk-spm1yy6w.js} +1 -1
  267. package/bundle/{chunk-h6htvj2y.js → chunk-srf73nm4.js} +1 -1
  268. package/bundle/{chunk-c2w3bqsa.js → chunk-sswbfqcq.js} +1 -1
  269. package/bundle/{chunk-er5q8nhp.js → chunk-t488d66k.js} +1 -1
  270. package/bundle/{chunk-aftpj9fe.js → chunk-t6w96xq2.js} +1 -1
  271. package/bundle/{chunk-t8365msg.js → chunk-te1zfpzv.js} +1 -1
  272. package/bundle/{chunk-2bxy8zm1.js → chunk-tk3bve0x.js} +2 -2
  273. package/bundle/chunk-tsn1jkr7.js +2 -0
  274. package/bundle/{chunk-z9b0ydw1.js → chunk-tzc4jkzg.js} +1 -1
  275. package/bundle/{chunk-01gtn79f.js → chunk-v2kyarwz.js} +2 -2
  276. package/bundle/{chunk-0qmaxpkv.js → chunk-v7r9np94.js} +1 -1
  277. package/bundle/{chunk-0jv8r99k.js → chunk-va4davgy.js} +317 -297
  278. package/bundle/{chunk-2bbvvh0d.js → chunk-vavrczqm.js} +1 -1
  279. package/bundle/{chunk-43xq4p51.js → chunk-ve5gb789.js} +2 -2
  280. package/bundle/{chunk-n9gzj085.js → chunk-vf1r5ckp.js} +1 -1
  281. package/bundle/{chunk-hnzs3ywg.js → chunk-vftqwdpg.js} +1 -1
  282. package/bundle/chunk-vg4styg5.js +2 -0
  283. package/bundle/chunk-vh09hhcs.js +2 -0
  284. package/bundle/chunk-vhktpm0n.js +2 -0
  285. package/bundle/{chunk-5a80qybt.js → chunk-vvypb02q.js} +1 -1
  286. package/bundle/{chunk-h5wh2d49.js → chunk-vzjcmwry.js} +2 -2
  287. package/bundle/{chunk-6nhgkw5r.js → chunk-w1atxyz0.js} +1 -1
  288. package/bundle/{chunk-73d0dy03.js → chunk-w7p2x973.js} +2 -2
  289. package/bundle/{chunk-db7hykjs.js → chunk-wa2ce2sg.js} +2 -2
  290. package/bundle/{chunk-3nc9wy1m.js → chunk-wf09j72q.js} +2 -2
  291. package/bundle/{chunk-wfb9dwmc.js → chunk-wfnk2vsd.js} +1 -1
  292. package/bundle/{chunk-zt8kghd2.js → chunk-wj6aq50n.js} +1 -1
  293. package/bundle/{chunk-39h565hz.js → chunk-wmrq9qqf.js} +1 -1
  294. package/bundle/{chunk-ha5qct06.js → chunk-wmw2gne9.js} +2 -2
  295. package/bundle/chunk-wtp0yvqw.js +2 -0
  296. package/bundle/{chunk-btjcs9ee.js → chunk-x6z2b63w.js} +1 -1
  297. package/bundle/{chunk-3xbtg0hn.js → chunk-xccs5c50.js} +1 -1
  298. package/bundle/{chunk-abc7ccfd.js → chunk-xj73j10a.js} +1 -1
  299. package/bundle/chunk-xmzs7q66.js +2 -0
  300. package/bundle/chunk-xv80476w.js +2 -0
  301. package/bundle/{chunk-tepesp0b.js → chunk-xv8gnkh5.js} +1 -1
  302. package/bundle/{chunk-hf0gny5t.js → chunk-y1srca0c.js} +2 -2
  303. package/bundle/{chunk-zy0zn8yx.js → chunk-y2jmtfdh.js} +2 -2
  304. package/bundle/{chunk-w8xaw2dv.js → chunk-y3n31nnx.js} +2 -2
  305. package/bundle/{chunk-6v4mhtha.js → chunk-ygj1cy0n.js} +1 -1
  306. package/bundle/{chunk-496rb1e4.js → chunk-yh174jhg.js} +2 -2
  307. package/bundle/chunk-yjvr0et1.js +2 -0
  308. package/bundle/{chunk-h9ftcgs2.js → chunk-yz7rqzby.js} +3 -3
  309. package/bundle/{chunk-2qy62cv4.js → chunk-yzdty5t9.js} +2 -2
  310. package/bundle/{chunk-5mrjxapq.js → chunk-zavtsfxz.js} +1 -1
  311. package/bundle/{chunk-h725tttx.js → chunk-zeh481tm.js} +2 -2
  312. package/bundle/{chunk-cn7nnjsf.js → chunk-zfnbk5gy.js} +1 -1
  313. package/bundle/{chunk-p20ft5mj.js → chunk-zk8n8hnh.js} +2 -2
  314. package/bundle/{chunk-en7nxqvn.js → chunk-zp2ffbc2.js} +2 -2
  315. package/bundle/chunk-zx3kcfkj.js +2 -0
  316. package/bundle/index.js +4 -4
  317. package/bundle/parser.worker.js +2 -2
  318. package/bundle/worker.js +1 -1
  319. package/package.json +1 -1
  320. package/bundle/chunk-04ezvjjf.js +0 -2
  321. package/bundle/chunk-0msr85tj.js +0 -2
  322. package/bundle/chunk-0qrpg3n8.js +0 -2
  323. package/bundle/chunk-0w8ztgmg.js +0 -2
  324. package/bundle/chunk-0y2nwncb.js +0 -2
  325. package/bundle/chunk-0zh8tykf.js +0 -2
  326. package/bundle/chunk-21z1vfgm.js +0 -2
  327. package/bundle/chunk-2ec8msmq.js +0 -2
  328. package/bundle/chunk-2n5m61m9.js +0 -2
  329. package/bundle/chunk-362z696e.js +0 -2
  330. package/bundle/chunk-367rm03h.js +0 -2
  331. package/bundle/chunk-3f6t3wde.js +0 -799
  332. package/bundle/chunk-40vz0fhv.js +0 -3
  333. package/bundle/chunk-43k17qzb.js +0 -2
  334. package/bundle/chunk-4r574drd.js +0 -2
  335. package/bundle/chunk-6c2xn1ab.js +0 -2
  336. package/bundle/chunk-6pe3xzkk.js +0 -11
  337. package/bundle/chunk-6rak9ez9.js +0 -2
  338. package/bundle/chunk-71dbq1d0.js +0 -2
  339. package/bundle/chunk-73r1zvgw.js +0 -2
  340. package/bundle/chunk-7az1bpy8.js +0 -2
  341. package/bundle/chunk-7bm1t462.js +0 -2
  342. package/bundle/chunk-7nq8126b.js +0 -2
  343. package/bundle/chunk-80a0d0js.js +0 -2
  344. package/bundle/chunk-9ac4h2d9.js +0 -2
  345. package/bundle/chunk-9zp746aj.js +0 -2
  346. package/bundle/chunk-a0vpemkf.js +0 -2
  347. package/bundle/chunk-anqjy235.js +0 -7
  348. package/bundle/chunk-atjzxp7b.js +0 -2
  349. package/bundle/chunk-ax4f4fbm.js +0 -2
  350. package/bundle/chunk-aybmm0jf.js +0 -2
  351. package/bundle/chunk-b2scgkye.js +0 -2
  352. package/bundle/chunk-b5h8vd5n.js +0 -3
  353. package/bundle/chunk-bbpze4hq.js +0 -2
  354. package/bundle/chunk-bn6mg34g.js +0 -7
  355. package/bundle/chunk-c6wrjyep.js +0 -2
  356. package/bundle/chunk-cckshvkb.js +0 -9
  357. package/bundle/chunk-ce3c03mh.js +0 -2
  358. package/bundle/chunk-cm31dbwq.js +0 -2
  359. package/bundle/chunk-cqaw6hka.js +0 -2
  360. package/bundle/chunk-cxbkhs5y.js +0 -2
  361. package/bundle/chunk-d9vs6zd0.js +0 -2
  362. package/bundle/chunk-dcyzpkww.js +0 -2
  363. package/bundle/chunk-dj3rct8v.js +0 -2
  364. package/bundle/chunk-djcsvcby.js +0 -5
  365. package/bundle/chunk-ds162xgb.js +0 -3
  366. package/bundle/chunk-e1zv873k.js +0 -2
  367. package/bundle/chunk-eb0ksh4x.js +0 -2
  368. package/bundle/chunk-efxshjyz.js +0 -2
  369. package/bundle/chunk-enry018j.js +0 -2
  370. package/bundle/chunk-f03yje8k.js +0 -3
  371. package/bundle/chunk-fd1vbz1f.js +0 -3
  372. package/bundle/chunk-fydd2nmw.js +0 -2
  373. package/bundle/chunk-g2bw2qf5.js +0 -2
  374. package/bundle/chunk-h9a4zzr4.js +0 -2
  375. package/bundle/chunk-hkqcpdmt.js +0 -3
  376. package/bundle/chunk-jx3kvzka.js +0 -2
  377. package/bundle/chunk-k6eyc1wv.js +0 -8
  378. package/bundle/chunk-k9m536te.js +0 -2
  379. package/bundle/chunk-khkv9s5c.js +0 -2
  380. package/bundle/chunk-kv58j3yk.js +0 -2
  381. package/bundle/chunk-m3sr6xdg.js +0 -2
  382. package/bundle/chunk-mmyhzhzt.js +0 -2
  383. package/bundle/chunk-mt8zem33.js +0 -24
  384. package/bundle/chunk-mw60bmaf.js +0 -2
  385. package/bundle/chunk-nk42gy65.js +0 -2
  386. package/bundle/chunk-ps8xnz0h.js +0 -2
  387. package/bundle/chunk-pvn4dz8e.js +0 -2
  388. package/bundle/chunk-pw3tnt2j.js +0 -2
  389. package/bundle/chunk-pzajshbc.js +0 -2
  390. package/bundle/chunk-q2weasmk.js +0 -2
  391. package/bundle/chunk-qe8zp79w.js +0 -2
  392. package/bundle/chunk-qvcnvqvf.js +0 -2
  393. package/bundle/chunk-qxrjbw22.js +0 -2
  394. package/bundle/chunk-qy9s3nmy.js +0 -2
  395. package/bundle/chunk-r0zsgad8.js +0 -4
  396. package/bundle/chunk-r4hkkcj4.js +0 -2
  397. package/bundle/chunk-r50kjthp.js +0 -2
  398. package/bundle/chunk-rbrkvj3x.js +0 -2
  399. package/bundle/chunk-rhgfyvth.js +0 -2
  400. package/bundle/chunk-rjdpw6at.js +0 -2
  401. package/bundle/chunk-s6c5c940.js +0 -2
  402. package/bundle/chunk-s79zd152.js +0 -2
  403. package/bundle/chunk-skjx57kv.js +0 -2
  404. package/bundle/chunk-ssfgge5z.js +0 -2
  405. package/bundle/chunk-t813v629.js +0 -2
  406. package/bundle/chunk-tdqbsbyb.js +0 -2
  407. package/bundle/chunk-th189x63.js +0 -3
  408. package/bundle/chunk-thbjhgw0.js +0 -2
  409. package/bundle/chunk-tk6gjy9d.js +0 -3
  410. package/bundle/chunk-tsfpkwvr.js +0 -2
  411. package/bundle/chunk-tz8qhbk9.js +0 -3
  412. package/bundle/chunk-v07wtbmt.js +0 -2
  413. package/bundle/chunk-v6kenrks.js +0 -2
  414. package/bundle/chunk-v7dfqwxx.js +0 -2
  415. package/bundle/chunk-vf7hhxsa.js +0 -2
  416. package/bundle/chunk-vmhq6cyz.js +0 -2
  417. package/bundle/chunk-vvs87e61.js +0 -2
  418. package/bundle/chunk-w6z123g2.js +0 -2
  419. package/bundle/chunk-wg0849tq.js +0 -2
  420. package/bundle/chunk-xa0f5g9z.js +0 -2
  421. package/bundle/chunk-xj0ba60b.js +0 -2
  422. package/bundle/chunk-xtfcdgwe.js +0 -2
  423. package/bundle/chunk-xz7dccwp.js +0 -2
  424. package/bundle/chunk-ye6j8k26.js +0 -2
  425. package/bundle/chunk-zbvf09bm.js +0 -3
  426. package/bundle/chunk-zmqmccbc.js +0 -2
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{Fo as E,Go as e,Ho as I}from"./chunk-73d0dy03.js";import{Jo as b,Lo as g,Mo as n,Po as i,Qo as x,cp as _0,dp as O0,ep as G,fp as Z0}from"./chunk-ha5qct06.js";import{mp as p}from"./chunk-tq258v8s.js";import{Gs as t,Is as y,ct as T,dt as X,mt as q}from"./chunk-p20ft5mj.js";import{Ct as d,Gt as Q,nt as s}from"./chunk-b5x3zghc.js";import{It as w}from"./chunk-tk6gjy9d.js";import{Kt as A,Pt as c}from"./chunk-pkdk0ppc.js";import{$H as B,BN as M,jD as v,oJ as a,yF as o}from"./chunk-meaa7wrs.js";import{nP as F}from"./chunk-fa03gsff.js";var h={};F(h,{waitForDependencies:()=>R0,layer:()=>$0,get:()=>C0,defaultLayer:()=>j0,TuiConfig:()=>h,Service:()=>C,Info:()=>W0});import r from"path";var D={};F(D,{Keybinds:()=>Q0,ConfigKeybinds:()=>D});var _=(O,Z)=>M.String.pipe(M.optional,M.withDecodingDefault(B.succeed(O))).annotate({description:Z}),B0=process.platform==="win32"?"ctrl+z,ctrl+-,super+z":"ctrl+-,super+z",K0=M.Struct({leader:_("ctrl+x","Leader key for keybind combinations"),app_exit:_("ctrl+c,ctrl+d,<leader>q","Exit the application"),editor_open:_("<leader>e","Open external editor"),theme_list:_("<leader>t","List available themes"),sidebar_toggle:_("<leader>b","Toggle sidebar"),scrollbar_toggle:_("none","Toggle session scrollbar"),status_view:_("<leader>s","View status"),session_export:_("<leader>x","Export session to editor"),session_new:_("<leader>n","Create a new session"),session_list:_("<leader>l","List all sessions"),session_timeline:_("<leader>g","Show session timeline"),session_fork:_("none","Fork session from message"),session_rename:_("ctrl+r","Rename session"),session_delete:_("ctrl+d","Delete session"),stash_delete:_("ctrl+d","Delete stash entry"),model_provider_list:_("ctrl+a","Open provider list from model dialog"),model_favorite_toggle:_("ctrl+f","Toggle model favorite status"),session_share:_("none","Share current session"),session_unshare:_("none","Unshare current session"),session_interrupt:_("escape","Interrupt current session"),session_compact:_("<leader>c","Compact the session"),messages_page_up:_("pageup,ctrl+alt+b","Scroll messages up by one page"),messages_page_down:_("pagedown,ctrl+alt+f","Scroll messages down by one page"),messages_line_up:_("ctrl+alt+y","Scroll messages up by one line"),messages_line_down:_("ctrl+alt+e","Scroll messages down by one line"),messages_half_page_up:_("ctrl+alt+u","Scroll messages up by half page"),messages_half_page_down:_("ctrl+alt+d","Scroll messages down by half page"),messages_first:_("ctrl+g,home","Navigate to first message"),messages_last:_("ctrl+alt+g,end","Navigate to last message"),messages_next:_("none","Navigate to next message"),messages_previous:_("none","Navigate to previous message"),messages_last_user:_("none","Navigate to last user message"),messages_copy:_("<leader>y","Copy message"),messages_undo:_("<leader>u","Undo message"),messages_redo:_("<leader>r","Redo message"),messages_toggle_conceal:_("<leader>h","Toggle code block concealment in messages"),tool_details:_("none","Toggle tool details visibility"),model_list:_("<leader>m","List available models"),model_cycle_recent:_("f2","Next recently used model"),model_cycle_recent_reverse:_("shift+f2","Previous recently used model"),model_cycle_favorite:_("none","Next favorite model"),model_cycle_favorite_reverse:_("none","Previous favorite model"),command_list:_("ctrl+p","List available commands"),agent_list:_("<leader>a","List agents"),agent_cycle:_("alt+m","Next agent"),agent_cycle_reverse:_("alt+shift+m","Previous agent"),variant_cycle:_("ctrl+t","Cycle model variants"),variant_list:_("none","List model variants"),input_clear:_("ctrl+c","Clear input field"),input_paste:_("super+v,ctrl+v","Paste from clipboard"),input_submit:_("return","Submit input"),input_newline:_("shift+return,ctrl+return,alt+return,ctrl+j","Insert newline in input"),input_move_left:_("left,ctrl+b","Move cursor left in input"),input_move_right:_("right,ctrl+f","Move cursor right in input"),input_move_up:_("up","Move cursor up in input"),input_move_down:_("down","Move cursor down in input"),input_select_left:_("shift+left","Select left in input"),input_select_right:_("shift+right","Select right in input"),input_select_up:_("shift+up","Select up in input"),input_select_down:_("shift+down","Select down in input"),input_line_home:_("ctrl+a","Move to start of line in input"),input_line_end:_("ctrl+e","Move to end of line in input"),input_select_line_home:_("ctrl+shift+a","Select to start of line in input"),input_select_line_end:_("ctrl+shift+e","Select to end of line in input"),input_visual_line_home:_("alt+a","Move to start of visual line in input"),input_visual_line_end:_("alt+e","Move to end of visual line in input"),input_select_visual_line_home:_("alt+shift+a","Select to start of visual line in input"),input_select_visual_line_end:_("alt+shift+e","Select to end of visual line in input"),input_buffer_home:_("home","Move to start of buffer in input"),input_buffer_end:_("end","Move to end of buffer in input"),input_select_buffer_home:_("shift+home","Select to start of buffer in input"),input_select_buffer_end:_("shift+end","Select to end of buffer in input"),input_delete_line:_("ctrl+shift+d","Delete line in input"),input_delete_to_line_end:_("ctrl+k","Delete to end of line in input"),input_delete_to_line_start:_("ctrl+u","Delete to start of line in input"),input_backspace:_("backspace,shift+backspace","Backspace in input"),input_delete:_("ctrl+d,delete,shift+delete","Delete character in input"),input_undo:_(B0,"Undo in input"),input_redo:_("ctrl+.,super+shift+z","Redo in input"),input_word_forward:_("alt+f,alt+right,ctrl+right","Move word forward in input"),input_word_backward:_("alt+b,alt+left,ctrl+left","Move word backward in input"),input_select_word_forward:_("alt+shift+f,alt+shift+right","Select word forward in input"),input_select_word_backward:_("alt+shift+b,alt+shift+left","Select word backward in input"),input_delete_word_forward:_("alt+d,alt+delete,ctrl+delete","Delete word forward in input"),input_delete_word_backward:_("ctrl+w,ctrl+backspace,alt+backspace","Delete word backward in input"),history_previous:_("up","Previous history item"),history_next:_("down","Next history item"),session_child_first:_("<leader>down","Go to first child session"),session_child_cycle:_("right","Go to next child session"),session_child_cycle_reverse:_("left","Go to previous child session"),session_parent:_("up","Go to parent session"),terminal_suspend:_("ctrl+z","Suspend terminal"),terminal_title_toggle:_("none","Toggle terminal title"),tips_toggle:_("<leader>h","Toggle tips on home screen"),plugin_manager:_("none","Open plugin manager dialog"),display_thinking:_("none","Toggle thinking blocks visibility")}).annotate({identifier:"KeybindsConfig"}),Q0=p(K0);var V0=w.object(Object.fromEntries(Object.keys(D.Keybinds.shape).map((O)=>[O,w.string().optional()]))).strict(),R=w.object({scroll_speed:w.number().min(0.001).optional().describe("TUI scroll speed"),scroll_acceleration:w.object({enabled:w.boolean().describe("Enable scroll acceleration")}).optional().describe("Scroll acceleration settings"),diff_style:w.enum(["auto","stacked"]).optional().describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"),mouse:w.boolean().optional().describe("Enable or disable mouse capture (default: true on desktop, false on Android/Termux)"),accessible:w.boolean().optional().describe("Screen-reader friendly mode: linear main-screen rendering, no mouse capture, reduced motion, no sound (default: false)"),reduce_motion:w.boolean().optional().describe("Disable spinners and other animations, showing static text instead (default: false)"),sound:w.boolean().optional().describe("Enable or disable sound cues (default: true)"),announcements:w.enum(["quiet","normal","verbose"]).optional().describe("Verbosity of accessible-mode screen-reader announcements: 'quiet' announces only turn boundaries, errors, and stops; 'normal' adds tool-start lines; 'verbose' adds tool-completion lines (default: normal). Errors are always announced.")}),P=w.object({$schema:w.string().optional(),theme:w.string().optional(),keybinds:V0.optional(),plugin:I.Spec.zod.array().optional(),plugin_enabled:w.record(w.string(),w.boolean()).optional()}).extend(R.shape).strict();var H=q.create({service:"tui.migrate"}),Y0="https://qitqode.com/tui.json",D0=P.shape.theme.optional(),l=w.record(w.string(),w.unknown()).optional(),H0=w.object({scroll_speed:R.shape.scroll_speed.catch(void 0),scroll_acceleration:R.shape.scroll_acceleration.catch(void 0),diff_style:R.shape.diff_style.catch(void 0)}).strip();async function k(O){let Z=await G0(O);for(let W of Z){let j=await Q.readText(W).catch((m)=>{H.warn("failed to read config for tui migration",{path:W,error:m});return});if(!j)continue;let V=[],K=b(j,V,{allowTrailingComma:!0});if(V.length||!K||typeof K!=="object"||Array.isArray(K))continue;let $=D0.safeParse("theme"in K?K.theme:void 0),J=l.safeParse("keybinds"in K?K.keybinds:void 0),N=l.safeParse("tui"in K?K.tui:void 0),Y={theme:$.success?$.data:void 0,keybinds:J.success?J.data:void 0,tui:N.success?N.data:void 0},L=Y.tui?J0(Y.tui):void 0;if(Y.theme===void 0&&Y.keybinds===void 0&&!L)continue;let U=r.join(r.dirname(W),"tui.json");if(await Q.exists(U))continue;let z={$schema:Y0};if(Y.theme!==void 0)z.theme=Y.theme;if(Y.keybinds!==void 0)z.keybinds=Y.keybinds;if(L)Object.assign(z,L);if(!await Q.write(U,JSON.stringify(z,null,2)).then(()=>!0).catch((m)=>{return H.warn("failed to write tui migration target",{from:W,to:U,error:m}),!1}))continue;if(!await A0(W,j)){H.warn("tui config migrated but source file was not stripped",{from:W,to:U});continue}H.info("migrated tui config",{from:W,to:U})}}function J0(O){let Z=H0.parse(O);if(Z.scroll_speed===void 0&&Z.diff_style===void 0&&Z.scroll_acceleration===void 0)return;return Z}async function A0(O,Z){let W=O+".tui-migration.bak";if(!(await Q.exists(W)?!0:await Q.write(W,Z).then(()=>!0).catch(($)=>{return H.warn("failed to backup source config during tui migration",{path:O,backup:W,error:$}),!1})))return!1;let K=["theme","keybinds","tui"].reduce(($,J)=>{let N=g($,[J],void 0,{formattingOptions:{insertSpaces:!0,tabSize:2}});if(!N.length)return $;return n($,N)},Z);return Q.write(O,K).then(()=>{return H.info("stripped tui keys from server config",{path:O,backup:W}),!0}).catch(($)=>{return H.warn("failed to strip legacy tui keys from server config",{path:O,backup:W,error:$}),!1})}async function G0(O){let Z=[...G(T.Path.config,"qitqode"),...await Q.findUp(["qitqode.json","qitqode.jsonc"],O.cwd,void 0,{rootFirst:!0})];for(let j of A(O.directories))Z.push(...G(j,"qitqode"));if(X.QITQODE_CONFIG)Z.push(X.QITQODE_CONFIG);return(await Promise.all(A(Z).map(async(j)=>{return await Q.exists(j)?j:void 0}))).filter((j)=>!!j)}var f=v.Reference("CurrentWorkingDirectory",{defaultValue:()=>process.cwd()});var u=q.create({service:"tui.config"}),W0=P;class C extends v.Service()("@qitqode/TuiConfig"){}function N0(O,Z){if(Q.contains(Z.directory,O))return"local";return"global"}function U0(O){let Z={...O};if(!("tui"in Z))return Z;if(!s(Z.tui))return delete Z.tui,Z;let W=Z.tui;return delete Z.tui,{...W,...Z}}async function M0(O,Z){if(!O.plugin)return O;for(let W=0;W<O.plugin.length;W++)O.plugin[W]=await I.resolvePluginSpec(O.plugin[W],Z);return O}async function S(O,Z,W){let j=await z0(Z);if(O.result=c(O.result,j),!j.plugin?.length)return;let V=N0(Z,W),K=I.deduplicatePluginOrigins([...O.result.plugin_origins??[],...j.plugin.map(($)=>({spec:$,scope:V,source:Z}))]);O.result.plugin=K.map(($)=>$.spec),O.result.plugin_origins=K}var I0=B.fn("TuiConfig.loadState")(function*(O){let Z=yield*O0(O.directory);yield*B.promise(()=>k({directories:Z,cwd:O.directory}));let W=X.QITQODE_DISABLE_PROJECT_CONFIG?[]:yield*_0("tui",O.directory),j={result:{}};for(let $ of G(T.Path.config,"tui"))yield*B.promise(()=>S(j,$,O)).pipe(B.orDie);if(X.QITQODE_TUI_CONFIG){let $=X.QITQODE_TUI_CONFIG;yield*B.promise(()=>S(j,$,O)).pipe(B.orDie),u.debug("loaded custom tui config",{path:$})}for(let $ of W)yield*B.promise(()=>S(j,$,O)).pipe(B.orDie);let V=A(Z).filter(($)=>$.endsWith(".qitqode")||$===X.QITQODE_CONFIG_DIR);for(let $ of V){if(!$.endsWith(".qitqode")&&$!==X.QITQODE_CONFIG_DIR)continue;for(let J of G($,"tui"))yield*B.promise(()=>S(j,J,O)).pipe(B.orDie)}let K={...j.result.keybinds??{}};if(process.platform==="win32")K.terminal_suspend="none",K.input_undo??=A(["ctrl+z",...D.Keybinds.shape.input_undo.parse(void 0).split(",")]).join(",");return j.result.keybinds=D.Keybinds.parse(K),{config:j.result,dirs:j.result.plugin?.length?V:[]}}),$0=o.effect(C,B.gen(function*(){let O=yield*f,Z=yield*x.Service,W=yield*I0({directory:O}),j=yield*B.forEach(W.dirs,($)=>Z.install($,{add:[{name:"@qitqode/plugin",version:y?void 0:t}]}).pipe(B.forkScoped),{concurrency:"unbounded"}),V=B.fn("TuiConfig.get")(()=>B.succeed(W.config)),K=B.fn("TuiConfig.waitForDependencies")(()=>B.forEach(j,a.join,{concurrency:"unbounded"}).pipe(B.ignore(),B.asVoid));return C.of({get:V,waitForDependencies:K})}).pipe(B.withSpan("TuiConfig.layer"))),j0=$0.pipe(o.provide(x.defaultLayer),o.provide(d.defaultLayer)),{runPromise:w0}=i(C,j0);async function R0(){await w0((O)=>O.waitForDependencies())}async function C0(){return w0((O)=>O.get())}async function z0(O){let Z=await Z0(O);if(!Z)return{};return P0(Z,O).catch((W)=>{return u.warn("failed to load tui config",{path:O,error:W}),{}})}async function P0(O,Z){return e.substitute({text:O,type:"path",path:Z,missing:"empty"}).then((W)=>E.jsonc(W,Z)).then((W)=>{if(!s(W))return{};return E.schema(W0,U0(W),Z)}).then((W)=>M0(W,Z)).catch((W)=>{return u.warn("invalid tui config",{path:Z,error:W}),{}})}
3
- export{W0 as s,C as t,$0 as u,j0 as v,R0 as w,C0 as x,h as y};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";function o(){return(e,n)=>e.toJsonSchema(n)}export{o as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{pP as t}from"./chunk-fa03gsff.js";var e=await import("./chunk-cxbkhs5y.js",{with:{type:"file"}}),a=e.default;export{a as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{cr as a,dr as b}from"./chunk-ng85b73s.js";import"./chunk-fa03gsff.js";export{a as generateSecret,b as generateCodeChallengeFromVerifier};
@@ -1,11 +0,0 @@
1
- // @bun
2
- import{g as K}from"./chunk-2bbvvh0d.js";import{i as $}from"./chunk-f72j5yx8.js";import{F as O,G as v}from"./chunk-zbvf09bm.js";import{Od as V}from"./chunk-wmmck56g.js";import{Sf as j}from"./chunk-ntmn6epc.js";import{Ag as w,pg as D,qg as L,rg as G,sg as W,wg as Y,zg as _}from"./chunk-cckshvkb.js";import{qh as T}from"./chunk-0jv8r99k.js";import{Dj as Z}from"./chunk-3f6t3wde.js";import{$H as H}from"./chunk-meaa7wrs.js";var X="forgewise",S=(J,z=process.env)=>J.trim()||z.QLEX_API_KEY?.trim()||"",A=(J)=>H.gen(function*(){let z=J.trim();if(!z)yield*H.sync(()=>{j.println(j.Style.TEXT_DANGER+"Error: API key cannot be empty."+j.Style.TEXT_NORMAL)}),process.exit(1);yield*(yield*Z.Service).set(X,{type:"api",key:z,metadata:{method:"api-key"}}),yield*$(j.Style.TEXT_SUCCESS+"Signed in with API key."+j.Style.TEXT_NORMAL)}).pipe(H.withSpan("forgewise.login.apikey"));async function R(){let J=!G();try{return await _({tryOpen:J,onCode:(z)=>{if(process.stdout.write(`
3
- `),process.stdout.write(" To sign in, open: "+z.verificationUri+`
4
- `),process.stdout.write(" and enter code: "+z.userCode+`
5
- `),z.verificationUriComplete)process.stdout.write(`
6
- Or open this link directly:
7
- `+z.verificationUriComplete+`
8
- `);process.stdout.write(`
9
- Waiting for approval... (ctrl+c to cancel)
10
- `)}})}catch(z){if(z instanceof L)return w();throw z}}var x=()=>H.gen(function*(){let J=yield*H.tryPromise({try:()=>W(),catch:(M)=>M}).pipe(H.catch((M)=>H.succeed(M)));if(J instanceof Error){let M=J;if(M instanceof D)yield*H.sync(()=>{j.println(j.Style.TEXT_DANGER+"Error: "+M.message+j.Style.TEXT_NORMAL),process.exit(1)});throw M}let z=yield*H.tryPromise({try:()=>R(),catch:(M)=>M});if(z instanceof Error)yield*H.sync(()=>{j.println(j.Style.TEXT_DANGER+"Login failed: "+z.message+j.Style.TEXT_NORMAL)}),process.exit(1);yield*(yield*Z.Service).set(X,v(z,{rotateRefreshToken:!0})),yield*$(j.Style.TEXT_SUCCESS+`Signed in as ${z.name||z.email} (${z.email})`+j.Style.TEXT_NORMAL)}).pipe(H.withSpan("forgewise.login")),d=()=>H.gen(function*(){let J=yield*Z.Service;if(!(yield*J.get(X))){yield*H.sync(()=>j.println("Not signed in to Forgewise."));return}yield*J.remove(X),yield*$("Signed out from Forgewise.")}).pipe(H.withSpan("forgewise.logout")),h=()=>H.gen(function*(){if((yield*K())==="revoked")return;let z=yield*(yield*Z.Service).get(X);if(!z||z.type!=="api"){yield*H.sync(()=>j.println("Forgewise: Not signed in"));return}let N=z.metadata??{};if(N.method==="api-key"){yield*H.sync(()=>j.println(j.Style.TEXT_SUCCESS+"Forgewise: "+j.Style.TEXT_NORMAL+"Signed in with API key"));return}let M=N.email??"(unknown)",P=N.name??"",k=N.sub,q=Number(N.expires_at??0),Q=q>0&&Date.now()>q,b=P?`${P} (${M})`:M,F=Q?j.Style.TEXT_WARNING+" [token expired \u2014 run `qitqode auth login` to refresh]"+j.Style.TEXT_NORMAL:j.Style.TEXT_DIM+` (expires ${new Date(q).toLocaleString()})`+j.Style.TEXT_NORMAL,C="";if(!Q&&k){let B=yield*H.tryPromise({try:()=>Y(z.key),catch:()=>null}).pipe(H.orElseSucceed(()=>null));if(B)C=j.Style.TEXT_DIM+" | "+j.Style.TEXT_NORMAL+"Qredits: "+j.Style.TEXT_HIGHLIGHT_BOLD+O(B.balance)+j.Style.TEXT_NORMAL;else C=j.Style.TEXT_DIM+" | "+j.Style.TEXT_NORMAL+j.Style.TEXT_DIM+"Qredits: unavailable"+j.Style.TEXT_NORMAL}yield*H.sync(()=>j.println(j.Style.TEXT_SUCCESS+"Forgewise: "+j.Style.TEXT_NORMAL+b+F+C))}).pipe(H.withSpan("forgewise.status")),E=V({command:"auth <command>",describe:"Sign in or out of Forgewise",builder:(J)=>J.command(V({command:"login",describe:"Sign in with Forgewise Accounts (opens browser) or a Qlex API key",builder:(z)=>z.option("api-key",{type:"string",describe:"Sign in by pasting a Qlex API key instead of using the browser (defaults to $QLEX_API_KEY when the flag is passed without a value)"}),async handler(z){j.empty();let N=z.apiKey;if(N!==void 0){let M=S(N);await T.runPromise(A(M));return}await T.runPromise(x())}})).command(V({command:"logout",describe:"Sign out from Forgewise",builder:(z)=>z,async handler(){j.empty(),await T.runPromise(d())}})).command(V({command:"status",describe:"Show current Forgewise sign-in status",builder:(z)=>z,async handler(){j.empty(),await T.runPromise(h())}})).demandCommand(),async handler(){}});
11
- export{S as a,A as b,x as c,d,h as e,E as f};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var t=Object.fromEntries([]);export{t as modules};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var t="./injections-73j83es3.scm";export{t as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{gf as a,hf as b,if as c,jf as d,kf as e,lf as f}from"./chunk-zy0zn8yx.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-fa03gsff.js";export{f as createOpenAICompatible,e as VERSION,d as OpenAICompatibleImageModel,c as OpenAICompatibleEmbeddingModel,b as OpenAICompatibleCompletionLanguageModel,a as OpenAICompatibleChatLanguageModel};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{bt as a,ct as b}from"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-fa03gsff.js";export{a as Path,b as Global};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{kP as a}from"./chunk-gvj8qg7x.js";import"./chunk-fa03gsff.js";export default a();
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{ie as a,je as b,ke as c,le as d,me as e,ne as f,oe as g}from"./chunk-n9gzj085.js";import"./chunk-a2ty2e0g.js";import"./chunk-78wt9ad8.js";import"./chunk-60dxyp37.js";import"./chunk-fa03gsff.js";export{g as fromEnv,c as ENV_SESSION,b as ENV_SECRET,a as ENV_KEY,d as ENV_EXPIRATION,e as ENV_CREDENTIAL_SCOPE,f as ENV_ACCOUNT_ID};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var e="./libopentui-xtk56e94.so";export{e as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{et as a,ft as b,gt as c,ht as d,it as e,jt as f,kt as g,lt as h}from"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-fa03gsff.js";export{g as redactValue,e as init,f as flush,d as file,b as enabled,h as create,a as Level,c as Default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{lf as h}from"./chunk-zy0zn8yx.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-fa03gsff.js";var v=(q)=>{return h({baseURL:"https://gateway.ai.cloudflare.com/v1/compat",name:"Unified",...q||{}})},x=v();export{x as unified,v as createUnified};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{pP as t}from"./chunk-fa03gsff.js";var e=await import("./chunk-s79zd152.js",{with:{type:"file"}}),a=e.default;export{a as default};
@@ -1,7 +0,0 @@
1
- // @bun
2
- import{H as I}from"./chunk-jj7wrfty.js";import{I as i,K as r}from"./chunk-43xq4p51.js";import{td as c}from"./chunk-haw1jzwb.js";import{ud as g}from"./chunk-hyr049cr.js";import{vd as y}from"./chunk-y2r3zker.js";import{wd as k}from"./chunk-b54t7ycj.js";import{xd as A}from"./chunk-fd1vbz1f.js";import{Cd as w,Dd as u,Fd as W,Gd as L,Hd as T,Jd as p,Kd as o,Ld as b,Md as P}from"./chunk-9g05wsae.js";import"./chunk-x1dfc7qd.js";import{Od as z}from"./chunk-wmmck56g.js";import{Sf as Y}from"./chunk-ntmn6epc.js";import{qh as M}from"./chunk-0jv8r99k.js";import"./chunk-th189x63.js";import"./chunk-k6eyc1wv.js";import"./chunk-q6x5bmc3.js";import"./chunk-n1m5qdf5.js";import"./chunk-zeh3mjgp.js";import"./chunk-prrrw8t8.js";import"./chunk-tz8qhbk9.js";import"./chunk-k19zvbzh.js";import{Dj as R,Sk as a,fl as s}from"./chunk-3f6t3wde.js";import{rl as V}from"./chunk-b5h8vd5n.js";import{Pl as n}from"./chunk-jee9y4t0.js";import"./chunk-50aznc8e.js";import"./chunk-c4x99ayd.js";import"./chunk-73d0dy03.js";import"./chunk-ha5qct06.js";import"./chunk-w8xaw2dv.js";import"./chunk-tq258v8s.js";import"./chunk-ds162xgb.js";import"./chunk-jfy6bfvv.js";import"./chunk-2p6w3w8f.js";import"./chunk-98nh88th.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-2qy62cv4.js";import"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-ng85b73s.js";import"./chunk-351wfvhp.js";import"./chunk-hmm1m733.js";import"./chunk-2bxy8zm1.js";import"./chunk-qq9pvscd.js";import"./chunk-3nc9wy1m.js";import"./chunk-r8ddb02d.js";import"./chunk-dhvwrrqx.js";import"./chunk-56cty7nr.js";import"./chunk-thbjhgw0.js";import{ct as l}from"./chunk-p20ft5mj.js";import{vt as d}from"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import{Mt as v}from"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import{$H as O}from"./chunk-meaa7wrs.js";import"./chunk-0ddhkapd.js";import"./chunk-gvj8qg7x.js";import{pP as H1}from"./chunk-fa03gsff.js";import f from"path";import{pathToFileURL as J1}from"url";import Q1 from"os";import{access as S1,readdir as X1}from"fs/promises";var q1={en:A,zh:k,ja:c,fr:y,ru:g},B1=q1[I()]??A;function U($,B){let J=B1[$]??A[$]??$;if(!B)return J;return J.replace(/\{(\w+)\}/g,(X,H)=>(H in B)?String(B[H]):`{${H}}`)}import{text as Z1}from"stream/consumers";var D=($,B)=>M.runPromise(O.gen(function*(){yield*(yield*R.Service).set($,B)}));async function t(){let $=await p({message:"Enter your API key",validate:(B)=>B&&B.length>0?void 0:"Required"});if(w($))throw new Y.CancelledError;return $}async function h($,B){let J=$.provider??B;if("refresh"in $){let{type:X,provider:H,refresh:Z,access:j,expires:q,metadata:S,...G}=$;await D(J,{type:"oauth",refresh:Z,access:j,expires:q,...G})}if("key"in $)await D(J,{type:"api",key:$.key,...$.metadata?{metadata:$.metadata}:{}})}async function x($,B,J){let X=0;if(J){let j=$.auth.methods.findIndex((q)=>q.label.toLowerCase()===J.toLowerCase());if(j===-1)W.error(`Unknown method "${J}" for ${B}. Available: ${$.auth.methods.map((q)=>q.label).join(", ")}`),process.exit(1);X=j}else if($.auth.methods.length>1){let j=await b({message:"Login method",options:$.auth.methods.map((q,S)=>({label:q.label,value:S.toString()}))});if(w(j))throw new Y.CancelledError;X=parseInt(j)}let H=$.auth.methods[X];await new Promise((j)=>setTimeout(j,10));let Z={};if(H.prompts)for(let j of H.prompts){if(j.when){let q=Z[j.when.key];if(q===void 0)continue;if(!(j.when.op==="eq"?q===j.when.value:q!==j.when.value))continue}if(j.condition&&!j.condition(Z))continue;if(j.type==="select"){let q=await b({message:j.message,options:j.options});if(w(q))throw new Y.CancelledError;Z[j.key]=q}else{let q=await P({message:j.message,placeholder:j.placeholder,validate:j.validate?(S)=>j.validate(S??""):void 0});if(w(q))throw new Y.CancelledError;Z[j.key]=q}}if(H.type==="oauth"){let j=await H.authorize(Z);if(j.url)W.info("Go to: "+j.url);if(j.method==="auto"){if(j.instructions)W.info(j.instructions);let q=o();q.start("Waiting for authorization...");let S=await j.callback();if(S.type==="failed")q.stop("Failed to authorize",1);if(S.type==="success")await h(S,B),q.stop("Login successful")}if(j.method==="code"){let q=await P({message:"Paste the authorization code here: ",validate:(G)=>G&&G.length>0?void 0:"Required"});if(w(q))throw new Y.CancelledError;let S=await j.callback(q);if(S.type==="failed")W.error("Failed to authorize");if(S.type==="success")await h(S,B),W.success("Login successful")}return T("Done"),!0}if(H.type==="api"){if(H.authorize){let j=await t(),q=await H.authorize(Z);if(q.type==="failed")W.error("Failed to authorize");if(q.type==="success"){let S=q.provider??B;await D(S,{type:"api",key:q.key??j}),W.success("Login successful")}return T("Done"),!0}}return!1}function G1($){let B=new Set,J=[];for(let X of $.hooks){if(!X.auth)continue;let H=X.auth.provider;if(B.has(H))continue;if(B.add(H),Object.hasOwn($.existingProviders,H))continue;if($.disabled.has(H))continue;if($.enabled&&!$.enabled.has(H))continue;J.push({id:H,name:$.providerNames[H]??H})}return J}function m($){let B=$?.loginExtension;if(!B||typeof B!=="object")return;let J=B;if(typeof J.id!=="string"||typeof J.run!=="function")return;return J}async function W1(){try{let J=await import("./chunk-6rak9ez9.js");for(let X of Object.values(J.modules??{})){let H=m(X);if(H)return H}}catch{}let $=f.join(import.meta.dir,"..","..","ext");await S1($).catch(()=>{return});let B=await X1($).catch(()=>[]);for(let J of B.filter((X)=>X.endsWith(".ts")&&!X.endsWith(".d.ts")))try{let X=m(await import(J1(f.join($,J)).href));if(X)return X}catch{}return}var l1=z({command:"providers",aliases:["auth"],describe:"manage AI providers and credentials",builder:($)=>$.command(Y1).command(_1).command(F1).command(K1).demandCommand(),async handler(){}}),Y1=z({command:"list",aliases:["ls"],describe:"list providers and credentials",async handler($){Y.empty();let B=f.join(l.Path.data,"auth.json"),J=Q1.homedir(),X=B===J||B.startsWith(J+f.sep)?"~"+B.slice(J.length):B;L(`Credentials ${Y.Style.TEXT_DIM}${X}`);let H=await M.runPromise(O.gen(function*(){let q=yield*R.Service;return Object.entries(yield*q.all())})),Z=await V.get();for(let[q,S]of H){let G=Z[q]?.name||q;W.info(`${G} ${Y.Style.TEXT_DIM}${S.type}`)}T(`${H.length} credentials`);let j=[];for(let[q,S]of Object.entries(Z))for(let G of S.env)if(process.env[G])j.push({provider:S.name||q,envVar:G});if(j.length>0){Y.empty(),L("Environment");for(let{provider:q,envVar:S}of j)W.info(`${q} ${Y.Style.TEXT_DIM}${S}`);T(`${j.length} environment variable`+(j.length===1?"":"s"))}}}),_1=z({command:"login [url]",describe:"log in to a provider",builder:($)=>$.positional("url",{describe:"qitqode auth provider",type:"string"}).option("provider",{alias:["p"],describe:"provider id or name to log in to (skips provider selection)",type:"string"}).option("method",{alias:["m"],describe:"login method label (skips method selection)",type:"string"}),async handler($){await n.provide({directory:process.cwd(),async fn(){if(Y.empty(),L("Add credential"),$.url){let Q=$.url.replace(/\/+$/,""),_=await fetch(`${Q}/.well-known/opencode`).then((j1)=>j1.json());W.info(`Running \`${_.auth.command.join(" ")}\``);let F=d.spawn(_.auth.command,{stdout:"pipe"});if(!F.stdout){W.error("Failed"),T("Done");return}let[C,N]=await Promise.all([F.exited,Z1(F.stdout)]);if(C!==0){W.error("Failed"),T("Done");return}await D(Q,{type:"wellknown",key:_.auth.env,token:N.trim()}),W.success("Logged into "+Q),T("Done");return}await V.refresh(!0).catch(()=>{});let B=await M.runPromise(s.Service.use((Q)=>Q.get())),J=new Set(B.disabled_providers??[]),X=B.enabled_providers?new Set(B.enabled_providers):void 0,H=await V.get().then((Q)=>{let _={};for(let[F,C]of Object.entries(Q))if((X?X.has(F):!0)&&!J.has(F))_[F]=C;return _}),Z=await M.runPromise(O.gen(function*(){return yield*(yield*a.Service).list()})),j=i,q=G1({hooks:Z,existingProviders:H,disabled:J,enabled:X,providerNames:Object.fromEntries(Object.entries(B.provider??{}).map(([Q,_])=>[Q,_.name]))}),S=[...r(v(H),j,(Q)=>({openai:"ChatGPT Plus/Pro or API key"})[Q.id]),...q.map((Q)=>({label:Q.name,value:Q.id,hint:"plugin"}))],G=await W1(),e=G?[G.id,...G.aliases??[]]:[],K;if(G&&$.provider&&e.includes($.provider)){await G.run();return}else if($.provider){let Q=$.provider,_=S.find((N)=>N.value===Q),F=S.find((N)=>N.label.toLowerCase()===Q.toLowerCase()),C=_??F;if(!C)W.error(`Unknown provider "${Q}"`),process.exit(1);K=C.value}else{let Q=await b({message:U("cli.providers.select"),options:[...G?.menu?[{label:G.menu.label,value:G.id,hint:G.menu.hint}]:[],{label:U("cli.providers.other"),value:"__other__"}]});if(w(Q))throw new Y.CancelledError;if(G&&Q===G.id){await G.run();return}let _=await u({message:U("cli.providers.select"),maxItems:8,options:[...S,{value:"other",label:"Other"}]});if(w(_))throw new Y.CancelledError;K=_}let E=Z.findLast((Q)=>Q.auth?.provider===K);if(E&&E.auth){if(await x({auth:E.auth},K,$.method))return}if(K==="other"){let Q=await P({message:"Enter provider id",validate:(F)=>F&&F.match(/^[0-9a-z-]+$/)?void 0:"a-z, 0-9 and hyphens only"});if(w(Q))throw new Y.CancelledError;K=Q.replace(/^@ai-sdk\//,"");let _=Z.findLast((F)=>F.auth?.provider===K);if(_&&_.auth){if(await x({auth:_.auth},K,$.method))return}W.warn(`This only stores a credential for ${K} - you will need configure it in qitqode.json, check the docs for examples.`)}if(K==="amazon-bedrock")W.info(`Amazon Bedrock authentication priority:
3
- 1. Bearer token (AWS_BEARER_TOKEN_BEDROCK or /connect)
4
- 2. AWS credential chain (profile, access keys, IAM roles, EKS IRSA)
5
-
6
- Configure via qitqode.json options (profile, region, endpoint) or
7
- AWS environment variables (AWS_PROFILE, AWS_REGION, AWS_ACCESS_KEY_ID, AWS_WEB_IDENTITY_TOKEN_FILE).`);if(K==="opencode")W.info("Create an api key at https://opencode.ai/auth");if(K==="vercel")W.info("You can create an api key at https://vercel.link/ai-gateway-token");if(["cloudflare","cloudflare-ai-gateway"].includes(K))W.info("Cloudflare AI Gateway can be configured with CLOUDFLARE_GATEWAY_ID, CLOUDFLARE_ACCOUNT_ID, and CLOUDFLARE_API_TOKEN environment variables. Read more: https://opencode.ai/docs/providers/#cloudflare-ai-gateway");let $1=await t();await D(K,{type:"api",key:$1}),T("Done")}})}}),F1=z({command:"logout",describe:"log out from a configured provider",async handler($){Y.empty();let B=await M.runPromise(O.gen(function*(){let Z=yield*R.Service;return Object.entries(yield*Z.all())}));if(L("Remove credential"),B.length===0){W.error("No credentials found");return}let J=await V.get(),X=await b({message:"Select provider",options:B.map(([Z,j])=>({label:(J[Z]?.name||Z)+Y.Style.TEXT_DIM+" ("+j.type+")",value:Z}))});if(w(X))throw new Y.CancelledError;let H=X;await M.runPromise(O.gen(function*(){yield*(yield*R.Service).remove(H)})),T("Logout successful")}}),K1=z({command:"whoami",describe:"show current logged-in user info",async handler($){Y.empty(),L("Current auth"),W.info("Run `qode auth list` to see all authenticated providers."),T("")}});export{G1 as resolvePluginProviders,K1 as ProvidersWhoamiCommand,F1 as ProvidersLogoutCommand,_1 as ProvidersLoginCommand,Y1 as ProvidersListCommand,l1 as ProvidersCommand};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var k="./opentui-drfwd3v7.dll";export{k as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Vd as a}from"./chunk-jyh2g13j.js";import"./chunk-a2ty2e0g.js";import"./chunk-78wt9ad8.js";import"./chunk-60dxyp37.js";import"./chunk-fa03gsff.js";export{a as fromIni};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";function n(){return(e)=>JSON.parse(JSON.stringify(e.Type()))}export{n as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Yq as a}from"./chunk-2qy62cv4.js";import"./chunk-fa03gsff.js";export default a();
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{$l as M,Vl as A,Wl as e,Xl as oo,Yl as io}from"./chunk-50aznc8e.js";import{hp as Oo}from"./chunk-w8xaw2dv.js";import{rp as Qo}from"./chunk-jfy6bfvv.js";import{Or as F,Pr as s,Vr as q,Wr as t}from"./chunk-3nc9wy1m.js";import{$s as E,Gs as m,Hs as k,_s as Zo,ct as _o,dt as y,mt as T}from"./chunk-p20ft5mj.js";import{Gt as P}from"./chunk-b5x3zghc.js";import{It as o}from"./chunk-tk6gjy9d.js";import{$H as V,AO as v,BN as U,TF as I,jD as r,yF as B}from"./chunk-meaa7wrs.js";import{lP as Yo,nP as a,pP as zo}from"./chunk-fa03gsff.js";var Fo={};a(Fo,{stopRefresh:()=>vo,startRefresh:()=>Io,refresh:()=>u,readModelCatalogResponse:()=>yo,get:()=>So,Provider:()=>Lo,Model:()=>Bo,MODEL_CATALOG_MAX_BYTES:()=>$o,Data:()=>D});import Do from"path";var z={};a(z,{layer:()=>bo,isPreview:()=>qo,isNewerVersion:()=>no,isLocal:()=>Go,getReleaseType:()=>wo,defaultLayer:()=>Uo,UpgradeFailedError:()=>N,USER_AGENT:()=>Ko,Service:()=>L,Installation:()=>z,Info:()=>Ho,Event:()=>Ro});var f=(i)=>i.pipe(q.retryTransient({retryOn:"errors-and-responses",times:2,schedule:I.exponential(200).pipe(I.jittered)}));import c from"path";var x=Yo(Oo(),1);var l=T.create({service:"installation"}),G="@qitqode/cli";function no(i,n){if(!x.default.valid(i)||!x.default.valid(n))return!1;return x.default.gt(n,i)}var Ro={Updated:M.define("installation.updated",o.object({version:o.string()})),UpdateAvailable:M.define("installation.update-available",o.object({version:o.string()}))};function wo(i,n){if(!no(i,n))throw Error(`Version ${n} is not newer than ${i}`);let j=x.default.major(i),Z=x.default.minor(i),$=x.default.major(n),_=x.default.minor(n);if($>j)return"major";if(_>Z)return"minor";return"patch"}var Ho=o.object({version:o.string(),latest:o.string()}).meta({ref:"InstallationInfo"}),Ko=`qitqode/${k}/${m}/${y.QITQODE_CLIENT}`;function qo(){return k!=="latest"}function Go(){return k==="local"}class N extends U.TaggedErrorClass()("UpgradeFailedError",{stderr:U.String}){}var No=U.Struct({version:U.String});class L extends r.Service()("@qitqode/Installation"){}var bo=B.effect(L,V.gen(function*(){let i=yield*q.HttpClient,n=q.filterStatusOk(f(i)),j=yield*A.ChildProcessSpawner,Z=(J,b)=>e.make(J[0],J.slice(1),{cwd:b?.cwd,env:b?.env,extendEnv:!0}),$=V.fnUntraced(function*(J){let b=yield*io(j,J);return{code:b.code,stdout:b.text,stderr:b.stderr}},V.scoped),_=V.fnUntraced(function*(J,b){let Q=yield*j.spawn(Z(J,b)),W=yield*v.mkString(v.decodeText(Q.stdout));return yield*Q.exitCode,W},V.scoped,V.catch(()=>V.succeed(""))),O=V.fnUntraced(function*(J,b){return yield*$(Z(J,b))},V.catch(()=>V.succeed({code:A.ExitCode(1),stdout:"",stderr:""}))),K=V.fn("Installation.method")(function*(){if(process.execPath.includes(c.join(".qitqode","bin")))return"curl";if(process.execPath.includes(c.join(".local","bin")))return"curl";let J=process.execPath.toLowerCase(),b=[{name:"npm",command:()=>_(["npm","list","-g","--depth=0"])},{name:"pnpm",command:()=>_(["pnpm","list","-g","--depth=0"])},{name:"bun",command:()=>_(["bun","pm","ls","-g"])}];b.sort((Q,W)=>{let w=J.includes(Q.name),p=J.includes(W.name);if(w&&!p)return-1;if(!w&&p)return 1;return 0});for(let Q of b)if((yield*Q.command()).includes(G))return Q.name;return"unknown"}),X=V.fn("Installation.latest")(function*(J){let b=J||(yield*K());if(b==="curl"){let W=(yield*_(["curl","-sI","https://github.com/qitqode/qitqode/releases/latest"])).match(/^location:.*\/tag\/v([0-9][^\s/]*)/im);if(W)return W[1];return yield*V.die(Error("failed to resolve latest version from GitHub releases redirect"))}if(b==="npm"||b==="bun"||b==="pnpm"){let W=(yield*_(["npm","config","get","registry"])).trim()||"https://registry.npmjs.org",w=W.endsWith("/")?W.slice(0,-1):W,p=yield*n.execute(F.get(`${w}/${encodeURIComponent(G)}/${k}`).pipe(F.acceptJson));return(yield*s.schemaBodyJson(No)(p)).version}return l.warn("unsupported update channel, skipping",{method:b}),yield*V.die(Error(`unsupported update channel: ${b}`))},V.orDie),R=V.fn("Installation.upgrade")(function*(J,b){let W=yield*(()=>{if(J==="npm")return O(["npm","install","-g",`${G}@${b}`]);if(J==="pnpm")return O(["pnpm","install","-g",`${G}@${b}`]);if(J==="bun")return O(["bun","install","-g",`${G}@${b}`]);if(J==="curl")return new N({stderr:"Self-update is unavailable for script installations; reinstall QitQode from a trusted package."});return new N({stderr:`Unknown method: ${J}`})})();if(W.code!==0){let w=W.stderr||"";yield*new N({stderr:w})}l.info("upgraded",{method:J,target:b,stdout:W.stdout,stderr:W.stderr}),yield*_([process.execPath,"--version"])});return L.of({info:V.fn("Installation.info")(function*(){return{version:m,latest:yield*X()}}),method:K,latest:X,upgrade:R})})),Uo=bo.pipe(B.provide(t.layer),B.provide(oo));var C=o.lazy(()=>o.union([o.string(),o.number(),o.boolean(),o.null(),o.array(C),o.record(o.string(),C)])),jo=o.object({input:o.number(),output:o.number(),cache_read:o.number().optional(),cache_write:o.number().optional(),context_over_200k:o.object({input:o.number(),output:o.number(),cache_read:o.number().optional(),cache_write:o.number().optional()}).optional()}),d=o.object({id:o.string(),name:o.string(),family:o.string().optional(),release_date:o.string(),attachment:o.boolean(),reasoning:o.boolean(),temperature:o.boolean().optional(),tool_call:o.boolean(),interleaved:o.union([o.literal(!0),o.object({field:o.enum(["reasoning_content","reasoning_details"])}).strict()]).optional(),cost:jo.optional(),limit:o.object({context:o.number(),input:o.number().optional(),output:o.number()}),modalities:o.object({input:o.array(o.enum(["text","audio","image","video","pdf"])),output:o.array(o.enum(["text","audio","image","video","pdf"]))}).optional(),experimental:o.object({modes:o.record(o.string(),o.object({cost:jo.optional(),provider:o.object({body:o.record(o.string(),C).optional(),headers:o.record(o.string(),o.string()).optional()}).optional()})).optional()}).optional(),status:o.enum(["alpha","beta","deprecated"]).optional(),provider:o.object({npm:o.string().optional(),api:o.string().optional()}).optional()}),g=o.object({api:o.string().optional(),name:o.string(),env:o.array(o.string()),id:o.string(),npm:o.string().optional(),models:o.record(o.string(),d)});var h=T.create({service:"models.dev"}),Jo=xo(),Y=Do.join(_o.Path.cache,Jo==="https://models.dev"?"models.json":`models-${Zo.fast(Jo)}.json`),Po=300000,$o=8388608,H,po=o.record(o.string(),g),Bo=d,Lo=g;function xo(){return y.QITQODE_MODELS_URL||"https://models.dev"}function To(){return Date.now()-Number(P.stat(Y)?.mtimeMs??0)<Po}function Vo(i){return!i&&To()}function S(i){let n=po.parse(typeof i==="string"?JSON.parse(i):i);for(let[j,Z]of Object.entries(n))if(Z.id!==j)throw Error(`Invalid model provider: ${j}`);return n}async function Wo(i){let n=await P.readJson(i).catch(()=>{return});if(!n)return;try{return S(n)}catch(j){h.warn("Ignoring invalid model catalog cache",{file:i,error:j});return}}async function yo(i,n,j=$o){let Z=i.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase();if(Z!=="application/json"&&!Z?.endsWith("+json"))throw Error(`Invalid model catalog content type: ${Z||"missing"}`);let $=Number(i.headers.get("content-length"));if(Number.isFinite($)&&$>j)throw Error("Model catalog response is too large");if(!i.body)return"";let _=i.body.getReader(),O=()=>void _.cancel(n.reason);n.addEventListener("abort",O,{once:!0});let K=new Uint8Array(j),X=0;try{for(;;){let R=await _.read();if(R.done)break;if(X+=R.value.byteLength,X>j)throw await _.cancel(),Error("Model catalog response is too large");K.set(R.value,X-R.value.byteLength)}}finally{n.removeEventListener("abort",O)}return new TextDecoder().decode(K.subarray(0,X))}var Xo=async()=>{let i=AbortSignal.timeout(1e4),n=await fetch(`${xo()}/api.json`,{headers:{"User-Agent":z.USER_AGENT},signal:i});if(!n.ok)return;let j=S(await yo(n,i));return JSON.stringify(j)},D=Qo(async()=>{let i=await Wo(y.QITQODE_MODELS_PATH??Y);if(i)return i;let n=await import("./chunk-zt8kghd2.js").then((j)=>S(j.snapshot)).catch(()=>{return});if(n)return n;if(y.QITQODE_DISABLE_MODELS_FETCH)return{};return E.withLock(`models-dev:${Y}`,async()=>{let j=await Wo(y.QITQODE_MODELS_PATH??Y);if(j)return j;let Z=await Xo();if(Z)return await P.write(Y,Z).catch(($)=>{h.error("Failed to write models cache",{error:$})}),S(Z);return{}})});async function So(){return D()}async function u(i=!1){if(Vo(i))return D.reset();await E.withLock(`models-dev:${Y}`,async()=>{if(Vo(i))return D.reset();let n=await Xo();if(!n)return;await P.write(Y,n),D.reset()}).catch((n)=>{h.error("Failed to fetch models.dev",{error:n})})}function Io(){if(H||y.QITQODE_DISABLE_MODELS_FETCH||process.argv.includes("--get-yargs-completions"))return;u(),H=setInterval(async()=>{await u()},3600000),H.unref()}function vo(){if(!H)return;clearInterval(H),H=void 0}
3
- export{f as gl,z as hl,$o as il,Bo as jl,Lo as kl,yo as ll,D as ml,So as nl,u as ol,Io as pl,vo as ql,Fo as rl};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Yd as a}from"./chunk-db7hykjs.js";import"./chunk-7yw60h8j.js";import"./chunk-a2ty2e0g.js";import"./chunk-78wt9ad8.js";import"./chunk-60dxyp37.js";import"./chunk-fa03gsff.js";export{a as fromHttp};
@@ -1,7 +0,0 @@
1
- // @bun
2
- import{a as VB,b as XB}from"./chunk-6pe3xzkk.js";import"./chunk-2bbvvh0d.js";import"./chunk-f72j5yx8.js";import{z as BB}from"./chunk-39h565hz.js";import{A as t,C as r}from"./chunk-3w60y2x5.js";import{G as e}from"./chunk-zbvf09bm.js";import{L as JB}from"./chunk-hnzs3ywg.js";import"./chunk-9g05wsae.js";import"./chunk-x1dfc7qd.js";import{Od as s}from"./chunk-wmmck56g.js";import{Lf as p,Mf as T,Nf as R,Of as g}from"./chunk-18xhxdsh.js";import{Sf as H}from"./chunk-ntmn6epc.js";import{zg as o}from"./chunk-cckshvkb.js";import{qh as x}from"./chunk-0jv8r99k.js";import"./chunk-th189x63.js";import{Bh as i}from"./chunk-k6eyc1wv.js";import"./chunk-q6x5bmc3.js";import"./chunk-n1m5qdf5.js";import"./chunk-zeh3mjgp.js";import"./chunk-prrrw8t8.js";import"./chunk-tz8qhbk9.js";import"./chunk-k19zvbzh.js";import{Dj as L,Vk as a,Wj as n}from"./chunk-3f6t3wde.js";import"./chunk-b5h8vd5n.js";import{Ol as h}from"./chunk-jee9y4t0.js";import"./chunk-50aznc8e.js";import"./chunk-c4x99ayd.js";import"./chunk-73d0dy03.js";import"./chunk-ha5qct06.js";import"./chunk-w8xaw2dv.js";import"./chunk-tq258v8s.js";import"./chunk-ds162xgb.js";import"./chunk-jfy6bfvv.js";import"./chunk-2p6w3w8f.js";import"./chunk-98nh88th.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-2qy62cv4.js";import"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-ng85b73s.js";import"./chunk-351wfvhp.js";import"./chunk-hmm1m733.js";import"./chunk-2bxy8zm1.js";import"./chunk-qq9pvscd.js";import"./chunk-3nc9wy1m.js";import"./chunk-r8ddb02d.js";import"./chunk-dhvwrrqx.js";import"./chunk-56cty7nr.js";import{Es as I}from"./chunk-thbjhgw0.js";import{Js as d,Ks as v,Ls as f,Ns as c,Xs as l,gt as F}from"./chunk-p20ft5mj.js";import{Dt as u,Ft as N,pt as y}from"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import{$H as D}from"./chunk-meaa7wrs.js";import"./chunk-0ddhkapd.js";import"./chunk-gvj8qg7x.js";import{pP as E}from"./chunk-fa03gsff.js";import k from"path";import{fileURLToPath as $B}from"url";import{writeHeapSnapshot as zB}from"v8";import WB,{EOL as K}from"os";var YB={free:"free",default:"default",fast:"fast",economy:"economical",power:"power"};function HB(B){for(let[V,X]of Object.entries(YB))if(B[V]){let Z=I[X];if(Z)return`${Z.providerID}/${Z.modelID}`}return}function GB(B){return async(X,Z)=>{let Y=new Request(X,Z),W=Y.body?await Y.text():void 0,$=await B.call("fetch",{url:Y.url,method:Y.method,headers:Object.fromEntries(Y.headers.entries()),body:W});return new Response($.body,{status:$.status,headers:$.headers})}}function KB(B){return{subscribe:async(V)=>{return B.on("global.event",(X)=>{V(X)})}}}async function MB(){if(typeof globalThis.QITQODE_WORKER_PATH<"u")return globalThis.QITQODE_WORKER_PATH;let B=new URL("./cli/cmd/tui/worker.js",import.meta.url);if(await u($B(B)))return B;return new URL("./worker.ts",import.meta.url)}async function QB(B){let V=process.stdin.isTTY?void 0:await Bun.stdin.text();if(!B)return V;if(!V)return B;return V+`
3
- `+B}async function O(B){let V=i({baseUrl:B.url,fetch:B.fetch,directory:B.directory}),X=[{permission:"question",action:"deny",pattern:"*"},{permission:"plan_enter",action:"deny",pattern:"*"},{permission:"plan_exit",action:"deny",pattern:"*"}],Y=(await V.session.create({permission:X})).data?.id;if(!Y){H.error("headless: failed to create session");return}let W=await V.event.subscribe(),$=JB({sessionID:Y,query:async()=>{return(await V.session.status()).data?.[Y]}}),A=W.stream[Symbol.asyncIterator](),b=$.completion.then(()=>"DONE");(async()=>{try{while(!0){let z=await Promise.race([A.next(),b]);if(z==="DONE")break;let S=z;if(S.done)break;let M=S.value;$.onEvent(M);let G=M.properties;if(M.type==="message.part.updated"){let J=G?.part;if(!J||J.sessionID!==Y)continue;if(J.type==="text"&&J.time?.end){let q=String(J.text??"").trim();if(q)process.stdout.write(q+K)}}if(M.type==="permission.asked"){if(!G||G.sessionID!==Y)continue;await V.permission.reply({requestID:String(G.id),reply:"once"})}if(M.type==="session.error"){if(!G||G.sessionID!==Y||!G.error)continue;let J=G.error,q=J?.data!==null&&typeof J?.data==="object"&&"message"in J.data?String(J.data.message):String(J?.name??J);H.error(q)}}}finally{$.stop(),await A.return?.(void 0).catch(()=>{})}})().catch((z)=>{console.error(z),process.exit(1)});let P=B.model?a.parseModel(B.model):void 0;await V.session.prompt({sessionID:Y,agent:B.agent,model:P,parts:[{type:"text",text:B.prompt}]}),$.markStarted(),await $.completion}var uB=s({command:"$0 [project]",describe:"start qitqode tui",builder:(B)=>p(B).positional("project",{type:"string",describe:"path to start qitqode in"}).options(g).option("never-ask",{type:"boolean",describe:"start in never-ask mode \u2014 auto-decide without asking (permissions excluded), toggle at runtime with /never-ask",default:!1}).check((V)=>{if(V.dark&&V.light)throw Error("--dark and --light are mutually exclusive");if(V.sso&&!V.headless)throw Error("--sso requires --headless");if(V.sso&&V["api-key"]!==void 0)throw Error("--sso and --api-key are mutually exclusive");let X=Object.keys(YB).filter((Z)=>V[Z]);if(X.length>1)throw Error(`${X.map((Z)=>`--${Z}`).join(" and ")} are mutually exclusive \u2014 choose one tier flag`);if(X.length===1&&V.model)throw Error(`--${X[0]} and --model are mutually exclusive \u2014 use one or the other`);return!0}),handler:async(B)=>{if(B.monochrome)process.env.QITQODE_TUI_ACCESSIBLE="1",process.env.NO_COLOR="1";let V=r();try{t();let X=BB(B);if(X){H.error(X),process.exitCode=1;return}let Z=HB(B)??B.model,Y=N(process.env.PWD??process.cwd()),W=B.project?N(k.isAbsolute(B.project)?B.project:k.join(Y,B.project)):N(process.cwd()),$=h(W);if($){if(B.project){H.error("Cannot start in "+W+": "+$),process.exitCode=1;return}let J=N(WB.homedir());if(h(J)){H.error("Cannot start in "+W+": "+$),process.exitCode=1;return}F.warn("unsafe start directory, falling back to home",{requested:W,home:J}),W=J}let A=await MB();try{process.chdir(W)}catch{H.error("Failed to change directory to "+W);return}let b=N(process.cwd()),m=c({[v]:"worker",[d]:f()}),P=new Worker(A,{env:m});P.onerror=(J)=>{F.error("thread error",{message:J.message,filename:J.filename,lineno:J.lineno,colno:J.colno,error:J.error})};let z=l(P),S=()=>{z.call("reload",void 0).catch((J)=>{F.warn("worker reload failed",{error:y(J)})})};process.on("SIGUSR2",S);let M=!1,G=async()=>{if(M)return;M=!0,process.off("SIGUSR2",S),await n(z.call("shutdown",void 0),5000).catch((J)=>{F.warn("worker shutdown failed",{error:y(J)})}),P.terminate()};try{let J=import("./chunk-wg0849tq.js"),q=import("./chunk-v6kenrks.js").then(({TuiConfig:C})=>C.get()),U=await QB(B.prompt),ZB=await q;if(B.headless&&T(R(B))){H.error("--headless cannot be combined with network-listener flags (--port, --hostname, --mdns)"),process.exitCode=1;return}let w=R(B),_=T(w)?{url:(await z.call("server",w)).url,fetch:void 0,events:void 0}:{url:"http://qitqode.internal",fetch:GB(z),events:KB(z)};if(setTimeout(()=>{z.call("checkUpgrade",{directory:b}).catch(()=>{})},1000).unref?.(),B.headless){if(!U){H.error("--headless requires a prompt: pass --prompt or pipe input via stdin"),process.exitCode=1;return}if(B.sso){try{let Q=await o({tryOpen:!1,onCode:(j)=>{if(process.stdout.write(K),process.stdout.write(" To sign in, open: "+j.verificationUri+K),process.stdout.write(" and enter code: "+j.userCode+K),j.verificationUriComplete)process.stdout.write(K+" Or open this link directly:"+K+" "+j.verificationUriComplete+K);process.stdout.write(K+" Waiting for approval... (ctrl+c to cancel)"+K)}});await x.runPromise(D.gen(function*(){yield*(yield*L.Service).set("forgewise",e(Q,{rotateRefreshToken:!0}))})),process.stdout.write(" Signed in as "+(Q.name||Q.email)+K)}catch(Q){H.error("SSO sign-in failed: "+y(Q)),process.exitCode=1;return}await O({url:_.url,fetch:_.fetch,prompt:U,model:Z,agent:B.agent,directory:b});return}let C=VB(typeof B["api-key"]==="string"?String(B["api-key"]):"");if(C)await x.runPromise(XB(C));else if(!await x.runPromise(D.gen(function*(){return!!(yield*(yield*L.Service).get("forgewise"))}))){H.error(`Not signed in. Use one of:
4
- qode auth login (browser / device-code flow)
5
- qode auth login --api-key (paste a Qlex API key)
6
- --api-key <key> (inline for this run)
7
- $QLEX_API_KEY (environment variable)`),process.exitCode=1;return}await O({url:_.url,fetch:_.fetch,prompt:U,model:Z,agent:B.agent,directory:b})}else{let{tui:C}=await J;await C({url:_.url,async onSnapshot(){let Q=zB("tui.heapsnapshot"),j=await z.call("snapshot",void 0);return[Q,j]},config:ZB,directory:b,fetch:_.fetch,events:_.events,args:{continue:B.continue,sessionID:B.session,agent:B.agent,model:Z,prompt:U,fork:B.fork,neverAsk:B["never-ask"]||!1,themeMode:B.dark?"dark":B.light?"light":void 0,monochrome:B.monochrome||!1,headless:!1}})}}finally{await G()}}finally{V?.()}process.exit(0)}});export{uB as TuiThreadCommand};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{m as L}from"./chunk-vpp88hhd.js";import"./chunk-a3a9bbk7.js";import{y as K}from"./chunk-40vz0fhv.js";import{z as N}from"./chunk-39h565hz.js";import{A as F,C as J}from"./chunk-3w60y2x5.js";import"./chunk-zbvf09bm.js";import"./chunk-jj7wrfty.js";import"./chunk-43xq4p51.js";import{M}from"./chunk-tcp31yv0.js";import"./chunk-3degq6rv.js";import"./chunk-hf0gny5t.js";import"./chunk-fd1vbz1f.js";import"./chunk-7b69jj5g.js";import"./chunk-x1dfc7qd.js";import{Od as B}from"./chunk-wmmck56g.js";import"./chunk-en7nxqvn.js";import"./chunk-v9sfzkg5.js";import"./chunk-djcsvcby.js";import{Sf as z}from"./chunk-ntmn6epc.js";import"./chunk-1zb95qfx.js";import"./chunk-cckshvkb.js";import"./chunk-th189x63.js";import"./chunk-k6eyc1wv.js";import"./chunk-tz8qhbk9.js";import"./chunk-3f6t3wde.js";import"./chunk-b5h8vd5n.js";import"./chunk-jee9y4t0.js";import"./chunk-50aznc8e.js";import"./chunk-c4x99ayd.js";import"./chunk-73d0dy03.js";import"./chunk-ha5qct06.js";import"./chunk-w8xaw2dv.js";import"./chunk-tq258v8s.js";import"./chunk-ds162xgb.js";import"./chunk-jfy6bfvv.js";import"./chunk-2p6w3w8f.js";import"./chunk-98nh88th.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-2qy62cv4.js";import"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-ng85b73s.js";import"./chunk-2bxy8zm1.js";import"./chunk-qq9pvscd.js";import"./chunk-3nc9wy1m.js";import"./chunk-r8ddb02d.js";import"./chunk-dhvwrrqx.js";import"./chunk-56cty7nr.js";import"./chunk-thbjhgw0.js";import"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-gvj8qg7x.js";import"./chunk-fa03gsff.js";var x=B({command:"attach <url>",describe:"attach to a running qitqode server",builder:(j)=>j.positional("url",{type:"string",describe:"http://localhost:4096",demandOption:!0}).option("dir",{type:"string",description:"directory to run in"}).option("continue",{alias:["c"],describe:"continue the last session",type:"boolean"}).option("session",{alias:["s"],type:"string",describe:"session id to continue"}).option("fork",{type:"boolean",describe:"fork the session when continuing (use with --continue or --session)"}).option("password",{alias:["p"],type:"string",describe:"basic auth password (defaults to QITQODE_SERVER_PASSWORD)"}),handler:async(j)=>{let Q=J();try{F();let q=N(j);if(q){z.error(q),process.exitCode=1;return}let R=(()=>{if(!j.dir)return;try{return process.chdir(j.dir),process.cwd()}catch{return j.dir}})(),S=M({password:j.password}),V=await K.get();await L({url:j.url,config:V,args:{continue:j.continue,sessionID:j.session,fork:j.fork},directory:R,headers:S})}finally{Q?.()}}});export{x as AttachCommand};
@@ -1,9 +0,0 @@
1
- // @bun
2
- import{Ah as _,Ch as y,Eh as h}from"./chunk-k6eyc1wv.js";class $ extends Error{cause;constructor(x,J){super(x);this.name="ForgewiseError",this.cause=J}}class K extends ${constructor(x="Device flow is not supported by this issuer."){super(x);this.name="DeviceFlowUnsupportedError"}}var p="https://app.forgewise.tech",a="forgewise-cli";function R(...x){return x.find((J)=>J!==void 0&&J.trim().length>0)}function i(){return!!process.env.REPLIT_DEV_DOMAIN}async function z(){let x=process.env.ACCOUNTS_ISSUER,J=process.env.FORGEWISE_CLIENT_ID;if(x&&J)return{issuer:x.replace(/\/+$/,""),clientId:J};let V;try{V=await y()}catch{V=void 0}let Y=R(x,V?.issuer,p).replace(/\/+$/,""),G=R(J,V?.clientId,a);return{issuer:Y,clientId:G}}function O(x,J,V){if(x>=200&&x<300)return{kind:"success"};let Y=J?.error??"";if(Y==="authorization_pending")return{kind:"wait",intervalMs:V};if(Y==="slow_down")return{kind:"wait",intervalMs:V+5000};if(Y==="access_denied")return{kind:"fatal",message:"Sign-in was denied in the browser."};if(Y==="expired_token")return{kind:"fatal",message:"The sign-in code expired before it was approved. Try again."};return{kind:"fatal",message:`Device sign-in failed: ${J?.error_description||Y||`HTTP ${x}`}`}}import I from"http";var w="/callback",C=[51737,51738],f=new Set;function A(x){return x.replace(/[&<>\"']/g,(J)=>{switch(J){case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;";case'"':return"&quot;";default:return"&#39;"}})}function j(x){return`http://127.0.0.1:${x}${w}`}async function l(x){return new Promise((J,V)=>{let Y=I.createServer();Y.listen(x,"127.0.0.1",()=>{Y.close(()=>J(x))}),Y.on("error",V)})}async function F(){for(let x of C){if(f.has(x))continue;f.add(x);try{return await l(x)}catch{f.delete(x)}}throw new $(`Could not bind to any loopback port (tried ${C.join(", ")}). Free one of those ports and retry.`)}function U(x,J,V,Y){return new Promise((G,Z)=>{let W=()=>f.delete(x),Q=I.createServer((q,X)=>{try{let N=new URL(q.url??"/",`http://localhost:${x}`);if(N.pathname!==w){X.writeHead(404),X.end();return}let B=N.searchParams.get("code"),H=N.searchParams.get("state"),m=N.searchParams.get("error"),M=N.searchParams.get("error_description");if(m){let c=`${A(m)}${M?": "+A(M):""}`;X.writeHead(200,{"Content-Type":"text/html"}),X.end(`<html><body style="font-family:sans-serif;padding:2rem"><h2>Authorization failed</h2><p>${c}</p><p>You can close this tab.</p></body></html>`),Q.close(),Z(new $(`Authorization error: ${m}${M?" \u2014 "+M:""}`));return}if(!B||H!==J){X.writeHead(400),X.end("Invalid request");return}X.writeHead(200,{"Content-Type":"text/html"}),X.end('<html><body style="font-family:sans-serif;padding:2rem"><h2>Signed in! You can close this tab.</h2><p>Return to your terminal to continue.</p></body></html>'),Q.close(),G({code:B})}catch(N){Q.close(),Z(N)}});if(V?.aborted){W(),Z(new $("Login cancelled"));return}let D=()=>{W(),Q.close(()=>Z(new $("Login cancelled")))};if(V?.addEventListener("abort",D,{once:!0}),V?.aborted){D();return}Q.listen(x,"127.0.0.1",()=>{W(),Y?.()}),Q.on("error",(q)=>{W(),Z(q)})})}function k(x,J){return new Promise((V,Y)=>{if(J?.aborted){Y(new $("Login cancelled"));return}let G,Z=()=>{clearTimeout(G),J?.removeEventListener("abort",Z),Y(new $("Login cancelled"))};if(G=setTimeout(()=>{J?.removeEventListener("abort",Z),V()},x),J?.addEventListener("abort",Z,{once:!0}),J?.aborted)Z()})}function n(x,J=300000){if(!x)return!1;return Date.now()>=x-J}async function t(x){let{issuer:J}=await z();return h({issuer:J,accessToken:x})}import L from"crypto";var E="openid profile email",P=(x)=>x.toString("base64url");function b(){let x=P(L.randomBytes(32)),J=P(L.createHash("sha256").update(x).digest()),V=P(L.randomBytes(16));return{verifier:x,challenge:J,state:V}}function g(x){let J=new URL(`${x.issuer}/api/oauth/authorize`);return J.searchParams.set("response_type","code"),J.searchParams.set("client_id",x.clientId),J.searchParams.set("redirect_uri",x.redirectUri),J.searchParams.set("scope",E),J.searchParams.set("state",x.state),J.searchParams.set("code_challenge",x.challenge),J.searchParams.set("code_challenge_method","S256"),J.toString()}async function S(x,J){let V=await fetch(`${x}/api/oauth/userinfo`,{headers:{Authorization:`Bearer ${J.access_token}`}});if(!V.ok)throw new $(`Failed to fetch user profile (${V.status})`);let Y=await V.json();if(!Y.sub)throw new $("Userinfo response is missing required 'sub' field \u2014 the server returned an invalid user profile.");return{sub:Y.sub,name:Y.name??"",email:Y.email??"",access_token:J.access_token,expires_at:Date.now()+(J.expires_in??3600)*1000,...J.refresh_token?{refresh_token:J.refresh_token}:{}}}async function T(x){let J=await fetch(`${x.issuer}/api/oauth/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:x.code,redirect_uri:x.redirectUri,client_id:x.clientId,code_verifier:x.verifier}).toString(),signal:x.signal??null});if(!J.ok){let Y=await J.text().catch(()=>"");throw new $(`Token exchange failed (${J.status}): ${Y}`)}let V=await J.json();return S(x.issuer,V)}async function o(x,J,V=5000){let Y=new AbortController,G=setTimeout(()=>Y.abort(),V);try{let Z=await fetch(`${x}/api/oauth/userinfo`,{headers:{Authorization:`Bearer ${J}`},signal:Y.signal});if(Z.status===401||Z.status===403)return!1;if(!Z.ok)return null;return!0}catch{return null}finally{clearTimeout(G)}}async function s(x){let{issuer:J,clientId:V}=await z(),Y;try{Y=await fetch(`${J}/api/oauth/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:V,refresh_token:x}).toString()})}catch(Z){throw new $(`Could not reach the sign-in server to refresh the session: ${Z instanceof Error?Z.message:String(Z)}`,Z)}if(!Y.ok){let Z=await Y.json().catch(()=>{return});if(Z?.error==="invalid_grant")return"invalid_grant";throw new $(`Token refresh failed (${Y.status}): ${Z?.error??""}`)}let G=await Y.json();return S(J,G)}async function v(x){let J;try{J=await fetch(`${x.issuer}/api/oauth/device_authorization`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:x.clientId,scope:E}).toString(),signal:x.signal??null})}catch{if(x.signal?.aborted)throw new $("Login cancelled");throw new K}if(J.status===404||J.status===405||J.status===501)throw new K;if(!J.ok){let Y=await J.text().catch(()=>"");throw new $(`Device authorization failed (${J.status}): ${Y}`)}let V;try{V=await J.json()}catch{throw new K}if(!V.device_code||!V.user_code||!V.verification_uri)throw new K;return{deviceCode:V.device_code,info:{userCode:V.user_code,verificationUri:V.verification_uri,verificationUriComplete:V.verification_uri_complete,expiresAt:Date.now()+(V.expires_in??900)*1000},intervalMs:Math.max(1,V.interval??5)*1000}}async function d(x){let J;try{J=await fetch(`${x.issuer}/api/oauth/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:x.deviceCode,client_id:x.clientId}).toString(),signal:x.signal??null})}catch{if(x.signal?.aborted)throw new $("Login cancelled");return{kind:"wait",intervalMs:x.currentIntervalMs}}let V;try{V=await J.json()}catch{V=void 0}let Y=O(J.status,V,x.currentIntervalMs);if(Y.kind==="success"){if(!V?.access_token)throw new $("Token endpoint returned success without an access_token.");return{kind:"success",profile:await S(x.issuer,{access_token:V.access_token,expires_in:V.expires_in})}}if(Y.kind==="fatal")throw new $(Y.message);return{kind:"wait",intervalMs:Y.intervalMs}}var r=300000;async function u(){let{issuer:x,clientId:J}=await z(),{verifier:V,challenge:Y,state:G}=b(),Z=await F(),W=j(Z),Q=g({issuer:x,clientId:J,redirectUri:W,challenge:Y,state:G});return{issuer:x,clientId:J,verifier:V,port:Z,redirectUri:W,authorizeStr:Q,state:G}}async function e(x){let{issuer:J,clientId:V}=await z(),{deviceCode:Y,info:G,intervalMs:Z}=await v({issuer:J,clientId:V,signal:x.signal});if(x.onCode(G),x.tryOpen){let Q=G.verificationUriComplete??G.verificationUri;_(Q)}let W=Z;while(Date.now()<G.expiresAt){await k(W,x.signal);let Q=await d({issuer:J,clientId:V,deviceCode:Y,currentIntervalMs:W,signal:x.signal});if(Q.kind==="success")return Q.profile;W=Q.intervalMs}throw new $("The sign-in code expired before it was approved. Try again.")}async function x0(){let{issuer:x,clientId:J,verifier:V,port:Y,redirectUri:G,authorizeStr:Z,state:W}=await u();process.stdout.write(`
3
- `),process.stdout.write(` Opening Forgewise sign-in in your browser...
4
- `),process.stdout.write(" Sign-in URL: "+Z+`
5
- `),process.stdout.write(`
6
- `),process.stdout.write(` Waiting for the browser to complete sign-in... (ctrl+c to cancel)
7
- `);let{code:Q}=await U(Y,W,void 0,()=>{_(Z)});return process.stdout.write(`
8
- Exchanging authorization code...
9
- `),T({issuer:x,clientId:J,code:Q,redirectUri:G,verifier:V})}async function J0(x={}){if(x.signal?.aborted)throw new $("Login cancelled");let{issuer:J,clientId:V,verifier:Y,port:G,redirectUri:Z,authorizeStr:W,state:Q}=await u(),D=()=>{if(x.onUrl?.(W),x.tryOpen!==!1)_(W)},q=new AbortController,X=()=>q.abort();x.signal?.addEventListener("abort",X,{once:!0});let N=!1,B=setTimeout(()=>{N=!0,q.abort()},r);try{let{code:H}=await U(G,Q,q.signal,D);return await T({issuer:J,clientId:V,code:H,redirectUri:Z,verifier:Y,signal:q.signal})}catch(H){if(N)throw new $("Sign-in timed out. Run login again to retry.");throw H}finally{clearTimeout(B),x.signal?.removeEventListener("abort",X)}}export{$ as pg,K as qg,i as rg,z as sg,O as tg,j as ug,n as vg,t as wg,o as xg,s as yg,e as zg,x0 as Ag,J0 as Bg};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{pP as t}from"./chunk-fa03gsff.js";var e=await import("./chunk-2ec8msmq.js",{with:{type:"file"}}),a=e.default;export{a as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{$d as c,Zd as a,_d as b,ae as d,be as e,ce as f,de as g,ee as h,fe as i,ge as j,he as k}from"./chunk-j2k4wxsk.js";import"./chunk-78wt9ad8.js";import"./chunk-60dxyp37.js";import"./chunk-fa03gsff.js";export{c as providerConfigFromInit,d as httpRequest,j as getInstanceMetadataEndpoint,k as fromInstanceMetadata,h as fromContainerMetadata,i as Endpoint,f as ENV_CMDS_RELATIVE_URI,e as ENV_CMDS_FULL_URI,g as ENV_CMDS_AUTH_TOKEN,a as DEFAULT_TIMEOUT,b as DEFAULT_MAX_RETRIES};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Pd as a,Qd as b,Rd as c}from"./chunk-1123xk5a.js";import"./chunk-a2ty2e0g.js";import"./chunk-78wt9ad8.js";import"./chunk-60dxyp37.js";import"./chunk-fa03gsff.js";export{b as validateSsoProfile,a as isSsoProfile,c as fromSSO};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var e="./libopentui-c48jzvfh.so";export{e as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{$q as c,Zq as a,_q as b}from"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-fa03gsff.js";export{a as openApp,c as default,b as apps};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{g as G}from"./chunk-2bbvvh0d.js";import{D as x,E as F,F as Z}from"./chunk-zbvf09bm.js";import{Od as P}from"./chunk-wmmck56g.js";import{Sf as j}from"./chunk-ntmn6epc.js";import{wg as v}from"./chunk-cckshvkb.js";import{qh as X}from"./chunk-0jv8r99k.js";import"./chunk-th189x63.js";import"./chunk-k6eyc1wv.js";import"./chunk-q6x5bmc3.js";import"./chunk-n1m5qdf5.js";import"./chunk-zeh3mjgp.js";import"./chunk-prrrw8t8.js";import"./chunk-tz8qhbk9.js";import"./chunk-k19zvbzh.js";import{Dj as $}from"./chunk-3f6t3wde.js";import"./chunk-b5h8vd5n.js";import"./chunk-jee9y4t0.js";import"./chunk-50aznc8e.js";import"./chunk-c4x99ayd.js";import"./chunk-73d0dy03.js";import"./chunk-ha5qct06.js";import"./chunk-w8xaw2dv.js";import"./chunk-tq258v8s.js";import"./chunk-ds162xgb.js";import"./chunk-jfy6bfvv.js";import"./chunk-2p6w3w8f.js";import"./chunk-98nh88th.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-2qy62cv4.js";import"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-ng85b73s.js";import"./chunk-351wfvhp.js";import"./chunk-hmm1m733.js";import"./chunk-2bxy8zm1.js";import"./chunk-qq9pvscd.js";import"./chunk-3nc9wy1m.js";import"./chunk-r8ddb02d.js";import"./chunk-dhvwrrqx.js";import"./chunk-56cty7nr.js";import"./chunk-thbjhgw0.js";import"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import{$H as D}from"./chunk-meaa7wrs.js";import"./chunk-0ddhkapd.js";import"./chunk-gvj8qg7x.js";import"./chunk-fa03gsff.js";var Y="forgewise";function _(J){return D.gen(function*(){let z=yield*J.get(Y);if(!z||z.type!=="api")return null;let M=(z.metadata??{}).sub,V=z.key;if(!M)return null;return{sub:M,accessToken:V}})}var H=()=>D.gen(function*(){if((yield*G())==="revoked")return null;let J=yield*$.Service,z=yield*_(J);if(!z)return yield*D.sync(()=>j.println(j.Style.TEXT_DANGER+"Not signed in to Forgewise. Run `qitqode auth login` first."+j.Style.TEXT_NORMAL)),null;return z}),k=()=>D.gen(function*(){let J=yield*H();if(!J)return;let z=yield*D.tryPromise({try:()=>v(J.accessToken),catch:()=>null}).pipe(D.orElseSucceed(()=>null));if(!z){yield*D.sync(()=>j.println(j.Style.TEXT_DANGER+"Could not fetch balance."+j.Style.TEXT_NORMAL));return}yield*D.sync(()=>j.println(j.Style.TEXT_SUCCESS+"Qredits balance: "+j.Style.TEXT_NORMAL+j.Style.TEXT_HIGHLIGHT_BOLD+Z(z.balance)+j.Style.TEXT_NORMAL))}).pipe(D.withSpan("qredits.balance")),w=()=>D.gen(function*(){let J=yield*H();if(!J)return;let z=yield*D.tryPromise({try:()=>F({userId:J.sub,accessToken:J.accessToken,limit:20}),catch:(L)=>L});if(z instanceof Error){let L=z instanceof x?z.message:String(z);yield*D.sync(()=>j.println(j.Style.TEXT_DANGER+"Could not fetch history: "+L+j.Style.TEXT_NORMAL));return}if(z.length===0){yield*D.sync(()=>j.println("No spend history yet."));return}let N=j.Style.TEXT_DIM,M=j.Style.TEXT_NORMAL,V=j.Style.TEXT_DANGER;yield*D.sync(()=>{j.println(N+" Date Description Amount"+M),j.println(N+" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500"+M);for(let L of z){let K=(L.date||"").slice(0,10).padEnd(18),O=(L.description||"").slice(0,32).padEnd(32),T=(L.amount<0?"-":" ")+Z(Math.abs(L.amount)),W=L.amount<0?V:M;j.println(` ${N}${K}${M} ${O} ${W}${T}${M}`)}})}).pipe(D.withSpan("qredits.history")),g=P({command:"qredits <command>",describe:"Check Qredits balance and spend history",builder:(J)=>J.command(P({command:"balance",describe:"Show current Qredits balance",builder:(z)=>z,async handler(){j.empty(),await X.runPromise(k())}})).command(P({command:"history",describe:"Show recent Qredit spend history",builder:(z)=>z,async handler(){j.empty(),await X.runPromise(w())}})).demandCommand(),async handler(){}});export{w as historyEffect,k as balanceEffect,g as QreditsCommand};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var t="./tree-sitter-3jzf13jk.wasm";export{t as default};
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{Ds as v}from"./chunk-56cty7nr.js";import{Fs as B}from"./chunk-thbjhgw0.js";import{ot as M}from"./chunk-b5x3zghc.js";function L(j,z){return typeof j==="object"&&j!==null&&"_tag"in j&&j._tag===z}function Z(j){if(v.hasName(j,"MCPFailed"))return`MCP server "${j.data?.name}" failed. Note, qitqode does not support MCP authentication yet.`;if(L(j,"AccountServiceError")||L(j,"AccountTransportError"))return j.message??"";if(v.hasName(j,"ProviderModelNotFoundError")){let k=j.data,A=Array.isArray(k?.suggestions)?k.suggestions:[];return[`Model not found: ${k?.providerID}/${k?.modelID}`,...A.length?["Did you mean: "+A.join(", ")]:[],"Try: `qitqode models` to list available models","Or check your config (qitqode.json) provider/model names"].join(`
3
- `)}if(v.hasName(j,"ProviderInitError"))return`Failed to initialize provider "${j.data?.providerID}". Check credentials and configuration.`;if(v.hasName(j,"ConfigJsonError")){let k=j.data;return`Config file at ${k?.path} is not valid JSON(C)`+(k?.message?`: ${k.message}`:"")}if(v.hasName(j,"ConfigDirectoryTypoError")){let k=j.data;return`Directory "${k?.dir}" in ${k?.path} is not valid. Rename the directory to "${k?.suggestion}" or remove it. This is a common typo.`}if(v.hasName(j,"ConfigFrontmatterError"))return j.data?.message??"";if(v.hasName(j,"ConfigInvalidError")){let k=j.data,A=k?.path,G=k?.message,O=Array.isArray(k?.issues)?k.issues:[];return[`Configuration is invalid${A&&A!=="config"?` at ${A}`:""}`+(G?`: ${G}`:""),...O.map((J)=>"\u21B3 "+J.message+" "+J.path.join("."))].join(`
4
- `)}if(v.hasName(j,"UICancelledError"))return"";let z=typeof j==="object"&&j!==null&&"name"in j?j.name:void 0;if(z==="QlexNotLoggedInError")return B.copy().notLoggedIn;if(z==="QlexInsufficientBalanceError")return(j.message??B.copy().insufficientBalanceFallback)+B.copy().insufficientBalanceCliSuffix;if(z==="QlexRateLimitError")return B.copy().rateLimit;if(z==="QlexInvalidCredentialsError")return j.message??B.copy().invalidCredentialsFallback}function _(j){return M(j)}function H({onlyFirst:j=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",j?void 0:"g")}var U=H();function V(j){if(typeof j!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof j}\``);return j.replace(U,"")}
5
- export{V as Gf,Z as Hf,_ as If};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{ct as n}from"./chunk-p20ft5mj.js";import{pP as f}from"./chunk-fa03gsff.js";function l(t){if(!t?.fetch)t={...t,fetch:(s)=>{return s.timeout=!1,fetch(s)}};if(t?.directory)t.headers={...t.headers,"x-qitqode-directory":encodeURIComponent(t.directory)};return t}import o from"path";function g(t){if(t?.type!=="api"||typeof t.key!=="string")return;let s=t.metadata?.method==="api-key"?"api-key":"sso";return{key:t.key,method:s}}async function E(){let t=o.join(n.Path.data,"auth.json");try{let{readFile:u}=await import("fs/promises"),s=await u(t,"utf8"),e=JSON.parse(s),r=g(e?.forgewise);if(r)return r}catch{}if(process.env.QITQODE_AUTH_CONTENT)try{let u=JSON.parse(process.env.QITQODE_AUTH_CONTENT);return g(u?.forgewise)}catch{}return}async function A(){let t=o.join(n.Path.data,"auth.json"),{readFile:u,writeFile:s}=await import("fs/promises"),e=await u(t,"utf8"),r=JSON.parse(e);if(!("forgewise"in r))return;delete r.forgewise,await s(t,JSON.stringify(r,null,2),"utf8")}function b(t){return t.method==="api-key"?{"x-api-key":t.key}:{authorization:`Bearer ${t.key}`}}
3
- export{l as np,E as op,A as pp,b as qp};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{ff as a}from"./chunk-s6qdtfty.js";import"./chunk-fa03gsff.js";export default a();
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{a,b,c,d,e,f}from"./chunk-6pe3xzkk.js";import"./chunk-2bbvvh0d.js";import"./chunk-f72j5yx8.js";import"./chunk-zbvf09bm.js";import"./chunk-9g05wsae.js";import"./chunk-x1dfc7qd.js";import"./chunk-wmmck56g.js";import"./chunk-ntmn6epc.js";import"./chunk-cckshvkb.js";import"./chunk-0jv8r99k.js";import"./chunk-th189x63.js";import"./chunk-k6eyc1wv.js";import"./chunk-q6x5bmc3.js";import"./chunk-n1m5qdf5.js";import"./chunk-zeh3mjgp.js";import"./chunk-prrrw8t8.js";import"./chunk-tz8qhbk9.js";import"./chunk-k19zvbzh.js";import"./chunk-3f6t3wde.js";import"./chunk-b5h8vd5n.js";import"./chunk-jee9y4t0.js";import"./chunk-50aznc8e.js";import"./chunk-c4x99ayd.js";import"./chunk-73d0dy03.js";import"./chunk-ha5qct06.js";import"./chunk-w8xaw2dv.js";import"./chunk-tq258v8s.js";import"./chunk-ds162xgb.js";import"./chunk-jfy6bfvv.js";import"./chunk-2p6w3w8f.js";import"./chunk-98nh88th.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-2qy62cv4.js";import"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-ng85b73s.js";import"./chunk-351wfvhp.js";import"./chunk-hmm1m733.js";import"./chunk-2bxy8zm1.js";import"./chunk-qq9pvscd.js";import"./chunk-3nc9wy1m.js";import"./chunk-r8ddb02d.js";import"./chunk-dhvwrrqx.js";import"./chunk-56cty7nr.js";import"./chunk-thbjhgw0.js";import"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-0ddhkapd.js";import"./chunk-gvj8qg7x.js";import"./chunk-fa03gsff.js";export{e as statusEffect,a as resolveApiKeyFlag,d as logoutEffect,c as loginEffect,b as apiKeyLoginEffect,f as AuthCommand};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var a="./highlights-x6tmsnaa.scm";export{a as default};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{pP as t}from"./chunk-fa03gsff.js";var e=await import("./chunk-80a0d0js.js",{with:{type:"file"}}),a=e.default;export{a as default};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{Zf as E}from"./chunk-h5wh2d49.js";import"./chunk-xjdxyeja.js";import"./chunk-1zb95qfx.js";import"./chunk-cckshvkb.js";import"./chunk-hkqcpdmt.js";import"./chunk-nfg7nt13.js";import"./chunk-awdpkgxf.js";import"./chunk-8x6x3g16.js";import"./chunk-0jv8r99k.js";import"./chunk-th189x63.js";import"./chunk-k6eyc1wv.js";import"./chunk-q6x5bmc3.js";import"./chunk-n1m5qdf5.js";import"./chunk-zeh3mjgp.js";import"./chunk-prrrw8t8.js";import"./chunk-tz8qhbk9.js";import"./chunk-k19zvbzh.js";import"./chunk-3f6t3wde.js";import"./chunk-b5h8vd5n.js";import"./chunk-jee9y4t0.js";import"./chunk-50aznc8e.js";import"./chunk-c4x99ayd.js";import"./chunk-73d0dy03.js";import"./chunk-ha5qct06.js";import"./chunk-w8xaw2dv.js";import"./chunk-tq258v8s.js";import"./chunk-ds162xgb.js";import"./chunk-jfy6bfvv.js";import"./chunk-2p6w3w8f.js";import"./chunk-98nh88th.js";import"./chunk-t7v8wzr9.js";import"./chunk-er5q8nhp.js";import"./chunk-cqtkxwd8.js";import"./chunk-h6htvj2y.js";import"./chunk-2qy62cv4.js";import"./chunk-t2n6fmpy.js";import"./chunk-x1naayst.js";import"./chunk-ng85b73s.js";import"./chunk-351wfvhp.js";import"./chunk-hmm1m733.js";import"./chunk-2bxy8zm1.js";import"./chunk-qq9pvscd.js";import"./chunk-3nc9wy1m.js";import"./chunk-r8ddb02d.js";import"./chunk-dhvwrrqx.js";import"./chunk-56cty7nr.js";import"./chunk-thbjhgw0.js";import"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-0ddhkapd.js";import"./chunk-gvj8qg7x.js";import{pP as z}from"./chunk-fa03gsff.js";var J={command:"generate",handler:async()=>{let A=await E.openapi();for(let q of Object.values(A.paths))for(let y of["get","post","put","delete","patch"]){let k=q[y];if(!k?.operationId)continue;k["x-codeSamples"]=[{lang:"js",source:['import { createQitQodeClient } from "@qitqode/sdk"',"","const client = createQitQodeClient()",`await client.${k.operationId}({`," ...","})"].join(`
3
- `)}]}let F=JSON.stringify(A,null,2),B=await import("./chunk-ne8ftsv3.js"),C=await import("./chunk-ck65rcxb.js"),D=await import("./chunk-p64fb4rm.js"),G=await(B.format??B.default?.format)(F,{parser:"json",plugins:[C.default??C,D.default??D],printWidth:120});await new Promise((q,y)=>{process.stdout.write(G,(k)=>{if(k)y(k);else q()})})}};export{J as GenerateCommand};
@@ -1,3 +0,0 @@
1
- // @bun
2
- var f={"language.en":"English","language.zh":"\u7B80\u4F53\u4E2D\u6587","language.zht":"\u7E41\u9AD4\u4E2D\u6587","language.ko":"\uD55C\uAD6D\uC5B4","language.de":"Deutsch","language.es":"Espa\xF1ol","language.fr":"Fran\xE7ais","language.da":"Dansk","language.ja":"\u65E5\u672C\u8A9E","language.pl":"Polski","language.ru":"\u0420\u0443\u0441\u0441\u043A\u0438\u0439","language.ar":"\u0627\u0644\u0639\u0631\u0628\u064A\u0629","language.no":"Norsk","language.br":"Portugu\xEAs (Brasil)","language.pt":"Portugu\xEAs","language.bs":"Bosanski","language.th":"\u0E44\u0E17\u0E22","language.tr":"T\xFCrk\xE7e","tui.prompt.placeholder.normal":"Type your message... (type / for commands)","tui.prompt.placeholder.shell":'Run a command... "{{example}}"',"tui.prompt.ghost":"{{prediction}} (Tab to accept)","tui.home.placeholder.example.todo":"Fix a TODO in the codebase","tui.home.placeholder.example.stack":"What is the tech stack of this project?","tui.home.placeholder.example.tests":"Fix broken tests","tui.home.agreement.prefix":"By using QitQode, you agree to our ","tui.home.agreement.terms":"Terms of Service","tui.home.agreement.separator":" and ","tui.home.agreement.privacy":"Privacy Policy","tui.home.agreement.suffix":"","tui.prompt.hint.attach_file":"attach file","tui.prompt.hint.subagent":"subagent","tui.prompt.hint.commands":"commands","tui.prompt.hint.switch_mode":"switch mode","tui.prompt.hint.settings":"settings","tui.tips.label":"Tip","tui.tips.plain_terminal":"QitQode looks best in iTerm2 or VS Code's integrated terminal","tui.tips.attach_file":"Hit {highlight}@{/highlight} and start typing to fuzzy-find and attach a file to your prompt","tui.tips.shell_prefix":"Prefix any message with {highlight}!{/highlight} to run it as a shell command \u2014 try {highlight}!git log{/highlight}","tui.tips.tab_agent":"{highlight}Tab{/highlight} and {highlight}Shift+Tab{/highlight} step through your Build, Plan, and Compose agents","tui.tips.theme_mode":"Switch between dark and light themes with {highlight}/dark{/highlight} or {highlight}/light{/highlight}","tui.tips.doc":"Pull up the full documentation anytime with {highlight}/doc{/highlight}","tui.tips.undo":"{highlight}/undo{/highlight} rolls back both the last message and any files it touched","tui.tips.redo":"Changed your mind? {highlight}/redo{/highlight} brings back what you just undid","tui.tips.drag_drop":"Drop images or PDFs straight into the terminal window to add them as context","tui.tips.paste_image":"Got something in your clipboard? {highlight}Ctrl+V{/highlight} pastes images directly into the prompt","tui.tips.editor":"Long prompt? Hit {highlight}Ctrl+X E{/highlight} or {highlight}/editor{/highlight} to write it in your editor of choice","tui.tips.init":"Let {highlight}/init{/highlight} read your project and generate a tailored rules file automatically","tui.tips.models":"Swap between Default, Fast, Economy, and Power with {highlight}/models{/highlight} or {highlight}Ctrl+X M{/highlight}","tui.tips.theme":`Lock your theme mode against your terminal's background \u2014 open the command palette ({highlight}Ctrl+P{/highlight}) and search for "lock"`,"tui.tips.new_session":"Start a clean slate with {highlight}Ctrl+X N{/highlight} or just type {highlight}/new{/highlight}","tui.tips.sessions":"Pick up where you left off \u2014 {highlight}/sessions{/highlight} or {highlight}Ctrl+X L{/highlight} lists all your past conversations","tui.tips.compact":"Running low on context? {highlight}/compact{/highlight} condenses the session into a concise summary","tui.tips.export":"Save any conversation as a Markdown file with {highlight}Ctrl+X X{/highlight} or {highlight}/export{/highlight}","tui.tips.copy_last":"{highlight}Ctrl+X Y{/highlight} copies QitQode's last response straight to your clipboard","tui.tips.command_palette":"Everything in one place \u2014 hit {highlight}Ctrl+P{/highlight} to open the full command palette","tui.tips.leader":"{highlight}Ctrl+X{/highlight} is your shortcut prefix \u2014 pair it with another key to trigger quick actions","tui.tips.f2":"Tap {highlight}F2{/highlight} to jump between your recently used models without opening the picker","tui.tips.sidebar":"Toggle the sidebar on or off with {highlight}Ctrl+X B{/highlight}","tui.tips.history":"Scroll through the conversation with {highlight}PageUp{/highlight} and {highlight}PageDown{/highlight}","tui.tips.jump_first":"Jump straight to the top of any conversation with {highlight}Ctrl+G{/highlight} or {highlight}Home{/highlight}","tui.tips.jump_last":"Skip to the latest message instantly with {highlight}Ctrl+Alt+G{/highlight} or {highlight}End{/highlight}","tui.tips.newline":"Need a line break in your prompt? {highlight}Shift+Enter{/highlight} or {highlight}Ctrl+J{/highlight} does it","tui.tips.clear_input":"Typed something you don't want? {highlight}Ctrl+C{/highlight} wipes the input field clean","tui.tips.escape":"Hit {highlight}Escape{/highlight} to interrupt QitQode and stop it mid-response","tui.tips.plan_agent":"The {highlight}Plan{/highlight} agent thinks through problems and proposes changes without touching any files","tui.tips.subagent":"Mention {highlight}@agent-name{/highlight} in your prompt to hand off to a specialized subagent","tui.tips.cycle_sessions":"Navigate between parent and child sessions with {highlight}Ctrl+X Right{/highlight} and {highlight}Ctrl+X Left{/highlight}","tui.tips.config_files":"{highlight}qitqode.json{/highlight} controls server behavior; {highlight}tui.json{/highlight} controls the terminal interface","tui.tips.global_config":"Your global TUI preferences live at {highlight}~/.config/qitqode/tui.json{/highlight}","tui.tips.schema":"Drop {highlight}$schema{/highlight} into your config file to unlock editor autocomplete","tui.tips.default_model":"Set the {highlight}model{/highlight} key in your config to lock in a preferred tier","tui.tips.keybinds":"Every keybind is overridable \u2014 drop it in the {highlight}keybinds{/highlight} section of {highlight}tui.json{/highlight}","tui.tips.disable_keybind":"Assign {highlight}none{/highlight} to any keybind to remove it entirely","tui.tips.mcp_config":"Wire up local or remote MCP servers through the {highlight}mcp{/highlight} section of your config","tui.tips.mcp_oauth":"Remote MCP servers that require OAuth? QitQode manages the auth flow for you","tui.tips.custom_command":"Save reusable prompts as {highlight}.md{/highlight} files in {highlight}.qitqode/command/{/highlight}","tui.tips.command_args":"Make commands dynamic with {highlight}$ARGUMENTS{/highlight}, {highlight}$1{/highlight}, and {highlight}$2{/highlight} placeholders","tui.tips.command_backticks":"Inject live shell output into any command using backticks \u2014 e.g. {highlight}`git diff`{/highlight}","tui.tips.custom_agent":"Drop a {highlight}.md{/highlight} file into {highlight}.qitqode/agent/{/highlight} to create a custom AI persona","tui.tips.agent_perms":"Each agent can have its own {highlight}edit{/highlight}, {highlight}bash{/highlight}, and {highlight}webfetch{/highlight} permission set","tui.tips.bash_allow":'Grant specific bash commands automatically \u2014 e.g. {highlight}"git *": "allow"{/highlight}',"tui.tips.bash_deny":'Block dangerous patterns outright \u2014 e.g. {highlight}"rm -rf *": "deny"{/highlight}',"tui.tips.bash_ask":'Require confirmation before certain commands run \u2014 e.g. {highlight}"git push": "ask"{/highlight}',"tui.tips.formatter":"QitQode runs prettier, gofmt, ruff, and other formatters on your files automatically","tui.tips.disable_formatter":'Turn off automatic formatting globally with {highlight}"formatter": false{/highlight} in your config',"tui.tips.custom_formatter":"Map any file extension to a custom formatter command in your config","tui.tips.lsp":"QitQode plugs into your LSP servers for deep, language-aware code understanding","tui.tips.custom_tool":"Give QitQode new capabilities by adding {highlight}.ts{/highlight} tool files to {highlight}.qitqode/tools/{/highlight}","tui.tips.tool_scripts":"Custom tools can shell out to scripts in any language \u2014 Python, Go, Bash, whatever","tui.tips.plugins":"Hook into QitQode's event lifecycle by adding {highlight}.ts{/highlight} files to {highlight}.qitqode/plugin/{/highlight}","tui.tips.plugin_notify":"Write a plugin to fire a desktop notification whenever a session finishes","tui.tips.plugin_protect":"A plugin can intercept file reads and block access to sensitive paths","tui.tips.run":"{highlight}qitqode run{/highlight} lets you drive QitQode from scripts without opening the TUI","tui.tips.continue":"Jump back into your last session from the CLI with {highlight}qitqode --continue{/highlight}","tui.tips.attach_cli":"Pass files into a non-interactive session with {highlight}qitqode run -f yourfile.ts{/highlight}","tui.tips.format_json":"Add {highlight}--format json{/highlight} to get structured output you can pipe into other tools","tui.tips.auth_list":"{highlight}qitqode auth status{/highlight} shows your current Forgewise sign-in status","tui.tips.agent_create":"Walk through building a new agent step by step with {highlight}qitqode agent create{/highlight}","tui.tips.theme_system":`Set {highlight}"theme": "system"{/highlight} to automatically follow your terminal's color scheme`,"tui.tips.theme_files":"Store custom JSON themes in {highlight}.qitqode/themes/{/highlight} to keep them project-local","tui.tips.theme_variants":"A single theme file can define both dark and light variants","tui.tips.theme_ansi":"Custom themes can reference any of the 256 ANSI terminal colors by number","tui.tips.env_var":"Pull in environment variables anywhere in your config with {highlight}{env:VAR_NAME}{/highlight}","tui.tips.file_var":"Embed the contents of any file into a config value using {highlight}{file:path}{/highlight}","tui.tips.instructions":"Point {highlight}instructions{/highlight} in your config to extra rules files to extend the agent's behavior","tui.tips.temperature":"Tune the agent's {highlight}temperature{/highlight} \u2014 lower for precision, higher for open-ended creativity","tui.tips.steps":"Cap how far the agent runs autonomously by setting a {highlight}steps{/highlight} limit in config","tui.tips.disable_tool":'Disable individual tools by setting them to {highlight}false{/highlight} under {highlight}"tools"{/highlight} in config',"tui.tips.disable_mcp_tools":`Silence an entire MCP server's toolset with {highlight}"mcp_*": false{/highlight}`,"tui.tips.tool_override":"Each agent config can override the global tool settings independently","tui.tips.doom_loop":"The {highlight}doom_loop{/highlight} permission guard stops the agent from getting stuck in runaway loops","tui.tips.external_dir":"{highlight}external_directory{/highlight} permission keeps the agent from modifying files outside your project","tui.tips.debug_config":"Something misconfigured? {highlight}qitqode debug config{/highlight} prints the resolved config for inspection","tui.tips.print_logs":"Pipe {highlight}--print-logs{/highlight} output to stderr for a full trace of what QitQode is doing","tui.tips.timeline":"Navigate directly to any message in the session with {highlight}Ctrl+X G{/highlight} or {highlight}/timeline{/highlight}","tui.tips.toggle_code":"Show or hide code blocks in the conversation with {highlight}Ctrl+X H{/highlight}","tui.tips.status":"Check what's running under the hood with {highlight}Ctrl+X S{/highlight} or {highlight}/status{/highlight}","tui.tips.scroll_accel":"Turn on {highlight}scroll_acceleration{/highlight} in {highlight}tui.json{/highlight} for fluid, physics-based scrolling","tui.tips.agents_md":"Share your project's AI rules with the whole team by committing {highlight}AGENTS.md{/highlight} to Git","tui.tips.review":"Ask QitQode to review your staged diff, branch, or open PR with {highlight}/review{/highlight}","tui.tips.help":"Lost? {highlight}/help{/highlight} or {highlight}Ctrl+X H{/highlight} surfaces the full keybind reference","tui.tips.rename":"Give your current session a proper name with {highlight}/rename{/highlight}","tui.tips.suspend.unix":"Need your shell back? {highlight}Ctrl+Z{/highlight} suspends QitQode and drops you back to the terminal","tui.tips.suspend.win":"Hit {highlight}Ctrl+Z{/highlight} to undo your last typed change in the prompt","tui.command.palette.title":"Commands","tui.command.palette.suggested":"Suggested","tui.command.category.session":"Session","tui.command.category.agent":"Agent","tui.command.category.provider":"Provider","tui.command.category.system":"System","tui.command.category.prompt":"Prompt","tui.command.category.internal":"Internal","tui.command.category.external":"External","tui.slash.init.description":"guided AGENTS.md setup","tui.slash.review.description":"review changes [commit|branch|pr], defaults to uncommitted","tui.slash.dream.description":"manually consolidate project memory from memory files and raw trajectory","tui.slash.distill.description":"find repeated workflows in recent work and package them into skills, subagents, or commands","tui.slash.goal.description":"set a stop-condition goal; runs until a judge says it's met. /goal clear to abort","tui.slash.deep-research.description":"deep multi-source, fact-checked research report (runs the deep-research workflow)","tui.command.language.switch.title":"Switch language","tui.command.language.switch.description":"Change the display language","tui.command.language.dialog.title":"Switch language","tui.language.auto":"Auto (system)","tui.language.current":"Current","tui.command.session.list.title":"Switch session","tui.command.session.new.title":"New session","tui.command.workflow.list.title":"Workflows","tui.command.model.list.title":"Switch model","tui.command.model.set_tier.title":"Switch to {{tier}}","tui.toast.model_tier_switched":"Switched to {{tier}}","tui.command.model.cycle_recent.title":"Model cycle","tui.command.model.cycle_recent_reverse.title":"Model cycle reverse","tui.command.model.cycle_favorite.title":"Favorite cycle","tui.command.model.cycle_favorite_reverse.title":"Favorite cycle reverse","tui.command.agent.list.title":"Switch agent","tui.command.mcp.list.title":"Toggle MCPs","tui.command.never_ask.title_on":"Never-ask: ON (auto-decide, permissions excluded) \u2014 click to turn off","tui.command.never_ask.title_off":"Never-ask: OFF \u2014 click to turn on (auto-decide, permissions excluded)","tui.command.never_ask.toast_on":"Never-ask ON \u2014 I won't prompt you; I'll pick the best option myself until you turn it off (/never-ask). Permission requests still need your approval.","tui.command.never_ask.toast_off":"Never-ask OFF \u2014 I'll ask you at decision points again.","tui.command.agent.cycle.title":"Agent cycle","tui.command.variant.cycle.title":"Variant cycle","tui.command.variant.list.title":"Switch model variant","tui.command.agent.cycle.reverse.title":"Agent cycle reverse","tui.command.provider.login.title":"Login","tui.command.provider.logout.title":"Logout","tui.command.console.org.switch.title":"Switch org","tui.command.qitqode.status.title":"View status","tui.command.worktree.list.title":"Worktrees","tui.command.theme.switch.title":"Switch theme","tui.command.theme.switch_mode.to_light":"Switch to light mode","tui.command.theme.switch_mode.to_dark":"Switch to dark mode","tui.command.theme.mode.unlock":"Unlock theme mode","tui.command.theme.mode.lock":"Lock theme mode","tui.command.help.show.title":"Help","tui.dialog.help.close_hint":"esc/enter/space","tui.dialog.help.accessibility":"Accessibility: toggle animations and sound from the command list. Env vars: NO_COLOR, QITQODE_TUI_ACCESSIBLE, QITQODE_REDUCE_MOTION, QITQODE_TUI_SOUND.","tui.dialog.help.announcements":"Announcements: in accessible mode, choose how chatty screen-reader announcements are (quiet, normal, verbose) from the command list or with QITQODE_TUI_ANNOUNCEMENTS. Errors are always announced.","tui.dialog.help.dialog_keys":"Dialogs: every dialog works with the keyboard alone \u2014 Esc closes, Tab or arrow keys move focus, Enter or Space activates the focused control.","tui.command.app.announcements.cycle":"Announcements: {{level}} (select to change)","tui.announcements.level.quiet":"quiet","tui.announcements.level.normal":"normal","tui.announcements.level.verbose":"verbose","tui.app.terminal_too_small":"Terminal too small ({{width}}x{{height}}). Resize to at least 40x8.","tui.dialog.help.command_list":"Press {{keybind}} to see all available actions and commands in any context.","tui.dialog.help.ok":"ok","tui.dialog.close_hint":"esc","tui.dialog.document.scroll_hint":"\u2191/\u2193 scroll \xB7 PgUp/PgDn page \xB7 esc close","tui.dialog.ok":"ok","tui.dialog.confirm.cancel":"Cancel","tui.dialog.confirm.confirm":"Confirm","tui.dialog.agreement.title":"Terms & Privacy","tui.dialog.agreement.message":"Please review and agree to continue.","tui.dialog.agreement.confirm":"Agree & Continue","tui.command.docs.terms.title":"View Terms of Service","tui.command.docs.privacy.title":"View Privacy Policy","tui.command.consent.revoke.title":"Revoke free-model agreement","tui.consent.revoked":"Free-model agreement revoked \u2014 you'll be asked to agree again","tui.dialog.select.placeholder":"Search","tui.dialog.select.no_results":"No results found","tui.dialog.prompt.placeholder":"Enter text","tui.dialog.prompt.busy":"Working...","tui.dialog.prompt.processing":"processing...","tui.dialog.prompt.submit_key":"enter","tui.dialog.prompt.submit_action":"submit","tui.dialog.export.title":"Export Options","tui.dialog.export.filename":"Filename:","tui.dialog.export.filename_placeholder":"Enter filename","tui.dialog.export.include_thinking":"Include thinking","tui.dialog.export.include_tool_details":"Include tool details","tui.dialog.export.include_assistant_metadata":"Include assistant metadata","tui.dialog.export.open_without_saving":"Open without saving","tui.dialog.export.hint.toggle_prefix":"Press","tui.dialog.export.hint.toggle_action":"to toggle","tui.dialog.export.hint.confirm_action":"to confirm","tui.dialog.export.hint.options_action":"for options","tui.toast.copied_to_clipboard":"Copied to clipboard","tui.toast.instructions_loaded":"Loaded {{files}}","tui.toast.update_available.title":"Update Available","tui.toast.update_available.confirm":"A new release v{{version}} is available. Would you like to update now?","tui.toast.update_available.updating":"Updating to v{{version}}...","tui.toast.update_available.failed":"Update failed","tui.toast.update_available.success":"Successfully updated to QitQode v{{version}}. Please restart the application.","tui.toast.updated.title":"Auto-updated","tui.toast.updated.message":"Patch update applied: v{{version}}. Restart to use the new version. Disable via autoupdate: false in config.","tui.sidebar.instructions":"Instructions","tui.sidebar.cwd":"Working Directory","tui.toast.unknown_error":"An unknown error has occurred","tui.command.docs.open.title":"Open docs","tui.command.app.exit.title":"Exit the app","tui.command.app.debug.title":"Toggle debug panel","tui.command.app.console.title":"Toggle console","tui.command.app.heap_snapshot.title":"Write heap snapshot","tui.command.terminal.suspend.title":"Suspend terminal","tui.command.terminal.title.disable":"Disable terminal title","tui.command.terminal.title.enable":"Enable terminal title","tui.command.app.toggle.animations.disable":"Disable animations","tui.command.app.toggle.animations.enable":"Enable animations","tui.command.app.toggle.diffwrap.disable":"Disable diff wrapping","tui.command.app.toggle.diffwrap.enable":"Enable diff wrapping","tui.command.app.toggle.sound.disable":"Disable sound","tui.command.app.toggle.sound.enable":"Enable sound","tui.command.logout.toast":"Logged out","tui.command.session.share.title":"Share session","tui.command.session.share.copy_link":"Copy share link","tui.command.session.rename.title":"Rename session","tui.command.session.timeline.title":"Jump to message","tui.command.session.fork.title":"Fork session","tui.command.session.compact.title":"Compact session","tui.command.session.unshare.title":"Unshare session","tui.command.session.undo.title":"Undo previous message","tui.command.session.redo.title":"Redo","tui.command.session.sidebar.show":"Show sidebar","tui.command.session.sidebar.hide":"Hide sidebar","tui.command.session.conceal.disable":"Disable code concealment","tui.command.session.conceal.enable":"Enable code concealment","tui.command.session.timestamps.show":"Show timestamps","tui.command.session.timestamps.hide":"Hide timestamps","tui.command.session.thinking.expand":"Expand thinking","tui.command.session.thinking.collapse":"Collapse thinking","tui.command.session.tool_details.show":"Show tool details","tui.command.session.tool_details.hide":"Hide tool details","tui.command.session.scrollbar.toggle":"Toggle session scrollbar","tui.command.session.generic_tool_output.show":"Show generic tool output","tui.command.session.generic_tool_output.hide":"Hide generic tool output","tui.command.session.page_up.title":"Page up","tui.command.session.page_down.title":"Page down","tui.command.session.line_up.title":"Line up","tui.command.session.line_down.title":"Line down","tui.command.session.half_page_up.title":"Half page up","tui.command.session.half_page_down.title":"Half page down","tui.command.session.first.title":"First message","tui.command.session.last.title":"Last message","tui.command.session.last_user.title":"Jump to last user message","tui.command.session.message_next.title":"Next message","tui.command.session.message_previous.title":"Previous message","tui.command.messages.copy.title":"Copy last assistant message","tui.command.session.copy.title":"Copy session transcript","tui.command.session.export.title":"Export session transcript","tui.command.session.child_first.title":"Go to child session","tui.command.session.parent.title":"Go to parent session","tui.command.session.child_next.title":"Next child session","tui.command.session.child_previous.title":"Previous child session","tui.command.prompt.clear.title":"Clear prompt","tui.command.prompt.submit.title":"Submit prompt","tui.command.prompt.paste.title":"Paste","tui.command.session.interrupt.title":"Interrupt session","tui.command.prompt.editor.title":"Open editor","tui.command.prompt.skills.title":"Skills","tui.command.voice.toggle.title":"Toggle voice input","tui.command.voice.toggle.title_on":"Voice input: ON \u2014 click to turn off","tui.command.voice.toggle.title_off":"Voice input: OFF \u2014 click to turn on","tui.command.voice.send.title":"Toggle voice send command","tui.command.voice.send.title_on":"Voice send: ON \u2014 click to turn off","tui.command.voice.send.title_off":"Voice send: OFF \u2014 click to turn on","tui.voice.enabled":"Voice input on (Chinese/English) \u2014 click [Voice] to record","tui.voice.disabled":"Voice input disabled","tui.voice.send.enabled":'Voice send enabled \u2014 after a pause, clearly say "send it" to submit',"tui.voice.send.disabled":"Voice send disabled","tui.voice.control.enabled":"Voice control enabled \u2014 using multimodal model for intelligent editing (slower)","tui.voice.control.disabled":"Voice control disabled \u2014 using fast ASR transcription","tui.command.voice.control.title":"Toggle voice control (multimodal)","tui.command.voice.control.title_on":"Voice control: ON (multimodal) \u2014 click to turn off","tui.command.voice.control.title_off":"Voice control: OFF (fast ASR) \u2014 click to turn on","tui.voice.error.no_auth":"Use /connect to sign in to QitQode, or configure voice.asr_model for another provider","tui.voice.error.no_auth_provider":'Voice provider "{{provider}}" is not authenticated, check its apiKey',"tui.voice.error.provider_not_found":'Provider "{{provider}}" not available \u2014 /connect to authenticate, or declare models in config for custom endpoints',"tui.voice.error.no_url":'Provider "{{provider}}" has no baseURL configured \u2014 set options.baseURL in the provider config',"tui.voice.error.no_device":"No microphone/audio device found \u2014 please check your system audio settings","tui.voice.error.recorder_failed":"Recording failed","tui.voice.error.no_recorder":"No recording tool found, please install sox","tui.voice.error.too_short":"Recording too short","tui.voice.error.network":"Transcription failed, please check your network","tui.voice.error.empty_send":"Nothing to send","tui.voice.error.unknown_agent":'Agent "{{name}}" not found',"tui.command.prompt.stash.title":"Stash prompt","tui.command.prompt.stash.pop.title":"Stash pop","tui.command.prompt.stash.list.title":"Stash list","tui.command.tips.toggle.show":"Show tips","tui.command.tips.toggle.hide":"Hide tips","tui.command.plugins.list.title":"Plugins","tui.command.plugins.install.title":"Install plugin","tui.dialog.login.title":"QitQode Sign In","cli.providers.select":"Select provider","cli.providers.other":"Other provider","tui.dialog.login.forgewise":"Sign in with Forgewise","tui.dialog.login.import_claude":"Import from Claude Code","tui.dialog.login.other":"Other Provider","tui.dialog.login.import_claude.no_key":"Claude Code API Key not found","tui.dialog.login.import_claude.read_failed":"Failed to read ~/.claude/settings.json","tui.dialog.login.import_claude.success":"Imported from Claude Code","tui.question.plan_enter.question":"Would you like to switch to plan mode for structured planning?","tui.question.plan_enter.header":"Plan","tui.question.plan_enter.option.0.label":"Yes","tui.question.plan_enter.option.0.description":"Switch to plan agent for read-only planning","tui.question.plan_enter.option.1.label":"No","tui.question.plan_enter.option.1.description":"Stay in current mode","tui.question.plan_exit.question":"Plan at {{plan}} is complete. Would you like to switch to the build agent and start implementing?","tui.question.plan_exit.header":"Plan","tui.question.plan_exit.option.0.label":"Yes","tui.question.plan_exit.option.0.description":"Switch to build agent and start implementing the plan","tui.question.plan_exit.option.1.label":"No","tui.question.plan_exit.option.1.description":"Stay with plan agent to continue refining the plan","tui.session.badge.auto":"Auto","trust.title":"Accessing workspace:","trust.safety_check":"Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known open source project, or work from your team). If not, take a moment to review what's in this folder first.","trust.capabilities":"QitQode will be able to read, edit, and execute files here.","trust.plugin_warn":"If malicious plugins exist in this directory, they can execute arbitrary code, read, modify, or exfiltrate your files.","trust.option.yes":"Yes, I trust this folder","trust.option.no":"No, exit","trust.dangerous.title_home":"WARNING: You are about to open your HOME DIRECTORY.","trust.dangerous.title_root":"WARNING: You are about to open the FILESYSTEM ROOT.","trust.dangerous.body_home":"The model will have access to ALL your personal files \u2014 SSH keys, credentials, browser profiles, and everything else under your home folder.","trust.dangerous.body_root":"The model will have access to the ENTIRE filesystem \u2014 system files, all user data, credentials, and everything on this machine.","trust.dangerous.advice_home":"Unless you have a very specific reason, DO NOT trust your entire home directory.","trust.dangerous.advice_root":"Unless you have a very specific reason, DO NOT trust the filesystem root.","trust.dangerous.option.yes":"I understand the risks, trust for this session","trust.dangerous.option.no":"Exit (recommended)"};
3
- export{f as xd};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{il as a,jl as b,kl as c,ll as d,ml as e,nl as f,ol as g,pl as h,ql as i}from"./chunk-b5h8vd5n.js";import"./chunk-50aznc8e.js";import"./chunk-w8xaw2dv.js";import"./chunk-jfy6bfvv.js";import"./chunk-3nc9wy1m.js";import"./chunk-p20ft5mj.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-tk6gjy9d.js";import"./chunk-pkdk0ppc.js";import"./chunk-hrnx60em.js";import"./chunk-bbznk59q.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-fa03gsff.js";export{i as stopRefresh,h as startRefresh,g as refresh,d as readModelCatalogResponse,f as get,c as Provider,b as Model,a as MODEL_CATALOG_MAX_BYTES,e as Data};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{rd as a,sd as b}from"./chunk-hf0gny5t.js";import"./chunk-jfy6bfvv.js";import"./chunk-b5x3zghc.js";import"./chunk-t1f7jeat.js";import"./chunk-01gtn79f.js";import"./chunk-meaa7wrs.js";import"./chunk-fa03gsff.js";export{a as read,b as copy};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{zf as a}from"./chunk-qxrjbw22.js";import"./chunk-cn7nnjsf.js";import"./chunk-nfg7nt13.js";import"./chunk-awdpkgxf.js";import"./chunk-fa03gsff.js";export{a as default};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{pP as o}from"./chunk-fa03gsff.js";var i=(t)=>`standard-openapi: ${t}`,s=new Map,r=async(t)=>{let e=s.get(t);if(e)return e;let a;switch(t){case"valibot":a=(await import("./chunk-4xpfmpjf.js")).default();break;case"zod":a=(await import("./chunk-ssfgge5z.js")).default();break;default:a=(await import("./chunk-h9a4zzr4.js")).default()}return s.set(t,a),a},d=async(t,e={})=>{let a=await r(t["~standard"].vendor),{components:n={},options:c}=e;return{schema:await a(t,{components:n,options:c}),components:Object.keys(n).length>0?n:void 0}};
3
- export{i as Cg,d as Dg};
@@ -1,2 +0,0 @@
1
- // @bun
2
- import"./chunk-fa03gsff.js";var q="./tree-sitter-powershell-ryb2ffqs.wasm";export{q as default};